]> git.immae.eu Git - github/fretlink/purs-loader.git/commitdiff
Handle missing module and adding debugging
authoreric thul <thul.eric@gmail.com>
Sat, 25 Feb 2017 14:55:18 +0000 (09:55 -0500)
committereric thul <thul.eric@gmail.com>
Sat, 25 Feb 2017 14:55:18 +0000 (09:55 -0500)
src/PscIde.js
src/index.js
src/to-javascript.js

index 8a0e823c91ff22b74a81edf95cc2d959cd7f08de..b164dc2d78e55a3285c0360aac4e5a89bffe0b32 100644 (file)
@@ -63,15 +63,28 @@ function connect(psModule) {
 
   const serverArgs = dargs(Object.assign({
     outputDirectory: options.output,
-    "_": options.src
+    '_': options.src
   }, options.pscIdeServerArgs))
 
   debug('attempting to start psc-ide-server', serverArgs)
 
   const ideServer = cache.ideServer = spawn('psc-ide-server', serverArgs)
+
+  ideServer.stdout.on('data', data => {
+    debug('psc-ide-server stdout: %s', data.toString());
+  });
+
   ideServer.stderr.on('data', data => {
-    debug(data.toString())
-  })
+    debug('psc-ide-server stderr: %s', data.toString());
+  });
+
+  ideServer.on('error', error => {
+    debug('psc-ide-server error: %o', error);
+  });
+
+  ideServer.on('close', (code, signal) => {
+    debug('psc-ide-server close: %s %s', code, signal);
+  });
 
   return retryPromise((retry, number) => {
     return connect_().catch(error => {
@@ -150,7 +163,7 @@ function rebuild(psModule) {
             debug('unknown module, attempting full recompile')
             return Psc.compile(psModule)
               .then(() => PsModuleMap.makeMap(options.src).then(map => {
-                debug('rebuilt module map');
+                debug('rebuilt module map after unknown module forced a recompile');
                 cache.psModuleMap = map;
               }))
               .then(() => request({ command: 'load' }))
@@ -172,6 +185,8 @@ function rebuild(psModule) {
       })
     })
 
+    debug('psc-ide-client stdin: %o', body);
+
     ideClient.stdin.write(JSON.stringify(body))
     ideClient.stdin.write('\n')
   })
index f4a6dff29ba15171fb08eae6219739518f98fda4..6fb2fcef765a9cbe2fadec03148f14c51c5dd8d5 100644 (file)
@@ -149,7 +149,7 @@ module.exports = function purescriptLoader(source, map) {
   if (!cache.compilationStarted) {
     return Psc.compile(psModule)
        .then(() => PsModuleMap.makeMap(options.src).then(map => {
-         debug('rebuilt module map');
+         debug('rebuilt module map after compile');
          cache.psModuleMap = map;
        }))
       .then(() => Promise.map(cache.deferred, psModule => {
index 237ef1e5eea9992133bc249b4a5b2d5792f41da1..0acf180f9e1a260f53c12e5324840b70ac4f6c06 100644 (file)
@@ -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,13 +96,11 @@ 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);