jspm-devtools
Version:
Make development great again!
112 lines (99 loc) • 4.25 kB
JavaScript
;
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);
};
};