]> git.immae.eu Git - github/fretlink/purs-loader.git/blobdiff - src/PsModuleMap.js
Version 2.4.2
[github/fretlink/purs-loader.git] / src / PsModuleMap.js
index 2193f022de7bcbef8a10ee686874a67bd4610098..0ae687c0fc6b59dabd72a2e0940cbe58bf81c155 100644 (file)
@@ -8,15 +8,23 @@ const fs = Promise.promisifyAll(require('fs'));
 
 const globby = require('globby');
 
-const debug = require('debug')('purs-loader')
+const debug = require('debug')('purs-loader');
 
-const srcModuleRegex = /(?:^|\n)module\s+([\w\.]+)/i
+const srcModuleRegex = /(?:^|\n)module\s+([\w\.]+)/i;
 
-function match(str) {
+const importModuleRegex = /(?:^|\n)\s*import\s+([\w\.]+)/ig;
+
+function matchModule(str) {
   const matches = str.match(srcModuleRegex);
   return matches && matches[1];
 }
-module.exports.match = match;
+module.exports.match = matchModule;
+
+function matchImports(str) {
+  const matches = str.match(importModuleRegex);
+  return (matches || []).map(a => a.replace(/\n?\s*import\s+/i, ''));
+}
+module.exports.matchImports = matchImports;
 
 function makeMapEntry(filePurs) {
   const dirname = path.dirname(filePurs);
@@ -33,7 +41,9 @@ function makeMapEntry(filePurs) {
 
     const sourceJs = fileMap.fileJs;
 
-    const moduleName = match(sourcePurs);
+    const moduleName = matchModule(sourcePurs);
+
+    const imports = matchImports(sourcePurs);
 
     const map = {};
 
@@ -41,6 +51,8 @@ function makeMapEntry(filePurs) {
 
     map[moduleName].src = path.resolve(filePurs);
 
+    map[moduleName].imports = imports;
+
     if (sourceJs) {
       map[moduleName].ffi = path.resolve(fileJs);
     }