@angular/core 12.1.1 → 12.1.5
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/bundles/core-testing.umd.js +15 -4
- package/bundles/core-testing.umd.js.map +1 -1
- package/bundles/core.umd.js +91 -41
- package/bundles/core.umd.js.map +1 -1
- package/core.d.ts +12 -12
- package/core.metadata.json +1 -1
- package/esm2015/src/application_init.js +5 -5
- package/esm2015/src/application_ref.js +6 -2
- package/esm2015/src/change_detection/differs/iterable_differs.js +1 -1
- package/esm2015/src/compiler/compiler_facade.js +31 -8
- package/esm2015/src/compiler/compiler_facade_interface.js +1 -1
- package/esm2015/src/di/jit/injectable.js +4 -3
- package/esm2015/src/di/r3_injector.js +5 -2
- package/esm2015/src/error_handler.js +4 -8
- package/esm2015/src/errors.js +2 -2
- package/esm2015/src/event_emitter.js +1 -1
- package/esm2015/src/linker/component_factory_resolver.js +1 -1
- package/esm2015/src/linker/template_ref.js +1 -1
- package/esm2015/src/linker/view_container_ref.js +1 -1
- package/esm2015/src/metadata/di.js +1 -1
- package/esm2015/src/render3/component_ref.js +1 -1
- package/esm2015/src/render3/jit/directive.js +6 -5
- package/esm2015/src/render3/jit/module.js +7 -4
- package/esm2015/src/render3/jit/partial.js +27 -9
- package/esm2015/src/render3/jit/pipe.js +5 -3
- package/esm2015/src/render3/ng_module_ref.js +1 -1
- package/esm2015/src/render3/view_ref.js +1 -1
- package/esm2015/src/sanitization/bypass.js +1 -1
- package/esm2015/src/version.js +1 -1
- package/esm2015/src/view/entrypoint.js +1 -1
- package/esm2015/src/view/refs.js +1 -1
- package/esm2015/testing/src/ng_zone_mock.js +1 -1
- package/esm2015/testing/src/r3_test_bed_compiler.js +4 -1
- package/esm2015/testing/src/resolvers.js +1 -1
- package/esm2015/testing/src/test_bed.js +12 -4
- package/fesm2015/core.js +91 -41
- package/fesm2015/core.js.map +1 -1
- package/fesm2015/testing.js +15 -4
- package/fesm2015/testing.js.map +1 -1
- package/package.json +1 -1
- package/schematics/migrations/missing-injectable/providers_evaluator.js +1 -1
- package/schematics/migrations/static-queries/strategies/usage_strategy/template_usage_visitor.js +1 -1
- package/schematics/migrations/template-var-assignment/angular/html_variable_assignment_visitor.js +1 -1
- package/schematics/migrations.json +1 -1
- package/src/r3_symbols.d.ts +2 -3
- package/testing/testing.d.ts +2 -1
- package/testing/testing.metadata.json +1 -1
- package/testing.d.ts +1 -1
- package/schematics/migrations/abstract-control-parent/abstract-control-parent.externs.js +0 -0
- package/schematics/migrations/abstract-control-parent/index.mjs +0 -47
- package/schematics/migrations/abstract-control-parent/util.mjs +0 -50
- package/schematics/migrations/activated-route-snapshot-fragment/activated-route-snapshot-fragment.externs.js +0 -0
- package/schematics/migrations/activated-route-snapshot-fragment/index.mjs +0 -48
- package/schematics/migrations/activated-route-snapshot-fragment/util.mjs +0 -33
- package/schematics/migrations/can-activate-with-redirect-to/can-activate-with-redirect-to.externs.js +0 -0
- package/schematics/migrations/can-activate-with-redirect-to/index.mjs +0 -44
- package/schematics/migrations/can-activate-with-redirect-to/util.mjs +0 -55
- package/schematics/migrations/deep-shadow-piercing-selector/deep-shadow-piercing-selector.externs.js +0 -0
- package/schematics/migrations/deep-shadow-piercing-selector/index.mjs +0 -36
- package/schematics/migrations/dynamic-queries/dynamic-queries.externs.js +0 -0
- package/schematics/migrations/dynamic-queries/index.mjs +0 -51
- package/schematics/migrations/dynamic-queries/util.mjs +0 -65
- package/schematics/migrations/initial-navigation/collector.mjs +0 -105
- package/schematics/migrations/initial-navigation/index.mjs +0 -61
- package/schematics/migrations/initial-navigation/initial-navigation.externs.js +0 -0
- package/schematics/migrations/initial-navigation/transform.mjs +0 -54
- package/schematics/migrations/initial-navigation/update_recorder.mjs +0 -9
- package/schematics/migrations/initial-navigation/util.mjs +0 -28
- package/schematics/migrations/missing-injectable/definition_collector.mjs +0 -75
- package/schematics/migrations/missing-injectable/index.mjs +0 -100
- package/schematics/migrations/missing-injectable/missing-injectable.externs.js +0 -0
- package/schematics/migrations/missing-injectable/providers_evaluator.mjs +0 -50
- package/schematics/migrations/missing-injectable/transform.mjs +0 -187
- package/schematics/migrations/missing-injectable/update_recorder.mjs +0 -9
- package/schematics/migrations/module-with-providers/collector.mjs +0 -59
- package/schematics/migrations/module-with-providers/index.mjs +0 -71
- package/schematics/migrations/module-with-providers/module-with-providers.externs.js +0 -0
- package/schematics/migrations/module-with-providers/transform.mjs +0 -134
- package/schematics/migrations/module-with-providers/util.mjs +0 -25
- package/schematics/migrations/move-document/document_import_visitor.mjs +0 -60
- package/schematics/migrations/move-document/index.mjs +0 -71
- package/schematics/migrations/move-document/move-document.externs.js +0 -0
- package/schematics/migrations/move-document/move-import.mjs +0 -45
- package/schematics/migrations/native-view-encapsulation/index.mjs +0 -41
- package/schematics/migrations/native-view-encapsulation/native-view-encapsulation.externs.js +0 -0
- package/schematics/migrations/native-view-encapsulation/util.mjs +0 -34
- package/schematics/migrations/navigation-extras-omissions/index.mjs +0 -47
- package/schematics/migrations/navigation-extras-omissions/navigation-extras-omissions.externs.js +0 -0
- package/schematics/migrations/navigation-extras-omissions/util.mjs +0 -111
- package/schematics/migrations/relative-link-resolution/collector.mjs +0 -81
- package/schematics/migrations/relative-link-resolution/index.mjs +0 -62
- package/schematics/migrations/relative-link-resolution/relative-link-resolution.externs.js +0 -0
- package/schematics/migrations/relative-link-resolution/transform.mjs +0 -51
- package/schematics/migrations/relative-link-resolution/update_recorder.mjs +0 -9
- package/schematics/migrations/relative-link-resolution/util.mjs +0 -28
- package/schematics/migrations/renderer-to-renderer2/helpers.mjs +0 -224
- package/schematics/migrations/renderer-to-renderer2/index.mjs +0 -113
- package/schematics/migrations/renderer-to-renderer2/migration.mjs +0 -211
- package/schematics/migrations/renderer-to-renderer2/renderer-to-renderer2.externs.js +0 -0
- package/schematics/migrations/renderer-to-renderer2/util.mjs +0 -69
- package/schematics/migrations/router-preserve-query-params/index.mjs +0 -50
- package/schematics/migrations/router-preserve-query-params/router-preserve-query-params.externs.js +0 -0
- package/schematics/migrations/router-preserve-query-params/util.mjs +0 -88
- package/schematics/migrations/static-queries/angular/directive_inputs.mjs +0 -70
- package/schematics/migrations/static-queries/angular/ng_query_visitor.mjs +0 -113
- package/schematics/migrations/static-queries/angular/query-definition.mjs +0 -20
- package/schematics/migrations/static-queries/angular/super_class.mjs +0 -21
- package/schematics/migrations/static-queries/index.mjs +0 -206
- package/schematics/migrations/static-queries/static-queries.externs.js +0 -0
- package/schematics/migrations/static-queries/strategies/template_strategy/template_strategy.mjs +0 -200
- package/schematics/migrations/static-queries/strategies/test_strategy/test_strategy.mjs +0 -24
- package/schematics/migrations/static-queries/strategies/timing-strategy.mjs +0 -9
- package/schematics/migrations/static-queries/strategies/usage_strategy/declaration_usage_visitor.mjs +0 -355
- package/schematics/migrations/static-queries/strategies/usage_strategy/super_class_context.mjs +0 -38
- package/schematics/migrations/static-queries/strategies/usage_strategy/template_usage_visitor.mjs +0 -80
- package/schematics/migrations/static-queries/strategies/usage_strategy/usage_strategy.mjs +0 -154
- package/schematics/migrations/static-queries/transform.mjs +0 -88
- package/schematics/migrations/template-var-assignment/analyze_template.mjs +0 -25
- package/schematics/migrations/template-var-assignment/angular/html_variable_assignment_visitor.mjs +0 -65
- package/schematics/migrations/template-var-assignment/index.mjs +0 -68
- package/schematics/migrations/template-var-assignment/template-var-assignment.externs.js +0 -0
- package/schematics/migrations/undecorated-classes-with-decorated-fields/index.mjs +0 -92
- package/schematics/migrations/undecorated-classes-with-decorated-fields/transform.mjs +0 -286
- package/schematics/migrations/undecorated-classes-with-decorated-fields/undecorated-classes-with-decorated-fields.externs.js +0 -0
- package/schematics/migrations/undecorated-classes-with-decorated-fields/update_recorder.mjs +0 -9
- package/schematics/migrations/undecorated-classes-with-di/create_ngc_program.mjs +0 -43
- package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/convert_directive_metadata.mjs +0 -82
- package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/decorator_rewriter.mjs +0 -102
- package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/import_rewrite_visitor.mjs +0 -111
- package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/path_format.mjs +0 -17
- package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/source_file_exports.mjs +0 -51
- package/schematics/migrations/undecorated-classes-with-di/index.mjs +0 -162
- package/schematics/migrations/undecorated-classes-with-di/ng_declaration_collector.mjs +0 -124
- package/schematics/migrations/undecorated-classes-with-di/transform.mjs +0 -356
- package/schematics/migrations/undecorated-classes-with-di/undecorated-classes-with-di.externs.js +0 -0
- package/schematics/migrations/undecorated-classes-with-di/update_recorder.mjs +0 -9
- package/schematics/migrations/wait-for-async/index.mjs +0 -76
- package/schematics/migrations/wait-for-async/util.mjs +0 -23
- package/schematics/migrations/wait-for-async/wait-for-async.externs.js +0 -0
- package/schematics/migrations/xhr-factory/index.mjs +0 -91
- package/schematics/migrations/xhr-factory/xhr-factory.externs.js +0 -0
- package/schematics/utils/import_manager.mjs +0 -197
- package/schematics/utils/line_mappings.mjs +0 -60
- package/schematics/utils/ng_component_template.mjs +0 -96
- package/schematics/utils/ng_decorators.mjs +0 -23
- package/schematics/utils/parse_html.mjs +0 -24
- package/schematics/utils/project_tsconfig_paths.mjs +0 -74
- package/schematics/utils/schematics_prompt.mjs +0 -30
- package/schematics/utils/typescript/class_declaration.mjs +0 -33
- package/schematics/utils/typescript/compiler_host.mjs +0 -66
- package/schematics/utils/typescript/decorators.mjs +0 -20
- package/schematics/utils/typescript/find_base_classes.mjs +0 -30
- package/schematics/utils/typescript/functions.mjs +0 -28
- package/schematics/utils/typescript/imports.mjs +0 -91
- package/schematics/utils/typescript/nodes.mjs +0 -57
- package/schematics/utils/typescript/parse_tsconfig.mjs +0 -26
- package/schematics/utils/typescript/property_name.mjs +0 -23
- package/schematics/utils/typescript/symbol.mjs +0 -72
- package/schematics/utils/utils.externs.js +0 -0
|
@@ -1,75 +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
|
-
import * as ts from 'typescript';
|
|
9
|
-
import { getAngularDecorators } from '../../utils/ng_decorators';
|
|
10
|
-
import { getPropertyNameText } from '../../utils/typescript/property_name';
|
|
11
|
-
/**
|
|
12
|
-
* Visitor that walks through specified TypeScript nodes and collects all
|
|
13
|
-
* found NgModule, Directive or Component definitions.
|
|
14
|
-
*/
|
|
15
|
-
export class NgDefinitionCollector {
|
|
16
|
-
constructor(typeChecker) {
|
|
17
|
-
this.typeChecker = typeChecker;
|
|
18
|
-
this.resolvedModules = [];
|
|
19
|
-
this.resolvedDirectives = [];
|
|
20
|
-
}
|
|
21
|
-
visitNode(node) {
|
|
22
|
-
if (ts.isClassDeclaration(node)) {
|
|
23
|
-
this.visitClassDeclaration(node);
|
|
24
|
-
}
|
|
25
|
-
ts.forEachChild(node, n => this.visitNode(n));
|
|
26
|
-
}
|
|
27
|
-
visitClassDeclaration(node) {
|
|
28
|
-
if (!node.decorators || !node.decorators.length) {
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
const ngDecorators = getAngularDecorators(this.typeChecker, node.decorators);
|
|
32
|
-
const directiveDecorator = ngDecorators.find(({ name }) => name === 'Component' || name == 'Directive');
|
|
33
|
-
const ngModuleDecorator = ngDecorators.find(({ name }) => name === 'NgModule');
|
|
34
|
-
if (ngModuleDecorator) {
|
|
35
|
-
this._visitNgModuleClass(node, ngModuleDecorator);
|
|
36
|
-
}
|
|
37
|
-
else if (directiveDecorator) {
|
|
38
|
-
this._visitDirectiveClass(node, directiveDecorator);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
_visitDirectiveClass(node, decorator) {
|
|
42
|
-
const decoratorCall = decorator.node.expression;
|
|
43
|
-
const metadata = decoratorCall.arguments[0];
|
|
44
|
-
if (!metadata || !ts.isObjectLiteralExpression(metadata)) {
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
const providersNode = metadata.properties.filter(ts.isPropertyAssignment)
|
|
48
|
-
.find(p => getPropertyNameText(p.name) === 'providers');
|
|
49
|
-
const viewProvidersNode = metadata.properties.filter(ts.isPropertyAssignment)
|
|
50
|
-
.find(p => getPropertyNameText(p.name) === 'viewProviders');
|
|
51
|
-
this.resolvedDirectives.push({
|
|
52
|
-
name: node.name ? node.name.text : 'default',
|
|
53
|
-
node,
|
|
54
|
-
decorator,
|
|
55
|
-
providersExpr: providersNode !== undefined ? providersNode.initializer : null,
|
|
56
|
-
viewProvidersExpr: viewProvidersNode !== undefined ? viewProvidersNode.initializer : null,
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
_visitNgModuleClass(node, decorator) {
|
|
60
|
-
const decoratorCall = decorator.node.expression;
|
|
61
|
-
const metadata = decoratorCall.arguments[0];
|
|
62
|
-
if (!metadata || !ts.isObjectLiteralExpression(metadata)) {
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
const providersNode = metadata.properties.filter(ts.isPropertyAssignment)
|
|
66
|
-
.find(p => getPropertyNameText(p.name) === 'providers');
|
|
67
|
-
this.resolvedModules.push({
|
|
68
|
-
name: node.name ? node.name.text : 'default',
|
|
69
|
-
node,
|
|
70
|
-
decorator,
|
|
71
|
-
providersExpr: providersNode !== undefined ? providersNode.initializer : null,
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5pdGlvbl9jb2xsZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NjaGVtYXRpY3MvbWlncmF0aW9ucy9taXNzaW5nLWluamVjdGFibGUvZGVmaW5pdGlvbl9jb2xsZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFakMsT0FBTyxFQUFDLG9CQUFvQixFQUFjLE1BQU0sMkJBQTJCLENBQUM7QUFDNUUsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFpQnpFOzs7R0FHRztBQUNILE1BQU0sT0FBTyxxQkFBcUI7SUFJaEMsWUFBbUIsV0FBMkI7UUFBM0IsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBSDlDLG9CQUFlLEdBQXVCLEVBQUUsQ0FBQztRQUN6Qyx1QkFBa0IsR0FBd0IsRUFBRSxDQUFDO0lBRUksQ0FBQztJQUVsRCxTQUFTLENBQUMsSUFBYTtRQUNyQixJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMvQixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbEM7UUFFRCxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRU8scUJBQXFCLENBQUMsSUFBeUI7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtZQUMvQyxPQUFPO1NBQ1I7UUFFRCxNQUFNLFlBQVksR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FB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QUFDLFNBQVM7WUFDNUMsSUFBSTtZQUNKLFNBQVM7WUFDVCxhQUFhLEVBQUUsYUFBYSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSTtTQUM5RSxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7Z2V0QW5ndWxhckRlY29yYXRvcnMsIE5nRGVjb3JhdG9yfSBmcm9tICcuLi8uLi91dGlscy9uZ19kZWNvcmF0b3JzJztcbmltcG9ydCB7Z2V0UHJvcGVydHlOYW1lVGV4dH0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9wcm9wZXJ0eV9uYW1lJztcblxuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlZE5nTW9kdWxlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBub2RlOiB0cy5DbGFzc0RlY2xhcmF0aW9uO1xuICBkZWNvcmF0b3I6IE5nRGVjb3JhdG9yO1xuICBwcm92aWRlcnNFeHByOiB0cy5FeHByZXNzaW9ufG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZWREaXJlY3RpdmUge1xuICBuYW1lOiBzdHJpbmc7XG4gIG5vZGU6IHRzLkNsYXNzRGVjbGFyYXRpb247XG4gIGRlY29yYXRvcjogTmdEZWNvcmF0b3I7XG4gIHByb3ZpZGVyc0V4cHI6IHRzLkV4cHJlc3Npb258bnVsbDtcbiAgdmlld1Byb3ZpZGVyc0V4cHI6IHRzLkV4cHJlc3Npb258bnVsbDtcbn1cblxuLyoqXG4gKiBWaXNpdG9yIHRoYXQgd2Fsa3MgdGhyb3VnaCBzcGVjaWZpZWQgVHlwZVNjcmlwdCBub2RlcyBhbmQgY29sbGVjdHMgYWxsXG4gKiBmb3VuZCBOZ01vZHVsZSwgRGlyZWN0aXZlIG9yIENvbXBvbmVudCBkZWZpbml0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIE5nRGVmaW5pdGlvbkNvbGxlY3RvciB7XG4gIHJlc29sdmVkTW9kdWxlczogUmVzb2x2ZWROZ01vZHVsZVtdID0gW107XG4gIHJlc29sdmVkRGlyZWN0aXZlczogUmVzb2x2ZWREaXJlY3RpdmVbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIpIHt9XG5cbiAgdmlzaXROb2RlKG5vZGU6IHRzLk5vZGUpIHtcbiAgICBpZiAodHMuaXNDbGFzc0RlY2xhcmF0aW9uKG5vZGUpKSB7XG4gICAgICB0aGlzLnZpc2l0Q2xhc3NEZWNsYXJhdGlvbihub2RlKTtcbiAgICB9XG5cbiAgICB0cy5mb3JFYWNoQ2hpbGQobm9kZSwgbiA9PiB0aGlzLnZpc2l0Tm9kZShuKSk7XG4gIH1cblxuICBwcml2YXRlIHZpc2l0Q2xhc3NEZWNsYXJhdGlvbihub2RlOiB0cy5DbGFzc0RlY2xhcmF0aW9uKSB7XG4gICAgaWYgKCFub2RlLmRlY29yYXRvcnMgfHwgIW5vZGUuZGVjb3JhdG9ycy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZ0RlY29yYXRvcnMgPSBnZXRBbmd1bGFyRGVjb3JhdG9ycyh0aGlzLnR5cGVDaGVja2VyLCBub2RlLmRlY29yYXRvcnMpO1xuICAgIGNvbnN0IGRpcmVjdGl2ZURlY29yYXRvciA9XG4gICAgICAgIG5nRGVjb3JhdG9ycy5maW5kKCh7bmFtZX0pID0+IG5hbWUgPT09ICdDb21wb25lbnQnIHx8IG5hbWUgPT0gJ0RpcmVjdGl2ZScpO1xuICAgIGNvbnN0IG5nTW9kdWxlRGVjb3JhdG9yID0gbmdEZWNvcmF0b3JzLmZpbmQoKHtuYW1lfSkgPT4gbmFtZSA9PT0gJ05nTW9kdWxlJyk7XG5cbiAgICBpZiAobmdNb2R1bGVEZWNvcmF0b3IpIHtcbiAgICAgIHRoaXMuX3Zpc2l0TmdNb2R1bGVDbGFzcyhub2RlLCBuZ01vZHVsZURlY29yYXRvcik7XG4gICAgfSBlbHNlIGlmIChkaXJlY3RpdmVEZWNvcmF0b3IpIHtcbiAgICAgIHRoaXMuX3Zpc2l0RGlyZWN0aXZlQ2xhc3Mobm9kZSwgZGlyZWN0aXZlRGVjb3JhdG9yKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF92aXNpdERpcmVjdGl2ZUNsYXNzKG5vZGU6IHRzLkNsYXNzRGVjbGFyYXRpb24sIGRlY29yYXRvcjogTmdEZWNvcmF0b3IpIHtcbiAgICBjb25zdCBkZWNvcmF0b3JDYWxsID0gZGVjb3JhdG9yLm5vZGUuZXhwcmVzc2lvbjtcbiAgICBjb25zdCBtZXRhZGF0YSA9IGRlY29yYXRvckNhbGwuYXJndW1lbnRzWzBdO1xuXG4gICAgaWYgKCFtZXRhZGF0YSB8fCAhdHMuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihtZXRhZGF0YSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwcm92aWRlcnNOb2RlID0gbWV0YWRhdGEucHJvcGVydGllcy5maWx0ZXIodHMuaXNQcm9wZXJ0eUFzc2lnbm1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZChwID0+IGdldFByb3BlcnR5TmFtZVRleHQocC5uYW1lKSA9PT0gJ3Byb3ZpZGVycycpO1xuXG4gICAgY29uc3Qgdmlld1Byb3ZpZGVyc05vZGUgPSBtZXRhZGF0YS5wcm9wZXJ0aWVzLmZpbHRlcih0cy5pc1Byb3BlcnR5QXNzaWdubWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZChwID0+IGdldFByb3BlcnR5TmFtZVRleHQocC5uYW1lKSA9PT0gJ3ZpZXdQcm92aWRlcnMnKTtcblxuICAgIHRoaXMucmVzb2x2ZWREaXJlY3RpdmVzLnB1c2goe1xuICAgICAgbmFtZTogbm9kZS5uYW1lID8gbm9kZS5uYW1lLnRleHQgOiAnZGVmYXVsdCcsXG4gICAgICBub2RlLFxuICAgICAgZGVjb3JhdG9yLFxuICAgICAgcHJvdmlkZXJzRXhwcjogcHJvdmlkZXJzTm9kZSAhPT0gdW5kZWZpbmVkID8gcHJvdmlkZXJzTm9kZS5pbml0aWFsaXplciA6IG51bGwsXG4gICAgICB2aWV3UHJvdmlkZXJzRXhwcjogdmlld1Byb3ZpZGVyc05vZGUgIT09IHVuZGVmaW5lZCA/IHZpZXdQcm92aWRlcnNOb2RlLmluaXRpYWxpemVyIDogbnVsbCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3Zpc2l0TmdNb2R1bGVDbGFzcyhub2RlOiB0cy5DbGFzc0RlY2xhcmF0aW9uLCBkZWNvcmF0b3I6IE5nRGVjb3JhdG9yKSB7XG4gICAgY29uc3QgZGVjb3JhdG9yQ2FsbCA9IGRlY29yYXRvci5ub2RlLmV4cHJlc3Npb247XG4gICAgY29uc3QgbWV0YWRhdGEgPSBkZWNvcmF0b3JDYWxsLmFyZ3VtZW50c1swXTtcblxuICAgIGlmICghbWV0YWRhdGEgfHwgIXRzLmlzT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24obWV0YWRhdGEpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcHJvdmlkZXJzTm9kZSA9IG1ldGFkYXRhLnByb3BlcnRpZXMuZmlsdGVyKHRzLmlzUHJvcGVydHlBc3NpZ25tZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQocCA9PiBnZXRQcm9wZXJ0eU5hbWVUZXh0KHAubmFtZSkgPT09ICdwcm92aWRlcnMnKTtcbiAgICB0aGlzLnJlc29sdmVkTW9kdWxlcy5wdXNoKHtcbiAgICAgIG5hbWU6IG5vZGUubmFtZSA/IG5vZGUubmFtZS50ZXh0IDogJ2RlZmF1bHQnLFxuICAgICAgbm9kZSxcbiAgICAgIGRlY29yYXRvcixcbiAgICAgIHByb3ZpZGVyc0V4cHI6IHByb3ZpZGVyc05vZGUgIT09IHVuZGVmaW5lZCA/IHByb3ZpZGVyc05vZGUuaW5pdGlhbGl6ZXIgOiBudWxsLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,100 +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
|
-
import { SchematicsException } from '@angular-devkit/schematics';
|
|
9
|
-
import { relative } from 'path';
|
|
10
|
-
import * as ts from 'typescript';
|
|
11
|
-
import { getProjectTsConfigPaths } from '../../utils/project_tsconfig_paths';
|
|
12
|
-
import { canMigrateFile, createMigrationProgram } from '../../utils/typescript/compiler_host';
|
|
13
|
-
import { NgDefinitionCollector } from './definition_collector';
|
|
14
|
-
import { MissingInjectableTransform } from './transform';
|
|
15
|
-
/** Entry point for the V9 "missing @Injectable" schematic. */
|
|
16
|
-
export default function () {
|
|
17
|
-
return (tree, ctx) => {
|
|
18
|
-
const { buildPaths, testPaths } = getProjectTsConfigPaths(tree);
|
|
19
|
-
const basePath = process.cwd();
|
|
20
|
-
const failures = [];
|
|
21
|
-
if (!buildPaths.length && !testPaths.length) {
|
|
22
|
-
throw new SchematicsException('Could not find any tsconfig file. Cannot add the "@Injectable" decorator to providers ' +
|
|
23
|
-
'which don\'t have that decorator set.');
|
|
24
|
-
}
|
|
25
|
-
for (const tsconfigPath of [...buildPaths, ...testPaths]) {
|
|
26
|
-
failures.push(...runMissingInjectableMigration(tree, tsconfigPath, basePath));
|
|
27
|
-
}
|
|
28
|
-
if (failures.length) {
|
|
29
|
-
ctx.logger.info('Could not migrate all providers automatically. Please');
|
|
30
|
-
ctx.logger.info('manually migrate the following instances:');
|
|
31
|
-
failures.forEach(message => ctx.logger.warn(`⮑ ${message}`));
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
function runMissingInjectableMigration(tree, tsconfigPath, basePath) {
|
|
36
|
-
const { program } = createMigrationProgram(tree, tsconfigPath, basePath);
|
|
37
|
-
const failures = [];
|
|
38
|
-
const typeChecker = program.getTypeChecker();
|
|
39
|
-
const definitionCollector = new NgDefinitionCollector(typeChecker);
|
|
40
|
-
const sourceFiles = program.getSourceFiles().filter(sourceFile => canMigrateFile(basePath, sourceFile, program));
|
|
41
|
-
// Analyze source files by detecting all modules, directives and components.
|
|
42
|
-
sourceFiles.forEach(sourceFile => definitionCollector.visitNode(sourceFile));
|
|
43
|
-
const { resolvedModules, resolvedDirectives } = definitionCollector;
|
|
44
|
-
const transformer = new MissingInjectableTransform(typeChecker, getUpdateRecorder);
|
|
45
|
-
const updateRecorders = new Map();
|
|
46
|
-
[...transformer.migrateModules(resolvedModules),
|
|
47
|
-
...transformer.migrateDirectives(resolvedDirectives),
|
|
48
|
-
].forEach(({ message, node }) => {
|
|
49
|
-
const nodeSourceFile = node.getSourceFile();
|
|
50
|
-
const relativeFilePath = relative(basePath, nodeSourceFile.fileName);
|
|
51
|
-
const { line, character } = ts.getLineAndCharacterOfPosition(node.getSourceFile(), node.getStart());
|
|
52
|
-
failures.push(`${relativeFilePath}@${line + 1}:${character + 1}: ${message}`);
|
|
53
|
-
});
|
|
54
|
-
// Record the changes collected in the import manager and transformer.
|
|
55
|
-
transformer.recordChanges();
|
|
56
|
-
// Walk through each update recorder and commit the update. We need to commit the
|
|
57
|
-
// updates in batches per source file as there can be only one recorder per source
|
|
58
|
-
// file in order to avoid shift character offsets.
|
|
59
|
-
updateRecorders.forEach(recorder => recorder.commitUpdate());
|
|
60
|
-
return failures;
|
|
61
|
-
/** Gets the update recorder for the specified source file. */
|
|
62
|
-
function getUpdateRecorder(sourceFile) {
|
|
63
|
-
if (updateRecorders.has(sourceFile)) {
|
|
64
|
-
return updateRecorders.get(sourceFile);
|
|
65
|
-
}
|
|
66
|
-
const treeRecorder = tree.beginUpdate(relative(basePath, sourceFile.fileName));
|
|
67
|
-
const recorder = {
|
|
68
|
-
addClassDecorator(node, text) {
|
|
69
|
-
// New imports should be inserted at the left while decorators should be inserted
|
|
70
|
-
// at the right in order to ensure that imports are inserted before the decorator
|
|
71
|
-
// if the start position of import and decorator is the source file start.
|
|
72
|
-
treeRecorder.insertRight(node.getStart(), `${text}\n`);
|
|
73
|
-
},
|
|
74
|
-
replaceDecorator(decorator, newText) {
|
|
75
|
-
treeRecorder.remove(decorator.getStart(), decorator.getWidth());
|
|
76
|
-
treeRecorder.insertRight(decorator.getStart(), newText);
|
|
77
|
-
},
|
|
78
|
-
addNewImport(start, importText) {
|
|
79
|
-
// New imports should be inserted at the left while decorators should be inserted
|
|
80
|
-
// at the right in order to ensure that imports are inserted before the decorator
|
|
81
|
-
// if the start position of import and decorator is the source file start.
|
|
82
|
-
treeRecorder.insertLeft(start, importText);
|
|
83
|
-
},
|
|
84
|
-
updateExistingImport(namedBindings, newNamedBindings) {
|
|
85
|
-
treeRecorder.remove(namedBindings.getStart(), namedBindings.getWidth());
|
|
86
|
-
treeRecorder.insertRight(namedBindings.getStart(), newNamedBindings);
|
|
87
|
-
},
|
|
88
|
-
updateObjectLiteral(node, newText) {
|
|
89
|
-
treeRecorder.remove(node.getStart(), node.getWidth());
|
|
90
|
-
treeRecorder.insertRight(node.getStart(), newText);
|
|
91
|
-
},
|
|
92
|
-
commitUpdate() {
|
|
93
|
-
tree.commitUpdate(treeRecorder);
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
updateRecorders.set(sourceFile, recorder);
|
|
97
|
-
return recorder;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NjaGVtYXRpY3MvbWlncmF0aW9ucy9taXNzaW5nLWluamVjdGFibGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUF5QixtQkFBbUIsRUFBTyxNQUFNLDRCQUE0QixDQUFDO0FBQzdGLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDOUIsT0FBTyxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDakMsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDM0UsT0FBTyxFQUFDLGNBQWMsRUFBRSxzQkFBc0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQzVGLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUd2RCw4REFBOEQ7QUFDOUQsTUFBTSxDQUFDLE9BQU87SUFDWixPQUFPLENBQUMsSUFBVSxFQUFFLEdBQXFCLEVBQUUsRUFBRTtRQUMzQyxNQUFNLEVBQUMsVUFBVSxFQUFFLFNBQVMsRUFBQyxHQUFHLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMvQixNQUFNLFFBQVEsR0FBYSxFQUFFLENBQUM7UUFFOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFO1lBQzNDLE1BQU0sSUFBSSxtQkFBbUIsQ0FDekIsd0ZBQXdGO2dCQUN4Rix1Q0FBdUMsQ0FBQyxDQUFDO1NBQzlDO1FBRUQsS0FBSyxNQUFNLFlBQVksSUFBSSxDQUFDLEdBQUcsVUFBVSxFQUFFLEdBQUcsU0FBUyxD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TUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDdEQsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDckQsQ0FBQztZQUNELFlBQVk7Z0JBQ1YsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNsQyxDQUFDO1NBQ0YsQ0FBQztRQUNGLGVBQWUsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7UnVsZSwgU2NoZW1hdGljQ29udGV4dCwgU2NoZW1hdGljc0V4Y2VwdGlvbiwgVHJlZX0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L3NjaGVtYXRpY3MnO1xuaW1wb3J0IHtyZWxhdGl2ZX0gZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7Z2V0UHJvamVjdFRzQ29uZmlnUGF0aHN9IGZyb20gJy4uLy4uL3V0aWxzL3Byb2plY3RfdHNjb25maWdfcGF0aHMnO1xuaW1wb3J0IHtjYW5NaWdyYXRlRmlsZSwgY3JlYXRlTWlncmF0aW9uUHJvZ3JhbX0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9jb21waWxlcl9ob3N0JztcbmltcG9ydCB7TmdEZWZpbml0aW9uQ29sbGVjdG9yfSBmcm9tICcuL2RlZmluaXRpb25fY29sbGVjdG9yJztcbmltcG9ydCB7TWlzc2luZ0luamVjdGFibGVUcmFuc2Zvcm19IGZyb20gJy4vdHJhbnNmb3JtJztcbmltcG9ydCB7VXBkYXRlUmVjb3JkZXJ9IGZyb20gJy4vdXBkYXRlX3JlY29yZGVyJztcblxuLyoqIEVudHJ5IHBvaW50IGZvciB0aGUgVjkgXCJtaXNzaW5nIEBJbmplY3RhYmxlXCIgc2NoZW1hdGljLiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKTogUnVsZSB7XG4gIHJldHVybiAodHJlZTogVHJlZSwgY3R4OiBTY2hlbWF0aWNDb250ZXh0KSA9PiB7XG4gICAgY29uc3Qge2J1aWxkUGF0aHMsIHRlc3RQYXRoc30gPSBnZXRQcm9qZWN0VHNDb25maWdQYXRocyh0cmVlKTtcbiAgICBjb25zdCBiYXNlUGF0aCA9IHByb2Nlc3MuY3dkKCk7XG4gICAgY29uc3QgZmFpbHVyZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICBpZiAoIWJ1aWxkUGF0aHMubGVuZ3RoICYmICF0ZXN0UGF0aHMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgU2NoZW1hdGljc0V4Y2VwdGlvbihcbiAgICAgICAgICAnQ291bGQgbm90IGZpbmQgYW55IHRzY29uZmlnIGZpbGUuIENhbm5vdCBhZGQgdGhlIFwiQEluamVjdGFibGVcIiBkZWNvcmF0b3IgdG8gcHJvdmlkZXJzICcgK1xuICAgICAgICAgICd3aGljaCBkb25cXCd0IGhhdmUgdGhhdCBkZWNvcmF0b3Igc2V0LicpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgdHNjb25maWdQYXRoIG9mIFsuLi5idWlsZFBhdGhzLCAuLi50ZXN0UGF0aHNdKSB7XG4gICAgICBmYWlsdXJlcy5wdXNoKC4uLnJ1bk1pc3NpbmdJbmplY3RhYmxlTWlncmF0aW9uKHRyZWUsIHRzY29uZmlnUGF0aCwgYmFzZVBhdGgpKTtcbiAgICB9XG5cbiAgICBpZiAoZmFpbHVyZXMubGVuZ3RoKSB7XG4gICAgICBjdHgubG9nZ2VyLmluZm8oJ0NvdWxkIG5vdCBtaWdyYXRlIGFsbCBwcm92aWRlcnMgYXV0b21hdGljYWxseS4gUGxlYXNlJyk7XG4gICAgICBjdHgubG9nZ2VyLmluZm8oJ21hbnVhbGx5IG1pZ3JhdGUgdGhlIGZvbGxvd2luZyBpbnN0YW5jZXM6Jyk7XG4gICAgICBmYWlsdXJlcy5mb3JFYWNoKG1lc3NhZ2UgPT4gY3R4LmxvZ2dlci53YXJuKGDirpEgICAke21lc3NhZ2V9YCkpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gcnVuTWlzc2luZ0luamVjdGFibGVNaWdyYXRpb24oXG4gICAgdHJlZTogVHJlZSwgdHNjb25maWdQYXRoOiBzdHJpbmcsIGJhc2VQYXRoOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHtwcm9ncmFtfSA9IGNyZWF0ZU1pZ3JhdGlvblByb2dyYW0odHJlZSwgdHNjb25maWdQYXRoLCBiYXNlUGF0aCk7XG4gIGNvbnN0IGZhaWx1cmVzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCB0eXBlQ2hlY2tlciA9IHByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKTtcbiAgY29uc3QgZGVmaW5pdGlvbkNvbGxlY3RvciA9IG5ldyBOZ0RlZmluaXRpb25Db2xsZWN0b3IodHlwZUNoZWNrZXIpO1xuICBjb25zdCBzb3VyY2VGaWxlcyA9XG4gICAgICBwcm9ncmFtLmdldFNvdXJjZUZpbGVzKCkuZmlsdGVyKHNvdXJjZUZpbGUgPT4gY2FuTWlncmF0ZUZpbGUoYmFzZVBhdGgsIHNvdXJjZUZpbGUsIHByb2dyYW0pKTtcblxuICAvLyBBbmFseXplIHNvdXJjZSBmaWxlcyBieSBkZXRlY3RpbmcgYWxsIG1vZHVsZXMsIGRpcmVjdGl2ZXMgYW5kIGNvbXBvbmVudHMuXG4gIHNvdXJjZUZpbGVzLmZvckVhY2goc291cmNlRmlsZSA9PiBkZWZpbml0aW9uQ29sbGVjdG9yLnZpc2l0Tm9kZShzb3VyY2VGaWxlKSk7XG5cbiAgY29uc3Qge3Jlc29sdmVkTW9kdWxlcywgcmVzb2x2ZWREaXJlY3RpdmVzfSA9IGRlZmluaXRpb25Db2xsZWN0b3I7XG4gIGNvbnN0IHRyYW5zZm9ybWVyID0gbmV3IE1pc3NpbmdJbmplY3RhYmxlVHJhbnNmb3JtKHR5cGVDaGVja2VyLCBnZXRVcGRhdGVSZWNvcmRlcik7XG4gIGNvbnN0IHVwZGF0ZVJlY29yZGVycyA9IG5ldyBNYXA8dHMuU291cmNlRmlsZSwgVXBkYXRlUmVjb3JkZXI+KCk7XG5cbiAgWy4uLnRyYW5zZm9ybWVyLm1pZ3JhdGVNb2R1bGVzKHJlc29sdmVkTW9kdWxlcyksXG4gICAuLi50cmFuc2Zvcm1lci5taWdyYXRlRGlyZWN0aXZlcyhyZXNvbHZlZERpcmVjdGl2ZXMpLFxuICBdLmZvckVhY2goKHttZXNzYWdlLCBub2RlfSkgPT4ge1xuICAgIGNvbnN0IG5vZGVTb3VyY2VGaWxlID0gbm9kZS5nZXRTb3VyY2VGaWxlKCk7XG4gICAgY29uc3QgcmVsYXRpdmVGaWxlUGF0aCA9IHJlbGF0aXZlKGJhc2VQYXRoLCBub2RlU291cmNlRmlsZS5maWxlTmFtZSk7XG4gICAgY29uc3Qge2xpbmUsIGNoYXJhY3Rlcn0gPVxuICAgICAgICB0cy5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihub2RlLmdldFNvdXJjZUZpbGUoKSwgbm9kZS5nZXRTdGFydCgpKTtcbiAgICBmYWlsdXJlcy5wdXNoKGAke3JlbGF0aXZlRmlsZVBhdGh9QCR7bGluZSArIDF9OiR7Y2hhcmFjdGVyICsgMX06ICR7bWVzc2FnZX1gKTtcbiAgfSk7XG5cbiAgLy8gUmVjb3JkIHRoZSBjaGFuZ2VzIGNvbGxlY3RlZCBpbiB0aGUgaW1wb3J0IG1hbmFnZXIgYW5kIHRyYW5zZm9ybWVyLlxuICB0cmFuc2Zvcm1lci5yZWNvcmRDaGFuZ2VzKCk7XG5cbiAgLy8gV2FsayB0aHJvdWdoIGVhY2ggdXBkYXRlIHJlY29yZGVyIGFuZCBjb21taXQgdGhlIHVwZGF0ZS4gV2UgbmVlZCB0byBjb21taXQgdGhlXG4gIC8vIHVwZGF0ZXMgaW4gYmF0Y2hlcyBwZXIgc291cmNlIGZpbGUgYXMgdGhlcmUgY2FuIGJlIG9ubHkgb25lIHJlY29yZGVyIHBlciBzb3VyY2VcbiAgLy8gZmlsZSBpbiBvcmRlciB0byBhdm9pZCBzaGlmdCBjaGFyYWN0ZXIgb2Zmc2V0cy5cbiAgdXBkYXRlUmVjb3JkZXJzLmZvckVhY2gocmVjb3JkZXIgPT4gcmVjb3JkZXIuY29tbWl0VXBkYXRlKCkpO1xuXG4gIHJldHVybiBmYWlsdXJlcztcblxuICAvKiogR2V0cyB0aGUgdXBkYXRlIHJlY29yZGVyIGZvciB0aGUgc3BlY2lmaWVkIHNvdXJjZSBmaWxlLiAqL1xuICBmdW5jdGlvbiBnZXRVcGRhdGVSZWNvcmRlcihzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlKTogVXBkYXRlUmVjb3JkZXIge1xuICAgIGlmICh1cGRhdGVSZWNvcmRlcnMuaGFzKHNvdXJjZUZpbGUpKSB7XG4gICAgICByZXR1cm4gdXBkYXRlUmVjb3JkZXJzLmdldChzb3VyY2VGaWxlKSE7XG4gICAgfVxuICAgIGNvbnN0IHRyZWVSZWNvcmRlciA9IHRyZWUuYmVnaW5VcGRhdGUocmVsYXRpdmUoYmFzZVBhdGgsIHNvdXJjZUZpbGUuZmlsZU5hbWUpKTtcbiAgICBjb25zdCByZWNvcmRlcjogVXBkYXRlUmVjb3JkZXIgPSB7XG4gICAgICBhZGRDbGFzc0RlY29yYXRvcihub2RlOiB0cy5DbGFzc0RlY2xhcmF0aW9uLCB0ZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgLy8gTmV3IGltcG9ydHMgc2hvdWxkIGJlIGluc2VydGVkIGF0IHRoZSBsZWZ0IHdoaWxlIGRlY29yYXRvcnMgc2hvdWxkIGJlIGluc2VydGVkXG4gICAgICAgIC8vIGF0IHRoZSByaWdodCBpbiBvcmRlciB0byBlbnN1cmUgdGhhdCBpbXBvcnRzIGFyZSBpbnNlcnRlZCBiZWZvcmUgdGhlIGRlY29yYXRvclxuICAgICAgICAvLyBpZiB0aGUgc3RhcnQgcG9zaXRpb24gb2YgaW1wb3J0IGFuZCBkZWNvcmF0b3IgaXMgdGhlIHNvdXJjZSBmaWxlIHN0YXJ0LlxuICAgICAgICB0cmVlUmVjb3JkZXIuaW5zZXJ0UmlnaHQobm9kZS5nZXRTdGFydCgpLCBgJHt0ZXh0fVxcbmApO1xuICAgICAgfSxcbiAgICAgIHJlcGxhY2VEZWNvcmF0b3IoZGVjb3JhdG9yOiB0cy5EZWNvcmF0b3IsIG5ld1RleHQ6IHN0cmluZykge1xuICAgICAgICB0cmVlUmVjb3JkZXIucmVtb3ZlKGRlY29yYXRvci5nZXRTdGFydCgpLCBkZWNvcmF0b3IuZ2V0V2lkdGgoKSk7XG4gICAgICAgIHRyZWVSZWNvcmRlci5pbnNlcnRSaWdodChkZWNvcmF0b3IuZ2V0U3RhcnQoKSwgbmV3VGV4dCk7XG4gICAgICB9LFxuICAgICAgYWRkTmV3SW1wb3J0KHN0YXJ0OiBudW1iZXIsIGltcG9ydFRleHQ6IHN0cmluZykge1xuICAgICAgICAvLyBOZXcgaW1wb3J0cyBzaG91bGQgYmUgaW5zZXJ0ZWQgYXQgdGhlIGxlZnQgd2hpbGUgZGVjb3JhdG9ycyBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgICAgLy8gYXQgdGhlIHJpZ2h0IGluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IGltcG9ydHMgYXJlIGluc2VydGVkIGJlZm9yZSB0aGUgZGVjb3JhdG9yXG4gICAgICAgIC8vIGlmIHRoZSBzdGFydCBwb3NpdGlvbiBvZiBpbXBvcnQgYW5kIGRlY29yYXRvciBpcyB0aGUgc291cmNlIGZpbGUgc3RhcnQuXG4gICAgICAgIHRyZWVSZWNvcmRlci5pbnNlcnRMZWZ0KHN0YXJ0LCBpbXBvcnRUZXh0KTtcbiAgICAgIH0sXG4gICAgICB1cGRhdGVFeGlzdGluZ0ltcG9ydChuYW1lZEJpbmRpbmdzOiB0cy5OYW1lZEltcG9ydHMsIG5ld05hbWVkQmluZGluZ3M6IHN0cmluZykge1xuICAgICAgICB0cmVlUmVjb3JkZXIucmVtb3ZlKG5hbWVkQmluZGluZ3MuZ2V0U3RhcnQoKSwgbmFtZWRCaW5kaW5ncy5nZXRXaWR0aCgpKTtcbiAgICAgICAgdHJlZVJlY29yZGVyLmluc2VydFJpZ2h0KG5hbWVkQmluZGluZ3MuZ2V0U3RhcnQoKSwgbmV3TmFtZWRCaW5kaW5ncyk7XG4gICAgICB9LFxuICAgICAgdXBkYXRlT2JqZWN0TGl0ZXJhbChub2RlOiB0cy5PYmplY3RMaXRlcmFsRXhwcmVzc2lvbiwgbmV3VGV4dDogc3RyaW5nKSB7XG4gICAgICAgIHRyZWVSZWNvcmRlci5yZW1vdmUobm9kZS5nZXRTdGFydCgpLCBub2RlLmdldFdpZHRoKCkpO1xuICAgICAgICB0cmVlUmVjb3JkZXIuaW5zZXJ0UmlnaHQobm9kZS5nZXRTdGFydCgpLCBuZXdUZXh0KTtcbiAgICAgIH0sXG4gICAgICBjb21taXRVcGRhdGUoKSB7XG4gICAgICAgIHRyZWUuY29tbWl0VXBkYXRlKHRyZWVSZWNvcmRlcik7XG4gICAgICB9XG4gICAgfTtcbiAgICB1cGRhdGVSZWNvcmRlcnMuc2V0KHNvdXJjZUZpbGUsIHJlY29yZGVyKTtcbiAgICByZXR1cm4gcmVjb3JkZXI7XG4gIH1cbn1cbiJdfQ==
|
|
File without changes
|
|
@@ -1,50 +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
|
-
import { forwardRefResolver } from '@angular/compiler-cli/src/ngtsc/annotations';
|
|
9
|
-
import { StaticInterpreter } from '@angular/compiler-cli/src/ngtsc/partial_evaluator/src/interpreter';
|
|
10
|
-
/**
|
|
11
|
-
* Providers evaluator that extends the ngtsc static interpreter. This is necessary because
|
|
12
|
-
* the static interpreter by default only exposes the resolved value, but we are also interested
|
|
13
|
-
* in the TypeScript nodes that declare providers. It would be possible to manually traverse the
|
|
14
|
-
* AST to collect these nodes, but that would mean that we need to re-implement the static
|
|
15
|
-
* interpreter in order to handle all possible scenarios. (e.g. spread operator, function calls,
|
|
16
|
-
* callee scope). This can be avoided by simply extending the static interpreter and intercepting
|
|
17
|
-
* the "visitObjectLiteralExpression" method.
|
|
18
|
-
*/
|
|
19
|
-
export class ProvidersEvaluator extends StaticInterpreter {
|
|
20
|
-
constructor() {
|
|
21
|
-
super(...arguments);
|
|
22
|
-
this._providerLiterals = [];
|
|
23
|
-
}
|
|
24
|
-
visitObjectLiteralExpression(node, context) {
|
|
25
|
-
const resolvedValue = super.visitObjectLiteralExpression(node, Object.assign(Object.assign({}, context), { insideProviderDef: true }));
|
|
26
|
-
// do not collect nested object literals. e.g. a provider could use a
|
|
27
|
-
// spread assignment (which resolves to another object literal). In that
|
|
28
|
-
// case the referenced object literal is not a provider object literal.
|
|
29
|
-
if (!context.insideProviderDef) {
|
|
30
|
-
this._providerLiterals.push({ node, resolvedValue });
|
|
31
|
-
}
|
|
32
|
-
return resolvedValue;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Evaluates the given expression and returns its statically resolved value
|
|
36
|
-
* and a list of object literals which define Angular providers.
|
|
37
|
-
*/
|
|
38
|
-
evaluate(expr) {
|
|
39
|
-
this._providerLiterals = [];
|
|
40
|
-
const resolvedValue = this.visit(expr, {
|
|
41
|
-
originatingFile: expr.getSourceFile(),
|
|
42
|
-
absoluteModuleName: null,
|
|
43
|
-
resolutionContext: expr.getSourceFile().fileName,
|
|
44
|
-
scope: new Map(),
|
|
45
|
-
foreignFunctionResolver: forwardRefResolver
|
|
46
|
-
});
|
|
47
|
-
return { resolvedValue, literals: this._providerLiterals };
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJzX2V2YWx1YXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy9taWdyYXRpb25zL21pc3NpbmctaW5qZWN0YWJsZS9wcm92aWRlcnNfZXZhbHVhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBRS9FLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG1FQUFtRSxDQUFDO0FBUXBHOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGlCQUFpQjtJQUF6RDs7UUFDVSxzQkFBaUIsR0FBc0IsRUFBRSxDQUFDO0lBNkJwRCxDQUFDO0lBM0JDLDRCQUE0QixDQUFDLElBQWdDLEVBQUUsT0FBWTtRQUN6RSxNQUFNLGFBQWEsR0FDZixLQUFLLENBQUMsNEJBQTRCLENBQUMsSUFBSSxrQ0FBTSxPQUFPLEtBQUUsaUJBQWlCLEVBQUUsSUFBSSxJQUFFLENBQUM7UUFDcEYscUVBQXFFO1FBQ3JFLHdFQUF3RTtRQUN4RSx1RUFBdUU7UUFDdkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTtZQUM5QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLGFBQWEsRUFBQyxDQUFDLENBQUM7U0FDcEQ7UUFDRCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUSxDQUFDLElBQW1CO1FBQzFCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDNUIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDckMsZUFBZSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDckMsa0JBQWtCLEVBQUUsSUFBSTtZQUN4QixpQkFBaUIsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsUUFBUTtZQUNoRCxLQUFLLEVBQUUsSUFBSSxHQUFHLEVBQUU7WUFDaEIsdUJBQXVCLEVBQUUsa0JBQWtCO1NBQzVDLENBQUMsQ0FBQztRQUNILE9BQU8sRUFBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBQyxDQUFDO0lBQzNELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge2ZvcndhcmRSZWZSZXNvbHZlcn0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9hbm5vdGF0aW9ucyc7XG5pbXBvcnQge1Jlc29sdmVkVmFsdWV9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvcGFydGlhbF9ldmFsdWF0b3InO1xuaW1wb3J0IHtTdGF0aWNJbnRlcnByZXRlcn0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9wYXJ0aWFsX2V2YWx1YXRvci9zcmMvaW50ZXJwcmV0ZXInO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdmlkZXJMaXRlcmFsIHtcbiAgbm9kZTogdHMuT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb247XG4gIHJlc29sdmVkVmFsdWU6IFJlc29sdmVkVmFsdWU7XG59XG5cbi8qKlxuICogUHJvdmlkZXJzIGV2YWx1YXRvciB0aGF0IGV4dGVuZHMgdGhlIG5ndHNjIHN0YXRpYyBpbnRlcnByZXRlci4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZVxuICogdGhlIHN0YXRpYyBpbnRlcnByZXRlciBieSBkZWZhdWx0IG9ubHkgZXhwb3NlcyB0aGUgcmVzb2x2ZWQgdmFsdWUsIGJ1dCB3ZSBhcmUgYWxzbyBpbnRlcmVzdGVkXG4gKiBpbiB0aGUgVHlwZVNjcmlwdCBub2RlcyB0aGF0IGRlY2xhcmUgcHJvdmlkZXJzLiBJdCB3b3VsZCBiZSBwb3NzaWJsZSB0byBtYW51YWxseSB0cmF2ZXJzZSB0aGVcbiAqIEFTVCB0byBjb2xsZWN0IHRoZXNlIG5vZGVzLCBidXQgdGhhdCB3b3VsZCBtZWFuIHRoYXQgd2UgbmVlZCB0byByZS1pbXBsZW1lbnQgdGhlIHN0YXRpY1xuICogaW50ZXJwcmV0ZXIgaW4gb3JkZXIgdG8gaGFuZGxlIGFsbCBwb3NzaWJsZSBzY2VuYXJpb3MuIChlLmcuIHNwcmVhZCBvcGVyYXRvciwgZnVuY3Rpb24gY2FsbHMsXG4gKiBjYWxsZWUgc2NvcGUpLiBUaGlzIGNhbiBiZSBhdm9pZGVkIGJ5IHNpbXBseSBleHRlbmRpbmcgdGhlIHN0YXRpYyBpbnRlcnByZXRlciBhbmQgaW50ZXJjZXB0aW5nXG4gKiB0aGUgXCJ2aXNpdE9iamVjdExpdGVyYWxFeHByZXNzaW9uXCIgbWV0aG9kLlxuICovXG5leHBvcnQgY2xhc3MgUHJvdmlkZXJzRXZhbHVhdG9yIGV4dGVuZHMgU3RhdGljSW50ZXJwcmV0ZXIge1xuICBwcml2YXRlIF9wcm92aWRlckxpdGVyYWxzOiBQcm92aWRlckxpdGVyYWxbXSA9IFtdO1xuXG4gIHZpc2l0T2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24obm9kZTogdHMuT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24sIGNvbnRleHQ6IGFueSkge1xuICAgIGNvbnN0IHJlc29sdmVkVmFsdWUgPVxuICAgICAgICBzdXBlci52aXNpdE9iamVjdExpdGVyYWxFeHByZXNzaW9uKG5vZGUsIHsuLi5jb250ZXh0LCBpbnNpZGVQcm92aWRlckRlZjogdHJ1ZX0pO1xuICAgIC8vIGRvIG5vdCBjb2xsZWN0IG5lc3RlZCBvYmplY3QgbGl0ZXJhbHMuIGUuZy4gYSBwcm92aWRlciBjb3VsZCB1c2UgYVxuICAgIC8vIHNwcmVhZCBhc3NpZ25tZW50ICh3aGljaCByZXNvbHZlcyB0byBhbm90aGVyIG9iamVjdCBsaXRlcmFsKS4gSW4gdGhhdFxuICAgIC8vIGNhc2UgdGhlIHJlZmVyZW5jZWQgb2JqZWN0IGxpdGVyYWwgaXMgbm90IGEgcHJvdmlkZXIgb2JqZWN0IGxpdGVyYWwuXG4gICAgaWYgKCFjb250ZXh0Lmluc2lkZVByb3ZpZGVyRGVmKSB7XG4gICAgICB0aGlzLl9wcm92aWRlckxpdGVyYWxzLnB1c2goe25vZGUsIHJlc29sdmVkVmFsdWV9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc29sdmVkVmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogRXZhbHVhdGVzIHRoZSBnaXZlbiBleHByZXNzaW9uIGFuZCByZXR1cm5zIGl0cyBzdGF0aWNhbGx5IHJlc29sdmVkIHZhbHVlXG4gICAqIGFuZCBhIGxpc3Qgb2Ygb2JqZWN0IGxpdGVyYWxzIHdoaWNoIGRlZmluZSBBbmd1bGFyIHByb3ZpZGVycy5cbiAgICovXG4gIGV2YWx1YXRlKGV4cHI6IHRzLkV4cHJlc3Npb24pIHtcbiAgICB0aGlzLl9wcm92aWRlckxpdGVyYWxzID0gW107XG4gICAgY29uc3QgcmVzb2x2ZWRWYWx1ZSA9IHRoaXMudmlzaXQoZXhwciwge1xuICAgICAgb3JpZ2luYXRpbmdGaWxlOiBleHByLmdldFNvdXJjZUZpbGUoKSxcbiAgICAgIGFic29sdXRlTW9kdWxlTmFtZTogbnVsbCxcbiAgICAgIHJlc29sdXRpb25Db250ZXh0OiBleHByLmdldFNvdXJjZUZpbGUoKS5maWxlTmFtZSxcbiAgICAgIHNjb3BlOiBuZXcgTWFwKCksXG4gICAgICBmb3JlaWduRnVuY3Rpb25SZXNvbHZlcjogZm9yd2FyZFJlZlJlc29sdmVyXG4gICAgfSk7XG4gICAgcmV0dXJuIHtyZXNvbHZlZFZhbHVlLCBsaXRlcmFsczogdGhpcy5fcHJvdmlkZXJMaXRlcmFsc307XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,187 +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
|
-
import { Reference } from '@angular/compiler-cli/src/ngtsc/imports';
|
|
9
|
-
import { DynamicValue } from '@angular/compiler-cli/src/ngtsc/partial_evaluator';
|
|
10
|
-
import { TypeScriptReflectionHost } from '@angular/compiler-cli/src/ngtsc/reflection';
|
|
11
|
-
import * as ts from 'typescript';
|
|
12
|
-
import { ImportManager } from '../../utils/import_manager';
|
|
13
|
-
import { getAngularDecorators } from '../../utils/ng_decorators';
|
|
14
|
-
import { ProvidersEvaluator } from './providers_evaluator';
|
|
15
|
-
/**
|
|
16
|
-
* Name of decorators which imply that a given class does not need to be migrated.
|
|
17
|
-
* - `@Injectable`, `@Directive`, `@Component` and `@Pipe` instruct the compiler
|
|
18
|
-
* to generate a factory definition.
|
|
19
|
-
* - `@NgModule` instructs the compiler to generate a provider definition that holds
|
|
20
|
-
* the factory function.
|
|
21
|
-
*/
|
|
22
|
-
const NO_MIGRATE_DECORATORS = ['Injectable', 'Directive', 'Component', 'Pipe', 'NgModule'];
|
|
23
|
-
export class MissingInjectableTransform {
|
|
24
|
-
constructor(typeChecker, getUpdateRecorder) {
|
|
25
|
-
this.typeChecker = typeChecker;
|
|
26
|
-
this.getUpdateRecorder = getUpdateRecorder;
|
|
27
|
-
this.printer = ts.createPrinter();
|
|
28
|
-
this.importManager = new ImportManager(this.getUpdateRecorder, this.printer);
|
|
29
|
-
/** Set of provider class declarations which were already checked or migrated. */
|
|
30
|
-
this.visitedProviderClasses = new Set();
|
|
31
|
-
/** Set of provider object literals which were already checked or migrated. */
|
|
32
|
-
this.visitedProviderLiterals = new Set();
|
|
33
|
-
this.providersEvaluator = new ProvidersEvaluator(new TypeScriptReflectionHost(typeChecker), typeChecker, /* dependencyTracker */ null);
|
|
34
|
-
}
|
|
35
|
-
recordChanges() {
|
|
36
|
-
this.importManager.recordChanges();
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Migrates all specified NgModule's by walking through referenced providers
|
|
40
|
-
* and decorating them with "@Injectable" if needed.
|
|
41
|
-
*/
|
|
42
|
-
migrateModules(modules) {
|
|
43
|
-
return modules.reduce((failures, node) => failures.concat(this.migrateModule(node)), []);
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Migrates all specified directives by walking through referenced providers
|
|
47
|
-
* and decorating them with "@Injectable" if needed.
|
|
48
|
-
*/
|
|
49
|
-
migrateDirectives(directives) {
|
|
50
|
-
return directives.reduce((failures, node) => failures.concat(this.migrateDirective(node)), []);
|
|
51
|
-
}
|
|
52
|
-
/** Migrates a given NgModule by walking through the referenced providers. */
|
|
53
|
-
migrateModule(module) {
|
|
54
|
-
if (module.providersExpr === null) {
|
|
55
|
-
return [];
|
|
56
|
-
}
|
|
57
|
-
const { resolvedValue, literals } = this.providersEvaluator.evaluate(module.providersExpr);
|
|
58
|
-
this._migrateLiteralProviders(literals);
|
|
59
|
-
if (!Array.isArray(resolvedValue)) {
|
|
60
|
-
return [
|
|
61
|
-
{ node: module.providersExpr, message: 'Providers of module are not statically analyzable.' }
|
|
62
|
-
];
|
|
63
|
-
}
|
|
64
|
-
return this._visitProviderResolvedValue(resolvedValue, module);
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Migrates a given directive by walking through defined providers. This method
|
|
68
|
-
* also handles components with "viewProviders" defined.
|
|
69
|
-
*/
|
|
70
|
-
migrateDirective(directive) {
|
|
71
|
-
const failures = [];
|
|
72
|
-
// Migrate "providers" on directives and components if defined.
|
|
73
|
-
if (directive.providersExpr) {
|
|
74
|
-
const { resolvedValue, literals } = this.providersEvaluator.evaluate(directive.providersExpr);
|
|
75
|
-
this._migrateLiteralProviders(literals);
|
|
76
|
-
if (!Array.isArray(resolvedValue)) {
|
|
77
|
-
return [
|
|
78
|
-
{ node: directive.providersExpr, message: `Providers are not statically analyzable.` }
|
|
79
|
-
];
|
|
80
|
-
}
|
|
81
|
-
failures.push(...this._visitProviderResolvedValue(resolvedValue, directive));
|
|
82
|
-
}
|
|
83
|
-
// Migrate "viewProviders" on components if defined.
|
|
84
|
-
if (directive.viewProvidersExpr) {
|
|
85
|
-
const { resolvedValue, literals } = this.providersEvaluator.evaluate(directive.viewProvidersExpr);
|
|
86
|
-
this._migrateLiteralProviders(literals);
|
|
87
|
-
if (!Array.isArray(resolvedValue)) {
|
|
88
|
-
return [
|
|
89
|
-
{ node: directive.viewProvidersExpr, message: `Providers are not statically analyzable.` }
|
|
90
|
-
];
|
|
91
|
-
}
|
|
92
|
-
failures.push(...this._visitProviderResolvedValue(resolvedValue, directive));
|
|
93
|
-
}
|
|
94
|
-
return failures;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Migrates a given provider class if it is not decorated with
|
|
98
|
-
* any Angular decorator.
|
|
99
|
-
*/
|
|
100
|
-
migrateProviderClass(node, context) {
|
|
101
|
-
if (this.visitedProviderClasses.has(node)) {
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
this.visitedProviderClasses.add(node);
|
|
105
|
-
const sourceFile = node.getSourceFile();
|
|
106
|
-
// We cannot migrate provider classes outside of source files. This is because the
|
|
107
|
-
// migration for third-party library files should happen in "ngcc", and in general
|
|
108
|
-
// would also involve metadata parsing.
|
|
109
|
-
if (sourceFile.isDeclarationFile) {
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
const ngDecorators = node.decorators ? getAngularDecorators(this.typeChecker, node.decorators) : null;
|
|
113
|
-
if (ngDecorators !== null &&
|
|
114
|
-
ngDecorators.some(d => NO_MIGRATE_DECORATORS.indexOf(d.name) !== -1)) {
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
const updateRecorder = this.getUpdateRecorder(sourceFile);
|
|
118
|
-
const importExpr = this.importManager.addImportToSourceFile(sourceFile, 'Injectable', '@angular/core');
|
|
119
|
-
const newDecoratorExpr = ts.createDecorator(ts.createCall(importExpr, undefined, undefined));
|
|
120
|
-
const newDecoratorText = this.printer.printNode(ts.EmitHint.Unspecified, newDecoratorExpr, sourceFile);
|
|
121
|
-
// In case the class is already decorated with "@Inject(..)", we replace the "@Inject"
|
|
122
|
-
// decorator with "@Injectable()" since using "@Inject(..)" on a class is a noop and
|
|
123
|
-
// most likely was meant to be "@Injectable()".
|
|
124
|
-
const existingInjectDecorator = ngDecorators !== null ? ngDecorators.find(d => d.name === 'Inject') : null;
|
|
125
|
-
if (existingInjectDecorator) {
|
|
126
|
-
updateRecorder.replaceDecorator(existingInjectDecorator.node, newDecoratorText, context.name);
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
updateRecorder.addClassDecorator(node, newDecoratorText, context.name);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Migrates object literal providers which do not use "useValue", "useClass",
|
|
134
|
-
* "useExisting" or "useFactory". These providers behave differently in Ivy. e.g.
|
|
135
|
-
*
|
|
136
|
-
* ```ts
|
|
137
|
-
* {provide: X} -> {provide: X, useValue: undefined} // this is how it behaves in VE
|
|
138
|
-
* {provide: X} -> {provide: X, useClass: X} // this is how it behaves in Ivy
|
|
139
|
-
* ```
|
|
140
|
-
*
|
|
141
|
-
* To ensure forward compatibility, we migrate these empty object literal providers
|
|
142
|
-
* to explicitly use `useValue: undefined`.
|
|
143
|
-
*/
|
|
144
|
-
_migrateLiteralProviders(literals) {
|
|
145
|
-
for (let { node, resolvedValue } of literals) {
|
|
146
|
-
if (this.visitedProviderLiterals.has(node)) {
|
|
147
|
-
continue;
|
|
148
|
-
}
|
|
149
|
-
this.visitedProviderLiterals.add(node);
|
|
150
|
-
if (!resolvedValue || !(resolvedValue instanceof Map) || !resolvedValue.has('provide') ||
|
|
151
|
-
resolvedValue.has('useClass') || resolvedValue.has('useValue') ||
|
|
152
|
-
resolvedValue.has('useExisting') || resolvedValue.has('useFactory')) {
|
|
153
|
-
continue;
|
|
154
|
-
}
|
|
155
|
-
const sourceFile = node.getSourceFile();
|
|
156
|
-
const newObjectLiteral = ts.updateObjectLiteral(node, node.properties.concat(ts.createPropertyAssignment('useValue', ts.createIdentifier('undefined'))));
|
|
157
|
-
this.getUpdateRecorder(sourceFile)
|
|
158
|
-
.updateObjectLiteral(node, this.printer.printNode(ts.EmitHint.Unspecified, newObjectLiteral, sourceFile));
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* Visits the given resolved value of a provider. Providers can be nested in
|
|
163
|
-
* arrays and we need to recursively walk through the providers to be able to
|
|
164
|
-
* migrate all referenced provider classes. e.g. "providers: [[A, [B]]]".
|
|
165
|
-
*/
|
|
166
|
-
_visitProviderResolvedValue(value, module) {
|
|
167
|
-
if (value instanceof Reference && ts.isClassDeclaration(value.node)) {
|
|
168
|
-
this.migrateProviderClass(value.node, module);
|
|
169
|
-
}
|
|
170
|
-
else if (value instanceof Map) {
|
|
171
|
-
// If a "ClassProvider" has the "deps" property set, then we do not need to
|
|
172
|
-
// decorate the class. This is because the class is instantiated through the
|
|
173
|
-
// specified "deps" and the class does not need a factory definition.
|
|
174
|
-
if (value.has('provide') && value.has('useClass') && value.get('deps') == null) {
|
|
175
|
-
return this._visitProviderResolvedValue(value.get('useClass'), module);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
else if (Array.isArray(value)) {
|
|
179
|
-
return value.reduce((res, v) => res.concat(this._visitProviderResolvedValue(v, module)), []);
|
|
180
|
-
}
|
|
181
|
-
else if (value instanceof DynamicValue) {
|
|
182
|
-
return [{ node: value.node, message: `Provider is not statically analyzable.` }];
|
|
183
|
-
}
|
|
184
|
-
return [];
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zY2hlbWF0aWNzL21pZ3JhdGlvbnMvbWlzc2luZy1pbmplY3RhYmxlL3RyYW5zZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDbEUsT0FBTyxFQUFDLFlBQVksRUFBZ0IsTUFBTSxtREFBbUQsQ0FBQztBQUM5RixPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRixPQUFPLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFHL0QsT0FBTyxFQUFrQixrQkFBa0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRzFFOzs7Ozs7R0FNRztBQUNILE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFPM0YsTUFBTSxPQUFPLDBCQUEwQjtJQVdyQyxZQUNZLFdBQTJCLEVBQzNCLGlCQUF3RDtRQUR4RCxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUF1QztRQVo1RCxZQUFPLEdBQUcsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzdCLGtCQUFhLEdBQUcsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUdoRixpRkFBaUY7UUFDekUsMkJBQXNCLEdBQUcsSUFBSSxHQUFHLEVBQXVCLENBQUM7UUFFaEUsOEVBQThFO1FBQ3RFLDRC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QyxTQUFTLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFO2dCQUM5RSxPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQ3pFO1NBQ0Y7YUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDL0IsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUNmLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQ25FLEVBQXVCLENBQUMsQ0FBQztTQUM5QjthQUFNLElBQUksS0FBSyxZQUFZLFlBQVksRUFBRTtZQUN4QyxPQUFPLENBQUMsRUFBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsd0NBQXdDLEVBQUMsQ0FBQyxDQUFDO1NBQ2hGO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtSZWZlcmVuY2V9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvaW1wb3J0cyc7XG5pbXBvcnQge0R5bmFtaWNWYWx1ZSwgUmVzb2x2ZWRWYWx1ZX0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9wYXJ0aWFsX2V2YWx1YXRvcic7XG5pbXBvcnQge1R5cGVTY3JpcHRSZWZsZWN0aW9uSG9zdH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9yZWZsZWN0aW9uJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge0ltcG9ydE1hbmFnZXJ9IGZyb20gJy4uLy4uL3V0aWxzL2ltcG9ydF9tYW5hZ2VyJztcbmltcG9ydCB7Z2V0QW5ndWxhckRlY29yYXRvcnN9IGZyb20gJy4uLy4uL3V0aWxzL25nX2RlY29yYXRvcnMnO1xuXG5pbXBvcnQge1Jlc29sdmVkRGlyZWN0aXZlLCBSZXNvbHZlZE5nTW9kdWxlfSBmcm9tICcuL2RlZmluaXRpb25fY29sbGVjdG9yJztcbmltcG9ydCB7UHJvdmlkZXJMaXRlcmFsLCBQcm92aWRlcnNFdmFsdWF0b3J9IGZyb20gJy4vcHJvdmlkZXJzX2V2YWx1YXRvcic7XG5pbXBvcnQge1VwZGF0ZVJlY29yZGVyfSBmcm9tICcuL3VwZGF0ZV9yZWNvcmRlcic7XG5cbi8qKlxuICogTmFtZSBvZiBkZWNvcmF0b3JzIHdoaWNoIGltcGx5IHRoYXQgYSBnaXZlbiBjbGFzcyBkb2VzIG5vdCBuZWVkIHRvIGJlIG1pZ3JhdGVkLlxuICogICAgLSBgQEluamVjdGFibGVgLCBgQERpcmVjdGl2ZWAsIGBAQ29tcG9uZW50YCBhbmQgYEBQaXBlYCBpbnN0cnVjdCB0aGUgY29tcGlsZXJcbiAqICAgICAgIHRvIGdlbmVyYXRlIGEgZmFjdG9yeSBkZWZpbml0aW9uLlxuICogICAgLSBgQE5nTW9kdWxlYCBpbnN0cnVjdHMgdGhlIGNvbXBpbGVyIHRvIGdlbmVyYXRlIGEgcHJvdmlkZXIgZGVmaW5pdGlvbiB0aGF0IGhvbGRzXG4gKiAgICAgICB0aGUgZmFjdG9yeSBmdW5jdGlvbi5cbiAqL1xuY29uc3QgTk9fTUlHUkFURV9ERUNPUkFUT1JTID0gWydJbmplY3RhYmxlJywgJ0RpcmVjdGl2ZScsICdDb21wb25lbnQnLCAnUGlwZScsICdOZ01vZHVsZSddO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFuYWx5c2lzRmFpbHVyZSB7XG4gIG5vZGU6IHRzLk5vZGU7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIE1pc3NpbmdJbmplY3RhYmxlVHJhbnNmb3JtIHtcbiAgcHJpdmF0ZSBwcmludGVyID0gdHMuY3JlYXRlUHJpbnRlcigpO1xuICBwcml2YXRlIGltcG9ydE1hbmFnZXIgPSBuZXcgSW1wb3J0TWFuYWdlcih0aGlzLmdldFVwZGF0ZVJlY29yZGVyLCB0aGlzLnByaW50ZXIpO1xuICBwcml2YXRlIHByb3ZpZGVyc0V2YWx1YXRvcjogUHJvdmlkZXJzRXZhbHVhdG9yO1xuXG4gIC8qKiBTZXQgb2YgcHJvdmlkZXIgY2xhc3MgZGVjbGFyYXRpb25zIHdoaWNoIHdlcmUgYWxyZWFkeSBjaGVja2VkIG9yIG1pZ3JhdGVkLiAqL1xuICBwcml2YXRlIHZpc2l0ZWRQcm92aWRlckNsYXNzZXMgPSBuZXcgU2V0PHRzLkNsYXNzRGVjbGFyYXRpb24+KCk7XG5cbiAgLyoqIFNldCBvZiBwcm92aWRlciBvYmplY3QgbGl0ZXJhbHMgd2hpY2ggd2VyZSBhbHJlYWR5IGNoZWNrZWQgb3IgbWlncmF0ZWQuICovXG4gIHByaXZhdGUgdmlzaXRlZFByb3ZpZGVyTGl0ZXJhbHMgPSBuZXcgU2V0PHRzLk9iamVjdExpdGVyYWxFeHByZXNzaW9uPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsXG4gICAgICBwcml2YXRlIGdldFVwZGF0ZVJlY29yZGVyOiAoc2Y6IHRzLlNvdXJjZUZpbGUpID0+IFVwZGF0ZVJlY29yZGVyKSB7XG4gICAgdGhpcy5wcm92aWRlcnNFdmFsdWF0b3IgPSBuZXcgUHJvdmlkZXJzRXZhbHVhdG9yKFxuICAgICAgICBuZXcgVHlwZVNjcmlwdFJlZmxlY3Rpb25Ib3N0KHR5cGVDaGVja2VyKSwgdHlwZUNoZWNrZXIsIC8qIGRlcGVuZGVuY3lUcmFja2VyICovIG51bGwpO1xuICB9XG5cbiAgcmVjb3JkQ2hhbmdlcygpIHtcbiAgICB0aGlzLmltcG9ydE1hbmFnZXIucmVjb3JkQ2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1pZ3JhdGVzIGFsbCBzcGVjaWZpZWQgTmdNb2R1bGUncyBieSB3YWxraW5nIHRocm91Z2ggcmVmZXJlbmNlZCBwcm92aWRlcnNcbiAgICogYW5kIGRlY29yYXRpbmcgdGhlbSB3aXRoIFwiQEluamVjdGFibGVcIiBpZiBuZWVkZWQuXG4gICAqL1xuICBtaWdyYXRlTW9kdWxlcyhtb2R1bGVzOiBSZXNvbHZlZE5nTW9kdWxlW10pOiBBbmFseXNpc0ZhaWx1cmVbXSB7XG4gICAgcmV0dXJuIG1vZHVsZXMucmVkdWNlKFxuICAgICAgICAoZmFpbHVyZXMsIG5vZGUpID0+IGZhaWx1cmVzLmNvbmNhdCh0aGlzLm1pZ3JhdGVNb2R1bGUobm9kZSkpLCBbXSBhcyBBbmFseXNpc0ZhaWx1cmVbXSk7XG4gIH1cblxuICAvKipcbiAgICogTWlncmF0ZXMgYWxsIHNwZWNpZmllZCBkaXJlY3RpdmVzIGJ5IHdhbGtpbmcgdGhyb3VnaCByZWZlcmVuY2VkIHByb3ZpZGVyc1xuICAgKiBhbmQgZGVjb3JhdGluZyB0aGVtIHdpdGggXCJASW5qZWN0YWJsZVwiIGlmIG5lZWRlZC5cbiAgICovXG4gIG1pZ3JhdGVEaXJlY3RpdmVzKGRpcmVjdGl2ZXM6IFJlc29sdmVkRGlyZWN0aXZlW10pOiBBbmFseXNpc0ZhaWx1cmVbXSB7XG4gICAgcmV0dXJuIGRpcmVjdGl2ZXMucmVkdWNlKFxuICAgICAgICAoZmFpbHVyZXMsIG5vZGUpID0+IGZhaWx1cmVzLmNvbmNhdCh0aGlzLm1pZ3JhdGVEaXJlY3RpdmUobm9kZSkpLCBbXSBhcyBBbmFseXNpc0ZhaWx1cmVbXSk7XG4gIH1cblxuICAvKiogTWlncmF0ZXMgYSBnaXZlbiBOZ01vZHVsZSBieSB3YWxraW5nIHRocm91Z2ggdGhlIHJlZmVyZW5jZWQgcHJvdmlkZXJzLiAqL1xuICBtaWdyYXRlTW9kdWxlKG1vZHVsZTogUmVzb2x2ZWROZ01vZHVsZSk6IEFuYWx5c2lzRmFpbHVyZVtdIHtcbiAgICBpZiAobW9kdWxlLnByb3ZpZGVyc0V4cHIgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCB7cmVzb2x2ZWRWYWx1ZSwgbGl0ZXJhbHN9ID0gdGhpcy5wcm92aWRlcnNFdmFsdWF0b3IuZXZhbHVhdGUobW9kdWxlLnByb3ZpZGVyc0V4cHIpO1xuICAgIHRoaXMuX21pZ3JhdGVMaXRlcmFsUHJvdmlkZXJzKGxpdGVyYWxzKTtcblxuICAgIGlmICghQXJyYXkuaXNBcnJheShyZXNvbHZlZFZhbHVlKSkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge25vZGU6IG1vZHVsZS5wcm92aWRlcnNFeHByLCBtZXNzYWdlOiAnUHJvdmlkZXJzIG9mIG1vZHVsZSBhcmUgbm90IHN0YXRpY2FsbHkgYW5hbHl6YWJsZS4nfVxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fdmlzaXRQcm92aWRlclJlc29sdmVkVmFsdWUocmVzb2x2ZWRWYWx1ZSwgbW9kdWxlKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIE1pZ3JhdGVzIGEgZ2l2ZW4gZGlyZWN0aXZlIGJ5IHdhbGtpbmcgdGhyb3VnaCBkZWZpbmVkIHByb3ZpZGVycy4gVGhpcyBtZXRob2RcbiAgICogYWxzbyBoYW5kbGVzIGNvbXBvbmVudHMgd2l0aCBcInZpZXdQcm92aWRlcnNcIiBkZWZpbmVkLlxuICAgKi9cbiAgbWlncmF0ZURpcmVjdGl2ZShkaXJlY3RpdmU6IFJlc29sdmVkRGlyZWN0aXZlKTogQW5hbHlzaXNGYWlsdXJlW10ge1xuICAgIGNvbnN0IGZhaWx1cmVzOiBBbmFseXNpc0ZhaWx1cmVbXSA9IFtdO1xuXG4gICAgLy8gTWlncmF0ZSBcInByb3ZpZGVyc1wiIG9uIGRpcmVjdGl2ZXMgYW5kIGNvbXBvbmVudHMgaWYgZGVmaW5lZC5cbiAgICBpZiAoZGlyZWN0aXZlLnByb3ZpZGVyc0V4cHIpIHtcbiAgICAgIGNvbnN0IHtyZXNvbHZlZFZhbHVlLCBsaXRlcmFsc30gPSB0aGlzLnByb3ZpZGVyc0V2YWx1YXRvci5ldmFsdWF0ZShkaXJlY3RpdmUucHJvdmlkZXJzRXhwcik7XG4gICAgICB0aGlzLl9taWdyYXRlTGl0ZXJhbFByb3ZpZGVycyhsaXRlcmFscyk7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkocmVzb2x2ZWRWYWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICB7bm9kZTogZGlyZWN0aXZlLnByb3ZpZGVyc0V4cHIsIG1lc3NhZ2U6IGBQcm92aWRlcnMgYXJlIG5vdCBzdGF0aWNhbGx5IGFuYWx5emFibGUuYH1cbiAgICAgICAgXTtcbiAgICAgIH1cbiAgICAgIGZhaWx1cmVzLnB1c2goLi4udGhpcy5fdmlzaXRQcm92aWRlclJlc29sdmVkVmFsdWUocmVzb2x2ZWRWYWx1ZSwgZGlyZWN0aXZlKSk7XG4gICAgfVxuXG4gICAgLy8gTWlncmF0ZSBcInZpZXdQcm92aWRlcnNcIiBvbiBjb21wb25lbnRzIGlmIGRlZmluZWQuXG4gICAgaWYgKGRpcmVjdGl2ZS52aWV3UHJvdmlkZXJzRXhwcikge1xuICAgICAgY29uc3Qge3Jlc29sdmVkVmFsdWUsIGxpdGVyYWxzfSA9XG4gICAgICAgICAgdGhpcy5wcm92aWRlcnNFdmFsdWF0b3IuZXZhbHVhdGUoZGlyZWN0aXZlLnZpZXdQcm92aWRlcnNFeHByKTtcbiAgICAgIHRoaXMuX21pZ3JhdGVMaXRlcmFsUHJvdmlkZXJzKGxpdGVyYWxzKTtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShyZXNvbHZlZFZhbHVlKSkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIHtub2RlOiBkaXJlY3RpdmUudmlld1Byb3ZpZGVyc0V4cHIsIG1lc3NhZ2U6IGBQcm92aWRlcnMgYXJlIG5vdCBzdGF0aWNhbGx5IGFuYWx5emFibGUuYH1cbiAgICAgICAgXTtcbiAgICAgIH1cbiAgICAgIGZhaWx1cmVzLnB1c2goLi4udGhpcy5fdmlzaXRQcm92aWRlclJlc29sdmVkVmFsdWUocmVzb2x2ZWRWYWx1ZSwgZGlyZWN0aXZlKSk7XG4gICAgfVxuICAgIHJldHVybiBmYWlsdXJlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBNaWdyYXRlcyBhIGdpdmVuIHByb3ZpZGVyIGNsYXNzIGlmIGl0IGlzIG5vdCBkZWNvcmF0ZWQgd2l0aFxuICAgKiBhbnkgQW5ndWxhciBkZWNvcmF0b3IuXG4gICAqL1xuICBtaWdyYXRlUHJvdmlkZXJDbGFzcyhub2RlOiB0cy5DbGFzc0RlY2xhcmF0aW9uLCBjb250ZXh0OiBSZXNvbHZlZE5nTW9kdWxlfFJlc29sdmVkRGlyZWN0aXZlKSB7XG4gICAgaWYgKHRoaXMudmlzaXRlZFByb3ZpZGVyQ2xhc3Nlcy5oYXMobm9kZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy52aXNpdGVkUHJvdmlkZXJDbGFzc2VzLmFkZChub2RlKTtcblxuICAgIGNvbnN0IHNvdXJjZUZpbGUgPSBub2RlLmdldFNvdXJjZUZpbGUoKTtcblxuICAgIC8vIFdlIGNhbm5vdCBtaWdyYXRlIHByb3ZpZGVyIGNsYXNzZXMgb3V0c2lkZSBvZiBzb3VyY2UgZmlsZXMuIFRoaXMgaXMgYmVjYXVzZSB0aGVcbiAgICAvLyBtaWdyYXRpb24gZm9yIHRoaXJkLXBhcnR5IGxpYnJhcnkgZmlsZXMgc2hvdWxkIGhhcHBlbiBpbiBcIm5nY2NcIiwgYW5kIGluIGdlbmVyYWxcbiAgICAvLyB3b3VsZCBhbHNvIGludm9sdmUgbWV0YWRhdGEgcGFyc2luZy5cbiAgICBpZiAoc291cmNlRmlsZS5pc0RlY2xhcmF0aW9uRmlsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5nRGVjb3JhdG9ycyA9XG4gICAgICAgIG5vZGUuZGVjb3JhdG9ycyA/IGdldEFuZ3VsYXJEZWNvcmF0b3JzKHRoaXMudHlwZUNoZWNrZXIsIG5vZGUuZGVjb3JhdG9ycykgOiBudWxsO1xuXG4gICAgaWYgKG5nRGVjb3JhdG9ycyAhPT0gbnVsbCAmJlxuICAgICAgICBuZ0RlY29yYXRvcnMuc29tZShkID0+IE5PX01JR1JBVEVfREVDT1JBVE9SUy5pbmRleE9mKGQubmFtZSkgIT09IC0xKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZVJlY29yZGVyID0gdGhpcy5nZXRVcGRhdGVSZWNvcmRlcihzb3VyY2VGaWxlKTtcbiAgICBjb25zdCBpbXBvcnRFeHByID1cbiAgICAgICAgdGhpcy5pbXBvcnRNYW5hZ2VyLmFkZEltcG9ydFRvU291cmNlRmlsZShzb3VyY2VGaWxlLCAnSW5qZWN0YWJsZScsICdAYW5ndWxhci9jb3JlJyk7XG4gICAgY29uc3QgbmV3RGVjb3JhdG9yRXhwciA9IHRzLmNyZWF0ZURlY29yYXRvcih0cy5jcmVhdGVDYWxsKGltcG9ydEV4cHIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKSk7XG4gICAgY29uc3QgbmV3RGVjb3JhdG9yVGV4dCA9XG4gICAgICAgIHRoaXMucHJpbnRlci5wcmludE5vZGUodHMuRW1pdEhpbnQuVW5zcGVjaWZpZWQsIG5ld0RlY29yYXRvckV4cHIsIHNvdXJjZUZpbGUpO1xuXG5cbiAgICAvLyBJbiBjYXNlIHRoZSBjbGFzcyBpcyBhbHJlYWR5IGRlY29yYXRlZCB3aXRoIFwiQEluamVjdCguLilcIiwgd2UgcmVwbGFjZSB0aGUgXCJASW5qZWN0XCJcbiAgICAvLyBkZWNvcmF0b3Igd2l0aCBcIkBJbmplY3RhYmxlKClcIiBzaW5jZSB1c2luZyBcIkBJbmplY3QoLi4pXCIgb24gYSBjbGFzcyBpcyBhIG5vb3AgYW5kXG4gICAgLy8gbW9zdCBsaWtlbHkgd2FzIG1lYW50IHRvIGJlIFwiQEluamVjdGFibGUoKVwiLlxuICAgIGNvbnN0IGV4aXN0aW5nSW5qZWN0RGVjb3JhdG9yID1cbiAgICAgICAgbmdEZWNvcmF0b3JzICE9PSBudWxsID8gbmdEZWNvcmF0b3JzLmZpbmQoZCA9PiBkLm5hbWUgPT09ICdJbmplY3QnKSA6IG51bGw7XG4gICAgaWYgKGV4aXN0aW5nSW5qZWN0RGVjb3JhdG9yKSB7XG4gICAgICB1cGRhdGVSZWNvcmRlci5yZXBsYWNlRGVjb3JhdG9yKGV4aXN0aW5nSW5qZWN0RGVjb3JhdG9yLm5vZGUsIG5ld0RlY29yYXRvclRleHQsIGNvbnRleHQubmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVwZGF0ZVJlY29yZGVyLmFkZENsYXNzRGVjb3JhdG9yKG5vZGUsIG5ld0RlY29yYXRvclRleHQsIGNvbnRleHQubmFtZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1pZ3JhdGVzIG9iamVjdCBsaXRlcmFsIHByb3ZpZGVycyB3aGljaCBkbyBub3QgdXNlIFwidXNlVmFsdWVcIiwgXCJ1c2VDbGFzc1wiLFxuICAgKiBcInVzZUV4aXN0aW5nXCIgb3IgXCJ1c2VGYWN0b3J5XCIuIFRoZXNlIHByb3ZpZGVycyBiZWhhdmUgZGlmZmVyZW50bHkgaW4gSXZ5LiBlLmcuXG4gICAqXG4gICAqIGBgYHRzXG4gICAqICAge3Byb3ZpZGU6IFh9IC0+IHtwcm92aWRlOiBYLCB1c2VWYWx1ZTogdW5kZWZpbmVkfSAvLyB0aGlzIGlzIGhvdyBpdCBiZWhhdmVzIGluIFZFXG4gICAqICAge3Byb3ZpZGU6IFh9IC0+IHtwcm92aWRlOiBYLCB1c2VDbGFzczogWH0gLy8gdGhpcyBpcyBob3cgaXQgYmVoYXZlcyBpbiBJdnlcbiAgICogYGBgXG4gICAqXG4gICAqIFRvIGVuc3VyZSBmb3J3YXJkIGNvbXBhdGliaWxpdHksIHdlIG1pZ3JhdGUgdGhlc2UgZW1wdHkgb2JqZWN0IGxpdGVyYWwgcHJvdmlkZXJzXG4gICAqIHRvIGV4cGxpY2l0bHkgdXNlIGB1c2VWYWx1ZTogdW5kZWZpbmVkYC5cbiAgICovXG4gIHByaXZhdGUgX21pZ3JhdGVMaXRlcmFsUHJvdmlkZXJzKGxpdGVyYWxzOiBQcm92aWRlckxpdGVyYWxbXSkge1xuICAgIGZvciAobGV0IHtub2RlLCByZXNvbHZlZFZhbHVlfSBvZiBsaXRlcmFscykge1xuICAgICAgaWYgKHRoaXMudmlzaXRlZFByb3ZpZGVyTGl0ZXJhbHMuaGFzKG5vZGUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdGhpcy52aXNpdGVkUHJvdmlkZXJMaXRlcmFscy5hZGQobm9kZSk7XG5cbiAgICAgIGlmICghcmVzb2x2ZWRWYWx1ZSB8fCAhKHJlc29sdmVkVmFsdWUgaW5zdGFuY2VvZiBNYXApIHx8ICFyZXNvbHZlZFZhbHVlLmhhcygncHJvdmlkZScpIHx8XG4gICAgICAgICAgcmVzb2x2ZWRWYWx1ZS5oYXMoJ3VzZUNsYXNzJykgfHwgcmVzb2x2ZWRWYWx1ZS5oYXMoJ3VzZVZhbHVlJykgfHxcbiAgICAgICAgICByZXNvbHZlZFZhbHVlLmhhcygndXNlRXhpc3RpbmcnKSB8fCByZXNvbHZlZFZhbHVlLmhhcygndXNlRmFjdG9yeScpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzb3VyY2VGaWxlID0gbm9kZS5nZXRTb3VyY2VGaWxlKCk7XG4gICAgICBjb25zdCBuZXdPYmplY3RMaXRlcmFsID0gdHMudXBkYXRlT2JqZWN0TGl0ZXJhbChcbiAgICAgICAgICBub2RlLFxuICAgICAgICAgIG5vZGUucHJvcGVydGllcy5jb25jYXQoXG4gICAgICAgICAgICAgIHRzLmNyZWF0ZVByb3BlcnR5QXNzaWdubWVudCgndXNlVmFsdWUnLCB0cy5jcmVhdGVJZGVudGlmaWVyKCd1bmRlZmluZWQnKSkpKTtcblxuICAgICAgdGhpcy5nZXRVcGRhdGVSZWNvcmRlcihzb3VyY2VGaWxlKVxuICAgICAgICAgIC51cGRhdGVPYmplY3RMaXRlcmFsKFxuICAgICAgICAgICAgICBub2RlLCB0aGlzLnByaW50ZXIucHJpbnROb2RlKHRzLkVtaXRIaW50LlVuc3BlY2lmaWVkLCBuZXdPYmplY3RMaXRlcmFsLCBzb3VyY2VGaWxlKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZpc2l0cyB0aGUgZ2l2ZW4gcmVzb2x2ZWQgdmFsdWUgb2YgYSBwcm92aWRlci4gUHJvdmlkZXJzIGNhbiBiZSBuZXN0ZWQgaW5cbiAgICogYXJyYXlzIGFuZCB3ZSBuZWVkIHRvIHJlY3Vyc2l2ZWx5IHdhbGsgdGhyb3VnaCB0aGUgcHJvdmlkZXJzIHRvIGJlIGFibGUgdG9cbiAgICogbWlncmF0ZSBhbGwgcmVmZXJlbmNlZCBwcm92aWRlciBjbGFzc2VzLiBlLmcuIFwicHJvdmlkZXJzOiBbW0EsIFtCXV1dXCIuXG4gICAqL1xuICBwcml2YXRlIF92aXNpdFByb3ZpZGVyUmVzb2x2ZWRWYWx1ZSh2YWx1ZTogUmVzb2x2ZWRWYWx1ZSwgbW9kdWxlOiBSZXNvbHZlZE5nTW9kdWxlKTpcbiAgICAgIEFuYWx5c2lzRmFpbHVyZVtdIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBSZWZlcmVuY2UgJiYgdHMuaXNDbGFzc0RlY2xhcmF0aW9uKHZhbHVlLm5vZGUpKSB7XG4gICAgICB0aGlzLm1pZ3JhdGVQcm92aWRlckNsYXNzKHZhbHVlLm5vZGUsIG1vZHVsZSk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE1hcCkge1xuICAgICAgLy8gSWYgYSBcIkNsYXNzUHJvdmlkZXJcIiBoYXMgdGhlIFwiZGVwc1wiIHByb3BlcnR5IHNldCwgdGhlbiB3ZSBkbyBub3QgbmVlZCB0b1xuICAgICAgLy8gZGVjb3JhdGUgdGhlIGNsYXNzLiBUaGlzIGlzIGJlY2F1c2UgdGhlIGNsYXNzIGlzIGluc3RhbnRpYXRlZCB0aHJvdWdoIHRoZVxuICAgICAgLy8gc3BlY2lmaWVkIFwiZGVwc1wiIGFuZCB0aGUgY2xhc3MgZG9lcyBub3QgbmVlZCBhIGZhY3RvcnkgZGVmaW5pdGlvbi5cbiAgICAgIGlmICh2YWx1ZS5oYXMoJ3Byb3ZpZGUnKSAmJiB2YWx1ZS5oYXMoJ3VzZUNsYXNzJykgJiYgdmFsdWUuZ2V0KCdkZXBzJykgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaXRQcm92aWRlclJlc29sdmVkVmFsdWUodmFsdWUuZ2V0KCd1c2VDbGFzcycpISwgbW9kdWxlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWUucmVkdWNlKFxuICAgICAgICAgIChyZXMsIHYpID0+IHJlcy5jb25jYXQodGhpcy5fdmlzaXRQcm92aWRlclJlc29sdmVkVmFsdWUodiwgbW9kdWxlKSksXG4gICAgICAgICAgW10gYXMgQW5hbHlzaXNGYWlsdXJlW10pO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBEeW5hbWljVmFsdWUpIHtcbiAgICAgIHJldHVybiBbe25vZGU6IHZhbHVlLm5vZGUsIG1lc3NhZ2U6IGBQcm92aWRlciBpcyBub3Qgc3RhdGljYWxseSBhbmFseXphYmxlLmB9XTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG59XG4iXX0=
|
|
@@ -1,9 +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
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlX3JlY29yZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zY2hlbWF0aWNzL21pZ3JhdGlvbnMvbWlzc2luZy1pbmplY3RhYmxlL3VwZGF0ZV9yZWNvcmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQge0ltcG9ydE1hbmFnZXJVcGRhdGVSZWNvcmRlcn0gZnJvbSAnLi4vLi4vdXRpbHMvaW1wb3J0X21hbmFnZXInO1xuXG4vKipcbiAqIFVwZGF0ZSByZWNvcmRlciBpbnRlcmZhY2UgdGhhdCBpcyB1c2VkIHRvIHRyYW5zZm9ybSBzb3VyY2UgZmlsZXMgaW4gYSBub24tY29sbGlkaW5nXG4gKiB3YXkuIEFsc28gdGhpcyBpbmRpcmVjdGlvbiBtYWtlcyBpdCBwb3NzaWJsZSB0byByZS11c2UgbG9naWMgZm9yIGJvdGggVFNMaW50IHJ1bGVzXG4gKiBhbmQgQ0xJIGRldmtpdCBzY2hlbWF0aWMgdXBkYXRlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVSZWNvcmRlciBleHRlbmRzIEltcG9ydE1hbmFnZXJVcGRhdGVSZWNvcmRlciB7XG4gIGFkZENsYXNzRGVjb3JhdG9yKG5vZGU6IHRzLkNsYXNzRGVjbGFyYXRpb24sIHRleHQ6IHN0cmluZywgY2xhc3NOYW1lOiBzdHJpbmcpOiB2b2lkO1xuICByZXBsYWNlRGVjb3JhdG9yKG5vZGU6IHRzLkRlY29yYXRvciwgbmV3VGV4dDogc3RyaW5nLCBjbGFzc05hbWU6IHN0cmluZyk6IHZvaWQ7XG4gIHVwZGF0ZU9iamVjdExpdGVyYWwobm9kZTogdHMuT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24sIG5ld1RleHQ6IHN0cmluZyk6IHZvaWQ7XG4gIGNvbW1pdFVwZGF0ZSgpOiB2b2lkO1xufVxuIl19
|
|
@@ -1,59 +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
|
-
import * as ts from 'typescript';
|
|
9
|
-
import { getAngularDecorators } from '../../utils/ng_decorators';
|
|
10
|
-
import { isModuleWithProvidersNotGeneric } from './util';
|
|
11
|
-
/**
|
|
12
|
-
* Visitor that walks through specified TypeScript nodes and collects all
|
|
13
|
-
* found NgModule static methods without types and all ModuleWithProviders
|
|
14
|
-
* usages without generic types attached.
|
|
15
|
-
*/
|
|
16
|
-
export class Collector {
|
|
17
|
-
constructor(typeChecker) {
|
|
18
|
-
this.typeChecker = typeChecker;
|
|
19
|
-
this.resolvedModules = [];
|
|
20
|
-
this.resolvedNonGenerics = [];
|
|
21
|
-
}
|
|
22
|
-
visitNode(node) {
|
|
23
|
-
if (ts.isClassDeclaration(node)) {
|
|
24
|
-
this.visitClassDeclaration(node);
|
|
25
|
-
}
|
|
26
|
-
else if (isModuleWithProvidersNotGeneric(this.typeChecker, node)) {
|
|
27
|
-
this.resolvedNonGenerics.push(node);
|
|
28
|
-
}
|
|
29
|
-
ts.forEachChild(node, n => this.visitNode(n));
|
|
30
|
-
}
|
|
31
|
-
visitClassDeclaration(node) {
|
|
32
|
-
if (!node.decorators || !node.decorators.length) {
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
const ngDecorators = getAngularDecorators(this.typeChecker, node.decorators);
|
|
36
|
-
const ngModuleDecorator = ngDecorators.find(({ name }) => name === 'NgModule');
|
|
37
|
-
if (ngModuleDecorator) {
|
|
38
|
-
this._visitNgModuleClass(node, ngModuleDecorator);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
_visitNgModuleClass(node, decorator) {
|
|
42
|
-
const decoratorCall = decorator.node.expression;
|
|
43
|
-
const metadata = decoratorCall.arguments[0];
|
|
44
|
-
if (!metadata || !ts.isObjectLiteralExpression(metadata)) {
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
this.resolvedModules.push({
|
|
48
|
-
name: node.name ? node.name.text : 'default',
|
|
49
|
-
node,
|
|
50
|
-
decorator,
|
|
51
|
-
staticMethodsWithoutType: node.members.filter(isStaticMethodNoType),
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
function isStaticMethodNoType(node) {
|
|
56
|
-
return ts.isMethodDeclaration(node) && !!node.modifiers &&
|
|
57
|
-
node.modifiers.findIndex(m => m.kind === ts.SyntaxKind.StaticKeyword) > -1 && !node.type;
|
|
58
|
-
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zY2hlbWF0aWNzL21pZ3JhdGlvbnMvbW9kdWxlLXdpdGgtcHJvdmlkZXJzL2NvbGxlY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqQyxPQUFPLEVBQUMsb0JBQW9CLEVBQWMsTUFBTSwyQkFBMkIsQ0FBQztBQUU1RSxPQUFPLEVBQUMsK0JBQStCLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFhdkQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxTQUFTO0lBSXBCLFlBQW1CLFdBQTJCO1FBQTNCLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUg5QyxvQkFBZSxHQUF1QixFQUFFLENBQUM7UUFDekMsd0JBQW1CLEdBQTJCLEVBQUUsQ0FBQztJQUVBLENBQUM7SUFFbEQsU0FBUyxDQUFDLElBQWE7UUFDckIsSUFBSSxFQUFFLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDL0IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2xDO2FBQU0sSUFBSSwrQkFBK0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ2xFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDckM7UUFFRCxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRU8scUJBQXFCLENBQUMsSUFBeUI7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtZQUMvQyxPQUFPO1NBQ1I7UUFFRCxNQUFNLFlBQVksR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM3RSxNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUM7UUFFN0UsSUFBSSxpQkFBaUIsRUFBRTtZQUNyQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUM7U0FDbkQ7SUFDSCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsSUFBeUIsRUFBRSxTQUFzQjtRQUMzRSxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNoRCxNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMseUJBQXlCLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDeEQsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7WUFDeEIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQzVDLElBQUk7WUFDSixTQUFTO1lBQ1Qsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUM7U0FDcEUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBRUQsU0FBUyxvQkFBb0IsQ0FBQyxJQUFxQjtJQUNqRCxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVM7UUFDbkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQy9GLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7Z2V0QW5ndWxhckRlY29yYXRvcnMsIE5nRGVjb3JhdG9yfSBmcm9tICcuLi8uLi91dGlscy9uZ19kZWNvcmF0b3JzJztcblxuaW1wb3J0IHtpc01vZHVsZVdpdGhQcm92aWRlcnNOb3RHZW5lcmljfSBmcm9tICcuL3V0aWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVkTmdNb2R1bGUge1xuICBuYW1lOiBzdHJpbmc7XG4gIG5vZGU6IHRzLkNsYXNzRGVjbGFyYXRpb247XG4gIGRlY29yYXRvcjogTmdEZWNvcmF0b3I7XG4gIC8qKlxuICAgKiBMaXN0IG9mIGZvdW5kIHN0YXRpYyBtZXRob2QgZGVjbGFyYXRpb25zIG9uIHRoZSBtb2R1bGUgd2hpY2ggZG8gbm90XG4gICAqIGRlY2xhcmUgYW4gZXhwbGljaXQgcmV0dXJuIHR5cGUuXG4gICAqL1xuICBzdGF0aWNNZXRob2RzV2l0aG91dFR5cGU6IHRzLk1ldGhvZERlY2xhcmF0aW9uW107XG59XG5cbi8qKlxuICogVmlzaXRvciB0aGF0IHdhbGtzIHRocm91Z2ggc3BlY2lmaWVkIFR5cGVTY3JpcHQgbm9kZXMgYW5kIGNvbGxlY3RzIGFsbFxuICogZm91bmQgTmdNb2R1bGUgc3RhdGljIG1ldGhvZHMgd2l0aG91dCB0eXBlcyBhbmQgYWxsIE1vZHVsZVdpdGhQcm92aWRlcnNcbiAqIHVzYWdlcyB3aXRob3V0IGdlbmVyaWMgdHlwZXMgYXR0YWNoZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb2xsZWN0b3Ige1xuICByZXNvbHZlZE1vZHVsZXM6IFJlc29sdmVkTmdNb2R1bGVbXSA9IFtdO1xuICByZXNvbHZlZE5vbkdlbmVyaWNzOiB0cy5UeXBlUmVmZXJlbmNlTm9kZVtdID0gW107XG5cbiAgY29uc3RydWN0b3IocHVibGljIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlcikge31cblxuICB2aXNpdE5vZGUobm9kZTogdHMuTm9kZSkge1xuICAgIGlmICh0cy5pc0NsYXNzRGVjbGFyYXRpb24obm9kZSkpIHtcbiAgICAgIHRoaXMudmlzaXRDbGFzc0RlY2xhcmF0aW9uKG5vZGUpO1xuICAgIH0gZWxzZSBpZiAoaXNNb2R1bGVXaXRoUHJvdmlkZXJzTm90R2VuZXJpYyh0aGlzLnR5cGVDaGVja2VyLCBub2RlKSkge1xuICAgICAgdGhpcy5yZXNvbHZlZE5vbkdlbmVyaWNzLnB1c2gobm9kZSk7XG4gICAgfVxuXG4gICAgdHMuZm9yRWFjaENoaWxkKG5vZGUsIG4gPT4gdGhpcy52aXNpdE5vZGUobikpO1xuICB9XG5cbiAgcHJpdmF0ZSB2aXNpdENsYXNzRGVjbGFyYXRpb24obm9kZTogdHMuQ2xhc3NEZWNsYXJhdGlvbikge1xuICAgIGlmICghbm9kZS5kZWNvcmF0b3JzIHx8ICFub2RlLmRlY29yYXRvcnMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbmdEZWNvcmF0b3JzID0gZ2V0QW5ndWxhckRlY29yYXRvcnModGhpcy50eXBlQ2hlY2tlciwgbm9kZS5kZWNvcmF0b3JzKTtcbiAgICBjb25zdCBuZ01vZHVsZURlY29yYXRvciA9IG5nRGVjb3JhdG9ycy5maW5kKCh7bmFtZX0pID0+IG5hbWUgPT09ICdOZ01vZHVsZScpO1xuXG4gICAgaWYgKG5nTW9kdWxlRGVjb3JhdG9yKSB7XG4gICAgICB0aGlzLl92aXNpdE5nTW9kdWxlQ2xhc3Mobm9kZSwgbmdNb2R1bGVEZWNvcmF0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Zpc2l0TmdNb2R1bGVDbGFzcyhub2RlOiB0cy5DbGFzc0RlY2xhcmF0aW9uLCBkZWNvcmF0b3I6IE5nRGVjb3JhdG9yKSB7XG4gICAgY29uc3QgZGVjb3JhdG9yQ2FsbCA9IGRlY29yYXRvci5ub2RlLmV4cHJlc3Npb247XG4gICAgY29uc3QgbWV0YWRhdGEgPSBkZWNvcmF0b3JDYWxsLmFyZ3VtZW50c1swXTtcblxuICAgIGlmICghbWV0YWRhdGEgfHwgIXRzLmlzT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24obWV0YWRhdGEpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvbHZlZE1vZHVsZXMucHVzaCh7XG4gICAgICBuYW1lOiBub2RlLm5hbWUgPyBub2RlLm5hbWUudGV4dCA6ICdkZWZhdWx0JyxcbiAgICAgIG5vZGUsXG4gICAgICBkZWNvcmF0b3IsXG4gICAgICBzdGF0aWNNZXRob2RzV2l0aG91dFR5cGU6IG5vZGUubWVtYmVycy5maWx0ZXIoaXNTdGF0aWNNZXRob2ROb1R5cGUpLFxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzU3RhdGljTWV0aG9kTm9UeXBlKG5vZGU6IHRzLkNsYXNzRWxlbWVudCk6IG5vZGUgaXMgdHMuTWV0aG9kRGVjbGFyYXRpb24ge1xuICByZXR1cm4gdHMuaXNNZXRob2REZWNsYXJhdGlvbihub2RlKSAmJiAhIW5vZGUubW9kaWZpZXJzICYmXG4gICAgICBub2RlLm1vZGlmaWVycy5maW5kSW5kZXgobSA9PiBtLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuU3RhdGljS2V5d29yZCkgPiAtMSAmJiAhbm9kZS50eXBlO1xufVxuIl19
|