TsBridge
- Package
- purescript-ts-bridge
- Repository
- thought2/purescript-ts-bridge
Re-exports from TsBridge.Cli
Re-exports from TsBridge.Core
#TsBridgeBy Source
class TsBridgeBy tok a where
A StandaloneTsType
represents a TypeScript type with everything it needs
to be placed inside complete TS program: If the type references nominal
types from other modules, all information is contained that is needed to
render those references.
Type Class that is used by the type generator to recursively traverse
types.
Instances for the specific types will be defined on the user's side with a
typeclass like this:
class TsBridge a where
tsBridge :: a -> StandaloneTsType
Then the internal type class is forwarded to the one of the user. For this you need to define a token data type and an instance like this:
data Tok = Tok
instance TsBridge a => TsBridgeBy Tok a where
tsBridgeBy _ = tsBridge
The token will then be passed to all generic functions of the library.
Members
tsBridgeBy :: tok -> Proxy a -> TsBridgeM TsType
#TsValues Source
class TsValues :: Type -> Row Type -> Constraint
class TsValues tok r where
Members
tsValues :: tok -> Record r -> TsBridgeM (Array TsDeclaration)
Instances
(TsValuesRL tok r rl, RowToList r rl) => TsValues tok r
#TsValuesRL Source
class TsValuesRL :: Type -> Row Type -> RowList Type -> Constraint
class TsValuesRL tok r rl where
Members
tsValuesRL :: tok -> Record r -> Proxy rl -> TsBridgeM (Array TsDeclaration)
Instances
TsValuesRL tok r Nil
(TsValuesRL tok r rl, TsBridgeBy tok a, Cons sym a rx r, IsSymbol sym) => TsValuesRL tok r (Cons sym a rl)
#tsValue Source
tsValue :: forall tok a. TsBridgeBy tok a => tok -> String -> a -> TsBridgeM (Array TsDeclaration)
Exports a single PureScript value to TypeScript. tsValues
may be better choice.
#tsTypeAlias Source
tsTypeAlias :: forall tok a. TsBridgeBy tok a => tok -> String -> Proxy a -> TsBridgeM (Array TsDeclaration)
For rare cases where you want to export a type alias. References to this type alias will be fully resolved in the generated code. So it is more practical to use a newtype instead, which can be references by name.
#tsOpaqueType Source
tsOpaqueType :: forall tok a. TsBridgeBy tok a => tok -> Proxy a -> TsBridgeM (Array TsDeclaration)
For rare cases where you want to manually export an opaque type. Once you export a value that contains a reference to this type, the type will be generated and exported automatically. Thus in most cases you don't need this.
#tsModuleFile Source
tsModuleFile :: String -> Array (TsBridgeM (Array TsDeclaration)) -> Either AppError (Array TsModuleFile)
Re-exports from TsBridge.DefaultImpls
#TsBridgeRecord Source
class TsBridgeRecord :: Type -> Row Type -> Constraint
class TsBridgeRecord tok r where
Members
tsBridgeRecord :: tok -> Proxy (Record r) -> TsBridgeM TsType
tsBridge
type class method implementation for the Record typeSee this reference for details.
Instances
(RowToList r rl, TsBridgeRecordRL tok rl) => TsBridgeRecord tok r
#TsBridgeRecordRL Source
class TsBridgeRecordRL :: Type -> RowList Type -> Constraint
class TsBridgeRecordRL tok rl where
Members
tsBridgeRecordRL :: tok -> Proxy rl -> TsBridgeM (Array TsRecordField)
Instances
TsBridgeRecordRL tok Nil
(TsBridgeBy tok t, TsBridgeRecordRL tok rl, IsSymbol s) => TsBridgeRecordRL tok (Cons s t rl)
#TsBridgeVariant Source
class TsBridgeVariant :: Type -> Row Type -> Constraint
class TsBridgeVariant tok r where
Members
tsBridgeVariant :: tok -> Proxy (Variant r) -> TsBridgeM TsType
tsBridge
type class method implementation for the Variant typeSee this reference for details.
Instances
(RowToList r rl, TsBridgeVariantRL tok rl) => TsBridgeVariant tok r
#TsBridgeVariantRL Source
class TsBridgeVariantRL :: Type -> RowList Type -> Constraint
class TsBridgeVariantRL tok rl where
Members
tsBridgeVariantRL :: tok -> Proxy rl -> TsBridgeM (Array TsType)
Instances
TsBridgeVariantRL tok Nil
(TsBridgeBy tok t, TsBridgeVariantRL tok rl, IsSymbol s) => TsBridgeVariantRL tok (Cons s t rl)
#tsBridgeUnit Source
tsBridgeUnit :: Proxy Unit -> TsBridgeM TsType
tsBridge
type class method implementation for the Unit
type
See this reference for details.
#tsBridgeTypeVar Source
tsBridgeTypeVar :: forall s. IsSymbol s => Proxy (TypeVar s) -> TsBridgeM TsType
tsBridge
type class method implementation for type variables.
This is needed because polymorphic values cannot be exported directly.
They have to be monomorphized: E.g. something of type Maybe a
needs to be
typed Maybe (Var "A")
to be exported.
#tsBridgeTuple Source
tsBridgeTuple :: forall tok a b. TsBridgeBy tok a => TsBridgeBy tok b => tok -> Proxy (Tuple a b) -> TsBridgeM TsType
tsBridge type class method implementation for the Tuple
type
See this reference for details.
#tsBridgeString Source
tsBridgeString :: Proxy String -> TsBridgeM TsType
tsBridge
type class method implementation for the String
type
See this reference for details.
#tsBridgePromise Source
tsBridgePromise :: forall tok a. TsBridgeBy tok a => tok -> Proxy (Promise a) -> TsBridgeM TsType
tsBridge
type class method implementation for the Promise
type.
See this reference for details.
#tsBridgeOneOf Source
tsBridgeOneOf :: forall a b tok. TsBridgeBy tok a => TsBridgeBy tok b => tok -> Proxy (OneOf a b) -> TsBridgeM TsType
tsBridge
type class method implementation for the OneOf
type.
See this reference for details.
#tsBridgeNumber Source
tsBridgeNumber :: Proxy Number -> TsBridgeM TsType
tsBridge
type class method implementation for the Number
type.
See this reference for details.
#tsBridgeNullable Source
tsBridgeNullable :: forall a tok. TsBridgeBy tok a => tok -> Proxy (Nullable a) -> TsBridgeM TsType
tsBridge
type class method implementation for the Nullable
type.
See this reference for details.
#tsBridgeMaybe Source
tsBridgeMaybe :: forall tok a. TsBridgeBy tok a => tok -> Proxy (Maybe a) -> TsBridgeM TsType
tsBridge
type class method implementation for the Maybe
type
See this reference for details.
#tsBridgeInt Source
tsBridgeInt :: Proxy Int -> TsBridgeM TsType
tsBridge
type class method implementation for the Int
type
See this reference for details.
#tsBridgeFunction Source
tsBridgeFunction :: forall tok a b. TsBridgeBy tok a => TsBridgeBy tok b => tok -> Proxy (a -> b) -> TsBridgeM TsType
tsBridge
type class method implementation for the a -> b
(Function) type
See this reference for details.
#tsBridgeEither Source
tsBridgeEither :: forall tok a b. TsBridgeBy tok a => TsBridgeBy tok b => tok -> Proxy (Either a b) -> TsBridgeM TsType
tsBridge
type class method implementation for the Either
type
See this reference for details.
#tsBridgeEffect Source
tsBridgeEffect :: forall tok a. TsBridgeBy tok a => tok -> Proxy (Effect a) -> TsBridgeM TsType
tsBridge
type class method implementation for the Effect
type
See this reference for details.
#tsBridgeChar Source
tsBridgeChar :: Proxy Char -> TsBridgeM TsType
tsBridge
type class method implementation for the Char
type
See this reference for details.
#tsBridgeBoolean Source
tsBridgeBoolean :: Proxy Boolean -> TsBridgeM TsType
tsBridge
type class method implementation for the Boolean
type
See this reference for details.
#tsBridgeArray Source
tsBridgeArray :: forall a tok. TsBridgeBy tok a => tok -> Proxy (Array a) -> TsBridgeM TsType
tsBridge
type class method implementation for the Array
type
See this reference for details.
Re-exports from TsBridge.Monad
#TsBridgeAccum Source
newtype TsBridgeAccum
Constructors
TsBridgeAccum { scope :: Scope, typeDefs :: Array TsModuleFile }
Instances
#runTsBridgeM Source
runTsBridgeM :: forall a. TsBridgeM a -> Either AppError (a /\ TsBridgeAccum)
Re-exports from TsBridge.Types
#PursModuleName Source
newtype PursModuleName
#CapError Source
class CapError :: (Type -> Type) -> Constraint
class (MonadError AppError m) <= CapError m
#CapThrow Source
class CapThrow :: (Type -> Type) -> Constraint
class (MonadThrow AppError m) <= CapThrow m
#unsafeName Source
unsafeName :: String -> Name
#printError Source
printError :: AppError -> Doc
#mkPursModuleName Source
mkPursModuleName :: forall m. MonadError AppError m => String -> m PursModuleName
#mapErr Source
mapErr :: forall e m a. MonadError e m => (e -> e) -> m a -> m a
Useful for declaring multiple PureScript values to be used by TypeScript. Through record punning the risk of exporting them with wrong names can be eliminated.
tsValues Tok { foo, bar, baz }