]> git.immae.eu Git - github/fretlink/purs-loader.git/commitdiff
Handling dependencies
authoreric thul <thul.eric@gmail.com>
Sat, 12 Mar 2016 19:33:55 +0000 (14:33 -0500)
committereric thul <thul.eric@gmail.com>
Sat, 12 Mar 2016 19:33:55 +0000 (14:33 -0500)
docs/PursLoader/LoaderRef.md
docs/PursLoader/Plugin.md
src/PursLoader/Loader.purs
src/PursLoader/LoaderRef.js
src/PursLoader/Plugin.js
src/PursLoader/Plugin.purs

index 60341f7e28fdbcbe5293e7ba55058a9b690efbe0..917db3abb21d721980c61a8866fa3bcb5c821981 100644 (file)
@@ -30,12 +30,6 @@ async :: forall eff. LoaderRef -> Eff (loader :: Loader | eff) (Maybe Error -> S
 cacheable :: forall eff. LoaderRef -> Eff (loader :: Loader | eff) Unit
 ```
 
-#### `query`
-
-``` purescript
-query :: LoaderRef -> String
-```
-
 #### `clearDependencies`
 
 ``` purescript
index 26e3f26f26ad5cd5bfcc8cb2321e4bd5b495aa9d..7a524da94a35cb48427d623cbb504b72f05af176 100644 (file)
@@ -1,15 +1,9 @@
 ## Module PursLoader.Plugin
 
-#### `Result`
-
-``` purescript
-type Result = { srcMap :: ImmutableMap String String, ffiMap :: ImmutableMap String String, graph :: DependencyGraph }
-```
-
 #### `Compile`
 
 ``` purescript
-type Compile eff = Nullable Error -> Result -> Eff eff Unit
+type Compile eff = Nullable Error -> DependencyGraph -> Eff eff Unit
 ```
 
 #### `Context`
@@ -24,24 +18,12 @@ type Context eff = { compile :: Compile eff -> Eff eff Unit, options :: Options
 type Options = { bundle :: Boolean, output :: String, bundleOutput :: String }
 ```
 
-#### `get`
-
-``` purescript
-get :: forall key value. ImmutableMap key value -> key -> Maybe value
-```
-
 #### `dependenciesOf`
 
 ``` purescript
 dependenciesOf :: DependencyGraph -> String -> Either Error (Array String)
 ```
 
-#### `ImmutableMap`
-
-``` purescript
-data ImmutableMap :: * -> * -> *
-```
-
 #### `DependencyGraph`
 
 ``` purescript
index 0dfa20ebe7fd8bbbd3d3c91d1cd7e9d78ead0fd2..402e805b2afb835b35485eca02f3e750410f8ccf 100644 (file)
@@ -6,7 +6,6 @@ module PursLoader.Loader
 
 import Prelude (Unit(), ($), (>>=), (<$>), (<*>), (++), (<<<), bind, const, id, pure, unit)
 
-import Control.Apply ((*>))
 import Control.Alt ((<|>))
 import Control.Bind (join)
 import Control.Monad.Eff (Eff(), foreachE)
@@ -27,7 +26,6 @@ import PursLoader.LoaderRef
   , Loader()
   , async
   , cacheable
-  , clearDependencies
   , addDependency
   , resourcePath
   )
@@ -52,9 +50,7 @@ loader ref source = do
   pluginContext = (unsafeCoerce ref).purescriptWebpackPluginContext
 
   compile :: AsyncCallback eff -> Plugin.Compile (Effects eff)
-  compile callback error' { srcMap, ffiMap, graph } = do
-    clearDependencies ref
-
+  compile callback error' graph = do
     either (const $ pure unit) (\a -> debug ("Adding PureScript dependency " ++ a)) name
 
     addDependency ref (resourcePath ref)
@@ -64,9 +60,8 @@ loader ref source = do
     where
     handle :: String -> Array String -> String -> Eff (Effects eff) Unit
     handle name' deps res = do
-      debug ("Adding PureScript transitive dependencies for " ++ name')
-      addTransitive name'
-      foreachE deps addTransitive
+      debug ("Adding PureScript dependencies for " ++ name')
+      foreachE deps (addDependency ref)
       debug "Generated loader result"
       debug res
       callback (toMaybe error') res
@@ -93,16 +88,7 @@ loader ref source = do
       resourceDir = dirname (resourcePath ref)
 
     dependencies :: Either Error (Array String)
-    dependencies =
-      if pluginContext.options.bundle
-         then name >>= Plugin.dependenciesOf graph
-         else pure []
-
-    addTransitive :: String -> Eff (Effects eff) Unit
-    addTransitive dep = addDep (Plugin.get srcMap dep) *> addDep (Plugin.get ffiMap dep)
-      where
-      addDep :: Maybe String -> Eff (Effects eff) Unit
-      addDep = maybe (pure unit) (addDependency ref)
+    dependencies = Plugin.dependenciesOf graph (resourcePath ref)
 
     name :: Either Error String
     name =
index e92c72c1289ad0f150bede2ecb7f74240968b764..a5d8e1fee8aa635b16061f55100189b3cbaab6e6 100644 (file)
@@ -43,8 +43,6 @@ exports.asyncFn = asyncFn;
 
 exports.cacheable = cacheable;
 
-exports.query = query;
-
 exports.clearDependencies = clearDependencies;
 
 exports.resourcePath = resourcePath;
index 90feb337038fb9e5e136e7cace588084e91f3ccf..ded6df551f556095ef32bc6ac751fe5f4a526ce8 100644 (file)
@@ -2,12 +2,6 @@
 
 // module PursLoader.Plugin
 
-function getFn(nothing, just, map, key) {
-  var value = map.get(key);
-  return value === undefined ? nothing : just(value);
-}
-exports.getFn = getFn;
-
 function dependenciesOfFn(left, right, graph, node) {
   try {
     var dependencies = graph.dependenciesOf(node);
index 520c78682293e643b1c83abaf83ce6444bc54a77..c798c836ceef7e4b7044c838c157331e2906b7de 100644 (file)
@@ -1,11 +1,8 @@
 module PursLoader.Plugin
-  ( Result()
-  , Compile()
+  ( Compile()
   , Context()
   , Options()
-  , ImmutableMap()
   , DependencyGraph()
-  , get
   , dependenciesOf
   ) where
 
@@ -16,34 +13,19 @@ import Control.Monad.Eff.Exception (Error())
 
 import Data.Either (Either(..))
 import Data.Function (Fn4(), runFn4)
-import Data.Maybe (Maybe(..))
 import Data.Nullable (Nullable())
 
-type Result = { srcMap :: ImmutableMap String String, ffiMap :: ImmutableMap String String, graph :: DependencyGraph }
-
-type Compile eff = Nullable Error -> Result -> Eff eff Unit
+type Compile eff = Nullable Error -> DependencyGraph -> Eff eff Unit
 
 type Context eff = { compile :: Compile eff -> Eff eff Unit, options :: Options }
 
 type Options = { bundle :: Boolean, output :: String, bundleOutput :: String }
 
-get :: forall key value. ImmutableMap key value -> key -> Maybe value
-get = runFn4 getFn Nothing Just
-
 dependenciesOf :: DependencyGraph -> String -> Either Error (Array String)
 dependenciesOf = runFn4 dependenciesOfFn Left Right
 
-foreign import data ImmutableMap :: * -> * -> *
-
 foreign import data DependencyGraph :: *
 
-foreign import getFn
-  :: forall key value. Fn4 (Maybe value)
-                           (value -> Maybe value)
-                           (ImmutableMap key value)
-                           key
-                           (Maybe value)
-
 foreign import dependenciesOfFn
   :: Fn4 (Error -> Either Error (Array String))
          (Array String -> Either Error (Array String))