]> git.immae.eu Git - github/fretlink/purs-loader.git/blobdiff - src/to-javascript.js
Rebuild module map for new files
[github/fretlink/purs-loader.git] / src / to-javascript.js
index 3cc969871d7167c5129e9b25d2c71315c22a6934..28dde7a0dbd4bd30f2d8fd975dda6db9bdb7fb58 100644 (file)
@@ -59,7 +59,7 @@ function makeBundleJS(psModule) {
 
   const result = `module.exports = require("${escaped}")["${name}"]`;
 
-  return result;
+  return Promise.resolve(result);
 }
 
 // Replace require paths to output files generated by psc with paths
@@ -105,28 +105,33 @@ function makeJS(psModule, psModuleMap, js) {
 
   const additionalImports = difference(imports, replacedImports);
 
-  if (additionalImports.length) {
-    debugVerbose('additional imports for %s: %o', name, additionalImports);
+  if (!additionalImports.length) {
+    return Promise.resolve(result);
   }
+  else {
+    debug('rebuilding module map due to additional imports for %s: %o', name, additionalImports);
 
-  const additionalImportsResult = additionalImports.map(import_ => {
-    const moduleValue = psModuleMap[import_];
+    psModule.cache.psModuleMap = null;
 
-    if (!moduleValue) {
-      debug('module %s was not found in the map, skipping require', import_);
+    return updatePsModuleMap(psModule).then(updatedPsModuleMap => {
+      const additionalImportsResult = additionalImports.map(import_ => {
+        const moduleValue = updatedPsModuleMap[import_];
 
-      return null;
-    }
-    else {
-      const escapedPath = jsStringEscape(moduleValue.src);
+        if (!moduleValue) {
+          debug('module %s was not found in the map, skipping require', import_);
 
-      return `var ${import_.replace(/\./g, '_')} = require("${escapedPath}")`;
-    }
-  }).filter(a => a !== null).join('\n');
+          return null;
+        }
+        else {
+          const escapedPath = jsStringEscape(moduleValue.src);
 
-  const result_ = result + (additionalImports.length ? '\n' + additionalImportsResult : '');
+          return `var ${import_.replace(/\./g, '_')} = require("${escapedPath}")`;
+        }
+      }).filter(a => a !== null).join('\n');
 
-  return result_;
+      return result + '\n' + additionalImportsResult;
+    });
+  }
 }
 
 module.exports = function toJavaScript(psModule) {