@angular/compiler-cli 8.0.0 → 8.1.0-beta.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/ngcc/index.d.ts +1 -0
- package/ngcc/index.js +1 -1
- package/ngcc/main-ngcc.js +4 -4
- package/ngcc/src/analysis/decoration_analyzer.d.ts +5 -1
- package/ngcc/src/analysis/decoration_analyzer.js +12 -12
- package/ngcc/src/analysis/module_with_providers_analyzer.js +2 -2
- package/ngcc/src/analysis/private_declarations_analyzer.d.ts +3 -2
- package/ngcc/src/analysis/private_declarations_analyzer.js +8 -7
- package/ngcc/src/dependencies/commonjs_dependency_host.d.ts +46 -0
- package/ngcc/src/dependencies/commonjs_dependency_host.js +133 -0
- package/ngcc/src/dependencies/dependency_host.d.ts +17 -0
- package/ngcc/src/dependencies/dependency_host.js +20 -0
- package/ngcc/src/{packages → dependencies}/dependency_resolver.d.ts +13 -8
- package/ngcc/src/dependencies/dependency_resolver.js +138 -0
- package/ngcc/src/dependencies/esm_dependency_host.d.ts +62 -0
- package/ngcc/src/dependencies/esm_dependency_host.js +122 -0
- package/ngcc/src/dependencies/module_resolver.d.ts +139 -0
- package/ngcc/src/dependencies/module_resolver.js +297 -0
- package/ngcc/src/dependencies/umd_dependency_host.d.ts +46 -0
- package/ngcc/src/dependencies/umd_dependency_host.js +114 -0
- package/ngcc/src/file_system/file_system.d.ts +36 -0
- package/ngcc/src/file_system/file_system.js +20 -0
- package/ngcc/src/file_system/node_js_file_system.d.ts +27 -0
- package/ngcc/src/file_system/node_js_file_system.js +44 -0
- package/ngcc/src/host/commonjs_host.d.ts +43 -0
- package/ngcc/src/host/commonjs_host.js +187 -0
- package/ngcc/src/host/esm2015_host.d.ts +8 -10
- package/ngcc/src/host/esm2015_host.js +70 -40
- package/ngcc/src/host/esm5_host.js +3 -3
- package/ngcc/src/host/umd_host.d.ts +51 -0
- package/ngcc/src/host/umd_host.js +250 -0
- package/ngcc/src/main.d.ts +7 -8
- package/ngcc/src/main.js +64 -48
- package/ngcc/src/packages/build_marker.d.ts +3 -2
- package/ngcc/src/packages/build_marker.js +5 -6
- package/ngcc/src/packages/bundle_program.d.ts +13 -4
- package/ngcc/src/packages/bundle_program.js +11 -12
- package/ngcc/src/packages/entry_point.d.ts +6 -10
- package/ngcc/src/packages/entry_point.js +28 -24
- package/ngcc/src/packages/entry_point_bundle.d.ts +3 -1
- package/ngcc/src/packages/entry_point_bundle.js +10 -21
- package/ngcc/src/packages/entry_point_finder.d.ts +33 -3
- package/ngcc/src/packages/entry_point_finder.js +80 -18
- package/ngcc/src/packages/ngcc_compiler_host.d.ts +31 -0
- package/ngcc/src/packages/ngcc_compiler_host.js +108 -0
- package/ngcc/src/packages/transformer.d.ts +7 -5
- package/ngcc/src/packages/transformer.js +36 -12
- package/ngcc/src/rendering/commonjs_rendering_formatter.d.ts +25 -0
- package/ngcc/src/rendering/commonjs_rendering_formatter.js +89 -0
- package/ngcc/src/rendering/dts_renderer.d.ts +51 -0
- package/ngcc/src/rendering/dts_renderer.js +135 -0
- package/ngcc/src/rendering/esm5_rendering_formatter.d.ts +21 -0
- package/ngcc/src/rendering/esm5_rendering_formatter.js +44 -0
- package/ngcc/src/rendering/esm_rendering_formatter.d.ts +63 -0
- package/ngcc/src/rendering/esm_rendering_formatter.js +202 -0
- package/ngcc/src/rendering/renderer.d.ts +16 -112
- package/ngcc/src/rendering/renderer.js +38 -285
- package/ngcc/src/rendering/rendering_formatter.d.ts +35 -0
- package/ngcc/src/rendering/rendering_formatter.js +14 -0
- package/ngcc/src/rendering/source_maps.d.ts +45 -0
- package/ngcc/src/rendering/source_maps.js +129 -0
- package/ngcc/src/rendering/umd_rendering_formatter.d.ts +28 -0
- package/ngcc/src/rendering/umd_rendering_formatter.js +222 -0
- package/ngcc/src/rendering/utils.d.ts +25 -0
- package/ngcc/src/rendering/utils.js +34 -0
- package/ngcc/src/utils.d.ts +12 -0
- package/ngcc/src/utils.js +10 -1
- package/ngcc/src/writing/file_writer.d.ts +2 -2
- package/ngcc/src/writing/file_writer.js +1 -1
- package/ngcc/src/writing/in_place_file_writer.d.ts +6 -10
- package/ngcc/src/writing/in_place_file_writer.js +18 -19
- package/ngcc/src/writing/new_entry_point_file_writer.d.ts +4 -4
- package/ngcc/src/writing/new_entry_point_file_writer.js +24 -25
- package/package.json +2 -2
- package/src/ngtsc/annotations/src/base_def.d.ts +5 -4
- package/src/ngtsc/annotations/src/base_def.js +12 -3
- package/src/ngtsc/annotations/src/component.d.ts +0 -1
- package/src/ngtsc/annotations/src/component.js +2 -5
- package/src/ngtsc/annotations/src/directive.d.ts +2 -1
- package/src/ngtsc/annotations/src/directive.js +5 -4
- package/src/ngtsc/annotations/src/injectable.js +1 -3
- package/src/ngtsc/annotations/src/ng_module.d.ts +2 -1
- package/src/ngtsc/annotations/src/ng_module.js +17 -10
- package/src/ngtsc/annotations/src/pipe.js +1 -1
- package/src/ngtsc/annotations/src/util.js +7 -4
- package/src/ngtsc/imports/src/emitter.d.ts +8 -6
- package/src/ngtsc/imports/src/emitter.js +10 -38
- package/src/ngtsc/imports/src/resolver.js +4 -5
- package/src/ngtsc/incremental/src/state.d.ts +15 -3
- package/src/ngtsc/incremental/src/state.js +72 -52
- package/src/ngtsc/metadata/src/api.d.ts +18 -1
- package/src/ngtsc/metadata/src/api.js +1 -1
- package/src/ngtsc/metadata/src/util.d.ts +2 -2
- package/src/ngtsc/metadata/src/util.js +28 -9
- package/src/ngtsc/partial_evaluator/index.d.ts +1 -1
- package/src/ngtsc/partial_evaluator/index.js +1 -1
- package/src/ngtsc/partial_evaluator/src/dynamic.d.ts +2 -1
- package/src/ngtsc/partial_evaluator/src/dynamic.js +1 -1
- package/src/ngtsc/partial_evaluator/src/interface.d.ts +10 -3
- package/src/ngtsc/partial_evaluator/src/interface.js +6 -7
- package/src/ngtsc/partial_evaluator/src/interpreter.d.ts +4 -3
- package/src/ngtsc/partial_evaluator/src/interpreter.js +11 -9
- package/src/ngtsc/path/src/logical.js +4 -3
- package/src/ngtsc/path/src/types.d.ts +19 -7
- package/src/ngtsc/path/src/types.js +48 -9
- package/src/ngtsc/program.js +13 -12
- package/src/ngtsc/scope/src/local.d.ts +23 -5
- package/src/ngtsc/scope/src/local.js +34 -11
- package/src/ngtsc/shims/src/factory_generator.js +4 -2
- package/src/ngtsc/transform/src/api.d.ts +0 -1
- package/src/ngtsc/transform/src/api.js +1 -1
- package/src/ngtsc/transform/src/compilation.d.ts +4 -2
- package/src/ngtsc/transform/src/compilation.js +22 -20
- package/src/ngtsc/translator/index.d.ts +1 -1
- package/src/ngtsc/translator/index.js +1 -1
- package/src/ngtsc/translator/src/translator.d.ts +21 -8
- package/src/ngtsc/translator/src/translator.js +3 -12
- package/src/ngtsc/typecheck/src/api.d.ts +2 -1
- package/src/ngtsc/typecheck/src/api.js +1 -1
- package/src/ngtsc/typecheck/src/expression.js +104 -88
- package/src/ngtsc/typecheck/src/type_check_block.js +17 -11
- package/src/ngtsc/util/src/typescript.d.ts +7 -0
- package/src/ngtsc/util/src/typescript.js +17 -1
- package/src/version.js +1 -1
- package/ngcc/src/packages/dependency_host.d.ts +0 -84
- package/ngcc/src/packages/dependency_host.js +0 -164
- package/ngcc/src/packages/dependency_resolver.js +0 -126
- package/ngcc/src/rendering/esm5_renderer.d.ts +0 -14
- package/ngcc/src/rendering/esm5_renderer.js +0 -47
- package/ngcc/src/rendering/esm_renderer.d.ts +0 -30
- package/ngcc/src/rendering/esm_renderer.js +0 -141
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google Inc. All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
(function (factory) {
|
|
9
|
-
if (typeof module === "object" && typeof module.exports === "object") {
|
|
10
|
-
var v = factory(require, exports);
|
|
11
|
-
if (v !== undefined) module.exports = v;
|
|
12
|
-
}
|
|
13
|
-
else if (typeof define === "function" && define.amd) {
|
|
14
|
-
define("@angular/compiler-cli/ngcc/src/packages/dependency_host", ["require", "exports", "canonical-path", "fs", "typescript", "@angular/compiler-cli/src/ngtsc/path"], factory);
|
|
15
|
-
}
|
|
16
|
-
})(function (require, exports) {
|
|
17
|
-
"use strict";
|
|
18
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
var path = require("canonical-path");
|
|
20
|
-
var fs = require("fs");
|
|
21
|
-
var ts = require("typescript");
|
|
22
|
-
var path_1 = require("@angular/compiler-cli/src/ngtsc/path");
|
|
23
|
-
/**
|
|
24
|
-
* Helper functions for computing dependencies.
|
|
25
|
-
*/
|
|
26
|
-
var DependencyHost = /** @class */ (function () {
|
|
27
|
-
function DependencyHost() {
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Get a list of the resolved paths to all the dependencies of this entry point.
|
|
31
|
-
* @param from An absolute path to the file whose dependencies we want to get.
|
|
32
|
-
* @param dependencies A set that will have the absolute paths of resolved entry points added to
|
|
33
|
-
* it.
|
|
34
|
-
* @param missing A set that will have the dependencies that could not be found added to it.
|
|
35
|
-
* @param deepImports A set that will have the import paths that exist but cannot be mapped to
|
|
36
|
-
* entry-points, i.e. deep-imports.
|
|
37
|
-
* @param internal A set that is used to track internal dependencies to prevent getting stuck in a
|
|
38
|
-
* circular dependency loop.
|
|
39
|
-
*/
|
|
40
|
-
DependencyHost.prototype.computeDependencies = function (from, dependencies, missing, deepImports, internal) {
|
|
41
|
-
var _this = this;
|
|
42
|
-
if (dependencies === void 0) { dependencies = new Set(); }
|
|
43
|
-
if (missing === void 0) { missing = new Set(); }
|
|
44
|
-
if (deepImports === void 0) { deepImports = new Set(); }
|
|
45
|
-
if (internal === void 0) { internal = new Set(); }
|
|
46
|
-
var fromContents = fs.readFileSync(from, 'utf8');
|
|
47
|
-
if (!this.hasImportOrReexportStatements(fromContents)) {
|
|
48
|
-
return { dependencies: dependencies, missing: missing, deepImports: deepImports };
|
|
49
|
-
}
|
|
50
|
-
// Parse the source into a TypeScript AST and then walk it looking for imports and re-exports.
|
|
51
|
-
var sf = ts.createSourceFile(from, fromContents, ts.ScriptTarget.ES2015, false, ts.ScriptKind.JS);
|
|
52
|
-
sf.statements
|
|
53
|
-
// filter out statements that are not imports or reexports
|
|
54
|
-
.filter(this.isStringImportOrReexport)
|
|
55
|
-
// Grab the id of the module that is being imported
|
|
56
|
-
.map(function (stmt) { return stmt.moduleSpecifier.text; })
|
|
57
|
-
// Resolve this module id into an absolute path
|
|
58
|
-
.forEach(function (importPath) {
|
|
59
|
-
if (importPath.startsWith('.')) {
|
|
60
|
-
// This is an internal import so follow it
|
|
61
|
-
var internalDependency = _this.resolveInternal(from, importPath);
|
|
62
|
-
// Avoid circular dependencies
|
|
63
|
-
if (!internal.has(internalDependency)) {
|
|
64
|
-
internal.add(internalDependency);
|
|
65
|
-
_this.computeDependencies(internalDependency, dependencies, missing, deepImports, internal);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
var resolvedEntryPoint = _this.tryResolveEntryPoint(from, importPath);
|
|
70
|
-
if (resolvedEntryPoint !== null) {
|
|
71
|
-
dependencies.add(resolvedEntryPoint);
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
// If the import could not be resolved as entry point, it either does not exist
|
|
75
|
-
// at all or is a deep import.
|
|
76
|
-
var deeplyImportedFile = _this.tryResolve(from, importPath);
|
|
77
|
-
if (deeplyImportedFile !== null) {
|
|
78
|
-
deepImports.add(importPath);
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
missing.add(importPath);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
return { dependencies: dependencies, missing: missing, deepImports: deepImports };
|
|
87
|
-
};
|
|
88
|
-
/**
|
|
89
|
-
* Resolve an internal module import.
|
|
90
|
-
* @param from the absolute file path from where to start trying to resolve this module
|
|
91
|
-
* @param to the module specifier of the internal dependency to resolve
|
|
92
|
-
* @returns the resolved path to the import.
|
|
93
|
-
*/
|
|
94
|
-
DependencyHost.prototype.resolveInternal = function (from, to) {
|
|
95
|
-
var fromDirectory = path.dirname(from);
|
|
96
|
-
// `fromDirectory` is absolute so we don't need to worry about telling `require.resolve`
|
|
97
|
-
// about it by adding it to a `paths` parameter - unlike `tryResolve` below.
|
|
98
|
-
return path_1.AbsoluteFsPath.from(require.resolve(path.resolve(fromDirectory, to)));
|
|
99
|
-
};
|
|
100
|
-
/**
|
|
101
|
-
* We don't want to resolve external dependencies directly because if it is a path to a
|
|
102
|
-
* sub-entry-point (e.g. @angular/animations/browser rather than @angular/animations)
|
|
103
|
-
* then `require.resolve()` may return a path to a UMD bundle, which may actually live
|
|
104
|
-
* in the folder containing the sub-entry-point
|
|
105
|
-
* (e.g. @angular/animations/bundles/animations-browser.umd.js).
|
|
106
|
-
*
|
|
107
|
-
* Instead we try to resolve it as a package, which is what we would need anyway for it to be
|
|
108
|
-
* compilable by ngcc.
|
|
109
|
-
*
|
|
110
|
-
* If `to` is actually a path to a file then this will fail, which is what we want.
|
|
111
|
-
*
|
|
112
|
-
* @param from the file path from where to start trying to resolve this module
|
|
113
|
-
* @param to the module specifier of the dependency to resolve
|
|
114
|
-
* @returns the resolved path to the entry point directory of the import or null
|
|
115
|
-
* if it cannot be resolved.
|
|
116
|
-
*/
|
|
117
|
-
DependencyHost.prototype.tryResolveEntryPoint = function (from, to) {
|
|
118
|
-
var entryPoint = this.tryResolve(from, to + "/package.json");
|
|
119
|
-
return entryPoint && path_1.AbsoluteFsPath.from(path.dirname(entryPoint));
|
|
120
|
-
};
|
|
121
|
-
/**
|
|
122
|
-
* Resolve the absolute path of a module from a particular starting point.
|
|
123
|
-
*
|
|
124
|
-
* @param from the file path from where to start trying to resolve this module
|
|
125
|
-
* @param to the module specifier of the dependency to resolve
|
|
126
|
-
* @returns an absolute path to the entry-point of the dependency or null if it could not be
|
|
127
|
-
* resolved.
|
|
128
|
-
*/
|
|
129
|
-
DependencyHost.prototype.tryResolve = function (from, to) {
|
|
130
|
-
try {
|
|
131
|
-
return path_1.AbsoluteFsPath.from(require.resolve(to, { paths: [from] }));
|
|
132
|
-
}
|
|
133
|
-
catch (e) {
|
|
134
|
-
return null;
|
|
135
|
-
}
|
|
136
|
-
};
|
|
137
|
-
/**
|
|
138
|
-
* Check whether the given statement is an import with a string literal module specifier.
|
|
139
|
-
* @param stmt the statement node to check.
|
|
140
|
-
* @returns true if the statement is an import with a string literal module specifier.
|
|
141
|
-
*/
|
|
142
|
-
DependencyHost.prototype.isStringImportOrReexport = function (stmt) {
|
|
143
|
-
return ts.isImportDeclaration(stmt) ||
|
|
144
|
-
ts.isExportDeclaration(stmt) && !!stmt.moduleSpecifier &&
|
|
145
|
-
ts.isStringLiteral(stmt.moduleSpecifier);
|
|
146
|
-
};
|
|
147
|
-
/**
|
|
148
|
-
* Check whether a source file needs to be parsed for imports.
|
|
149
|
-
* This is a performance short-circuit, which saves us from creating
|
|
150
|
-
* a TypeScript AST unnecessarily.
|
|
151
|
-
*
|
|
152
|
-
* @param source The content of the source file to check.
|
|
153
|
-
*
|
|
154
|
-
* @returns false if there are definitely no import or re-export statements
|
|
155
|
-
* in this file, true otherwise.
|
|
156
|
-
*/
|
|
157
|
-
DependencyHost.prototype.hasImportOrReexportStatements = function (source) {
|
|
158
|
-
return /(import|export)\s.+from/.test(source);
|
|
159
|
-
};
|
|
160
|
-
return DependencyHost;
|
|
161
|
-
}());
|
|
162
|
-
exports.DependencyHost = DependencyHost;
|
|
163
|
-
});
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwZW5kZW5jeV9ob3N0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL25nY2Mvc3JjL3BhY2thZ2VzL2RlcGVuZGVuY3lfaG9zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7OztJQUVILHFDQUF1QztJQUN2Qyx1QkFBeUI7SUFDekIsK0JBQWlDO0lBRWpDLDZEQUFvRTtJQUVwRTs7T0FFRztJQUNIO1FBQUE7UUEySUEsQ0FBQztRQTFJQzs7Ozs7Ozs7OztXQVVHO1FBQ0gsNENBQW1CLEdBQW5CLFVBQ0ksSUFBb0IsRUFBRSxZQUE2QyxFQUNuRSxPQUFxQyxFQUFFLFdBQXlDLEVBQ2hGLFFBQXlDO1lBSDdDLGlCQWlEQztZQWhEeUIsNkJBQUEsRUFBQSxtQkFBd0MsR0FBRyxFQUFFO1lBQ25FLHdCQUFBLEVBQUEsY0FBZ0MsR0FBRyxFQUFFO1lBQUUsNEJBQUEsRUFBQSxrQkFBb0MsR0FBRyxFQUFFO1lBQ2hGLHlCQUFBLEVBQUEsZUFBb0MsR0FBRyxFQUFFO1lBSzNDLElBQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQ3JELE9BQU8sRUFBQyxZQUFZLGNBQUEsRUFBRSxPQUFPLFNBQUEsRUFBRSxXQUFXLGFBQUEsRUFBQyxDQUFDO2FBQzdDO1lBRUQsOEZBQThGO1lBQzlGLElBQU0sRUFBRSxHQUNKLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzdGLEVBQUUsQ0FBQyxVQUFVO2dCQUNULDBE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T0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDO2dCQUMvQixFQUFFLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlO29CQUN0RCxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBRUQ7Ozs7Ozs7OztXQVNHO1FBQ0gsc0RBQTZCLEdBQTdCLFVBQThCLE1BQWM7WUFDMUMsT0FBTyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUNILHFCQUFDO0lBQUQsQ0FBQyxBQTNJRCxJQTJJQztJQTNJWSx3Q0FBYyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdjYW5vbmljYWwtcGF0aCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtBYnNvbHV0ZUZzUGF0aCwgUGF0aFNlZ21lbnR9IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy9wYXRoJztcblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBjb21wdXRpbmcgZGVwZW5kZW5jaWVzLlxuICovXG5leHBvcnQgY2xhc3MgRGVwZW5kZW5jeUhvc3Qge1xuICAvKipcbiAgICogR2V0IGEgbGlzdCBvZiB0aGUgcmVzb2x2ZWQgcGF0aHMgdG8gYWxsIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhpcyBlbnRyeSBwb2ludC5cbiAgICogQHBhcmFtIGZyb20gQW4gYWJzb2x1dGUgcGF0aCB0byB0aGUgZmlsZSB3aG9zZSBkZXBlbmRlbmNpZXMgd2Ugd2FudCB0byBnZXQuXG4gICAqIEBwYXJhbSBkZXBlbmRlbmNpZXMgQSBzZXQgdGhhdCB3aWxsIGhhdmUgdGhlIGFic29sdXRlIHBhdGhzIG9mIHJlc29sdmVkIGVudHJ5IHBvaW50cyBhZGRlZCB0b1xuICAgKiBpdC5cbiAgICogQHBhcmFtIG1pc3NpbmcgQSBzZXQgdGhhdCB3aWxsIGhhdmUgdGhlIGRlcGVuZGVuY2llcyB0aGF0IGNvdWxkIG5vdCBiZSBmb3VuZCBhZGRlZCB0byBpdC5cbiAgICogQHBhcmFtIGRlZXBJbXBvcnRzIEEgc2V0IHRoYXQgd2lsbCBoYXZlIHRoZSBpbXBvcnQgcGF0aHMgdGhhdCBleGlzdCBidXQgY2Fubm90IGJlIG1hcHBlZCB0b1xuICAgKiBlbnRyeS1wb2ludHMsIGkuZS4gZGVlcC1pbXBvcnRzLlxuICAgKiBAcGFyYW0gaW50ZXJuYWwgQSBzZXQgdGhhdCBpcyB1c2VkIHRvIHRyYWNrIGludGVybmFsIGRlcGVuZGVuY2llcyB0byBwcmV2ZW50IGdldHRpbmcgc3R1Y2sgaW4gYVxuICAgKiBjaXJjdWxhciBkZXBlbmRlbmN5IGxvb3AuXG4gICAqL1xuICBjb21wdXRlRGVwZW5kZW5jaWVzKFxuICAgICAgZnJvbTogQWJzb2x1dGVGc1BhdGgsIGRlcGVuZGVuY2llczogU2V0PEFic29sdXRlRnNQYXRoPiA9IG5ldyBTZXQoKSxcbiAgICAgIG1pc3Npbmc6IFNldDxQYXRoU2VnbWVudD4gPSBuZXcgU2V0KCksIGRlZXBJbXBvcnRzOiBTZXQ8UGF0aFNlZ21lbnQ+ID0gbmV3IFNldCgpLFxuICAgICAgaW50ZXJuYWw6IFNldDxBYnNvbHV0ZUZzUGF0aD4gPSBuZXcgU2V0KCkpOiB7XG4gICAgZGVwZW5kZW5jaWVzOiBTZXQ8QWJzb2x1dGVGc1BhdGg+LFxuICAgIG1pc3Npbmc6IFNldDxQYXRoU2VnbWVudD4sXG4gICAgZGVlcEltcG9ydHM6IFNldDxQYXRoU2VnbWVudD5cbiAgfSB7XG4gICAgY29uc3QgZnJvbUNvbnRlbnRzID0gZnMucmVhZEZpbGVTeW5jKGZyb20sICd1dGY4Jyk7XG4gICAgaWYgKCF0aGlzLmhhc0ltcG9ydE9yUmVleHBvcnRTdGF0ZW1lbnRzKGZyb21Db250ZW50cykpIHtcbiAgICAgIHJldHVybiB7ZGVwZW5kZW5jaWVzLCBtaXNzaW5nLCBkZWVwSW1wb3J0c307XG4gICAgfVxuXG4gICAgLy8gUGFyc2UgdGhlIHNvdXJjZSBpbnRvIGEgVHlwZVNjcmlwdCBBU1QgYW5kIHRoZW4gd2FsayBpdCBsb29raW5nIGZvciBpbXBvcnRzIGFuZCByZS1leHBvcnRzLlxuICAgIGNvbnN0IHNmID1cbiAgICAgICAgdHMuY3JlYXRlU291cmNlRmlsZShmcm9tLCBmcm9tQ29udGVudHMsIHRzLlNjcmlwdFRhcmdldC5FUzIwMTUsIGZhbHNlLCB0cy5TY3JpcHRLaW5kLkpTKTtcbiAgICBzZi5zdGF0ZW1lbnRzXG4gICAgICAgIC8vIGZpbHRlciBvdXQgc3RhdGVtZW50cyB0aGF0IGFyZSBub3QgaW1wb3J0cyBvciByZWV4cG9ydHNcbiAgICAgICAgLmZpbHRlcih0aGlzLmlzU3RyaW5nSW1wb3J0T3JSZWV4cG9ydClcbiAgICAgICAgLy8gR3JhYiB0aGUgaWQgb2YgdGhlIG1vZHVsZSB0aGF0IGlzIGJlaW5nIGltcG9ydGVkXG4gICAgICAgIC5tYXAoc3RtdCA9PiBzdG10Lm1vZHVsZVNwZWNpZmllci50ZXh0KVxuICAgICAgICAvLyBSZXNvbHZlIHRoaXMgbW9kdWxlIGlkIGludG8gYW4gYWJzb2x1dGUgcGF0aFxuICAgICAgICAuZm9yRWFjaCgoaW1wb3J0UGF0aDogUGF0aFNlZ21lbnQpID0+IHtcbiAgICAgICAgICBpZiAoaW1wb3J0UGF0aC5zdGFydHNXaXRoKCcuJykpIHtcbiAgICAgICAgICAgIC8vIFRoaXMgaXMgYW4gaW50ZXJuYWwgaW1wb3J0IHNvIGZvbGxvdyBpdFxuICAgICAgICAgICAgY29uc3QgaW50ZXJuYWxEZXBlbmRlbmN5ID0gdGhpcy5yZXNvbHZlSW50ZXJuYWwoZnJvbSwgaW1wb3J0UGF0aCk7XG4gICAgICAgICAgICAvLyBBdm9pZCBjaXJjdWxhciBkZXBlbmRlbmNpZXNcbiAgICAgICAgICAgIGlmICghaW50ZXJuYWwuaGFzKGludGVybmFsRGVwZW5kZW5jeSkpIHtcbiAgICAgICAgICAgICAgaW50ZXJuYWwuYWRkKGludGVybmFsRGVwZW5kZW5jeSk7XG4gICAgICAgICAgICAgIHRoaXMuY29tcHV0ZURlcGVuZGVuY2llcyhcbiAgICAgICAgICAgICAgICAgIGludGVybmFsRGVwZW5kZW5jeSwgZGVwZW5kZW5jaWVzLCBtaXNzaW5nLCBkZWVwSW1wb3J0cywgaW50ZXJuYWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByZXNvbHZlZEVudHJ5UG9pbnQgPSB0aGlzLnRyeVJlc29sdmVFbnRyeVBvaW50KGZyb20sIGltcG9ydFBhdGgpO1xuICAgICAgICAgICAgaWYgKHJlc29sdmVkRW50cnlQb2ludCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMuYWRkKHJlc29sdmVkRW50cnlQb2ludCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBJZiB0aGUgaW1wb3J0IGNvdWxkIG5vdCBiZSByZXNvbHZlZCBhcyBlbnRyeSBwb2ludCwgaXQgZWl0aGVyIGRvZXMgbm90IGV4aXN0XG4gICAgICAgICAgICAgIC8vIGF0IGFsbCBvciBpcyBhIGRlZXAgaW1wb3J0LlxuICAgICAgICAgICAgICBjb25zdCBkZWVwbHlJbXBvcnRlZEZpbGUgPSB0aGlzLnRyeVJlc29sdmUoZnJvbSwgaW1wb3J0UGF0aCk7XG4gICAgICAgICAgICAgIGlmIChkZWVwbHlJbXBvcnRlZEZpbGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBkZWVwSW1wb3J0cy5hZGQoaW1wb3J0UGF0aCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbWlzc2luZy5hZGQoaW1wb3J0UGF0aCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIHJldHVybiB7ZGVwZW5kZW5jaWVzLCBtaXNzaW5nLCBkZWVwSW1wb3J0c307XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZSBhbiBpbnRlcm5hbCBtb2R1bGUgaW1wb3J0LlxuICAgKiBAcGFyYW0gZnJvbSB0aGUgYWJzb2x1dGUgZmlsZSBwYXRoIGZyb20gd2hlcmUgdG8gc3RhcnQgdHJ5aW5nIHRvIHJlc29sdmUgdGhpcyBtb2R1bGVcbiAgICogQHBhcmFtIHRvIHRoZSBtb2R1bGUgc3BlY2lmaWVyIG9mIHRoZSBpbnRlcm5hbCBkZXBlbmRlbmN5IHRvIHJlc29sdmVcbiAgICogQHJldHVybnMgdGhlIHJlc29sdmVkIHBhdGggdG8gdGhlIGltcG9ydC5cbiAgICovXG4gIHJlc29sdmVJbnRlcm5hbChmcm9tOiBBYnNvbHV0ZUZzUGF0aCwgdG86IFBhdGhTZWdtZW50KTogQWJzb2x1dGVGc1BhdGgge1xuICAgIGNvbnN0IGZyb21EaXJlY3RvcnkgPSBwYXRoLmRpcm5hbWUoZnJvbSk7XG4gICAgLy8gYGZyb21EaXJlY3RvcnlgIGlzIGFic29sdXRlIHNvIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgdGVsbGluZyBgcmVxdWlyZS5yZXNvbHZlYFxuICAgIC8vIGFib3V0IGl0IGJ5IGFkZGluZyBpdCB0byBhIGBwYXRoc2AgcGFyYW1ldGVyIC0gdW5saWtlIGB0cnlSZXNvbHZlYCBiZWxvdy5cbiAgICByZXR1cm4gQWJzb2x1dGVGc1BhdGguZnJvbShyZXF1aXJlLnJlc29sdmUocGF0aC5yZXNvbHZlKGZyb21EaXJlY3RvcnksIHRvKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdlIGRvbid0IHdhbnQgdG8gcmVzb2x2ZSBleHRlcm5hbCBkZXBlbmRlbmNpZXMgZGlyZWN0bHkgYmVjYXVzZSBpZiBpdCBpcyBhIHBhdGggdG8gYVxuICAgKiBzdWItZW50cnktcG9pbnQgKGUuZy4gQGFuZ3VsYXIvYW5pbWF0aW9ucy9icm93c2VyIHJhdGhlciB0aGFuIEBhbmd1bGFyL2FuaW1hdGlvbnMpXG4gICAqIHRoZW4gYHJlcXVpcmUucmVzb2x2ZSgpYCBtYXkgcmV0dXJuIGEgcGF0aCB0byBhIFVNRCBidW5kbGUsIHdoaWNoIG1heSBhY3R1YWxseSBsaXZlXG4gICAqIGluIHRoZSBmb2xkZXIgY29udGFpbmluZyB0aGUgc3ViLWVudHJ5LXBvaW50XG4gICAqIChlLmcuIEBhbmd1bGFyL2FuaW1hdGlvbnMvYnVuZGxlcy9hbmltYXRpb25zLWJyb3dzZXIudW1kLmpzKS5cbiAgICpcbiAgICogSW5zdGVhZCB3ZSB0cnkgdG8gcmVzb2x2ZSBpdCBhcyBhIHBhY2thZ2UsIHdoaWNoIGlzIHdoYXQgd2Ugd291bGQgbmVlZCBhbnl3YXkgZm9yIGl0IHRvIGJlXG4gICAqIGNvbXBpbGFibGUgYnkgbmdjYy5cbiAgICpcbiAgICogSWYgYHRvYCBpcyBhY3R1YWxseSBhIHBhdGggdG8gYSBmaWxlIHRoZW4gdGhpcyB3aWxsIGZhaWwsIHdoaWNoIGlzIHdoYXQgd2Ugd2FudC5cbiAgICpcbiAgICogQHBhcmFtIGZyb20gdGhlIGZpbGUgcGF0aCBmcm9tIHdoZXJlIHRvIHN0YXJ0IHRyeWluZyB0byByZXNvbHZlIHRoaXMgbW9kdWxlXG4gICAqIEBwYXJhbSB0byB0aGUgbW9kdWxlIHNwZWNpZmllciBvZiB0aGUgZGVwZW5kZW5jeSB0byByZXNvbHZlXG4gICAqIEByZXR1cm5zIHRoZSByZXNvbHZlZCBwYXRoIHRvIHRoZSBlbnRyeSBwb2ludCBkaXJlY3Rvcnkgb2YgdGhlIGltcG9ydCBvciBudWxsXG4gICAqIGlmIGl0IGNhbm5vdCBiZSByZXNvbHZlZC5cbiAgICovXG4gIHRyeVJlc29sdmVFbnRyeVBvaW50KGZyb206IEFic29sdXRlRnNQYXRoLCB0bzogUGF0aFNlZ21lbnQpOiBBYnNvbHV0ZUZzUGF0aHxudWxsIHtcbiAgICBjb25zdCBlbnRyeVBvaW50ID0gdGhpcy50cnlSZXNvbHZlKGZyb20sIGAke3RvfS9wYWNrYWdlLmpzb25gIGFzIFBhdGhTZWdtZW50KTtcbiAgICByZXR1cm4gZW50cnlQb2ludCAmJiBBYnNvbHV0ZUZzUGF0aC5mcm9tKHBhdGguZGlybmFtZShlbnRyeVBvaW50KSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZSB0aGUgYWJzb2x1dGUgcGF0aCBvZiBhIG1vZHVsZSBmcm9tIGEgcGFydGljdWxhciBzdGFydGluZyBwb2ludC5cbiAgICpcbiAgICogQHBhcmFtIGZyb20gdGhlIGZpbGUgcGF0aCBmcm9tIHdoZXJlIHRvIHN0YXJ0IHRyeWluZyB0byByZXNvbHZlIHRoaXMgbW9kdWxlXG4gICAqIEBwYXJhbSB0byB0aGUgbW9kdWxlIHNwZWNpZmllciBvZiB0aGUgZGVwZW5kZW5jeSB0byByZXNvbHZlXG4gICAqIEByZXR1cm5zIGFuIGFic29sdXRlIHBhdGggdG8gdGhlIGVudHJ5LXBvaW50IG9mIHRoZSBkZXBlbmRlbmN5IG9yIG51bGwgaWYgaXQgY291bGQgbm90IGJlXG4gICAqIHJlc29sdmVkLlxuICAgKi9cbiAgdHJ5UmVzb2x2ZShmcm9tOiBBYnNvbHV0ZUZzUGF0aCwgdG86IFBhdGhTZWdtZW50KTogQWJzb2x1dGVGc1BhdGh8bnVsbCB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBBYnNvbHV0ZUZzUGF0aC5mcm9tKHJlcXVpcmUucmVzb2x2ZSh0bywge3BhdGhzOiBbZnJvbV19KSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgdGhlIGdpdmVuIHN0YXRlbWVudCBpcyBhbiBpbXBvcnQgd2l0aCBhIHN0cmluZyBsaXRlcmFsIG1vZHVsZSBzcGVjaWZpZXIuXG4gICAqIEBwYXJhbSBzdG10IHRoZSBzdGF0ZW1lbnQgbm9kZSB0byBjaGVjay5cbiAgICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgc3RhdGVtZW50IGlzIGFuIGltcG9ydCB3aXRoIGEgc3RyaW5nIGxpdGVyYWwgbW9kdWxlIHNwZWNpZmllci5cbiAgICovXG4gIGlzU3RyaW5nSW1wb3J0T3JSZWV4cG9ydChzdG10OiB0cy5TdGF0ZW1lbnQpOiBzdG10IGlzIHRzLkltcG9ydERlY2xhcmF0aW9uJlxuICAgICAge21vZHVsZVNwZWNpZmllcjogdHMuU3RyaW5nTGl0ZXJhbH0ge1xuICAgIHJldHVybiB0cy5pc0ltcG9ydERlY2xhcmF0aW9uKHN0bXQpIHx8XG4gICAgICAgIHRzLmlzRXhwb3J0RGVjbGFyYXRpb24oc3RtdCkgJiYgISFzdG10Lm1vZHVsZVNwZWNpZmllciAmJlxuICAgICAgICB0cy5pc1N0cmluZ0xpdGVyYWwoc3RtdC5tb2R1bGVTcGVjaWZpZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgYSBzb3VyY2UgZmlsZSBuZWVkcyB0byBiZSBwYXJzZWQgZm9yIGltcG9ydHMuXG4gICAqIFRoaXMgaXMgYSBwZXJmb3JtYW5jZSBzaG9ydC1jaXJjdWl0LCB3aGljaCBzYXZlcyB1cyBmcm9tIGNyZWF0aW5nXG4gICAqIGEgVHlwZVNjcmlwdCBBU1QgdW5uZWNlc3NhcmlseS5cbiAgICpcbiAgICogQHBhcmFtIHNvdXJjZSBUaGUgY29udGVudCBvZiB0aGUgc291cmNlIGZpbGUgdG8gY2hlY2suXG4gICAqXG4gICAqIEByZXR1cm5zIGZhbHNlIGlmIHRoZXJlIGFyZSBkZWZpbml0ZWx5IG5vIGltcG9ydCBvciByZS1leHBvcnQgc3RhdGVtZW50c1xuICAgKiBpbiB0aGlzIGZpbGUsIHRydWUgb3RoZXJ3aXNlLlxuICAgKi9cbiAgaGFzSW1wb3J0T3JSZWV4cG9ydFN0YXRlbWVudHMoc291cmNlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gLyhpbXBvcnR8ZXhwb3J0KVxccy4rZnJvbS8udGVzdChzb3VyY2UpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google Inc. All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
(function (factory) {
|
|
9
|
-
if (typeof module === "object" && typeof module.exports === "object") {
|
|
10
|
-
var v = factory(require, exports);
|
|
11
|
-
if (v !== undefined) module.exports = v;
|
|
12
|
-
}
|
|
13
|
-
else if (typeof define === "function" && define.amd) {
|
|
14
|
-
define("@angular/compiler-cli/ngcc/src/packages/dependency_resolver", ["require", "exports", "tslib", "canonical-path", "dependency-graph", "@angular/compiler-cli/src/ngtsc/path", "@angular/compiler-cli/ngcc/src/packages/entry_point"], factory);
|
|
15
|
-
}
|
|
16
|
-
})(function (require, exports) {
|
|
17
|
-
"use strict";
|
|
18
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
var tslib_1 = require("tslib");
|
|
20
|
-
var canonical_path_1 = require("canonical-path");
|
|
21
|
-
var dependency_graph_1 = require("dependency-graph");
|
|
22
|
-
var path_1 = require("@angular/compiler-cli/src/ngtsc/path");
|
|
23
|
-
var entry_point_1 = require("@angular/compiler-cli/ngcc/src/packages/entry_point");
|
|
24
|
-
/**
|
|
25
|
-
* A class that resolves dependencies between entry-points.
|
|
26
|
-
*/
|
|
27
|
-
var DependencyResolver = /** @class */ (function () {
|
|
28
|
-
function DependencyResolver(logger, host) {
|
|
29
|
-
this.logger = logger;
|
|
30
|
-
this.host = host;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Sort the array of entry points so that the dependant entry points always come later than
|
|
34
|
-
* their dependencies in the array.
|
|
35
|
-
* @param entryPoints An array entry points to sort.
|
|
36
|
-
* @param target If provided, only return entry-points depended on by this entry-point.
|
|
37
|
-
* @returns the result of sorting the entry points by dependency.
|
|
38
|
-
*/
|
|
39
|
-
DependencyResolver.prototype.sortEntryPointsByDependency = function (entryPoints, target) {
|
|
40
|
-
var _a = this.createDependencyInfo(entryPoints), invalidEntryPoints = _a.invalidEntryPoints, ignoredDependencies = _a.ignoredDependencies, graph = _a.graph;
|
|
41
|
-
var sortedEntryPointNodes;
|
|
42
|
-
if (target) {
|
|
43
|
-
sortedEntryPointNodes = graph.dependenciesOf(target.path);
|
|
44
|
-
sortedEntryPointNodes.push(target.path);
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
sortedEntryPointNodes = graph.overallOrder();
|
|
48
|
-
}
|
|
49
|
-
return {
|
|
50
|
-
entryPoints: sortedEntryPointNodes.map(function (path) { return graph.getNodeData(path); }),
|
|
51
|
-
invalidEntryPoints: invalidEntryPoints,
|
|
52
|
-
ignoredDependencies: ignoredDependencies,
|
|
53
|
-
};
|
|
54
|
-
};
|
|
55
|
-
/**
|
|
56
|
-
* Computes a dependency graph of the given entry-points.
|
|
57
|
-
*
|
|
58
|
-
* The graph only holds entry-points that ngcc cares about and whose dependencies
|
|
59
|
-
* (direct and transitive) all exist.
|
|
60
|
-
*/
|
|
61
|
-
DependencyResolver.prototype.createDependencyInfo = function (entryPoints) {
|
|
62
|
-
var _this = this;
|
|
63
|
-
var invalidEntryPoints = [];
|
|
64
|
-
var ignoredDependencies = [];
|
|
65
|
-
var graph = new dependency_graph_1.DepGraph();
|
|
66
|
-
// Add the entry points to the graph as nodes
|
|
67
|
-
entryPoints.forEach(function (entryPoint) { return graph.addNode(entryPoint.path, entryPoint); });
|
|
68
|
-
// Now add the dependencies between them
|
|
69
|
-
entryPoints.forEach(function (entryPoint) {
|
|
70
|
-
var entryPointPath = getEntryPointPath(entryPoint);
|
|
71
|
-
var _a = _this.host.computeDependencies(entryPointPath), dependencies = _a.dependencies, missing = _a.missing, deepImports = _a.deepImports;
|
|
72
|
-
if (missing.size > 0) {
|
|
73
|
-
// This entry point has dependencies that are missing
|
|
74
|
-
// so remove it from the graph.
|
|
75
|
-
removeNodes(entryPoint, Array.from(missing));
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
dependencies.forEach(function (dependencyPath) {
|
|
79
|
-
if (graph.hasNode(dependencyPath)) {
|
|
80
|
-
// The dependency path maps to an entry point that exists in the graph
|
|
81
|
-
// so add the dependency.
|
|
82
|
-
graph.addDependency(entryPoint.path, dependencyPath);
|
|
83
|
-
}
|
|
84
|
-
else if (invalidEntryPoints.some(function (i) { return i.entryPoint.path === dependencyPath; })) {
|
|
85
|
-
// The dependency path maps to an entry-point that was previously removed
|
|
86
|
-
// from the graph, so remove this entry-point as well.
|
|
87
|
-
removeNodes(entryPoint, [dependencyPath]);
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
// The dependency path points to a package that ngcc does not care about.
|
|
91
|
-
ignoredDependencies.push({ entryPoint: entryPoint, dependencyPath: dependencyPath });
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
if (deepImports.size) {
|
|
96
|
-
var imports = Array.from(deepImports).map(function (i) { return "'" + i + "'"; }).join(', ');
|
|
97
|
-
_this.logger.warn("Entry point '" + entryPoint.name + "' contains deep imports into " + imports + ". " +
|
|
98
|
-
"This is probably not a problem, but may cause the compilation of entry points to be out of order.");
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
return { invalidEntryPoints: invalidEntryPoints, ignoredDependencies: ignoredDependencies, graph: graph };
|
|
102
|
-
function removeNodes(entryPoint, missingDependencies) {
|
|
103
|
-
var nodesToRemove = tslib_1.__spread([entryPoint.path], graph.dependantsOf(entryPoint.path));
|
|
104
|
-
nodesToRemove.forEach(function (node) {
|
|
105
|
-
invalidEntryPoints.push({ entryPoint: graph.getNodeData(node), missingDependencies: missingDependencies });
|
|
106
|
-
graph.removeNode(node);
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
return DependencyResolver;
|
|
111
|
-
}());
|
|
112
|
-
exports.DependencyResolver = DependencyResolver;
|
|
113
|
-
function getEntryPointPath(entryPoint) {
|
|
114
|
-
var properties = Object.keys(entryPoint.packageJson);
|
|
115
|
-
for (var i = 0; i < properties.length; i++) {
|
|
116
|
-
var property = properties[i];
|
|
117
|
-
var format = entry_point_1.getEntryPointFormat(property);
|
|
118
|
-
if (format === 'esm2015' || format === 'esm5') {
|
|
119
|
-
var formatPath = entryPoint.packageJson[property];
|
|
120
|
-
return path_1.AbsoluteFsPath.from(canonical_path_1.resolve(entryPoint.path, formatPath));
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
throw new Error("There is no format with import statements in '" + entryPoint.path + "' entry-point.");
|
|
124
|
-
}
|
|
125
|
-
});
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwZW5kZW5jeV9yZXNvbHZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9uZ2NjL3NyYy9wYWNrYWdlcy9kZXBlbmRlbmN5X3Jlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7OztJQUVILGlEQUF1QztJQUN2QyxxREFBMEM7SUFFMUMsNkRBQXVEO0lBSXZELG1GQUFzRjtJQWtEdEY7O09BRUc7SUFDSDtRQUNFLDRCQUFvQixNQUFjLEVBQVUsSUFBb0I7WUFBNUMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtZQUFVLFNBQUksR0FBSixJQUFJLENBQWdCO1FBQUcsQ0FBQztRQUNwRTs7Ozs7O1dBTUc7UUFDSCx3REFBMkIsR0FBM0IsVUFBNEIsV0FBeUIsRUFBRSxNQUFtQjtZQUVsRSxJQUFBLDJDQUF5RixFQUF4RiwwQ0FBa0IsRUFBRSw0Q0FBbUIsRUFBRSxnQkFBK0MsQ0FBQztZQUVoRyxJQUFJLHFCQUErQixDQUFDO1lBQ3BDLElBQUksTUFBTSxFQUFFO2dCQUNWLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMxRCxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3pDO2lCQUFNO2dCQUNMLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUM5QztZQUVELE9BQU87Z0JBQ0wsV0FBVyxFQUFFLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxVQUFBLElBQUksSUFBSSxPQUFBLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQXZCLENBQXVCLENBQUM7Z0JBQ3ZFLGtCQUFrQixvQkFBQTtnQkFDbEIsbUJBQW1CLHFCQUFBO2FBQ3BCLENBQUM7UUFDSixDQUFDO1FBRUQ7Ozs7O1dBS0c7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QyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztRQUNILHlCQUFDO0lBQUQsQ0FBQyxBQXRGRCxJQXNGQztJQXRGWSxnREFBa0I7SUF3Ri9CLFNBQVMsaUJBQWlCLENBQUMsVUFBc0I7UUFDL0MsSUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDMUMsSUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBMkIsQ0FBQztZQUN6RCxJQUFNLE1BQU0sR0FBRyxpQ0FBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUU3QyxJQUFJLE1BQU0sS0FBSyxTQUFTLElBQUksTUFBTSxLQUFLLE1BQU0sRUFBRTtnQkFDN0MsSUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUcsQ0FBQztnQkFDdEQsT0FBTyxxQkFBYyxDQUFDLElBQUksQ0FBQyx3QkFBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQzthQUNsRTtTQUNGO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBaUQsVUFBVSxDQUFDLElBQUksbUJBQWdCLENBQUMsQ0FBQztJQUNwRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge3Jlc29sdmV9IGZyb20gJ2Nhbm9uaWNhbC1wYXRoJztcbmltcG9ydCB7RGVwR3JhcGh9IGZyb20gJ2RlcGVuZGVuY3ktZ3JhcGgnO1xuXG5pbXBvcnQge0Fic29sdXRlRnNQYXRofSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvcGF0aCc7XG5pbXBvcnQge0xvZ2dlcn0gZnJvbSAnLi4vbG9nZ2luZy9sb2dnZXInO1xuXG5pbXBvcnQge0RlcGVuZGVuY3lIb3N0fSBmcm9tICcuL2RlcGVuZGVuY3lfaG9zdCc7XG5pbXBvcnQge0VudHJ5UG9pbnQsIEVudHJ5UG9pbnRKc29uUHJvcGVydHksIGdldEVudHJ5UG9pbnRGb3JtYXR9IGZyb20gJy4vZW50cnlfcG9pbnQnO1xuXG5cbi8qKlxuICogSG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgZW50cnkgcG9pbnRzIHRoYXQgYXJlIHJlbW92ZWQgYmVjYXVzZVxuICogdGhleSBoYXZlIGRlcGVuZGVuY2llcyB0aGF0IGFyZSBtaXNzaW5nIChkaXJlY3RseSBvciB0cmFuc2l0aXZlbHkpLlxuICpcbiAqIFRoaXMgbWlnaHQgbm90IGJlIGFuIGVycm9yLCBiZWNhdXNlIHN1Y2ggYW4gZW50cnkgcG9pbnQgbWlnaHQgbm90IGFjdHVhbGx5IGJlIHVzZWRcbiAqIGluIHRoZSBhcHBsaWNhdGlvbi4gSWYgaXQgaXMgdXNlZCB0aGVuIHRoZSBgbmdjYCBhcHBsaWNhdGlvbiBjb21waWxhdGlvbiB3b3VsZFxuICogZmFpbCBhbHNvLCBzbyB3ZSBkb24ndCBuZWVkIG5nY2MgdG8gY2F0Y2ggdGhpcy5cbiAqXG4gKiBGb3IgZXhhbXBsZSwgY29uc2lkZXIgYW4gYXBwbGljYXRpb24gdGhhdCB1c2VzIHRoZSBgQGFuZ3VsYXIvcm91dGVyYCBwYWNrYWdlLlxuICogVGhpcyBwYWNrYWdlIGluY2x1ZGVzIGFuIGVudHJ5LXBvaW50IGNhbGxlZCBgQGFuZ3VsYXIvcm91dGVyL3VwZ3JhZGVgLCB3aGljaCBoYXMgYSBkZXBlbmRlbmN5XG4gKiBvbiB0aGUgYEBhbmd1bGFyL3VwZ3JhZGVgIHBhY2thZ2UuXG4gKiBJZiB0aGUgYXBwbGljYXRpb24gbmV2ZXIgdXNlcyBjb2RlIGZyb20gYEBhbmd1bGFyL3JvdXRlci91cGdyYWRlYCB0aGVuIHRoZXJlIGlzIG5vIG5lZWQgZm9yXG4gKiBgQGFuZ3VsYXIvdXBncmFkZWAgdG8gYmUgaW5zdGFsbGVkLlxuICogSW4gdGhpcyBjYXNlIHRoZSBuZ2NjIHRvb2wgc2hvdWxkIGp1c3QgaWdub3JlIHRoZSBgQGFuZ3VsYXIvcm91dGVyL3VwZ3JhZGVgIGVuZC1wb2ludC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnZhbGlkRW50cnlQb2ludCB7XG4gIGVudHJ5UG9pbnQ6IEVudHJ5UG9pbnQ7XG4gIG1pc3NpbmdEZXBlbmRlbmNpZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEhvbGRzIGluZm9ybWF0aW9uIGFib3V0IGRlcGVuZGVuY2llcyBvZiBhbiBlbnRyeS1wb2ludCB0aGF0IGRvIG5vdCBuZWVkIHRvIGJlIHByb2Nlc3NlZFxuICogYnkgdGhlIG5nY2MgdG9vbC5cbiAqXG4gKiBGb3IgZXhhbXBsZSwgdGhlIGByeGpzYCBwYWNrYWdlIGRvZXMgbm90IGNvbnRhaW4gYW55IEFuZ3VsYXIgZGVjb3JhdG9ycyB0aGF0IG5lZWQgdG8gYmVcbiAqIGNvbXBpbGVkIGFuZCBzbyB0aGlzIGNhbiBiZSBzYWZlbHkgaWdub3JlZCBieSBuZ2NjLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElnbm9yZWREZXBlbmRlbmN5IHtcbiAgZW50cnlQb2ludDogRW50cnlQb2ludDtcbiAgZGVwZW5kZW5jeVBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIGxpc3Qgb2YgZW50cnktcG9pbnRzLCBzb3J0ZWQgYnkgdGhlaXIgZGVwZW5kZW5jaWVzLlxuICpcbiAqIFRoZSBgZW50cnlQb2ludHNgIGFycmF5IHdpbGwgYmUgb3JkZXJlZCBzbyB0aGF0IG5vIGVudHJ5IHBvaW50IGRlcGVuZHMgdXBvbiBhbiBlbnRyeSBwb2ludCB0aGF0XG4gKiBhcHBlYXJzIGxhdGVyIGluIHRoZSBhcnJheS5cbiAqXG4gKiBTb21lIGVudHJ5IHBvaW50cyBvciB0aGVpciBkZXBlbmRlbmNpZXMgbWF5IGJlIGhhdmUgYmVlbiBpZ25vcmVkLiBUaGVzZSBhcmUgY2FwdHVyZWQgZm9yXG4gKiBkaWFnbm9zdGljIHB1cnBvc2VzIGluIGBpbnZhbGlkRW50cnlQb2ludHNgIGFuZCBgaWdub3JlZERlcGVuZGVuY2llc2AgcmVzcGVjdGl2ZWx5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNvcnRlZEVudHJ5UG9pbnRzSW5mbyB7XG4gIGVudHJ5UG9pbnRzOiBFbnRyeVBvaW50W107XG4gIGludmFsaWRFbnRyeVBvaW50czogSW52YWxpZEVudHJ5UG9pbnRbXTtcbiAgaWdub3JlZERlcGVuZGVuY2llczogSWdub3JlZERlcGVuZGVuY3lbXTtcbn1cblxuLyoqXG4gKiBBIGNsYXNzIHRoYXQgcmVzb2x2ZXMgZGVwZW5kZW5jaWVzIGJldHdlZW4gZW50cnktcG9pbnRzLlxuICovXG5leHBvcnQgY2xhc3MgRGVwZW5kZW5jeVJlc29sdmVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsb2dnZXI6IExvZ2dlciwgcHJpdmF0ZSBob3N0OiBEZXBlbmRlbmN5SG9zdCkge31cbiAgLyoqXG4gICAqIFNvcnQgdGhlIGFycmF5IG9mIGVudHJ5IHBvaW50cyBzbyB0aGF0IHRoZSBkZXBlbmRhbnQgZW50cnkgcG9pbnRzIGFsd2F5cyBjb21lIGxhdGVyIHRoYW5cbiAgICogdGhlaXIgZGVwZW5kZW5jaWVzIGluIHRoZSBhcnJheS5cbiAgICogQHBhcmFtIGVudHJ5UG9pbnRzIEFuIGFycmF5IGVudHJ5IHBvaW50cyB0byBzb3J0LlxuICAgKiBAcGFyYW0gdGFyZ2V0IElmIHByb3ZpZGVkLCBvbmx5IHJldHVybiBlbnRyeS1wb2ludHMgZGVwZW5kZWQgb24gYnkgdGhpcyBlbnRyeS1wb2ludC5cbiAgICogQHJldHVybnMgdGhlIHJlc3VsdCBvZiBzb3J0aW5nIHRoZSBlbnRyeSBwb2ludHMgYnkgZGVwZW5kZW5jeS5cbiAgICovXG4gIHNvcnRFbnRyeVBvaW50c0J5RGVwZW5kZW5jeShlbnRyeVBvaW50czogRW50cnlQb2ludFtdLCB0YXJnZXQ/OiBFbnRyeVBvaW50KTpcbiAgICAgIFNvcnRlZEVudHJ5UG9pbnRzSW5mbyB7XG4gICAgY29uc3Qge2ludmFsaWRFbnRyeVBvaW50cywgaWdub3JlZERlcGVuZGVuY2llcywgZ3JhcGh9ID0gdGhpcy5jcmVhdGVEZXBlbmRlbmN5SW5mbyhlbnRyeVBvaW50cyk7XG5cbiAgICBsZXQgc29ydGVkRW50cnlQb2ludE5vZGVzOiBzdHJpbmdbXTtcbiAgICBpZiAodGFyZ2V0KSB7XG4gICAgICBzb3J0ZWRFbnRyeVBvaW50Tm9kZXMgPSBncmFwaC5kZXBlbmRlbmNpZXNPZih0YXJnZXQucGF0aCk7XG4gICAgICBzb3J0ZWRFbnRyeVBvaW50Tm9kZXMucHVzaCh0YXJnZXQucGF0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNvcnRlZEVudHJ5UG9pbnROb2RlcyA9IGdyYXBoLm92ZXJhbGxPcmRlcigpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBlbnRyeVBvaW50czogc29ydGVkRW50cnlQb2ludE5vZGVzLm1hcChwYXRoID0+IGdyYXBoLmdldE5vZGVEYXRhKHBhdGgpKSxcbiAgICAgIGludmFsaWRFbnRyeVBvaW50cyxcbiAgICAgIGlnbm9yZWREZXBlbmRlbmNpZXMsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyBhIGRlcGVuZGVuY3kgZ3JhcGggb2YgdGhlIGdpdmVuIGVudHJ5LXBvaW50cy5cbiAgICpcbiAgICogVGhlIGdyYXBoIG9ubHkgaG9sZHMgZW50cnktcG9pbnRzIHRoYXQgbmdjYyBjYXJlcyBhYm91dCBhbmQgd2hvc2UgZGVwZW5kZW5jaWVzXG4gICAqIChkaXJlY3QgYW5kIHRyYW5zaXRpdmUpIGFsbCBleGlzdC5cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlRGVwZW5kZW5jeUluZm8oZW50cnlQb2ludHM6IEVudHJ5UG9pbnRbXSkge1xuICAgIGNvbnN0IGludmFsaWRFbnRyeVBvaW50czogSW52YWxpZEVudHJ5UG9pbnRbXSA9IFtdO1xuICAgIGNvbnN0IGlnbm9yZWREZXBlbmRlbmNpZXM6IElnbm9yZWREZXBlbmRlbmN5W10gPSBbXTtcbiAgICBjb25zdCBncmFwaCA9IG5ldyBEZXBHcmFwaDxFbnRyeVBvaW50PigpO1xuXG4gICAgLy8gQWRkIHRoZSBlbnRyeSBwb2ludHMgdG8gdGhlIGdyYXBoIGFzIG5vZGVzXG4gICAgZW50cnlQb2ludHMuZm9yRWFjaChlbnRyeVBvaW50ID0+IGdyYXBoLmFkZE5vZGUoZW50cnlQb2ludC5wYXRoLCBlbnRyeVBvaW50KSk7XG5cbiAgICAvLyBOb3cgYWRkIHRoZSBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGVtXG4gICAgZW50cnlQb2ludHMuZm9yRWFjaChlbnRyeVBvaW50ID0+IHtcbiAgICAgIGNvbnN0IGVudHJ5UG9pbnRQYXRoID0gZ2V0RW50cnlQb2ludFBhdGgoZW50cnlQb2ludCk7XG4gICAgICBjb25zdCB7ZGVwZW5kZW5jaWVzLCBtaXNzaW5nLCBkZWVwSW1wb3J0c30gPSB0aGlzLmhvc3QuY29tcHV0ZURlcGVuZGVuY2llcyhlbnRyeVBvaW50UGF0aCk7XG5cbiAgICAgIGlmIChtaXNzaW5nLnNpemUgPiAwKSB7XG4gICAgICAgIC8vIFRoaXMgZW50cnkgcG9pbnQgaGFzIGRlcGVuZGVuY2llcyB0aGF0IGFyZSBtaXNzaW5nXG4gICAgICAgIC8vIHNvIHJlbW92ZSBpdCBmcm9tIHRoZSBncmFwaC5cbiAgICAgICAgcmVtb3ZlTm9kZXMoZW50cnlQb2ludCwgQXJyYXkuZnJvbShtaXNzaW5nKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZXBlbmRlbmNpZXMuZm9yRWFjaChkZXBlbmRlbmN5UGF0aCA9PiB7XG4gICAgICAgICAgaWYgKGdyYXBoLmhhc05vZGUoZGVwZW5kZW5jeVBhdGgpKSB7XG4gICAgICAgICAgICAvLyBUaGUgZGVwZW5kZW5jeSBwYXRoIG1hcHMgdG8gYW4gZW50cnkgcG9pbnQgdGhhdCBleGlzdHMgaW4gdGhlIGdyYXBoXG4gICAgICAgICAgICAvLyBzbyBhZGQgdGhlIGRlcGVuZGVuY3kuXG4gICAgICAgICAgICBncmFwaC5hZGREZXBlbmRlbmN5KGVudHJ5UG9pbnQucGF0aCwgZGVwZW5kZW5jeVBhdGgpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaW52YWxpZEVudHJ5UG9pbnRzLnNvbWUoaSA9PiBpLmVudHJ5UG9pbnQucGF0aCA9PT0gZGVwZW5kZW5jeVBhdGgpKSB7XG4gICAgICAgICAgICAvLyBUaGUgZGVwZW5kZW5jeSBwYXRoIG1hcHMgdG8gYW4gZW50cnktcG9pbnQgdGhhdCB3YXMgcHJldmlvdXNseSByZW1vdmVkXG4gICAgICAgICAgICAvLyBmcm9tIHRoZSBncmFwaCwgc28gcmVtb3ZlIHRoaXMgZW50cnktcG9pbnQgYXMgd2VsbC5cbiAgICAgICAgICAgIHJlbW92ZU5vZGVzKGVudHJ5UG9pbnQsIFtkZXBlbmRlbmN5UGF0aF0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUaGUgZGVwZW5kZW5jeSBwYXRoIHBvaW50cyB0byBhIHBhY2thZ2UgdGhhdCBuZ2NjIGRvZXMgbm90IGNhcmUgYWJvdXQuXG4gICAgICAgICAgICBpZ25vcmVkRGVwZW5kZW5jaWVzLnB1c2goe2VudHJ5UG9pbnQsIGRlcGVuZGVuY3lQYXRofSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRlZXBJbXBvcnRzLnNpemUpIHtcbiAgICAgICAgY29uc3QgaW1wb3J0cyA9IEFycmF5LmZyb20oZGVlcEltcG9ydHMpLm1hcChpID0+IGAnJHtpfSdgKS5qb2luKCcsICcpO1xuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKFxuICAgICAgICAgICAgYEVudHJ5IHBvaW50ICcke2VudHJ5UG9pbnQubmFtZX0nIGNvbnRhaW5zIGRlZXAgaW1wb3J0cyBpbnRvICR7aW1wb3J0c30uIGAgK1xuICAgICAgICAgICAgYFRoaXMgaXMgcHJvYmFibHkgbm90IGEgcHJvYmxlbSwgYnV0IG1heSBjYXVzZSB0aGUgY29tcGlsYXRpb24gb2YgZW50cnkgcG9pbnRzIHRvIGJlIG91dCBvZiBvcmRlci5gKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB7aW52YWxpZEVudHJ5UG9pbnRzLCBpZ25vcmVkRGVwZW5kZW5jaWVzLCBncmFwaH07XG5cbiAgICBmdW5jdGlvbiByZW1vdmVOb2RlcyhlbnRyeVBvaW50OiBFbnRyeVBvaW50LCBtaXNzaW5nRGVwZW5kZW5jaWVzOiBzdHJpbmdbXSkge1xuICAgICAgY29uc3Qgbm9kZXNUb1JlbW92ZSA9IFtlbnRyeVBvaW50LnBhdGgsIC4uLmdyYXBoLmRlcGVuZGFudHNPZihlbnRyeVBvaW50LnBhdGgpXTtcbiAgICAgIG5vZGVzVG9SZW1vdmUuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgaW52YWxpZEVudHJ5UG9pbnRzLnB1c2goe2VudHJ5UG9pbnQ6IGdyYXBoLmdldE5vZGVEYXRhKG5vZGUpLCBtaXNzaW5nRGVwZW5kZW5jaWVzfSk7XG4gICAgICAgIGdyYXBoLnJlbW92ZU5vZGUobm9kZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RW50cnlQb2ludFBhdGgoZW50cnlQb2ludDogRW50cnlQb2ludCk6IEFic29sdXRlRnNQYXRoIHtcbiAgY29uc3QgcHJvcGVydGllcyA9IE9iamVjdC5rZXlzKGVudHJ5UG9pbnQucGFja2FnZUpzb24pO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IHByb3BlcnRpZXNbaV0gYXMgRW50cnlQb2ludEpzb25Qcm9wZXJ0eTtcbiAgICBjb25zdCBmb3JtYXQgPSBnZXRFbnRyeVBvaW50Rm9ybWF0KHByb3BlcnR5KTtcblxuICAgIGlmIChmb3JtYXQgPT09ICdlc20yMDE1JyB8fCBmb3JtYXQgPT09ICdlc201Jykge1xuICAgICAgY29uc3QgZm9ybWF0UGF0aCA9IGVudHJ5UG9pbnQucGFja2FnZUpzb25bcHJvcGVydHldICE7XG4gICAgICByZXR1cm4gQWJzb2x1dGVGc1BhdGguZnJvbShyZXNvbHZlKGVudHJ5UG9pbnQucGF0aCwgZm9ybWF0UGF0aCkpO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYFRoZXJlIGlzIG5vIGZvcm1hdCB3aXRoIGltcG9ydCBzdGF0ZW1lbnRzIGluICcke2VudHJ5UG9pbnQucGF0aH0nIGVudHJ5LXBvaW50LmApO1xufVxuIl19
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/// <amd-module name="@angular/compiler-cli/ngcc/src/rendering/esm5_renderer" />
|
|
2
|
-
import MagicString from 'magic-string';
|
|
3
|
-
import { NgccReflectionHost } from '../host/ngcc_host';
|
|
4
|
-
import { CompiledClass } from '../analysis/decoration_analyzer';
|
|
5
|
-
import { EsmRenderer } from './esm_renderer';
|
|
6
|
-
import { EntryPointBundle } from '../packages/entry_point_bundle';
|
|
7
|
-
import { Logger } from '../logging/logger';
|
|
8
|
-
export declare class Esm5Renderer extends EsmRenderer {
|
|
9
|
-
constructor(logger: Logger, host: NgccReflectionHost, isCore: boolean, bundle: EntryPointBundle, sourcePath: string);
|
|
10
|
-
/**
|
|
11
|
-
* Add the definitions to each decorated class
|
|
12
|
-
*/
|
|
13
|
-
addDefinitions(output: MagicString, compiledClass: CompiledClass, definitions: string): void;
|
|
14
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
(function (factory) {
|
|
2
|
-
if (typeof module === "object" && typeof module.exports === "object") {
|
|
3
|
-
var v = factory(require, exports);
|
|
4
|
-
if (v !== undefined) module.exports = v;
|
|
5
|
-
}
|
|
6
|
-
else if (typeof define === "function" && define.amd) {
|
|
7
|
-
define("@angular/compiler-cli/ngcc/src/rendering/esm5_renderer", ["require", "exports", "tslib", "typescript", "@angular/compiler-cli/ngcc/src/host/esm5_host", "@angular/compiler-cli/ngcc/src/rendering/esm_renderer"], factory);
|
|
8
|
-
}
|
|
9
|
-
})(function (require, exports) {
|
|
10
|
-
"use strict";
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
var tslib_1 = require("tslib");
|
|
13
|
-
/**
|
|
14
|
-
* @license
|
|
15
|
-
* Copyright Google Inc. All Rights Reserved.
|
|
16
|
-
*
|
|
17
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
18
|
-
* found in the LICENSE file at https://angular.io/license
|
|
19
|
-
*/
|
|
20
|
-
var ts = require("typescript");
|
|
21
|
-
var esm5_host_1 = require("@angular/compiler-cli/ngcc/src/host/esm5_host");
|
|
22
|
-
var esm_renderer_1 = require("@angular/compiler-cli/ngcc/src/rendering/esm_renderer");
|
|
23
|
-
var Esm5Renderer = /** @class */ (function (_super) {
|
|
24
|
-
tslib_1.__extends(Esm5Renderer, _super);
|
|
25
|
-
function Esm5Renderer(logger, host, isCore, bundle, sourcePath) {
|
|
26
|
-
return _super.call(this, logger, host, isCore, bundle, sourcePath) || this;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Add the definitions to each decorated class
|
|
30
|
-
*/
|
|
31
|
-
Esm5Renderer.prototype.addDefinitions = function (output, compiledClass, definitions) {
|
|
32
|
-
var iifeBody = esm5_host_1.getIifeBody(compiledClass.declaration);
|
|
33
|
-
if (!iifeBody) {
|
|
34
|
-
throw new Error("Compiled class declaration is not inside an IIFE: " + compiledClass.name + " in " + compiledClass.declaration.getSourceFile().fileName);
|
|
35
|
-
}
|
|
36
|
-
var returnStatement = iifeBody.statements.find(ts.isReturnStatement);
|
|
37
|
-
if (!returnStatement) {
|
|
38
|
-
throw new Error("Compiled class wrapper IIFE does not have a return statement: " + compiledClass.name + " in " + compiledClass.declaration.getSourceFile().fileName);
|
|
39
|
-
}
|
|
40
|
-
var insertionPoint = returnStatement.getFullStart();
|
|
41
|
-
output.appendLeft(insertionPoint, '\n' + definitions);
|
|
42
|
-
};
|
|
43
|
-
return Esm5Renderer;
|
|
44
|
-
}(esm_renderer_1.EsmRenderer));
|
|
45
|
-
exports.Esm5Renderer = Esm5Renderer;
|
|
46
|
-
});
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNtNV9yZW5kZXJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9uZ2NjL3NyYy9yZW5kZXJpbmcvZXNtNV9yZW5kZXJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFBQTs7Ozs7O09BTUc7SUFDSCwrQkFBaUM7SUFFakMsMkVBQThDO0lBRzlDLHNGQUEyQztJQUkzQztRQUFrQyx3Q0FBVztRQUMzQyxzQkFDSSxNQUFjLEVBQUUsSUFBd0IsRUFBRSxNQUFlLEVBQUUsTUFBd0IsRUFDbkYsVUFBa0I7bUJBQ3BCLGtCQUFNLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUM7UUFDakQsQ0FBQztRQUVEOztXQUVHO1FBQ0gscUNBQWMsR0FBZCxVQUFlLE1BQW1CLEVBQUUsYUFBNEIsRUFBRSxXQUFtQjtZQUNuRixJQUFNLFFBQVEsR0FBRyx1QkFBVyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNiLE1BQU0sSUFBSSxLQUFLLENBQ1gsdURBQXFELGFBQWEsQ0FBQyxJQUFJLFlBQU8sYUFBYSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxRQUFVLENBQUMsQ0FBQzthQUN6STtZQUVELElBQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQ1gsbUVBQWlFLGFBQWEsQ0FBQyxJQUFJLFlBQU8sYUFBYSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxRQUFVLENBQUMsQ0FBQzthQUNySjtZQUVELElBQU0sY0FBYyxHQUFHLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0RCxNQUFNLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxJQUFJLEdBQUcsV0FBVyxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUNILG1CQUFDO0lBQUQsQ0FBQyxBQTFCRCxDQUFrQywwQkFBVyxHQTBCNUM7SUExQlksb0NBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCBNYWdpY1N0cmluZyBmcm9tICdtYWdpYy1zdHJpbmcnO1xuaW1wb3J0IHtnZXRJaWZlQm9keX0gZnJvbSAnLi4vaG9zdC9lc201X2hvc3QnO1xuaW1wb3J0IHtOZ2NjUmVmbGVjdGlvbkhvc3R9IGZyb20gJy4uL2hvc3QvbmdjY19ob3N0JztcbmltcG9ydCB7Q29tcGlsZWRDbGFzc30gZnJvbSAnLi4vYW5hbHlzaXMvZGVjb3JhdGlvbl9hbmFseXplcic7XG5pbXBvcnQge0VzbVJlbmRlcmVyfSBmcm9tICcuL2VzbV9yZW5kZXJlcic7XG5pbXBvcnQge0VudHJ5UG9pbnRCdW5kbGV9IGZyb20gJy4uL3BhY2thZ2VzL2VudHJ5X3BvaW50X2J1bmRsZSc7XG5pbXBvcnQge0xvZ2dlcn0gZnJvbSAnLi4vbG9nZ2luZy9sb2dnZXInO1xuXG5leHBvcnQgY2xhc3MgRXNtNVJlbmRlcmVyIGV4dGVuZHMgRXNtUmVuZGVyZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICAgIGxvZ2dlcjogTG9nZ2VyLCBob3N0OiBOZ2NjUmVmbGVjdGlvbkhvc3QsIGlzQ29yZTogYm9vbGVhbiwgYnVuZGxlOiBFbnRyeVBvaW50QnVuZGxlLFxuICAgICAgc291cmNlUGF0aDogc3RyaW5nKSB7XG4gICAgc3VwZXIobG9nZ2VyLCBob3N0LCBpc0NvcmUsIGJ1bmRsZSwgc291cmNlUGF0aCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIHRoZSBkZWZpbml0aW9ucyB0byBlYWNoIGRlY29yYXRlZCBjbGFzc1xuICAgKi9cbiAgYWRkRGVmaW5pdGlvbnMob3V0cHV0OiBNYWdpY1N0cmluZywgY29tcGlsZWRDbGFzczogQ29tcGlsZWRDbGFzcywgZGVmaW5pdGlvbnM6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGlpZmVCb2R5ID0gZ2V0SWlmZUJvZHkoY29tcGlsZWRDbGFzcy5kZWNsYXJhdGlvbik7XG4gICAgaWYgKCFpaWZlQm9keSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBDb21waWxlZCBjbGFzcyBkZWNsYXJhdGlvbiBpcyBub3QgaW5zaWRlIGFuIElJRkU6ICR7Y29tcGlsZWRDbGFzcy5uYW1lfSBpbiAke2NvbXBpbGVkQ2xhc3MuZGVjbGFyYXRpb24uZ2V0U291cmNlRmlsZSgpLmZpbGVOYW1lfWApO1xuICAgIH1cblxuICAgIGNvbnN0IHJldHVyblN0YXRlbWVudCA9IGlpZmVCb2R5LnN0YXRlbWVudHMuZmluZCh0cy5pc1JldHVyblN0YXRlbWVudCk7XG4gICAgaWYgKCFyZXR1cm5TdGF0ZW1lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQ29tcGlsZWQgY2xhc3Mgd3JhcHBlciBJSUZFIGRvZXMgbm90IGhhdmUgYSByZXR1cm4gc3RhdGVtZW50OiAke2NvbXBpbGVkQ2xhc3MubmFtZX0gaW4gJHtjb21waWxlZENsYXNzLmRlY2xhcmF0aW9uLmdldFNvdXJjZUZpbGUoKS5maWxlTmFtZX1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbnNlcnRpb25Qb2ludCA9IHJldHVyblN0YXRlbWVudC5nZXRGdWxsU3RhcnQoKTtcbiAgICBvdXRwdXQuYXBwZW5kTGVmdChpbnNlcnRpb25Qb2ludCwgJ1xcbicgKyBkZWZpbml0aW9ucyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/// <amd-module name="@angular/compiler-cli/ngcc/src/rendering/esm_renderer" />
|
|
2
|
-
import MagicString from 'magic-string';
|
|
3
|
-
import * as ts from 'typescript';
|
|
4
|
-
import { NgccReflectionHost, SwitchableVariableDeclaration } from '../host/ngcc_host';
|
|
5
|
-
import { CompiledClass } from '../analysis/decoration_analyzer';
|
|
6
|
-
import { RedundantDecoratorMap, Renderer } from './renderer';
|
|
7
|
-
import { EntryPointBundle } from '../packages/entry_point_bundle';
|
|
8
|
-
import { ExportInfo } from '../analysis/private_declarations_analyzer';
|
|
9
|
-
import { Logger } from '../logging/logger';
|
|
10
|
-
export declare class EsmRenderer extends Renderer {
|
|
11
|
-
constructor(logger: Logger, host: NgccReflectionHost, isCore: boolean, bundle: EntryPointBundle, sourcePath: string);
|
|
12
|
-
/**
|
|
13
|
-
* Add the imports at the top of the file
|
|
14
|
-
*/
|
|
15
|
-
addImports(output: MagicString, imports: {
|
|
16
|
-
specifier: string;
|
|
17
|
-
qualifier: string;
|
|
18
|
-
}[], sf: ts.SourceFile): void;
|
|
19
|
-
addExports(output: MagicString, entryPointBasePath: string, exports: ExportInfo[]): void;
|
|
20
|
-
addConstants(output: MagicString, constants: string, file: ts.SourceFile): void;
|
|
21
|
-
/**
|
|
22
|
-
* Add the definitions to each decorated class
|
|
23
|
-
*/
|
|
24
|
-
addDefinitions(output: MagicString, compiledClass: CompiledClass, definitions: string): void;
|
|
25
|
-
/**
|
|
26
|
-
* Remove static decorator properties from classes
|
|
27
|
-
*/
|
|
28
|
-
removeDecorators(output: MagicString, decoratorsToRemove: RedundantDecoratorMap): void;
|
|
29
|
-
rewriteSwitchableDeclarations(outputText: MagicString, sourceFile: ts.SourceFile, declarations: SwitchableVariableDeclaration[]): void;
|
|
30
|
-
}
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
(function (factory) {
|
|
2
|
-
if (typeof module === "object" && typeof module.exports === "object") {
|
|
3
|
-
var v = factory(require, exports);
|
|
4
|
-
if (v !== undefined) module.exports = v;
|
|
5
|
-
}
|
|
6
|
-
else if (typeof define === "function" && define.amd) {
|
|
7
|
-
define("@angular/compiler-cli/ngcc/src/rendering/esm_renderer", ["require", "exports", "tslib", "canonical-path", "typescript", "@angular/compiler-cli/ngcc/src/host/ngcc_host", "@angular/compiler-cli/ngcc/src/rendering/renderer", "@angular/compiler-cli/src/ngtsc/util/src/typescript"], factory);
|
|
8
|
-
}
|
|
9
|
-
})(function (require, exports) {
|
|
10
|
-
"use strict";
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
var tslib_1 = require("tslib");
|
|
13
|
-
/**
|
|
14
|
-
* @license
|
|
15
|
-
* Copyright Google Inc. All Rights Reserved.
|
|
16
|
-
*
|
|
17
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
18
|
-
* found in the LICENSE file at https://angular.io/license
|
|
19
|
-
*/
|
|
20
|
-
var canonical_path_1 = require("canonical-path");
|
|
21
|
-
var ts = require("typescript");
|
|
22
|
-
var ngcc_host_1 = require("@angular/compiler-cli/ngcc/src/host/ngcc_host");
|
|
23
|
-
var renderer_1 = require("@angular/compiler-cli/ngcc/src/rendering/renderer");
|
|
24
|
-
var typescript_1 = require("@angular/compiler-cli/src/ngtsc/util/src/typescript");
|
|
25
|
-
var EsmRenderer = /** @class */ (function (_super) {
|
|
26
|
-
tslib_1.__extends(EsmRenderer, _super);
|
|
27
|
-
function EsmRenderer(logger, host, isCore, bundle, sourcePath) {
|
|
28
|
-
return _super.call(this, logger, host, isCore, bundle, sourcePath) || this;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Add the imports at the top of the file
|
|
32
|
-
*/
|
|
33
|
-
EsmRenderer.prototype.addImports = function (output, imports, sf) {
|
|
34
|
-
var insertionPoint = findEndOfImports(sf);
|
|
35
|
-
var renderedImports = imports.map(function (i) { return "import * as " + i.qualifier + " from '" + i.specifier + "';\n"; }).join('');
|
|
36
|
-
output.appendLeft(insertionPoint, renderedImports);
|
|
37
|
-
};
|
|
38
|
-
EsmRenderer.prototype.addExports = function (output, entryPointBasePath, exports) {
|
|
39
|
-
exports.forEach(function (e) {
|
|
40
|
-
var exportFrom = '';
|
|
41
|
-
var isDtsFile = typescript_1.isDtsPath(entryPointBasePath);
|
|
42
|
-
var from = isDtsFile ? e.dtsFrom : e.from;
|
|
43
|
-
if (from) {
|
|
44
|
-
var basePath = renderer_1.stripExtension(from);
|
|
45
|
-
var relativePath = './' + canonical_path_1.relative(canonical_path_1.dirname(entryPointBasePath), basePath);
|
|
46
|
-
exportFrom = entryPointBasePath !== basePath ? " from '" + relativePath + "'" : '';
|
|
47
|
-
}
|
|
48
|
-
// aliases should only be added in dts files as these are lost when rolling up dts file.
|
|
49
|
-
var exportStatement = e.alias && isDtsFile ? e.alias + " as " + e.identifier : e.identifier;
|
|
50
|
-
var exportStr = "\nexport {" + exportStatement + "}" + exportFrom + ";";
|
|
51
|
-
output.append(exportStr);
|
|
52
|
-
});
|
|
53
|
-
};
|
|
54
|
-
EsmRenderer.prototype.addConstants = function (output, constants, file) {
|
|
55
|
-
if (constants === '') {
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
var insertionPoint = findEndOfImports(file);
|
|
59
|
-
// Append the constants to the right of the insertion point, to ensure they get ordered after
|
|
60
|
-
// added imports (those are appended left to the insertion point).
|
|
61
|
-
output.appendRight(insertionPoint, '\n' + constants + '\n');
|
|
62
|
-
};
|
|
63
|
-
/**
|
|
64
|
-
* Add the definitions to each decorated class
|
|
65
|
-
*/
|
|
66
|
-
EsmRenderer.prototype.addDefinitions = function (output, compiledClass, definitions) {
|
|
67
|
-
var classSymbol = this.host.getClassSymbol(compiledClass.declaration);
|
|
68
|
-
if (!classSymbol) {
|
|
69
|
-
throw new Error("Compiled class does not have a valid symbol: " + compiledClass.name);
|
|
70
|
-
}
|
|
71
|
-
var insertionPoint = classSymbol.valueDeclaration.getEnd();
|
|
72
|
-
output.appendLeft(insertionPoint, '\n' + definitions);
|
|
73
|
-
};
|
|
74
|
-
/**
|
|
75
|
-
* Remove static decorator properties from classes
|
|
76
|
-
*/
|
|
77
|
-
EsmRenderer.prototype.removeDecorators = function (output, decoratorsToRemove) {
|
|
78
|
-
decoratorsToRemove.forEach(function (nodesToRemove, containerNode) {
|
|
79
|
-
if (ts.isArrayLiteralExpression(containerNode)) {
|
|
80
|
-
var items = containerNode.elements;
|
|
81
|
-
if (items.length === nodesToRemove.length) {
|
|
82
|
-
// Remove the entire statement
|
|
83
|
-
var statement = findStatement(containerNode);
|
|
84
|
-
if (statement) {
|
|
85
|
-
output.remove(statement.getFullStart(), statement.getEnd());
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
nodesToRemove.forEach(function (node) {
|
|
90
|
-
// remove any trailing comma
|
|
91
|
-
var end = (output.slice(node.getEnd(), node.getEnd() + 1) === ',') ?
|
|
92
|
-
node.getEnd() + 1 :
|
|
93
|
-
node.getEnd();
|
|
94
|
-
output.remove(node.getFullStart(), end);
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
};
|
|
100
|
-
EsmRenderer.prototype.rewriteSwitchableDeclarations = function (outputText, sourceFile, declarations) {
|
|
101
|
-
declarations.forEach(function (declaration) {
|
|
102
|
-
var start = declaration.initializer.getStart();
|
|
103
|
-
var end = declaration.initializer.getEnd();
|
|
104
|
-
var replacement = declaration.initializer.text.replace(ngcc_host_1.PRE_R3_MARKER, ngcc_host_1.POST_R3_MARKER);
|
|
105
|
-
outputText.overwrite(start, end, replacement);
|
|
106
|
-
});
|
|
107
|
-
};
|
|
108
|
-
return EsmRenderer;
|
|
109
|
-
}(renderer_1.Renderer));
|
|
110
|
-
exports.EsmRenderer = EsmRenderer;
|
|
111
|
-
function findEndOfImports(sf) {
|
|
112
|
-
var e_1, _a;
|
|
113
|
-
try {
|
|
114
|
-
for (var _b = tslib_1.__values(sf.statements), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
115
|
-
var stmt = _c.value;
|
|
116
|
-
if (!ts.isImportDeclaration(stmt) && !ts.isImportEqualsDeclaration(stmt) &&
|
|
117
|
-
!ts.isNamespaceImport(stmt)) {
|
|
118
|
-
return stmt.getStart();
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
123
|
-
finally {
|
|
124
|
-
try {
|
|
125
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
126
|
-
}
|
|
127
|
-
finally { if (e_1) throw e_1.error; }
|
|
128
|
-
}
|
|
129
|
-
return 0;
|
|
130
|
-
}
|
|
131
|
-
function findStatement(node) {
|
|
132
|
-
while (node) {
|
|
133
|
-
if (ts.isExpressionStatement(node)) {
|
|
134
|
-
return node;
|
|
135
|
-
}
|
|
136
|
-
node = node.parent;
|
|
137
|
-
}
|
|
138
|
-
return undefined;
|
|
139
|
-
}
|
|
140
|
-
});
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNtX3JlbmRlcmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL25nY2Mvc3JjL3JlbmRlcmluZy9lc21fcmVuZGVyZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBQUE7Ozs7OztPQU1HO0lBQ0gsaURBQWlEO0lBRWpELCtCQUFpQztJQUNqQywyRUFBbUg7SUFFbkgsOEVBQTJFO0lBRzNFLGtGQUFpRTtJQUdqRTtRQUFpQyx1Q0FBUTtRQUN2QyxxQkFDSSxNQUFjLEVBQUUsSUFBd0IsRUFBRSxNQUFlLEVBQUUsTUFBd0IsRUFDbkYsVUFBa0I7bUJBQ3BCLGtCQUFNLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUM7UUFDakQsQ0FBQztRQUVEOztXQUVHO1FBQ0gsZ0NBQVUsR0FBVixVQUNJLE1BQW1CLEVBQUUsT0FBa0QsRUFDdkUsRUFBaUI7WUFDbkIsSUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUMsSUFBTSxlQUFlLEdBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxpQkFBZSxDQUFDLENBQUMsU0FBUyxlQUFVLENBQUMsQ0FBQyxTQUFTLFNBQU0sRUFBckQsQ0FBcUQsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNyRixNQUFNLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBRUQsZ0NBQVUsR0FBVixVQUFXLE1BQW1CLEVBQUUsa0JBQTBCLEVBQUUsT0FBcUI7WUFDL0UsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFBLENBQUM7Z0JBQ2YsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO2dCQUNwQixJQUFNLFNBQVMsR0FBRyxzQkFBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7Z0JBQ2hELElBQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFFNUMsSUFBSSxJQUFJLEVBQUU7b0JBQ1IsSUFBTSxRQUFRLEdBQUcseUJBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDdEMsSUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLHlCQUFRLENBQUMsd0JBQU8sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUM1RSxVQUFVLEdBQUcsa0JBQWtCLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxZQUFVLFlBQVksTUFBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7aUJBQy9FO2dCQUVELHdGQUF3RjtnQkFDeEYsSUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFJLENBQUMsQ0FBQyxLQUFLLFlBQU8sQ0FBQyxDQUFDLFVBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztnQkFDOUYsSUFBTSxTQUFTLEdBQUcsZUFBYSxlQUFlLFNBQUksVUFBVSxNQUFHLENBQUM7Z0JBQ2hFLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsa0NBQVksR0FBWixVQUFhLE1BQW1CLEVBQUUsU0FBaUIsRUFBRSxJQUFtQjtZQUN0RSxJQUFJLFNBQVMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3BCLE9BQU87YUFDUjtZQUNELElBQU0sY0FBYyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBRTlDLDZGQUE2RjtZQUM3RixrRUFBa0U7WUFDbEUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsSUFBSSxHQUFHLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBRUQ7O1dBRUc7UUFDSCxvQ0FBYyxHQUFkLFVBQWUsTUFBbUIsRUFBRSxhQUE0QixFQUFFLFdBQW1CO1lBQ25GLElBQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN4RSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFnRCxhQUFhLENBQUMsSUFBTSxDQUFDLENBQUM7YUFDdkY7WUFDRCxJQUFNLGNBQWMsR0FBRyxXQUFXLENBQUMsZ0JBQWtCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDL0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsSUFBSSxHQUFHLFdBQVcsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFFRDs7V0FFRztRQUNILHNDQUFnQixHQUFoQixVQUFpQixNQUFtQixFQUFFLGtCQUF5QztZQUM3RSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsVUFBQyxhQUFhLEVBQUUsYUFBYTtnQkFDdEQsSUFBSSxFQUFFLENBQUMsd0JBQXdCLENBQUMsYUFBYSxDQUFDLEVBQUU7b0JBQzlDLElBQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUM7b0JBQ3JDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxhQUFhLENBQUMsTUFBTSxFQUFFO3dCQUN6Qyw4QkFBOEI7d0JBQzlCLElBQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQzt3QkFDL0MsSUFBSSxTQUFTLEVBQUU7NEJBQ2IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLEVBQUUsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7eUJBQzdEO3FCQUNGO3lCQUFNO3dCQUNMLGFBQWEsQ0FBQyxPQUFPLENBQUMsVUFBQSxJQUFJOzRCQUN4Qiw0QkFBNEI7NEJBQzVCLElBQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0NBQ2xFLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztnQ0FDbkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDOzRCQUNsQixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQzt3QkFDMUMsQ0FBQyxDQUFDLENBQUM7cUJBQ0o7aUJBQ0Y7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxtREFBNkIsR0FBN0IsVUFDSSxVQUF1QixFQUFFLFVBQXlCLEVBQ2xELFlBQTZDO1lBQy9DLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBQSxXQUFXO2dCQUM5QixJQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNqRCxJQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM3QyxJQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMseUJBQWEsRUFBRSwwQkFBYyxDQUFDLENBQUM7Z0JBQ3hGLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUNoRCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDSCxrQkFBQztJQUFELENBQUMsQUFqR0QsQ0FBaUMsbUJBQVEsR0FpR3hDO0lBakdZLGtDQUFXO0lBbUd4QixTQUFTLGdCQUFnQixDQUFDLEVBQWlCOzs7WUFDekMsS0FBbUIsSUFBQSxLQUFBLGlCQUFBLEVBQUUsQ0FBQyxVQUFVLENBQUEsZ0JBQUEsNEJBQUU7Z0JBQTdCLElBQU0sSUFBSSxXQUFBO2dCQUNiLElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDO29CQUNwRSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDL0IsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7aUJBQ3hCO2FBQ0Y7Ozs7Ozs7OztRQUVELE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELFNBQVMsYUFBYSxDQUFDLElBQWE7UUFDbEMsT0FBTyxJQUFJLEVBQUU7WUFDWCxJQUFJLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbEMsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUNELElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQ3BCO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7ZGlybmFtZSwgcmVsYXRpdmV9IGZyb20gJ2Nhbm9uaWNhbC1wYXRoJztcbmltcG9ydCBNYWdpY1N0cmluZyBmcm9tICdtYWdpYy1zdHJpbmcnO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQge05nY2NSZWZsZWN0aW9uSG9zdCwgUE9TVF9SM19NQVJLRVIsIFBSRV9SM19NQVJLRVIsIFN3aXRjaGFibGVWYXJpYWJsZURlY2xhcmF0aW9ufSBmcm9tICcuLi9ob3N0L25nY2NfaG9zdCc7XG5pbXBvcnQge0NvbXBpbGVkQ2xhc3N9IGZyb20gJy4uL2FuYWx5c2lzL2RlY29yYXRpb25fYW5hbHl6ZXInO1xuaW1wb3J0IHtSZWR1bmRhbnREZWNvcmF0b3JNYXAsIFJlbmRlcmVyLCBzdHJpcEV4dGVuc2lvbn0gZnJvbSAnLi9yZW5kZXJlcic7XG5pbXBvcnQge0VudHJ5UG9pbnRCdW5kbGV9IGZyb20gJy4uL3BhY2thZ2VzL2VudHJ5X3BvaW50X2J1bmRsZSc7XG5pbXBvcnQge0V4cG9ydEluZm99IGZyb20gJy4uL2FuYWx5c2lzL3ByaXZhdGVfZGVjbGFyYXRpb25zX2FuYWx5emVyJztcbmltcG9ydCB7aXNEdHNQYXRofSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvdXRpbC9zcmMvdHlwZXNjcmlwdCc7XG5pbXBvcnQge0xvZ2dlcn0gZnJvbSAnLi4vbG9nZ2luZy9sb2dnZXInO1xuXG5leHBvcnQgY2xhc3MgRXNtUmVuZGVyZXIgZXh0ZW5kcyBSZW5kZXJlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgICAgbG9nZ2VyOiBMb2dnZXIsIGhvc3Q6IE5nY2NSZWZsZWN0aW9uSG9zdCwgaXNDb3JlOiBib29sZWFuLCBidW5kbGU6IEVudHJ5UG9pbnRCdW5kbGUsXG4gICAgICBzb3VyY2VQYXRoOiBzdHJpbmcpIHtcbiAgICBzdXBlcihsb2dnZXIsIGhvc3QsIGlzQ29yZSwgYnVuZGxlLCBzb3VyY2VQYXRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQWRkIHRoZSBpbXBvcnRzIGF0IHRoZSB0b3Agb2YgdGhlIGZpbGVcbiAgICovXG4gIGFkZEltcG9ydHMoXG4gICAgICBvdXRwdXQ6IE1hZ2ljU3RyaW5nLCBpbXBvcnRzOiB7c3BlY2lmaWVyOiBzdHJpbmc7IHF1YWxpZmllcjogc3RyaW5nO31bXSxcbiAgICAgIHNmOiB0cy5Tb3VyY2VGaWxlKTogdm9pZCB7XG4gICAgY29uc3QgaW5zZXJ0aW9uUG9pbnQgPSBmaW5kRW5kT2ZJbXBvcnRzKHNmKTtcbiAgICBjb25zdCByZW5kZXJlZEltcG9ydHMgPVxuICAgICAgICBpbXBvcnRzLm1hcChpID0+IGBpbXBvcnQgKiBhcyAke2kucXVhbGlmaWVyfSBmcm9tICcke2kuc3BlY2lmaWVyfSc7XFxuYCkuam9pbignJyk7XG4gICAgb3V0cHV0LmFwcGVuZExlZnQoaW5zZXJ0aW9uUG9pbnQsIHJlbmRlcmVkSW1wb3J0cyk7XG4gIH1cblxuICBhZGRFeHBvcnRzKG91dHB1dDogTWFnaWNTdHJpbmcsIGVudHJ5UG9pbnRCYXNlUGF0aDogc3RyaW5nLCBleHBvcnRzOiBFeHBvcnRJbmZvW10pOiB2b2lkIHtcbiAgICBleHBvcnRzLmZvckVhY2goZSA9PiB7XG4gICAgICBsZXQgZXhwb3J0RnJvbSA9ICcnO1xuICAgICAgY29uc3QgaXNEdHNGaWxlID0gaXNEdHNQYXRoKGVudHJ5UG9pbnRCYXNlUGF0aCk7XG4gICAgICBjb25zdCBmcm9tID0gaXNEdHNGaWxlID8gZS5kdHNGcm9tIDogZS5mcm9tO1xuXG4gICAgICBpZiAoZnJvbSkge1xuICAgICAgICBjb25zdCBiYXNlUGF0aCA9IHN0cmlwRXh0ZW5zaW9uKGZyb20pO1xuICAgICAgICBjb25zdCByZWxhdGl2ZVBhdGggPSAnLi8nICsgcmVsYXRpdmUoZGlybmFtZShlbnRyeVBvaW50QmFzZVBhdGgpLCBiYXNlUGF0aCk7XG4gICAgICAgIGV4cG9ydEZyb20gPSBlbnRyeVBvaW50QmFzZVBhdGggIT09IGJhc2VQYXRoID8gYCBmcm9tICcke3JlbGF0aXZlUGF0aH0nYCA6ICcnO1xuICAgICAgfVxuXG4gICAgICAvLyBhbGlhc2VzIHNob3VsZCBvbmx5IGJlIGFkZGVkIGluIGR0cyBmaWxlcyBhcyB0aGVzZSBhcmUgbG9zdCB3aGVuIHJvbGxpbmcgdXAgZHRzIGZpbGUuXG4gICAgICBjb25zdCBleHBvcnRTdGF0ZW1lbnQgPSBlLmFsaWFzICYmIGlzRHRzRmlsZSA/IGAke2UuYWxpYXN9IGFzICR7ZS5pZGVudGlmaWVyfWAgOiBlLmlkZW50aWZpZXI7XG4gICAgICBjb25zdCBleHBvcnRTdHIgPSBgXFxuZXhwb3J0IHske2V4cG9ydFN0YXRlbWVudH19JHtleHBvcnRGcm9tfTtgO1xuICAgICAgb3V0cHV0LmFwcGVuZChleHBvcnRTdHIpO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkQ29uc3RhbnRzKG91dHB1dDogTWFnaWNTdHJpbmcsIGNvbnN0YW50czogc3RyaW5nLCBmaWxlOiB0cy5Tb3VyY2VGaWxlKTogdm9pZCB7XG4gICAgaWYgKGNvbnN0YW50cyA9PT0gJycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaW5zZXJ0aW9uUG9pbnQgPSBmaW5kRW5kT2ZJbXBvcnRzKGZpbGUpO1xuXG4gICAgLy8gQXBwZW5kIHRoZSBjb25zdGFudHMgdG8gdGhlIHJpZ2h0IG9mIHRoZSBpbnNlcnRpb24gcG9pbnQsIHRvIGVuc3VyZSB0aGV5IGdldCBvcmRlcmVkIGFmdGVyXG4gICAgLy8gYWRkZWQgaW1wb3J0cyAodGhvc2UgYXJlIGFwcGVuZGVkIGxlZnQgdG8gdGhlIGluc2VydGlvbiBwb2ludCkuXG4gICAgb3V0cHV0LmFwcGVuZFJpZ2h0KGluc2VydGlvblBvaW50LCAnXFxuJyArIGNvbnN0YW50cyArICdcXG4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgdGhlIGRlZmluaXRpb25zIHRvIGVhY2ggZGVjb3JhdGVkIGNsYXNzXG4gICAqL1xuICBhZGREZWZpbml0aW9ucyhvdXRwdXQ6IE1hZ2ljU3RyaW5nLCBjb21waWxlZENsYXNzOiBDb21waWxlZENsYXNzLCBkZWZpbml0aW9uczogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgY2xhc3NTeW1ib2wgPSB0aGlzLmhvc3QuZ2V0Q2xhc3NTeW1ib2woY29tcGlsZWRDbGFzcy5kZWNsYXJhdGlvbik7XG4gICAgaWYgKCFjbGFzc1N5bWJvbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21waWxlZCBjbGFzcyBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgc3ltYm9sOiAke2NvbXBpbGVkQ2xhc3MubmFtZX1gKTtcbiAgICB9XG4gICAgY29uc3QgaW5zZXJ0aW9uUG9pbnQgPSBjbGFzc1N5bWJvbC52YWx1ZURlY2xhcmF0aW9uICEuZ2V0RW5kKCk7XG4gICAgb3V0cHV0LmFwcGVuZExlZnQoaW5zZXJ0aW9uUG9pbnQsICdcXG4nICsgZGVmaW5pdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBzdGF0aWMgZGVjb3JhdG9yIHByb3BlcnRpZXMgZnJvbSBjbGFzc2VzXG4gICAqL1xuICByZW1vdmVEZWNvcmF0b3JzKG91dHB1dDogTWFnaWNTdHJpbmcsIGRlY29yYXRvcnNUb1JlbW92ZTogUmVkdW5kYW50RGVjb3JhdG9yTWFwKTogdm9pZCB7XG4gICAgZGVjb3JhdG9yc1RvUmVtb3ZlLmZvckVhY2goKG5vZGVzVG9SZW1vdmUsIGNvbnRhaW5lck5vZGUpID0+IHtcbiAgICAgIGlmICh0cy5pc0FycmF5TGl0ZXJhbEV4cHJlc3Npb24oY29udGFpbmVyTm9kZSkpIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSBjb250YWluZXJOb2RlLmVsZW1lbnRzO1xuICAgICAgICBpZiAoaXRlbXMubGVuZ3RoID09PSBub2Rlc1RvUmVtb3ZlLmxlbmd0aCkge1xuICAgICAgICAgIC8vIFJlbW92ZSB0aGUgZW50aXJlIHN0YXRlbWVudFxuICAgICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IGZpbmRTdGF0ZW1lbnQoY29udGFpbmVyTm9kZSk7XG4gICAgICAgICAgaWYgKHN0YXRlbWVudCkge1xuICAgICAgICAgICAgb3V0cHV0LnJlbW92ZShzdGF0ZW1lbnQuZ2V0RnVsbFN0YXJ0KCksIHN0YXRlbWVudC5nZXRFbmQoKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5vZGVzVG9SZW1vdmUuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgICAgIC8vIHJlbW92ZSBhbnkgdHJhaWxpbmcgY29tbWFcbiAgICAgICAgICAgIGNvbnN0IGVuZCA9IChvdXRwdXQuc2xpY2Uobm9kZS5nZXRFbmQoKSwgbm9kZS5nZXRFbmQoKSArIDEpID09PSAnLCcpID9cbiAgICAgICAgICAgICAgICBub2RlLmdldEVuZCgpICsgMSA6XG4gICAgICAgICAgICAgICAgbm9kZS5nZXRFbmQoKTtcbiAgICAgICAgICAgIG91dHB1dC5yZW1vdmUobm9kZS5nZXRGdWxsU3RhcnQoKSwgZW5kKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV3cml0ZVN3aXRjaGFibGVEZWNsYXJhdGlvbnMoXG4gICAgICBvdXRwdXRUZXh0OiBNYWdpY1N0cmluZywgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSxcbiAgICAgIGRlY2xhcmF0aW9uczogU3dpdGNoYWJsZVZhcmlhYmxlRGVjbGFyYXRpb25bXSk6IHZvaWQge1xuICAgIGRlY2xhcmF0aW9ucy5mb3JFYWNoKGRlY2xhcmF0aW9uID0+IHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gZGVjbGFyYXRpb24uaW5pdGlhbGl6ZXIuZ2V0U3RhcnQoKTtcbiAgICAgIGNvbnN0IGVuZCA9IGRlY2xhcmF0aW9uLmluaXRpYWxpemVyLmdldEVuZCgpO1xuICAgICAgY29uc3QgcmVwbGFjZW1lbnQgPSBkZWNsYXJhdGlvbi5pbml0aWFsaXplci50ZXh0LnJlcGxhY2UoUFJFX1IzX01BUktFUiwgUE9TVF9SM19NQVJLRVIpO1xuICAgICAgb3V0cHV0VGV4dC5vdmVyd3JpdGUoc3RhcnQsIGVuZCwgcmVwbGFjZW1lbnQpO1xuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmRFbmRPZkltcG9ydHMoc2Y6IHRzLlNvdXJjZUZpbGUpOiBudW1iZXIge1xuICBmb3IgKGNvbnN0IHN0bXQgb2Ygc2Yuc3RhdGVtZW50cykge1xuICAgIGlmICghdHMuaXNJbXBvcnREZWNsYXJhdGlvbihzdG10KSAmJiAhdHMuaXNJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbihzdG10KSAmJlxuICAgICAgICAhdHMuaXNOYW1lc3BhY2VJbXBvcnQoc3RtdCkpIHtcbiAgICAgIHJldHVybiBzdG10LmdldFN0YXJ0KCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIDA7XG59XG5cbmZ1bmN0aW9uIGZpbmRTdGF0ZW1lbnQobm9kZTogdHMuTm9kZSkge1xuICB3aGlsZSAobm9kZSkge1xuICAgIGlmICh0cy5pc0V4cHJlc3Npb25TdGF0ZW1lbnQobm9kZSkpIHtcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICBub2RlID0gbm9kZS5wYXJlbnQ7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdfQ==
|