UNPKG

jspm-devtools

Version:
112 lines (99 loc) 4.25 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); /** * Created by alexisvincent on 2016/09/04. */ var path = require('path'); // var spdy = require('spdy-push'); var pushDeps = function pushDeps(_ref) { var tools = _ref.tools; return function () { return function (req, res, next) { tools._thenBuild(tools.builder.trace(req.originalUrl.slice(1)).then(function (trace) { return Promise.all(Object.keys(trace).map(function (depName) { return tools.jspm.normalize(depName).then(function (normalized) { return tools.builder.compile(normalized).then(function (compiled) { console.log('successfully compiled <>', path.relative(tools.serverRoot, trace[depName].path)); var stream = res.push('/' + path.relative(tools.serverRoot, trace[depName].path), { status: 200, // optional method: 'GET', // optional request: { accept: 'application/x-es-module, */*' }, response: { 'content-type': 'application/javascript' } }); stream.on('error', function (e) { console.log(e); }); stream.end(compiled.source); return Promise.resolve(depName); }).catch(function (e) { console.error("Failed to compile ", depName, e); return false; }); }); })); }).then(function (compiled) { tools.builder.compile('app/app.js').then(function (compiled) { return res.end(compiled.source); }); })); }; }; }; var bundle = function bundle(_ref2) { var tools = _ref2.tools; return function () { var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var expression = _ref3.expression; return function (req, res, next) { var toBundle = expression || req.originalUrl.substring(1); console.log(':: Bundling ', toBundle); tools._thenBuild(tools.builder.bundle(toBundle, tools.builderConfig).then(function (m) { res.end(m.source); console.log(':: Finished Bundling ', toBundle); })); }; }; }; var compile = function compile(_ref4) { var tools = _ref4.tools; return function () { var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var file = _ref5.file; return function (req, res, next) { var toCompile = file || req.originalUrl.substring(1); console.log(':: Compiling ', toCompile); tools._thenBuild(tools.builder.compile(toCompile, tools.builderConfig).then(function (m) { res.end(m.source); console.log(':: Finished Compiling ', toCompile); })); }; }; }; var next = function next(_ref6) { var tools = _ref6.tools; return function () { return function (req, res, next) { return next(); }; }; }; var handler = exports.handler = function handler(tools) { return function (req, res, nextHandler) { var accept = req.get('accept'); var initiatedBySystemJS = accept && accept.indexOf('application/x-es-module') !== -1; // const file = path.join(tools.serverRoot, req.path, req.originalUrl) var resolvers = { bundle: bundle({ tools: tools }), compile: compile({ tools: tools }), next: next({ tools: tools }), pushDeps: pushDeps({ tools: tools }) }; tools.resolveHandler({ tools: tools, req: req, initiatedBySystemJS: initiatedBySystemJS, resolvers: resolvers })(req, res, nextHandler); }; };