ng-router-loader
Version:
Webpack loader for `NgModule` lazy loading using the angular router
49 lines • 2.36 kB
JavaScript
var recast = require("recast");
var n = recast.types.namedTypes;
var b = recast.types.builders;
function getRequireString(file, module) {
return 'require(\'' + file + '\')[\'' + module + '\']';
}
exports.syncCodeGen = function (file, module) { return "function syncCodeGen() { return " + getRequireString(file, module) + "; }"; };
exports.ensureCodeGen = function (file, module, loaderOptions, resourceOptions) {
var requireString = getRequireString(file, module);
var webpackChunkName = resourceOptions.chunkName ? ", '" + resourceOptions.chunkName + "'" : '';
var result = [
"function ensureCodeGen() { return new Promise(function (resolve) {",
" require.ensure([], function (require) {",
" resolve(" + requireString + ");",
" }" + webpackChunkName + ");",
"})}"
];
return result.join('');
};
exports.systemCodeGen = function (file, module, opts) {
exports.systemCodeGen['deprecated']();
var result = [
"function systemCodeGen() { return System.import('" + file + "')",
".then( function(module) { return module['" + module + "']; } ); }"
];
return result.join('');
};
exports.systemCodeGen['deprecated'] = function () {
console.warn('\nDEPRECATED: ng-router-loader "async-system" loader use the System.import construct which is deprecated in webpack 2 and will be removed in webpack 3, please use the "async-import" instead. (https://github.com/webpack/webpack/releases/tag/v2.1.0-beta.28)\n');
exports.systemCodeGen['deprecated'] = function () { };
};
exports.importCodeGen = function (file, module, opts) {
var result = [
"function importCodeGen() { return import_('" + file + "')",
" .then( function(module) { return module['" + module + "']; } ); }"
];
var fnDec = recast.parse(result.join(''), { ecmaVersion: 5, sourceType: 'script' }).program.body[0];
n.FunctionDeclaration.assert(fnDec);
fnDec.body.body[0].argument.callee.object.callee.name = 'import';
return fnDec;
};
exports.BUILT_IN_CODEGENS = [
{ name: 'sync', codeGen: exports.syncCodeGen },
{ name: 'async-require', codeGen: exports.ensureCodeGen },
{ name: 'async-import', codeGen: exports.importCodeGen },
{ name: 'async-system', codeGen: exports.systemCodeGen }
];
//# sourceMappingURL=builtin_codegens.js.map
;