]> git.immae.eu Git - github/fretlink/purs-loader.git/blob - src/PursLoader/Plugin.purs
Bumping version number to 0.6.0-beta.3
[github/fretlink/purs-loader.git] / src / PursLoader / Plugin.purs
1 module PursLoader.Plugin
2 ( Result()
3 , Compile()
4 , Context()
5 , ImmutableMap()
6 , DependencyGraph()
7 , get
8 , dependenciesOf
9 ) where
10
11 import Prelude (Unit())
12
13 import Control.Monad.Eff (Eff())
14 import Control.Monad.Eff.Exception (Error())
15
16 import Data.Either (Either(..))
17 import Data.Function (Fn4(), runFn4)
18 import Data.Maybe (Maybe(..))
19 import Data.Nullable (Nullable())
20
21 type Result = { srcMap :: ImmutableMap String String, ffiMap :: ImmutableMap String String, graph :: DependencyGraph }
22
23 type Compile eff = Nullable Error -> Result -> Eff eff Unit
24
25 type Context eff = { compile :: Compile eff -> Eff eff Unit }
26
27 get :: forall key value. ImmutableMap key value -> key -> Maybe value
28 get = runFn4 getFn Nothing Just
29
30 dependenciesOf :: DependencyGraph -> String -> Either Error (Array String)
31 dependenciesOf = runFn4 dependenciesOfFn Left Right
32
33 foreign import data ImmutableMap :: * -> * -> *
34
35 foreign import data DependencyGraph :: *
36
37 foreign import getFn
38 :: forall key value. Fn4 (Maybe value)
39 (value -> Maybe value)
40 (ImmutableMap key value)
41 key
42 (Maybe value)
43
44 foreign import dependenciesOfFn
45 :: Fn4 (Error -> Either Error (Array String))
46 (Array String -> Either Error (Array String))
47 DependencyGraph
48 String
49 (Either Error (Array String))