]> git.immae.eu Git - github/fretlink/purs-loader.git/blobdiff - src/to-javascript.js
Don’t unnecessarily invalidate the module map (#124)
[github/fretlink/purs-loader.git] / src / to-javascript.js
index a7d64a22d8a5841dca03d3069381137eefa46af0..3663c8368b8ae0846757b91f22441e6b63f4bc07 100644 (file)
@@ -109,12 +109,21 @@ function makeJS(psModule, psModuleMap, js) {
     return Promise.resolve(result);
   }
   else {
-    debug('rebuilding module map due to additional imports for %s: %o', name, additionalImports);
-
-    psModule.cache.psModuleMap = null;
+    const missingImports = additionalImports.filter(moduleName =>
+        !psModuleMap[moduleName] && moduleName.split('.')[0] !== 'Prim'
+    );
 
-    return updatePsModuleMap(psModule).then(updatedPsModuleMap => {
-      const additionalImportsResult = additionalImports.map(import_ => {
+    let updatingPsModuleMap;
+    if (missingImports.length > 0) {
+        debug('rebuilding module map due to missing imports for %s: %o', name, missingImports);
+        psModule.cache.psModuleMap = null;
+        updatingPsModuleMap = updatePsModuleMap(psModule);
+    } else {
+        updatingPsModuleMap = Promise.resolve(psModuleMap);
+    }
+
+    return updatingPsModuleMap.then(updatedPsModuleMap => {
+      const missingImportsResult = missingImports.map(import_ => {
         const moduleValue = updatedPsModuleMap[import_];
 
         if (!moduleValue) {
@@ -129,7 +138,7 @@ function makeJS(psModule, psModuleMap, js) {
         }
       }).filter(a => a !== null).join('\n');
 
-      return result + '\n' + additionalImportsResult;
+      return result + '\n' + missingImportsResult;
     });
   }
 }