@farris/build-angular
Version:
Angular Webpack Build Facade
70 lines • 10.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
/**
* @license
* Copyright Google Inc. All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
const core_1 = require("@angular-devkit/core");
const rxjs_1 = require("rxjs");
const operators_1 = require("rxjs/operators");
class MissingAssetSourceRootException extends core_1.BaseException {
constructor(path) {
super(`The ${path} asset path must start with the project source root.`);
}
}
exports.MissingAssetSourceRootException = MissingAssetSourceRootException;
function normalizeAssetPatterns(assetPatterns, host, root, projectRoot, maybeSourceRoot) {
// When sourceRoot is not available, we default to ${projectRoot}/src.
const sourceRoot = maybeSourceRoot || core_1.join(projectRoot, 'src');
const resolvedSourceRoot = core_1.resolve(root, sourceRoot);
if (assetPatterns.length === 0) {
// If there are no asset patterns, return an empty array.
// It's important to do this because forkJoin with an empty array will immediately complete
// the observable.
return rxjs_1.of([]);
}
const assetPatternObjectObservables = assetPatterns
.map(assetPattern => {
// Normalize string asset patterns to objects.
if (typeof assetPattern === 'string') {
const assetPath = core_1.normalize(assetPattern);
const resolvedAssetPath = core_1.resolve(root, assetPath);
// Check if the string asset is within sourceRoot.
if (!resolvedAssetPath.startsWith(resolvedSourceRoot)) {
throw new MissingAssetSourceRootException(assetPattern);
}
return host.isDirectory(resolvedAssetPath).pipe(
// If the path doesn't exist at all, pretend it is a directory.
operators_1.catchError(() => rxjs_1.of(true)), operators_1.map(isDirectory => {
let glob, input, output;
if (isDirectory) {
// Folders get a recursive star glob.
glob = '**/*';
// Input directory is their original path.
input = assetPath;
}
else {
// Files are their own glob.
glob = core_1.basename(assetPath);
// Input directory is their original dirname.
input = core_1.dirname(assetPath);
}
// Output directory for both is the relative path from source root to input.
output = core_1.relative(resolvedSourceRoot, core_1.resolve(root, input));
// Return the asset pattern in object format.
return { glob, input, output };
}));
}
else {
// It's already an AssetPatternObject, no need to convert.
return rxjs_1.of(assetPattern);
}
});
// Wait for all the asset patterns and return them as an array.
return rxjs_1.forkJoin(assetPatternObjectObservables);
}
exports.normalizeAssetPatterns = normalizeAssetPatterns;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsaXplLWFzc2V0LXBhdHRlcm5zLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9mYXJyaXNfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL3V0aWxzL25vcm1hbGl6ZS1hc3NldC1wYXR0ZXJucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOzs7Ozs7R0FNRztBQUNILCtDQVU4QjtBQUM5QiwrQkFBZ0Q7QUFDaEQsOENBQWlEO0FBSWpELHFDQUE2QyxTQUFRLG9CQUFhO0lBQ2hFLFlBQVksSUFBWTtRQUN0QixLQUFLLENBQUMsT0FBTyxJQUFJLHNEQUFzRCxDQUFDLENBQUM7SUFDM0UsQ0FBQztDQUNGO0FBSkQsMEVBSUM7QUFFRCxnQ0FDRSxhQUE2QixFQUM3QixJQUFvQixFQUNwQixJQUFVLEVBQ1YsV0FBaUIsRUFDakIsZUFBaUM7SUFFakMsc0VBQXNFO0lBQ3RFLE1BQU0sVUFBVSxHQUFHLGVBQWUsSUFBSSxXQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9ELE1BQU0sa0JBQWtCLEdBQUcsY0FBTyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztJQUVyRCxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IseURBQXlEO1FBQ3pELDJGQUEyRjtRQUMzRixrQkFBa0I7UUFDbEIsTUFBTSxDQUFDLFNBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSw2QkFBNkIsR0FBcUMsYUFBYTtTQUNsRixHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUU7UUFDbEIsOENBQThDO1FBQzlDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sWUFBWSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDckMsTUFBTSxTQUFTLEdBQUcsZ0JBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMxQyxNQUFNLGlCQUFpQixHQUFHLGNBQU8sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFFbkQsa0RBQWtEO1lBQ2xELEVBQUUsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0RCxNQUFNLElBQUksK0JBQStCLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDMUQsQ0FBQztZQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSTtZQUM3QywrREFBK0Q7WUFDL0Qsc0JBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFDMUIsZUFBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUNoQixJQUFJLElBQVksRUFBRSxLQUFXLEVBQUUsTUFBWSxDQUFDO2dCQUM1QyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO29CQUNoQixxQ0FBcUM7b0JBQ3JDLElBQUksR0FBRyxNQUFNLENBQUM7b0JBQ2QsMENBQTBDO29CQUMxQyxLQUFLLEdBQUcsU0FBUyxDQUFDO2dCQUNwQixDQUFDO2dCQUFDLElBQUksQ0FBQyxDQUFDO29CQUNOLDRCQUE0QjtvQkFDNUIsSUFBSSxHQUFHLGVBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDM0IsNkNBQTZDO29CQUM3QyxLQUFLLEdBQUcsY0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUM3QixDQUFDO2dCQUVELDRFQUE0RTtnQkFDNUUsTUFBTSxHQUFHLGVBQVEsQ0FBQyxrQkFBa0IsRUFBRSxjQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBRTVELDZDQUE2QztnQkFDN0MsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sMERBQTBEO1lBQzFELE1BQU0sQ0FBQyxTQUFFLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUwsK0RBQStEO0lBQy9ELE1BQU0sQ0FBQyxlQUFRLENBQUMsNkJBQTZCLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBOURELHdEQThEQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7XG4gIEJhc2VFeGNlcHRpb24sXG4gIFBhdGgsXG4gIGJhc2VuYW1lLFxuICBkaXJuYW1lLFxuICBqb2luLFxuICBub3JtYWxpemUsXG4gIHJlbGF0aXZlLFxuICByZXNvbHZlLFxuICB2aXJ0dWFsRnMsXG59IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZvcmtKb2luLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXNzZXRQYXR0ZXJuLCBBc3NldFBhdHRlcm5PYmplY3QgfSBmcm9tICcuLi9icm93c2VyL3NjaGVtYSc7XG5cblxuZXhwb3J0IGNsYXNzIE1pc3NpbmdBc3NldFNvdXJjZVJvb3RFeGNlcHRpb24gZXh0ZW5kcyBCYXNlRXhjZXB0aW9uIHtcbiAgY29uc3RydWN0b3IocGF0aDogU3RyaW5nKSB7XG4gICAgc3VwZXIoYFRoZSAke3BhdGh9IGFzc2V0IHBhdGggbXVzdCBzdGFydCB3aXRoIHRoZSBwcm9qZWN0IHNvdXJjZSByb290LmApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVBc3NldFBhdHRlcm5zKFxuICBhc3NldFBhdHRlcm5zOiBBc3NldFBhdHRlcm5bXSxcbiAgaG9zdDogdmlydHVhbEZzLkhvc3QsXG4gIHJvb3Q6IFBhdGgsXG4gIHByb2plY3RSb290OiBQYXRoLFxuICBtYXliZVNvdXJjZVJvb3Q6IFBhdGggfCB1bmRlZmluZWQsXG4pOiBPYnNlcnZhYmxlPEFzc2V0UGF0dGVybk9iamVjdFtdPiB7XG4gIC8vIFdoZW4gc291cmNlUm9vdCBpcyBub3QgYXZhaWxhYmxlLCB3ZSBkZWZhdWx0IHRvICR7cHJvamVjdFJvb3R9L3NyYy5cbiAgY29uc3Qgc291cmNlUm9vdCA9IG1heWJlU291cmNlUm9vdCB8fCBqb2luKHByb2plY3RSb290LCAnc3JjJyk7XG4gIGNvbnN0IHJlc29sdmVkU291cmNlUm9vdCA9IHJlc29sdmUocm9vdCwgc291cmNlUm9vdCk7XG5cbiAgaWYgKGFzc2V0UGF0dGVybnMubGVuZ3RoID09PSAwKSB7XG4gICAgLy8gSWYgdGhlcmUgYXJlIG5vIGFzc2V0IHBhdHRlcm5zLCByZXR1cm4gYW4gZW1wdHkgYXJyYXkuXG4gICAgLy8gSXQncyBpbXBvcnRhbnQgdG8gZG8gdGhpcyBiZWNhdXNlIGZvcmtKb2luIHdpdGggYW4gZW1wdHkgYXJyYXkgd2lsbCBpbW1lZGlhdGVseSBjb21wbGV0ZVxuICAgIC8vIHRoZSBvYnNlcnZhYmxlLlxuICAgIHJldHVybiBvZihbXSk7XG4gIH1cblxuICBjb25zdCBhc3NldFBhdHRlcm5PYmplY3RPYnNlcnZhYmxlczogT2JzZXJ2YWJsZTxBc3NldFBhdHRlcm5PYmplY3Q+W10gPSBhc3NldFBhdHRlcm5zXG4gICAgLm1hcChhc3NldFBhdHRlcm4gPT4ge1xuICAgICAgLy8gTm9ybWFsaXplIHN0cmluZyBhc3NldCBwYXR0ZXJucyB0byBvYmplY3RzLlxuICAgICAgaWYgKHR5cGVvZiBhc3NldFBhdHRlcm4gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IGFzc2V0UGF0aCA9IG5vcm1hbGl6ZShhc3NldFBhdHRlcm4pO1xuICAgICAgICBjb25zdCByZXNvbHZlZEFzc2V0UGF0aCA9IHJlc29sdmUocm9vdCwgYXNzZXRQYXRoKTtcblxuICAgICAgICAvLyBDaGVjayBpZiB0aGUgc3RyaW5nIGFzc2V0IGlzIHdpdGhpbiBzb3VyY2VSb290LlxuICAgICAgICBpZiAoIXJlc29sdmVkQXNzZXRQYXRoLnN0YXJ0c1dpdGgocmVzb2x2ZWRTb3VyY2VSb290KSkge1xuICAgICAgICAgIHRocm93IG5ldyBNaXNzaW5nQXNzZXRTb3VyY2VSb290RXhjZXB0aW9uKGFzc2V0UGF0dGVybik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaG9zdC5pc0RpcmVjdG9yeShyZXNvbHZlZEFzc2V0UGF0aCkucGlwZShcbiAgICAgICAgICAvLyBJZiB0aGUgcGF0aCBkb2Vzbid0IGV4aXN0IGF0IGFsbCwgcHJldGVuZCBpdCBpcyBhIGRpcmVjdG9yeS5cbiAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKHRydWUpKSxcbiAgICAgICAgICBtYXAoaXNEaXJlY3RvcnkgPT4ge1xuICAgICAgICAgICAgbGV0IGdsb2I6IHN0cmluZywgaW5wdXQ6IFBhdGgsIG91dHB1dDogUGF0aDtcbiAgICAgICAgICAgIGlmIChpc0RpcmVjdG9yeSkge1xuICAgICAgICAgICAgICAvLyBGb2xkZXJzIGdldCBhIHJlY3Vyc2l2ZSBzdGFyIGdsb2IuXG4gICAgICAgICAgICAgIGdsb2IgPSAnKiovKic7XG4gICAgICAgICAgICAgIC8vIElucHV0IGRpcmVjdG9yeSBpcyB0aGVpciBvcmlnaW5hbCBwYXRoLlxuICAgICAgICAgICAgICBpbnB1dCA9IGFzc2V0UGF0aDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIEZpbGVzIGFyZSB0aGVpciBvd24gZ2xvYi5cbiAgICAgICAgICAgICAgZ2xvYiA9IGJhc2VuYW1lKGFzc2V0UGF0aCk7XG4gICAgICAgICAgICAgIC8vIElucHV0IGRpcmVjdG9yeSBpcyB0aGVpciBvcmlnaW5hbCBkaXJuYW1lLlxuICAgICAgICAgICAgICBpbnB1dCA9IGRpcm5hbWUoYXNzZXRQYXRoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gT3V0cHV0IGRpcmVjdG9yeSBmb3IgYm90aCBpcyB0aGUgcmVsYXRpdmUgcGF0aCBmcm9tIHNvdXJjZSByb290IHRvIGlucHV0LlxuICAgICAgICAgICAgb3V0cHV0ID0gcmVsYXRpdmUocmVzb2x2ZWRTb3VyY2VSb290LCByZXNvbHZlKHJvb3QsIGlucHV0KSk7XG5cbiAgICAgICAgICAgIC8vIFJldHVybiB0aGUgYXNzZXQgcGF0dGVybiBpbiBvYmplY3QgZm9ybWF0LlxuICAgICAgICAgICAgcmV0dXJuIHsgZ2xvYiwgaW5wdXQsIG91dHB1dCB9O1xuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSXQncyBhbHJlYWR5IGFuIEFzc2V0UGF0dGVybk9iamVjdCwgbm8gbmVlZCB0byBjb252ZXJ0LlxuICAgICAgICByZXR1cm4gb2YoYXNzZXRQYXR0ZXJuKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAvLyBXYWl0IGZvciBhbGwgdGhlIGFzc2V0IHBhdHRlcm5zIGFuZCByZXR1cm4gdGhlbSBhcyBhbiBhcnJheS5cbiAgcmV0dXJuIGZvcmtKb2luKGFzc2V0UGF0dGVybk9iamVjdE9ic2VydmFibGVzKTtcbn1cbiJdfQ==