diff options
-rw-r--r-- | src/index.js | 13 | ||||
-rw-r--r-- | src/utils.js | 4 |
2 files changed, 17 insertions, 0 deletions
diff --git a/src/index.js b/src/index.js index 28246e3..be809c6 100644 --- a/src/index.js +++ b/src/index.js | |||
@@ -202,6 +202,19 @@ module.exports = function purescriptLoader(source, map) { | |||
202 | const baseModulePath = path.join(this.rootContext, filename); | 202 | const baseModulePath = path.join(this.rootContext, filename); |
203 | this.addDependency(baseModulePath); | 203 | this.addDependency(baseModulePath); |
204 | 204 | ||
205 | const foreignModulesErrorCodes = [ | ||
206 | 'ErrorParsingFFIModule', | ||
207 | 'MissingFFIImplementations', | ||
208 | 'UnusedFFIImplementations', | ||
209 | 'MissingFFIModule' | ||
210 | ]; | ||
211 | for (const code of foreignModulesErrorCodes) { | ||
212 | if (error.includes(code)) { | ||
213 | const resolved = utils.resolveForeignModule(baseModulePath); | ||
214 | this.addDependency(resolved); | ||
215 | } | ||
216 | } | ||
217 | |||
205 | const matchErrModuleName = /in module ((?:\w+\.)*\w+)/; | 218 | const matchErrModuleName = /in module ((?:\w+\.)*\w+)/; |
206 | const [, baseModuleName] = matchErrModuleName.exec(error) || []; | 219 | const [, baseModuleName] = matchErrModuleName.exec(error) || []; |
207 | if (!baseModuleName) continue; | 220 | if (!baseModuleName) continue; |
diff --git a/src/utils.js b/src/utils.js index b6ccf81..829ba72 100644 --- a/src/utils.js +++ b/src/utils.js | |||
@@ -33,3 +33,7 @@ exports.resolvePursModule = ({ baseModulePath, baseModuleName, targetModuleName | |||
33 | `${path.join(...parts)}.purs`) | 33 | `${path.join(...parts)}.purs`) |
34 | : baseModulePath; | 34 | : baseModulePath; |
35 | }; | 35 | }; |
36 | |||
37 | exports.resolveForeignModule = pursModulePath => | ||
38 | path.join(path.dirname(pursModulePath), | ||
39 | path.basename(pursModulePath, path.extname(pursModulePath)) + '.js'); | ||