]> git.immae.eu Git - github/fretlink/purs-loader.git/blobdiff - src/to-javascript.js
Version 2.4.2
[github/fretlink/purs-loader.git] / src / to-javascript.js
index b0b9ddab409d03036213150e9daea599a6ef4e02..b402ad4ee87e4b6ad1ad3102b9d2750c9695a399 100644 (file)
@@ -42,7 +42,7 @@ function updatePsModuleMap(psModule) {
 
  // Reference the bundle.
 function makeBundleJS(psModule) {
-  const bundleOutput = psMoudle.options.bundleOutput;
+  const bundleOutput = psModule.options.bundleOutput;
 
   const name = psModule.name;
 
@@ -74,11 +74,20 @@ function makeJS(psModule, psModuleMap, js) {
 
   const result = js
     .replace(requireRE, (m, p1) => {
-      const escapedPath = jsStringEscape(psModuleMap[p1].src);
+      const moduleValue = psModuleMap[p1];
 
-      replacedImports.push(p1);
+      if (!moduleValue) {
+        debug('module %s was not found in the map, replacing require with null', p1);
 
-      return `require("${escapedPath}")`;
+        return 'null';
+      }
+      else {
+        const escapedPath = jsStringEscape(moduleValue.src);
+
+        replacedImports.push(p1);
+
+        return `require("${escapedPath}")`;
+      }
     })
     .replace(foreignRE, () => {
       const escapedPath = jsStringEscape(psModuleMap[name].ffi);
@@ -87,19 +96,26 @@ function makeJS(psModule, psModuleMap, js) {
     })
   ;
 
-  debug('imports %o', imports);
-
-  debug('replaced imports %o', replacedImports);
-
   const additionalImports = difference(imports, replacedImports);
 
-  debug('additional imports for %s: %o', name, additionalImports);
+  if (additionalImports.length) {
+    debug('additional imports for %s: %o', name, additionalImports);
+  }
 
   const additionalImportsResult = additionalImports.map(import_ => {
-    const escapedPath = jsStringEscape(psModuleMap[import_].src);
+    const moduleValue = psModuleMap[import_];
+
+    if (!moduleValue) {
+      debug('module %s was not found in the map, skipping require', import_);
+
+      return null;
+    }
+    else {
+      const escapedPath = jsStringEscape(moduleValue.src);
 
-    return `var ${import_.replace(/\./g, '_')} = require("${escapedPath}")`;
-  }).join('\n');
+      return `var ${import_.replace(/\./g, '_')} = require("${escapedPath}")`;
+    }
+  }).filter(a => a !== null).join('\n');
 
   const result_ = result + (additionalImports.length ? '\n' + additionalImportsResult : '');