@angular/core 13.0.0-rc.0 → 13.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core.d.ts +224 -221
- package/esm2020/index.mjs +6 -5
- package/esm2020/src/application_module.mjs +2 -7
- package/esm2020/src/core_render3_private_export.mjs +2 -1
- package/esm2020/src/linker/component_factory_resolver.mjs +5 -5
- package/esm2020/src/linker/ng_module_factory.mjs +1 -1
- package/esm2020/src/render3/definition.mjs +2 -5
- package/esm2020/src/render3/di.mjs +3 -3
- package/esm2020/src/render3/error_code.mjs +2 -5
- package/esm2020/src/render3/error_details_base_url.mjs +16 -0
- package/esm2020/src/render3/fields.mjs +1 -2
- package/esm2020/src/render3/ng_module_ref.mjs +2 -5
- package/esm2020/src/render3/util/global_utils.mjs +2 -3
- package/esm2020/src/version.mjs +1 -1
- package/esm2020/testing/src/logger.mjs +3 -3
- package/esm2020/testing/src/ng_zone_mock.mjs +3 -3
- package/esm2020/testing/src/test_compiler.mjs +3 -3
- package/fesm2015/core.mjs +26 -25
- package/fesm2015/core.mjs.map +1 -1
- package/fesm2015/testing.mjs +4 -4
- package/fesm2020/core.mjs +26 -25
- package/fesm2020/core.mjs.map +1 -1
- package/fesm2020/testing.mjs +4 -4
- package/package.json +1 -1
- package/schematics/migrations/router-link-empty-expression/index.js +2 -2
- package/schematics/migrations.json +0 -100
- package/schematics/utils/ng_component_template.d.ts +4 -1
- package/schematics/utils/ng_component_template.js +28 -14
- package/testing/testing.d.ts +1 -1
- package/schematics/migrations/abstract-control-parent/index.d.ts +0 -11
- package/schematics/migrations/abstract-control-parent/index.js +0 -69
- package/schematics/migrations/abstract-control-parent/util.d.ts +0 -14
- package/schematics/migrations/abstract-control-parent/util.js +0 -67
- package/schematics/migrations/activated-route-snapshot-fragment/index.d.ts +0 -13
- package/schematics/migrations/activated-route-snapshot-fragment/index.js +0 -73
- package/schematics/migrations/activated-route-snapshot-fragment/util.d.ts +0 -16
- package/schematics/migrations/activated-route-snapshot-fragment/util.js +0 -51
- package/schematics/migrations/can-activate-with-redirect-to/index.d.ts +0 -11
- package/schematics/migrations/can-activate-with-redirect-to/index.js +0 -69
- package/schematics/migrations/can-activate-with-redirect-to/util.d.ts +0 -11
- package/schematics/migrations/can-activate-with-redirect-to/util.js +0 -73
- package/schematics/migrations/deep-shadow-piercing-selector/index.d.ts +0 -10
- package/schematics/migrations/deep-shadow-piercing-selector/index.js +0 -49
- package/schematics/migrations/dynamic-queries/index.d.ts +0 -13
- package/schematics/migrations/dynamic-queries/index.js +0 -76
- package/schematics/migrations/dynamic-queries/util.d.ts +0 -25
- package/schematics/migrations/dynamic-queries/util.js +0 -84
- package/schematics/migrations/initial-navigation/collector.d.ts +0 -22
- package/schematics/migrations/initial-navigation/collector.js +0 -122
- package/schematics/migrations/initial-navigation/index.d.ts +0 -11
- package/schematics/migrations/initial-navigation/index.js +0 -83
- package/schematics/migrations/initial-navigation/transform.d.ts +0 -20
- package/schematics/migrations/initial-navigation/transform.js +0 -71
- package/schematics/migrations/initial-navigation/update_recorder.d.ts +0 -18
- package/schematics/migrations/initial-navigation/update_recorder.js +0 -20
- package/schematics/migrations/initial-navigation/util.d.ts +0 -12
- package/schematics/migrations/initial-navigation/util.js +0 -46
- package/schematics/migrations/missing-injectable/definition_collector.d.ts +0 -37
- package/schematics/migrations/missing-injectable/definition_collector.js +0 -92
- package/schematics/migrations/missing-injectable/index.d.ts +0 -11
- package/schematics/migrations/missing-injectable/index.js +0 -136
- package/schematics/migrations/missing-injectable/providers_evaluator.d.ts +0 -26
- package/schematics/migrations/missing-injectable/providers_evaluator.js +0 -71
- package/schematics/migrations/missing-injectable/transform.d.ts +0 -70
- package/schematics/migrations/missing-injectable/transform.js +0 -203
- package/schematics/migrations/missing-injectable/update_recorder.d.ts +0 -21
- package/schematics/migrations/missing-injectable/update_recorder.js +0 -20
- package/schematics/migrations/module-with-providers/collector.d.ts +0 -34
- package/schematics/migrations/module-with-providers/collector.js +0 -76
- package/schematics/migrations/module-with-providers/index.d.ts +0 -13
- package/schematics/migrations/module-with-providers/index.js +0 -107
- package/schematics/migrations/module-with-providers/transform.d.ts +0 -50
- package/schematics/migrations/module-with-providers/transform.js +0 -149
- package/schematics/migrations/module-with-providers/util.d.ts +0 -13
- package/schematics/migrations/module-with-providers/util.js +0 -43
- package/schematics/migrations/move-document/document_import_visitor.d.ts +0 -27
- package/schematics/migrations/move-document/document_import_visitor.js +0 -77
- package/schematics/migrations/move-document/index.d.ts +0 -11
- package/schematics/migrations/move-document/index.js +0 -93
- package/schematics/migrations/move-document/move-import.d.ts +0 -12
- package/schematics/migrations/move-document/move-import.js +0 -64
- package/schematics/migrations/native-view-encapsulation/index.d.ts +0 -11
- package/schematics/migrations/native-view-encapsulation/index.js +0 -63
- package/schematics/migrations/native-view-encapsulation/util.d.ts +0 -11
- package/schematics/migrations/native-view-encapsulation/util.js +0 -51
- package/schematics/migrations/navigation-extras-omissions/index.d.ts +0 -11
- package/schematics/migrations/navigation-extras-omissions/index.js +0 -72
- package/schematics/migrations/navigation-extras-omissions/util.d.ts +0 -11
- package/schematics/migrations/navigation-extras-omissions/util.js +0 -129
- package/schematics/migrations/relative-link-resolution/collector.d.ts +0 -22
- package/schematics/migrations/relative-link-resolution/collector.js +0 -98
- package/schematics/migrations/relative-link-resolution/index.d.ts +0 -11
- package/schematics/migrations/relative-link-resolution/index.js +0 -84
- package/schematics/migrations/relative-link-resolution/transform.d.ts +0 -22
- package/schematics/migrations/relative-link-resolution/transform.js +0 -68
- package/schematics/migrations/relative-link-resolution/update_recorder.d.ts +0 -18
- package/schematics/migrations/relative-link-resolution/update_recorder.js +0 -20
- package/schematics/migrations/relative-link-resolution/util.d.ts +0 -12
- package/schematics/migrations/relative-link-resolution/util.js +0 -46
- package/schematics/migrations/renderer-to-renderer2/helpers.d.ts +0 -25
- package/schematics/migrations/renderer-to-renderer2/helpers.js +0 -241
- package/schematics/migrations/renderer-to-renderer2/index.d.ts +0 -14
- package/schematics/migrations/renderer-to-renderer2/index.js +0 -138
- package/schematics/migrations/renderer-to-renderer2/migration.d.ts +0 -18
- package/schematics/migrations/renderer-to-renderer2/migration.js +0 -228
- package/schematics/migrations/renderer-to-renderer2/util.d.ts +0 -18
- package/schematics/migrations/renderer-to-renderer2/util.js +0 -86
- package/schematics/migrations/router-preserve-query-params/index.d.ts +0 -14
- package/schematics/migrations/router-preserve-query-params/index.js +0 -75
- package/schematics/migrations/router-preserve-query-params/util.d.ts +0 -11
- package/schematics/migrations/router-preserve-query-params/util.js +0 -106
- package/schematics/migrations/static-queries/angular/directive_inputs.d.ts +0 -11
- package/schematics/migrations/static-queries/angular/directive_inputs.js +0 -87
- package/schematics/migrations/static-queries/angular/ng_query_visitor.d.ts +0 -45
- package/schematics/migrations/static-queries/angular/ng_query_visitor.js +0 -130
- package/schematics/migrations/static-queries/angular/query-definition.d.ts +0 -37
- package/schematics/migrations/static-queries/angular/query-definition.js +0 -33
- package/schematics/migrations/static-queries/angular/super_class.d.ts +0 -15
- package/schematics/migrations/static-queries/angular/super_class.js +0 -35
- package/schematics/migrations/static-queries/index.d.ts +0 -11
- package/schematics/migrations/static-queries/index.js +0 -244
- package/schematics/migrations/static-queries/strategies/template_strategy/template_strategy.d.ts +0 -41
- package/schematics/migrations/static-queries/strategies/template_strategy/template_strategy.js +0 -210
- package/schematics/migrations/static-queries/strategies/test_strategy/test_strategy.d.ts +0 -24
- package/schematics/migrations/static-queries/strategies/test_strategy/test_strategy.js +0 -38
- package/schematics/migrations/static-queries/strategies/timing-strategy.d.ts +0 -19
- package/schematics/migrations/static-queries/strategies/timing-strategy.js +0 -20
- package/schematics/migrations/static-queries/strategies/usage_strategy/declaration_usage_visitor.d.ts +0 -82
- package/schematics/migrations/static-queries/strategies/usage_strategy/declaration_usage_visitor.js +0 -372
- package/schematics/migrations/static-queries/strategies/usage_strategy/super_class_context.d.ts +0 -18
- package/schematics/migrations/static-queries/strategies/usage_strategy/super_class_context.js +0 -55
- package/schematics/migrations/static-queries/strategies/usage_strategy/template_usage_visitor.d.ts +0 -27
- package/schematics/migrations/static-queries/strategies/usage_strategy/template_usage_visitor.js +0 -93
- package/schematics/migrations/static-queries/strategies/usage_strategy/usage_strategy.d.ts +0 -34
- package/schematics/migrations/static-queries/strategies/usage_strategy/usage_strategy.js +0 -172
- package/schematics/migrations/static-queries/transform.d.ts +0 -21
- package/schematics/migrations/static-queries/transform.js +0 -105
- package/schematics/migrations/template-var-assignment/analyze_template.d.ts +0 -20
- package/schematics/migrations/template-var-assignment/analyze_template.js +0 -38
- package/schematics/migrations/template-var-assignment/angular/html_variable_assignment_visitor.d.ts +0 -28
- package/schematics/migrations/template-var-assignment/angular/html_variable_assignment_visitor.js +0 -80
- package/schematics/migrations/template-var-assignment/index.d.ts +0 -11
- package/schematics/migrations/template-var-assignment/index.js +0 -101
- package/schematics/migrations/undecorated-classes-with-decorated-fields/index.d.ts +0 -14
- package/schematics/migrations/undecorated-classes-with-decorated-fields/index.js +0 -128
- package/schematics/migrations/undecorated-classes-with-decorated-fields/transform.d.ts +0 -64
- package/schematics/migrations/undecorated-classes-with-decorated-fields/transform.js +0 -302
- package/schematics/migrations/undecorated-classes-with-decorated-fields/update_recorder.d.ts +0 -19
- package/schematics/migrations/undecorated-classes-with-decorated-fields/update_recorder.js +0 -20
- package/schematics/migrations/undecorated-classes-with-di/create_ngc_program.d.ts +0 -18
- package/schematics/migrations/undecorated-classes-with-di/create_ngc_program.js +0 -56
- package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/convert_directive_metadata.d.ts +0 -18
- package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/convert_directive_metadata.js +0 -99
- package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/decorator_rewriter.d.ts +0 -37
- package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/decorator_rewriter.js +0 -118
- package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/import_rewrite_visitor.d.ts +0 -37
- package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/import_rewrite_visitor.js +0 -129
- package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/path_format.d.ts +0 -10
- package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/path_format.js +0 -31
- package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/source_file_exports.d.ts +0 -16
- package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/source_file_exports.js +0 -68
- package/schematics/migrations/undecorated-classes-with-di/index.d.ts +0 -11
- package/schematics/migrations/undecorated-classes-with-di/index.js +0 -226
- package/schematics/migrations/undecorated-classes-with-di/ng_declaration_collector.d.ts +0 -38
- package/schematics/migrations/undecorated-classes-with-di/ng_declaration_collector.js +0 -135
- package/schematics/migrations/undecorated-classes-with-di/transform.d.ts +0 -97
- package/schematics/migrations/undecorated-classes-with-di/transform.js +0 -373
- package/schematics/migrations/undecorated-classes-with-di/update_recorder.d.ts +0 -20
- package/schematics/migrations/undecorated-classes-with-di/update_recorder.js +0 -20
- package/schematics/migrations/wait-for-async/index.d.ts +0 -11
- package/schematics/migrations/wait-for-async/index.js +0 -101
- package/schematics/migrations/wait-for-async/util.d.ts +0 -11
- package/schematics/migrations/wait-for-async/util.js +0 -40
- package/schematics/migrations/xhr-factory/index.d.ts +0 -10
- package/schematics/migrations/xhr-factory/index.js +0 -107
|
@@ -1,226 +0,0 @@
|
|
|
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
|
-
var __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
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
18
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
19
|
-
};
|
|
20
|
-
(function (factory) {
|
|
21
|
-
if (typeof module === "object" && typeof module.exports === "object") {
|
|
22
|
-
var v = factory(require, exports);
|
|
23
|
-
if (v !== undefined) module.exports = v;
|
|
24
|
-
}
|
|
25
|
-
else if (typeof define === "function" && define.amd) {
|
|
26
|
-
define("@angular/core/schematics/migrations/undecorated-classes-with-di", ["require", "exports", "@angular-devkit/schematics", "path", "typescript", "@angular/core/schematics/utils/load_esm", "@angular/core/schematics/utils/project_tsconfig_paths", "@angular/core/schematics/utils/typescript/compiler_host", "@angular/core/schematics/migrations/undecorated-classes-with-di/create_ngc_program", "@angular/core/schematics/migrations/undecorated-classes-with-di/ng_declaration_collector", "@angular/core/schematics/migrations/undecorated-classes-with-di/transform"], factory);
|
|
27
|
-
}
|
|
28
|
-
})(function (require, exports) {
|
|
29
|
-
"use strict";
|
|
30
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
-
const schematics_1 = require("@angular-devkit/schematics");
|
|
32
|
-
const path_1 = require("path");
|
|
33
|
-
const typescript_1 = __importDefault(require("typescript"));
|
|
34
|
-
const load_esm_1 = require("@angular/core/schematics/utils/load_esm");
|
|
35
|
-
const project_tsconfig_paths_1 = require("@angular/core/schematics/utils/project_tsconfig_paths");
|
|
36
|
-
const compiler_host_1 = require("@angular/core/schematics/utils/typescript/compiler_host");
|
|
37
|
-
const create_ngc_program_1 = require("@angular/core/schematics/migrations/undecorated-classes-with-di/create_ngc_program");
|
|
38
|
-
const ng_declaration_collector_1 = require("@angular/core/schematics/migrations/undecorated-classes-with-di/ng_declaration_collector");
|
|
39
|
-
const transform_1 = require("@angular/core/schematics/migrations/undecorated-classes-with-di/transform");
|
|
40
|
-
const MIGRATION_RERUN_MESSAGE = 'Migration can be rerun with: "ng update @angular/core ' +
|
|
41
|
-
'--migrate-only migration-v9-undecorated-classes-with-di"';
|
|
42
|
-
const MIGRATION_AOT_FAILURE = 'This migration uses the Angular compiler internally and ' +
|
|
43
|
-
'therefore projects that no longer build successfully after the update cannot run ' +
|
|
44
|
-
'the migration. Please ensure there are no AOT compilation errors and rerun the migration.';
|
|
45
|
-
/** Entry point for the V9 "undecorated-classes-with-di" migration. */
|
|
46
|
-
function default_1() {
|
|
47
|
-
return (tree, ctx) => __awaiter(this, void 0, void 0, function* () {
|
|
48
|
-
const { buildPaths } = yield (0, project_tsconfig_paths_1.getProjectTsConfigPaths)(tree);
|
|
49
|
-
const basePath = process.cwd();
|
|
50
|
-
const failures = [];
|
|
51
|
-
let programError = false;
|
|
52
|
-
if (!buildPaths.length) {
|
|
53
|
-
throw new schematics_1.SchematicsException('Could not find any tsconfig file. Cannot migrate undecorated derived classes and ' +
|
|
54
|
-
'undecorated base classes which use DI.');
|
|
55
|
-
}
|
|
56
|
-
let compilerModule;
|
|
57
|
-
try {
|
|
58
|
-
// Load ESM `@angular/compiler` using the TypeScript dynamic import workaround.
|
|
59
|
-
// Once TypeScript provides support for keeping the dynamic import this workaround can be
|
|
60
|
-
// changed to a direct dynamic import.
|
|
61
|
-
compilerModule = yield (0, load_esm_1.loadEsmModule)('@angular/compiler');
|
|
62
|
-
}
|
|
63
|
-
catch (e) {
|
|
64
|
-
throw new schematics_1.SchematicsException(`Unable to load the '@angular/compiler' package. Details: ${e.message}`);
|
|
65
|
-
}
|
|
66
|
-
let compilerCliModule;
|
|
67
|
-
try {
|
|
68
|
-
// Load ESM `@angular/compiler-cli` using the TypeScript dynamic import workaround.
|
|
69
|
-
// Once TypeScript provides support for keeping the dynamic import this workaround can be
|
|
70
|
-
// changed to a direct dynamic import.
|
|
71
|
-
compilerCliModule =
|
|
72
|
-
yield (0, load_esm_1.loadEsmModule)('@angular/compiler-cli');
|
|
73
|
-
}
|
|
74
|
-
catch (e) {
|
|
75
|
-
throw new schematics_1.SchematicsException(`Unable to load the '@angular/compiler-cli' package. Details: ${e.message}`);
|
|
76
|
-
}
|
|
77
|
-
let coreModule;
|
|
78
|
-
try {
|
|
79
|
-
// Load ESM `@angular/compiler-cli` using the TypeScript dynamic import workaround.
|
|
80
|
-
// Once TypeScript provides support for keeping the dynamic import this workaround can be
|
|
81
|
-
// changed to a direct dynamic import.
|
|
82
|
-
coreModule = yield (0, load_esm_1.loadEsmModule)('@angular/core');
|
|
83
|
-
}
|
|
84
|
-
catch (e) {
|
|
85
|
-
throw new schematics_1.SchematicsException(`Unable to load the '@angular/core' package. Details: ${e.message}`);
|
|
86
|
-
}
|
|
87
|
-
let compilerCliMigrationsModule;
|
|
88
|
-
try {
|
|
89
|
-
// Load ESM `@angular/compiler/private/migrations` using the TypeScript dynamic import
|
|
90
|
-
// workaround. Once TypeScript provides support for keeping the dynamic import this workaround
|
|
91
|
-
// can be changed to a direct dynamic import.
|
|
92
|
-
compilerCliMigrationsModule = yield (0, load_esm_1.loadCompilerCliMigrationsModule)();
|
|
93
|
-
}
|
|
94
|
-
catch (e) {
|
|
95
|
-
throw new schematics_1.SchematicsException(`Unable to load the '@angular/compiler-cli' package. Details: ${e.message}`);
|
|
96
|
-
}
|
|
97
|
-
for (const tsconfigPath of buildPaths) {
|
|
98
|
-
const result = runUndecoratedClassesMigration(tree, tsconfigPath, basePath, ctx.logger, compilerModule, compilerCliModule, compilerCliMigrationsModule, coreModule);
|
|
99
|
-
failures.push(...result.failures);
|
|
100
|
-
programError = programError || !!result.programError;
|
|
101
|
-
}
|
|
102
|
-
if (programError) {
|
|
103
|
-
ctx.logger.info('Could not migrate all undecorated classes that use dependency');
|
|
104
|
-
ctx.logger.info('injection. Some project targets could not be analyzed due to');
|
|
105
|
-
ctx.logger.info('TypeScript program failures.\n');
|
|
106
|
-
ctx.logger.info(`${MIGRATION_RERUN_MESSAGE}\n`);
|
|
107
|
-
if (failures.length) {
|
|
108
|
-
ctx.logger.info('Please manually fix the following failures and re-run the');
|
|
109
|
-
ctx.logger.info('migration once the TypeScript program failures are resolved.');
|
|
110
|
-
failures.forEach(message => ctx.logger.warn(`⮑ ${message}`));
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
else if (failures.length) {
|
|
114
|
-
ctx.logger.info('Could not migrate all undecorated classes that use dependency');
|
|
115
|
-
ctx.logger.info('injection. Please manually fix the following failures:');
|
|
116
|
-
failures.forEach(message => ctx.logger.warn(`⮑ ${message}`));
|
|
117
|
-
}
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
exports.default = default_1;
|
|
121
|
-
function runUndecoratedClassesMigration(tree, tsconfigPath, basePath, logger, compilerModule, compilerCliModule, compilerCliMigrationsModule, coreModule) {
|
|
122
|
-
const failures = [];
|
|
123
|
-
const programData = gracefullyCreateProgram(tree, basePath, tsconfigPath, logger, compilerCliModule);
|
|
124
|
-
// Gracefully exit if the program could not be created.
|
|
125
|
-
if (programData === null) {
|
|
126
|
-
return { failures: [], programError: true };
|
|
127
|
-
}
|
|
128
|
-
const { program, compiler } = programData;
|
|
129
|
-
const typeChecker = program.getTypeChecker();
|
|
130
|
-
const declarationCollector = new ng_declaration_collector_1.NgDeclarationCollector(typeChecker, compilerCliMigrationsModule);
|
|
131
|
-
const sourceFiles = program.getSourceFiles().filter(sourceFile => (0, compiler_host_1.canMigrateFile)(basePath, sourceFile, program));
|
|
132
|
-
// Analyze source files by detecting all directives, components and providers.
|
|
133
|
-
sourceFiles.forEach(sourceFile => declarationCollector.visitNode(sourceFile));
|
|
134
|
-
const { decoratedDirectives, decoratedProviders, undecoratedDeclarations } = declarationCollector;
|
|
135
|
-
const transform = new transform_1.UndecoratedClassesTransform(typeChecker, compiler, getUpdateRecorder, compilerModule, coreModule);
|
|
136
|
-
const updateRecorders = new Map();
|
|
137
|
-
// Run the migrations for decorated providers and both decorated and undecorated
|
|
138
|
-
// directives. The transform failures are collected and converted into human-readable
|
|
139
|
-
// failures which can be printed to the console.
|
|
140
|
-
[...transform.migrateDecoratedDirectives(decoratedDirectives),
|
|
141
|
-
...transform.migrateDecoratedProviders(decoratedProviders),
|
|
142
|
-
...transform.migrateUndecoratedDeclarations(Array.from(undecoratedDeclarations))]
|
|
143
|
-
.forEach(({ node, message }) => {
|
|
144
|
-
const nodeSourceFile = node.getSourceFile();
|
|
145
|
-
const relativeFilePath = (0, path_1.relative)(basePath, nodeSourceFile.fileName);
|
|
146
|
-
const { line, character } = typescript_1.default.getLineAndCharacterOfPosition(node.getSourceFile(), node.getStart());
|
|
147
|
-
failures.push(`${relativeFilePath}@${line + 1}:${character + 1}: ${message}`);
|
|
148
|
-
});
|
|
149
|
-
// Record the changes collected in the import manager and transformer.
|
|
150
|
-
transform.recordChanges();
|
|
151
|
-
// Walk through each update recorder and commit the update. We need to commit the
|
|
152
|
-
// updates in batches per source file as there can be only one recorder per source
|
|
153
|
-
// file in order to avoid shifted character offsets.
|
|
154
|
-
updateRecorders.forEach(recorder => recorder.commitUpdate());
|
|
155
|
-
return { failures };
|
|
156
|
-
/** Gets the update recorder for the specified source file. */
|
|
157
|
-
function getUpdateRecorder(sourceFile) {
|
|
158
|
-
if (updateRecorders.has(sourceFile)) {
|
|
159
|
-
return updateRecorders.get(sourceFile);
|
|
160
|
-
}
|
|
161
|
-
const treeRecorder = tree.beginUpdate((0, path_1.relative)(basePath, sourceFile.fileName));
|
|
162
|
-
const recorder = {
|
|
163
|
-
addClassComment(node, text) {
|
|
164
|
-
treeRecorder.insertLeft(node.members.pos, `\n // ${text}\n`);
|
|
165
|
-
},
|
|
166
|
-
addClassDecorator(node, text) {
|
|
167
|
-
// New imports should be inserted at the left while decorators should be inserted
|
|
168
|
-
// at the right in order to ensure that imports are inserted before the decorator
|
|
169
|
-
// if the start position of import and decorator is the source file start.
|
|
170
|
-
treeRecorder.insertRight(node.getStart(), `${text}\n`);
|
|
171
|
-
},
|
|
172
|
-
addNewImport(start, importText) {
|
|
173
|
-
// New imports should be inserted at the left while decorators should be inserted
|
|
174
|
-
// at the right in order to ensure that imports are inserted before the decorator
|
|
175
|
-
// if the start position of import and decorator is the source file start.
|
|
176
|
-
treeRecorder.insertLeft(start, importText);
|
|
177
|
-
},
|
|
178
|
-
updateExistingImport(namedBindings, newNamedBindings) {
|
|
179
|
-
treeRecorder.remove(namedBindings.getStart(), namedBindings.getWidth());
|
|
180
|
-
treeRecorder.insertRight(namedBindings.getStart(), newNamedBindings);
|
|
181
|
-
},
|
|
182
|
-
commitUpdate() {
|
|
183
|
-
tree.commitUpdate(treeRecorder);
|
|
184
|
-
}
|
|
185
|
-
};
|
|
186
|
-
updateRecorders.set(sourceFile, recorder);
|
|
187
|
-
return recorder;
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
function getErrorDiagnostics(diagnostics) {
|
|
191
|
-
return diagnostics.filter(d => d.category === typescript_1.default.DiagnosticCategory.Error);
|
|
192
|
-
}
|
|
193
|
-
function gracefullyCreateProgram(tree, basePath, tsconfigPath, logger, compilerCliModule) {
|
|
194
|
-
try {
|
|
195
|
-
const { ngcProgram, host, program, compiler } = (0, create_ngc_program_1.createNgcProgram)(compilerCliModule, (options) => (0, compiler_host_1.createMigrationCompilerHost)(tree, options, basePath), tsconfigPath);
|
|
196
|
-
const syntacticDiagnostics = getErrorDiagnostics(ngcProgram.getTsSyntacticDiagnostics());
|
|
197
|
-
const structuralDiagnostics = getErrorDiagnostics(ngcProgram.getNgStructuralDiagnostics());
|
|
198
|
-
const configDiagnostics = getErrorDiagnostics([...program.getOptionsDiagnostics(), ...ngcProgram.getNgOptionDiagnostics()]);
|
|
199
|
-
if (configDiagnostics.length) {
|
|
200
|
-
logger.warn(`\nTypeScript project "${tsconfigPath}" has configuration errors. This could cause ` +
|
|
201
|
-
`an incomplete migration. Please fix the following failures and rerun the migration:`);
|
|
202
|
-
logger.error(typescript_1.default.formatDiagnostics(configDiagnostics, host));
|
|
203
|
-
return null;
|
|
204
|
-
}
|
|
205
|
-
// Syntactic TypeScript errors can throw off the query analysis and therefore we want
|
|
206
|
-
// to notify the developer that we couldn't analyze parts of the project. Developers
|
|
207
|
-
// can just re-run the migration after fixing these failures.
|
|
208
|
-
if (syntacticDiagnostics.length) {
|
|
209
|
-
logger.warn(`\nTypeScript project "${tsconfigPath}" has syntactical errors which could cause ` +
|
|
210
|
-
`an incomplete migration. Please fix the following failures and rerun the migration:`);
|
|
211
|
-
logger.error(typescript_1.default.formatDiagnostics(syntacticDiagnostics, host));
|
|
212
|
-
return null;
|
|
213
|
-
}
|
|
214
|
-
if (structuralDiagnostics.length) {
|
|
215
|
-
throw new Error(typescript_1.default.formatDiagnostics(structuralDiagnostics, host));
|
|
216
|
-
}
|
|
217
|
-
return { program, compiler };
|
|
218
|
-
}
|
|
219
|
-
catch (e) {
|
|
220
|
-
logger.warn(`\n${MIGRATION_AOT_FAILURE} The following project failed: ${tsconfigPath}\n`);
|
|
221
|
-
logger.error(`${e.toString()}\n`);
|
|
222
|
-
return null;
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
});
|
|
226
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NjaGVtYXRpY3MvbWlncmF0aW9ucy91bmRlY29yYXRlZC1jbGFzc2VzLXdpdGgtZGkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFHSCwyREFBNkY7SUFHN0YsK0JBQThCO0lBQzlCLDREQUE0QjtJQUU1QixzRUFBb0Y7SUFDcEYsa0dBQTJFO0lBQzNFLDJGQUFpRztJQUVqRywySEFBc0Q7SUFDdEQsdUlBQWtFO0lBQ2xFLHlHQUF3RDtJQUd4RCxNQUFNLHVCQUF1QixHQUFHLHdEQUF3RDtRQUNwRiwwREFBMEQsQ0FBQztJQUUvRCxNQUFNLHFCQUFxQixHQUFHLDBEQUEwRDtRQUNwRixtRkFBbUY7UUFDbkYsMkZBQTJGLENBQUM7SUFFaEcsc0VBQXNFO0lBQ3RFO1FBQ0UsT0FBTyxDQUFPLElBQVUsRUFBRSxHQUFxQixFQUFFLEVBQUU7WUFDakQsTUFBTSxFQUFDLFVBQVUsRUFBQyxHQUFHLE1BQU0sSUFBQSxnREFBdUIsRUFBQyxJQUFJLENBQUMsQ0FBQztZQUN6RCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDL0IsTUFBTSxRQUFRLEdBQWEsRUFBRSxDQUFDO1lBQzlCLElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQztZQUV6QixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtnQkFDdEIsTUFBTSxJQUFJLGdDQUFtQixDQUN6QixtRkFBbUY7b0JBQ25GLHdDQUF3QyxDQUFDLENBQUM7YUFDL0M7WUFFRCxJQUFJLGNBQWMsQ0FBQztZQUNuQixJQUFJO2dCQUNGLCtFQUErRTtnQkFDL0UseUZBQXlGO2dCQUN6RixzQ0FBc0M7Z0JBQ3RDLGNBQWMsR0FBRyxNQUFNLElBQUEsd0JBQWEsRUFBcUMsbUJBQW1C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QUMsSUFBSSxDQUNQLHlCQUF5QixZQUFZLCtDQUErQztvQkFDcEYscUZBQXFGLENBQUMsQ0FBQztnQkFDM0YsTUFBTSxDQUFDLEtBQUssQ0FBQyxvQkFBRSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzVELE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFFRCxxRkFBcUY7WUFDckYsb0ZBQW9GO1lBQ3BGLDZEQUE2RDtZQUM3RCxJQUFJLG9CQUFvQixDQUFDLE1BQU0sRUFBRTtnQkFDL0IsTUFBTSxDQUFDLElBQUksQ0FDUCx5QkFBeUIsWUFBWSw2Q0FBNkM7b0JBQ2xGLHFGQUFxRixDQUFDLENBQUM7Z0JBQzNGLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0JBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUMvRCxPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQsSUFBSSxxQkFBcUIsQ0FBQyxNQUFNLEVBQUU7Z0JBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQUUsQ0FBQyxpQkFBaUIsQ0FBa0IscUJBQXFCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUNyRjtZQUVELE9BQU8sRUFBQyxPQUFPLEVBQUUsUUFBUSxFQUFDLENBQUM7U0FDNUI7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxxQkFBcUIsa0NBQWtDLFlBQVksSUFBSSxDQUFDLENBQUM7WUFDMUYsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbEMsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtsb2dnaW5nfSBmcm9tICdAYW5ndWxhci1kZXZraXQvY29yZSc7XG5pbXBvcnQge1J1bGUsIFNjaGVtYXRpY0NvbnRleHQsIFNjaGVtYXRpY3NFeGNlcHRpb24sIFRyZWV9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9zY2hlbWF0aWNzJztcbmltcG9ydCB0eXBlIHtBb3RDb21waWxlcn0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0IHR5cGUge0RpYWdub3N0aWMgYXMgTmdEaWFnbm9zdGljfSBmcm9tICdAYW5ndWxhci9jb21waWxlci1jbGknO1xuaW1wb3J0IHtyZWxhdGl2ZX0gZnJvbSAncGF0aCc7XG5pbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7bG9hZENvbXBpbGVyQ2xpTWlncmF0aW9uc01vZHVsZSwgbG9hZEVzbU1vZHVsZX0gZnJvbSAnLi4vLi4vdXRpbHMvbG9hZF9lc20nO1xuaW1wb3J0IHtnZXRQcm9qZWN0VHNDb25maWdQYXRoc30gZnJvbSAnLi4vLi4vdXRpbHMvcHJvamVjdF90c2NvbmZpZ19wYXRocyc7XG5pbXBvcnQge2Nhbk1pZ3JhdGVGaWxlLCBjcmVhdGVNaWdyYXRpb25Db21waWxlckhvc3R9IGZyb20gJy4uLy4uL3V0aWxzL3R5cGVzY3JpcHQvY29tcGlsZXJfaG9zdCc7XG5cbmltcG9ydCB7Y3JlYXRlTmdjUHJvZ3JhbX0gZnJvbSAnLi9jcmVhdGVfbmdjX3Byb2dyYW0nO1xuaW1wb3J0IHtOZ0RlY2xhcmF0aW9uQ29sbGVjdG9yfSBmcm9tICcuL25nX2RlY2xhcmF0aW9uX2NvbGxlY3Rvcic7XG5pbXBvcnQge1VuZGVjb3JhdGVkQ2xhc3Nlc1RyYW5zZm9ybX0gZnJvbSAnLi90cmFuc2Zvcm0nO1xuaW1wb3J0IHtVcGRhdGVSZWNvcmRlcn0gZnJvbSAnLi91cGRhdGVfcmVjb3JkZXInO1xuXG5jb25zdCBNSUdSQVRJT05fUkVSVU5fTUVTU0FHRSA9ICdNaWdyYXRpb24gY2FuIGJlIHJlcnVuIHdpdGg6IFwibmcgdXBkYXRlIEBhbmd1bGFyL2NvcmUgJyArXG4gICAgJy0tbWlncmF0ZS1vbmx5IG1pZ3JhdGlvbi12OS11bmRlY29yYXRlZC1jbGFzc2VzLXdpdGgtZGlcIic7XG5cbmNvbnN0IE1JR1JBVElPTl9BT1RfRkFJTFVSRSA9ICdUaGlzIG1pZ3JhdGlvbiB1c2VzIHRoZSBBbmd1bGFyIGNvbXBpbGVyIGludGVybmFsbHkgYW5kICcgK1xuICAgICd0aGVyZWZvcmUgcHJvamVjdHMgdGhhdCBubyBsb25nZXIgYnVpbGQgc3VjY2Vzc2Z1bGx5IGFmdGVyIHRoZSB1cGRhdGUgY2Fubm90IHJ1biAnICtcbiAgICAndGhlIG1pZ3JhdGlvbi4gUGxlYXNlIGVuc3VyZSB0aGVyZSBhcmUgbm8gQU9UIGNvbXBpbGF0aW9uIGVycm9ycyBhbmQgcmVydW4gdGhlIG1pZ3JhdGlvbi4nO1xuXG4vKiogRW50cnkgcG9pbnQgZm9yIHRoZSBWOSBcInVuZGVjb3JhdGVkLWNsYXNzZXMtd2l0aC1kaVwiIG1pZ3JhdGlvbi4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCk6IFJ1bGUge1xuICByZXR1cm4gYXN5bmMgKHRyZWU6IFRyZWUsIGN0eDogU2NoZW1hdGljQ29udGV4dCkgPT4ge1xuICAgIGNvbnN0IHtidWlsZFBhdGhzfSA9IGF3YWl0IGdldFByb2plY3RUc0NvbmZpZ1BhdGhzKHRyZWUpO1xuICAgIGNvbnN0IGJhc2VQYXRoID0gcHJvY2Vzcy5jd2QoKTtcbiAgICBjb25zdCBmYWlsdXJlczogc3RyaW5nW10gPSBbXTtcbiAgICBsZXQgcHJvZ3JhbUVycm9yID0gZmFsc2U7XG5cbiAgICBpZiAoIWJ1aWxkUGF0aHMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgU2NoZW1hdGljc0V4Y2VwdGlvbihcbiAgICAgICAgICAnQ291bGQgbm90IGZpbmQgYW55IHRzY29uZmlnIGZpbGUuIENhbm5vdCBtaWdyYXRlIHVuZGVjb3JhdGVkIGRlcml2ZWQgY2xhc3NlcyBhbmQgJyArXG4gICAgICAgICAgJ3VuZGVjb3JhdGVkIGJhc2UgY2xhc3NlcyB3aGljaCB1c2UgREkuJyk7XG4gICAgfVxuXG4gICAgbGV0IGNvbXBpbGVyTW9kdWxlO1xuICAgIHRyeSB7XG4gICAgICAvLyBMb2FkIEVTTSBgQGFuZ3VsYXIvY29tcGlsZXJgIHVzaW5nIHRoZSBUeXBlU2NyaXB0IGR5bmFtaWMgaW1wb3J0IHdvcmthcm91bmQuXG4gICAgICAvLyBPbmNlIFR5cGVTY3JpcHQgcHJvdmlkZXMgc3VwcG9ydCBmb3Iga2VlcGluZyB0aGUgZHluYW1pYyBpbXBvcnQgdGhpcyB3b3JrYXJvdW5kIGNhbiBiZVxuICAgICAgLy8gY2hhbmdlZCB0byBhIGRpcmVjdCBkeW5hbWljIGltcG9ydC5cbiAgICAgIGNvbXBpbGVyTW9kdWxlID0gYXdhaXQgbG9hZEVzbU1vZHVsZTx0eXBlb2YgaW1wb3J0KCdAYW5ndWxhci9jb21waWxlcicpPignQGFuZ3VsYXIvY29tcGlsZXInKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgU2NoZW1hdGljc0V4Y2VwdGlvbihcbiAgICAgICAgICBgVW5hYmxlIHRvIGxvYWQgdGhlICdAYW5ndWxhci9jb21waWxlcicgcGFja2FnZS4gRGV0YWlsczogJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuXG4gICAgbGV0IGNvbXBpbGVyQ2xpTW9kdWxlO1xuICAgIHRyeSB7XG4gICAgICAvLyBMb2FkIEVTTSBgQGFuZ3VsYXIvY29tcGlsZXItY2xpYCB1c2luZyB0aGUgVHlwZVNjcmlwdCBkeW5hbWljIGltcG9ydCB3b3JrYXJvdW5kLlxuICAgICAgLy8gT25jZSBUeXBlU2NyaXB0IHByb3ZpZGVzIHN1cHBvcnQgZm9yIGtlZXBpbmcgdGhlIGR5bmFtaWMgaW1wb3J0IHRoaXMgd29ya2Fyb3VuZCBjYW4gYmVcbiAgICAgIC8vIGNoYW5nZWQgdG8gYSBkaXJlY3QgZHluYW1pYyBpbXBvcnQuXG4gICAgICBjb21waWxlckNsaU1vZHVsZSA9XG4gICAgICAgICAgYXdhaXQgbG9hZEVzbU1vZHVsZTx0eXBlb2YgaW1wb3J0KCdAYW5ndWxhci9jb21waWxlci1jbGknKT4oJ0Bhbmd1bGFyL2NvbXBpbGVyLWNsaScpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBTY2hlbWF0aWNzRXhjZXB0aW9uKFxuICAgICAgICAgIGBVbmFibGUgdG8gbG9hZCB0aGUgJ0Bhbmd1bGFyL2NvbXBpbGVyLWNsaScgcGFja2FnZS4gRGV0YWlsczogJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuXG4gICAgbGV0IGNvcmVNb2R1bGU7XG4gICAgdHJ5IHtcbiAgICAgIC8vIExvYWQgRVNNIGBAYW5ndWxhci9jb21waWxlci1jbGlgIHVzaW5nIHRoZSBUeXBlU2NyaXB0IGR5bmFtaWMgaW1wb3J0IHdvcmthcm91bmQuXG4gICAgICAvLyBPbmNlIFR5cGVTY3JpcHQgcHJvdmlkZXMgc3VwcG9ydCBmb3Iga2VlcGluZyB0aGUgZHluYW1pYyBpbXBvcnQgdGhpcyB3b3JrYXJvdW5kIGNhbiBiZVxuICAgICAgLy8gY2hhbmdlZCB0byBhIGRpcmVjdCBkeW5hbWljIGltcG9ydC5cbiAgICAgIGNvcmVNb2R1bGUgPSBhd2FpdCBsb2FkRXNtTW9kdWxlPHR5cGVvZiBpbXBvcnQoJ0Bhbmd1bGFyL2NvcmUnKT4oJ0Bhbmd1bGFyL2NvcmUnKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgU2NoZW1hdGljc0V4Y2VwdGlvbihcbiAgICAgICAgICBgVW5hYmxlIHRvIGxvYWQgdGhlICdAYW5ndWxhci9jb3JlJyBwYWNrYWdlLiBEZXRhaWxzOiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG5cbiAgICBsZXQgY29tcGlsZXJDbGlNaWdyYXRpb25zTW9kdWxlO1xuICAgIHRyeSB7XG4gICAgICAvLyBMb2FkIEVTTSBgQGFuZ3VsYXIvY29tcGlsZXIvcHJpdmF0ZS9taWdyYXRpb25zYCB1c2luZyB0aGUgVHlwZVNjcmlwdCBkeW5hbWljIGltcG9ydFxuICAgICAgLy8gd29ya2Fyb3VuZC4gT25jZSBUeXBlU2NyaXB0IHByb3ZpZGVzIHN1cHBvcnQgZm9yIGtlZXBpbmcgdGhlIGR5bmFtaWMgaW1wb3J0IHRoaXMgd29ya2Fyb3VuZFxuICAgICAgLy8gY2FuIGJlIGNoYW5nZWQgdG8gYSBkaXJlY3QgZHluYW1pYyBpbXBvcnQuXG4gICAgICBjb21waWxlckNsaU1pZ3JhdGlvbnNNb2R1bGUgPSBhd2FpdCBsb2FkQ29tcGlsZXJDbGlNaWdyYXRpb25zTW9kdWxlKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IFNjaGVtYXRpY3NFeGNlcHRpb24oXG4gICAgICAgICAgYFVuYWJsZSB0byBsb2FkIHRoZSAnQGFuZ3VsYXIvY29tcGlsZXItY2xpJyBwYWNrYWdlLiBEZXRhaWxzOiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHRzY29uZmlnUGF0aCBvZiBidWlsZFBhdGhzKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBydW5VbmRlY29yYXRlZENsYXNzZXNNaWdyYXRpb24oXG4gICAgICAgICAgdHJlZSwgdHNjb25maWdQYXRoLCBiYXNlUGF0aCwgY3R4LmxvZ2dlciwgY29tcGlsZXJNb2R1bGUsIGNvbXBpbGVyQ2xpTW9kdWxlLFxuICAgICAgICAgIGNvbXBpbGVyQ2xpTWlncmF0aW9uc01vZHVsZSwgY29yZU1vZHVsZSk7XG4gICAgICBmYWlsdXJlcy5wdXNoKC4uLnJlc3VsdC5mYWlsdXJlcyk7XG4gICAgICBwcm9ncmFtRXJyb3IgPSBwcm9ncmFtRXJyb3IgfHwgISFyZXN1bHQucHJvZ3JhbUVycm9yO1xuICAgIH1cblxuICAgIGlmIChwcm9ncmFtRXJyb3IpIHtcbiAgICAgIGN0eC5sb2dnZXIuaW5mbygnQ291bGQgbm90IG1pZ3JhdGUgYWxsIHVuZGVjb3JhdGVkIGNsYXNzZXMgdGhhdCB1c2UgZGVwZW5kZW5jeScpO1xuICAgICAgY3R4LmxvZ2dlci5pbmZvKCdpbmplY3Rpb24uIFNvbWUgcHJvamVjdCB0YXJnZXRzIGNvdWxkIG5vdCBiZSBhbmFseXplZCBkdWUgdG8nKTtcbiAgICAgIGN0eC5sb2dnZXIuaW5mbygnVHlwZVNjcmlwdCBwcm9ncmFtIGZhaWx1cmVzLlxcbicpO1xuICAgICAgY3R4LmxvZ2dlci5pbmZvKGAke01JR1JBVElPTl9SRVJVTl9NRVNTQUdFfVxcbmApO1xuXG4gICAgICBpZiAoZmFpbHVyZXMubGVuZ3RoKSB7XG4gICAgICAgIGN0eC5sb2dnZXIuaW5mbygnUGxlYXNlIG1hbnVhbGx5IGZpeCB0aGUgZm9sbG93aW5nIGZhaWx1cmVzIGFuZCByZS1ydW4gdGhlJyk7XG4gICAgICAgIGN0eC5sb2dnZXIuaW5mbygnbWlncmF0aW9uIG9uY2UgdGhlIFR5cGVTY3JpcHQgcHJvZ3JhbSBmYWlsdXJlcyBhcmUgcmVzb2x2ZWQuJyk7XG4gICAgICAgIGZhaWx1cmVzLmZvckVhY2gobWVzc2FnZSA9PiBjdHgubG9nZ2VyLndhcm4oYOKukSAgICR7bWVzc2FnZX1gKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChmYWlsdXJlcy5sZW5ndGgpIHtcbiAgICAgIGN0eC5sb2dnZXIuaW5mbygnQ291bGQgbm90IG1pZ3JhdGUgYWxsIHVuZGVjb3JhdGVkIGNsYXNzZXMgdGhhdCB1c2UgZGVwZW5kZW5jeScpO1xuICAgICAgY3R4LmxvZ2dlci5pbmZvKCdpbmplY3Rpb24uIFBsZWFzZSBtYW51YWxseSBmaXggdGhlIGZvbGxvd2luZyBmYWlsdXJlczonKTtcbiAgICAgIGZhaWx1cmVzLmZvckVhY2gobWVzc2FnZSA9PiBjdHgubG9nZ2VyLndhcm4oYOKukSAgICR7bWVzc2FnZX1gKSk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBydW5VbmRlY29yYXRlZENsYXNzZXNNaWdyYXRpb24oXG4gICAgdHJlZTogVHJlZSwgdHNjb25maWdQYXRoOiBzdHJpbmcsIGJhc2VQYXRoOiBzdHJpbmcsIGxvZ2dlcjogbG9nZ2luZy5Mb2dnZXJBcGksXG4gICAgY29tcGlsZXJNb2R1bGU6IHR5cGVvZiBpbXBvcnQoJ0Bhbmd1bGFyL2NvbXBpbGVyJyksXG4gICAgY29tcGlsZXJDbGlNb2R1bGU6IHR5cGVvZiBpbXBvcnQoJ0Bhbmd1bGFyL2NvbXBpbGVyLWNsaScpLFxuICAgIGNvbXBpbGVyQ2xpTWlncmF0aW9uc01vZHVsZTogdHlwZW9mIGltcG9ydCgnQGFuZ3VsYXIvY29tcGlsZXItY2xpL3ByaXZhdGUvbWlncmF0aW9ucycpLFxuICAgIGNvcmVNb2R1bGU6IHR5cGVvZiBpbXBvcnQoJ0Bhbmd1bGFyL2NvcmUnKSk6IHtmYWlsdXJlczogc3RyaW5nW10sIHByb2dyYW1FcnJvcj86IGJvb2xlYW59IHtcbiAgY29uc3QgZmFpbHVyZXM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IHByb2dyYW1EYXRhID1cbiAgICAgIGdyYWNlZnVsbHlDcmVhdGVQcm9ncmFtKHRyZWUsIGJhc2VQYXRoLCB0c2NvbmZpZ1BhdGgsIGxvZ2dlciwgY29tcGlsZXJDbGlNb2R1bGUpO1xuXG4gIC8vIEdyYWNlZnVsbHkgZXhpdCBpZiB0aGUgcHJvZ3JhbSBjb3VsZCBub3QgYmUgY3JlYXRlZC5cbiAgaWYgKHByb2dyYW1EYXRhID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHtmYWlsdXJlczogW10sIHByb2dyYW1FcnJvcjogdHJ1ZX07XG4gIH1cblxuICBjb25zdCB7cHJvZ3JhbSwgY29tcGlsZXJ9ID0gcHJvZ3JhbURhdGE7XG4gIGNvbnN0IHR5cGVDaGVja2VyID0gcHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpO1xuXG4gIGNvbnN0IGRlY2xhcmF0aW9uQ29sbGVjdG9yID0gbmV3IE5nRGVjbGFyYXRpb25Db2xsZWN0b3IodHlwZUNoZWNrZXIsIGNvbXBpbGVyQ2xpTWlncmF0aW9uc01vZHVsZSk7XG4gIGNvbnN0IHNvdXJjZUZpbGVzID1cbiAgICAgIHByb2dyYW0uZ2V0U291cmNlRmlsZXMoKS5maWx0ZXIoc291cmNlRmlsZSA9PiBjYW5NaWdyYXRlRmlsZShiYXNlUGF0aCwgc291cmNlRmlsZSwgcHJvZ3JhbSkpO1xuXG4gIC8vIEFuYWx5emUgc291cmNlIGZpbGVzIGJ5IGRldGVjdGluZyBhbGwgZGlyZWN0aXZlcywgY29tcG9uZW50cyBhbmQgcHJvdmlkZXJzLlxuICBzb3VyY2VGaWxlcy5mb3JFYWNoKHNvdXJjZUZpbGUgPT4gZGVjbGFyYXRpb25Db2xsZWN0b3IudmlzaXROb2RlKHNvdXJjZUZpbGUpKTtcblxuICBjb25zdCB7ZGVjb3JhdGVkRGlyZWN0aXZlcywgZGVjb3JhdGVkUHJvdmlkZXJzLCB1bmRlY29yYXRlZERlY2xhcmF0aW9uc30gPSBkZWNsYXJhdGlvbkNvbGxlY3RvcjtcbiAgY29uc3QgdHJhbnNmb3JtID0gbmV3IFVuZGVjb3JhdGVkQ2xhc3Nlc1RyYW5zZm9ybShcbiAgICAgIHR5cGVDaGVja2VyLCBjb21waWxlciwgZ2V0VXBkYXRlUmVjb3JkZXIsIGNvbXBpbGVyTW9kdWxlLCBjb3JlTW9kdWxlKTtcbiAgY29uc3QgdXBkYXRlUmVjb3JkZXJzID0gbmV3IE1hcDx0cy5Tb3VyY2VGaWxlLCBVcGRhdGVSZWNvcmRlcj4oKTtcblxuICAvLyBSdW4gdGhlIG1pZ3JhdGlvbnMgZm9yIGRlY29yYXRlZCBwcm92aWRlcnMgYW5kIGJvdGggZGVjb3JhdGVkIGFuZCB1bmRlY29yYXRlZFxuICAvLyBkaXJlY3RpdmVzLiBUaGUgdHJhbnNmb3JtIGZhaWx1cmVzIGFyZSBjb2xsZWN0ZWQgYW5kIGNvbnZlcnRlZCBpbnRvIGh1bWFuLXJlYWRhYmxlXG4gIC8vIGZhaWx1cmVzIHdoaWNoIGNhbiBiZSBwcmludGVkIHRvIHRoZSBjb25zb2xlLlxuICBbLi4udHJhbnNmb3JtLm1pZ3JhdGVEZWNvcmF0ZWREaXJlY3RpdmVzKGRlY29yYXRlZERpcmVjdGl2ZXMpLFxuICAgLi4udHJhbnNmb3JtLm1pZ3JhdGVEZWNvcmF0ZWRQcm92aWRlcnMoZGVjb3JhdGVkUHJvdmlkZXJzKSxcbiAgIC4uLnRyYW5zZm9ybS5taWdyYXRlVW5kZWNvcmF0ZWREZWNsYXJhdGlvbnMoQXJyYXkuZnJvbSh1bmRlY29yYXRlZERlY2xhcmF0aW9ucykpXVxuICAgICAgLmZvckVhY2goKHtub2RlLCBtZXNzYWdlfSkgPT4ge1xuICAgICAgICBjb25zdCBub2RlU291cmNlRmlsZSA9IG5vZGUuZ2V0U291cmNlRmlsZSgpO1xuICAgICAgICBjb25zdCByZWxhdGl2ZUZpbGVQYXRoID0gcmVsYXRpdmUoYmFzZVBhdGgsIG5vZGVTb3VyY2VGaWxlLmZpbGVOYW1lKTtcbiAgICAgICAgY29uc3Qge2xpbmUsIGNoYXJhY3Rlcn0gPVxuICAgICAgICAgICAgdHMuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24obm9kZS5nZXRTb3VyY2VGaWxlKCksIG5vZGUuZ2V0U3RhcnQoKSk7XG4gICAgICAgIGZhaWx1cmVzLnB1c2goYCR7cmVsYXRpdmVGaWxlUGF0aH1AJHtsaW5lICsgMX06JHtjaGFyYWN0ZXIgKyAxfTogJHttZXNzYWdlfWApO1xuICAgICAgfSk7XG5cbiAgLy8gUmVjb3JkIHRoZSBjaGFuZ2VzIGNvbGxlY3RlZCBpbiB0aGUgaW1wb3J0IG1hbmFnZXIgYW5kIHRyYW5zZm9ybWVyLlxuICB0cmFuc2Zvcm0ucmVjb3JkQ2hhbmdlcygpO1xuXG4gIC8vIFdhbGsgdGhyb3VnaCBlYWNoIHVwZGF0ZSByZWNvcmRlciBhbmQgY29tbWl0IHRoZSB1cGRhdGUuIFdlIG5lZWQgdG8gY29tbWl0IHRoZVxuICAvLyB1cGRhdGVzIGluIGJhdGNoZXMgcGVyIHNvdXJjZSBmaWxlIGFzIHRoZXJlIGNhbiBiZSBvbmx5IG9uZSByZWNvcmRlciBwZXIgc291cmNlXG4gIC8vIGZpbGUgaW4gb3JkZXIgdG8gYXZvaWQgc2hpZnRlZCBjaGFyYWN0ZXIgb2Zmc2V0cy5cbiAgdXBkYXRlUmVjb3JkZXJzLmZvckVhY2gocmVjb3JkZXIgPT4gcmVjb3JkZXIuY29tbWl0VXBkYXRlKCkpO1xuXG4gIHJldHVybiB7ZmFpbHVyZXN9O1xuXG4gIC8qKiBHZXRzIHRoZSB1cGRhdGUgcmVjb3JkZXIgZm9yIHRoZSBzcGVjaWZpZWQgc291cmNlIGZpbGUuICovXG4gIGZ1bmN0aW9uIGdldFVwZGF0ZVJlY29yZGVyKHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUpOiBVcGRhdGVSZWNvcmRlciB7XG4gICAgaWYgKHVwZGF0ZVJlY29yZGVycy5oYXMoc291cmNlRmlsZSkpIHtcbiAgICAgIHJldHVybiB1cGRhdGVSZWNvcmRlcnMuZ2V0KHNvdXJjZUZpbGUpITtcbiAgICB9XG4gICAgY29uc3QgdHJlZVJlY29yZGVyID0gdHJlZS5iZWdpblVwZGF0ZShyZWxhdGl2ZShiYXNlUGF0aCwgc291cmNlRmlsZS5maWxlTmFtZSkpO1xuICAgIGNvbnN0IHJlY29yZGVyOiBVcGRhdGVSZWNvcmRlciA9IHtcbiAgICAgIGFkZENsYXNzQ29tbWVudChub2RlOiB0cy5DbGFzc0RlY2xhcmF0aW9uLCB0ZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgdHJlZVJlY29yZGVyLmluc2VydExlZnQobm9kZS5tZW1iZXJzLnBvcywgYFxcbiAgLy8gJHt0ZXh0fVxcbmApO1xuICAgICAgfSxcbiAgICAgIGFkZENsYXNzRGVjb3JhdG9yKG5vZGU6IHRzLkNsYXNzRGVjbGFyYXRpb24sIHRleHQ6IHN0cmluZykge1xuICAgICAgICAvLyBOZXcgaW1wb3J0cyBzaG91bGQgYmUgaW5zZXJ0ZWQgYXQgdGhlIGxlZnQgd2hpbGUgZGVjb3JhdG9ycyBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgICAgLy8gYXQgdGhlIHJpZ2h0IGluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IGltcG9ydHMgYXJlIGluc2VydGVkIGJlZm9yZSB0aGUgZGVjb3JhdG9yXG4gICAgICAgIC8vIGlmIHRoZSBzdGFydCBwb3NpdGlvbiBvZiBpbXBvcnQgYW5kIGRlY29yYXRvciBpcyB0aGUgc291cmNlIGZpbGUgc3RhcnQuXG4gICAgICAgIHRyZWVSZWNvcmRlci5pbnNlcnRSaWdodChub2RlLmdldFN0YXJ0KCksIGAke3RleHR9XFxuYCk7XG4gICAgICB9LFxuICAgICAgYWRkTmV3SW1wb3J0KHN0YXJ0OiBudW1iZXIsIGltcG9ydFRleHQ6IHN0cmluZykge1xuICAgICAgICAvLyBOZXcgaW1wb3J0cyBzaG91bGQgYmUgaW5zZXJ0ZWQgYXQgdGhlIGxlZnQgd2hpbGUgZGVjb3JhdG9ycyBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgICAgLy8gYXQgdGhlIHJpZ2h0IGluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IGltcG9ydHMgYXJlIGluc2VydGVkIGJlZm9yZSB0aGUgZGVjb3JhdG9yXG4gICAgICAgIC8vIGlmIHRoZSBzdGFydCBwb3NpdGlvbiBvZiBpbXBvcnQgYW5kIGRlY29yYXRvciBpcyB0aGUgc291cmNlIGZpbGUgc3RhcnQuXG4gICAgICAgIHRyZWVSZWNvcmRlci5pbnNlcnRMZWZ0KHN0YXJ0LCBpbXBvcnRUZXh0KTtcbiAgICAgIH0sXG4gICAgICB1cGRhdGVFeGlzdGluZ0ltcG9ydChuYW1lZEJpbmRpbmdzOiB0cy5OYW1lZEltcG9ydHMsIG5ld05hbWVkQmluZGluZ3M6IHN0cmluZykge1xuICAgICAgICB0cmVlUmVjb3JkZXIucmVtb3ZlKG5hbWVkQmluZGluZ3MuZ2V0U3RhcnQoKSwgbmFtZWRCaW5kaW5ncy5nZXRXaWR0aCgpKTtcbiAgICAgICAgdHJlZVJlY29yZGVyLmluc2VydFJpZ2h0KG5hbWVkQmluZGluZ3MuZ2V0U3RhcnQoKSwgbmV3TmFtZWRCaW5kaW5ncyk7XG4gICAgICB9LFxuICAgICAgY29tbWl0VXBkYXRlKCkge1xuICAgICAgICB0cmVlLmNvbW1pdFVwZGF0ZSh0cmVlUmVjb3JkZXIpO1xuICAgICAgfVxuICAgIH07XG4gICAgdXBkYXRlUmVjb3JkZXJzLnNldChzb3VyY2VGaWxlLCByZWNvcmRlcik7XG4gICAgcmV0dXJuIHJlY29yZGVyO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEVycm9yRGlhZ25vc3RpY3MoZGlhZ25vc3RpY3M6IFJlYWRvbmx5QXJyYXk8dHMuRGlhZ25vc3RpY3xOZ0RpYWdub3N0aWM+KSB7XG4gIHJldHVybiA8dHMuRGlhZ25vc3RpY1tdPmRpYWdub3N0aWNzLmZpbHRlcihkID0+IGQuY2F0ZWdvcnkgPT09IHRzLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcik7XG59XG5cbmZ1bmN0aW9uIGdyYWNlZnVsbHlDcmVhdGVQcm9ncmFtKFxuICAgIHRyZWU6IFRyZWUsIGJhc2VQYXRoOiBzdHJpbmcsIHRzY29uZmlnUGF0aDogc3RyaW5nLCBsb2dnZXI6IGxvZ2dpbmcuTG9nZ2VyQXBpLFxuICAgIGNvbXBpbGVyQ2xpTW9kdWxlOiB0eXBlb2YgaW1wb3J0KCdAYW5ndWxhci9jb21waWxlci1jbGknKSk6XG4gICAge2NvbXBpbGVyOiBBb3RDb21waWxlciwgcHJvZ3JhbTogdHMuUHJvZ3JhbX18bnVsbCB7XG4gIHRyeSB7XG4gICAgY29uc3Qge25nY1Byb2dyYW0sIGhvc3QsIHByb2dyYW0sIGNvbXBpbGVyfSA9IGNyZWF0ZU5nY1Byb2dyYW0oXG4gICAgICAgIGNvbXBpbGVyQ2xpTW9kdWxlLCAob3B0aW9ucykgPT4gY3JlYXRlTWlncmF0aW9uQ29tcGlsZXJIb3N0KHRyZWUsIG9wdGlvbnMsIGJhc2VQYXRoKSxcbiAgICAgICAgdHNjb25maWdQYXRoKTtcbiAgICBjb25zdCBzeW50YWN0aWNEaWFnbm9zdGljcyA9IGdldEVycm9yRGlhZ25vc3RpY3MobmdjUHJvZ3JhbS5nZXRUc1N5bnRhY3RpY0RpYWdub3N0aWNzKCkpO1xuICAgIGNvbnN0IHN0cnVjdHVyYWxEaWFnbm9zdGljcyA9IGdldEVycm9yRGlhZ25vc3RpY3MobmdjUHJvZ3JhbS5nZXROZ1N0cnVjdHVyYWxEaWFnbm9zdGljcygpKTtcbiAgICBjb25zdCBjb25maWdEaWFnbm9zdGljcyA9IGdldEVycm9yRGlhZ25vc3RpY3MoXG4gICAgICAgIFsuLi5wcm9ncmFtLmdldE9wdGlvbnNEaWFnbm9zdGljcygpLCAuLi5uZ2NQcm9ncmFtLmdldE5nT3B0aW9uRGlhZ25vc3RpY3MoKV0pO1xuXG4gICAgaWYgKGNvbmZpZ0RpYWdub3N0aWNzLmxlbmd0aCkge1xuICAgICAgbG9nZ2VyLndhcm4oXG4gICAgICAgICAgYFxcblR5cGVTY3JpcHQgcHJvamVjdCBcIiR7dHNjb25maWdQYXRofVwiIGhhcyBjb25maWd1cmF0aW9uIGVycm9ycy4gVGhpcyBjb3VsZCBjYXVzZSBgICtcbiAgICAgICAgICBgYW4gaW5jb21wbGV0ZSBtaWdyYXRpb24uIFBsZWFzZSBmaXggdGhlIGZvbGxvd2luZyBmYWlsdXJlcyBhbmQgcmVydW4gdGhlIG1pZ3JhdGlvbjpgKTtcbiAgICAgIGxvZ2dlci5lcnJvcih0cy5mb3JtYXREaWFnbm9zdGljcyhjb25maWdEaWFnbm9zdGljcywgaG9zdCkpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gU3ludGFjdGljIFR5cGVTY3JpcHQgZXJyb3JzIGNhbiB0aHJvdyBvZmYgdGhlIHF1ZXJ5IGFuYWx5c2lzIGFuZCB0aGVyZWZvcmUgd2Ugd2FudFxuICAgIC8vIHRvIG5vdGlmeSB0aGUgZGV2ZWxvcGVyIHRoYXQgd2UgY291bGRuJ3QgYW5hbHl6ZSBwYXJ0cyBvZiB0aGUgcHJvamVjdC4gRGV2ZWxvcGVyc1xuICAgIC8vIGNhbiBqdXN0IHJlLXJ1biB0aGUgbWlncmF0aW9uIGFmdGVyIGZpeGluZyB0aGVzZSBmYWlsdXJlcy5cbiAgICBpZiAoc3ludGFjdGljRGlhZ25vc3RpY3MubGVuZ3RoKSB7XG4gICAgICBsb2dnZXIud2FybihcbiAgICAgICAgICBgXFxuVHlwZVNjcmlwdCBwcm9qZWN0IFwiJHt0c2NvbmZpZ1BhdGh9XCIgaGFzIHN5bnRhY3RpY2FsIGVycm9ycyB3aGljaCBjb3VsZCBjYXVzZSBgICtcbiAgICAgICAgICBgYW4gaW5jb21wbGV0ZSBtaWdyYXRpb24uIFBsZWFzZSBmaXggdGhlIGZvbGxvd2luZyBmYWlsdXJlcyBhbmQgcmVydW4gdGhlIG1pZ3JhdGlvbjpgKTtcbiAgICAgIGxvZ2dlci5lcnJvcih0cy5mb3JtYXREaWFnbm9zdGljcyhzeW50YWN0aWNEaWFnbm9zdGljcywgaG9zdCkpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHN0cnVjdHVyYWxEaWFnbm9zdGljcy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcih0cy5mb3JtYXREaWFnbm9zdGljcyg8dHMuRGlhZ25vc3RpY1tdPnN0cnVjdHVyYWxEaWFnbm9zdGljcywgaG9zdCkpO1xuICAgIH1cblxuICAgIHJldHVybiB7cHJvZ3JhbSwgY29tcGlsZXJ9O1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLndhcm4oYFxcbiR7TUlHUkFUSU9OX0FPVF9GQUlMVVJFfSBUaGUgZm9sbG93aW5nIHByb2plY3QgZmFpbGVkOiAke3RzY29uZmlnUGF0aH1cXG5gKTtcbiAgICBsb2dnZXIuZXJyb3IoYCR7ZS50b1N0cmluZygpfVxcbmApO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0=
|
|
@@ -1,38 +0,0 @@
|
|
|
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
|
-
/// <amd-module name="@angular/core/schematics/migrations/undecorated-classes-with-di/ng_declaration_collector" />
|
|
9
|
-
import ts from 'typescript';
|
|
10
|
-
import { NgDecorator } from '../../utils/ng_decorators';
|
|
11
|
-
/**
|
|
12
|
-
* Visitor that walks through specified TypeScript nodes and collects all defined
|
|
13
|
-
* directives and provider classes. Directives are separated by decorated and
|
|
14
|
-
* undecorated directives.
|
|
15
|
-
*/
|
|
16
|
-
export declare class NgDeclarationCollector {
|
|
17
|
-
typeChecker: ts.TypeChecker;
|
|
18
|
-
private compilerCliMigrationsModule;
|
|
19
|
-
/** List of resolved directives which are decorated. */
|
|
20
|
-
decoratedDirectives: ts.ClassDeclaration[];
|
|
21
|
-
/** List of resolved providers which are decorated. */
|
|
22
|
-
decoratedProviders: ts.ClassDeclaration[];
|
|
23
|
-
/** Set of resolved Angular declarations which are not decorated. */
|
|
24
|
-
undecoratedDeclarations: Set<ts.ClassDeclaration>;
|
|
25
|
-
private evaluator;
|
|
26
|
-
constructor(typeChecker: ts.TypeChecker, compilerCliMigrationsModule: typeof import('@angular/compiler-cli/private/migrations'));
|
|
27
|
-
visitNode(node: ts.Node): void;
|
|
28
|
-
private _visitClassDeclaration;
|
|
29
|
-
private _visitNgModuleDecorator;
|
|
30
|
-
}
|
|
31
|
-
/** Checks whether the given node has the "@Directive" or "@Component" decorator set. */
|
|
32
|
-
export declare function hasDirectiveDecorator(node: ts.ClassDeclaration, typeChecker: ts.TypeChecker, ngDecorators?: NgDecorator[]): boolean;
|
|
33
|
-
/** Checks whether the given node has the "@Injectable" decorator set. */
|
|
34
|
-
export declare function hasInjectableDecorator(node: ts.ClassDeclaration, typeChecker: ts.TypeChecker, ngDecorators?: NgDecorator[]): boolean;
|
|
35
|
-
/** Whether the given node has an explicit decorator that describes an Angular declaration. */
|
|
36
|
-
export declare function hasNgDeclarationDecorator(node: ts.ClassDeclaration, typeChecker: ts.TypeChecker): boolean;
|
|
37
|
-
/** Gets all Angular decorators of a given class declaration. */
|
|
38
|
-
export declare function getNgClassDecorators(node: ts.ClassDeclaration, typeChecker: ts.TypeChecker): NgDecorator[];
|
|
@@ -1,135 +0,0 @@
|
|
|
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
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
-
};
|
|
11
|
-
(function (factory) {
|
|
12
|
-
if (typeof module === "object" && typeof module.exports === "object") {
|
|
13
|
-
var v = factory(require, exports);
|
|
14
|
-
if (v !== undefined) module.exports = v;
|
|
15
|
-
}
|
|
16
|
-
else if (typeof define === "function" && define.amd) {
|
|
17
|
-
define("@angular/core/schematics/migrations/undecorated-classes-with-di/ng_declaration_collector", ["require", "exports", "typescript", "@angular/core/schematics/utils/ng_decorators", "@angular/core/schematics/utils/typescript/property_name"], factory);
|
|
18
|
-
}
|
|
19
|
-
})(function (require, exports) {
|
|
20
|
-
"use strict";
|
|
21
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.getNgClassDecorators = exports.hasNgDeclarationDecorator = exports.hasInjectableDecorator = exports.hasDirectiveDecorator = exports.NgDeclarationCollector = void 0;
|
|
23
|
-
const typescript_1 = __importDefault(require("typescript"));
|
|
24
|
-
const ng_decorators_1 = require("@angular/core/schematics/utils/ng_decorators");
|
|
25
|
-
const property_name_1 = require("@angular/core/schematics/utils/typescript/property_name");
|
|
26
|
-
/**
|
|
27
|
-
* Visitor that walks through specified TypeScript nodes and collects all defined
|
|
28
|
-
* directives and provider classes. Directives are separated by decorated and
|
|
29
|
-
* undecorated directives.
|
|
30
|
-
*/
|
|
31
|
-
class NgDeclarationCollector {
|
|
32
|
-
constructor(typeChecker, compilerCliMigrationsModule) {
|
|
33
|
-
this.typeChecker = typeChecker;
|
|
34
|
-
this.compilerCliMigrationsModule = compilerCliMigrationsModule;
|
|
35
|
-
/** List of resolved directives which are decorated. */
|
|
36
|
-
this.decoratedDirectives = [];
|
|
37
|
-
/** List of resolved providers which are decorated. */
|
|
38
|
-
this.decoratedProviders = [];
|
|
39
|
-
/** Set of resolved Angular declarations which are not decorated. */
|
|
40
|
-
this.undecoratedDeclarations = new Set();
|
|
41
|
-
this.evaluator = new compilerCliMigrationsModule.PartialEvaluator(new compilerCliMigrationsModule.TypeScriptReflectionHost(typeChecker), typeChecker,
|
|
42
|
-
/* dependencyTracker */ null);
|
|
43
|
-
}
|
|
44
|
-
visitNode(node) {
|
|
45
|
-
if (typescript_1.default.isClassDeclaration(node)) {
|
|
46
|
-
this._visitClassDeclaration(node);
|
|
47
|
-
}
|
|
48
|
-
typescript_1.default.forEachChild(node, n => this.visitNode(n));
|
|
49
|
-
}
|
|
50
|
-
_visitClassDeclaration(node) {
|
|
51
|
-
if (!node.decorators || !node.decorators.length) {
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
const ngDecorators = (0, ng_decorators_1.getAngularDecorators)(this.typeChecker, node.decorators);
|
|
55
|
-
const ngModuleDecorator = ngDecorators.find(({ name }) => name === 'NgModule');
|
|
56
|
-
if (hasDirectiveDecorator(node, this.typeChecker, ngDecorators)) {
|
|
57
|
-
this.decoratedDirectives.push(node);
|
|
58
|
-
}
|
|
59
|
-
else if (hasInjectableDecorator(node, this.typeChecker, ngDecorators)) {
|
|
60
|
-
this.decoratedProviders.push(node);
|
|
61
|
-
}
|
|
62
|
-
else if (ngModuleDecorator) {
|
|
63
|
-
this._visitNgModuleDecorator(ngModuleDecorator);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
_visitNgModuleDecorator(decorator) {
|
|
67
|
-
const decoratorCall = decorator.node.expression;
|
|
68
|
-
const metadata = decoratorCall.arguments[0];
|
|
69
|
-
if (!metadata || !typescript_1.default.isObjectLiteralExpression(metadata)) {
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
let entryComponentsNode = null;
|
|
73
|
-
let declarationsNode = null;
|
|
74
|
-
metadata.properties.forEach(p => {
|
|
75
|
-
if (!typescript_1.default.isPropertyAssignment(p)) {
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
const name = (0, property_name_1.getPropertyNameText)(p.name);
|
|
79
|
-
if (name === 'entryComponents') {
|
|
80
|
-
entryComponentsNode = p.initializer;
|
|
81
|
-
}
|
|
82
|
-
else if (name === 'declarations') {
|
|
83
|
-
declarationsNode = p.initializer;
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
const values = [];
|
|
87
|
-
// In case the module specifies the "entryComponents" field, walk through all
|
|
88
|
-
// resolved entry components and collect the referenced directives.
|
|
89
|
-
if (entryComponentsNode) {
|
|
90
|
-
values.push(this.evaluator.evaluate(entryComponentsNode));
|
|
91
|
-
}
|
|
92
|
-
// In case the module specifies the "declarations" field, walk through all
|
|
93
|
-
// resolved declarations and collect the referenced directives.
|
|
94
|
-
if (declarationsNode) {
|
|
95
|
-
values.push(this.evaluator.evaluate(declarationsNode));
|
|
96
|
-
}
|
|
97
|
-
// Flatten values and analyze references
|
|
98
|
-
for (const value of values.flat(Infinity)) {
|
|
99
|
-
if (value instanceof this.compilerCliMigrationsModule.Reference &&
|
|
100
|
-
typescript_1.default.isClassDeclaration(value.node) &&
|
|
101
|
-
!hasNgDeclarationDecorator(value.node, this.typeChecker)) {
|
|
102
|
-
this.undecoratedDeclarations.add(value.node);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
exports.NgDeclarationCollector = NgDeclarationCollector;
|
|
108
|
-
/** Checks whether the given node has the "@Directive" or "@Component" decorator set. */
|
|
109
|
-
function hasDirectiveDecorator(node, typeChecker, ngDecorators) {
|
|
110
|
-
return (ngDecorators || getNgClassDecorators(node, typeChecker))
|
|
111
|
-
.some(({ name }) => name === 'Directive' || name === 'Component');
|
|
112
|
-
}
|
|
113
|
-
exports.hasDirectiveDecorator = hasDirectiveDecorator;
|
|
114
|
-
/** Checks whether the given node has the "@Injectable" decorator set. */
|
|
115
|
-
function hasInjectableDecorator(node, typeChecker, ngDecorators) {
|
|
116
|
-
return (ngDecorators || getNgClassDecorators(node, typeChecker))
|
|
117
|
-
.some(({ name }) => name === 'Injectable');
|
|
118
|
-
}
|
|
119
|
-
exports.hasInjectableDecorator = hasInjectableDecorator;
|
|
120
|
-
/** Whether the given node has an explicit decorator that describes an Angular declaration. */
|
|
121
|
-
function hasNgDeclarationDecorator(node, typeChecker) {
|
|
122
|
-
return getNgClassDecorators(node, typeChecker)
|
|
123
|
-
.some(({ name }) => name === 'Component' || name === 'Directive' || name === 'Pipe');
|
|
124
|
-
}
|
|
125
|
-
exports.hasNgDeclarationDecorator = hasNgDeclarationDecorator;
|
|
126
|
-
/** Gets all Angular decorators of a given class declaration. */
|
|
127
|
-
function getNgClassDecorators(node, typeChecker) {
|
|
128
|
-
if (!node.decorators) {
|
|
129
|
-
return [];
|
|
130
|
-
}
|
|
131
|
-
return (0, ng_decorators_1.getAngularDecorators)(typeChecker, node.decorators);
|
|
132
|
-
}
|
|
133
|
-
exports.getNgClassDecorators = getNgClassDecorators;
|
|
134
|
-
});
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfZGVjbGFyYXRpb25fY29sbGVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zY2hlbWF0aWNzL21pZ3JhdGlvbnMvdW5kZWNvcmF0ZWQtY2xhc3Nlcy13aXRoLWRpL25nX2RlY2xhcmF0aW9uX2NvbGxlY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFSCw0REFBNEI7SUFFNUIsZ0ZBQTRFO0lBQzVFLDJGQUF5RTtJQUd6RTs7OztPQUlHO0lBQ0gsTUFBYSxzQkFBc0I7UUFZakMsWUFDVyxXQUEyQixFQUMxQiwyQkFDcUQ7WUFGdEQsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1lBQzFCLGdDQUEyQixHQUEzQiwyQkFBMkIsQ0FDMEI7WUFkakUsdURBQXVEO1lBQ3ZELHdCQUFtQixHQUEwQixFQUFFLENBQUM7WUFFaEQsc0RBQXNEO1lBQ3RELHVCQUFrQixHQUEwQixFQUFFLENBQUM7WUFFL0Msb0VBQW9FO1lBQ3BFLDRCQUF1QixHQUFHLElBQUksR0FBRyxFQUF1QixDQUFDO1lBUXZELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSwyQkFBMkIsQ0FBQyxnQkFBZ0IsQ0FDN0QsSUFBSSwyQkFBMkIsQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLENBQUMsRUFBRSxXQUFXO1lBQ2xGLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFFRCxTQUFTLENBQUMsSUFBYTtZQUNyQixJQUFJLG9CQUFFLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNuQztZQUVELG9CQUFFLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENB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QUEyQjtRQUN4RCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNwQixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsT0FBTyxJQUFBLG9DQUFvQixFQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQU5ELG9EQU1DIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtnZXRBbmd1bGFyRGVjb3JhdG9ycywgTmdEZWNvcmF0b3J9IGZyb20gJy4uLy4uL3V0aWxzL25nX2RlY29yYXRvcnMnO1xuaW1wb3J0IHtnZXRQcm9wZXJ0eU5hbWVUZXh0fSBmcm9tICcuLi8uLi91dGlscy90eXBlc2NyaXB0L3Byb3BlcnR5X25hbWUnO1xuXG5cbi8qKlxuICogVmlzaXRvciB0aGF0IHdhbGtzIHRocm91Z2ggc3BlY2lmaWVkIFR5cGVTY3JpcHQgbm9kZXMgYW5kIGNvbGxlY3RzIGFsbCBkZWZpbmVkXG4gKiBkaXJlY3RpdmVzIGFuZCBwcm92aWRlciBjbGFzc2VzLiBEaXJlY3RpdmVzIGFyZSBzZXBhcmF0ZWQgYnkgZGVjb3JhdGVkIGFuZFxuICogdW5kZWNvcmF0ZWQgZGlyZWN0aXZlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIE5nRGVjbGFyYXRpb25Db2xsZWN0b3Ige1xuICAvKiogTGlzdCBvZiByZXNvbHZlZCBkaXJlY3RpdmVzIHdoaWNoIGFyZSBkZWNvcmF0ZWQuICovXG4gIGRlY29yYXRlZERpcmVjdGl2ZXM6IHRzLkNsYXNzRGVjbGFyYXRpb25bXSA9IFtdO1xuXG4gIC8qKiBMaXN0IG9mIHJlc29sdmVkIHByb3ZpZGVycyB3aGljaCBhcmUgZGVjb3JhdGVkLiAqL1xuICBkZWNvcmF0ZWRQcm92aWRlcnM6IHRzLkNsYXNzRGVjbGFyYXRpb25bXSA9IFtdO1xuXG4gIC8qKiBTZXQgb2YgcmVzb2x2ZWQgQW5ndWxhciBkZWNsYXJhdGlvbnMgd2hpY2ggYXJlIG5vdCBkZWNvcmF0ZWQuICovXG4gIHVuZGVjb3JhdGVkRGVjbGFyYXRpb25zID0gbmV3IFNldDx0cy5DbGFzc0RlY2xhcmF0aW9uPigpO1xuXG4gIHByaXZhdGUgZXZhbHVhdG9yO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHVibGljIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlcixcbiAgICAgIHByaXZhdGUgY29tcGlsZXJDbGlNaWdyYXRpb25zTW9kdWxlOlxuICAgICAgICAgIHR5cGVvZiBpbXBvcnQoJ0Bhbmd1bGFyL2NvbXBpbGVyLWNsaS9wcml2YXRlL21pZ3JhdGlvbnMnKSkge1xuICAgIHRoaXMuZXZhbHVhdG9yID0gbmV3IGNvbXBpbGVyQ2xpTWlncmF0aW9uc01vZHVsZS5QYXJ0aWFsRXZhbHVhdG9yKFxuICAgICAgICBuZXcgY29tcGlsZXJDbGlNaWdyYXRpb25zTW9kdWxlLlR5cGVTY3JpcHRSZWZsZWN0aW9uSG9zdCh0eXBlQ2hlY2tlciksIHR5cGVDaGVja2VyLFxuICAgICAgICAvKiBkZXBlbmRlbmN5VHJhY2tlciAqLyBudWxsKTtcbiAgfVxuXG4gIHZpc2l0Tm9kZShub2RlOiB0cy5Ob2RlKSB7XG4gICAgaWYgKHRzLmlzQ2xhc3NEZWNsYXJhdGlvbihub2RlKSkge1xuICAgICAgdGhpcy5fdmlzaXRDbGFzc0RlY2xhcmF0aW9uKG5vZGUpO1xuICAgIH1cblxuICAgIHRzLmZvckVhY2hDaGlsZChub2RlLCBuID0+IHRoaXMudmlzaXROb2RlKG4pKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Zpc2l0Q2xhc3NEZWNsYXJhdGlvbihub2RlOiB0cy5DbGFzc0RlY2xhcmF0aW9uKSB7XG4gICAgaWYgKCFub2RlLmRlY29yYXRvcnMgfHwgIW5vZGUuZGVjb3JhdG9ycy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZ0RlY29yYXRvcnMgPSBnZXRBbmd1bGFyRGVjb3JhdG9ycyh0aGlzLnR5cGVDaGVja2VyLCBub2RlLmRlY29yYXRvcnMpO1xuICAgIGNvbnN0IG5nTW9kdWxlRGVjb3JhdG9yID0gbmdEZWNvcmF0b3JzLmZpbmQoKHtuYW1lfSkgPT4gbmFtZSA9PT0gJ05nTW9kdWxlJyk7XG5cbiAgICBpZiAoaGFzRGlyZWN0aXZlRGVjb3JhdG9yKG5vZGUsIHRoaXMudHlwZUNoZWNrZXIsIG5nRGVjb3JhdG9ycykpIHtcbiAgICAgIHRoaXMuZGVjb3JhdGVkRGlyZWN0aXZlcy5wdXNoKG5vZGUpO1xuICAgIH0gZWxzZSBpZiAoaGFzSW5qZWN0YWJsZURlY29yYXRvcihub2RlLCB0aGlzLnR5cGVDaGVja2VyLCBuZ0RlY29yYXRvcnMpKSB7XG4gICAgICB0aGlzLmRlY29yYXRlZFByb3ZpZGVycy5wdXNoKG5vZGUpO1xuICAgIH0gZWxzZSBpZiAobmdNb2R1bGVEZWNvcmF0b3IpIHtcbiAgICAgIHRoaXMuX3Zpc2l0TmdNb2R1bGVEZWNvcmF0b3IobmdNb2R1bGVEZWNvcmF0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Zpc2l0TmdNb2R1bGVEZWNvcmF0b3IoZGVjb3JhdG9yOiBOZ0RlY29yYXRvcikge1xuICAgIGNvbnN0IGRlY29yYXRvckNhbGwgPSBkZWNvcmF0b3Iubm9kZS5leHByZXNzaW9uO1xuICAgIGNvbnN0IG1ldGFkYXRhID0gZGVjb3JhdG9yQ2FsbC5hcmd1bWVudHNbMF07XG5cbiAgICBpZiAoIW1ldGFkYXRhIHx8ICF0cy5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKG1ldGFkYXRhKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBlbnRyeUNvbXBvbmVudHNOb2RlOiB0cy5FeHByZXNzaW9ufG51bGwgPSBudWxsO1xuICAgIGxldCBkZWNsYXJhdGlvbnNOb2RlOiB0cy5FeHByZXNzaW9ufG51bGwgPSBudWxsO1xuXG4gICAgbWV0YWRhdGEucHJvcGVydGllcy5mb3JFYWNoKHAgPT4ge1xuICAgICAgaWYgKCF0cy5pc1Byb3BlcnR5QXNzaWdubWVudChwKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5hbWUgPSBnZXRQcm9wZXJ0eU5hbWVUZXh0KHAubmFtZSk7XG5cbiAgICAgIGlmIChuYW1lID09PSAnZW50cnlDb21wb25lbnRzJykge1xuICAgICAgICBlbnRyeUNvbXBvbmVudHNOb2RlID0gcC5pbml0aWFsaXplcjtcbiAgICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ2RlY2xhcmF0aW9ucycpIHtcbiAgICAgICAgZGVjbGFyYXRpb25zTm9kZSA9IHAuaW5pdGlhbGl6ZXI7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCB2YWx1ZXMgPSBbXTtcblxuICAgIC8vIEluIGNhc2UgdGhlIG1vZHVsZSBzcGVjaWZpZXMgdGhlIFwiZW50cnlDb21wb25lbnRzXCIgZmllbGQsIHdhbGsgdGhyb3VnaCBhbGxcbiAgICAvLyByZXNvbHZlZCBlbnRyeSBjb21wb25lbnRzIGFuZCBjb2xsZWN0IHRoZSByZWZlcmVuY2VkIGRpcmVjdGl2ZXMuXG4gICAgaWYgKGVudHJ5Q29tcG9uZW50c05vZGUpIHtcbiAgICAgIHZhbHVlcy5wdXNoKHRoaXMuZXZhbHVhdG9yLmV2YWx1YXRlKGVudHJ5Q29tcG9uZW50c05vZGUpKTtcbiAgICB9XG5cbiAgICAvLyBJbiBjYXNlIHRoZSBtb2R1bGUgc3BlY2lmaWVzIHRoZSBcImRlY2xhcmF0aW9uc1wiIGZpZWxkLCB3YWxrIHRocm91Z2ggYWxsXG4gICAgLy8gcmVzb2x2ZWQgZGVjbGFyYXRpb25zIGFuZCBjb2xsZWN0IHRoZSByZWZlcmVuY2VkIGRpcmVjdGl2ZXMuXG4gICAgaWYgKGRlY2xhcmF0aW9uc05vZGUpIHtcbiAgICAgIHZhbHVlcy5wdXNoKHRoaXMuZXZhbHVhdG9yLmV2YWx1YXRlKGRlY2xhcmF0aW9uc05vZGUpKTtcbiAgICB9XG5cbiAgICAvLyBGbGF0dGVuIHZhbHVlcyBhbmQgYW5hbHl6ZSByZWZlcmVuY2VzXG4gICAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMuZmxhdChJbmZpbml0eSkpIHtcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIHRoaXMuY29tcGlsZXJDbGlNaWdyYXRpb25zTW9kdWxlLlJlZmVyZW5jZSAmJlxuICAgICAgICAgIHRzLmlzQ2xhc3NEZWNsYXJhdGlvbih2YWx1ZS5ub2RlKSAmJlxuICAgICAgICAgICFoYXNOZ0RlY2xhcmF0aW9uRGVjb3JhdG9yKHZhbHVlLm5vZGUsIHRoaXMudHlwZUNoZWNrZXIpKSB7XG4gICAgICAgIHRoaXMudW5kZWNvcmF0ZWREZWNsYXJhdGlvbnMuYWRkKHZhbHVlLm5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKiogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIG5vZGUgaGFzIHRoZSBcIkBEaXJlY3RpdmVcIiBvciBcIkBDb21wb25lbnRcIiBkZWNvcmF0b3Igc2V0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc0RpcmVjdGl2ZURlY29yYXRvcihcbiAgICBub2RlOiB0cy5DbGFzc0RlY2xhcmF0aW9uLCB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsIG5nRGVjb3JhdG9ycz86IE5nRGVjb3JhdG9yW10pOiBib29sZWFuIHtcbiAgcmV0dXJuIChuZ0RlY29yYXRvcnMgfHwgZ2V0TmdDbGFzc0RlY29yYXRvcnMobm9kZSwgdHlwZUNoZWNrZXIpKVxuICAgICAgLnNvbWUoKHtuYW1lfSkgPT4gbmFtZSA9PT0gJ0RpcmVjdGl2ZScgfHwgbmFtZSA9PT0gJ0NvbXBvbmVudCcpO1xufVxuXG5cblxuLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBub2RlIGhhcyB0aGUgXCJASW5qZWN0YWJsZVwiIGRlY29yYXRvciBzZXQuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzSW5qZWN0YWJsZURlY29yYXRvcihcbiAgICBub2RlOiB0cy5DbGFzc0RlY2xhcmF0aW9uLCB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsIG5nRGVjb3JhdG9ycz86IE5nRGVjb3JhdG9yW10pOiBib29sZWFuIHtcbiAgcmV0dXJuIChuZ0RlY29yYXRvcnMgfHwgZ2V0TmdDbGFzc0RlY29yYXRvcnMobm9kZSwgdHlwZUNoZWNrZXIpKVxuICAgICAgLnNvbWUoKHtuYW1lfSkgPT4gbmFtZSA9PT0gJ0luamVjdGFibGUnKTtcbn1cbi8qKiBXaGV0aGVyIHRoZSBnaXZlbiBub2RlIGhhcyBhbiBleHBsaWNpdCBkZWNvcmF0b3IgdGhhdCBkZXNjcmliZXMgYW4gQW5ndWxhciBkZWNsYXJhdGlvbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNOZ0RlY2xhcmF0aW9uRGVjb3JhdG9yKG5vZGU6IHRzLkNsYXNzRGVjbGFyYXRpb24sIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlcikge1xuICByZXR1cm4gZ2V0TmdDbGFzc0RlY29yYXRvcnMobm9kZSwgdHlwZUNoZWNrZXIpXG4gICAgICAuc29tZSgoe25hbWV9KSA9PiBuYW1lID09PSAnQ29tcG9uZW50JyB8fCBuYW1lID09PSAnRGlyZWN0aXZlJyB8fCBuYW1lID09PSAnUGlwZScpO1xufVxuXG4vKiogR2V0cyBhbGwgQW5ndWxhciBkZWNvcmF0b3JzIG9mIGEgZ2l2ZW4gY2xhc3MgZGVjbGFyYXRpb24uICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmdDbGFzc0RlY29yYXRvcnMoXG4gICAgbm9kZTogdHMuQ2xhc3NEZWNsYXJhdGlvbiwgdHlwZUNoZWNrZXI6IHRzLlR5cGVDaGVja2VyKTogTmdEZWNvcmF0b3JbXSB7XG4gIGlmICghbm9kZS5kZWNvcmF0b3JzKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHJldHVybiBnZXRBbmd1bGFyRGVjb3JhdG9ycyh0eXBlQ2hlY2tlciwgbm9kZS5kZWNvcmF0b3JzKTtcbn1cbiJdfQ==
|
|
@@ -1,97 +0,0 @@
|
|
|
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
|
-
/// <amd-module name="@angular/core/schematics/migrations/undecorated-classes-with-di/transform" />
|
|
9
|
-
import type { AotCompiler } from '@angular/compiler';
|
|
10
|
-
import ts from 'typescript';
|
|
11
|
-
import { UpdateRecorder } from './update_recorder';
|
|
12
|
-
export interface TransformFailure {
|
|
13
|
-
node: ts.Node;
|
|
14
|
-
message: string;
|
|
15
|
-
}
|
|
16
|
-
export declare class UndecoratedClassesTransform {
|
|
17
|
-
private typeChecker;
|
|
18
|
-
private compiler;
|
|
19
|
-
private getUpdateRecorder;
|
|
20
|
-
private compilerModule;
|
|
21
|
-
private coreModule;
|
|
22
|
-
private printer;
|
|
23
|
-
private importManager;
|
|
24
|
-
private decoratorRewriter;
|
|
25
|
-
private compilerHost;
|
|
26
|
-
private symbolResolver;
|
|
27
|
-
private metadataResolver;
|
|
28
|
-
/** Set of class declarations which have been decorated with "@Directive". */
|
|
29
|
-
private decoratedDirectives;
|
|
30
|
-
/** Set of class declarations which have been decorated with "@Injectable" */
|
|
31
|
-
private decoratedProviders;
|
|
32
|
-
/**
|
|
33
|
-
* Set of class declarations which have been analyzed and need to specify
|
|
34
|
-
* an explicit constructor.
|
|
35
|
-
*/
|
|
36
|
-
private missingExplicitConstructorClasses;
|
|
37
|
-
constructor(typeChecker: ts.TypeChecker, compiler: AotCompiler, getUpdateRecorder: (sf: ts.SourceFile) => UpdateRecorder, compilerModule: typeof import('@angular/compiler'), coreModule: typeof import('@angular/core'));
|
|
38
|
-
/**
|
|
39
|
-
* Migrates decorated directives which can potentially inherit a constructor
|
|
40
|
-
* from an undecorated base class. All base classes until the first one
|
|
41
|
-
* with an explicit constructor will be decorated with the abstract "@Directive()"
|
|
42
|
-
* decorator. See case 1 in the migration plan: https://hackmd.io/@alx/S1XKqMZeS
|
|
43
|
-
*/
|
|
44
|
-
migrateDecoratedDirectives(directives: ts.ClassDeclaration[]): TransformFailure[];
|
|
45
|
-
/**
|
|
46
|
-
* Migrates decorated providers which can potentially inherit a constructor
|
|
47
|
-
* from an undecorated base class. All base classes until the first one
|
|
48
|
-
* with an explicit constructor will be decorated with the "@Injectable()".
|
|
49
|
-
*/
|
|
50
|
-
migrateDecoratedProviders(providers: ts.ClassDeclaration[]): TransformFailure[];
|
|
51
|
-
private _migrateProviderBaseClass;
|
|
52
|
-
private _migrateDirectiveBaseClass;
|
|
53
|
-
private _migrateDecoratedClassWithInheritedCtor;
|
|
54
|
-
/**
|
|
55
|
-
* Adds the abstract "@Directive()" decorator to the given class in case there
|
|
56
|
-
* is no existing directive decorator.
|
|
57
|
-
*/
|
|
58
|
-
private _addAbstractDirectiveDecorator;
|
|
59
|
-
/**
|
|
60
|
-
* Adds the abstract "@Injectable()" decorator to the given class in case there
|
|
61
|
-
* is no existing directive decorator.
|
|
62
|
-
*/
|
|
63
|
-
private _addInjectableDecorator;
|
|
64
|
-
/** Adds a comment for adding an explicit constructor to the given class declaration. */
|
|
65
|
-
private _addMissingExplicitConstructorTodo;
|
|
66
|
-
/**
|
|
67
|
-
* Migrates undecorated directives which were referenced in NgModule declarations.
|
|
68
|
-
* These directives inherit the metadata from a parent base class, but with Ivy
|
|
69
|
-
* these classes need to explicitly have a decorator for locality. The migration
|
|
70
|
-
* determines the inherited decorator and copies it to the undecorated declaration.
|
|
71
|
-
*
|
|
72
|
-
* Note that the migration serializes the metadata for external declarations
|
|
73
|
-
* where the decorator is not part of the source file AST.
|
|
74
|
-
*
|
|
75
|
-
* See case 2 in the migration plan: https://hackmd.io/@alx/S1XKqMZeS
|
|
76
|
-
*/
|
|
77
|
-
migrateUndecoratedDeclarations(directives: ts.ClassDeclaration[]): TransformFailure[];
|
|
78
|
-
private _migrateDerivedDeclaration;
|
|
79
|
-
/** Records all changes that were made in the import manager. */
|
|
80
|
-
recordChanges(): void;
|
|
81
|
-
/**
|
|
82
|
-
* Constructs a TypeScript decorator node from the specified declaration metadata. Returns
|
|
83
|
-
* null if the metadata could not be simplified/resolved.
|
|
84
|
-
*/
|
|
85
|
-
private _constructDecoratorFromMetadata;
|
|
86
|
-
/**
|
|
87
|
-
* Resolves the declaration metadata of a given static symbol. The metadata
|
|
88
|
-
* is determined by resolving metadata for the static symbol.
|
|
89
|
-
*/
|
|
90
|
-
private _resolveDeclarationMetadata;
|
|
91
|
-
private _getStaticSymbolOfIdentifier;
|
|
92
|
-
/**
|
|
93
|
-
* Disables that static symbols are resolved through summaries. Summaries
|
|
94
|
-
* cannot be used for decorator analysis as decorators are omitted in summaries.
|
|
95
|
-
*/
|
|
96
|
-
private _disableSummaryResolution;
|
|
97
|
-
}
|