]>
Commit | Line | Data |
---|---|---|
1 | module PursLoader.LoaderRef | |
2 | ( LoaderRef() | |
3 | , Loader() | |
4 | , AsyncCallback() | |
5 | , async | |
6 | , cacheable | |
7 | , query | |
8 | , clearDependencies | |
9 | , addDependency | |
10 | , resourcePath | |
11 | ) where | |
12 | ||
13 | import Prelude (Unit()) | |
14 | ||
15 | import Control.Monad.Eff (Eff()) | |
16 | import Control.Monad.Eff.Exception (Error()) | |
17 | ||
18 | import Data.Function (Fn3(), runFn3) | |
19 | import Data.Maybe (Maybe(), fromMaybe, isJust) | |
20 | ||
21 | type AsyncCallback eff = Maybe Error -> String -> Eff (loader :: Loader | eff) Unit | |
22 | ||
23 | data LoaderRef | |
24 | ||
25 | foreign import data Loader :: ! | |
26 | ||
27 | foreign import asyncFn :: forall eff. Fn3 (Maybe Error -> Boolean) | |
28 | (Error -> Maybe Error -> Error) | |
29 | LoaderRef | |
30 | (Eff (loader :: Loader | eff) (AsyncCallback eff)) | |
31 | ||
32 | async :: forall eff. LoaderRef -> Eff (loader :: Loader | eff) (Maybe Error -> String -> Eff (loader :: Loader | eff) Unit) | |
33 | async ref = runFn3 asyncFn isJust fromMaybe ref | |
34 | ||
35 | foreign import cacheable :: forall eff. LoaderRef -> Eff (loader :: Loader | eff) Unit | |
36 | ||
37 | foreign import query :: LoaderRef -> String | |
38 | ||
39 | foreign import clearDependencies :: forall eff. LoaderRef -> Eff (loader :: Loader | eff) Unit | |
40 | ||
41 | foreign import resourcePath :: LoaderRef -> String | |
42 | ||
43 | foreign import addDependency :: forall eff. LoaderRef -> String -> Eff (loader :: Loader | eff) Unit |