From 1c12889c0adf91cf3116a9d5ff44b7466b1dfcc9 Mon Sep 17 00:00:00 2001 From: eric thul Date: Sat, 22 Apr 2017 10:52:54 -0400 Subject: Support for PureScript 0.11 Resolves #89 --- src/index.js | 48 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 13 deletions(-) (limited to 'src/index.js') diff --git a/src/index.js b/src/index.js index 047927c..799f8f9 100644 --- a/src/index.js +++ b/src/index.js @@ -1,15 +1,27 @@ 'use strict' const debug = require('debug')('purs-loader') + const loaderUtils = require('loader-utils') + const Promise = require('bluebird') + const path = require('path') -const PsModuleMap = require('./PsModuleMap'); -const Psc = require('./Psc'); -const PscIde = require('./PscIde'); + +const PsModuleMap = require('./purs-module-map'); + +const compile = require('./compile'); + +const bundle = require('./bundle'); + +const ide = require('./ide'); + const toJavaScript = require('./to-javascript'); + const dargs = require('./dargs'); + const spawn = require('cross-spawn').sync + const eol = require('os').EOL module.exports = function purescriptLoader(source, map) { @@ -34,9 +46,9 @@ module.exports = function purescriptLoader(source, map) { const defaultDeps = depsPaths(options.pscPackage) const defaultOptions = { context: config.context, - psc: 'psc', + psc: null, pscArgs: {}, - pscBundle: 'psc-bundle', + pscBundle: null, pscBundleArgs: {}, pscIde: false, pscIdeColors: options.psc === 'psa', @@ -102,7 +114,7 @@ module.exports = function purescriptLoader(source, map) { }); } - const psModuleName = PsModuleMap.match(source) + const psModuleName = PsModuleMap.matchModule(source) const psModule = { name: psModuleName, load: js => callback(null, js), @@ -131,8 +143,8 @@ module.exports = function purescriptLoader(source, map) { } if (cache.rebuild) { - return PscIde.connect(psModule) - .then(PscIde.rebuild) + return ide.connect(psModule) + .then(ide.rebuild) .then(toJavaScript) .then(psModule.load) .catch(psModule.reject) @@ -147,11 +159,21 @@ module.exports = function purescriptLoader(source, map) { cache.deferred.push(psModule) if (!cache.compilationStarted) { - return Psc.compile(psModule) - .then(() => PsModuleMap.makeMap(options.src).then(map => { - debug('rebuilt module map after compile'); - cache.psModuleMap = map; - })) + cache.compilationStarted = true; + + return compile(psModule) + .then(() => { + cache.compilationFinished = true; + + const bundlePromise = options.bundle ? bundle(options, cache) : Promise.resolve(); + + return bundlePromise.then(() => + PsModuleMap.makeMap(options.src).then(map => { + debug('rebuilt module map after compile'); + cache.psModuleMap = map; + }) + ); + }) .then(() => Promise.map(cache.deferred, psModule => { if (typeof cache.ideServer === 'object') cache.ideServer.kill() return toJavaScript(psModule).then(psModule.load) -- cgit v1.2.3