UNPKG

13 kBJavaScriptView Raw
1/**
2 * @license
3 * Copyright Google LLC All Rights Reserved.
4 *
5 * Use of this source code is governed by an MIT-style license that can be
6 * found in the LICENSE file at https://angular.io/license
7 */
8var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10 return new (P || (P = Promise))(function (resolve, reject) {
11 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
12 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
13 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
14 step((generator = generator.apply(thisArg, _arguments || [])).next());
15 });
16};
17(function (factory) {
18 if (typeof module === "object" && typeof module.exports === "object") {
19 var v = factory(require, exports);
20 if (v !== undefined) module.exports = v;
21 }
22 else if (typeof define === "function" && define.amd) {
23 define("@angular/core/schematics/utils/project_tsconfig_paths", ["require", "exports", "@angular-devkit/core"], factory);
24 }
25})(function (require, exports) {
26 "use strict";
27 Object.defineProperty(exports, "__esModule", { value: true });
28 exports.getProjectTsConfigPaths = void 0;
29 const core_1 = require("@angular-devkit/core");
30 /**
31 * Gets all tsconfig paths from a CLI project by reading the workspace configuration
32 * and looking for common tsconfig locations.
33 */
34 function getProjectTsConfigPaths(tree) {
35 return __awaiter(this, void 0, void 0, function* () {
36 // Start with some tsconfig paths that are generally used within CLI projects. Note
37 // that we are not interested in IDE-specific tsconfig files (e.g. /tsconfig.json)
38 const buildPaths = new Set();
39 const testPaths = new Set();
40 const workspace = yield getWorkspace(tree);
41 for (const [, project] of workspace.projects) {
42 for (const [name, target] of project.targets) {
43 if (name !== 'build' && name !== 'test') {
44 continue;
45 }
46 for (const [, options] of allTargetOptions(target)) {
47 const tsConfig = options.tsConfig;
48 // Filter out tsconfig files that don't exist in the CLI project.
49 if (typeof tsConfig !== 'string' || !tree.exists(tsConfig)) {
50 continue;
51 }
52 if (name === 'build') {
53 buildPaths.add((0, core_1.normalize)(tsConfig));
54 }
55 else {
56 testPaths.add((0, core_1.normalize)(tsConfig));
57 }
58 }
59 }
60 }
61 return {
62 buildPaths: [...buildPaths],
63 testPaths: [...testPaths],
64 };
65 });
66 }
67 exports.getProjectTsConfigPaths = getProjectTsConfigPaths;
68 /** Get options for all configurations for the passed builder target. */
69 function* allTargetOptions(target) {
70 if (target.options) {
71 yield [undefined, target.options];
72 }
73 if (!target.configurations) {
74 return;
75 }
76 for (const [name, options] of Object.entries(target.configurations)) {
77 if (options) {
78 yield [name, options];
79 }
80 }
81 }
82 function createHost(tree) {
83 return {
84 readFile(path) {
85 return __awaiter(this, void 0, void 0, function* () {
86 const data = tree.read(path);
87 if (!data) {
88 throw new Error('File not found.');
89 }
90 return core_1.virtualFs.fileBufferToString(data);
91 });
92 },
93 writeFile(path, data) {
94 return __awaiter(this, void 0, void 0, function* () {
95 return tree.overwrite(path, data);
96 });
97 },
98 isDirectory(path) {
99 return __awaiter(this, void 0, void 0, function* () {
100 // Approximate a directory check.
101 // We don't need to consider empty directories and hence this is a good enough approach.
102 // This is also per documentation, see:
103 // https://angular.io/guide/schematics-for-libraries#get-the-project-configuration
104 return !tree.exists(path) && tree.getDir(path).subfiles.length > 0;
105 });
106 },
107 isFile(path) {
108 return __awaiter(this, void 0, void 0, function* () {
109 return tree.exists(path);
110 });
111 },
112 };
113 }
114 function getWorkspace(tree) {
115 return __awaiter(this, void 0, void 0, function* () {
116 const host = createHost(tree);
117 const { workspace } = yield core_1.workspaces.readWorkspace('/', host);
118 return workspace;
119 });
120 }
121});
122//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdF90c2NvbmZpZ19wYXRocy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy91dGlscy9wcm9qZWN0X3RzY29uZmlnX3BhdGhzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVILCtDQUE0RTtJQUc1RTs7O09BR0c7SUFDSCxTQUFzQix1QkFBdUIsQ0FBQyxJQUFVOztZQUV0RCxtRkFBbUY7WUFDbkYsa0ZBQWtGO1lBQ2xGLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7WUFDckMsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztZQUVwQyxNQUFNLFNBQVMsR0FBRyxNQUFNLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQyxLQUFLLE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUU7Z0JBQzVDLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO29CQUM1QyxJQUFJLElBQUksS0FBSyxPQUFPLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRTt3QkFDdkMsU0FBUztxQkFDVjtvQkFFRCxLQUFLLE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFO3dCQUNsRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO3dCQUNsQyxpRUFBaUU7d0JBQ2pFLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRTs0QkFDMUQsU0FBUzt5QkFDVjt3QkFFRCxJQUFJLElBQUksS0FBSyxPQUFPLEVBQUU7NEJBQ3BCLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBQSxnQkFBUyxFQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7eUJBQ3JDOzZCQUFNOzRCQUNMLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBQSxnQkFBUyxFQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7eUJBQ3BDO3FCQUNGO2lCQUNGO2FBQ0Y7WUFFRCxPQUFPO2dCQUNMLFVBQVUsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDO2dCQUMzQixTQUFTLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQzthQUMxQixDQUFDO1FBQ0osQ0FBQztLQUFBO0lBbENELDBEQWtDQztJQUVELHdFQUF3RTtJQUN4RSxRQUFRLENBQUMsQ0FDTCxnQkFBZ0IsQ0FBQyxNQUFtQztRQUV0RCxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDbEIsTUFBTSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDbkM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRTtZQUMxQixPQUFPO1NBQ1I7UUFFRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDbkUsSUFBSSxPQUFPLEVBQUU7Z0JBQ1gsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQzthQUN2QjtTQUNGO0lBQ0gsQ0FBQztJQUVELFNBQVMsVUFBVSxDQUFDLElBQVU7UUFDNUIsT0FBTztZQUNDLFFBQVEsQ0FBQyxJQUFZOztvQkFDekIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDN0IsSUFBSSxDQUFDLElBQUksRUFBRTt3QkFDVCxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7cUJBQ3BDO29CQUVELE9BQU8sZ0JBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDNUMsQ0FBQzthQUFBO1lBQ0ssU0FBUyxDQUFDLElBQVksRUFBRSxJQUFZOztvQkFDeEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDcEMsQ0FBQzthQUFBO1lBQ0ssV0FBVyxDQUFDLElBQVk7O29CQUM1QixpQ0FBaUM7b0JBQ2pDLHdGQUF3RjtvQkFDeEYsdUNBQXVDO29CQUN2QyxrRkFBa0Y7b0JBQ2xGLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7Z0JBQ3JFLENBQUM7YUFBQTtZQUNLLE1BQU0sQ0FBQyxJQUFZOztvQkFDdkIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMzQixDQUFDO2FBQUE7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFNBQWUsWUFBWSxDQUFDLElBQVU7O1lBQ3BDLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QixNQUFNLEVBQUMsU0FBUyxFQUFDLEdBQUcsTUFBTSxpQkFBVSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFOUQsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztLQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7anNvbiwgbm9ybWFsaXplLCB2aXJ0dWFsRnMsIHdvcmtzcGFjZXN9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlJztcbmltcG9ydCB7VHJlZX0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L3NjaGVtYXRpY3MnO1xuXG4vKipcbiAqIEdldHMgYWxsIHRzY29uZmlnIHBhdGhzIGZyb20gYSBDTEkgcHJvamVjdCBieSByZWFkaW5nIHRoZSB3b3Jrc3BhY2UgY29uZmlndXJhdGlvblxuICogYW5kIGxvb2tpbmcgZm9yIGNvbW1vbiB0c2NvbmZpZyBsb2NhdGlvbnMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQcm9qZWN0VHNDb25maWdQYXRocyh0cmVlOiBUcmVlKTpcbiAgICBQcm9taXNlPHtidWlsZFBhdGhzOiBzdHJpbmdbXTsgdGVzdFBhdGhzOiBzdHJpbmdbXTt9PiB7XG4gIC8vIFN0YXJ0IHdpdGggc29tZSB0c2NvbmZpZyBwYXRocyB0aGF0IGFyZSBnZW5lcmFsbHkgdXNlZCB3aXRoaW4gQ0xJIHByb2plY3RzLiBOb3RlXG4gIC8vIHRoYXQgd2UgYXJlIG5vdCBpbnRlcmVzdGVkIGluIElERS1zcGVjaWZpYyB0c2NvbmZpZyBmaWxlcyAoZS5nLiAvdHNjb25maWcuanNvbilcbiAgY29uc3QgYnVpbGRQYXRocyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCB0ZXN0UGF0aHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICBjb25zdCB3b3Jrc3BhY2UgPSBhd2FpdCBnZXRXb3Jrc3BhY2UodHJlZSk7XG4gIGZvciAoY29uc3QgWywgcHJvamVjdF0gb2Ygd29ya3NwYWNlLnByb2plY3RzKSB7XG4gICAgZm9yIChjb25zdCBbbmFtZSwgdGFyZ2V0XSBvZiBwcm9qZWN0LnRhcmdldHMpIHtcbiAgICAgIGlmIChuYW1lICE9PSAnYnVpbGQnICYmIG5hbWUgIT09ICd0ZXN0Jykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBbLCBvcHRpb25zXSBvZiBhbGxUYXJnZXRPcHRpb25zKHRhcmdldCkpIHtcbiAgICAgICAgY29uc3QgdHNDb25maWcgPSBvcHRpb25zLnRzQ29uZmlnO1xuICAgICAgICAvLyBGaWx0ZXIgb3V0IHRzY29uZmlnIGZpbGVzIHRoYXQgZG9uJ3QgZXhpc3QgaW4gdGhlIENMSSBwcm9qZWN0LlxuICAgICAgICBpZiAodHlwZW9mIHRzQ29uZmlnICE9PSAnc3RyaW5nJyB8fCAhdHJlZS5leGlzdHModHNDb25maWcpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmFtZSA9PT0gJ2J1aWxkJykge1xuICAgICAgICAgIGJ1aWxkUGF0aHMuYWRkKG5vcm1hbGl6ZSh0c0NvbmZpZykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRlc3RQYXRocy5hZGQobm9ybWFsaXplKHRzQ29uZmlnKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJ1aWxkUGF0aHM6IFsuLi5idWlsZFBhdGhzXSxcbiAgICB0ZXN0UGF0aHM6IFsuLi50ZXN0UGF0aHNdLFxuICB9O1xufVxuXG4vKiogR2V0IG9wdGlvbnMgZm9yIGFsbCBjb25maWd1cmF0aW9ucyBmb3IgdGhlIHBhc3NlZCBidWlsZGVyIHRhcmdldC4gKi9cbmZ1bmN0aW9uKlxuICAgIGFsbFRhcmdldE9wdGlvbnModGFyZ2V0OiB3b3Jrc3BhY2VzLlRhcmdldERlZmluaXRpb24pOlxuICAgICAgICBJdGVyYWJsZTxbc3RyaW5nIHwgdW5kZWZpbmVkLCBSZWNvcmQ8c3RyaW5nLCBqc29uLkpzb25WYWx1ZXx1bmRlZmluZWQ+XT4ge1xuICBpZiAodGFyZ2V0Lm9wdGlvbnMpIHtcbiAgICB5aWVsZCBbdW5kZWZpbmVkLCB0YXJnZXQub3B0aW9uc107XG4gIH1cblxuICBpZiAoIXRhcmdldC5jb25maWd1cmF0aW9ucykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZvciAoY29uc3QgW25hbWUsIG9wdGlvbnNdIG9mIE9iamVjdC5lbnRyaWVzKHRhcmdldC5jb25maWd1cmF0aW9ucykpIHtcbiAgICBpZiAob3B0aW9ucykge1xuICAgICAgeWllbGQgW25hbWUsIG9wdGlvbnNdO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVIb3N0KHRyZWU6IFRyZWUpOiB3b3Jrc3BhY2VzLldvcmtzcGFjZUhvc3Qge1xuICByZXR1cm4ge1xuICAgIGFzeW5jIHJlYWRGaWxlKHBhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICBjb25zdCBkYXRhID0gdHJlZS5yZWFkKHBhdGgpO1xuICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRmlsZSBub3QgZm91bmQuJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB2aXJ0dWFsRnMuZmlsZUJ1ZmZlclRvU3RyaW5nKGRhdGEpO1xuICAgIH0sXG4gICAgYXN5bmMgd3JpdGVGaWxlKHBhdGg6IHN0cmluZywgZGF0YTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICByZXR1cm4gdHJlZS5vdmVyd3JpdGUocGF0aCwgZGF0YSk7XG4gICAgfSxcbiAgICBhc3luYyBpc0RpcmVjdG9yeShwYXRoOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgIC8vIEFwcHJveGltYXRlIGEgZGlyZWN0b3J5IGNoZWNrLlxuICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjb25zaWRlciBlbXB0eSBkaXJlY3RvcmllcyBhbmQgaGVuY2UgdGhpcyBpcyBhIGdvb2QgZW5vdWdoIGFwcHJvYWNoLlxuICAgICAgLy8gVGhpcyBpcyBhbHNvIHBlciBkb2N1bWVudGF0aW9uLCBzZWU6XG4gICAgICAvLyBodHRwczovL2FuZ3VsYXIuaW8vZ3VpZGUvc2NoZW1hdGljcy1mb3ItbGlicmFyaWVzI2dldC10aGUtcHJvamVjdC1jb25maWd1cmF0aW9uXG4gICAgICByZXR1cm4gIXRyZWUuZXhpc3RzKHBhdGgpICYmIHRyZWUuZ2V0RGlyKHBhdGgpLnN1YmZpbGVzLmxlbmd0aCA+IDA7XG4gICAgfSxcbiAgICBhc3luYyBpc0ZpbGUocGF0aDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICByZXR1cm4gdHJlZS5leGlzdHMocGF0aCk7XG4gICAgfSxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0V29ya3NwYWNlKHRyZWU6IFRyZWUpOiBQcm9taXNlPHdvcmtzcGFjZXMuV29ya3NwYWNlRGVmaW5pdGlvbj4ge1xuICBjb25zdCBob3N0ID0gY3JlYXRlSG9zdCh0cmVlKTtcbiAgY29uc3Qge3dvcmtzcGFjZX0gPSBhd2FpdCB3b3Jrc3BhY2VzLnJlYWRXb3Jrc3BhY2UoJy8nLCBob3N0KTtcblxuICByZXR1cm4gd29ya3NwYWNlO1xufVxuIl19
\No newline at end of file