ngc-webpack
Version:
A wrapper for the @ngtools/webpack with hooks into the compilation process
49 lines • 2.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var Path = require("path");
var compiler_cli_1 = require("@angular/compiler-cli");
function hasResources(obj) {
return obj.hasOwnProperty('templateUrl') || obj.hasOwnProperty('styleUrls');
}
function findComponentDecoratorMetadata(decorators) {
return decorators
.find(function (entry) {
if (compiler_cli_1.isMetadataSymbolicCallExpression(entry)) {
var exp = entry.expression;
if (compiler_cli_1.isMetadataImportedSymbolReferenceExpression(exp) && exp.module === '@angular/core' && exp.name === 'Component') {
return true;
}
}
return false;
});
}
function inlineMetadataBundle(relativeTo, metadataBundle, getResource) {
var metadata = metadataBundle.metadata, origins = metadataBundle.origins;
Object.keys(metadata).forEach(function (key) {
var entry = metadata[key];
if (compiler_cli_1.isClassMetadata(entry) && entry.decorators) {
var exp = findComponentDecoratorMetadata(entry.decorators);
var componentMetadata = exp && exp.arguments && exp.arguments[0];
if (componentMetadata && hasResources(componentMetadata)) {
// when no "origins" it is metadata json for specific module, if origins it's flat mode.
var origin_1 = origins
? Path.dirname(Path.resolve(relativeTo, origins[key]))
: relativeTo;
if (componentMetadata.templateUrl) {
var template = getResource(Path.resolve(origin_1, componentMetadata.templateUrl));
if (template) {
delete componentMetadata.templateUrl;
componentMetadata.template = template;
}
}
if (componentMetadata.styleUrls) {
componentMetadata.styles = componentMetadata.styleUrls
.map(function (stylePath) { return getResource(Path.resolve(origin_1, stylePath)); });
delete componentMetadata.styleUrls;
}
}
}
});
}
exports.inlineMetadataBundle = inlineMetadataBundle;
//# sourceMappingURL=inline-metadata.js.map