UNPKG

@farris/build-angular

Version:

Angular Webpack Build Facade

70 lines 10.2 kB
"use strict"; 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==