1 module PursLoader.LoaderRef
12 import Control.Monad.Eff (Eff())
13 import Control.Monad.Eff.Exception (Error())
15 import Data.Foreign (Foreign())
16 import Data.Function (Fn3(), runFn3)
17 import Data.Maybe (Maybe(), fromMaybe, isJust)
21 foreign import data Loader :: !
23 foreign import asyncFn """
24 function asyncFn(isJust, fromMaybe, ref){
26 var callback = ref.async();
27 return function(error){
28 return function(value){
30 return isJust(error) ? callback(fromMaybe(new Error())(error))
31 : callback(null, value);
36 }""" :: forall eff a. Fn3 (Maybe Error -> Boolean)
37 (Error -> Maybe Error -> Error)
39 (Eff (loader :: Loader | eff) (Maybe Error -> a -> Eff (loader :: Loader | eff) Unit))
41 async :: forall eff a. LoaderRef -> Eff (loader :: Loader | eff) (Maybe Error -> a -> Eff (loader :: Loader | eff) Unit)
42 async ref = runFn3 asyncFn isJust fromMaybe ref
44 foreign import cacheable """
45 function cacheable(ref){
47 return ref.cacheable && ref.cacheable();
49 }""" :: forall eff. LoaderRef -> Eff (loader :: Loader | eff) Unit
51 foreign import clearDependencies """
52 function clearDependencies(ref){
54 return ref.clearDependencies();
56 }""" :: forall eff. LoaderRef -> Eff (loader :: Loader | eff) Unit
58 foreign import resourcePath """
59 function resourcePath(ref){
60 return ref.resourcePath;
61 }""" :: LoaderRef -> String
63 foreign import addDependency """
64 function addDependency(ref){
67 return ref.addDependency(dep);
70 }""" :: forall eff. LoaderRef -> String -> Eff (loader :: Loader | eff) Unit
72 foreign import query """
75 }""" :: LoaderRef -> String