]> git.immae.eu Git - github/fretlink/purs-loader.git/commitdiff
Bumping version number to 2.0.0-rc.0
authoreric thul <thul.eric@gmail.com>
Tue, 31 May 2016 01:43:29 +0000 (21:43 -0400)
committereric thul <thul.eric@gmail.com>
Sat, 4 Jun 2016 04:14:03 +0000 (00:14 -0400)
Adds support for PureScript 0.9.1 and newer (purescript/purescript#2151)

The `next` tag on NPM points to this pre-release. Also note that
`peerDependencies` has been removed (npm/npm#8854).

Resolves #54

README.md
package.json
src/index.js

index 9e887dcab3b2f3c5fed0bb08d05a6e802289b1c0..ab4d9cd4eb420243ce4f6a3d4c4de6a62fcaeb72 100644 (file)
--- a/README.md
+++ b/README.md
@@ -12,6 +12,8 @@ Install with [npm](https://npmjs.org/package/purs-loader).
 
 ```
 npm install purs-loader --save-dev
+
+npm install purs-loader@next --save-dev
 ```
 
 ## Example
@@ -27,8 +29,7 @@ const webpackConfig = {
       exclude: /node_modules/,
       query: {
         psc: 'psa',
-        src: ['bower_components/purescript-*/src/**/*.purs', 'src/**/*.purs'],
-        ffi: ['bower_components/purescript-*/src/**/*.js', 'src/**/*.js'],
+        src: ['bower_components/purescript-*/src/**/*.purs', 'src/**/*.purs']
       }
     }
     // ...
@@ -59,11 +60,7 @@ Default options:
   src: [
     path.join('src', '**', '*.purs'),
     path.join('bower_components', 'purescript-*', 'src', '**', '*.purs')
-  ],
-  ffi: [
-    path.join('src', '**', '*.js'),
-    path.join('bower_components', 'purescript-*', 'src', '**', '*.js')
-  ],
+  ]
 }
 ```
 
index d06cf538ea4310aac0d5edae8ec6d9bf51d354eb..5fc5a7f4153985758888ed8fc944caf0809aa149 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "purs-loader",
-  "version": "1.0.0",
+  "version": "2.0.0-rc.0",
   "description": "A webpack loader for PureScript.",
   "main": "index.js",
   "files": [
     "url": "https://github.com/ethul/purs-loader/issues"
   },
   "homepage": "https://github.com/ethul/purs-loader#readme",
-  "peerDependencies": {
-    "webpack": ">=1.0.0 <3.0.0",
-    "purescript": ">=0.8.0"
-  },
   "dependencies": {
     "bluebird": "^3.3.5",
     "chalk": "^1.1.3",
index cd85c89a9a57d9364547b485e1e0e39b93fbb1b2..cfba1e2c923b3266bdc0379f5bc61d9be2ea9deb 100644 (file)
@@ -11,7 +11,6 @@ const path = require('path')
 const retryPromise = require('promise-retry')
 const jsStringEscape = require('js-string-escape')
 
-const ffiModuleRegex = /\/\/\s+module\s+([\w\.]+)/i
 const srcModuleRegex = /(?:^|\n)module\s+([\w\.]+)/i
 const requireRegex = /require\(['"]\.\.\/([\w\.]+)['"]\)/g
 
@@ -38,11 +37,7 @@ module.exports = function purescriptLoader(source, map) {
     src: [
       path.join('src', '**', '*.purs'),
       path.join('bower_components', 'purescript-*', 'src', '**', '*.purs')
-    ],
-    ffi: [
-      path.join('src', '**', '*.js'),
-      path.join('bower_components', 'purescript-*', 'src', '**', '*.js')
-    ],
+    ]
   }, webpackOptions, query)
 
   this.cacheable && this.cacheable()
@@ -173,7 +168,6 @@ function compile(psModule) {
 
   const args = dargs(Object.assign({
     _: options.src,
-    ffi: options.ffi,
     output: options.output,
   }, options.pscArgs))
 
@@ -374,26 +368,37 @@ function bundle(options, cache) {
 function psModuleMap(options, cache) {
   if (cache.psModuleMap) return Promise.resolve(cache.psModuleMap)
 
-  const globs = [].concat(options.src).concat(options.ffi)
+  const globs = [].concat(options.src);
+
+  function pursToJs(file){
+    const dirname = path.dirname(file)
+    const basename = path.basename(file, '.purs')
+    const fileJS = path.join(dirname, `${basename}.js`)
+    return fileJS
+  }
 
   return globby(globs).then(paths => {
     return Promise
       .props(paths.reduce((map, file) => {
+        const fileJS = pursToJs(file)
         map[file] = fs.readFileAsync(file, 'utf8')
+        map[fileJS] = fs.readFileAsync(fileJS, 'utf8').catch(() => undefined)
         return map
       }, {}))
       .then(fileMap => {
         cache.psModuleMap = Object.keys(fileMap).reduce((map, file) => {
-          const source = fileMap[file]
           const ext = path.extname(file)
           const isPurs = ext.match(/purs$/i)
-          const moduleRegex = isPurs ? srcModuleRegex : ffiModuleRegex
-          const moduleName = match(moduleRegex, source)
-          map[moduleName] = map[moduleName] || {}
           if (isPurs) {
+            const fileJs = pursToJs(file)
+            const source = fileMap[file]
+            const ffi = fileMap[fileJs]
+            const moduleName = match(srcModuleRegex, source)
+            map[moduleName] = map[moduleName] || {}
             map[moduleName].src = path.resolve(file)
-          } else {
-            map[moduleName].ffi = path.resolve(file)
+            if (ffi) {
+              map[moduleName].ffi = path.resolve(fileJs)
+            }
           }
           return map
         }, {})