source: trip-planner-front/node_modules/@angular/compiler-cli/src/ngtsc/tsc_plugin.js@ 8d391a1

Last change on this file since 8d391a1 was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 19.2 KB
Line 
1/**
2 * @license
3 * Copyright Google LLC All Rights Reserved.
4 *
5 * Use of this source code is governed by an MIT-style license that can be
6 * found in the LICENSE file at https://angular.io/license
7 */
8(function (factory) {
9 if (typeof module === "object" && typeof module.exports === "object") {
10 var v = factory(require, exports);
11 if (v !== undefined) module.exports = v;
12 }
13 else if (typeof define === "function" && define.amd) {
14 define("@angular/compiler-cli/src/ngtsc/tsc_plugin", ["require", "exports", "tslib", "@angular/compiler-cli/src/ngtsc/core", "@angular/compiler-cli/src/ngtsc/file_system", "@angular/compiler-cli/src/ngtsc/incremental", "@angular/compiler-cli/src/ngtsc/perf", "@angular/compiler-cli/src/ngtsc/program_driver", "@angular/compiler-cli/src/ngtsc/shims", "@angular/compiler-cli/src/ngtsc/typecheck/api"], factory);
15 }
16})(function (require, exports) {
17 "use strict";
18 Object.defineProperty(exports, "__esModule", { value: true });
19 exports.NgTscPlugin = void 0;
20 var tslib_1 = require("tslib");
21 var core_1 = require("@angular/compiler-cli/src/ngtsc/core");
22 var file_system_1 = require("@angular/compiler-cli/src/ngtsc/file_system");
23 var incremental_1 = require("@angular/compiler-cli/src/ngtsc/incremental");
24 var perf_1 = require("@angular/compiler-cli/src/ngtsc/perf");
25 var program_driver_1 = require("@angular/compiler-cli/src/ngtsc/program_driver");
26 var shims_1 = require("@angular/compiler-cli/src/ngtsc/shims");
27 var api_1 = require("@angular/compiler-cli/src/ngtsc/typecheck/api");
28 /**
29 * A plugin for `tsc_wrapped` which allows Angular compilation from a plain `ts_library`.
30 */
31 var NgTscPlugin = /** @class */ (function () {
32 function NgTscPlugin(ngOptions) {
33 this.ngOptions = ngOptions;
34 this.name = 'ngtsc';
35 this.options = null;
36 this.host = null;
37 this._compiler = null;
38 file_system_1.setFileSystem(new file_system_1.NodeJSFileSystem());
39 }
40 Object.defineProperty(NgTscPlugin.prototype, "compiler", {
41 get: function () {
42 if (this._compiler === null) {
43 throw new Error('Lifecycle error: setupCompilation() must be called first.');
44 }
45 return this._compiler;
46 },
47 enumerable: false,
48 configurable: true
49 });
50 NgTscPlugin.prototype.wrapHost = function (host, inputFiles, options) {
51 // TODO(alxhub): Eventually the `wrapHost()` API will accept the old `ts.Program` (if one is
52 // available). When it does, its `ts.SourceFile`s need to be re-tagged to enable proper
53 // incremental compilation.
54 this.options = tslib_1.__assign(tslib_1.__assign({}, this.ngOptions), options);
55 this.host = core_1.NgCompilerHost.wrap(host, inputFiles, this.options, /* oldProgram */ null);
56 return this.host;
57 };
58 NgTscPlugin.prototype.setupCompilation = function (program, oldProgram) {
59 var e_1, _a;
60 var _b;
61 // TODO(alxhub): we provide a `PerfRecorder` to the compiler, but because we're not driving the
62 // compilation, the information captured within it is incomplete, and may not include timings
63 // for phases such as emit.
64 //
65 // Additionally, nothing actually captures the perf results here, so recording stats at all is
66 // somewhat moot for now :)
67 var perfRecorder = perf_1.ActivePerfRecorder.zeroedToNow();
68 if (this.host === null || this.options === null) {
69 throw new Error('Lifecycle error: setupCompilation() before wrapHost().');
70 }
71 this.host.postProgramCreationCleanup();
72 shims_1.untagAllTsFiles(program);
73 var programDriver = new program_driver_1.TsCreateProgramDriver(program, this.host, this.options, this.host.shimExtensionPrefixes);
74 var strategy = new incremental_1.PatchedProgramIncrementalBuildStrategy();
75 var oldState = oldProgram !== undefined ? strategy.getIncrementalState(oldProgram) : null;
76 var ticket;
77 var modifiedResourceFiles = new Set();
78 if (this.host.getModifiedResourceFiles !== undefined) {
79 try {
80 for (var _c = tslib_1.__values((_b = this.host.getModifiedResourceFiles()) !== null && _b !== void 0 ? _b : []), _d = _c.next(); !_d.done; _d = _c.next()) {
81 var resourceFile = _d.value;
82 modifiedResourceFiles.add(file_system_1.resolve(resourceFile));
83 }
84 }
85 catch (e_1_1) { e_1 = { error: e_1_1 }; }
86 finally {
87 try {
88 if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
89 }
90 finally { if (e_1) throw e_1.error; }
91 }
92 }
93 if (oldProgram === undefined || oldState === null) {
94 ticket = core_1.freshCompilationTicket(program, this.options, strategy, programDriver, perfRecorder,
95 /* enableTemplateTypeChecker */ false, /* usePoisonedData */ false);
96 }
97 else {
98 strategy.toNextBuildStrategy().getIncrementalState(oldProgram);
99 ticket = core_1.incrementalFromStateTicket(oldProgram, oldState, program, this.options, strategy, programDriver, modifiedResourceFiles, perfRecorder, false, false);
100 }
101 this._compiler = core_1.NgCompiler.fromTicket(ticket, this.host);
102 return {
103 ignoreForDiagnostics: this._compiler.ignoreForDiagnostics,
104 ignoreForEmit: this._compiler.ignoreForEmit,
105 };
106 };
107 NgTscPlugin.prototype.getDiagnostics = function (file) {
108 if (file === undefined) {
109 return this.compiler.getDiagnostics();
110 }
111 return this.compiler.getDiagnosticsForFile(file, api_1.OptimizeFor.WholeProgram);
112 };
113 NgTscPlugin.prototype.getOptionDiagnostics = function () {
114 return this.compiler.getOptionDiagnostics();
115 };
116 NgTscPlugin.prototype.getNextProgram = function () {
117 return this.compiler.getCurrentProgram();
118 };
119 NgTscPlugin.prototype.createTransformers = function () {
120 // The plugin consumer doesn't know about our perf tracing system, so we consider the emit phase
121 // as beginning now.
122 this.compiler.perfRecorder.phase(perf_1.PerfPhase.TypeScriptEmit);
123 return this.compiler.prepareEmit().transformers;
124 };
125 return NgTscPlugin;
126 }());
127 exports.NgTscPlugin = NgTscPlugin;
128});
129//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNjX3BsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvdHNjX3BsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7O0lBSUgsNkRBQXlIO0lBRXpILDJFQUF1RjtJQUN2RiwyRUFBcUU7SUFDckUsNkRBQXFEO0lBQ3JELGlGQUF1RDtJQUN2RCwrREFBd0M7SUFDeEMscUVBQTRDO0lBMkM1Qzs7T0FFRztJQUNIO1FBY0UscUJBQW9CLFNBQWE7WUFBYixjQUFTLEdBQVQsU0FBUyxDQUFJO1lBYmpDLFNBQUksR0FBRyxPQUFPLENBQUM7WUFFUCxZQUFPLEdBQTJCLElBQUksQ0FBQztZQUN2QyxTQUFJLEdBQXdCLElBQUksQ0FBQztZQUNqQyxjQUFTLEdBQW9CLElBQUksQ0FBQztZQVV4QywyQkFBYSxDQUFDLElBQUksOEJBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFURCxzQkFBSSxpQ0FBUTtpQkFBWjtnQkFDRSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxFQUFFO29CQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7aUJBQzlFO2dCQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUN4QixDQUFDOzs7V0FBQTtRQU1ELDhCQUFRLEdBQVIsVUFDSSxJQUFpRCxFQUFFLFVBQTZCLEVBQ2hGLE9BQTJCO1lBQzdCLDRGQUE0RjtZQUM1Rix1RkFBdUY7WUFDdkYsMkJBQTJCO1lBQzNCLElBQUksQ0FBQyxPQUFPLEdBQUcsc0NBQUksSUFBSSxDQUFDLFNBQVMsR0FBSyxPQUFPLENBQXNCLENBQUM7WUFDcEUsSUFBSSxDQUFDLElBQUksR0FBRyxxQkFBYyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLEVB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LEVBQUUsaUJBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM3RSxDQUFDO1FBRUQsMENBQW9CLEdBQXBCO1lBQ0UsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDOUMsQ0FBQztRQUVELG9DQUFjLEdBQWQ7WUFDRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMzQyxDQUFDO1FBRUQsd0NBQWtCLEdBQWxCO1lBQ0UsZ0dBQWdHO1lBQ2hHLG9CQUFvQjtZQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsZ0JBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMzRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsWUFBWSxDQUFDO1FBQ2xELENBQUM7UUFDSCxrQkFBQztJQUFELENBQUMsQUFoR0QsSUFnR0M7SUFoR1ksa0NBQVciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7Q29tcGlsYXRpb25UaWNrZXQsIGZyZXNoQ29tcGlsYXRpb25UaWNrZXQsIGluY3JlbWVudGFsRnJvbVN0YXRlVGlja2V0LCBOZ0NvbXBpbGVyLCBOZ0NvbXBpbGVySG9zdH0gZnJvbSAnLi9jb3JlJztcbmltcG9ydCB7TmdDb21waWxlck9wdGlvbnMsIFVuaWZpZWRNb2R1bGVzSG9zdH0gZnJvbSAnLi9jb3JlL2FwaSc7XG5pbXBvcnQge0Fic29sdXRlRnNQYXRoLCBOb2RlSlNGaWxlU3lzdGVtLCByZXNvbHZlLCBzZXRGaWxlU3lzdGVtfSBmcm9tICcuL2ZpbGVfc3lzdGVtJztcbmltcG9ydCB7UGF0Y2hlZFByb2dyYW1JbmNyZW1lbnRhbEJ1aWxkU3RyYXRlZ3l9IGZyb20gJy4vaW5jcmVtZW50YWwnO1xuaW1wb3J0IHtBY3RpdmVQZXJmUmVjb3JkZXIsIFBlcmZQaGFzZX0gZnJvbSAnLi9wZXJmJztcbmltcG9ydCB7VHNDcmVhdGVQcm9ncmFtRHJpdmVyfSBmcm9tICcuL3Byb2dyYW1fZHJpdmVyJztcbmltcG9ydCB7dW50YWdBbGxUc0ZpbGVzfSBmcm9tICcuL3NoaW1zJztcbmltcG9ydCB7T3B0aW1pemVGb3J9IGZyb20gJy4vdHlwZWNoZWNrL2FwaSc7XG5cbi8vIFRoZSBmb2xsb3dpbmcgaXMgbmVlZGVkIHRvIGZpeCBhIHRoZSBjaGlja2VuLWFuZC1lZ2cgaXNzdWUgd2hlcmUgdGhlIHN5bmMgKGludG8gZzMpIHNjcmlwdCB3aWxsXG4vLyByZWZ1c2UgdG8gYWNjZXB0IHRoaXMgZmlsZSB1bmxlc3MgdGhlIGZvbGxvd2luZyBzdHJpbmcgYXBwZWFyczpcbi8vIGltcG9ydCAqIGFzIHBsdWdpbiBmcm9tICdAYmF6ZWwvdHlwZXNjcmlwdC9pbnRlcm5hbC90c2Nfd3JhcHBlZC9wbHVnaW5fYXBpJztcblxuLyoqXG4gKiBBIGB0cy5Db21waWxlckhvc3RgIHdoaWNoIGFsc28gcmV0dXJucyBhIGxpc3Qgb2YgaW5wdXQgZmlsZXMsIG91dCBvZiB3aGljaCB0aGUgYHRzLlByb2dyYW1gXG4gKiBzaG91bGQgYmUgY3JlYXRlZC5cbiAqXG4gKiBDdXJyZW50bHkgbWlycm9yZWQgZnJvbSBAYmF6ZWwvdHlwZXNjcmlwdC9pbnRlcm5hbC90c2Nfd3JhcHBlZC9wbHVnaW5fYXBpICh3aXRoIHRoZSBuYW1pbmcgb2ZcbiAqIGBmaWxlTmFtZVRvTW9kdWxlTmFtZWAgY29ycmVjdGVkKS5cbiAqL1xuaW50ZXJmYWNlIFBsdWdpbkNvbXBpbGVySG9zdCBleHRlbmRzIHRzLkNvbXBpbGVySG9zdCwgUGFydGlhbDxVbmlmaWVkTW9kdWxlc0hvc3Q+IHtcbiAgcmVhZG9ubHkgaW5wdXRGaWxlczogUmVhZG9ubHlBcnJheTxzdHJpbmc+O1xufVxuXG4vKipcbiAqIE1pcnJvcnMgdGhlIHBsdWdpbiBpbnRlcmZhY2UgZnJvbSB0c2Nfd3JhcHBlZCB3aGljaCBpcyBjdXJyZW50bHkgdW5kZXIgYWN0aXZlIGRldmVsb3BtZW50LiBUb1xuICogZW5hYmxlIHByb2dyZXNzIHRvIGJlIG1hZGUgaW4gcGFyYWxsZWwsIHRoZSB1cHN0cmVhbSBpbnRlcmZhY2UgaXNuJ3QgaW1wbGVtZW50ZWQgZGlyZWN0bHkuXG4gKiBJbnN0ZWFkLCBgVHNjUGx1Z2luYCBoZXJlIGlzIHN0cnVjdHVyYWxseSBhc3NpZ25hYmxlIHRvIHdoYXQgdHNjX3dyYXBwZWQgZXhwZWN0cy5cbiAqL1xuaW50ZXJmYWNlIFRzY1BsdWdpbiB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICB3cmFwSG9zdChcbiAgICAgIGhvc3Q6IHRzLkNvbXBpbGVySG9zdCZQYXJ0aWFsPFVuaWZpZWRNb2R1bGVzSG9zdD4sIGlucHV0RmlsZXM6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPixcbiAgICAgIG9wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucyk6IFBsdWdpbkNvbXBpbGVySG9zdDtcblxuICBzZXR1cENvbXBpbGF0aW9uKHByb2dyYW06IHRzLlByb2dyYW0sIG9sZFByb2dyYW0/OiB0cy5Qcm9ncmFtKToge1xuICAgIGlnbm9yZUZvckRpYWdub3N0aWNzOiBTZXQ8dHMuU291cmNlRmlsZT4sXG4gICAgaWdub3JlRm9yRW1pdDogU2V0PHRzLlNvdXJjZUZpbGU+LFxuICB9O1xuXG4gIGdldERpYWdub3N0aWNzKGZpbGU/OiB0cy5Tb3VyY2VGaWxlKTogdHMuRGlhZ25vc3RpY1tdO1xuXG4gIGdldE9wdGlvbkRpYWdub3N0aWNzKCk6IHRzLkRpYWdub3N0aWNbXTtcblxuICBnZXROZXh0UHJvZ3JhbSgpOiB0cy5Qcm9ncmFtO1xuXG4gIGNyZWF0ZVRyYW5zZm9ybWVycygpOiB0cy5DdXN0b21UcmFuc2Zvcm1lcnM7XG59XG5cbi8qKlxuICogQSBwbHVnaW4gZm9yIGB0c2Nfd3JhcHBlZGAgd2hpY2ggYWxsb3dzIEFuZ3VsYXIgY29tcGlsYXRpb24gZnJvbSBhIHBsYWluIGB0c19saWJyYXJ5YC5cbiAqL1xuZXhwb3J0IGNsYXNzIE5nVHNjUGx1Z2luIGltcGxlbWVudHMgVHNjUGx1Z2luIHtcbiAgbmFtZSA9ICduZ3RzYyc7XG5cbiAgcHJpdmF0ZSBvcHRpb25zOiBOZ0NvbXBpbGVyT3B0aW9uc3xudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBob3N0OiBOZ0NvbXBpbGVySG9zdHxudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfY29tcGlsZXI6IE5nQ29tcGlsZXJ8bnVsbCA9IG51bGw7XG5cbiAgZ2V0IGNvbXBpbGVyKCk6IE5nQ29tcGlsZXIge1xuICAgIGlmICh0aGlzLl9jb21waWxlciA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdMaWZlY3ljbGUgZXJyb3I6IHNldHVwQ29tcGlsYXRpb24oKSBtdXN0IGJlIGNhbGxlZCBmaXJzdC4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NvbXBpbGVyO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ09wdGlvbnM6IHt9KSB7XG4gICAgc2V0RmlsZVN5c3RlbShuZXcgTm9kZUpTRmlsZVN5c3RlbSgpKTtcbiAgfVxuXG4gIHdyYXBIb3N0KFxuICAgICAgaG9zdDogdHMuQ29tcGlsZXJIb3N0JlBhcnRpYWw8VW5pZmllZE1vZHVsZXNIb3N0PiwgaW5wdXRGaWxlczogcmVhZG9ubHkgc3RyaW5nW10sXG4gICAgICBvcHRpb25zOiB0cy5Db21waWxlck9wdGlvbnMpOiBQbHVnaW5Db21waWxlckhvc3Qge1xuICAgIC8vIFRPRE8oYWx4aHViKTogRXZlbnR1YWxseSB0aGUgYHdyYXBIb3N0KClgIEFQSSB3aWxsIGFjY2VwdCB0aGUgb2xkIGB0cy5Qcm9ncmFtYCAoaWYgb25lIGlzXG4gICAgLy8gYXZhaWxhYmxlKS4gV2hlbiBpdCBkb2VzLCBpdHMgYHRzLlNvdXJjZUZpbGVgcyBuZWVkIHRvIGJlIHJlLXRhZ2dlZCB0byBlbmFibGUgcHJvcGVyXG4gICAgLy8gaW5jcmVtZW50YWwgY29tcGlsYXRpb24uXG4gICAgdGhpcy5vcHRpb25zID0gey4uLnRoaXMubmdPcHRpb25zLCAuLi5vcHRpb25zfSBhcyBOZ0NvbXBpbGVyT3B0aW9ucztcbiAgICB0aGlzLmhvc3QgPSBOZ0NvbXBpbGVySG9zdC53cmFwKGhvc3QsIGlucHV0RmlsZXMsIHRoaXMub3B0aW9ucywgLyogb2xkUHJvZ3JhbSAqLyBudWxsKTtcbiAgICByZXR1cm4gdGhpcy5ob3N0O1xuICB9XG5cbiAgc2V0dXBDb21waWxhdGlvbihwcm9ncmFtOiB0cy5Qcm9ncmFtLCBvbGRQcm9ncmFtPzogdHMuUHJvZ3JhbSk6IHtcbiAgICBpZ25vcmVGb3JEaWFnbm9zdGljczogU2V0PHRzLlNvdXJjZUZpbGU+LFxuICAgIGlnbm9yZUZvckVtaXQ6IFNldDx0cy5Tb3VyY2VGaWxlPixcbiAgfSB7XG4gICAgLy8gVE9ETyhhbHhodWIpOiB3ZSBwcm92aWRlIGEgYFBlcmZSZWNvcmRlcmAgdG8gdGhlIGNvbXBpbGVyLCBidXQgYmVjYXVzZSB3ZSdyZSBub3QgZHJpdmluZyB0aGVcbiAgICAvLyBjb21waWxhdGlvbiwgdGhlIGluZm9ybWF0aW9uIGNhcHR1cmVkIHdpdGhpbiBpdCBpcyBpbmNvbXBsZXRlLCBhbmQgbWF5IG5vdCBpbmNsdWRlIHRpbWluZ3NcbiAgICAvLyBmb3IgcGhhc2VzIHN1Y2ggYXMgZW1pdC5cbiAgICAvL1xuICAgIC8vIEFkZGl0aW9uYWxseSwgbm90aGluZyBhY3R1YWxseSBjYXB0dXJlcyB0aGUgcGVyZiByZXN1bHRzIGhlcmUsIHNvIHJlY29yZGluZyBzdGF0cyBhdCBhbGwgaXNcbiAgICAvLyBzb21ld2hhdCBtb290IGZvciBub3cgOilcbiAgICBjb25zdCBwZXJmUmVjb3JkZXIgPSBBY3RpdmVQZXJmUmVjb3JkZXIuemVyb2VkVG9Ob3coKTtcbiAgICBpZiAodGhpcy5ob3N0ID09PSBudWxsIHx8IHRoaXMub3B0aW9ucyA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdMaWZlY3ljbGUgZXJyb3I6IHNldHVwQ29tcGlsYXRpb24oKSBiZWZvcmUgd3JhcEhvc3QoKS4nKTtcbiAgICB9XG4gICAgdGhpcy5ob3N0LnBvc3RQcm9ncmFtQ3JlYXRpb25DbGVhbnVwKCk7XG4gICAgdW50YWdBbGxUc0ZpbGVzKHByb2dyYW0pO1xuICAgIGNvbnN0IHByb2dyYW1Ecml2ZXIgPSBuZXcgVHNDcmVhdGVQcm9ncmFtRHJpdmVyKFxuICAgICAgICBwcm9ncmFtLCB0aGlzLmhvc3QsIHRoaXMub3B0aW9ucywgdGhpcy5ob3N0LnNoaW1FeHRlbnNpb25QcmVmaXhlcyk7XG4gICAgY29uc3Qgc3RyYXRlZ3kgPSBuZXcgUGF0Y2hlZFByb2dyYW1JbmNyZW1lbnRhbEJ1aWxkU3RyYXRlZ3koKTtcbiAgICBjb25zdCBvbGRTdGF0ZSA9IG9sZFByb2dyYW0gIT09IHVuZGVmaW5lZCA/IHN0cmF0ZWd5LmdldEluY3JlbWVudGFsU3RhdGUob2xkUHJvZ3JhbSkgOiBudWxsO1xuICAgIGxldCB0aWNrZXQ6IENvbXBpbGF0aW9uVGlja2V0O1xuXG4gICAgY29uc3QgbW9kaWZpZWRSZXNvdXJjZUZpbGVzID0gbmV3IFNldDxBYnNvbHV0ZUZzUGF0aD4oKTtcbiAgICBpZiAodGhpcy5ob3N0LmdldE1vZGlmaWVkUmVzb3VyY2VGaWxlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IHJlc291cmNlRmlsZSBvZiB0aGlzLmhvc3QuZ2V0TW9kaWZpZWRSZXNvdXJjZUZpbGVzKCkgPz8gW10pIHtcbiAgICAgICAgbW9kaWZpZWRSZXNvdXJjZUZpbGVzLmFkZChyZXNvbHZlKHJlc291cmNlRmlsZSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvbGRQcm9ncmFtID09PSB1bmRlZmluZWQgfHwgb2xkU3RhdGUgPT09IG51bGwpIHtcbiAgICAgIHRpY2tldCA9IGZyZXNoQ29tcGlsYXRpb25UaWNrZXQoXG4gICAgICAgICAgcHJvZ3JhbSwgdGhpcy5vcHRpb25zLCBzdHJhdGVneSwgcHJvZ3JhbURyaXZlciwgcGVyZlJlY29yZGVyLFxuICAgICAgICAgIC8qIGVuYWJsZVRlbXBsYXRlVHlwZUNoZWNrZXIgKi8gZmFsc2UsIC8qIHVzZVBvaXNvbmVkRGF0YSAqLyBmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0cmF0ZWd5LnRvTmV4dEJ1aWxkU3RyYXRlZ3koKS5nZXRJbmNyZW1lbnRhbFN0YXRlKG9sZFByb2dyYW0pO1xuICAgICAgdGlja2V0ID0gaW5jcmVtZW50YWxGcm9tU3RhdGVUaWNrZXQoXG4gICAgICAgICAgb2xkUHJvZ3JhbSwgb2xkU3RhdGUsIHByb2dyYW0sIHRoaXMub3B0aW9ucywgc3RyYXRlZ3ksIHByb2dyYW1Ecml2ZXIsXG4gICAgICAgICAgbW9kaWZpZWRSZXNvdXJjZUZpbGVzLCBwZXJmUmVjb3JkZXIsIGZhbHNlLCBmYWxzZSk7XG4gICAgfVxuICAgIHRoaXMuX2NvbXBpbGVyID0gTmdDb21waWxlci5mcm9tVGlja2V0KHRpY2tldCwgdGhpcy5ob3N0KTtcbiAgICByZXR1cm4ge1xuICAgICAgaWdub3JlRm9yRGlhZ25vc3RpY3M6IHRoaXMuX2NvbXBpbGVyLmlnbm9yZUZvckRpYWdub3N0aWNzLFxuICAgICAgaWdub3JlRm9yRW1pdDogdGhpcy5fY29tcGlsZXIuaWdub3JlRm9yRW1pdCxcbiAgICB9O1xuICB9XG5cbiAgZ2V0RGlhZ25vc3RpY3MoZmlsZT86IHRzLlNvdXJjZUZpbGUpOiB0cy5EaWFnbm9zdGljW10ge1xuICAgIGlmIChmaWxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBpbGVyLmdldERpYWdub3N0aWNzKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbXBpbGVyLmdldERpYWdub3N0aWNzRm9yRmlsZShmaWxlLCBPcHRpbWl6ZUZvci5XaG9sZVByb2dyYW0pO1xuICB9XG5cbiAgZ2V0T3B0aW9uRGlhZ25vc3RpY3MoKTogdHMuRGlhZ25vc3RpY1tdIHtcbiAgICByZXR1cm4gdGhpcy5jb21waWxlci5nZXRPcHRpb25EaWFnbm9zdGljcygpO1xuICB9XG5cbiAgZ2V0TmV4dFByb2dyYW0oKTogdHMuUHJvZ3JhbSB7XG4gICAgcmV0dXJuIHRoaXMuY29tcGlsZXIuZ2V0Q3VycmVudFByb2dyYW0oKTtcbiAgfVxuXG4gIGNyZWF0ZVRyYW5zZm9ybWVycygpOiB0cy5DdXN0b21UcmFuc2Zvcm1lcnMge1xuICAgIC8vIFRoZSBwbHVnaW4gY29uc3VtZXIgZG9lc24ndCBrbm93IGFib3V0IG91ciBwZXJmIHRyYWNpbmcgc3lzdGVtLCBzbyB3ZSBjb25zaWRlciB0aGUgZW1pdCBwaGFzZVxuICAgIC8vIGFzIGJlZ2lubmluZyBub3cuXG4gICAgdGhpcy5jb21waWxlci5wZXJmUmVjb3JkZXIucGhhc2UoUGVyZlBoYXNlLlR5cGVTY3JpcHRFbWl0KTtcbiAgICByZXR1cm4gdGhpcy5jb21waWxlci5wcmVwYXJlRW1pdCgpLnRyYW5zZm9ybWVycztcbiAgfVxufVxuIl19
Note: See TracBrowser for help on using the repository browser.