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 | */
|
---|
8 | (function (factory) {
|
---|
9 | if (typeof module === "object" && typeof module.exports === "object") {
|
---|
10 | var v = factory(require, exports);
|
---|
11 | if (v !== undefined) module.exports = v;
|
---|
12 | }
|
---|
13 | else if (typeof define === "function" && define.amd) {
|
---|
14 | define("@angular/compiler-cli/src/transformers/util", ["require", "exports", "tslib", "@angular/compiler", "path", "typescript", "@angular/compiler-cli/src/transformers/api"], factory);
|
---|
15 | }
|
---|
16 | })(function (require, exports) {
|
---|
17 | "use strict";
|
---|
18 | Object.defineProperty(exports, "__esModule", { value: true });
|
---|
19 | exports.stripComment = exports.ngToTsDiagnostic = exports.relativeToRootDirs = exports.isInRootDir = exports.createMessageDiagnostic = exports.userError = exports.error = exports.tsStructureIsReused = exports.TS = exports.DTS = exports.GENERATED_FILES = void 0;
|
---|
20 | var tslib_1 = require("tslib");
|
---|
21 | var compiler_1 = require("@angular/compiler");
|
---|
22 | var path = require("path");
|
---|
23 | var ts = require("typescript");
|
---|
24 | var api_1 = require("@angular/compiler-cli/src/transformers/api");
|
---|
25 | exports.GENERATED_FILES = /(.*?)\.(ngfactory|shim\.ngstyle|ngstyle|ngsummary)\.(js|d\.ts|ts)$/;
|
---|
26 | exports.DTS = /\.d\.ts$/;
|
---|
27 | exports.TS = /^(?!.*\.d\.ts$).*\.ts$/;
|
---|
28 | // Note: This is an internal property in TypeScript. Use it only for assertions and tests.
|
---|
29 | function tsStructureIsReused(program) {
|
---|
30 | return program.structureIsReused;
|
---|
31 | }
|
---|
32 | exports.tsStructureIsReused = tsStructureIsReused;
|
---|
33 | function error(msg) {
|
---|
34 | throw new Error("Internal error: " + msg);
|
---|
35 | }
|
---|
36 | exports.error = error;
|
---|
37 | function userError(msg) {
|
---|
38 | throw compiler_1.syntaxError(msg);
|
---|
39 | }
|
---|
40 | exports.userError = userError;
|
---|
41 | function createMessageDiagnostic(messageText) {
|
---|
42 | return {
|
---|
43 | file: undefined,
|
---|
44 | start: undefined,
|
---|
45 | length: undefined,
|
---|
46 | category: ts.DiagnosticCategory.Message,
|
---|
47 | messageText: messageText,
|
---|
48 | code: api_1.DEFAULT_ERROR_CODE,
|
---|
49 | source: api_1.SOURCE,
|
---|
50 | };
|
---|
51 | }
|
---|
52 | exports.createMessageDiagnostic = createMessageDiagnostic;
|
---|
53 | function isInRootDir(fileName, options) {
|
---|
54 | return !options.rootDir || pathStartsWithPrefix(options.rootDir, fileName);
|
---|
55 | }
|
---|
56 | exports.isInRootDir = isInRootDir;
|
---|
57 | function relativeToRootDirs(filePath, rootDirs) {
|
---|
58 | var e_1, _a;
|
---|
59 | if (!filePath)
|
---|
60 | return filePath;
|
---|
61 | try {
|
---|
62 | for (var _b = tslib_1.__values(rootDirs || []), _c = _b.next(); !_c.done; _c = _b.next()) {
|
---|
63 | var dir = _c.value;
|
---|
64 | var rel = pathStartsWithPrefix(dir, filePath);
|
---|
65 | if (rel) {
|
---|
66 | return rel;
|
---|
67 | }
|
---|
68 | }
|
---|
69 | }
|
---|
70 | catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
---|
71 | finally {
|
---|
72 | try {
|
---|
73 | if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
---|
74 | }
|
---|
75 | finally { if (e_1) throw e_1.error; }
|
---|
76 | }
|
---|
77 | return filePath;
|
---|
78 | }
|
---|
79 | exports.relativeToRootDirs = relativeToRootDirs;
|
---|
80 | function pathStartsWithPrefix(prefix, fullPath) {
|
---|
81 | var rel = path.relative(prefix, fullPath);
|
---|
82 | return rel.startsWith('..') ? null : rel;
|
---|
83 | }
|
---|
84 | /**
|
---|
85 | * Converts a ng.Diagnostic into a ts.Diagnostic.
|
---|
86 | * This looses some information, and also uses an incomplete object as `file`.
|
---|
87 | *
|
---|
88 | * I.e. only use this where the API allows only a ts.Diagnostic.
|
---|
89 | */
|
---|
90 | function ngToTsDiagnostic(ng) {
|
---|
91 | var file;
|
---|
92 | var start;
|
---|
93 | var length;
|
---|
94 | if (ng.span) {
|
---|
95 | // Note: We can't use a real ts.SourceFile,
|
---|
96 | // but we can at least mirror the properties `fileName` and `text`, which
|
---|
97 | // are mostly used for error reporting.
|
---|
98 | file = { fileName: ng.span.start.file.url, text: ng.span.start.file.content };
|
---|
99 | start = ng.span.start.offset;
|
---|
100 | length = ng.span.end.offset - start;
|
---|
101 | }
|
---|
102 | return {
|
---|
103 | file: file,
|
---|
104 | messageText: ng.messageText,
|
---|
105 | category: ng.category,
|
---|
106 | code: ng.code,
|
---|
107 | start: start,
|
---|
108 | length: length,
|
---|
109 | };
|
---|
110 | }
|
---|
111 | exports.ngToTsDiagnostic = ngToTsDiagnostic;
|
---|
112 | /**
|
---|
113 | * Strip multiline comment start and end markers from the `commentText` string.
|
---|
114 | *
|
---|
115 | * This will also strip the JSDOC comment start marker (`/**`).
|
---|
116 | */
|
---|
117 | function stripComment(commentText) {
|
---|
118 | return commentText.replace(/^\/\*\*?/, '').replace(/\*\/$/, '').trim();
|
---|
119 | }
|
---|
120 | exports.stripComment = stripComment;
|
---|
121 | });
|
---|
122 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvdHJhbnNmb3JtZXJzL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7OztJQUVILDhDQUE4QztJQUM5QywyQkFBNkI7SUFDN0IsK0JBQWlDO0lBRWpDLGtFQUE4RTtJQUVqRSxRQUFBLGVBQWUsR0FBRyxvRUFBb0UsQ0FBQztJQUN2RixRQUFBLEdBQUcsR0FBRyxVQUFVLENBQUM7SUFDakIsUUFBQSxFQUFFLEdBQUcsd0JBQXdCLENBQUM7SUFRM0MsMEZBQTBGO0lBQzFGLFNBQWdCLG1CQUFtQixDQUFDLE9BQW1CO1FBQ3JELE9BQVEsT0FBZSxDQUFDLGlCQUFpQixDQUFDO0lBQzVDLENBQUM7SUFGRCxrREFFQztJQUVELFNBQWdCLEtBQUssQ0FBQyxHQUFXO1FBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQW1CLEdBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFGRCxzQkFFQztJQUVELFNBQWdCLFNBQVMsQ0FBQyxHQUFXO1FBQ25DLE1BQU0sc0JBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRkQsOEJBRUM7SUFFRCxTQUFnQix1QkFBdUIsQ0FBQyxXQUFtQjtRQUN6RCxPQUFPO1lBQ0wsSUFBSSxFQUFFLFNBQVM7WUFDZixLQUFLLEVBQUUsU0FBUztZQUNoQixNQUFNLEVBQUUsU0FBUztZQUNqQixRQUFRLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLE9BQU87WUFDdkMsV0FBVyxhQUFBO1lBQ1gsSUFBSSxFQUFFLHdCQUFrQjtZQUN4QixNQUFNLEVBQUUsWUFBTTtTQUNmLENBQUM7SUFDSixDQUFDO0lBVkQsMERBVUM7SUFFRCxTQUFnQixXQUFXLENBQUMsUUFBZ0IsRUFBRSxPQUF3QjtRQUNwRSxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFGRCxrQ0FFQztJQUVELFNBQWdCLGtCQUFrQixDQUFDLFFBQWdCLEVBQUUsUUFBa0I7O1FBQ3JFLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxRQUFRLENBQUM7O1lBQy9CLEtBQWtCLElBQUEsS0FBQSxpQkFBQSxRQUFRLElBQUksRUFBRSxDQUFBLGdCQUFBLDRCQUFFO2dCQUE3QixJQUFNLEdBQUcsV0FBQTtnQkFDWixJQUFNLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ2hELElBQUksR0FBRyxFQUFFO29CQUNQLE9BQU8sR0FBRyxDQUFDO2lCQUNaO2FBQ0Y7Ozs7Ozs7OztRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFURCxnREFTQztJQUVELFNBQVMsb0JBQW9CLENBQUMsTUFBYyxFQUFFLFFBQWdCO1FBQzVELElBQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsRUFBYztRQUM3QyxJQUFJLElBQTZCLENBQUM7UUFDbEMsSUFBSSxLQUF1QixDQUFDO1FBQzVCLElBQUksTUFBd0IsQ0FBQztRQUM3QixJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUU7WUFDWCwyQ0FBMkM7WUFDM0MseUVBQXlFO1lBQ3pFLHVDQUF1QztZQUN2QyxJQUFJLEdBQUcsRUFBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBa0IsQ0FBQztZQUM3RixLQUFLLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzdCLE1BQU0sR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1NBQ3JDO1FBQ0QsT0FBTztZQUNMLElBQUksTUFBQTtZQUNKLFdBQVcsRUFBRSxFQUFFLENBQUMsV0FBVztZQUMzQixRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVE7WUFDckIsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJO1lBQ2IsS0FBSyxPQUFBO1lBQ0wsTUFBTSxRQUFBO1NBQ1AsQ0FBQztJQUNKLENBQUM7SUFwQkQsNENBb0JDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQWdCLFlBQVksQ0FBQyxXQUFtQjtRQUM5QyxPQUFPLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekUsQ0FBQztJQUZELG9DQUVDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7c3ludGF4RXJyb3J9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtDb21waWxlck9wdGlvbnMsIERFRkFVTFRfRVJST1JfQ09ERSwgRGlhZ25vc3RpYywgU09VUkNFfSBmcm9tICcuL2FwaSc7XG5cbmV4cG9ydCBjb25zdCBHRU5FUkFURURfRklMRVMgPSAvKC4qPylcXC4obmdmYWN0b3J5fHNoaW1cXC5uZ3N0eWxlfG5nc3R5bGV8bmdzdW1tYXJ5KVxcLihqc3xkXFwudHN8dHMpJC87XG5leHBvcnQgY29uc3QgRFRTID0gL1xcLmRcXC50cyQvO1xuZXhwb3J0IGNvbnN0IFRTID0gL14oPyEuKlxcLmRcXC50cyQpLipcXC50cyQvO1xuXG5leHBvcnQgY29uc3QgZW51bSBTdHJ1Y3R1cmVJc1JldXNlZCB7XG4gIE5vdCA9IDAsXG4gIFNhZmVNb2R1bGVzID0gMSxcbiAgQ29tcGxldGVseSA9IDJcbn1cblxuLy8gTm90ZTogVGhpcyBpcyBhbiBpbnRlcm5hbCBwcm9wZXJ0eSBpbiBUeXBlU2NyaXB0LiBVc2UgaXQgb25seSBmb3IgYXNzZXJ0aW9ucyBhbmQgdGVzdHMuXG5leHBvcnQgZnVuY3Rpb24gdHNTdHJ1Y3R1cmVJc1JldXNlZChwcm9ncmFtOiB0cy5Qcm9ncmFtKTogU3RydWN0dXJlSXNSZXVzZWQge1xuICByZXR1cm4gKHByb2dyYW0gYXMgYW55KS5zdHJ1Y3R1cmVJc1JldXNlZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVycm9yKG1zZzogc3RyaW5nKTogbmV2ZXIge1xuICB0aHJvdyBuZXcgRXJyb3IoYEludGVybmFsIGVycm9yOiAke21zZ31gKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZXJFcnJvcihtc2c6IHN0cmluZyk6IG5ldmVyIHtcbiAgdGhyb3cgc3ludGF4RXJyb3IobXNnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1lc3NhZ2VEaWFnbm9zdGljKG1lc3NhZ2VUZXh0OiBzdHJpbmcpOiB0cy5EaWFnbm9zdGljJkRpYWdub3N0aWMge1xuICByZXR1cm4ge1xuICAgIGZpbGU6IHVuZGVmaW5lZCxcbiAgICBzdGFydDogdW5kZWZpbmVkLFxuICAgIGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIGNhdGVnb3J5OiB0cy5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcbiAgICBtZXNzYWdlVGV4dCxcbiAgICBjb2RlOiBERUZBVUxUX0VSUk9SX0NPREUsXG4gICAgc291cmNlOiBTT1VSQ0UsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0luUm9vdERpcihmaWxlTmFtZTogc3RyaW5nLCBvcHRpb25zOiBDb21waWxlck9wdGlvbnMpIHtcbiAgcmV0dXJuICFvcHRpb25zLnJvb3REaXIgfHwgcGF0aFN0YXJ0c1dpdGhQcmVmaXgob3B0aW9ucy5yb290RGlyLCBmaWxlTmFtZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWxhdGl2ZVRvUm9vdERpcnMoZmlsZVBhdGg6IHN0cmluZywgcm9vdERpcnM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgaWYgKCFmaWxlUGF0aCkgcmV0dXJuIGZpbGVQYXRoO1xuICBmb3IgKGNvbnN0IGRpciBvZiByb290RGlycyB8fCBbXSkge1xuICAgIGNvbnN0IHJlbCA9IHBhdGhTdGFydHNXaXRoUHJlZml4KGRpciwgZmlsZVBhdGgpO1xuICAgIGlmIChyZWwpIHtcbiAgICAgIHJldHVybiByZWw7XG4gICAgfVxuICB9XG4gIHJldHVybiBmaWxlUGF0aDtcbn1cblxuZnVuY3Rpb24gcGF0aFN0YXJ0c1dpdGhQcmVmaXgocHJlZml4OiBzdHJpbmcsIGZ1bGxQYXRoOiBzdHJpbmcpOiBzdHJpbmd8bnVsbCB7XG4gIGNvbnN0IHJlbCA9IHBhdGgucmVsYXRpdmUocHJlZml4LCBmdWxsUGF0aCk7XG4gIHJldHVybiByZWwuc3RhcnRzV2l0aCgnLi4nKSA/IG51bGwgOiByZWw7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBuZy5EaWFnbm9zdGljIGludG8gYSB0cy5EaWFnbm9zdGljLlxuICogVGhpcyBsb29zZXMgc29tZSBpbmZvcm1hdGlvbiwgYW5kIGFsc28gdXNlcyBhbiBpbmNvbXBsZXRlIG9iamVjdCBhcyBgZmlsZWAuXG4gKlxuICogSS5lLiBvbmx5IHVzZSB0aGlzIHdoZXJlIHRoZSBBUEkgYWxsb3dzIG9ubHkgYSB0cy5EaWFnbm9zdGljLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmdUb1RzRGlhZ25vc3RpYyhuZzogRGlhZ25vc3RpYyk6IHRzLkRpYWdub3N0aWMge1xuICBsZXQgZmlsZTogdHMuU291cmNlRmlsZXx1bmRlZmluZWQ7XG4gIGxldCBzdGFydDogbnVtYmVyfHVuZGVmaW5lZDtcbiAgbGV0IGxlbmd0aDogbnVtYmVyfHVuZGVmaW5lZDtcbiAgaWYgKG5nLnNwYW4pIHtcbiAgICAvLyBOb3RlOiBXZSBjYW4ndCB1c2UgYSByZWFsIHRzLlNvdXJjZUZpbGUsXG4gICAgLy8gYnV0IHdlIGNhbiBhdCBsZWFzdCBtaXJyb3IgdGhlIHByb3BlcnRpZXMgYGZpbGVOYW1lYCBhbmQgYHRleHRgLCB3aGljaFxuICAgIC8vIGFyZSBtb3N0bHkgdXNlZCBmb3IgZXJyb3IgcmVwb3J0aW5nLlxuICAgIGZpbGUgPSB7ZmlsZU5hbWU6IG5nLnNwYW4uc3RhcnQuZmlsZS51cmwsIHRleHQ6IG5nLnNwYW4uc3RhcnQuZmlsZS5jb250ZW50fSBhcyB0cy5Tb3VyY2VGaWxlO1xuICAgIHN0YXJ0ID0gbmcuc3Bhbi5zdGFydC5vZmZzZXQ7XG4gICAgbGVuZ3RoID0gbmcuc3Bhbi5lbmQub2Zmc2V0IC0gc3RhcnQ7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBmaWxlLFxuICAgIG1lc3NhZ2VUZXh0OiBuZy5tZXNzYWdlVGV4dCxcbiAgICBjYXRlZ29yeTogbmcuY2F0ZWdvcnksXG4gICAgY29kZTogbmcuY29kZSxcbiAgICBzdGFydCxcbiAgICBsZW5ndGgsXG4gIH07XG59XG5cbi8qKlxuICogU3RyaXAgbXVsdGlsaW5lIGNvbW1lbnQgc3RhcnQgYW5kIGVuZCBtYXJrZXJzIGZyb20gdGhlIGBjb21tZW50VGV4dGAgc3RyaW5nLlxuICpcbiAqIFRoaXMgd2lsbCBhbHNvIHN0cmlwIHRoZSBKU0RPQyBjb21tZW50IHN0YXJ0IG1hcmtlciAoYC8qKmApLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaXBDb21tZW50KGNvbW1lbnRUZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gY29tbWVudFRleHQucmVwbGFjZSgvXlxcL1xcKlxcKj8vLCAnJykucmVwbGFjZSgvXFwqXFwvJC8sICcnKS50cmltKCk7XG59XG4iXX0= |
---|