1 module PursLoader.Plugin
11 import Prelude (Unit())
13 import Control.Monad.Eff (Eff())
14 import Control.Monad.Eff.Exception (Error())
16 import Data.Either (Either(..))
17 import Data.Function (Fn4(), runFn4)
18 import Data.Maybe (Maybe(..))
19 import Data.Nullable (Nullable())
21 type Result = { srcMap :: ImmutableMap String String, ffiMap :: ImmutableMap String String, graph :: DependencyGraph }
23 type Compile eff = Nullable Error -> Result -> Eff eff Unit
25 type Context eff = { compile :: Compile eff -> Eff eff Unit }
27 get :: forall key value. ImmutableMap key value -> key -> Maybe value
28 get = runFn4 getFn Nothing Just
30 dependenciesOf :: DependencyGraph -> String -> Either Error (Array String)
31 dependenciesOf = runFn4 dependenciesOfFn Left Right
33 foreign import data ImmutableMap :: * -> * -> *
35 foreign import data DependencyGraph :: *
38 :: forall key value. Fn4 (Maybe value)
39 (value -> Maybe value)
40 (ImmutableMap key value)
44 foreign import dependenciesOfFn
45 :: Fn4 (Error -> Either Error (Array String))
46 (Array String -> Either Error (Array String))
49 (Either Error (Array String))