[6a3a178] | 1 | (function (factory) {
|
---|
| 2 | if (typeof module === "object" && typeof module.exports === "object") {
|
---|
| 3 | var v = factory(require, exports);
|
---|
| 4 | if (v !== undefined) module.exports = v;
|
---|
| 5 | }
|
---|
| 6 | else if (typeof define === "function" && define.amd) {
|
---|
| 7 | define("@angular/core/schematics/migrations/relative-link-resolution/collector", ["require", "exports", "typescript", "@angular/core/schematics/migrations/relative-link-resolution/util"], factory);
|
---|
| 8 | }
|
---|
| 9 | })(function (require, exports) {
|
---|
| 10 | "use strict";
|
---|
| 11 | Object.defineProperty(exports, "__esModule", { value: true });
|
---|
| 12 | exports.RelativeLinkResolutionCollector = void 0;
|
---|
| 13 | /**
|
---|
| 14 | * @license
|
---|
| 15 | * Copyright Google LLC All Rights Reserved.
|
---|
| 16 | *
|
---|
| 17 | * Use of this source code is governed by an MIT-style license that can be
|
---|
| 18 | * found in the LICENSE file at https://angular.io/license
|
---|
| 19 | */
|
---|
| 20 | const ts = require("typescript");
|
---|
| 21 | const util_1 = require("@angular/core/schematics/migrations/relative-link-resolution/util");
|
---|
| 22 | /**
|
---|
| 23 | * Visitor that walks through specified TypeScript nodes and collects all
|
---|
| 24 | * found ExtraOptions#RelativeLinkResolution assignments.
|
---|
| 25 | */
|
---|
| 26 | class RelativeLinkResolutionCollector {
|
---|
| 27 | constructor(typeChecker) {
|
---|
| 28 | this.typeChecker = typeChecker;
|
---|
| 29 | this.forRootCalls = [];
|
---|
| 30 | this.extraOptionsLiterals = [];
|
---|
| 31 | }
|
---|
| 32 | visitNode(node) {
|
---|
| 33 | let forRootCall = null;
|
---|
| 34 | let literal = null;
|
---|
| 35 | if (util_1.isRouterModuleForRoot(this.typeChecker, node) && node.arguments.length > 0) {
|
---|
| 36 | if (node.arguments.length === 1) {
|
---|
| 37 | forRootCall = node;
|
---|
| 38 | }
|
---|
| 39 | else if (ts.isObjectLiteralExpression(node.arguments[1])) {
|
---|
| 40 | literal = node.arguments[1];
|
---|
| 41 | }
|
---|
| 42 | else if (ts.isIdentifier(node.arguments[1])) {
|
---|
| 43 | literal = this.getLiteralNeedingMigrationFromIdentifier(node.arguments[1]);
|
---|
| 44 | }
|
---|
| 45 | }
|
---|
| 46 | else if (ts.isVariableDeclaration(node)) {
|
---|
| 47 | literal = this.getLiteralNeedingMigration(node);
|
---|
| 48 | }
|
---|
| 49 | if (literal !== null) {
|
---|
| 50 | this.extraOptionsLiterals.push(literal);
|
---|
| 51 | }
|
---|
| 52 | else if (forRootCall !== null) {
|
---|
| 53 | this.forRootCalls.push(forRootCall);
|
---|
| 54 | }
|
---|
| 55 | else {
|
---|
| 56 | // no match found, continue iteration
|
---|
| 57 | ts.forEachChild(node, n => this.visitNode(n));
|
---|
| 58 | }
|
---|
| 59 | }
|
---|
| 60 | getLiteralNeedingMigrationFromIdentifier(id) {
|
---|
| 61 | const symbolForIdentifier = this.typeChecker.getSymbolAtLocation(id);
|
---|
| 62 | if (symbolForIdentifier === undefined) {
|
---|
| 63 | return null;
|
---|
| 64 | }
|
---|
| 65 | if (symbolForIdentifier.declarations === undefined ||
|
---|
| 66 | symbolForIdentifier.declarations.length === 0) {
|
---|
| 67 | return null;
|
---|
| 68 | }
|
---|
| 69 | const declarationNode = symbolForIdentifier.declarations[0];
|
---|
| 70 | if (!ts.isVariableDeclaration(declarationNode) || declarationNode.initializer === undefined ||
|
---|
| 71 | !ts.isObjectLiteralExpression(declarationNode.initializer)) {
|
---|
| 72 | return null;
|
---|
| 73 | }
|
---|
| 74 | return declarationNode.initializer;
|
---|
| 75 | }
|
---|
| 76 | getLiteralNeedingMigration(node) {
|
---|
| 77 | if (node.initializer === undefined) {
|
---|
| 78 | return null;
|
---|
| 79 | }
|
---|
| 80 | // declaration could be `x: ExtraOptions = {}` or `x = {} as ExtraOptions`
|
---|
| 81 | if (ts.isAsExpression(node.initializer) &&
|
---|
| 82 | ts.isObjectLiteralExpression(node.initializer.expression) &&
|
---|
| 83 | util_1.isExtraOptions(this.typeChecker, node.initializer.type)) {
|
---|
| 84 | return node.initializer.expression;
|
---|
| 85 | }
|
---|
| 86 | else if (node.type !== undefined && ts.isObjectLiteralExpression(node.initializer) &&
|
---|
| 87 | util_1.isExtraOptions(this.typeChecker, node.type)) {
|
---|
| 88 | return node.initializer;
|
---|
| 89 | }
|
---|
| 90 | return null;
|
---|
| 91 | }
|
---|
| 92 | }
|
---|
| 93 | exports.RelativeLinkResolutionCollector = RelativeLinkResolutionCollector;
|
---|
| 94 | });
|
---|
| 95 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zY2hlbWF0aWNzL21pZ3JhdGlvbnMvcmVsYXRpdmUtbGluay1yZXNvbHV0aW9uL2NvbGxlY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFBQTs7Ozs7O09BTUc7SUFDSCxpQ0FBaUM7SUFFakMsNEZBQTZEO0lBRzdEOzs7T0FHRztJQUNILE1BQWEsK0JBQStCO1FBSTFDLFlBQTZCLFdBQTJCO1lBQTNCLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtZQUgvQyxpQkFBWSxHQUF3QixFQUFFLENBQUM7WUFDdkMseUJBQW9CLEdBQWlDLEVBQUUsQ0FBQztRQUVOLENBQUM7UUFFNUQsU0FBUyxDQUFDLElBQWE7WUFDckIsSUFBSSxXQUFXLEdBQTJCLElBQUksQ0FBQztZQUMvQyxJQUFJLE9BQU8sR0FBb0MsSUFBSSxDQUFDO1lBQ3BELElBQUksNEJBQXFCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzlFLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO29CQUMvQixXQUFXLEdBQUcsSUFBSSxDQUFDO2lCQUNwQjtxQkFBTSxJQUFJLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQzFELE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBK0IsQ0FBQztpQkFDM0Q7cUJBQU0sSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDN0MsT0FBTyxHQUFHLElBQUksQ0FBQyx3Q0FBd0MsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBa0IsQ0FBQyxDQUFDO2lCQUM3RjthQUNGO2lCQUFNLElBQUksRUFBRSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN6QyxPQUFPLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2pEO1lBRUQsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFO2dCQUNwQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3pDO2lCQUFNLElBQUksV0FBVyxLQUFLLElBQUksRUFBRTtnQkFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDckM7aUJBQU07Z0JBQ0wscUNBQXFDO2dCQUNyQyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMvQztRQUNILENBQUM7UUFFTyx3Q0FBd0MsQ0FBQyxFQUFpQjtZQUVoRSxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDckUsSUFBSSxtQkFBbUIsS0FBSyxTQUFTLEVBQUU7Z0JBQ3JDLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFFRCxJQUFJLG1CQUFtQixDQUFDLFlBQVksS0FBSyxTQUFTO2dCQUM5QyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDakQsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELE1BQU0sZUFBZSxHQUFHLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxXQUFXLEtBQUssU0FBUztnQkFDdkYsQ0FBQyxFQUFFLENBQUMseUJBQXlCLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUM5RCxPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQsT0FBTyxlQUFlLENBQUMsV0FBVyxDQUFDO1FBQ3JDLENBQUM7UUFFTywwQkFBMEIsQ0FBQyxJQUE0QjtZQUU3RCxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssU0FBUyxFQUFFO2dCQUNsQyxPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQsMEVBQTBFO1lBQzFFLElBQUksRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2dCQUNuQyxFQUFFLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7Z0JBQ3pELHFCQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUMzRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO2FBQ3BDO2lCQUFNLElBQ0gsSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksRUFBRSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQ3pFLHFCQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQy9DLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUN6QjtZQUVELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztLQUNGO0lBdkVELDBFQXVFQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7aXNFeHRyYU9wdGlvbnMsIGlzUm91dGVyTW9kdWxlRm9yUm9vdH0gZnJvbSAnLi91dGlsJztcblxuXG4vKipcbiAqIFZpc2l0b3IgdGhhdCB3YWxrcyB0aHJvdWdoIHNwZWNpZmllZCBUeXBlU2NyaXB0IG5vZGVzIGFuZCBjb2xsZWN0cyBhbGxcbiAqIGZvdW5kIEV4dHJhT3B0aW9ucyNSZWxhdGl2ZUxpbmtSZXNvbHV0aW9uIGFzc2lnbm1lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgUmVsYXRpdmVMaW5rUmVzb2x1dGlvbkNvbGxlY3RvciB7XG4gIHJlYWRvbmx5IGZvclJvb3RDYWxsczogdHMuQ2FsbEV4cHJlc3Npb25bXSA9IFtdO1xuICByZWFkb25seSBleHRyYU9wdGlvbnNMaXRlcmFsczogdHMuT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgdHlwZUNoZWNrZXI6IHRzLlR5cGVDaGVja2VyKSB7fVxuXG4gIHZpc2l0Tm9kZShub2RlOiB0cy5Ob2RlKSB7XG4gICAgbGV0IGZvclJvb3RDYWxsOiB0cy5DYWxsRXhwcmVzc2lvbnxudWxsID0gbnVsbDtcbiAgICBsZXQgbGl0ZXJhbDogdHMuT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb258bnVsbCA9IG51bGw7XG4gICAgaWYgKGlzUm91dGVyTW9kdWxlRm9yUm9vdCh0aGlzLnR5cGVDaGVja2VyLCBub2RlKSAmJiBub2RlLmFyZ3VtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAobm9kZS5hcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGZvclJvb3RDYWxsID0gbm9kZTtcbiAgICAgIH0gZWxzZSBpZiAodHMuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihub2RlLmFyZ3VtZW50c1sxXSkpIHtcbiAgICAgICAgbGl0ZXJhbCA9IG5vZGUuYXJndW1lbnRzWzFdIGFzIHRzLk9iamVjdExpdGVyYWxFeHByZXNzaW9uO1xuICAgICAgfSBlbHNlIGlmICh0cy5pc0lkZW50aWZpZXIobm9kZS5hcmd1bWVudHNbMV0pKSB7XG4gICAgICAgIGxpdGVyYWwgPSB0aGlzLmdldExpdGVyYWxOZWVkaW5nTWlncmF0aW9uRnJvbUlkZW50aWZpZXIobm9kZS5hcmd1bWVudHNbMV0gYXMgdHMuSWRlbnRpZmllcik7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0cy5pc1ZhcmlhYmxlRGVjbGFyYXRpb24obm9kZSkpIHtcbiAgICAgIGxpdGVyYWwgPSB0aGlzLmdldExpdGVyYWxOZWVkaW5nTWlncmF0aW9uKG5vZGUpO1xuICAgIH1cblxuICAgIGlmIChsaXRlcmFsICE9PSBudWxsKSB7XG4gICAgICB0aGlzLmV4dHJhT3B0aW9uc0xpdGVyYWxzLnB1c2gobGl0ZXJhbCk7XG4gICAgfSBlbHNlIGlmIChmb3JSb290Q2FsbCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5mb3JSb290Q2FsbHMucHVzaChmb3JSb290Q2FsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG5vIG1hdGNoIGZvdW5kLCBjb250aW51ZSBpdGVyYXRpb25cbiAgICAgIHRzLmZvckVhY2hDaGlsZChub2RlLCBuID0+IHRoaXMudmlzaXROb2RlKG4pKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldExpdGVyYWxOZWVkaW5nTWlncmF0aW9uRnJvbUlkZW50aWZpZXIoaWQ6IHRzLklkZW50aWZpZXIpOiB0cy5PYmplY3RMaXRlcmFsRXhwcmVzc2lvblxuICAgICAgfG51bGwge1xuICAgIGNvbnN0IHN5bWJvbEZvcklkZW50aWZpZXIgPSB0aGlzLnR5cGVDaGVja2VyLmdldFN5bWJvbEF0TG9jYXRpb24oaWQpO1xuICAgIGlmIChzeW1ib2xGb3JJZGVudGlmaWVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChzeW1ib2xGb3JJZGVudGlmaWVyLmRlY2xhcmF0aW9ucyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgIHN5bWJvbEZvcklkZW50aWZpZXIuZGVjbGFyYXRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgZGVjbGFyYXRpb25Ob2RlID0gc3ltYm9sRm9ySWRlbnRpZmllci5kZWNsYXJhdGlvbnNbMF07XG4gICAgaWYgKCF0cy5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oZGVjbGFyYXRpb25Ob2RlKSB8fCBkZWNsYXJhdGlvbk5vZGUuaW5pdGlhbGl6ZXIgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAhdHMuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihkZWNsYXJhdGlvbk5vZGUuaW5pdGlhbGl6ZXIpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVjbGFyYXRpb25Ob2RlLmluaXRpYWxpemVyO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMaXRlcmFsTmVlZGluZ01pZ3JhdGlvbihub2RlOiB0cy5WYXJpYWJsZURlY2xhcmF0aW9uKTogdHMuT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb25cbiAgICAgIHxudWxsIHtcbiAgICBpZiAobm9kZS5pbml0aWFsaXplciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBkZWNsYXJhdGlvbiBjb3VsZCBiZSBgeDogRXh0cmFPcHRpb25zID0ge31gIG9yIGB4ID0ge30gYXMgRXh0cmFPcHRpb25zYFxuICAgIGlmICh0cy5pc0FzRXhwcmVzc2lvbihub2RlLmluaXRpYWxpemVyKSAmJlxuICAgICAgICB0cy5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKG5vZGUuaW5pdGlhbGl6ZXIuZXhwcmVzc2lvbikgJiZcbiAgICAgICAgaXNFeHRyYU9wdGlvbnModGhpcy50eXBlQ2hlY2tlciwgbm9kZS5pbml0aWFsaXplci50eXBlKSkge1xuICAgICAgcmV0dXJuIG5vZGUuaW5pdGlhbGl6ZXIuZXhwcmVzc2lvbjtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgICBub2RlLnR5cGUgIT09IHVuZGVmaW5lZCAmJiB0cy5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKG5vZGUuaW5pdGlhbGl6ZXIpICYmXG4gICAgICAgIGlzRXh0cmFPcHRpb25zKHRoaXMudHlwZUNoZWNrZXIsIG5vZGUudHlwZSkpIHtcbiAgICAgIHJldHVybiBub2RlLmluaXRpYWxpemVyO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0= |
---|