@angular/compiler-cli 9.0.0-rc.6 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ngcc/src/analysis/decoration_analyzer.d.ts +13 -26
- package/ngcc/src/analysis/decoration_analyzer.js +100 -134
- package/ngcc/src/analysis/migration_host.d.ts +5 -16
- package/ngcc/src/analysis/migration_host.js +20 -91
- package/ngcc/src/analysis/module_with_providers_analyzer.js +2 -2
- package/ngcc/src/analysis/ngcc_trait_compiler.d.ts +42 -0
- package/ngcc/src/analysis/ngcc_trait_compiler.js +107 -0
- package/ngcc/src/analysis/private_declarations_analyzer.d.ts +0 -1
- package/ngcc/src/analysis/private_declarations_analyzer.js +4 -35
- package/ngcc/src/analysis/types.d.ts +6 -21
- package/ngcc/src/analysis/types.js +1 -1
- package/ngcc/src/analysis/util.d.ts +2 -5
- package/ngcc/src/analysis/util.js +11 -94
- package/ngcc/src/dependencies/commonjs_dependency_host.d.ts +1 -1
- package/ngcc/src/dependencies/commonjs_dependency_host.js +90 -39
- package/ngcc/src/dependencies/dependency_host.d.ts +7 -5
- package/ngcc/src/dependencies/dependency_host.js +12 -10
- package/ngcc/src/dependencies/dependency_resolver.d.ts +2 -1
- package/ngcc/src/dependencies/dependency_resolver.js +9 -4
- package/ngcc/src/dependencies/dts_dependency_host.d.ts +21 -0
- package/ngcc/src/dependencies/dts_dependency_host.js +34 -0
- package/ngcc/src/dependencies/esm_dependency_host.d.ts +8 -1
- package/ngcc/src/dependencies/esm_dependency_host.js +30 -22
- package/ngcc/src/dependencies/module_resolver.d.ts +1 -1
- package/ngcc/src/dependencies/module_resolver.js +1 -1
- package/ngcc/src/dependencies/umd_dependency_host.d.ts +1 -1
- package/ngcc/src/dependencies/umd_dependency_host.js +3 -3
- package/ngcc/src/entry_point_finder/targeted_entry_point_finder.d.ts +2 -0
- package/ngcc/src/entry_point_finder/targeted_entry_point_finder.js +49 -9
- package/ngcc/src/execution/cluster/executor.d.ts +3 -1
- package/ngcc/src/execution/cluster/executor.js +12 -7
- package/ngcc/src/execution/cluster/package_json_updater.js +3 -2
- package/ngcc/src/execution/cluster/worker.d.ts +3 -1
- package/ngcc/src/execution/cluster/worker.js +10 -7
- package/ngcc/src/execution/lock_file.d.ts +43 -0
- package/ngcc/src/execution/lock_file.js +129 -0
- package/ngcc/src/execution/single_process_executor.d.ts +3 -1
- package/ngcc/src/execution/single_process_executor.js +18 -15
- package/ngcc/src/execution/task_selection/base_task_queue.d.ts +1 -1
- package/ngcc/src/host/commonjs_host.d.ts +6 -18
- package/ngcc/src/host/commonjs_host.js +45 -81
- package/ngcc/src/host/commonjs_umd_utils.d.ts +73 -0
- package/ngcc/src/host/commonjs_umd_utils.js +109 -0
- package/ngcc/src/host/esm2015_host.d.ts +46 -14
- package/ngcc/src/host/esm2015_host.js +182 -55
- package/ngcc/src/host/esm5_host.js +3 -1
- package/ngcc/src/host/umd_host.d.ts +12 -5
- package/ngcc/src/host/umd_host.js +144 -92
- package/ngcc/src/main.js +65 -122
- package/ngcc/src/migrations/migration.d.ts +1 -0
- package/ngcc/src/migrations/migration.js +1 -1
- package/ngcc/src/packages/build_marker.d.ts +17 -8
- package/ngcc/src/packages/build_marker.js +61 -32
- package/ngcc/src/packages/entry_point_bundle.js +2 -2
- package/ngcc/src/packages/transformer.js +5 -6
- package/ngcc/src/rendering/commonjs_rendering_formatter.js +9 -5
- package/ngcc/src/rendering/dts_renderer.js +8 -5
- package/ngcc/src/rendering/esm_rendering_formatter.js +17 -5
- package/ngcc/src/rendering/renderer.js +4 -4
- package/ngcc/src/rendering/umd_rendering_formatter.d.ts +18 -1
- package/ngcc/src/rendering/umd_rendering_formatter.js +69 -16
- package/ngcc/src/utils.d.ts +14 -0
- package/ngcc/src/utils.js +29 -1
- package/ngcc/src/writing/cleaning/cleaning_strategies.d.ts +45 -0
- package/ngcc/src/writing/cleaning/cleaning_strategies.js +77 -0
- package/ngcc/src/writing/cleaning/package_cleaner.d.ts +39 -0
- package/ngcc/src/writing/cleaning/package_cleaner.js +125 -0
- package/ngcc/src/writing/cleaning/utils.d.ts +16 -0
- package/ngcc/src/writing/cleaning/utils.js +29 -0
- package/ngcc/src/writing/in_place_file_writer.d.ts +1 -0
- package/ngcc/src/writing/in_place_file_writer.js +3 -2
- package/ngcc/src/writing/new_entry_point_file_writer.d.ts +2 -0
- package/ngcc/src/writing/new_entry_point_file_writer.js +5 -4
- package/ngcc/src/writing/package_json_updater.d.ts +24 -10
- package/ngcc/src/writing/package_json_updater.js +53 -10
- package/package.json +6 -5
- package/src/main.d.ts +2 -2
- package/src/metadata/symbols.d.ts +1 -1
- package/src/ngtsc/annotations/src/component.d.ts +58 -20
- package/src/ngtsc/annotations/src/component.js +149 -97
- package/src/ngtsc/annotations/src/diagnostics.d.ts +23 -0
- package/src/ngtsc/annotations/src/diagnostics.js +123 -0
- package/src/ngtsc/annotations/src/directive.d.ts +19 -8
- package/src/ngtsc/annotations/src/directive.js +41 -18
- package/src/ngtsc/annotations/src/injectable.d.ts +8 -4
- package/src/ngtsc/annotations/src/injectable.js +7 -3
- package/src/ngtsc/annotations/src/ng_module.d.ts +22 -7
- package/src/ngtsc/annotations/src/ng_module.js +115 -52
- package/src/ngtsc/annotations/src/pipe.d.ts +12 -6
- package/src/ngtsc/annotations/src/pipe.js +22 -5
- package/src/ngtsc/annotations/src/util.d.ts +22 -0
- package/src/ngtsc/annotations/src/util.js +92 -3
- package/src/ngtsc/core/api.d.ts +368 -0
- package/src/ngtsc/core/api.js +20 -0
- package/src/ngtsc/core/index.d.ts +10 -0
- package/src/ngtsc/core/index.js +24 -0
- package/src/ngtsc/core/src/compiler.d.ts +120 -0
- package/src/ngtsc/core/src/compiler.js +769 -0
- package/src/ngtsc/core/src/host.d.ts +85 -0
- package/src/ngtsc/core/src/host.js +208 -0
- package/src/ngtsc/cycles/src/imports.js +2 -2
- package/src/ngtsc/diagnostics/index.d.ts +1 -1
- package/src/ngtsc/diagnostics/index.js +5 -5
- package/src/ngtsc/diagnostics/src/error.d.ts +1 -1
- package/src/ngtsc/diagnostics/src/error.js +1 -1
- package/src/ngtsc/diagnostics/src/{code.d.ts → error_code.d.ts} +27 -4
- package/src/ngtsc/diagnostics/src/error_code.js +128 -0
- package/src/ngtsc/file_system/src/cached_file_system.d.ts +3 -1
- package/src/ngtsc/file_system/src/cached_file_system.js +48 -4
- package/src/ngtsc/file_system/src/invalid_file_system.d.ts +3 -1
- package/src/ngtsc/file_system/src/invalid_file_system.js +4 -2
- package/src/ngtsc/file_system/src/node_js_file_system.d.ts +3 -1
- package/src/ngtsc/file_system/src/node_js_file_system.js +8 -4
- package/src/ngtsc/file_system/src/types.d.ts +3 -1
- package/src/ngtsc/file_system/src/types.js +1 -1
- package/src/ngtsc/imports/index.d.ts +3 -3
- package/src/ngtsc/imports/index.js +4 -4
- package/src/ngtsc/imports/src/alias.d.ts +12 -11
- package/src/ngtsc/imports/src/alias.js +21 -16
- package/src/ngtsc/imports/src/emitter.d.ts +40 -19
- package/src/ngtsc/imports/src/emitter.js +54 -26
- package/src/ngtsc/imports/src/references.d.ts +30 -8
- package/src/ngtsc/imports/src/references.js +41 -6
- package/src/ngtsc/imports/src/resolver.d.ts +3 -6
- package/src/ngtsc/imports/src/resolver.js +5 -4
- package/src/ngtsc/incremental/api.d.ts +51 -0
- package/src/ngtsc/incremental/api.js +20 -0
- package/src/ngtsc/incremental/index.d.ts +1 -0
- package/src/ngtsc/incremental/index.js +4 -2
- package/src/ngtsc/incremental/src/dependency_tracking.d.ts +56 -0
- package/src/ngtsc/incremental/src/dependency_tracking.js +186 -0
- package/src/ngtsc/incremental/src/noop.d.ts +10 -0
- package/src/ngtsc/incremental/src/noop.js +23 -0
- package/src/ngtsc/incremental/src/state.d.ts +8 -14
- package/src/ngtsc/incremental/src/state.js +83 -80
- package/src/ngtsc/indexer/index.d.ts +1 -0
- package/src/ngtsc/indexer/index.js +4 -2
- package/src/ngtsc/metadata/index.d.ts +1 -1
- package/src/ngtsc/metadata/index.js +2 -1
- package/src/ngtsc/metadata/src/api.d.ts +8 -0
- package/src/ngtsc/metadata/src/api.js +1 -1
- package/src/ngtsc/metadata/src/dts.js +2 -1
- package/src/ngtsc/metadata/src/registry.d.ts +12 -1
- package/src/ngtsc/metadata/src/registry.js +22 -2
- package/src/ngtsc/metadata/src/util.d.ts +2 -0
- package/src/ngtsc/metadata/src/util.js +10 -1
- package/src/ngtsc/modulewithproviders/src/scanner.js +2 -2
- 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/builtin.d.ts +7 -6
- package/src/ngtsc/partial_evaluator/src/builtin.js +54 -9
- package/src/ngtsc/partial_evaluator/src/interface.d.ts +3 -9
- package/src/ngtsc/partial_evaluator/src/interface.js +4 -3
- package/src/ngtsc/partial_evaluator/src/interpreter.d.ts +4 -3
- package/src/ngtsc/partial_evaluator/src/interpreter.js +11 -7
- package/src/ngtsc/partial_evaluator/src/known_declaration.d.ts +19 -0
- package/src/ngtsc/partial_evaluator/src/known_declaration.js +38 -0
- package/src/ngtsc/partial_evaluator/src/result.d.ts +1 -1
- package/src/ngtsc/partial_evaluator/src/result.js +1 -1
- package/src/ngtsc/partial_evaluator/src/ts_helpers.d.ts +1 -1
- package/src/ngtsc/partial_evaluator/src/ts_helpers.js +13 -3
- package/src/ngtsc/program.d.ts +46 -57
- package/src/ngtsc/program.js +68 -574
- package/src/ngtsc/reflection/src/host.d.ts +19 -2
- package/src/ngtsc/reflection/src/host.js +17 -3
- package/src/ngtsc/reflection/src/typescript.js +11 -7
- package/src/ngtsc/resource/index.d.ts +9 -0
- package/src/ngtsc/resource/index.js +22 -0
- package/src/ngtsc/{resource_loader.d.ts → resource/src/loader.d.ts} +4 -4
- package/src/ngtsc/resource/src/loader.js +193 -0
- package/src/ngtsc/routing/src/route.js +2 -2
- package/src/ngtsc/scope/index.d.ts +1 -1
- package/src/ngtsc/scope/index.js +1 -1
- package/src/ngtsc/scope/src/component_scope.d.ts +2 -2
- package/src/ngtsc/scope/src/component_scope.js +1 -1
- package/src/ngtsc/scope/src/dependency.js +10 -8
- package/src/ngtsc/scope/src/local.d.ts +31 -4
- package/src/ngtsc/scope/src/local.js +83 -15
- package/src/ngtsc/shims/index.d.ts +2 -1
- package/src/ngtsc/shims/index.js +4 -5
- package/src/ngtsc/shims/src/api.d.ts +25 -0
- package/src/ngtsc/shims/src/api.js +13 -0
- package/src/ngtsc/shims/src/factory_generator.d.ts +2 -2
- package/src/ngtsc/shims/src/factory_generator.js +1 -1
- package/src/ngtsc/shims/src/factory_tracker.d.ts +24 -0
- package/src/ngtsc/shims/src/factory_tracker.js +47 -0
- package/src/ngtsc/shims/src/summary_generator.d.ts +1 -1
- package/src/ngtsc/shims/src/summary_generator.js +1 -1
- package/src/ngtsc/shims/src/typecheck_shim.d.ts +1 -1
- package/src/ngtsc/shims/src/typecheck_shim.js +1 -1
- package/src/ngtsc/synthetic_files_compiler_host.d.ts +1 -1
- package/src/ngtsc/transform/index.d.ts +3 -1
- package/src/ngtsc/transform/index.js +8 -3
- package/src/ngtsc/transform/src/alias.d.ts +1 -1
- package/src/ngtsc/transform/src/alias.js +1 -1
- package/src/ngtsc/transform/src/api.d.ts +52 -17
- package/src/ngtsc/transform/src/api.js +1 -1
- package/src/ngtsc/transform/src/compilation.d.ts +68 -47
- package/src/ngtsc/transform/src/compilation.js +498 -313
- package/src/ngtsc/transform/src/declaration.d.ts +1 -1
- package/src/ngtsc/transform/src/declaration.js +6 -1
- package/src/ngtsc/transform/src/trait.d.ts +169 -0
- package/src/ngtsc/transform/src/trait.js +114 -0
- package/src/ngtsc/transform/src/transform.d.ts +2 -2
- package/src/ngtsc/transform/src/transform.js +4 -4
- package/src/ngtsc/translator/src/translator.d.ts +11 -9
- package/src/ngtsc/translator/src/translator.js +51 -18
- package/src/ngtsc/typecheck/index.d.ts +1 -0
- package/src/ngtsc/typecheck/index.js +4 -2
- package/src/ngtsc/typecheck/src/api.d.ts +12 -1
- package/src/ngtsc/typecheck/src/api.js +1 -1
- package/src/ngtsc/typecheck/src/context.d.ts +3 -2
- package/src/ngtsc/typecheck/src/context.js +10 -8
- package/src/ngtsc/typecheck/src/diagnostics.d.ts +30 -31
- package/src/ngtsc/typecheck/src/diagnostics.js +108 -70
- package/src/ngtsc/typecheck/src/dom.d.ts +6 -5
- package/src/ngtsc/typecheck/src/dom.js +3 -3
- package/src/ngtsc/typecheck/src/environment.d.ts +5 -3
- package/src/ngtsc/typecheck/src/environment.js +20 -8
- package/src/ngtsc/typecheck/src/expression.d.ts +2 -3
- package/src/ngtsc/typecheck/src/expression.js +26 -23
- package/src/ngtsc/typecheck/src/host.d.ts +1 -0
- package/src/ngtsc/typecheck/src/host.js +4 -1
- package/src/ngtsc/typecheck/src/oob.d.ts +11 -11
- package/src/ngtsc/typecheck/src/oob.js +15 -4
- package/src/ngtsc/typecheck/src/source.d.ts +9 -9
- package/src/ngtsc/typecheck/src/source.js +15 -15
- package/src/ngtsc/typecheck/src/template_semantics.d.ts +22 -0
- package/src/ngtsc/typecheck/src/template_semantics.js +51 -0
- package/src/ngtsc/typecheck/src/ts_util.js +36 -1
- package/src/ngtsc/typecheck/src/type_check_block.d.ts +3 -3
- package/src/ngtsc/typecheck/src/type_check_block.js +70 -43
- package/src/ngtsc/typecheck/src/type_check_file.d.ts +2 -2
- package/src/ngtsc/typecheck/src/type_check_file.js +3 -3
- package/src/ngtsc/typecheck/src/type_constructor.d.ts +4 -4
- package/src/ngtsc/typecheck/src/type_constructor.js +15 -10
- package/src/ngtsc/typecheck/src/type_emitter.d.ts +72 -0
- package/src/ngtsc/typecheck/src/type_emitter.js +150 -0
- package/src/ngtsc/typecheck/src/type_parameter_emitter.d.ts +31 -0
- package/src/ngtsc/typecheck/src/type_parameter_emitter.js +96 -0
- package/src/ngtsc/util/src/typescript.d.ts +7 -1
- package/src/ngtsc/util/src/typescript.js +15 -5
- package/src/perform_watch.js +6 -5
- package/src/transformers/api.d.ts +3 -204
- package/src/transformers/api.js +1 -1
- package/src/transformers/compiler_host.js +2 -2
- package/src/transformers/program.js +1 -1
- package/src/typescript_support.js +2 -2
- package/src/version.js +1 -1
- package/src/ngtsc/diagnostics/src/code.js +0 -101
- package/src/ngtsc/resource_loader.js +0 -193
- package/src/ngtsc/shims/src/host.d.ts +0 -46
- package/src/ngtsc/shims/src/host.js +0 -82
- package/src/ngtsc/util/src/resource_recorder.d.ts +0 -18
- package/src/ngtsc/util/src/resource_recorder.js +0 -20
|
@@ -7,23 +7,22 @@
|
|
|
7
7
|
*/
|
|
8
8
|
/// <amd-module name="@angular/compiler-cli/src/ngtsc/incremental/src/state" />
|
|
9
9
|
import * as ts from 'typescript';
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
10
|
+
import { ClassRecord, TraitCompiler } from '../../transform';
|
|
11
|
+
import { IncrementalBuild } from '../api';
|
|
12
|
+
import { FileDependencyGraph } from './dependency_tracking';
|
|
12
13
|
/**
|
|
13
14
|
* Drives an incremental build, by tracking changes and determining which files need to be emitted.
|
|
14
15
|
*/
|
|
15
|
-
export declare class IncrementalDriver implements
|
|
16
|
+
export declare class IncrementalDriver implements IncrementalBuild<ClassRecord> {
|
|
16
17
|
private allTsFiles;
|
|
18
|
+
readonly depGraph: FileDependencyGraph;
|
|
19
|
+
private logicalChanges;
|
|
17
20
|
/**
|
|
18
21
|
* State of the current build.
|
|
19
22
|
*
|
|
20
23
|
* This transitions as the compilation progresses.
|
|
21
24
|
*/
|
|
22
25
|
private state;
|
|
23
|
-
/**
|
|
24
|
-
* Tracks metadata related to each `ts.SourceFile` in the program.
|
|
25
|
-
*/
|
|
26
|
-
private metadata;
|
|
27
26
|
private constructor();
|
|
28
27
|
/**
|
|
29
28
|
* Construct an `IncrementalDriver` with a starting state that incorporates the results of a
|
|
@@ -34,13 +33,8 @@ export declare class IncrementalDriver implements DependencyTracker, ResourceDep
|
|
|
34
33
|
*/
|
|
35
34
|
static reconcile(oldProgram: ts.Program, oldDriver: IncrementalDriver, newProgram: ts.Program, modifiedResourceFiles: Set<string> | null): IncrementalDriver;
|
|
36
35
|
static fresh(program: ts.Program): IncrementalDriver;
|
|
37
|
-
recordSuccessfulAnalysis(): void;
|
|
36
|
+
recordSuccessfulAnalysis(traitCompiler: TraitCompiler): void;
|
|
38
37
|
recordSuccessfulEmit(sf: ts.SourceFile): void;
|
|
39
38
|
safeToSkipEmit(sf: ts.SourceFile): boolean;
|
|
40
|
-
|
|
41
|
-
trackFileDependencies(deps: ts.SourceFile[], src: ts.SourceFile): void;
|
|
42
|
-
getFileDependencies(file: ts.SourceFile): ts.SourceFile[];
|
|
43
|
-
recordResourceDependency(file: ts.SourceFile, resourcePath: string): void;
|
|
44
|
-
private ensureMetadata;
|
|
45
|
-
private hasChangedResourceDependencies;
|
|
39
|
+
priorWorkFor(sf: ts.SourceFile): ClassRecord[] | null;
|
|
46
40
|
}
|
|
@@ -11,22 +11,22 @@
|
|
|
11
11
|
if (v !== undefined) module.exports = v;
|
|
12
12
|
}
|
|
13
13
|
else if (typeof define === "function" && define.amd) {
|
|
14
|
-
define("@angular/compiler-cli/src/ngtsc/incremental/src/state", ["require", "exports", "tslib"], factory);
|
|
14
|
+
define("@angular/compiler-cli/src/ngtsc/incremental/src/state", ["require", "exports", "tslib", "@angular/compiler-cli/src/ngtsc/file_system", "@angular/compiler-cli/src/ngtsc/incremental/src/dependency_tracking"], factory);
|
|
15
15
|
}
|
|
16
16
|
})(function (require, exports) {
|
|
17
17
|
"use strict";
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
19
|
var tslib_1 = require("tslib");
|
|
20
|
+
var file_system_1 = require("@angular/compiler-cli/src/ngtsc/file_system");
|
|
21
|
+
var dependency_tracking_1 = require("@angular/compiler-cli/src/ngtsc/incremental/src/dependency_tracking");
|
|
20
22
|
/**
|
|
21
23
|
* Drives an incremental build, by tracking changes and determining which files need to be emitted.
|
|
22
24
|
*/
|
|
23
25
|
var IncrementalDriver = /** @class */ (function () {
|
|
24
|
-
function IncrementalDriver(state, allTsFiles) {
|
|
26
|
+
function IncrementalDriver(state, allTsFiles, depGraph, logicalChanges) {
|
|
25
27
|
this.allTsFiles = allTsFiles;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
*/
|
|
29
|
-
this.metadata = new Map();
|
|
28
|
+
this.depGraph = depGraph;
|
|
29
|
+
this.logicalChanges = logicalChanges;
|
|
30
30
|
this.state = state;
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
* are merged into the new build's `PendingBuildState`.
|
|
38
38
|
*/
|
|
39
39
|
IncrementalDriver.reconcile = function (oldProgram, oldDriver, newProgram, modifiedResourceFiles) {
|
|
40
|
-
var e_1, _a, e_2, _b, e_3, _c;
|
|
40
|
+
var e_1, _a, e_2, _b, e_3, _c, e_4, _d, e_5, _e;
|
|
41
41
|
// Initialize the state of the current build based on the previous one.
|
|
42
42
|
var state;
|
|
43
43
|
if (oldDriver.state.kind === BuildStateKind.Pending) {
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
pendingEmit: oldDriver.state.pendingEmit,
|
|
54
54
|
changedResourcePaths: new Set(),
|
|
55
55
|
changedTsPaths: new Set(),
|
|
56
|
+
lastGood: oldDriver.state.lastGood,
|
|
56
57
|
};
|
|
57
58
|
}
|
|
58
59
|
// Merge the freshly modified resource files with any prior ones.
|
|
@@ -60,7 +61,7 @@
|
|
|
60
61
|
try {
|
|
61
62
|
for (var modifiedResourceFiles_1 = tslib_1.__values(modifiedResourceFiles), modifiedResourceFiles_1_1 = modifiedResourceFiles_1.next(); !modifiedResourceFiles_1_1.done; modifiedResourceFiles_1_1 = modifiedResourceFiles_1.next()) {
|
|
62
63
|
var resFile = modifiedResourceFiles_1_1.value;
|
|
63
|
-
state.changedResourcePaths.add(resFile);
|
|
64
|
+
state.changedResourcePaths.add(file_system_1.absoluteFrom(resFile));
|
|
64
65
|
}
|
|
65
66
|
}
|
|
66
67
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
@@ -81,8 +82,8 @@
|
|
|
81
82
|
// Assume all the old files were deleted to begin with. Only TS files are tracked.
|
|
82
83
|
var deletedTsPaths = new Set(tsOnlyFiles(oldProgram).map(function (sf) { return sf.fileName; }));
|
|
83
84
|
try {
|
|
84
|
-
for (var
|
|
85
|
-
var newFile =
|
|
85
|
+
for (var _f = tslib_1.__values(newProgram.getSourceFiles()), _g = _f.next(); !_g.done; _g = _f.next()) {
|
|
86
|
+
var newFile = _g.value;
|
|
86
87
|
if (!newFile.isDeclarationFile) {
|
|
87
88
|
// This file exists in the new program, so remove it from `deletedTsPaths`.
|
|
88
89
|
deletedTsPaths.delete(newFile.fileName);
|
|
@@ -108,12 +109,12 @@
|
|
|
108
109
|
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
109
110
|
finally {
|
|
110
111
|
try {
|
|
111
|
-
if (
|
|
112
|
+
if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
|
|
112
113
|
}
|
|
113
114
|
finally { if (e_2) throw e_2.error; }
|
|
114
115
|
}
|
|
115
116
|
try {
|
|
116
|
-
// The
|
|
117
|
+
// The next step is to remove any deleted files from the state.
|
|
117
118
|
for (var deletedTsPaths_1 = tslib_1.__values(deletedTsPaths), deletedTsPaths_1_1 = deletedTsPaths_1.next(); !deletedTsPaths_1_1.done; deletedTsPaths_1_1 = deletedTsPaths_1.next()) {
|
|
118
119
|
var filePath = deletedTsPaths_1_1.value;
|
|
119
120
|
state.pendingEmit.delete(filePath);
|
|
@@ -129,8 +130,52 @@
|
|
|
129
130
|
}
|
|
130
131
|
finally { if (e_3) throw e_3.error; }
|
|
131
132
|
}
|
|
132
|
-
//
|
|
133
|
-
|
|
133
|
+
// Now, changedTsPaths contains physically changed TS paths. Use the previous program's logical
|
|
134
|
+
// dependency graph to determine logically changed files.
|
|
135
|
+
var depGraph = new dependency_tracking_1.FileDependencyGraph();
|
|
136
|
+
// If a previous compilation exists, use its dependency graph to determine the set of logically
|
|
137
|
+
// changed files.
|
|
138
|
+
var logicalChanges = null;
|
|
139
|
+
if (state.lastGood !== null) {
|
|
140
|
+
// Extract the set of logically changed files. At the same time, this operation populates the
|
|
141
|
+
// current (fresh) dependency graph with information about those files which have not
|
|
142
|
+
// logically changed.
|
|
143
|
+
logicalChanges = depGraph.updateWithPhysicalChanges(state.lastGood.depGraph, state.changedTsPaths, deletedTsPaths, state.changedResourcePaths);
|
|
144
|
+
try {
|
|
145
|
+
for (var _h = tslib_1.__values(state.changedTsPaths), _j = _h.next(); !_j.done; _j = _h.next()) {
|
|
146
|
+
var fileName = _j.value;
|
|
147
|
+
logicalChanges.add(fileName);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
151
|
+
finally {
|
|
152
|
+
try {
|
|
153
|
+
if (_j && !_j.done && (_d = _h.return)) _d.call(_h);
|
|
154
|
+
}
|
|
155
|
+
finally { if (e_4) throw e_4.error; }
|
|
156
|
+
}
|
|
157
|
+
try {
|
|
158
|
+
// Any logically changed files need to be re-emitted. Most of the time this would happen
|
|
159
|
+
// regardless because the new dependency graph would _also_ identify the file as stale.
|
|
160
|
+
// However there are edge cases such as removing a component from an NgModule without adding
|
|
161
|
+
// it to another one, where the previous graph identifies the file as logically changed, but
|
|
162
|
+
// the new graph (which does not have that edge) fails to identify that the file should be
|
|
163
|
+
// re-emitted.
|
|
164
|
+
for (var logicalChanges_1 = tslib_1.__values(logicalChanges), logicalChanges_1_1 = logicalChanges_1.next(); !logicalChanges_1_1.done; logicalChanges_1_1 = logicalChanges_1.next()) {
|
|
165
|
+
var change = logicalChanges_1_1.value;
|
|
166
|
+
state.pendingEmit.add(change);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
170
|
+
finally {
|
|
171
|
+
try {
|
|
172
|
+
if (logicalChanges_1_1 && !logicalChanges_1_1.done && (_e = logicalChanges_1.return)) _e.call(logicalChanges_1);
|
|
173
|
+
}
|
|
174
|
+
finally { if (e_5) throw e_5.error; }
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
// `state` now reflects the initial pending state of the current compilation.
|
|
178
|
+
return new IncrementalDriver(state, new Set(tsOnlyFiles(newProgram)), depGraph, logicalChanges);
|
|
134
179
|
};
|
|
135
180
|
IncrementalDriver.fresh = function (program) {
|
|
136
181
|
// Initialize the set of files which need to be emitted to the set of all TS files in the
|
|
@@ -141,11 +186,12 @@
|
|
|
141
186
|
pendingEmit: new Set(tsFiles.map(function (sf) { return sf.fileName; })),
|
|
142
187
|
changedResourcePaths: new Set(),
|
|
143
188
|
changedTsPaths: new Set(),
|
|
189
|
+
lastGood: null,
|
|
144
190
|
};
|
|
145
|
-
return new IncrementalDriver(state, new Set(tsFiles));
|
|
191
|
+
return new IncrementalDriver(state, new Set(tsFiles), new dependency_tracking_1.FileDependencyGraph(), /* logicalChanges */ null);
|
|
146
192
|
};
|
|
147
|
-
IncrementalDriver.prototype.recordSuccessfulAnalysis = function () {
|
|
148
|
-
var
|
|
193
|
+
IncrementalDriver.prototype.recordSuccessfulAnalysis = function (traitCompiler) {
|
|
194
|
+
var e_6, _a;
|
|
149
195
|
if (this.state.kind !== BuildStateKind.Pending) {
|
|
150
196
|
// Changes have already been incorporated.
|
|
151
197
|
return;
|
|
@@ -155,93 +201,50 @@
|
|
|
155
201
|
try {
|
|
156
202
|
for (var _b = tslib_1.__values(this.allTsFiles), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
157
203
|
var sf = _c.value;
|
|
158
|
-
|
|
159
|
-
// 1) it hasn't changed
|
|
160
|
-
// 2) none if its resource dependencies have changed
|
|
161
|
-
// 3) none of its source dependencies have changed
|
|
162
|
-
if (state.changedTsPaths.has(sf.fileName) || this.hasChangedResourceDependencies(sf) ||
|
|
163
|
-
this.getFileDependencies(sf).some(function (dep) { return state.changedTsPaths.has(dep.fileName); })) {
|
|
204
|
+
if (this.depGraph.isStale(sf, state.changedTsPaths, state.changedResourcePaths)) {
|
|
164
205
|
// Something has changed which requires this file be re-emitted.
|
|
165
206
|
pendingEmit.add(sf.fileName);
|
|
166
207
|
}
|
|
167
208
|
}
|
|
168
209
|
}
|
|
169
|
-
catch (
|
|
210
|
+
catch (e_6_1) { e_6 = { error: e_6_1 }; }
|
|
170
211
|
finally {
|
|
171
212
|
try {
|
|
172
213
|
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
173
214
|
}
|
|
174
|
-
finally { if (
|
|
215
|
+
finally { if (e_6) throw e_6.error; }
|
|
175
216
|
}
|
|
176
217
|
// Update the state to an `AnalyzedBuildState`.
|
|
177
218
|
this.state = {
|
|
178
219
|
kind: BuildStateKind.Analyzed,
|
|
179
220
|
pendingEmit: pendingEmit,
|
|
221
|
+
// Since this compilation was successfully analyzed, update the "last good" artifacts to the
|
|
222
|
+
// ones from the current compilation.
|
|
223
|
+
lastGood: {
|
|
224
|
+
depGraph: this.depGraph,
|
|
225
|
+
traitCompiler: traitCompiler,
|
|
226
|
+
}
|
|
180
227
|
};
|
|
181
228
|
};
|
|
182
229
|
IncrementalDriver.prototype.recordSuccessfulEmit = function (sf) { this.state.pendingEmit.delete(sf.fileName); };
|
|
183
230
|
IncrementalDriver.prototype.safeToSkipEmit = function (sf) { return !this.state.pendingEmit.has(sf.fileName); };
|
|
184
|
-
IncrementalDriver.prototype.
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
IncrementalDriver.prototype.trackFileDependencies = function (deps, src) {
|
|
189
|
-
var e_5, _a;
|
|
190
|
-
var metadata = this.ensureMetadata(src);
|
|
191
|
-
try {
|
|
192
|
-
for (var deps_1 = tslib_1.__values(deps), deps_1_1 = deps_1.next(); !deps_1_1.done; deps_1_1 = deps_1.next()) {
|
|
193
|
-
var dep = deps_1_1.value;
|
|
194
|
-
metadata.fileDependencies.add(dep);
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
198
|
-
finally {
|
|
199
|
-
try {
|
|
200
|
-
if (deps_1_1 && !deps_1_1.done && (_a = deps_1.return)) _a.call(deps_1);
|
|
201
|
-
}
|
|
202
|
-
finally { if (e_5) throw e_5.error; }
|
|
231
|
+
IncrementalDriver.prototype.priorWorkFor = function (sf) {
|
|
232
|
+
if (this.state.lastGood === null || this.logicalChanges === null) {
|
|
233
|
+
// There is no previous good build, so no prior work exists.
|
|
234
|
+
return null;
|
|
203
235
|
}
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
return [];
|
|
236
|
+
else if (this.logicalChanges.has(sf.fileName)) {
|
|
237
|
+
// Prior work might exist, but would be stale as the file in question has logically changed.
|
|
238
|
+
return null;
|
|
208
239
|
}
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
IncrementalDriver.prototype.recordResourceDependency = function (file, resourcePath) {
|
|
213
|
-
var metadata = this.ensureMetadata(file);
|
|
214
|
-
metadata.resourcePaths.add(resourcePath);
|
|
215
|
-
};
|
|
216
|
-
IncrementalDriver.prototype.ensureMetadata = function (sf) {
|
|
217
|
-
var metadata = this.metadata.get(sf) || new FileMetadata();
|
|
218
|
-
this.metadata.set(sf, metadata);
|
|
219
|
-
return metadata;
|
|
220
|
-
};
|
|
221
|
-
IncrementalDriver.prototype.hasChangedResourceDependencies = function (sf) {
|
|
222
|
-
var _this = this;
|
|
223
|
-
if (!this.metadata.has(sf)) {
|
|
224
|
-
return false;
|
|
240
|
+
else {
|
|
241
|
+
// Prior work might exist, and if it does then it's usable!
|
|
242
|
+
return this.state.lastGood.traitCompiler.recordsFor(sf);
|
|
225
243
|
}
|
|
226
|
-
var resourceDeps = this.metadata.get(sf).resourcePaths;
|
|
227
|
-
return Array.from(resourceDeps.keys())
|
|
228
|
-
.some(function (resourcePath) { return _this.state.kind === BuildStateKind.Pending &&
|
|
229
|
-
_this.state.changedResourcePaths.has(resourcePath); });
|
|
230
244
|
};
|
|
231
245
|
return IncrementalDriver;
|
|
232
246
|
}());
|
|
233
247
|
exports.IncrementalDriver = IncrementalDriver;
|
|
234
|
-
/**
|
|
235
|
-
* Information about the whether a source file can have analysis or emission can be skipped.
|
|
236
|
-
*/
|
|
237
|
-
var FileMetadata = /** @class */ (function () {
|
|
238
|
-
function FileMetadata() {
|
|
239
|
-
/** A set of source files that this file depends upon. */
|
|
240
|
-
this.fileDependencies = new Set();
|
|
241
|
-
this.resourcePaths = new Set();
|
|
242
|
-
}
|
|
243
|
-
return FileMetadata;
|
|
244
|
-
}());
|
|
245
248
|
var BuildStateKind;
|
|
246
249
|
(function (BuildStateKind) {
|
|
247
250
|
BuildStateKind[BuildStateKind["Pending"] = 0] = "Pending";
|
|
@@ -251,4 +254,4 @@
|
|
|
251
254
|
return program.getSourceFiles().filter(function (sf) { return !sf.isDeclarationFile; });
|
|
252
255
|
}
|
|
253
256
|
});
|
|
254
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL2luY3JlbWVudGFsL3NyYy9zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7SUFPSDs7T0FFRztJQUNIO1FBYUUsMkJBQW9CLEtBQXdCLEVBQVUsVUFBOEI7WUFBOUIsZUFBVSxHQUFWLFVBQVUsQ0FBb0I7WUFMcEY7O2VBRUc7WUFDSyxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQStCLENBQUM7WUFHeEQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDckIsQ0FBQztRQUVEOzs7Ozs7V0FNRztRQUNJLDJCQUFTLEdBQWhCLFVBQ0ksVUFBc0IsRUFBRSxTQUE0QixFQUFFLFVBQXNCLEVBQzVFLHFCQUF1Qzs7WUFDekMsdUVBQXVFO1lBQ3ZFLElBQUksS0FBd0IsQ0FBQztZQUM3QixJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxPQUFPLEVBQUU7Z0JBQ25ELDhGQUE4RjtnQkFDOUYsY0FBYztnQkFDZCxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQzthQUN6QjtpQkFBTTtnQkFDTCx3RkFBd0Y7Z0JBQ3hGLDJCQUEyQjtnQkFDM0IsS0FBSyxHQUFHO29CQUNOLElBQUksRUFBRSxjQUFjLENBQUMsT0FBTztvQkFDNUIsV0FBVyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVztvQkFDeEMsb0JBQW9CLEVBQUUsSUFBSSxHQUFHLEVBQVU7b0JBQ3ZDLGNBQWMsRUFBRSxJQUFJLEdBQUcsRUFBVTtpQkFDbEMsQ0FBQzthQUNIO1lBRUQsaUVBQWlFO1lBQ2pFLElBQUkscUJBQXFCLEtBQUssSUFBSSxFQUFFOztvQkFDbEMsS0FBc0IsSUFBQSwwQkFBQSxpQkFBQSxxQkFBcUIsQ0FBQSw0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QW1CO1FBQ3RDLE9BQU8sT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFBLEVBQUUsSUFBSSxPQUFBLENBQUMsRUFBRSxDQUFDLGlCQUFpQixFQUFyQixDQUFxQixDQUFDLENBQUM7SUFDdEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7RGVwZW5kZW5jeVRyYWNrZXJ9IGZyb20gJy4uLy4uL3BhcnRpYWxfZXZhbHVhdG9yJztcbmltcG9ydCB7UmVzb3VyY2VEZXBlbmRlbmN5UmVjb3JkZXJ9IGZyb20gJy4uLy4uL3V0aWwvc3JjL3Jlc291cmNlX3JlY29yZGVyJztcblxuLyoqXG4gKiBEcml2ZXMgYW4gaW5jcmVtZW50YWwgYnVpbGQsIGJ5IHRyYWNraW5nIGNoYW5nZXMgYW5kIGRldGVybWluaW5nIHdoaWNoIGZpbGVzIG5lZWQgdG8gYmUgZW1pdHRlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIEluY3JlbWVudGFsRHJpdmVyIGltcGxlbWVudHMgRGVwZW5kZW5jeVRyYWNrZXIsIFJlc291cmNlRGVwZW5kZW5jeVJlY29yZGVyIHtcbiAgLyoqXG4gICAqIFN0YXRlIG9mIHRoZSBjdXJyZW50IGJ1aWxkLlxuICAgKlxuICAgKiBUaGlzIHRyYW5zaXRpb25zIGFzIHRoZSBjb21waWxhdGlvbiBwcm9ncmVzc2VzLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0ZTogQnVpbGRTdGF0ZTtcblxuICAvKipcbiAgICogVHJhY2tzIG1ldGFkYXRhIHJlbGF0ZWQgdG8gZWFjaCBgdHMuU291cmNlRmlsZWAgaW4gdGhlIHByb2dyYW0uXG4gICAqL1xuICBwcml2YXRlIG1ldGFkYXRhID0gbmV3IE1hcDx0cy5Tb3VyY2VGaWxlLCBGaWxlTWV0YWRhdGE+KCk7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihzdGF0ZTogUGVuZGluZ0J1aWxkU3RhdGUsIHByaXZhdGUgYWxsVHNGaWxlczogU2V0PHRzLlNvdXJjZUZpbGU+KSB7XG4gICAgdGhpcy5zdGF0ZSA9IHN0YXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdCBhbiBgSW5jcmVtZW50YWxEcml2ZXJgIHdpdGggYSBzdGFydGluZyBzdGF0ZSB0aGF0IGluY29ycG9yYXRlcyB0aGUgcmVzdWx0cyBvZiBhXG4gICAqIHByZXZpb3VzIGJ1aWxkLlxuICAgKlxuICAgKiBUaGUgcHJldmlvdXMgYnVpbGQncyBgQnVpbGRTdGF0ZWAgaXMgcmVjb25jaWxlZCB3aXRoIHRoZSBuZXcgcHJvZ3JhbSdzIGNoYW5nZXMsIGFuZCB0aGUgcmVzdWx0c1xuICAgKiBhcmUgbWVyZ2VkIGludG8gdGhlIG5ldyBidWlsZCdzIGBQZW5kaW5nQnVpbGRTdGF0ZWAuXG4gICAqL1xuICBzdGF0aWMgcmVjb25jaWxlKFxuICAgICAgb2xkUHJvZ3JhbTogdHMuUHJvZ3JhbSwgb2xkRHJpdmVyOiBJbmNyZW1lbnRhbERyaXZlciwgbmV3UHJvZ3JhbTogdHMuUHJvZ3JhbSxcbiAgICAgIG1vZGlmaWVkUmVzb3VyY2VGaWxlczogU2V0PHN0cmluZz58bnVsbCk6IEluY3JlbWVudGFsRHJpdmVyIHtcbiAgICAvLyBJbml0aWFsaXplIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCBidWlsZCBiYXNlZCBvbiB0aGUgcHJldmlvdXMgb25lLlxuICAgIGxldCBzdGF0ZTogUGVuZGluZ0J1aWxkU3RhdGU7XG4gICAgaWYgKG9sZERyaXZlci5zdGF0ZS5raW5kID09PSBCdWlsZFN0YXRlS2luZC5QZW5kaW5nKSB7XG4gICAgICAvLyBUaGUgcHJldmlvdXMgYnVpbGQgbmV2ZXIgbWFkZSBpdCBwYXN0IHRoZSBwZW5kaW5nIHN0YXRlLiBSZXVzZSBpdCBhcyB0aGUgc3RhcnRpbmcgc3RhdGUgZm9yXG4gICAgICAvLyB0aGlzIGJ1aWxkLlxuICAgICAgc3RhdGUgPSBvbGREcml2ZXIuc3RhdGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoZSBwcmV2aW91cyBidWlsZCB3YXMgc3VjY2Vzc2Z1bGx5IGFuYWx5emVkLiBgcGVuZGluZ0VtaXRgIGlzIHRoZSBvbmx5IHN0YXRlIGNhcnJpZWRcbiAgICAgIC8vIGZvcndhcmQgaW50byB0aGlzIGJ1aWxkLlxuICAgICAgc3RhdGUgPSB7XG4gICAgICAgIGtpbmQ6IEJ1aWxkU3RhdGVLaW5kLlBlbmRpbmcsXG4gICAgICAgIHBlbmRpbmdFbWl0OiBvbGREcml2ZXIuc3RhdGUucGVuZGluZ0VtaXQsXG4gICAgICAgIGNoYW5nZWRSZXNvdXJjZVBhdGhzOiBuZXcgU2V0PHN0cmluZz4oKSxcbiAgICAgICAgY2hhbmdlZFRzUGF0aHM6IG5ldyBTZXQ8c3RyaW5nPigpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBNZXJnZSB0aGUgZnJlc2hseSBtb2RpZmllZCByZXNvdXJjZSBmaWxlcyB3aXRoIGFueSBwcmlvciBvbmVzLlxuICAgIGlmIChtb2RpZmllZFJlc291cmNlRmlsZXMgIT09IG51bGwpIHtcbiAgICAgIGZvciAoY29uc3QgcmVzRmlsZSBvZiBtb2RpZmllZFJlc291cmNlRmlsZXMpIHtcbiAgICAgICAgc3RhdGUuY2hhbmdlZFJlc291cmNlUGF0aHMuYWRkKHJlc0ZpbGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE5leHQsIHByb2Nlc3MgdGhlIGZpbGVzIGluIHRoZSBuZXcgcHJvZ3JhbSwgd2l0aCBhIGNvdXBsZSBvZiBnb2FsczpcbiAgICAvLyAxKSBEZXRlcm1pbmUgd2hpY2ggVFMgZmlsZXMgaGF2ZSBjaGFuZ2VkLCBpZiBhbnksIGFuZCBtZXJnZSB0aGVtIGludG8gYGNoYW5nZWRUc0ZpbGVzYC5cbiAgICAvLyAyKSBQcm9kdWNlIGEgbGlzdCBvZiBUUyBmaWxlcyB3aGljaCBubyBsb25nZXIgZXhpc3QgaW4gdGhlIHByb2dyYW0gKHRoZXkndmUgYmVlbiBkZWxldGVkXG4gICAgLy8gICAgc2luY2UgdGhlIHByZXZpb3VzIGNvbXBpbGF0aW9uKS4gVGhlc2UgbmVlZCB0byBiZSByZW1vdmVkIGZyb20gdGhlIHN0YXRlIHRyYWNraW5nIHRvIGF2b2lkXG4gICAgLy8gICAgbGVha2luZyBtZW1vcnkuXG5cbiAgICAvLyBBbGwgZmlsZXMgaW4gdGhlIG9sZCBwcm9ncmFtLCBmb3IgZWFzeSBkZXRlY3Rpb24gb2YgY2hhbmdlcy5cbiAgICBjb25zdCBvbGRGaWxlcyA9IG5ldyBTZXQ8dHMuU291cmNlRmlsZT4ob2xkUHJvZ3JhbS5nZXRTb3VyY2VGaWxlcygpKTtcblxuICAgIC8vIEFzc3VtZSBhbGwgdGhlIG9sZCBmaWxlcyB3ZXJlIGRlbGV0ZWQgdG8gYmVnaW4gd2l0aC4gT25seSBUUyBmaWxlcyBhcmUgdHJhY2tlZC5cbiAgICBjb25zdCBkZWxldGVkVHNQYXRocyA9IG5ldyBTZXQ8c3RyaW5nPih0c09ubHlGaWxlcyhvbGRQcm9ncmFtKS5tYXAoc2YgPT4gc2YuZmlsZU5hbWUpKTtcblxuICAgIGZvciAoY29uc3QgbmV3RmlsZSBvZiBuZXdQcm9ncmFtLmdldFNvdXJjZUZpbGVzKCkpIHtcbiAgICAgIGlmICghbmV3RmlsZS5pc0RlY2xhcmF0aW9uRmlsZSkge1xuICAgICAgICAvLyBUaGlzIGZpbGUgZXhpc3RzIGluIHRoZSBuZXcgcHJvZ3JhbSwgc28gcmVtb3ZlIGl0IGZyb20gYGRlbGV0ZWRUc1BhdGhzYC5cbiAgICAgICAgZGVsZXRlZFRzUGF0aHMuZGVsZXRlKG5ld0ZpbGUuZmlsZU5hbWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAob2xkRmlsZXMuaGFzKG5ld0ZpbGUpKSB7XG4gICAgICAgIC8vIFRoaXMgZmlsZSBoYXNuJ3QgY2hhbmdlZDsgbm8gbmVlZCB0byBsb29rIGF0IGl0IGZ1cnRoZXIuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBUaGUgZmlsZSBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgbGFzdCBzdWNjZXNzZnVsIGJ1aWxkLiBUaGUgYXBwcm9wcmlhdGUgcmVhY3Rpb24gZGVwZW5kcyBvblxuICAgICAgLy8gd2hhdCBraW5kIG9mIGZpbGUgaXQgaXMuXG4gICAgICBpZiAoIW5ld0ZpbGUuaXNEZWNsYXJhdGlvbkZpbGUpIHtcbiAgICAgICAgLy8gSXQncyBhIC50cyBmaWxlLCBzbyB0cmFjayBpdCBhcyBhIGNoYW5nZS5cbiAgICAgICAgc3RhdGUuY2hhbmdlZFRzUGF0aHMuYWRkKG5ld0ZpbGUuZmlsZU5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSXQncyBhIC5kLnRzIGZpbGUuIEN1cnJlbnRseSB0aGUgY29tcGlsZXIgZG9lcyBub3QgZG8gYSBncmVhdCBqb2Igb2YgdHJhY2tpbmdcbiAgICAgICAgLy8gZGVwZW5kZW5jaWVzIG9uIC5kLnRzIGZpbGVzLCBzbyBiYWlsIG91dCBvZiBpbmNyZW1lbnRhbCBidWlsZHMgaGVyZSBhbmQgZG8gYSBmdWxsIGJ1aWxkLlxuICAgICAgICAvLyBUaGlzIHVzdWFsbHkgb25seSBoYXBwZW5zIGlmIHNvbWV0aGluZyBpbiBub2RlX21vZHVsZXMgY2hhbmdlcy5cbiAgICAgICAgcmV0dXJuIEluY3JlbWVudGFsRHJpdmVyLmZyZXNoKG5ld1Byb2dyYW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRoZSBsYXN0IHN0ZXAgaXMgdG8gcmVtb3ZlIGFueSBkZWxldGVkIGZpbGVzIGZyb20gdGhlIHN0YXRlLlxuICAgIGZvciAoY29uc3QgZmlsZVBhdGggb2YgZGVsZXRlZFRzUGF0aHMpIHtcbiAgICAgIHN0YXRlLnBlbmRpbmdFbWl0LmRlbGV0ZShmaWxlUGF0aCk7XG5cbiAgICAgIC8vIEV2ZW4gaWYgdGhlIGZpbGUgZG9lc24ndCBleGlzdCBpbiB0aGUgY3VycmVudCBjb21waWxhdGlvbiwgaXQgc3RpbGwgbWlnaHQgaGF2ZSBiZWVuIGNoYW5nZWRcbiAgICAgIC8vIGluIGEgcHJldmlvdXMgb25lLCBzbyBkZWxldGUgaXQgZnJvbSB0aGUgc2V0IG9mIGNoYW5nZWQgVFMgZmlsZXMsIGp1c3QgaW4gY2FzZS5cbiAgICAgIHN0YXRlLmNoYW5nZWRUc1BhdGhzLmRlbGV0ZShmaWxlUGF0aCk7XG4gICAgfVxuXG4gICAgLy8gYHN0YXRlYCBub3cgcmVmbGVjdHMgdGhlIGluaXRpYWwgY29tcGlsYXRpb24gc3RhdGUgb2YgdGhlIGN1cnJlbnRcbiAgICByZXR1cm4gbmV3IEluY3JlbWVudGFsRHJpdmVyKHN0YXRlLCBuZXcgU2V0PHRzLlNvdXJjZUZpbGU+KHRzT25seUZpbGVzKG5ld1Byb2dyYW0pKSk7XG4gIH1cblxuICBzdGF0aWMgZnJlc2gocHJvZ3JhbTogdHMuUHJvZ3JhbSk6IEluY3JlbWVudGFsRHJpdmVyIHtcbiAgICAvLyBJbml0aWFsaXplIHRoZSBzZXQgb2YgZmlsZXMgd2hpY2ggbmVlZCB0byBiZSBlbWl0dGVkIHRvIHRoZSBzZXQgb2YgYWxsIFRTIGZpbGVzIGluIHRoZVxuICAgIC8vIHByb2dyYW0uXG4gICAgY29uc3QgdHNGaWxlcyA9IHRzT25seUZpbGVzKHByb2dyYW0pO1xuXG4gICAgY29uc3Qgc3RhdGU6IFBlbmRpbmdCdWlsZFN0YXRlID0ge1xuICAgICAga2luZDogQnVpbGRTdGF0ZUtpbmQuUGVuZGluZyxcbiAgICAgIHBlbmRpbmdFbWl0OiBuZXcgU2V0PHN0cmluZz4odHNGaWxlcy5tYXAoc2YgPT4gc2YuZmlsZU5hbWUpKSxcbiAgICAgIGNoYW5nZWRSZXNvdXJjZVBhdGhzOiBuZXcgU2V0PHN0cmluZz4oKSxcbiAgICAgIGNoYW5nZWRUc1BhdGhzOiBuZXcgU2V0PHN0cmluZz4oKSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBJbmNyZW1lbnRhbERyaXZlcihzdGF0ZSwgbmV3IFNldCh0c0ZpbGVzKSk7XG4gIH1cblxuICByZWNvcmRTdWNjZXNzZnVsQW5hbHlzaXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUua2luZCAhPT0gQnVpbGRTdGF0ZUtpbmQuUGVuZGluZykge1xuICAgICAgLy8gQ2hhbmdlcyBoYXZlIGFscmVhZHkgYmVlbiBpbmNvcnBvcmF0ZWQuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGVuZGluZ0VtaXQgPSB0aGlzLnN0YXRlLnBlbmRpbmdFbWl0O1xuXG4gICAgY29uc3Qgc3RhdGU6IFBlbmRpbmdCdWlsZFN0YXRlID0gdGhpcy5zdGF0ZTtcblxuICAgIGZvciAoY29uc3Qgc2Ygb2YgdGhpcy5hbGxUc0ZpbGVzKSB7XG4gICAgICAvLyBJdCdzIHNhZmUgdG8gc2tpcCBlbWl0dGluZyBhIGZpbGUgaWY6XG4gICAgICAvLyAxKSBpdCBoYXNuJ3QgY2hhbmdlZFxuICAgICAgLy8gMikgbm9uZSBpZiBpdHMgcmVzb3VyY2UgZGVwZW5kZW5jaWVzIGhhdmUgY2hhbmdlZFxuICAgICAgLy8gMykgbm9uZSBvZiBpdHMgc291cmNlIGRlcGVuZGVuY2llcyBoYXZlIGNoYW5nZWRcbiAgICAgIGlmIChzdGF0ZS5jaGFuZ2VkVHNQYXRocy5oYXMoc2YuZmlsZU5hbWUpIHx8IHRoaXMuaGFzQ2hhbmdlZFJlc291cmNlRGVwZW5kZW5jaWVzKHNmKSB8fFxuICAgICAgICAgIHRoaXMuZ2V0RmlsZURlcGVuZGVuY2llcyhzZikuc29tZShkZXAgPT4gc3RhdGUuY2hhbmdlZFRzUGF0aHMuaGFzKGRlcC5maWxlTmFtZSkpKSB7XG4gICAgICAgIC8vIFNvbWV0aGluZyBoYXMgY2hhbmdlZCB3aGljaCByZXF1aXJlcyB0aGlzIGZpbGUgYmUgcmUtZW1pdHRlZC5cbiAgICAgICAgcGVuZGluZ0VtaXQuYWRkKHNmLmZpbGVOYW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgdGhlIHN0YXRlIHRvIGFuIGBBbmFseXplZEJ1aWxkU3RhdGVgLlxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBraW5kOiBCdWlsZFN0YXRlS2luZC5BbmFseXplZCxcbiAgICAgIHBlbmRpbmdFbWl0LFxuICAgIH07XG4gIH1cblxuICByZWNvcmRTdWNjZXNzZnVsRW1pdChzZjogdHMuU291cmNlRmlsZSk6IHZvaWQgeyB0aGlzLnN0YXRlLnBlbmRpbmdFbWl0LmRlbGV0ZShzZi5maWxlTmFtZSk7IH1cblxuICBzYWZlVG9Ta2lwRW1pdChzZjogdHMuU291cmNlRmlsZSk6IGJvb2xlYW4geyByZXR1cm4gIXRoaXMuc3RhdGUucGVuZGluZ0VtaXQuaGFzKHNmLmZpbGVOYW1lKTsgfVxuXG4gIHRyYWNrRmlsZURlcGVuZGVuY3koZGVwOiB0cy5Tb3VyY2VGaWxlLCBzcmM6IHRzLlNvdXJjZUZpbGUpIHtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuZW5zdXJlTWV0YWRhdGEoc3JjKTtcbiAgICBtZXRhZGF0YS5maWxlRGVwZW5kZW5jaWVzLmFkZChkZXApO1xuICB9XG5cbiAgdHJhY2tGaWxlRGVwZW5kZW5jaWVzKGRlcHM6IHRzLlNvdXJjZUZpbGVbXSwgc3JjOiB0cy5Tb3VyY2VGaWxlKSB7XG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmVuc3VyZU1ldGFkYXRhKHNyYyk7XG4gICAgZm9yIChjb25zdCBkZXAgb2YgZGVwcykge1xuICAgICAgbWV0YWRhdGEuZmlsZURlcGVuZGVuY2llcy5hZGQoZGVwKTtcbiAgICB9XG4gIH1cblxuICBnZXRGaWxlRGVwZW5kZW5jaWVzKGZpbGU6IHRzLlNvdXJjZUZpbGUpOiB0cy5Tb3VyY2VGaWxlW10ge1xuICAgIGlmICghdGhpcy5tZXRhZGF0YS5oYXMoZmlsZSkpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgbWV0YSA9IHRoaXMubWV0YWRhdGEuZ2V0KGZpbGUpICE7XG4gICAgcmV0dXJuIEFycmF5LmZyb20obWV0YS5maWxlRGVwZW5kZW5jaWVzKTtcbiAgfVxuXG4gIHJlY29yZFJlc291cmNlRGVwZW5kZW5jeShmaWxlOiB0cy5Tb3VyY2VGaWxlLCByZXNvdXJjZVBhdGg6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5lbnN1cmVNZXRhZGF0YShmaWxlKTtcbiAgICBtZXRhZGF0YS5yZXNvdXJjZVBhdGhzLmFkZChyZXNvdXJjZVBhdGgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbnN1cmVNZXRhZGF0YShzZjogdHMuU291cmNlRmlsZSk6IEZpbGVNZXRhZGF0YSB7XG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLm1ldGFkYXRhLmdldChzZikgfHwgbmV3IEZpbGVNZXRhZGF0YSgpO1xuICAgIHRoaXMubWV0YWRhdGEuc2V0KHNmLCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNDaGFuZ2VkUmVzb3VyY2VEZXBlbmRlbmNpZXMoc2Y6IHRzLlNvdXJjZUZpbGUpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMubWV0YWRhdGEuaGFzKHNmKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCByZXNvdXJjZURlcHMgPSB0aGlzLm1ldGFkYXRhLmdldChzZikgIS5yZXNvdXJjZVBhdGhzO1xuICAgIHJldHVybiBBcnJheS5mcm9tKHJlc291cmNlRGVwcy5rZXlzKCkpXG4gICAgICAgIC5zb21lKFxuICAgICAgICAgICAgcmVzb3VyY2VQYXRoID0+IHRoaXMuc3RhdGUua2luZCA9PT0gQnVpbGRTdGF0ZUtpbmQuUGVuZGluZyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuY2hhbmdlZFJlc291cmNlUGF0aHMuaGFzKHJlc291cmNlUGF0aCkpO1xuICB9XG59XG5cbi8qKlxuICogSW5mb3JtYXRpb24gYWJvdXQgdGhlIHdoZXRoZXIgYSBzb3VyY2UgZmlsZSBjYW4gaGF2ZSBhbmFseXNpcyBvciBlbWlzc2lvbiBjYW4gYmUgc2tpcHBlZC5cbiAqL1xuY2xhc3MgRmlsZU1ldGFkYXRhIHtcbiAgLyoqIEEgc2V0IG9mIHNvdXJjZSBmaWxlcyB0aGF0IHRoaXMgZmlsZSBkZXBlbmRzIHVwb24uICovXG4gIGZpbGVEZXBlbmRlbmNpZXMgPSBuZXcgU2V0PHRzLlNvdXJjZUZpbGU+KCk7XG4gIHJlc291cmNlUGF0aHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbn1cblxuXG50eXBlIEJ1aWxkU3RhdGUgPSBQZW5kaW5nQnVpbGRTdGF0ZSB8IEFuYWx5emVkQnVpbGRTdGF0ZTtcblxuZW51bSBCdWlsZFN0YXRlS2luZCB7XG4gIFBlbmRpbmcsXG4gIEFuYWx5emVkLFxufVxuXG5pbnRlcmZhY2UgQmFzZUJ1aWxkU3RhdGUge1xuICBraW5kOiBCdWlsZFN0YXRlS2luZDtcblxuICAvKipcbiAgICogVGhlIGhlYXJ0IG9mIGluY3JlbWVudGFsIGJ1aWxkcy4gVGhpcyBgU2V0YCB0cmFja3MgdGhlIHNldCBvZiBmaWxlcyB3aGljaCBuZWVkIHRvIGJlIGVtaXR0ZWRcbiAgICogZHVyaW5nIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uLlxuICAgKlxuICAgKiBUaGlzIHN0YXJ0cyBvdXQgYXMgdGhlIHNldCBvZiBmaWxlcyB3aGljaCBhcmUgc3RpbGwgcGVuZGluZyBmcm9tIHRoZSBwcmV2aW91cyBwcm9ncmFtIChvciB0aGVcbiAgICogZnVsbCBzZXQgb2YgLnRzIGZpbGVzIG9uIGEgZnJlc2ggYnVpbGQpLlxuICAgKlxuICAgKiBBZnRlciBhbmFseXNpcywgaXQncyB1cGRhdGVkIHRvIGluY2x1ZGUgYW55IGZpbGVzIHdoaWNoIG1pZ2h0IGhhdmUgY2hhbmdlZCBhbmQgbmVlZCBhIHJlLWVtaXRcbiAgICogYXMgYSByZXN1bHQgb2YgaW5jcmVtZW50YWwgY2hhbmdlcy5cbiAgICpcbiAgICogSWYgYW4gZW1pdCBoYXBwZW5zLCBhbnkgd3JpdHRlbiBmaWxlcyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBgU2V0YCwgYXMgdGhleSdyZSBubyBsb25nZXIgcGVuZGluZy5cbiAgICpcbiAgICogVGh1cywgYWZ0ZXIgY29tcGlsYXRpb24gYHBlbmRpbmdFbWl0YCBzaG91bGQgYmUgZW1wdHkgKG9uIGEgc3VjY2Vzc2Z1bCBidWlsZCkgb3IgY29udGFpbiB0aGVcbiAgICogZmlsZXMgd2hpY2ggc3RpbGwgbmVlZCB0byBiZSBlbWl0dGVkIGJ1dCBoYXZlIG5vdCB5ZXQgYmVlbiAoZHVlIHRvIGVycm9ycykuXG4gICAqXG4gICAqIGBwZW5kaW5nRW1pdGAgaXMgdHJhY2tlZCBhcyBhcyBgU2V0PHN0cmluZz5gIGluc3RlYWQgb2YgYSBgU2V0PHRzLlNvdXJjZUZpbGU+YCwgYmVjYXVzZSB0aGVcbiAgICogY29udGVudHMgb2YgdGhlIGZpbGUgYXJlIG5vdCBpbXBvcnRhbnQgaGVyZSwgb25seSB3aGV0aGVyIG9yIG5vdCB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIGl0XG4gICAqIG5lZWRzIHRvIGJlIGVtaXR0ZWQuIFRoZSBgc3RyaW5nYHMgaGVyZSBhcmUgVFMgZmlsZSBwYXRocy5cbiAgICpcbiAgICogU2VlIHRoZSBSRUFETUUubWQgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcyBhbGdvcml0aG0uXG4gICAqL1xuICBwZW5kaW5nRW1pdDogU2V0PHN0cmluZz47XG59XG5cbi8qKlxuICogU3RhdGUgb2YgYSBidWlsZCBiZWZvcmUgdGhlIEFuZ3VsYXIgYW5hbHlzaXMgcGhhc2UgY29tcGxldGVzLlxuICovXG5pbnRlcmZhY2UgUGVuZGluZ0J1aWxkU3RhdGUgZXh0ZW5kcyBCYXNlQnVpbGRTdGF0ZSB7XG4gIGtpbmQ6IEJ1aWxkU3RhdGVLaW5kLlBlbmRpbmc7XG5cbiAgLyoqXG4gICAqIFNldCBvZiBmaWxlcyB3aGljaCBhcmUga25vd24gdG8gbmVlZCBhbiBlbWl0LlxuICAgKlxuICAgKiBCZWZvcmUgdGhlIGNvbXBpbGVyJ3MgYW5hbHlzaXMgcGhhc2UgY29tcGxldGVzLCBgcGVuZGluZ0VtaXRgIG9ubHkgY29udGFpbnMgZmlsZXMgdGhhdCB3ZXJlXG4gICAqIHN0aWxsIHBlbmRpbmcgYWZ0ZXIgdGhlIHByZXZpb3VzIGJ1aWxkLlxuICAgKi9cbiAgcGVuZGluZ0VtaXQ6IFNldDxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBTZXQgb2YgVHlwZVNjcmlwdCBmaWxlIHBhdGhzIHdoaWNoIGhhdmUgY2hhbmdlZCBzaW5jZSB0aGUgbGFzdCBzdWNjZXNzZnVsbHkgYW5hbHl6ZWQgYnVpbGQuXG4gICAqL1xuICBjaGFuZ2VkVHNQYXRoczogU2V0PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIFNldCBvZiByZXNvdXJjZSBmaWxlIHBhdGhzIHdoaWNoIGhhdmUgY2hhbmdlZCBzaW5jZSB0aGUgbGFzdCBzdWNjZXNzZnVsbHkgYW5hbHl6ZWQgYnVpbGQuXG4gICAqL1xuICBjaGFuZ2VkUmVzb3VyY2VQYXRoczogU2V0PHN0cmluZz47XG59XG5cbmludGVyZmFjZSBBbmFseXplZEJ1aWxkU3RhdGUgZXh0ZW5kcyBCYXNlQnVpbGRTdGF0ZSB7XG4gIGtpbmQ6IEJ1aWxkU3RhdGVLaW5kLkFuYWx5emVkO1xuXG4gIC8qKlxuICAgKiBTZXQgb2YgZmlsZXMgd2hpY2ggYXJlIGtub3duIHRvIG5lZWQgYW4gZW1pdC5cbiAgICpcbiAgICogQWZ0ZXIgYW5hbHlzaXMgY29tcGxldGVzICh0aGF0IGlzLCB0aGUgc3RhdGUgdHJhbnNpdGlvbnMgdG8gYEFuYWx5emVkQnVpbGRTdGF0ZWApLCB0aGVcbiAgICogYHBlbmRpbmdFbWl0YCBzZXQgdGFrZXMgaW50byBhY2NvdW50IGFueSBvbi1kaXNrIGNoYW5nZXMgbWFkZSBzaW5jZSB0aGUgbGFzdCBzdWNjZXNzZnVsbHlcbiAgICogYW5hbHl6ZWQgYnVpbGQuXG4gICAqL1xuICBwZW5kaW5nRW1pdDogU2V0PHN0cmluZz47XG59XG5cbmZ1bmN0aW9uIHRzT25seUZpbGVzKHByb2dyYW06IHRzLlByb2dyYW0pOiBSZWFkb25seUFycmF5PHRzLlNvdXJjZUZpbGU+IHtcbiAgcmV0dXJuIHByb2dyYW0uZ2V0U291cmNlRmlsZXMoKS5maWx0ZXIoc2YgPT4gIXNmLmlzRGVjbGFyYXRpb25GaWxlKTtcbn1cbiJdfQ==
|
|
257
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL2luY3JlbWVudGFsL3NyYy9zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7SUFJSCwyRUFBK0Q7SUFJL0QsMkdBQTBEO0lBRTFEOztPQUVHO0lBQ0g7UUFRRSwyQkFDSSxLQUF3QixFQUFVLFVBQThCLEVBQ3ZELFFBQTZCLEVBQVUsY0FBZ0M7WUFEOUMsZUFBVSxHQUFWLFVBQVUsQ0FBb0I7WUFDdkQsYUFBUSxHQUFSLFFBQVEsQ0FBcUI7WUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBa0I7WUFDbEYsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDckIsQ0FBQztRQUVEOzs7Ozs7V0FNRztRQUNJLDJCQUFTLEdBQWhCLFVBQ0ksVUFBc0IsRUFBRSxTQUE0QixFQUFFLFVBQXNCLEVBQzVFLHFCQUF1Qzs7WUFDekMsdUVBQXVFO1lBQ3ZFLElBQUksS0FBd0IsQ0FBQztZQUM3QixJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxPQUFPLEVBQUU7Z0JBQ25ELDhGQUE4RjtnQkFDOUYsY0FBYztnQkFDZCxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQzthQUN6QjtpQkFBTTtnQkFDTCx3RkFBd0Y7Z0JBQ3hGLDJCQUEyQjtnQkFDM0IsS0FBSyxHQUFHO29CQUNOLElBQUksRUFBRSxjQUFjLENBQUMsT0FBTztvQkFDNUIsV0FBVyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVztvQkFDeEMsb0JBQW9CLEVBQUUsSUFBSSxHQUFHLEVBQWtCO29CQUMvQyxjQUFjLEVBQUUsSUFBSSxHQUFHLEVBQVU7b0JBQ2pDLFFBQVEsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVE7aUJBQ25DLENB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QUssSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssSUFBSSxFQUFFO2dCQUNoRSw0REFBNEQ7Z0JBQzVELE9BQU8sSUFBSSxDQUFDO2FBQ2I7aUJBQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQy9DLDRGQUE0RjtnQkFDNUYsT0FBTyxJQUFJLENBQUM7YUFDYjtpQkFBTTtnQkFDTCwyREFBMkQ7Z0JBQzNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUN6RDtRQUNILENBQUM7UUFDSCx3QkFBQztJQUFELENBQUMsQUFqTUQsSUFpTUM7SUFqTVksOENBQWlCO0lBcU05QixJQUFLLGNBR0o7SUFIRCxXQUFLLGNBQWM7UUFDakIseURBQU8sQ0FBQTtRQUNQLDJEQUFRLENBQUE7SUFDVixDQUFDLEVBSEksY0FBYyxLQUFkLGNBQWMsUUFHbEI7SUF1RkQsU0FBUyxXQUFXLENBQUMsT0FBbUI7UUFDdEMsT0FBTyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQUEsRUFBRSxJQUFJLE9BQUEsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQXJCLENBQXFCLENBQUMsQ0FBQztJQUN0RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtBYnNvbHV0ZUZzUGF0aCwgYWJzb2x1dGVGcm9tfSBmcm9tICcuLi8uLi9maWxlX3N5c3RlbSc7XG5pbXBvcnQge0NsYXNzUmVjb3JkLCBUcmFpdENvbXBpbGVyfSBmcm9tICcuLi8uLi90cmFuc2Zvcm0nO1xuaW1wb3J0IHtJbmNyZW1lbnRhbEJ1aWxkfSBmcm9tICcuLi9hcGknO1xuXG5pbXBvcnQge0ZpbGVEZXBlbmRlbmN5R3JhcGh9IGZyb20gJy4vZGVwZW5kZW5jeV90cmFja2luZyc7XG5cbi8qKlxuICogRHJpdmVzIGFuIGluY3JlbWVudGFsIGJ1aWxkLCBieSB0cmFja2luZyBjaGFuZ2VzIGFuZCBkZXRlcm1pbmluZyB3aGljaCBmaWxlcyBuZWVkIHRvIGJlIGVtaXR0ZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBJbmNyZW1lbnRhbERyaXZlciBpbXBsZW1lbnRzIEluY3JlbWVudGFsQnVpbGQ8Q2xhc3NSZWNvcmQ+IHtcbiAgLyoqXG4gICAqIFN0YXRlIG9mIHRoZSBjdXJyZW50IGJ1aWxkLlxuICAgKlxuICAgKiBUaGlzIHRyYW5zaXRpb25zIGFzIHRoZSBjb21waWxhdGlvbiBwcm9ncmVzc2VzLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0ZTogQnVpbGRTdGF0ZTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgICAgc3RhdGU6IFBlbmRpbmdCdWlsZFN0YXRlLCBwcml2YXRlIGFsbFRzRmlsZXM6IFNldDx0cy5Tb3VyY2VGaWxlPixcbiAgICAgIHJlYWRvbmx5IGRlcEdyYXBoOiBGaWxlRGVwZW5kZW5jeUdyYXBoLCBwcml2YXRlIGxvZ2ljYWxDaGFuZ2VzOiBTZXQ8c3RyaW5nPnxudWxsKSB7XG4gICAgdGhpcy5zdGF0ZSA9IHN0YXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdCBhbiBgSW5jcmVtZW50YWxEcml2ZXJgIHdpdGggYSBzdGFydGluZyBzdGF0ZSB0aGF0IGluY29ycG9yYXRlcyB0aGUgcmVzdWx0cyBvZiBhXG4gICAqIHByZXZpb3VzIGJ1aWxkLlxuICAgKlxuICAgKiBUaGUgcHJldmlvdXMgYnVpbGQncyBgQnVpbGRTdGF0ZWAgaXMgcmVjb25jaWxlZCB3aXRoIHRoZSBuZXcgcHJvZ3JhbSdzIGNoYW5nZXMsIGFuZCB0aGUgcmVzdWx0c1xuICAgKiBhcmUgbWVyZ2VkIGludG8gdGhlIG5ldyBidWlsZCdzIGBQZW5kaW5nQnVpbGRTdGF0ZWAuXG4gICAqL1xuICBzdGF0aWMgcmVjb25jaWxlKFxuICAgICAgb2xkUHJvZ3JhbTogdHMuUHJvZ3JhbSwgb2xkRHJpdmVyOiBJbmNyZW1lbnRhbERyaXZlciwgbmV3UHJvZ3JhbTogdHMuUHJvZ3JhbSxcbiAgICAgIG1vZGlmaWVkUmVzb3VyY2VGaWxlczogU2V0PHN0cmluZz58bnVsbCk6IEluY3JlbWVudGFsRHJpdmVyIHtcbiAgICAvLyBJbml0aWFsaXplIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCBidWlsZCBiYXNlZCBvbiB0aGUgcHJldmlvdXMgb25lLlxuICAgIGxldCBzdGF0ZTogUGVuZGluZ0J1aWxkU3RhdGU7XG4gICAgaWYgKG9sZERyaXZlci5zdGF0ZS5raW5kID09PSBCdWlsZFN0YXRlS2luZC5QZW5kaW5nKSB7XG4gICAgICAvLyBUaGUgcHJldmlvdXMgYnVpbGQgbmV2ZXIgbWFkZSBpdCBwYXN0IHRoZSBwZW5kaW5nIHN0YXRlLiBSZXVzZSBpdCBhcyB0aGUgc3RhcnRpbmcgc3RhdGUgZm9yXG4gICAgICAvLyB0aGlzIGJ1aWxkLlxuICAgICAgc3RhdGUgPSBvbGREcml2ZXIuc3RhdGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoZSBwcmV2aW91cyBidWlsZCB3YXMgc3VjY2Vzc2Z1bGx5IGFuYWx5emVkLiBgcGVuZGluZ0VtaXRgIGlzIHRoZSBvbmx5IHN0YXRlIGNhcnJpZWRcbiAgICAgIC8vIGZvcndhcmQgaW50byB0aGlzIGJ1aWxkLlxuICAgICAgc3RhdGUgPSB7XG4gICAgICAgIGtpbmQ6IEJ1aWxkU3RhdGVLaW5kLlBlbmRpbmcsXG4gICAgICAgIHBlbmRpbmdFbWl0OiBvbGREcml2ZXIuc3RhdGUucGVuZGluZ0VtaXQsXG4gICAgICAgIGNoYW5nZWRSZXNvdXJjZVBhdGhzOiBuZXcgU2V0PEFic29sdXRlRnNQYXRoPigpLFxuICAgICAgICBjaGFuZ2VkVHNQYXRoczogbmV3IFNldDxzdHJpbmc+KCksXG4gICAgICAgIGxhc3RHb29kOiBvbGREcml2ZXIuc3RhdGUubGFzdEdvb2QsXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIE1lcmdlIHRoZSBmcmVzaGx5IG1vZGlmaWVkIHJlc291cmNlIGZpbGVzIHdpdGggYW55IHByaW9yIG9uZXMuXG4gICAgaWYgKG1vZGlmaWVkUmVzb3VyY2VGaWxlcyAhPT0gbnVsbCkge1xuICAgICAgZm9yIChjb25zdCByZXNGaWxlIG9mIG1vZGlmaWVkUmVzb3VyY2VGaWxlcykge1xuICAgICAgICBzdGF0ZS5jaGFuZ2VkUmVzb3VyY2VQYXRocy5hZGQoYWJzb2x1dGVGcm9tKHJlc0ZpbGUpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBOZXh0LCBwcm9jZXNzIHRoZSBmaWxlcyBpbiB0aGUgbmV3IHByb2dyYW0sIHdpdGggYSBjb3VwbGUgb2YgZ29hbHM6XG4gICAgLy8gMSkgRGV0ZXJtaW5lIHdoaWNoIFRTIGZpbGVzIGhhdmUgY2hhbmdlZCwgaWYgYW55LCBhbmQgbWVyZ2UgdGhlbSBpbnRvIGBjaGFuZ2VkVHNGaWxlc2AuXG4gICAgLy8gMikgUHJvZHVjZSBhIGxpc3Qgb2YgVFMgZmlsZXMgd2hpY2ggbm8gbG9uZ2VyIGV4aXN0IGluIHRoZSBwcm9ncmFtICh0aGV5J3ZlIGJlZW4gZGVsZXRlZFxuICAgIC8vICAgIHNpbmNlIHRoZSBwcmV2aW91cyBjb21waWxhdGlvbikuIFRoZXNlIG5lZWQgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzdGF0ZSB0cmFja2luZyB0byBhdm9pZFxuICAgIC8vICAgIGxlYWtpbmcgbWVtb3J5LlxuXG4gICAgLy8gQWxsIGZpbGVzIGluIHRoZSBvbGQgcHJvZ3JhbSwgZm9yIGVhc3kgZGV0ZWN0aW9uIG9mIGNoYW5nZXMuXG4gICAgY29uc3Qgb2xkRmlsZXMgPSBuZXcgU2V0PHRzLlNvdXJjZUZpbGU+KG9sZFByb2dyYW0uZ2V0U291cmNlRmlsZXMoKSk7XG5cbiAgICAvLyBBc3N1bWUgYWxsIHRoZSBvbGQgZmlsZXMgd2VyZSBkZWxldGVkIHRvIGJlZ2luIHdpdGguIE9ubHkgVFMgZmlsZXMgYXJlIHRyYWNrZWQuXG4gICAgY29uc3QgZGVsZXRlZFRzUGF0aHMgPSBuZXcgU2V0PHN0cmluZz4odHNPbmx5RmlsZXMob2xkUHJvZ3JhbSkubWFwKHNmID0+IHNmLmZpbGVOYW1lKSk7XG5cbiAgICBmb3IgKGNvbnN0IG5ld0ZpbGUgb2YgbmV3UHJvZ3JhbS5nZXRTb3VyY2VGaWxlcygpKSB7XG4gICAgICBpZiAoIW5ld0ZpbGUuaXNEZWNsYXJhdGlvbkZpbGUpIHtcbiAgICAgICAgLy8gVGhpcyBmaWxlIGV4aXN0cyBpbiB0aGUgbmV3IHByb2dyYW0sIHNvIHJlbW92ZSBpdCBmcm9tIGBkZWxldGVkVHNQYXRoc2AuXG4gICAgICAgIGRlbGV0ZWRUc1BhdGhzLmRlbGV0ZShuZXdGaWxlLmZpbGVOYW1lKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9sZEZpbGVzLmhhcyhuZXdGaWxlKSkge1xuICAgICAgICAvLyBUaGlzIGZpbGUgaGFzbid0IGNoYW5nZWQ7IG5vIG5lZWQgdG8gbG9vayBhdCBpdCBmdXJ0aGVyLlxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy8gVGhlIGZpbGUgaGFzIGNoYW5nZWQgc2luY2UgdGhlIGxhc3Qgc3VjY2Vzc2Z1bCBidWlsZC4gVGhlIGFwcHJvcHJpYXRlIHJlYWN0aW9uIGRlcGVuZHMgb25cbiAgICAgIC8vIHdoYXQga2luZCBvZiBmaWxlIGl0IGlzLlxuICAgICAgaWYgKCFuZXdGaWxlLmlzRGVjbGFyYXRpb25GaWxlKSB7XG4gICAgICAgIC8vIEl0J3MgYSAudHMgZmlsZSwgc28gdHJhY2sgaXQgYXMgYSBjaGFuZ2UuXG4gICAgICAgIHN0YXRlLmNoYW5nZWRUc1BhdGhzLmFkZChuZXdGaWxlLmZpbGVOYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEl0J3MgYSAuZC50cyBmaWxlLiBDdXJyZW50bHkgdGhlIGNvbXBpbGVyIGRvZXMgbm90IGRvIGEgZ3JlYXQgam9iIG9mIHRyYWNraW5nXG4gICAgICAgIC8vIGRlcGVuZGVuY2llcyBvbiAuZC50cyBmaWxlcywgc28gYmFpbCBvdXQgb2YgaW5jcmVtZW50YWwgYnVpbGRzIGhlcmUgYW5kIGRvIGEgZnVsbCBidWlsZC5cbiAgICAgICAgLy8gVGhpcyB1c3VhbGx5IG9ubHkgaGFwcGVucyBpZiBzb21ldGhpbmcgaW4gbm9kZV9tb2R1bGVzIGNoYW5nZXMuXG4gICAgICAgIHJldHVybiBJbmNyZW1lbnRhbERyaXZlci5mcmVzaChuZXdQcm9ncmFtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGUgbmV4dCBzdGVwIGlzIHRvIHJlbW92ZSBhbnkgZGVsZXRlZCBmaWxlcyBmcm9tIHRoZSBzdGF0ZS5cbiAgICBmb3IgKGNvbnN0IGZpbGVQYXRoIG9mIGRlbGV0ZWRUc1BhdGhzKSB7XG4gICAgICBzdGF0ZS5wZW5kaW5nRW1pdC5kZWxldGUoZmlsZVBhdGgpO1xuXG4gICAgICAvLyBFdmVuIGlmIHRoZSBmaWxlIGRvZXNuJ3QgZXhpc3QgaW4gdGhlIGN1cnJlbnQgY29tcGlsYXRpb24sIGl0IHN0aWxsIG1pZ2h0IGhhdmUgYmVlbiBjaGFuZ2VkXG4gICAgICAvLyBpbiBhIHByZXZpb3VzIG9uZSwgc28gZGVsZXRlIGl0IGZyb20gdGhlIHNldCBvZiBjaGFuZ2VkIFRTIGZpbGVzLCBqdXN0IGluIGNhc2UuXG4gICAgICBzdGF0ZS5jaGFuZ2VkVHNQYXRocy5kZWxldGUoZmlsZVBhdGgpO1xuICAgIH1cblxuICAgIC8vIE5vdywgY2hhbmdlZFRzUGF0aHMgY29udGFpbnMgcGh5c2ljYWxseSBjaGFuZ2VkIFRTIHBhdGhzLiBVc2UgdGhlIHByZXZpb3VzIHByb2dyYW0ncyBsb2dpY2FsXG4gICAgLy8gZGVwZW5kZW5jeSBncmFwaCB0byBkZXRlcm1pbmUgbG9naWNhbGx5IGNoYW5nZWQgZmlsZXMuXG4gICAgY29uc3QgZGVwR3JhcGggPSBuZXcgRmlsZURlcGVuZGVuY3lHcmFwaCgpO1xuXG4gICAgLy8gSWYgYSBwcmV2aW91cyBjb21waWxhdGlvbiBleGlzdHMsIHVzZSBpdHMgZGVwZW5kZW5jeSBncmFwaCB0byBkZXRlcm1pbmUgdGhlIHNldCBvZiBsb2dpY2FsbHlcbiAgICAvLyBjaGFuZ2VkIGZpbGVzLlxuICAgIGxldCBsb2dpY2FsQ2hhbmdlczogU2V0PHN0cmluZz58bnVsbCA9IG51bGw7XG4gICAgaWYgKHN0YXRlLmxhc3RHb29kICE9PSBudWxsKSB7XG4gICAgICAvLyBFeHRyYWN0IHRoZSBzZXQgb2YgbG9naWNhbGx5IGNoYW5nZWQgZmlsZXMuIEF0IHRoZSBzYW1lIHRpbWUsIHRoaXMgb3BlcmF0aW9uIHBvcHVsYXRlcyB0aGVcbiAgICAgIC8vIGN1cnJlbnQgKGZyZXNoKSBkZXBlbmRlbmN5IGdyYXBoIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhvc2UgZmlsZXMgd2hpY2ggaGF2ZSBub3RcbiAgICAgIC8vIGxvZ2ljYWxseSBjaGFuZ2VkLlxuICAgICAgbG9naWNhbENoYW5nZXMgPSBkZXBHcmFwaC51cGRhdGVXaXRoUGh5c2ljYWxDaGFuZ2VzKFxuICAgICAgICAgIHN0YXRlLmxhc3RHb29kLmRlcEdyYXBoLCBzdGF0ZS5jaGFuZ2VkVHNQYXRocywgZGVsZXRlZFRzUGF0aHMsXG4gICAgICAgICAgc3RhdGUuY2hhbmdlZFJlc291cmNlUGF0aHMpO1xuICAgICAgZm9yIChjb25zdCBmaWxlTmFtZSBvZiBzdGF0ZS5jaGFuZ2VkVHNQYXRocykge1xuICAgICAgICBsb2dpY2FsQ2hhbmdlcy5hZGQoZmlsZU5hbWUpO1xuICAgICAgfVxuXG4gICAgICAvLyBBbnkgbG9naWNhbGx5IGNoYW5nZWQgZmlsZXMgbmVlZCB0byBiZSByZS1lbWl0dGVkLiBNb3N0IG9mIHRoZSB0aW1lIHRoaXMgd291bGQgaGFwcGVuXG4gICAgICAvLyByZWdhcmRsZXNzIGJlY2F1c2UgdGhlIG5ldyBkZXBlbmRlbmN5IGdyYXBoIHdvdWxkIF9hbHNvXyBpZGVudGlmeSB0aGUgZmlsZSBhcyBzdGFsZS5cbiAgICAgIC8vIEhvd2V2ZXIgdGhlcmUgYXJlIGVkZ2UgY2FzZXMgc3VjaCBhcyByZW1vdmluZyBhIGNvbXBvbmVudCBmcm9tIGFuIE5nTW9kdWxlIHdpdGhvdXQgYWRkaW5nXG4gICAgICAvLyBpdCB0byBhbm90aGVyIG9uZSwgd2hlcmUgdGhlIHByZXZpb3VzIGdyYXBoIGlkZW50aWZpZXMgdGhlIGZpbGUgYXMgbG9naWNhbGx5IGNoYW5nZWQsIGJ1dFxuICAgICAgLy8gdGhlIG5ldyBncmFwaCAod2hpY2ggZG9lcyBub3QgaGF2ZSB0aGF0IGVkZ2UpIGZhaWxzIHRvIGlkZW50aWZ5IHRoYXQgdGhlIGZpbGUgc2hvdWxkIGJlXG4gICAgICAvLyByZS1lbWl0dGVkLlxuICAgICAgZm9yIChjb25zdCBjaGFuZ2Ugb2YgbG9naWNhbENoYW5nZXMpIHtcbiAgICAgICAgc3RhdGUucGVuZGluZ0VtaXQuYWRkKGNoYW5nZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gYHN0YXRlYCBub3cgcmVmbGVjdHMgdGhlIGluaXRpYWwgcGVuZGluZyBzdGF0ZSBvZiB0aGUgY3VycmVudCBjb21waWxhdGlvbi5cblxuICAgIHJldHVybiBuZXcgSW5jcmVtZW50YWxEcml2ZXIoXG4gICAgICAgIHN0YXRlLCBuZXcgU2V0PHRzLlNvdXJjZUZpbGU+KHRzT25seUZpbGVzKG5ld1Byb2dyYW0pKSwgZGVwR3JhcGgsIGxvZ2ljYWxDaGFuZ2VzKTtcbiAgfVxuXG4gIHN0YXRpYyBmcmVzaChwcm9ncmFtOiB0cy5Qcm9ncmFtKTogSW5jcmVtZW50YWxEcml2ZXIge1xuICAgIC8vIEluaXRpYWxpemUgdGhlIHNldCBvZiBmaWxlcyB3aGljaCBuZWVkIHRvIGJlIGVtaXR0ZWQgdG8gdGhlIHNldCBvZiBhbGwgVFMgZmlsZXMgaW4gdGhlXG4gICAgLy8gcHJvZ3JhbS5cbiAgICBjb25zdCB0c0ZpbGVzID0gdHNPbmx5RmlsZXMocHJvZ3JhbSk7XG5cbiAgICBjb25zdCBzdGF0ZTogUGVuZGluZ0J1aWxkU3RhdGUgPSB7XG4gICAgICBraW5kOiBCdWlsZFN0YXRlS2luZC5QZW5kaW5nLFxuICAgICAgcGVuZGluZ0VtaXQ6IG5ldyBTZXQ8c3RyaW5nPih0c0ZpbGVzLm1hcChzZiA9PiBzZi5maWxlTmFtZSkpLFxuICAgICAgY2hhbmdlZFJlc291cmNlUGF0aHM6IG5ldyBTZXQ8QWJzb2x1dGVGc1BhdGg+KCksXG4gICAgICBjaGFuZ2VkVHNQYXRoczogbmV3IFNldDxzdHJpbmc+KCksXG4gICAgICBsYXN0R29vZDogbnVsbCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBJbmNyZW1lbnRhbERyaXZlcihcbiAgICAgICAgc3RhdGUsIG5ldyBTZXQodHNGaWxlcyksIG5ldyBGaWxlRGVwZW5kZW5jeUdyYXBoKCksIC8qIGxvZ2ljYWxDaGFuZ2VzICovIG51bGwpO1xuICB9XG5cbiAgcmVjb3JkU3VjY2Vzc2Z1bEFuYWx5c2lzKHRyYWl0Q29tcGlsZXI6IFRyYWl0Q29tcGlsZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5raW5kICE9PSBCdWlsZFN0YXRlS2luZC5QZW5kaW5nKSB7XG4gICAgICAvLyBDaGFuZ2VzIGhhdmUgYWxyZWFkeSBiZWVuIGluY29ycG9yYXRlZC5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwZW5kaW5nRW1pdCA9IHRoaXMuc3RhdGUucGVuZGluZ0VtaXQ7XG5cbiAgICBjb25zdCBzdGF0ZTogUGVuZGluZ0J1aWxkU3RhdGUgPSB0aGlzLnN0YXRlO1xuXG4gICAgZm9yIChjb25zdCBzZiBvZiB0aGlzLmFsbFRzRmlsZXMpIHtcbiAgICAgIGlmICh0aGlzLmRlcEdyYXBoLmlzU3RhbGUoc2YsIHN0YXRlLmNoYW5nZWRUc1BhdGhzLCBzdGF0ZS5jaGFuZ2VkUmVzb3VyY2VQYXRocykpIHtcbiAgICAgICAgLy8gU29tZXRoaW5nIGhhcyBjaGFuZ2VkIHdoaWNoIHJlcXVpcmVzIHRoaXMgZmlsZSBiZSByZS1lbWl0dGVkLlxuICAgICAgICBwZW5kaW5nRW1pdC5hZGQoc2YuZmlsZU5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgc3RhdGUgdG8gYW4gYEFuYWx5emVkQnVpbGRTdGF0ZWAuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGtpbmQ6IEJ1aWxkU3RhdGVLaW5kLkFuYWx5emVkLFxuICAgICAgcGVuZGluZ0VtaXQsXG5cbiAgICAgIC8vIFNpbmNlIHRoaXMgY29tcGlsYXRpb24gd2FzIHN1Y2Nlc3NmdWxseSBhbmFseXplZCwgdXBkYXRlIHRoZSBcImxhc3QgZ29vZFwiIGFydGlmYWN0cyB0byB0aGVcbiAgICAgIC8vIG9uZXMgZnJvbSB0aGUgY3VycmVudCBjb21waWxhdGlvbi5cbiAgICAgIGxhc3RHb29kOiB7XG4gICAgICAgIGRlcEdyYXBoOiB0aGlzLmRlcEdyYXBoLFxuICAgICAgICB0cmFpdENvbXBpbGVyOiB0cmFpdENvbXBpbGVyLFxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICByZWNvcmRTdWNjZXNzZnVsRW1pdChzZjogdHMuU291cmNlRmlsZSk6IHZvaWQgeyB0aGlzLnN0YXRlLnBlbmRpbmdFbWl0LmRlbGV0ZShzZi5maWxlTmFtZSk7IH1cblxuICBzYWZlVG9Ta2lwRW1pdChzZjogdHMuU291cmNlRmlsZSk6IGJvb2xlYW4geyByZXR1cm4gIXRoaXMuc3RhdGUucGVuZGluZ0VtaXQuaGFzKHNmLmZpbGVOYW1lKTsgfVxuXG4gIHByaW9yV29ya0ZvcihzZjogdHMuU291cmNlRmlsZSk6IENsYXNzUmVjb3JkW118bnVsbCB7XG4gICAgaWYgKHRoaXMuc3RhdGUubGFzdEdvb2QgPT09IG51bGwgfHwgdGhpcy5sb2dpY2FsQ2hhbmdlcyA9PT0gbnVsbCkge1xuICAgICAgLy8gVGhlcmUgaXMgbm8gcHJldmlvdXMgZ29vZCBidWlsZCwgc28gbm8gcHJpb3Igd29yayBleGlzdHMuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2UgaWYgKHRoaXMubG9naWNhbENoYW5nZXMuaGFzKHNmLmZpbGVOYW1lKSkge1xuICAgICAgLy8gUHJpb3Igd29yayBtaWdodCBleGlzdCwgYnV0IHdvdWxkIGJlIHN0YWxlIGFzIHRoZSBmaWxlIGluIHF1ZXN0aW9uIGhhcyBsb2dpY2FsbHkgY2hhbmdlZC5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBQcmlvciB3b3JrIG1pZ2h0IGV4aXN0LCBhbmQgaWYgaXQgZG9lcyB0aGVuIGl0J3MgdXNhYmxlIVxuICAgICAgcmV0dXJuIHRoaXMuc3RhdGUubGFzdEdvb2QudHJhaXRDb21waWxlci5yZWNvcmRzRm9yKHNmKTtcbiAgICB9XG4gIH1cbn1cblxudHlwZSBCdWlsZFN0YXRlID0gUGVuZGluZ0J1aWxkU3RhdGUgfCBBbmFseXplZEJ1aWxkU3RhdGU7XG5cbmVudW0gQnVpbGRTdGF0ZUtpbmQge1xuICBQZW5kaW5nLFxuICBBbmFseXplZCxcbn1cblxuaW50ZXJmYWNlIEJhc2VCdWlsZFN0YXRlIHtcbiAga2luZDogQnVpbGRTdGF0ZUtpbmQ7XG5cbiAgLyoqXG4gICAqIFRoZSBoZWFydCBvZiBpbmNyZW1lbnRhbCBidWlsZHMuIFRoaXMgYFNldGAgdHJhY2tzIHRoZSBzZXQgb2YgZmlsZXMgd2hpY2ggbmVlZCB0byBiZSBlbWl0dGVkXG4gICAqIGR1cmluZyB0aGUgY3VycmVudCBjb21waWxhdGlvbi5cbiAgICpcbiAgICogVGhpcyBzdGFydHMgb3V0IGFzIHRoZSBzZXQgb2YgZmlsZXMgd2hpY2ggYXJlIHN0aWxsIHBlbmRpbmcgZnJvbSB0aGUgcHJldmlvdXMgcHJvZ3JhbSAob3IgdGhlXG4gICAqIGZ1bGwgc2V0IG9mIC50cyBmaWxlcyBvbiBhIGZyZXNoIGJ1aWxkKS5cbiAgICpcbiAgICogQWZ0ZXIgYW5hbHlzaXMsIGl0J3MgdXBkYXRlZCB0byBpbmNsdWRlIGFueSBmaWxlcyB3aGljaCBtaWdodCBoYXZlIGNoYW5nZWQgYW5kIG5lZWQgYSByZS1lbWl0XG4gICAqIGFzIGEgcmVzdWx0IG9mIGluY3JlbWVudGFsIGNoYW5nZXMuXG4gICAqXG4gICAqIElmIGFuIGVtaXQgaGFwcGVucywgYW55IHdyaXR0ZW4gZmlsZXMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgYFNldGAsIGFzIHRoZXkncmUgbm8gbG9uZ2VyIHBlbmRpbmcuXG4gICAqXG4gICAqIFRodXMsIGFmdGVyIGNvbXBpbGF0aW9uIGBwZW5kaW5nRW1pdGAgc2hvdWxkIGJlIGVtcHR5IChvbiBhIHN1Y2Nlc3NmdWwgYnVpbGQpIG9yIGNvbnRhaW4gdGhlXG4gICAqIGZpbGVzIHdoaWNoIHN0aWxsIG5lZWQgdG8gYmUgZW1pdHRlZCBidXQgaGF2ZSBub3QgeWV0IGJlZW4gKGR1ZSB0byBlcnJvcnMpLlxuICAgKlxuICAgKiBgcGVuZGluZ0VtaXRgIGlzIHRyYWNrZWQgYXMgYXMgYFNldDxzdHJpbmc+YCBpbnN0ZWFkIG9mIGEgYFNldDx0cy5Tb3VyY2VGaWxlPmAsIGJlY2F1c2UgdGhlXG4gICAqIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGFyZSBub3QgaW1wb3J0YW50IGhlcmUsIG9ubHkgd2hldGhlciBvciBub3QgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBpdFxuICAgKiBuZWVkcyB0byBiZSBlbWl0dGVkLiBUaGUgYHN0cmluZ2BzIGhlcmUgYXJlIFRTIGZpbGUgcGF0aHMuXG4gICAqXG4gICAqIFNlZSB0aGUgUkVBRE1FLm1kIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgYWxnb3JpdGhtLlxuICAgKi9cbiAgcGVuZGluZ0VtaXQ6IFNldDxzdHJpbmc+O1xuXG5cbiAgLyoqXG4gICAqIFNwZWNpZmljIGFzcGVjdHMgb2YgdGhlIGxhc3QgY29tcGlsYXRpb24gd2hpY2ggc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZCBhbmFseXNpcywgaWYgYW55LlxuICAgKi9cbiAgbGFzdEdvb2Q6IHtcbiAgICAvKipcbiAgICAgKiBUaGUgZGVwZW5kZW5jeSBncmFwaCBmcm9tIHRoZSBsYXN0IHN1Y2Nlc3NmdWxseSBhbmFseXplZCBidWlsZC5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGxvZ2ljYWwgaW1wYWN0IG9mIHBoeXNpY2FsIGZpbGUgY2hhbmdlcy5cbiAgICAgKi9cbiAgICBkZXBHcmFwaDogRmlsZURlcGVuZGVuY3lHcmFwaDtcblxuICAgIC8qKlxuICAgICAqIFRoZSBgVHJhaXRDb21waWxlcmAgZnJvbSB0aGUgbGFzdCBzdWNjZXNzZnVsbHkgYW5hbHl6ZWQgYnVpbGQuXG4gICAgICpcbiAgICAgKiBUaGlzIGlzIHVzZWQgdG8gZXh0cmFjdCBcInByaW9yIHdvcmtcIiB3aGljaCBtaWdodCBiZSByZXVzYWJsZSBpbiB0aGlzIGNvbXBpbGF0aW9uLlxuICAgICAqL1xuICAgIHRyYWl0Q29tcGlsZXI6IFRyYWl0Q29tcGlsZXI7XG4gIH18bnVsbDtcbn1cblxuLyoqXG4gKiBTdGF0ZSBvZiBhIGJ1aWxkIGJlZm9yZSB0aGUgQW5ndWxhciBhbmFseXNpcyBwaGFzZSBjb21wbGV0ZXMuXG4gKi9cbmludGVyZmFjZSBQZW5kaW5nQnVpbGRTdGF0ZSBleHRlbmRzIEJhc2VCdWlsZFN0YXRlIHtcbiAga2luZDogQnVpbGRTdGF0ZUtpbmQuUGVuZGluZztcblxuICAvKipcbiAgICogU2V0IG9mIGZpbGVzIHdoaWNoIGFyZSBrbm93biB0byBuZWVkIGFuIGVtaXQuXG4gICAqXG4gICAqIEJlZm9yZSB0aGUgY29tcGlsZXIncyBhbmFseXNpcyBwaGFzZSBjb21wbGV0ZXMsIGBwZW5kaW5nRW1pdGAgb25seSBjb250YWlucyBmaWxlcyB0aGF0IHdlcmVcbiAgICogc3RpbGwgcGVuZGluZyBhZnRlciB0aGUgcHJldmlvdXMgYnVpbGQuXG4gICAqL1xuICBwZW5kaW5nRW1pdDogU2V0PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIFNldCBvZiBUeXBlU2NyaXB0IGZpbGUgcGF0aHMgd2hpY2ggaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0IHN1Y2Nlc3NmdWxseSBhbmFseXplZCBidWlsZC5cbiAgICovXG4gIGNoYW5nZWRUc1BhdGhzOiBTZXQ8c3RyaW5nPjtcblxuICAvKipcbiAgICogU2V0IG9mIHJlc291cmNlIGZpbGUgcGF0aHMgd2hpY2ggaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0IHN1Y2Nlc3NmdWxseSBhbmFseXplZCBidWlsZC5cbiAgICovXG4gIGNoYW5nZWRSZXNvdXJjZVBhdGhzOiBTZXQ8QWJzb2x1dGVGc1BhdGg+O1xufVxuXG5pbnRlcmZhY2UgQW5hbHl6ZWRCdWlsZFN0YXRlIGV4dGVuZHMgQmFzZUJ1aWxkU3RhdGUge1xuICBraW5kOiBCdWlsZFN0YXRlS2luZC5BbmFseXplZDtcblxuICAvKipcbiAgICogU2V0IG9mIGZpbGVzIHdoaWNoIGFyZSBrbm93biB0byBuZWVkIGFuIGVtaXQuXG4gICAqXG4gICAqIEFmdGVyIGFuYWx5c2lzIGNvbXBsZXRlcyAodGhhdCBpcywgdGhlIHN0YXRlIHRyYW5zaXRpb25zIHRvIGBBbmFseXplZEJ1aWxkU3RhdGVgKSwgdGhlXG4gICAqIGBwZW5kaW5nRW1pdGAgc2V0IHRha2VzIGludG8gYWNjb3VudCBhbnkgb24tZGlzayBjaGFuZ2VzIG1hZGUgc2luY2UgdGhlIGxhc3Qgc3VjY2Vzc2Z1bGx5XG4gICAqIGFuYWx5emVkIGJ1aWxkLlxuICAgKi9cbiAgcGVuZGluZ0VtaXQ6IFNldDxzdHJpbmc+O1xufVxuXG5mdW5jdGlvbiB0c09ubHlGaWxlcyhwcm9ncmFtOiB0cy5Qcm9ncmFtKTogUmVhZG9ubHlBcnJheTx0cy5Tb3VyY2VGaWxlPiB7XG4gIHJldHVybiBwcm9ncmFtLmdldFNvdXJjZUZpbGVzKCkuZmlsdGVyKHNmID0+ICFzZi5pc0RlY2xhcmF0aW9uRmlsZSk7XG59XG4iXX0=
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
if (v !== undefined) module.exports = v;
|
|
12
12
|
}
|
|
13
13
|
else if (typeof define === "function" && define.amd) {
|
|
14
|
-
define("@angular/compiler-cli/src/ngtsc/indexer", ["require", "exports", "tslib", "@angular/compiler-cli/src/ngtsc/indexer/src/api", "@angular/compiler-cli/src/ngtsc/indexer/src/context"], factory);
|
|
14
|
+
define("@angular/compiler-cli/src/ngtsc/indexer", ["require", "exports", "tslib", "@angular/compiler-cli/src/ngtsc/indexer/src/api", "@angular/compiler-cli/src/ngtsc/indexer/src/context", "@angular/compiler-cli/src/ngtsc/indexer/src/transform"], factory);
|
|
15
15
|
}
|
|
16
16
|
})(function (require, exports) {
|
|
17
17
|
"use strict";
|
|
@@ -20,5 +20,7 @@
|
|
|
20
20
|
tslib_1.__exportStar(require("@angular/compiler-cli/src/ngtsc/indexer/src/api"), exports);
|
|
21
21
|
var context_1 = require("@angular/compiler-cli/src/ngtsc/indexer/src/context");
|
|
22
22
|
exports.IndexingContext = context_1.IndexingContext;
|
|
23
|
+
var transform_1 = require("@angular/compiler-cli/src/ngtsc/indexer/src/transform");
|
|
24
|
+
exports.generateAnalysis = transform_1.generateAnalysis;
|
|
23
25
|
});
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL2luZGV4ZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7O0lBRUgsMEZBQTBCO0lBQzFCLCtFQUE4QztJQUF0QyxvQ0FBQSxlQUFlLENBQUE7SUFDdkIsbUZBQWlEO0lBQXpDLHVDQUFBLGdCQUFnQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hcGknO1xuZXhwb3J0IHtJbmRleGluZ0NvbnRleHR9IGZyb20gJy4vc3JjL2NvbnRleHQnO1xuZXhwb3J0IHtnZW5lcmF0ZUFuYWx5c2lzfSBmcm9tICcuL3NyYy90cmFuc2Zvcm0nO1xuIl19
|
|
@@ -8,5 +8,5 @@
|
|
|
8
8
|
/// <amd-module name="@angular/compiler-cli/src/ngtsc/metadata" />
|
|
9
9
|
export * from './src/api';
|
|
10
10
|
export { DtsMetadataReader } from './src/dts';
|
|
11
|
-
export { CompoundMetadataRegistry, LocalMetadataRegistry } from './src/registry';
|
|
11
|
+
export { CompoundMetadataRegistry, LocalMetadataRegistry, InjectableClassRegistry } from './src/registry';
|
|
12
12
|
export { extractDirectiveGuards, CompoundMetadataReader } from './src/util';
|
|
@@ -21,8 +21,9 @@
|
|
|
21
21
|
var registry_1 = require("@angular/compiler-cli/src/ngtsc/metadata/src/registry");
|
|
22
22
|
exports.CompoundMetadataRegistry = registry_1.CompoundMetadataRegistry;
|
|
23
23
|
exports.LocalMetadataRegistry = registry_1.LocalMetadataRegistry;
|
|
24
|
+
exports.InjectableClassRegistry = registry_1.InjectableClassRegistry;
|
|
24
25
|
var util_1 = require("@angular/compiler-cli/src/ngtsc/metadata/src/util");
|
|
25
26
|
exports.extractDirectiveGuards = util_1.extractDirectiveGuards;
|
|
26
27
|
exports.CompoundMetadataReader = util_1.CompoundMetadataReader;
|
|
27
28
|
});
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL21ldGFkYXRhL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7O0lBR0gsd0VBQTRDO0lBQXBDLGtDQUFBLGlCQUFpQixDQUFBO0lBQ3pCLGtGQUF3RztJQUFoRyw4Q0FBQSx3QkFBd0IsQ0FBQTtJQUFFLDJDQUFBLHFCQUFxQixDQUFBO0lBQUUsNkNBQUEsdUJBQXVCLENBQUE7SUFDaEYsMEVBQTBFO0lBQWxFLHdDQUFBLHNCQUFzQixDQUFBO0lBQUUsd0NBQUEsc0JBQXNCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwaSc7XG5leHBvcnQge0R0c01ldGFkYXRhUmVhZGVyfSBmcm9tICcuL3NyYy9kdHMnO1xuZXhwb3J0IHtDb21wb3VuZE1ldGFkYXRhUmVnaXN0cnksIExvY2FsTWV0YWRhdGFSZWdpc3RyeSwgSW5qZWN0YWJsZUNsYXNzUmVnaXN0cnl9IGZyb20gJy4vc3JjL3JlZ2lzdHJ5JztcbmV4cG9ydCB7ZXh0cmFjdERpcmVjdGl2ZUd1YXJkcywgQ29tcG91bmRNZXRhZGF0YVJlYWRlcn0gZnJvbSAnLi9zcmMvdXRpbCc7XG4iXX0=
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
/// <amd-module name="@angular/compiler-cli/src/ngtsc/metadata/src/api" />
|
|
9
9
|
import { DirectiveMeta as T2DirectiveMeta, SchemaMetadata } from '@angular/compiler';
|
|
10
|
+
import * as ts from 'typescript';
|
|
10
11
|
import { Reference } from '../../imports';
|
|
11
12
|
import { ClassDeclaration } from '../../reflection';
|
|
12
13
|
/**
|
|
@@ -18,6 +19,13 @@ export interface NgModuleMeta {
|
|
|
18
19
|
imports: Reference<ClassDeclaration>[];
|
|
19
20
|
exports: Reference<ClassDeclaration>[];
|
|
20
21
|
schemas: SchemaMetadata[];
|
|
22
|
+
/**
|
|
23
|
+
* The raw `ts.Expression` which gave rise to `declarations`, if one exists.
|
|
24
|
+
*
|
|
25
|
+
* If this is `null`, then either no declarations exist, or no expression was available (likely
|
|
26
|
+
* because the module came from a .d.ts file).
|
|
27
|
+
*/
|
|
28
|
+
rawDeclarations: ts.Expression | null;
|
|
21
29
|
}
|
|
22
30
|
/**
|
|
23
31
|
* Metadata collected for a directive within an NgModule's scope.
|
|
@@ -17,4 +17,4 @@
|
|
|
17
17
|
"use strict";
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
19
|
});
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9tZXRhZGF0YS9zcmMvYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtEaXJlY3RpdmVNZXRhIGFzIFQyRGlyZWN0aXZlTWV0YSwgU2NoZW1hTWV0YWRhdGF9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge1JlZmVyZW5jZX0gZnJvbSAnLi4vLi4vaW1wb3J0cyc7XG5pbXBvcnQge0NsYXNzRGVjbGFyYXRpb259IGZyb20gJy4uLy4uL3JlZmxlY3Rpb24nO1xuXG5cbi8qKlxuICogTWV0YWRhdGEgY29sbGVjdGVkIGZvciBhbiBgTmdNb2R1bGVgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5nTW9kdWxlTWV0YSB7XG4gIHJlZjogUmVmZXJlbmNlPENsYXNzRGVjbGFyYXRpb24+O1xuICBkZWNsYXJhdGlvbnM6IFJlZmVyZW5jZTxDbGFzc0RlY2xhcmF0aW9uPltdO1xuICBpbXBvcnRzOiBSZWZlcmVuY2U8Q2xhc3NEZWNsYXJhdGlvbj5bXTtcbiAgZXhwb3J0czogUmVmZXJlbmNlPENsYXNzRGVjbGFyYXRpb24+W107XG4gIHNjaGVtYXM6IFNjaGVtYU1ldGFkYXRhW107XG5cbiAgLyoqXG4gICAqIFRoZSByYXcgYHRzLkV4cHJlc3Npb25gIHdoaWNoIGdhdmUgcmlzZSB0byBgZGVjbGFyYXRpb25zYCwgaWYgb25lIGV4aXN0cy5cbiAgICpcbiAgICogSWYgdGhpcyBpcyBgbnVsbGAsIHRoZW4gZWl0aGVyIG5vIGRlY2xhcmF0aW9ucyBleGlzdCwgb3Igbm8gZXhwcmVzc2lvbiB3YXMgYXZhaWxhYmxlIChsaWtlbHlcbiAgICogYmVjYXVzZSB0aGUgbW9kdWxlIGNhbWUgZnJvbSBhIC5kLnRzIGZpbGUpLlxuICAgKi9cbiAgcmF3RGVjbGFyYXRpb25zOiB0cy5FeHByZXNzaW9ufG51bGw7XG59XG5cbi8qKlxuICogTWV0YWRhdGEgY29sbGVjdGVkIGZvciBhIGRpcmVjdGl2ZSB3aXRoaW4gYW4gTmdNb2R1bGUncyBzY29wZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEaXJlY3RpdmVNZXRhIGV4dGVuZHMgVDJEaXJlY3RpdmVNZXRhIHtcbiAgcmVmOiBSZWZlcmVuY2U8Q2xhc3NEZWNsYXJhdGlvbj47XG4gIC8qKlxuICAgKiBVbnBhcnNlZCBzZWxlY3RvciBvZiB0aGUgZGlyZWN0aXZlLCBvciBudWxsIGlmIHRoZSBkaXJlY3RpdmUgZG9lcyBub3QgaGF2ZSBhIHNlbGVjdG9yLlxuICAgKi9cbiAgc2VsZWN0b3I6IHN0cmluZ3xudWxsO1xuICBxdWVyaWVzOiBzdHJpbmdbXTtcbiAgbmdUZW1wbGF0ZUd1YXJkczogVGVtcGxhdGVHdWFyZE1ldGFbXTtcbiAgaGFzTmdUZW1wbGF0ZUNvbnRleHRHdWFyZDogYm9vbGVhbjtcbiAgY29lcmNlZElucHV0RmllbGRzOiBTZXQ8c3RyaW5nPjtcblxuICAvKipcbiAgICogQSBgUmVmZXJlbmNlYCB0byB0aGUgYmFzZSBjbGFzcyBmb3IgdGhlIGRpcmVjdGl2ZSwgaWYgb25lIHdhcyBkZXRlY3RlZC5cbiAgICpcbiAgICogQSB2YWx1ZSBvZiBgJ2R5bmFtaWMnYCBpbmRpY2F0ZXMgdGhhdCB3aGlsZSB0aGUgYW5hbHl6ZXIgZGV0ZWN0ZWQgdGhhdCB0aGlzIGRpcmVjdGl2ZSBleHRlbmRzXG4gICAqIGFub3RoZXIgdHlwZSwgaXQgY291bGQgbm90IHN0YXRpY2FsbHkgZGV0ZXJtaW5lIHRoZSBiYXNlIGNsYXNzLlxuICAgKi9cbiAgYmFzZUNsYXNzOiBSZWZlcmVuY2U8Q2xhc3NEZWNsYXJhdGlvbj58J2R5bmFtaWMnfG51bGw7XG59XG5cbi8qKlxuICogTWV0YWRhdGEgdGhhdCBkZXNjcmliZXMgYSB0ZW1wbGF0ZSBndWFyZCBmb3Igb25lIG9mIHRoZSBkaXJlY3RpdmUncyBpbnB1dHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGVHdWFyZE1ldGEge1xuICAvKipcbiAgICogVGhlIGlucHV0IG5hbWUgdGhhdCB0aGlzIGd1YXJkIHNob3VsZCBiZSBhcHBsaWVkIHRvLlxuICAgKi9cbiAgaW5wdXROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgdGhlIHR5cGUgb2YgdGhlIHRlbXBsYXRlIGd1YXJkLlxuICAgKlxuICAgKiAtICdpbnZvY2F0aW9uJyBtZWFucyB0aGF0IGEgY2FsbCB0byB0aGUgdGVtcGxhdGUgZ3VhcmQgZnVuY3Rpb24gaXMgZW1pdHRlZCBzbyB0aGF0IGl0cyByZXR1cm5cbiAgICogICB0eXBlIGNhbiByZXN1bHQgaW4gbmFycm93aW5nIG9mIHRoZSBpbnB1dCB0eXBlLlxuICAgKiAtICdiaW5kaW5nJyBtZWFucyB0aGF0IHRoZSBpbnB1dCBiaW5kaW5nIGV4cHJlc3Npb24gaXRzZWxmIGlzIHVzZWQgYXMgdGVtcGxhdGUgZ3VhcmQuXG4gICAqL1xuICB0eXBlOiAnaW52b2NhdGlvbid8J2JpbmRpbmcnO1xufVxuXG4vKipcbiAqIE1ldGFkYXRhIGZvciBhIHBpcGUgd2l0aGluIGFuIE5nTW9kdWxlJ3Mgc2NvcGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZU1ldGEge1xuICByZWY6IFJlZmVyZW5jZTxDbGFzc0RlY2xhcmF0aW9uPjtcbiAgbmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlYWRzIG1ldGFkYXRhIGZvciBkaXJlY3RpdmVzLCBwaXBlcywgYW5kIG1vZHVsZXMgZnJvbSBhIHBhcnRpY3VsYXIgc291cmNlLCBzdWNoIGFzIC5kLnRzIGZpbGVzXG4gKiBvciBhIHJlZ2lzdHJ5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhUmVhZGVyIHtcbiAgZ2V0RGlyZWN0aXZlTWV0YWRhdGEobm9kZTogUmVmZXJlbmNlPENsYXNzRGVjbGFyYXRpb24+KTogRGlyZWN0aXZlTWV0YXxudWxsO1xuICBnZXROZ01vZHVsZU1ldGFkYXRhKG5vZGU6IFJlZmVyZW5jZTxDbGFzc0RlY2xhcmF0aW9uPik6IE5nTW9kdWxlTWV0YXxudWxsO1xuICBnZXRQaXBlTWV0YWRhdGEobm9kZTogUmVmZXJlbmNlPENsYXNzRGVjbGFyYXRpb24+KTogUGlwZU1ldGF8bnVsbDtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgbmV3IG1ldGFkYXRhIGZvciBkaXJlY3RpdmVzLCBwaXBlcywgYW5kIG1vZHVsZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0YWRhdGFSZWdpc3RyeSB7XG4gIHJlZ2lzdGVyRGlyZWN0aXZlTWV0YWRhdGEobWV0YTogRGlyZWN0aXZlTWV0YSk6IHZvaWQ7XG4gIHJlZ2lzdGVyTmdNb2R1bGVNZXRhZGF0YShtZXRhOiBOZ01vZHVsZU1ldGEpOiB2b2lkO1xuICByZWdpc3RlclBpcGVNZXRhZGF0YShtZXRhOiBQaXBlTWV0YSk6IHZvaWQ7XG59XG4iXX0=
|
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
exports: util_1.extractReferencesFromType(this.checker, exportMetadata, ref.ownedByModuleGuess, resolutionContext),
|
|
61
61
|
imports: util_1.extractReferencesFromType(this.checker, importMetadata, ref.ownedByModuleGuess, resolutionContext),
|
|
62
62
|
schemas: [],
|
|
63
|
+
rawDeclarations: null,
|
|
63
64
|
};
|
|
64
65
|
};
|
|
65
66
|
/**
|
|
@@ -145,4 +146,4 @@
|
|
|
145
146
|
return null;
|
|
146
147
|
}
|
|
147
148
|
});
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9tZXRhZGF0YS9zcmMvZHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7OztJQUVILCtCQUFpQztJQUVqQyxtRUFBd0M7SUFDeEMseUVBQTJGO0lBRzNGLDBFQUFpSTtJQUVqSTs7O09BR0c7SUFDSDtRQUNFLDJCQUFvQixPQUF1QixFQUFVLFNBQXlCO1lBQTFELFlBQU8sR0FBUCxPQUFPLENBQWdCO1lBQVUsY0FBUyxHQUFULFNBQVMsQ0FBZ0I7UUFBRyxDQUFDO1FBRWxGOzs7OztXQUtHO1FBQ0gsK0NBQW1CLEdBQW5CLFVBQW9CLEdBQWdDO1lBQ2xELElBQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDdkIsSUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDO1lBQ3pELHdGQUF3RjtZQUN4Riw4REFBOEQ7WUFDOUQsSUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQzVELFVBQUEsTUFBTSxJQUFJLE9BQUEsTUFBTSxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBekMsQ0FBeUMsQ0FBQyxDQUFDO1lBQ3pELElBQUksV0FBVyxLQUFLLFNBQVMsRUFBRTtnQkFDN0IsT0FBTyxJQUFJLENBQUM7YUFDYjtpQkFBTTtZQUNILDhEQUE4RDtZQUM5RCxXQUFXLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO2dCQUN0RSxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsS0FBSyxTQUFTO2dCQUM1QyxXQUFXLENB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LE9BQU8sU0FBUyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDekQ7UUFFRCxJQUFJLEtBQUssQ0FBQyxlQUFlLEtBQUssU0FBUyxFQUFFOztnQkFDdkMsS0FBcUIsSUFBQSxLQUFBLGlCQUFBLEtBQUssQ0FBQyxlQUFlLENBQUEsZ0JBQUEsNEJBQUU7b0JBQXZDLElBQU0sTUFBTSxXQUFBO29CQUNmLElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRTt3QkFDakQsSUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7d0JBQzVDLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQzt3QkFDbkQsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFOzRCQUN4QixPQUFPLFNBQVMsQ0FBQzt5QkFDbEI7NkJBQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFOzRCQUM5QyxNQUFNLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO3lCQUMzQzt3QkFDRCxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTOzRCQUNyQyxvQ0FBdUIsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsRUFBRTs0QkFDcEQsT0FBTyxJQUFJLG1CQUFTLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7eUJBQy9DOzZCQUFNOzRCQUNMLE9BQU8sU0FBUyxDQUFDO3lCQUNsQjtxQkFDRjtpQkFDRjs7Ozs7Ozs7O1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge1JlZmVyZW5jZX0gZnJvbSAnLi4vLi4vaW1wb3J0cyc7XG5pbXBvcnQge0NsYXNzRGVjbGFyYXRpb24sIFJlZmxlY3Rpb25Ib3N0LCBpc05hbWVkQ2xhc3NEZWNsYXJhdGlvbn0gZnJvbSAnLi4vLi4vcmVmbGVjdGlvbic7XG5cbmltcG9ydCB7RGlyZWN0aXZlTWV0YSwgTWV0YWRhdGFSZWFkZXIsIE5nTW9kdWxlTWV0YSwgUGlwZU1ldGF9IGZyb20gJy4vYXBpJztcbmltcG9ydCB7ZXh0cmFjdERpcmVjdGl2ZUd1YXJkcywgZXh0cmFjdFJlZmVyZW5jZXNGcm9tVHlwZSwgcmVhZFN0cmluZ0FycmF5VHlwZSwgcmVhZFN0cmluZ01hcFR5cGUsIHJlYWRTdHJpbmdUeXBlfSBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIEEgYE1ldGFkYXRhUmVhZGVyYCB0aGF0IGNhbiByZWFkIG1ldGFkYXRhIGZyb20gYC5kLnRzYCBmaWxlcywgd2hpY2ggaGF2ZSBzdGF0aWMgSXZ5IHByb3BlcnRpZXNcbiAqIGZyb20gYW4gdXBzdHJlYW0gY29tcGlsYXRpb24gYWxyZWFkeS5cbiAqL1xuZXhwb3J0IGNsYXNzIER0c01ldGFkYXRhUmVhZGVyIGltcGxlbWVudHMgTWV0YWRhdGFSZWFkZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoZWNrZXI6IHRzLlR5cGVDaGVja2VyLCBwcml2YXRlIHJlZmxlY3RvcjogUmVmbGVjdGlvbkhvc3QpIHt9XG5cbiAgLyoqXG4gICAqIFJlYWQgdGhlIG1ldGFkYXRhIGZyb20gYSBjbGFzcyB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gY29tcGlsZWQgc29tZWhvdyAoZWl0aGVyIGl0J3MgaW4gYSAuZC50c1xuICAgKiBmaWxlLCBvciBpbiBhIC50cyBmaWxlIHdpdGggYSBoYW5kd3JpdHRlbiBkZWZpbml0aW9uKS5cbiAgICpcbiAgICogQHBhcmFtIHJlZiBgUmVmZXJlbmNlYCB0byB0aGUgY2xhc3Mgb2YgaW50ZXJlc3QsIHdpdGggdGhlIGNvbnRleHQgb2YgaG93IGl0IHdhcyBvYnRhaW5lZC5cbiAgICovXG4gIGdldE5nTW9kdWxlTWV0YWRhdGEocmVmOiBSZWZlcmVuY2U8Q2xhc3NEZWNsYXJhdGlvbj4pOiBOZ01vZHVsZU1ldGF8bnVsbCB7XG4gICAgY29uc3QgY2xhenogPSByZWYubm9kZTtcbiAgICBjb25zdCByZXNvbHV0aW9uQ29udGV4dCA9IGNsYXp6LmdldFNvdXJjZUZpbGUoKS5maWxlTmFtZTtcbiAgICAvLyBUaGlzIG9wZXJhdGlvbiBpcyBleHBsaWNpdGx5IG5vdCBtZW1vaXplZCwgYXMgaXQgZGVwZW5kcyBvbiBgcmVmLm93bmVkQnlNb2R1bGVHdWVzc2AuXG4gICAgLy8gVE9ETyhhbHhodWIpOiBpbnZlc3RpZ2F0ZSBjYWNoaW5nIG9mIC5kLnRzIG1vZHVsZSBtZXRhZGF0YS5cbiAgICBjb25zdCBuZ01vZHVsZURlZiA9IHRoaXMucmVmbGVjdG9yLmdldE1lbWJlcnNPZkNsYXNzKGNsYXp6KS5maW5kKFxuICAgICAgICBtZW1iZXIgPT4gbWVtYmVyLm5hbWUgPT09ICfJtW1vZCcgJiYgbWVtYmVyLmlzU3RhdGljKTtcbiAgICBpZiAobmdNb2R1bGVEZWYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgc2hhcGUgb2YgdGhlIG5nTW9kdWxlRGVmIHR5cGUgaXMgY29ycmVjdC5cbiAgICAgICAgbmdNb2R1bGVEZWYudHlwZSA9PT0gbnVsbCB8fCAhdHMuaXNUeXBlUmVmZXJlbmNlTm9kZShuZ01vZHVsZURlZi50eXBlKSB8fFxuICAgICAgICBuZ01vZHVsZURlZi50eXBlLnR5cGVBcmd1bWVudHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICBuZ01vZHVsZURlZi50eXBlLnR5cGVBcmd1bWVudHMubGVuZ3RoICE9PSA0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBSZWFkIHRoZSBNb2R1bGVEYXRhIG91dCBvZiB0aGUgdHlwZSBhcmd1bWVudHMuXG4gICAgY29uc3QgW18sIGRlY2xhcmF0aW9uTWV0YWRhdGEsIGltcG9ydE1ldGFkYXRhLCBleHBvcnRNZXRhZGF0YV0gPSBuZ01vZHVsZURlZi50eXBlLnR5cGVBcmd1bWVudHM7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlZixcbiAgICAgIGRlY2xhcmF0aW9uczogZXh0cmFjdFJlZmVyZW5jZXNGcm9tVHlwZShcbiAgICAgICAgICB0aGlzLmNoZWNrZXIsIGRlY2xhcmF0aW9uTWV0YWRhdGEsIHJlZi5vd25lZEJ5TW9kdWxlR3Vlc3MsIHJlc29sdXRpb25Db250ZXh0KSxcbiAgICAgIGV4cG9ydHM6IGV4dHJhY3RSZWZlcmVuY2VzRnJvbVR5cGUoXG4gICAgICAgICAgdGhpcy5jaGVja2VyLCBleHBvcnRNZXRhZGF0YSwgcmVmLm93bmVkQnlNb2R1bGVHdWVzcywgcmVzb2x1dGlvbkNvbnRleHQpLFxuICAgICAgaW1wb3J0czogZXh0cmFjdFJlZmVyZW5jZXNGcm9tVHlwZShcbiAgICAgICAgICB0aGlzLmNoZWNrZXIsIGltcG9ydE1ldGFkYXRhLCByZWYub3duZWRCeU1vZHVsZUd1ZXNzLCByZXNvbHV0aW9uQ29udGV4dCksXG4gICAgICBzY2hlbWFzOiBbXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYWQgZGlyZWN0aXZlIChvciBjb21wb25lbnQpIG1ldGFkYXRhIGZyb20gYSByZWZlcmVuY2VkIGNsYXNzIGluIGEgLmQudHMgZmlsZS5cbiAgICovXG4gIGdldERpcmVjdGl2ZU1ldGFkYXRhKHJlZjogUmVmZXJlbmNlPENsYXNzRGVjbGFyYXRpb24+KTogRGlyZWN0aXZlTWV0YXxudWxsIHtcbiAgICBjb25zdCBjbGF6eiA9IHJlZi5ub2RlO1xuICAgIGNvbnN0IGRlZiA9IHRoaXMucmVmbGVjdG9yLmdldE1lbWJlcnNPZkNsYXNzKGNsYXp6KS5maW5kKFxuICAgICAgICBmaWVsZCA9PiBmaWVsZC5pc1N0YXRpYyAmJiAoZmllbGQubmFtZSA9PT0gJ8m1Y21wJyB8fCBmaWVsZC5uYW1lID09PSAnybVkaXInKSk7XG4gICAgaWYgKGRlZiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBObyBkZWZpbml0aW9uIGNvdWxkIGJlIGZvdW5kLlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICAgZGVmLnR5cGUgPT09IG51bGwgfHwgIXRzLmlzVHlwZVJlZmVyZW5jZU5vZGUoZGVmLnR5cGUpIHx8XG4gICAgICAgIGRlZi50eXBlLnR5cGVBcmd1bWVudHMgPT09IHVuZGVmaW5lZCB8fCBkZWYudHlwZS50eXBlQXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICAgIC8vIFRoZSB0eXBlIG1ldGFkYXRhIHdhcyB0aGUgd3Jvbmcgc2hhcGUuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgcmVmLFxuICAgICAgbmFtZTogY2xhenoubmFtZS50ZXh0LFxuICAgICAgaXNDb21wb25lbnQ6IGRlZi5uYW1lID09PSAnybVjbXAnLFxuICAgICAgc2VsZWN0b3I6IHJlYWRTdHJpbmdUeXBlKGRlZi50eXBlLnR5cGVBcmd1bWVudHNbMV0pLFxuICAgICAgZXhwb3J0QXM6IHJlYWRTdHJpbmdBcnJheVR5cGUoZGVmLnR5cGUudHlwZUFyZ3VtZW50c1syXSksXG4gICAgICBpbnB1dHM6IHJlYWRTdHJpbmdNYXBUeXBlKGRlZi50eXBlLnR5cGVBcmd1bWVudHNbM10pLFxuICAgICAgb3V0cHV0czogcmVhZFN0cmluZ01hcFR5cGUoZGVmLnR5cGUudHlwZUFyZ3VtZW50c1s0XSksXG4gICAgICBxdWVyaWVzOiByZWFkU3RyaW5nQXJyYXlUeXBlKGRlZi50eXBlLnR5cGVBcmd1bWVudHNbNV0pLFxuICAgICAgLi4uZXh0cmFjdERpcmVjdGl2ZUd1YXJkcyhjbGF6eiwgdGhpcy5yZWZsZWN0b3IpLFxuICAgICAgYmFzZUNsYXNzOiByZWFkQmFzZUNsYXNzKGNsYXp6LCB0aGlzLmNoZWNrZXIsIHRoaXMucmVmbGVjdG9yKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYWQgcGlwZSBtZXRhZGF0YSBmcm9tIGEgcmVmZXJlbmNlZCBjbGFzcyBpbiBhIC5kLnRzIGZpbGUuXG4gICAqL1xuICBnZXRQaXBlTWV0YWRhdGEocmVmOiBSZWZlcmVuY2U8Q2xhc3NEZWNsYXJhdGlvbj4pOiBQaXBlTWV0YXxudWxsIHtcbiAgICBjb25zdCBkZWYgPSB0aGlzLnJlZmxlY3Rvci5nZXRNZW1iZXJzT2ZDbGFzcyhyZWYubm9kZSkuZmluZChcbiAgICAgICAgZmllbGQgPT4gZmllbGQuaXNTdGF0aWMgJiYgZmllbGQubmFtZSA9PT0gJ8m1cGlwZScpO1xuICAgIGlmIChkZWYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gTm8gZGVmaW5pdGlvbiBjb3VsZCBiZSBmb3VuZC5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGRlZi50eXBlID09PSBudWxsIHx8ICF0cy5pc1R5cGVSZWZlcmVuY2VOb2RlKGRlZi50eXBlKSB8fFxuICAgICAgICBkZWYudHlwZS50eXBlQXJndW1lbnRzID09PSB1bmRlZmluZWQgfHwgZGVmLnR5cGUudHlwZUFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgICAvLyBUaGUgdHlwZSBtZXRhZGF0YSB3YXMgdGhlIHdyb25nIHNoYXBlLlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHR5cGUgPSBkZWYudHlwZS50eXBlQXJndW1lbnRzWzFdO1xuICAgIGlmICghdHMuaXNMaXRlcmFsVHlwZU5vZGUodHlwZSkgfHwgIXRzLmlzU3RyaW5nTGl0ZXJhbCh0eXBlLmxpdGVyYWwpKSB7XG4gICAgICAvLyBUaGUgdHlwZSBtZXRhZGF0YSB3YXMgdGhlIHdyb25nIHR5cGUuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgbmFtZSA9IHR5cGUubGl0ZXJhbC50ZXh0O1xuICAgIHJldHVybiB7cmVmLCBuYW1lfTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZWFkQmFzZUNsYXNzKGNsYXp6OiBDbGFzc0RlY2xhcmF0aW9uLCBjaGVja2VyOiB0cy5UeXBlQ2hlY2tlciwgcmVmbGVjdG9yOiBSZWZsZWN0aW9uSG9zdCk6XG4gICAgUmVmZXJlbmNlPENsYXNzRGVjbGFyYXRpb24+fCdkeW5hbWljJ3xudWxsIHtcbiAgaWYgKCFpc05hbWVkQ2xhc3NEZWNsYXJhdGlvbihjbGF6eikpIHtcbiAgICAvLyBUZWNobmljYWxseSB0aGlzIGlzIGFuIGVycm9yIGluIGEgLmQudHMgZmlsZSwgYnV0IGZvciB0aGUgcHVycG9zZXMgb2YgZmluZGluZyB0aGUgYmFzZSBjbGFzc1xuICAgIC8vIGl0J3MgaWdub3JlZC5cbiAgICByZXR1cm4gcmVmbGVjdG9yLmhhc0Jhc2VDbGFzcyhjbGF6eikgPyAnZHluYW1pYycgOiBudWxsO1xuICB9XG5cbiAgaWYgKGNsYXp6Lmhlcml0YWdlQ2xhdXNlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZm9yIChjb25zdCBjbGF1c2Ugb2YgY2xhenouaGVyaXRhZ2VDbGF1c2VzKSB7XG4gICAgICBpZiAoY2xhdXNlLnRva2VuID09PSB0cy5TeW50YXhLaW5kLkV4dGVuZHNLZXl3b3JkKSB7XG4gICAgICAgIGNvbnN0IGJhc2VFeHByID0gY2xhdXNlLnR5cGVzWzBdLmV4cHJlc3Npb247XG4gICAgICAgIGxldCBzeW1ib2wgPSBjaGVja2VyLmdldFN5bWJvbEF0TG9jYXRpb24oYmFzZUV4cHIpO1xuICAgICAgICBpZiAoc3ltYm9sID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gJ2R5bmFtaWMnO1xuICAgICAgICB9IGVsc2UgaWYgKHN5bWJvbC5mbGFncyAmIHRzLlN5bWJvbEZsYWdzLkFsaWFzKSB7XG4gICAgICAgICAgc3ltYm9sID0gY2hlY2tlci5nZXRBbGlhc2VkU3ltYm9sKHN5bWJvbCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN5bWJvbC52YWx1ZURlY2xhcmF0aW9uICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgIGlzTmFtZWRDbGFzc0RlY2xhcmF0aW9uKHN5bWJvbC52YWx1ZURlY2xhcmF0aW9uKSkge1xuICAgICAgICAgIHJldHVybiBuZXcgUmVmZXJlbmNlKHN5bWJvbC52YWx1ZURlY2xhcmF0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gJ2R5bmFtaWMnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuIl19
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9tZXRhZGF0YS9zcmMvZHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7OztJQUVILCtCQUFpQztJQUVqQyxtRUFBd0M7SUFDeEMseUVBQTJGO0lBRzNGLDBFQUFpSTtJQUVqSTs7O09BR0c7SUFDSDtRQUNFLDJCQUFvQixPQUF1QixFQUFVLFNBQXlCO1lBQTFELFlBQU8sR0FBUCxPQUFPLENBQWdCO1lBQVUsY0FBUyxHQUFULFNBQVMsQ0FBZ0I7UUFBRyxDQUFDO1FBRWxGOzs7OztXQUtHO1FBQ0gsK0NBQW1CLEdBQW5CLFVBQW9CLEdBQWdDO1lBQ2xELElBQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDdkIsSUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDO1lBQ3pELHdGQUF3RjtZQUN4Riw4REFBOEQ7WUFDOUQsSUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQzVELFVBQUEsTUFBTSxJQUFJLE9BQUEsTUFBTSxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBekMsQ0FBeUMsQ0FBQyxDQUFDO1lBQ3pELElBQUksV0FBVyxLQUFLLFNBQVMsRUFBRTtnQkFDN0IsT0FBTyxJQUFJLENBQUM7YUFDYjtpQkFBTTtZQUNILDhEQUE4RDtZQUM5RCxXQUFXLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO2dCQUN0RSxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsS0FBSyxTQUFTO2dCQUM1QyxXQUFXLENB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IEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtSZWZlcmVuY2V9IGZyb20gJy4uLy4uL2ltcG9ydHMnO1xuaW1wb3J0IHtDbGFzc0RlY2xhcmF0aW9uLCBSZWZsZWN0aW9uSG9zdCwgaXNOYW1lZENsYXNzRGVjbGFyYXRpb259IGZyb20gJy4uLy4uL3JlZmxlY3Rpb24nO1xuXG5pbXBvcnQge0RpcmVjdGl2ZU1ldGEsIE1ldGFkYXRhUmVhZGVyLCBOZ01vZHVsZU1ldGEsIFBpcGVNZXRhfSBmcm9tICcuL2FwaSc7XG5pbXBvcnQge2V4dHJhY3REaXJlY3RpdmVHdWFyZHMsIGV4dHJhY3RSZWZlcmVuY2VzRnJvbVR5cGUsIHJlYWRTdHJpbmdBcnJheVR5cGUsIHJlYWRTdHJpbmdNYXBUeXBlLCByZWFkU3RyaW5nVHlwZX0gZnJvbSAnLi91dGlsJztcblxuLyoqXG4gKiBBIGBNZXRhZGF0YVJlYWRlcmAgdGhhdCBjYW4gcmVhZCBtZXRhZGF0YSBmcm9tIGAuZC50c2AgZmlsZXMsIHdoaWNoIGhhdmUgc3RhdGljIEl2eSBwcm9wZXJ0aWVzXG4gKiBmcm9tIGFuIHVwc3RyZWFtIGNvbXBpbGF0aW9uIGFscmVhZHkuXG4gKi9cbmV4cG9ydCBjbGFzcyBEdHNNZXRhZGF0YVJlYWRlciBpbXBsZW1lbnRzIE1ldGFkYXRhUmVhZGVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGVja2VyOiB0cy5UeXBlQ2hlY2tlciwgcHJpdmF0ZSByZWZsZWN0b3I6IFJlZmxlY3Rpb25Ib3N0KSB7fVxuXG4gIC8qKlxuICAgKiBSZWFkIHRoZSBtZXRhZGF0YSBmcm9tIGEgY2xhc3MgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGNvbXBpbGVkIHNvbWVob3cgKGVpdGhlciBpdCdzIGluIGEgLmQudHNcbiAgICogZmlsZSwgb3IgaW4gYSAudHMgZmlsZSB3aXRoIGEgaGFuZHdyaXR0ZW4gZGVmaW5pdGlvbikuXG4gICAqXG4gICAqIEBwYXJhbSByZWYgYFJlZmVyZW5jZWAgdG8gdGhlIGNsYXNzIG9mIGludGVyZXN0LCB3aXRoIHRoZSBjb250ZXh0IG9mIGhvdyBpdCB3YXMgb2J0YWluZWQuXG4gICAqL1xuICBnZXROZ01vZHVsZU1ldGFkYXRhKHJlZjogUmVmZXJlbmNlPENsYXNzRGVjbGFyYXRpb24+KTogTmdNb2R1bGVNZXRhfG51bGwge1xuICAgIGNvbnN0IGNsYXp6ID0gcmVmLm5vZGU7XG4gICAgY29uc3QgcmVzb2x1dGlvbkNvbnRleHQgPSBjbGF6ei5nZXRTb3VyY2VGaWxlKCkuZmlsZU5hbWU7XG4gICAgLy8gVGhpcyBvcGVyYXRpb24gaXMgZXhwbGljaXRseSBub3QgbWVtb2l6ZWQsIGFzIGl0IGRlcGVuZHMgb24gYHJlZi5vd25lZEJ5TW9kdWxlR3Vlc3NgLlxuICAgIC8vIFRPRE8oYWx4aHViKTogaW52ZXN0aWdhdGUgY2FjaGluZyBvZiAuZC50cyBtb2R1bGUgbWV0YWRhdGEuXG4gICAgY29uc3QgbmdNb2R1bGVEZWYgPSB0aGlzLnJlZmxlY3Rvci5nZXRNZW1iZXJzT2ZDbGFzcyhjbGF6eikuZmluZChcbiAgICAgICAgbWVtYmVyID0+IG1lbWJlci5uYW1lID09PSAnybVtb2QnICYmIG1lbWJlci5pc1N0YXRpYyk7XG4gICAgaWYgKG5nTW9kdWxlRGVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIHNoYXBlIG9mIHRoZSBuZ01vZHVsZURlZiB0eXBlIGlzIGNvcnJlY3QuXG4gICAgICAgIG5nTW9kdWxlRGVmLnR5cGUgPT09IG51bGwgfHwgIXRzLmlzVHlwZVJlZmVyZW5jZU5vZGUobmdNb2R1bGVEZWYudHlwZSkgfHxcbiAgICAgICAgbmdNb2R1bGVEZWYudHlwZS50eXBlQXJndW1lbnRzID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgbmdNb2R1bGVEZWYudHlwZS50eXBlQXJndW1lbnRzLmxlbmd0aCAhPT0gNCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gUmVhZCB0aGUgTW9kdWxlRGF0YSBvdXQgb2YgdGhlIHR5cGUgYXJndW1lbnRzLlxuICAgIGNvbnN0IFtfLCBkZWNsYXJhdGlvbk1ldGFkYXRhLCBpbXBvcnRNZXRhZGF0YSwgZXhwb3J0TWV0YWRhdGFdID0gbmdNb2R1bGVEZWYudHlwZS50eXBlQXJndW1lbnRzO1xuICAgIHJldHVybiB7XG4gICAgICByZWYsXG4gICAgICBkZWNsYXJhdGlvbnM6IGV4dHJhY3RSZWZlcmVuY2VzRnJvbVR5cGUoXG4gICAgICAgICAgdGhpcy5jaGVja2VyLCBkZWNsYXJhdGlvbk1ldGFkYXRhLCByZWYub3duZWRCeU1vZHVsZUd1ZXNzLCByZXNvbHV0aW9uQ29udGV4dCksXG4gICAgICBleHBvcnRzOiBleHRyYWN0UmVmZXJlbmNlc0Zyb21UeXBlKFxuICAgICAgICAgIHRoaXMuY2hlY2tlciwgZXhwb3J0TWV0YWRhdGEsIHJlZi5vd25lZEJ5TW9kdWxlR3Vlc3MsIHJlc29sdXRpb25Db250ZXh0KSxcbiAgICAgIGltcG9ydHM6IGV4dHJhY3RSZWZlcmVuY2VzRnJvbVR5cGUoXG4gICAgICAgICAgdGhpcy5jaGVja2VyLCBpbXBvcnRNZXRhZGF0YSwgcmVmLm93bmVkQnlNb2R1bGVHdWVzcywgcmVzb2x1dGlvbkNvbnRleHQpLFxuICAgICAgc2NoZW1hczogW10sXG4gICAgICByYXdEZWNsYXJhdGlvbnM6IG51bGwsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkIGRpcmVjdGl2ZSAob3IgY29tcG9uZW50KSBtZXRhZGF0YSBmcm9tIGEgcmVmZXJlbmNlZCBjbGFzcyBpbiBhIC5kLnRzIGZpbGUuXG4gICAqL1xuICBnZXREaXJlY3RpdmVNZXRhZGF0YShyZWY6IFJlZmVyZW5jZTxDbGFzc0RlY2xhcmF0aW9uPik6IERpcmVjdGl2ZU1ldGF8bnVsbCB7XG4gICAgY29uc3QgY2xhenogPSByZWYubm9kZTtcbiAgICBjb25zdCBkZWYgPSB0aGlzLnJlZmxlY3Rvci5nZXRNZW1iZXJzT2ZDbGFzcyhjbGF6eikuZmluZChcbiAgICAgICAgZmllbGQgPT4gZmllbGQuaXNTdGF0aWMgJiYgKGZpZWxkLm5hbWUgPT09ICfJtWNtcCcgfHwgZmllbGQubmFtZSA9PT0gJ8m1ZGlyJykpO1xuICAgIGlmIChkZWYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gTm8gZGVmaW5pdGlvbiBjb3VsZCBiZSBmb3VuZC5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGRlZi50eXBlID09PSBudWxsIHx8ICF0cy5pc1R5cGVSZWZlcmVuY2VOb2RlKGRlZi50eXBlKSB8fFxuICAgICAgICBkZWYudHlwZS50eXBlQXJndW1lbnRzID09PSB1bmRlZmluZWQgfHwgZGVmLnR5cGUudHlwZUFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgICAvLyBUaGUgdHlwZSBtZXRhZGF0YSB3YXMgdGhlIHdyb25nIHNoYXBlLlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJlZixcbiAgICAgIG5hbWU6IGNsYXp6Lm5hbWUudGV4dCxcbiAgICAgIGlzQ29tcG9uZW50OiBkZWYubmFtZSA9PT0gJ8m1Y21wJyxcbiAgICAgIHNlbGVjdG9yOiByZWFkU3RyaW5nVHlwZShkZWYudHlwZS50eXBlQXJndW1lbnRzWzFdKSxcbiAgICAgIGV4cG9ydEFzOiByZWFkU3RyaW5nQXJyYXlUeXBlKGRlZi50eXBlLnR5cGVBcmd1bWVudHNbMl0pLFxuICAgICAgaW5wdXRzOiByZWFkU3RyaW5nTWFwVHlwZShkZWYudHlwZS50eXBlQXJndW1lbnRzWzNdKSxcbiAgICAgIG91dHB1dHM6IHJlYWRTdHJpbmdNYXBUeXBlKGRlZi50eXBlLnR5cGVBcmd1bWVudHNbNF0pLFxuICAgICAgcXVlcmllczogcmVhZFN0cmluZ0FycmF5VHlwZShkZWYudHlwZS50eXBlQXJndW1lbnRzWzVdKSxcbiAgICAgIC4uLmV4dHJhY3REaXJlY3RpdmVHdWFyZHMoY2xhenosIHRoaXMucmVmbGVjdG9yKSxcbiAgICAgIGJhc2VDbGFzczogcmVhZEJhc2VDbGFzcyhjbGF6eiwgdGhpcy5jaGVja2VyLCB0aGlzLnJlZmxlY3RvciksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkIHBpcGUgbWV0YWRhdGEgZnJvbSBhIHJlZmVyZW5jZWQgY2xhc3MgaW4gYSAuZC50cyBmaWxlLlxuICAgKi9cbiAgZ2V0UGlwZU1ldGFkYXRhKHJlZjogUmVmZXJlbmNlPENsYXNzRGVjbGFyYXRpb24+KTogUGlwZU1ldGF8bnVsbCB7XG4gICAgY29uc3QgZGVmID0gdGhpcy5yZWZsZWN0b3IuZ2V0TWVtYmVyc09mQ2xhc3MocmVmLm5vZGUpLmZpbmQoXG4gICAgICAgIGZpZWxkID0+IGZpZWxkLmlzU3RhdGljICYmIGZpZWxkLm5hbWUgPT09ICfJtXBpcGUnKTtcbiAgICBpZiAoZGVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIE5vIGRlZmluaXRpb24gY291bGQgYmUgZm91bmQuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgICBkZWYudHlwZSA9PT0gbnVsbCB8fCAhdHMuaXNUeXBlUmVmZXJlbmNlTm9kZShkZWYudHlwZSkgfHxcbiAgICAgICAgZGVmLnR5cGUudHlwZUFyZ3VtZW50cyA9PT0gdW5kZWZpbmVkIHx8IGRlZi50eXBlLnR5cGVBcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgICAgLy8gVGhlIHR5cGUgbWV0YWRhdGEgd2FzIHRoZSB3cm9uZyBzaGFwZS5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCB0eXBlID0gZGVmLnR5cGUudHlwZUFyZ3VtZW50c1sxXTtcbiAgICBpZiAoIXRzLmlzTGl0ZXJhbFR5cGVOb2RlKHR5cGUpIHx8ICF0cy5pc1N0cmluZ0xpdGVyYWwodHlwZS5saXRlcmFsKSkge1xuICAgICAgLy8gVGhlIHR5cGUgbWV0YWRhdGEgd2FzIHRoZSB3cm9uZyB0eXBlLlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IG5hbWUgPSB0eXBlLmxpdGVyYWwudGV4dDtcbiAgICByZXR1cm4ge3JlZiwgbmFtZX07XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVhZEJhc2VDbGFzcyhjbGF6ejogQ2xhc3NEZWNsYXJhdGlvbiwgY2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsIHJlZmxlY3RvcjogUmVmbGVjdGlvbkhvc3QpOlxuICAgIFJlZmVyZW5jZTxDbGFzc0RlY2xhcmF0aW9uPnwnZHluYW1pYyd8bnVsbCB7XG4gIGlmICghaXNOYW1lZENsYXNzRGVjbGFyYXRpb24oY2xhenopKSB7XG4gICAgLy8gVGVjaG5pY2FsbHkgdGhpcyBpcyBhbiBlcnJvciBpbiBhIC5kLnRzIGZpbGUsIGJ1dCBmb3IgdGhlIHB1cnBvc2VzIG9mIGZpbmRpbmcgdGhlIGJhc2UgY2xhc3NcbiAgICAvLyBpdCdzIGlnbm9yZWQuXG4gICAgcmV0dXJuIHJlZmxlY3Rvci5oYXNCYXNlQ2xhc3MoY2xhenopID8gJ2R5bmFtaWMnIDogbnVsbDtcbiAgfVxuXG4gIGlmIChjbGF6ei5oZXJpdGFnZUNsYXVzZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIGZvciAoY29uc3QgY2xhdXNlIG9mIGNsYXp6Lmhlcml0YWdlQ2xhdXNlcykge1xuICAgICAgaWYgKGNsYXVzZS50b2tlbiA9PT0gdHMuU3ludGF4S2luZC5FeHRlbmRzS2V5d29yZCkge1xuICAgICAgICBjb25zdCBiYXNlRXhwciA9IGNsYXVzZS50eXBlc1swXS5leHByZXNzaW9uO1xuICAgICAgICBsZXQgc3ltYm9sID0gY2hlY2tlci5nZXRTeW1ib2xBdExvY2F0aW9uKGJhc2VFeHByKTtcbiAgICAgICAgaWYgKHN5bWJvbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuICdkeW5hbWljJztcbiAgICAgICAgfSBlbHNlIGlmIChzeW1ib2wuZmxhZ3MgJiB0cy5TeW1ib2xGbGFncy5BbGlhcykge1xuICAgICAgICAgIHN5bWJvbCA9IGNoZWNrZXIuZ2V0QWxpYXNlZFN5bWJvbChzeW1ib2wpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzeW1ib2wudmFsdWVEZWNsYXJhdGlvbiAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICBpc05hbWVkQ2xhc3NEZWNsYXJhdGlvbihzeW1ib2wudmFsdWVEZWNsYXJhdGlvbikpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IFJlZmVyZW5jZShzeW1ib2wudmFsdWVEZWNsYXJhdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuICdkeW5hbWljJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbiJdfQ==
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
/// <amd-module name="@angular/compiler-cli/src/ngtsc/metadata/src/registry" />
|
|
9
9
|
import { Reference } from '../../imports';
|
|
10
|
-
import { ClassDeclaration } from '../../reflection';
|
|
10
|
+
import { ClassDeclaration, ReflectionHost } from '../../reflection';
|
|
11
11
|
import { DirectiveMeta, MetadataReader, MetadataRegistry, NgModuleMeta, PipeMeta } from './api';
|
|
12
12
|
/**
|
|
13
13
|
* A registry of directive, pipe, and module metadata for types defined in the current compilation
|
|
@@ -34,3 +34,14 @@ export declare class CompoundMetadataRegistry implements MetadataRegistry {
|
|
|
34
34
|
registerNgModuleMetadata(meta: NgModuleMeta): void;
|
|
35
35
|
registerPipeMetadata(meta: PipeMeta): void;
|
|
36
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Registry that keeps track of classes that can be constructed via dependency injection (e.g.
|
|
39
|
+
* injectables, directives, pipes).
|
|
40
|
+
*/
|
|
41
|
+
export declare class InjectableClassRegistry {
|
|
42
|
+
private host;
|
|
43
|
+
private classes;
|
|
44
|
+
constructor(host: ReflectionHost);
|
|
45
|
+
registerInjectable(declaration: ClassDeclaration): void;
|
|
46
|
+
isInjectable(declaration: ClassDeclaration): boolean;
|
|
47
|
+
}
|