]> git.immae.eu Git - github/fretlink/purs-loader.git/blobdiff - src/index.js
Merge pull request #4 from cyrilfretlink/4.2.0
[github/fretlink/purs-loader.git] / src / index.js
index 28246e39d949d0eeb5b9d2e6a6aca3fd7a4bd7a2..d713737337e985078fab9fef30512ca13e594be9 100644 (file)
@@ -126,7 +126,8 @@ module.exports = function purescriptLoader(source, map) {
     warnings: true,
     watch: false,
     output: 'output',
-    src: []
+    src: [],
+    rewriteRules: {}
   }, loaderOptions, {
     src: srcOption
   });
@@ -202,6 +203,19 @@ module.exports = function purescriptLoader(source, map) {
           const baseModulePath = path.join(this.rootContext, filename);
           this.addDependency(baseModulePath);
 
+          const foreignModulesErrorCodes = [
+            'ErrorParsingFFIModule',
+            'MissingFFIImplementations',
+            'UnusedFFIImplementations',
+            'MissingFFIModule'
+          ];
+          for (const code of foreignModulesErrorCodes) {
+            if (error.includes(code)) {
+              const resolved = utils.resolveForeignModule(baseModulePath);
+              this.addDependency(resolved);
+            }
+          }
+
           const matchErrModuleName = /in module ((?:\w+\.)*\w+)/;
           const [, baseModuleName] = matchErrModuleName.exec(error) || [];
           if (!baseModuleName) continue;
@@ -214,6 +228,7 @@ module.exports = function purescriptLoader(source, map) {
               const resolved = utils.resolvePursModule({
                 baseModulePath,
                 baseModuleName,
+                rewriteRules: options.rewriteRules,
                 targetModuleName
               });
               this.addDependency(resolved);