@angular/compiler-cli 11.2.5 → 11.2.9
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/index.d.ts +1 -0
- package/index.js +5 -3
- package/linker/src/file_linker/partial_linkers/partial_linker_selector.d.ts +1 -1
- package/linker/src/file_linker/partial_linkers/partial_linker_selector.js +4 -4
- package/ngcc/src/analysis/decoration_analyzer.js +10 -8
- package/ngcc/src/execution/analyze_entry_points.js +10 -4
- package/ngcc/src/packages/build_marker.d.ts +1 -1
- package/ngcc/src/packages/build_marker.js +1 -1
- package/package.json +3 -3
- package/src/ngtsc/annotations/src/component.d.ts +4 -7
- package/src/ngtsc/annotations/src/component.js +107 -77
- package/src/ngtsc/annotations/src/directive.d.ts +3 -1
- package/src/ngtsc/annotations/src/directive.js +6 -3
- package/src/ngtsc/annotations/src/injectable.d.ts +3 -1
- package/src/ngtsc/annotations/src/injectable.js +6 -3
- package/src/ngtsc/annotations/src/ng_module.d.ts +3 -1
- package/src/ngtsc/annotations/src/ng_module.js +6 -3
- package/src/ngtsc/annotations/src/pipe.d.ts +3 -1
- package/src/ngtsc/annotations/src/pipe.js +6 -3
- package/src/ngtsc/core/api/src/options.d.ts +2 -3
- package/src/ngtsc/core/api/src/options.js +1 -1
- package/src/ngtsc/core/src/compiler.d.ts +19 -8
- package/src/ngtsc/core/src/compiler.js +222 -165
- package/src/ngtsc/cycles/src/imports.d.ts +3 -1
- package/src/ngtsc/cycles/src/imports.js +35 -30
- package/src/ngtsc/diagnostics/src/error_code.d.ts +7 -1
- package/src/ngtsc/diagnostics/src/error_code.js +10 -4
- package/src/ngtsc/incremental/src/state.d.ts +2 -1
- package/src/ngtsc/incremental/src/state.js +134 -129
- package/src/ngtsc/perf/index.d.ts +2 -2
- package/src/ngtsc/perf/index.js +8 -5
- package/src/ngtsc/perf/src/api.d.ts +300 -5
- package/src/ngtsc/perf/src/api.js +268 -1
- package/src/ngtsc/perf/src/noop.d.ts +7 -0
- package/src/ngtsc/perf/src/noop.js +25 -10
- package/src/ngtsc/perf/src/recorder.d.ts +58 -0
- package/src/ngtsc/perf/src/recorder.js +143 -0
- package/src/ngtsc/program.d.ts +0 -2
- package/src/ngtsc/program.js +138 -122
- package/src/ngtsc/transform/src/compilation.js +6 -4
- package/src/ngtsc/transform/src/transform.d.ts +2 -1
- package/src/ngtsc/transform/src/transform.js +5 -4
- package/src/ngtsc/tsc_plugin.js +14 -4
- package/src/ngtsc/typecheck/api/api.d.ts +27 -0
- package/src/ngtsc/typecheck/api/api.js +1 -1
- package/src/ngtsc/typecheck/src/checker.d.ts +3 -1
- package/src/ngtsc/typecheck/src/checker.js +132 -110
- package/src/ngtsc/typecheck/src/context.d.ts +3 -1
- package/src/ngtsc/typecheck/src/context.js +31 -30
- package/src/ngtsc/typecheck/src/environment.d.ts +1 -1
- package/src/ngtsc/typecheck/src/environment.js +1 -1
- package/src/ngtsc/typecheck/src/oob.d.ts +6 -0
- package/src/ngtsc/typecheck/src/oob.js +36 -1
- package/src/ngtsc/typecheck/src/type_check_block.js +107 -23
- package/src/ngtsc/typecheck/src/type_check_file.d.ts +1 -1
- package/src/ngtsc/typecheck/src/type_check_file.js +3 -3
- package/src/perform_compile.js +16 -10
- package/src/version.js +1 -1
- package/src/ngtsc/perf/src/tracking.d.ts +0 -33
- package/src/ngtsc/perf/src/tracking.js +0 -103
|
@@ -28,7 +28,7 @@ export declare class TypeCheckFile extends Environment {
|
|
|
28
28
|
private tcbStatements;
|
|
29
29
|
constructor(fileName: AbsoluteFsPath, config: TypeCheckingConfig, refEmitter: ReferenceEmitter, reflector: ReflectionHost, compilerHost: Pick<ts.CompilerHost, 'getCanonicalFileName'>);
|
|
30
30
|
addTypeCheckBlock(ref: Reference<ClassDeclaration<ts.ClassDeclaration>>, meta: TypeCheckBlockMetadata, domSchemaChecker: DomSchemaChecker, oobRecorder: OutOfBandDiagnosticRecorder): void;
|
|
31
|
-
render(): string;
|
|
31
|
+
render(removeComments: boolean): string;
|
|
32
32
|
getPreludeStatements(): ts.Statement[];
|
|
33
33
|
}
|
|
34
34
|
export declare function typeCheckFilePath(rootDirs: AbsoluteFsPath[]): AbsoluteFsPath;
|
|
@@ -46,13 +46,13 @@
|
|
|
46
46
|
var fn = type_check_block_1.generateTypeCheckBlock(this, ref, fnId, meta, domSchemaChecker, oobRecorder);
|
|
47
47
|
this.tcbStatements.push(fn);
|
|
48
48
|
};
|
|
49
|
-
TypeCheckFile.prototype.render = function () {
|
|
49
|
+
TypeCheckFile.prototype.render = function (removeComments) {
|
|
50
50
|
var e_1, _a, e_2, _b, e_3, _c;
|
|
51
51
|
var source = this.importManager.getAllImports(this.contextFile.fileName)
|
|
52
52
|
.map(function (i) { return "import * as " + i.qualifier.text + " from '" + i.specifier + "';"; })
|
|
53
53
|
.join('\n') +
|
|
54
54
|
'\n\n';
|
|
55
|
-
var printer = ts.createPrinter();
|
|
55
|
+
var printer = ts.createPrinter({ removeComments: removeComments });
|
|
56
56
|
source += '\n';
|
|
57
57
|
try {
|
|
58
58
|
for (var _d = tslib_1.__values(this.pipeInstStatements), _e = _d.next(); !_e.done; _e = _d.next()) {
|
|
@@ -112,4 +112,4 @@
|
|
|
112
112
|
}
|
|
113
113
|
exports.typeCheckFilePath = typeCheckFilePath;
|
|
114
114
|
});
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZV9jaGVja19maWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy90eXBlY2hlY2svc3JjL3R5cGVfY2hlY2tfZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0lBQUE7Ozs7OztPQU1HO0lBQ0gsK0JBQWlDO0lBRWpDLDJFQUF1RDtJQUN2RCxtRUFBOEU7SUFFOUUseUVBQStDO0lBSS9DLHlGQUEwQztJQUUxQyxtR0FBMEQ7SUFJMUQ7Ozs7Ozs7T0FPRztJQUNIO1FBQW1DLHlDQUFXO1FBSTVDLHVCQUNhLFFBQXdCLEVBQUUsTUFBMEIsRUFBRSxVQUE0QixFQUMzRixTQUF5QixFQUFFLFlBQTJEO1lBRjFGLFlBR0Usa0JBQ0ksTUFBTSxFQUFFLElBQUksMEJBQWEsQ0FBQyxJQUFJLDRCQUFrQixFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFDL0UsRUFBRSxDQUFDLGdCQUFnQixDQUNmLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsU0FDeEY7WUFOWSxjQUFRLEdBQVIsUUFBUSxDQUFnQjtZQUo3QixlQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsbUJBQWEsR0FBbUIsRUFBRSxDQUFDOztRQVMzQyxDQUFDO1FBRUQseUNBQWlCLEdBQWpCLFVBQ0ksR0FBcUQsRUFBRSxJQUE0QixFQUNuRixnQkFBa0MsRUFBRSxXQUF3QztZQUM5RSxJQUFNLElBQUksR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBTyxJQUFJLENBQUMsU0FBUyxFQUFJLENBQUMsQ0FBQztZQUM1RCxJQUFNLEVBQUUsR0FBRyx5Q0FBc0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDeEYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUVELDhCQUFNLEdBQU4sVUFBTyxjQUF1Qjs7WUFDNUIsSUFBSSxNQUFNLEdBQVcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7aUJBQ3RELEdBQUcsQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLGlCQUFlLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxlQUFVLENBQUMsQ0FBQyxTQUFTLE9BQUksRUFBeEQsQ0FBd0QsQ0FBQztpQkFDbEUsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDaEMsTUFBTSxDQUFDO1lBQ1gsSUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFDLGNBQWMsZ0JBQUEsRUFBQyxDQUFDLENBQUM7WUFDbkQsTUFBTSxJQUFJLElBQUksQ0FBQzs7Z0JBQ2YsS0FBbUIsSUFBQSxLQUFBLGlCQUFBLElBQUksQ0FBQyxrQkFBa0IsQ0FBQSxnQkFBQSw0QkFBRTtvQkFBdkMsSUFBTSxJQUFJLFdBQUE7b0JBQ2IsTUFBTSxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUM7aUJBQ3JGOzs7Ozs7Ozs7O2dCQUNELEtBQW1CLElBQUEsS0FBQSxpQkFBQSxJQUFJLENBQUMsa0JBQWtCLENBQUEsZ0JBQUEsNEJBQUU7b0JBQXZDLElBQU0sSUFBSSxXQUFBO29CQUNiLE1BQU0sSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDO2lCQUNyRjs7Ozs7Ozs7O1lBQ0QsTUFBTSxJQUFJLElBQUksQ0FBQzs7Z0JBQ2YsS0FBbUIsSUFBQSxLQUFBLGlCQUFBLElBQUksQ0FBQyxhQUFhLENBQUEsZ0JBQUEsNEJBQUU7b0JBQWxDLElBQU0sSUFBSSxXQUFBO29CQUNiLE1BQU0sSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDO2lCQUNyRjs7Ozs7Ozs7O1lBRUQsOEZBQThGO1lBQzlGLDhGQUE4RjtZQUM5RixvREFBb0Q7WUFDcEQsTUFBTSxJQUFJLHNDQUFzQyxDQUFDO1lBRWpELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFFRCw0Q0FBb0IsR0FBcEI7WUFDRSxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDSCxvQkFBQztJQUFELENBQUMsQUFsREQsQ0FBbUMseUJBQVcsR0FrRDdDO0lBbERZLHNDQUFhO0lBb0QxQixTQUFnQixpQkFBaUIsQ0FBQyxRQUEwQjtRQUMxRCxJQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFDLENBQUMsRUFBRSxDQUFDLElBQUssT0FBQSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQW5CLENBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RSxPQUFPLGtCQUFJLENBQUMsUUFBUSxFQUFFLHFCQUFxQixDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUhELDhDQUdDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtBYnNvbHV0ZUZzUGF0aCwgam9pbn0gZnJvbSAnLi4vLi4vZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtOb29wSW1wb3J0UmV3cml0ZXIsIFJlZmVyZW5jZSwgUmVmZXJlbmNlRW1pdHRlcn0gZnJvbSAnLi4vLi4vaW1wb3J0cyc7XG5pbXBvcnQge0NsYXNzRGVjbGFyYXRpb24sIFJlZmxlY3Rpb25Ib3N0fSBmcm9tICcuLi8uLi9yZWZsZWN0aW9uJztcbmltcG9ydCB7SW1wb3J0TWFuYWdlcn0gZnJvbSAnLi4vLi4vdHJhbnNsYXRvcic7XG5pbXBvcnQge1R5cGVDaGVja0Jsb2NrTWV0YWRhdGEsIFR5cGVDaGVja2luZ0NvbmZpZ30gZnJvbSAnLi4vYXBpJztcblxuaW1wb3J0IHtEb21TY2hlbWFDaGVja2VyfSBmcm9tICcuL2RvbSc7XG5pbXBvcnQge0Vudmlyb25tZW50fSBmcm9tICcuL2Vudmlyb25tZW50JztcbmltcG9ydCB7T3V0T2ZCYW5kRGlhZ25vc3RpY1JlY29yZGVyfSBmcm9tICcuL29vYic7XG5pbXBvcnQge2dlbmVyYXRlVHlwZUNoZWNrQmxvY2t9IGZyb20gJy4vdHlwZV9jaGVja19ibG9jayc7XG5cblxuXG4vKipcbiAqIEFuIGBFbnZpcm9ubWVudGAgcmVwcmVzZW50aW5nIHRoZSBzaW5nbGUgdHlwZS1jaGVja2luZyBmaWxlIGludG8gd2hpY2ggbW9zdCAoaWYgbm90IGFsbCkgVHlwZVxuICogQ2hlY2sgQmxvY2tzIChUQ0JzKSB3aWxsIGJlIGdlbmVyYXRlZC5cbiAqXG4gKiBUaGUgYFR5cGVDaGVja0ZpbGVgIGhvc3RzIG11bHRpcGxlIFRDQnMgYW5kIGFsbG93cyB0aGUgc2hhcmluZyBvZiBkZWNsYXJhdGlvbnMgKGUuZy4gdHlwZVxuICogY29uc3RydWN0b3JzKSBiZXR3ZWVuIHRoZW0uIFJhdGhlciB0aGFuIHJldHVybiBzdWNoIGRlY2xhcmF0aW9ucyB2aWEgYGdldFByZWx1ZGVTdGF0ZW1lbnRzKClgLCBpdFxuICogaG9pc3RzIHRoZW0gdG8gdGhlIHRvcCBvZiB0aGUgZ2VuZXJhdGVkIGB0cy5Tb3VyY2VGaWxlYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVDaGVja0ZpbGUgZXh0ZW5kcyBFbnZpcm9ubWVudCB7XG4gIHByaXZhdGUgbmV4dFRjYklkID0gMTtcbiAgcHJpdmF0ZSB0Y2JTdGF0ZW1lbnRzOiB0cy5TdGF0ZW1lbnRbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcmVhZG9ubHkgZmlsZU5hbWU6IEFic29sdXRlRnNQYXRoLCBjb25maWc6IFR5cGVDaGVja2luZ0NvbmZpZywgcmVmRW1pdHRlcjogUmVmZXJlbmNlRW1pdHRlcixcbiAgICAgIHJlZmxlY3RvcjogUmVmbGVjdGlvbkhvc3QsIGNvbXBpbGVySG9zdDogUGljazx0cy5Db21waWxlckhvc3QsICdnZXRDYW5vbmljYWxGaWxlTmFtZSc+KSB7XG4gICAgc3VwZXIoXG4gICAgICAgIGNvbmZpZywgbmV3IEltcG9ydE1hbmFnZXIobmV3IE5vb3BJbXBvcnRSZXdyaXRlcigpLCAnaScpLCByZWZFbWl0dGVyLCByZWZsZWN0b3IsXG4gICAgICAgIHRzLmNyZWF0ZVNvdXJjZUZpbGUoXG4gICAgICAgICAgICBjb21waWxlckhvc3QuZ2V0Q2Fub25pY2FsRmlsZU5hbWUoZmlsZU5hbWUpLCAnJywgdHMuU2NyaXB0VGFyZ2V0LkxhdGVzdCwgdHJ1ZSkpO1xuICB9XG5cbiAgYWRkVHlwZUNoZWNrQmxvY2soXG4gICAgICByZWY6IFJlZmVyZW5jZTxDbGFzc0RlY2xhcmF0aW9uPHRzLkNsYXNzRGVjbGFyYXRpb24+PiwgbWV0YTogVHlwZUNoZWNrQmxvY2tNZXRhZGF0YSxcbiAgICAgIGRvbVNjaGVtYUNoZWNrZXI6IERvbVNjaGVtYUNoZWNrZXIsIG9vYlJlY29yZGVyOiBPdXRPZkJhbmREaWFnbm9zdGljUmVjb3JkZXIpOiB2b2lkIHtcbiAgICBjb25zdCBmbklkID0gdHMuY3JlYXRlSWRlbnRpZmllcihgX3RjYiR7dGhpcy5uZXh0VGNiSWQrK31gKTtcbiAgICBjb25zdCBmbiA9IGdlbmVyYXRlVHlwZUNoZWNrQmxvY2sodGhpcywgcmVmLCBmbklkLCBtZXRhLCBkb21TY2hlbWFDaGVja2VyLCBvb2JSZWNvcmRlcik7XG4gICAgdGhpcy50Y2JTdGF0ZW1lbnRzLnB1c2goZm4pO1xuICB9XG5cbiAgcmVuZGVyKHJlbW92ZUNvbW1lbnRzOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICBsZXQgc291cmNlOiBzdHJpbmcgPSB0aGlzLmltcG9ydE1hbmFnZXIuZ2V0QWxsSW1wb3J0cyh0aGlzLmNvbnRleHRGaWxlLmZpbGVOYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKGkgPT4gYGltcG9ydCAqIGFzICR7aS5xdWFsaWZpZXIudGV4dH0gZnJvbSAnJHtpLnNwZWNpZmllcn0nO2ApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCdcXG4nKSArXG4gICAgICAgICdcXG5cXG4nO1xuICAgIGNvbnN0IHByaW50ZXIgPSB0cy5jcmVhdGVQcmludGVyKHtyZW1vdmVDb21tZW50c30pO1xuICAgIHNvdXJjZSArPSAnXFxuJztcbiAgICBmb3IgKGNvbnN0IHN0bXQgb2YgdGhpcy5waXBlSW5zdFN0YXRlbWVudHMpIHtcbiAgICAgIHNvdXJjZSArPSBwcmludGVyLnByaW50Tm9kZSh0cy5FbWl0SGludC5VbnNwZWNpZmllZCwgc3RtdCwgdGhpcy5jb250ZXh0RmlsZSkgKyAnXFxuJztcbiAgICB9XG4gICAgZm9yIChjb25zdCBzdG10IG9mIHRoaXMudHlwZUN0b3JTdGF0ZW1lbnRzKSB7XG4gICAgICBzb3VyY2UgKz0gcHJpbnRlci5wcmludE5vZGUodHMuRW1pdEhpbnQuVW5zcGVjaWZpZWQsIHN0bXQsIHRoaXMuY29udGV4dEZpbGUpICsgJ1xcbic7XG4gICAgfVxuICAgIHNvdXJjZSArPSAnXFxuJztcbiAgICBmb3IgKGNvbnN0IHN0bXQgb2YgdGhpcy50Y2JTdGF0ZW1lbnRzKSB7XG4gICAgICBzb3VyY2UgKz0gcHJpbnRlci5wcmludE5vZGUodHMuRW1pdEhpbnQuVW5zcGVjaWZpZWQsIHN0bXQsIHRoaXMuY29udGV4dEZpbGUpICsgJ1xcbic7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIHRoZSB0ZW1wbGF0ZSB0eXBlLWNoZWNraW5nIGZpbGUgaXMgYW4gRVMgbW9kdWxlLiBPdGhlcndpc2UsIGl0J3MgaW50ZXJwcmV0ZWQgYXMgc29tZVxuICAgIC8vIGtpbmQgb2YgZ2xvYmFsIG5hbWVzcGFjZSBpbiBUUywgd2hpY2ggZm9yY2VzIGEgZnVsbCByZS10eXBlY2hlY2sgb2YgdGhlIHVzZXIncyBwcm9ncmFtIHRoYXRcbiAgICAvLyBpcyBzb21laG93IG1vcmUgZXhwZW5zaXZlIHRoYW4gdGhlIGluaXRpYWwgcGFyc2UuXG4gICAgc291cmNlICs9ICdcXG5leHBvcnQgY29uc3QgSVNfQV9NT0RVTEUgPSB0cnVlO1xcbic7XG5cbiAgICByZXR1cm4gc291cmNlO1xuICB9XG5cbiAgZ2V0UHJlbHVkZVN0YXRlbWVudHMoKTogdHMuU3RhdGVtZW50W10ge1xuICAgIHJldHVybiBbXTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUNoZWNrRmlsZVBhdGgocm9vdERpcnM6IEFic29sdXRlRnNQYXRoW10pOiBBYnNvbHV0ZUZzUGF0aCB7XG4gIGNvbnN0IHNob3J0ZXN0ID0gcm9vdERpcnMuY29uY2F0KFtdKS5zb3J0KChhLCBiKSA9PiBhLmxlbmd0aCAtIGIubGVuZ3RoKVswXTtcbiAgcmV0dXJuIGpvaW4oc2hvcnRlc3QsICdfX25nX3R5cGVjaGVja19fLnRzJyk7XG59XG4iXX0=
|
package/src/perform_compile.js
CHANGED
|
@@ -208,24 +208,30 @@
|
|
|
208
208
|
};
|
|
209
209
|
}
|
|
210
210
|
function getExtendedConfigPath(configFile, extendsValue, host, fs) {
|
|
211
|
-
var
|
|
211
|
+
var result = getExtendedConfigPathWorker(configFile, extendsValue, host, fs);
|
|
212
|
+
if (result !== null) {
|
|
213
|
+
return result;
|
|
214
|
+
}
|
|
215
|
+
// Try to resolve the paths with a json extension append a json extension to the file in case if
|
|
216
|
+
// it is missing and the resolution failed. This is to replicate TypeScript behaviour, see:
|
|
217
|
+
// https://github.com/microsoft/TypeScript/blob/294a5a7d784a5a95a8048ee990400979a6bc3a1c/src/compiler/commandLineParser.ts#L2806
|
|
218
|
+
return getExtendedConfigPathWorker(configFile, extendsValue + ".json", host, fs);
|
|
219
|
+
}
|
|
220
|
+
function getExtendedConfigPathWorker(configFile, extendsValue, host, fs) {
|
|
212
221
|
if (extendsValue.startsWith('.') || fs.isRooted(extendsValue)) {
|
|
213
|
-
extendedConfigPath = host.resolve(host.dirname(configFile), extendsValue);
|
|
214
|
-
|
|
215
|
-
extendedConfigPath
|
|
216
|
-
|
|
222
|
+
var extendedConfigPath = host.resolve(host.dirname(configFile), extendsValue);
|
|
223
|
+
if (host.exists(extendedConfigPath)) {
|
|
224
|
+
return extendedConfigPath;
|
|
225
|
+
}
|
|
217
226
|
}
|
|
218
227
|
else {
|
|
219
228
|
var parseConfigHost = createParseConfigHost(host, fs);
|
|
220
229
|
// Path isn't a rooted or relative path, resolve like a module.
|
|
221
230
|
var resolvedModule = ts.nodeModuleNameResolver(extendsValue, configFile, { moduleResolution: ts.ModuleResolutionKind.NodeJs, resolveJsonModule: true }, parseConfigHost).resolvedModule;
|
|
222
231
|
if (resolvedModule) {
|
|
223
|
-
|
|
232
|
+
return file_system_1.absoluteFrom(resolvedModule.resolvedFileName);
|
|
224
233
|
}
|
|
225
234
|
}
|
|
226
|
-
if (extendedConfigPath !== null && host.exists(extendedConfigPath)) {
|
|
227
|
-
return extendedConfigPath;
|
|
228
|
-
}
|
|
229
235
|
return null;
|
|
230
236
|
}
|
|
231
237
|
function exitCodeFromResult(diags) {
|
|
@@ -313,4 +319,4 @@
|
|
|
313
319
|
return diags.some(function (d) { return d.category === ts.DiagnosticCategory.Error; });
|
|
314
320
|
}
|
|
315
321
|
});
|
|
316
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyZm9ybV9jb21waWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9wZXJmb3JtX2NvbXBpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7OztJQUVILDhDQUEwRDtJQUMxRCwrQkFBaUM7SUFFakMsMkVBQXdJO0lBR3hJLDJFQUE0RDtJQUM1RCxnRUFBMEM7SUFDMUMsd0VBQWtEO0lBQ2xELG9FQUE0RDtJQUk1RCxTQUFnQix1QkFBdUIsQ0FBQyxXQUF3QjtRQUM5RCxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQTVDLENBQTRDLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRkQsMERBRUM7SUFFRCxJQUFNLGlCQUFpQixHQUE2QjtRQUNsRCxtQkFBbUIsRUFBRSxjQUFNLE9BQUEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxFQUE1QixDQUE0QjtRQUN2RCxvQkFBb0IsRUFBRSxVQUFBLFFBQVEsSUFBSSxPQUFBLFFBQVEsRUFBUixDQUFRO1FBQzFDLFVBQVUsRUFBRSxjQUFNLE9BQUEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQWQsQ0FBYztLQUNqQyxDQUFDO0lBRUYsU0FBUyxlQUFlLENBQUMsUUFBZ0IsRUFBRSxJQUE4QjtRQUN2RSxPQUFPLHNCQUFRLENBQ1gscUJBQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxFQUFFLHFCQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQsU0FBZ0Isd0JBQXdCLENBQ3BDLFFBQWtCLEVBQUUsSUFBa0Q7UUFBbEQscUJBQUEsRUFBQSx3QkFB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O1FBQ2pDLDhCQUE4QjtRQUM5QixxQkFBcUIsR0FBRyxxQkFBcUI7WUFDekMsZ0JBQWdCLGtCQUFLLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxFQUFLLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLENBQUM7UUFFakcsOEJBQThCO1FBQzlCLHFCQUFxQjtZQUNqQixxQkFBcUIsSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMseUJBQXlCLEVBQWlCLENBQUMsQ0FBQztRQUVsRyw4REFBOEQ7UUFDOUQscUJBQXFCO1lBQ2pCLHFCQUFxQjtnQkFDckIsZ0JBQWdCLGtCQUNSLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxFQUFLLE9BQU8sQ0FBQywwQkFBMEIsRUFBRSxFQUFFLENBQUM7UUFFMUYscUNBQXFDO1FBQ3JDLHFCQUFxQjtZQUNqQixxQkFBcUIsSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLEVBQWlCLENBQUMsQ0FBQztRQUVqRyxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBL0JELDREQStCQztJQUVELFNBQVMsU0FBUyxDQUFDLEtBQWtCO1FBQ25DLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxRQUFRLEtBQUssRUFBRSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBMUMsQ0FBMEMsQ0FBQyxDQUFDO0lBQ3JFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtpc1N5bnRheEVycm9yLCBQb3NpdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7YWJzb2x1dGVGcm9tLCBBYnNvbHV0ZUZzUGF0aCwgRmlsZVN5c3RlbSwgZ2V0RmlsZVN5c3RlbSwgUmVhZG9ubHlGaWxlU3lzdGVtLCByZWxhdGl2ZSwgcmVzb2x2ZX0gZnJvbSAnLi4vc3JjL25ndHNjL2ZpbGVfc3lzdGVtJztcbmltcG9ydCB7TmdDb21waWxlck9wdGlvbnN9IGZyb20gJy4vbmd0c2MvY29yZS9hcGknO1xuXG5pbXBvcnQge3JlcGxhY2VUc1dpdGhOZ0luRXJyb3JzfSBmcm9tICcuL25ndHNjL2RpYWdub3N0aWNzJztcbmltcG9ydCAqIGFzIGFwaSBmcm9tICcuL3RyYW5zZm9ybWVycy9hcGknO1xuaW1wb3J0ICogYXMgbmcgZnJvbSAnLi90cmFuc2Zvcm1lcnMvZW50cnlfcG9pbnRzJztcbmltcG9ydCB7Y3JlYXRlTWVzc2FnZURpYWdub3N0aWN9IGZyb20gJy4vdHJhbnNmb3JtZXJzL3V0aWwnO1xuXG5leHBvcnQgdHlwZSBEaWFnbm9zdGljcyA9IFJlYWRvbmx5QXJyYXk8dHMuRGlhZ25vc3RpY3xhcGkuRGlhZ25vc3RpYz47XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJFcnJvcnNBbmRXYXJuaW5ncyhkaWFnbm9zdGljczogRGlhZ25vc3RpY3MpOiBEaWFnbm9zdGljcyB7XG4gIHJldHVybiBkaWFnbm9zdGljcy5maWx0ZXIoZCA9PiBkLmNhdGVnb3J5ICE9PSB0cy5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSk7XG59XG5cbmNvbnN0IGRlZmF1bHRGb3JtYXRIb3N0OiB0cy5Gb3JtYXREaWFnbm9zdGljc0hvc3QgPSB7XG4gIGdldEN1cnJlbnREaXJlY3Rvcnk6ICgpID0+IHRzLnN5cy5nZXRDdXJyZW50RGlyZWN0b3J5KCksXG4gIGdldENhbm9uaWNhbEZpbGVOYW1lOiBmaWxlTmFtZSA9PiBmaWxlTmFtZSxcbiAgZ2V0TmV3TGluZTogKCkgPT4gdHMuc3lzLm5ld0xpbmVcbn07XG5cbmZ1bmN0aW9uIGRpc3BsYXlGaWxlTmFtZShmaWxlTmFtZTogc3RyaW5nLCBob3N0OiB0cy5Gb3JtYXREaWFnbm9zdGljc0hvc3QpOiBzdHJpbmcge1xuICByZXR1cm4gcmVsYXRpdmUoXG4gICAgICByZXNvbHZlKGhvc3QuZ2V0Q3VycmVudERpcmVjdG9yeSgpKSwgcmVzb2x2ZShob3N0LmdldENhbm9uaWNhbEZpbGVOYW1lKGZpbGVOYW1lKSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RGlhZ25vc3RpY1Bvc2l0aW9uKFxuICAgIHBvc2l0aW9uOiBQb3NpdGlvbiwgaG9zdDogdHMuRm9ybWF0RGlhZ25vc3RpY3NIb3N0ID0gZGVmYXVsdEZvcm1hdEhvc3QpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7ZGlzcGxheUZpbGVOYW1lKHBvc2l0aW9uLmZpbGVOYW1lLCBob3N0KX0oJHtwb3NpdGlvbi5saW5lICsgMX0sJHtwb3NpdGlvbi5jb2x1bW4gKyAxfSlgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmxhdHRlbkRpYWdub3N0aWNNZXNzYWdlQ2hhaW4oXG4gICAgY2hhaW46IGFwaS5EaWFnbm9zdGljTWVzc2FnZUNoYWluLCBob3N0OiB0cy5Gb3JtYXREaWFnbm9zdGljc0hvc3QgPSBkZWZhdWx0Rm9ybWF0SG9zdCxcbiAgICBpbmRlbnQgPSAwKTogc3RyaW5nIHtcbiAgY29uc3QgbmV3TGluZSA9IGhvc3QuZ2V0TmV3TGluZSgpO1xuICBsZXQgcmVzdWx0ID0gJyc7XG4gIGlmIChpbmRlbnQpIHtcbiAgICByZXN1bHQgKz0gbmV3TGluZTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5kZW50OyBpKyspIHtcbiAgICAgIHJlc3VsdCArPSAnICAnO1xuICAgIH1cbiAgfVxuICByZXN1bHQgKz0gY2hhaW4ubWVzc2FnZVRleHQ7XG5cbiAgY29uc3QgcG9zaXRpb24gPSBjaGFpbi5wb3NpdGlvbjtcbiAgLy8gYWRkIHBvc2l0aW9uIGlmIGF2YWlsYWJsZSwgYW5kIHdlIGFyZSBub3QgYXQgdGhlIGRlcGVzdCBmcmFtZVxuICBpZiAocG9zaXRpb24gJiYgaW5kZW50ICE9PSAwKSB7XG4gICAgcmVzdWx0ICs9IGAgYXQgJHtmb3JtYXREaWFnbm9zdGljUG9zaXRpb24ocG9zaXRpb24sIGhvc3QpfWA7XG4gIH1cblxuICBpbmRlbnQrKztcbiAgaWYgKGNoYWluLm5leHQpIHtcbiAgICBmb3IgKGNvbnN0IGtpZCBvZiBjaGFpbi5uZXh0KSB7XG4gICAgICByZXN1bHQgKz0gZmxhdHRlbkRpYWdub3N0aWNNZXNzYWdlQ2hhaW4oa2lkLCBob3N0LCBpbmRlbnQpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RGlhZ25vc3RpYyhcbiAgICBkaWFnbm9zdGljOiBhcGkuRGlhZ25vc3RpYywgaG9zdDogdHMuRm9ybWF0RGlhZ25vc3RpY3NIb3N0ID0gZGVmYXVsdEZvcm1hdEhvc3QpIHtcbiAgbGV0IHJlc3VsdCA9ICcnO1xuICBjb25zdCBuZXdMaW5lID0gaG9zdC5nZXROZXdMaW5lKCk7XG4gIGNvbnN0IHNwYW4gPSBkaWFnbm9zdGljLnNwYW47XG4gIGlmIChzcGFuKSB7XG4gICAgcmVzdWx0ICs9IGAke1xuICAgICAgICBmb3JtYXREaWFnbm9zdGljUG9zaXRpb24oXG4gICAgICAgICAgICB7ZmlsZU5hbWU6IHNwYW4uc3RhcnQuZmlsZS51cmwsIGxpbmU6IHNwYW4uc3RhcnQubGluZSwgY29sdW1uOiBzcGFuLnN0YXJ0LmNvbH0sXG4gICAgICAgICAgICBob3N0KX06IGA7XG4gIH0gZWxzZSBpZiAoZGlhZ25vc3RpYy5wb3NpdGlvbikge1xuICAgIHJlc3VsdCArPSBgJHtmb3JtYXREaWFnbm9zdGljUG9zaXRpb24oZGlhZ25vc3RpYy5wb3NpdGlvbiwgaG9zdCl9OiBgO1xuICB9XG4gIGlmIChkaWFnbm9zdGljLnNwYW4gJiYgZGlhZ25vc3RpYy5zcGFuLmRldGFpbHMpIHtcbiAgICByZXN1bHQgKz0gYCR7ZGlhZ25vc3RpYy5zcGFuLmRldGFpbHN9LCAke2RpYWdub3N0aWMubWVzc2FnZVRleHR9JHtuZXdMaW5lfWA7XG4gIH0gZWxzZSBpZiAoZGlhZ25vc3RpYy5jaGFpbikge1xuICAgIHJlc3VsdCArPSBgJHtmbGF0dGVuRGlhZ25vc3RpY01lc3NhZ2VDaGFpbihkaWFnbm9zdGljLmNoYWluLCBob3N0KX0uJHtuZXdMaW5lfWA7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0ICs9IGAke2RpYWdub3N0aWMubWVzc2FnZVRleHR9JHtuZXdMaW5lfWA7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdERpYWdub3N0aWNzKFxuICAgIGRpYWdzOiBEaWFnbm9zdGljcywgaG9zdDogdHMuRm9ybWF0RGlhZ25vc3RpY3NIb3N0ID0gZGVmYXVsdEZvcm1hdEhvc3QpOiBzdHJpbmcge1xuICBpZiAoZGlhZ3MgJiYgZGlhZ3MubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGRpYWdzXG4gICAgICAgIC5tYXAoZGlhZ25vc3RpYyA9PiB7XG4gICAgICAgICAgaWYgKGFwaS5pc1RzRGlhZ25vc3RpYyhkaWFnbm9zdGljKSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VUc1dpdGhOZ0luRXJyb3JzKFxuICAgICAgICAgICAgICAgIHRzLmZvcm1hdERpYWdub3N0aWNzV2l0aENvbG9yQW5kQ29udGV4dChbZGlhZ25vc3RpY10sIGhvc3QpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdERpYWdub3N0aWMoZGlhZ25vc3RpYywgaG9zdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuam9pbignJyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG59XG5cbi8qKiBVc2VkIHRvIHJlYWQgY29uZmlndXJhdGlvbiBmaWxlcy4gKi9cbmV4cG9ydCB0eXBlIENvbmZpZ3VyYXRpb25Ib3N0ID0gUGljazxcbiAgICBSZWFkb25seUZpbGVTeXN0ZW0sICdyZWFkRmlsZSd8J2V4aXN0cyd8J2xzdGF0J3wncmVzb2x2ZSd8J2pvaW4nfCdkaXJuYW1lJ3wnZXh0bmFtZSd8J3B3ZCc+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlZENvbmZpZ3VyYXRpb24ge1xuICBwcm9qZWN0OiBzdHJpbmc7XG4gIG9wdGlvbnM6IGFwaS5Db21waWxlck9wdGlvbnM7XG4gIHJvb3ROYW1lczogc3RyaW5nW107XG4gIHByb2plY3RSZWZlcmVuY2VzPzogcmVhZG9ubHkgdHMuUHJvamVjdFJlZmVyZW5jZVtdfHVuZGVmaW5lZDtcbiAgZW1pdEZsYWdzOiBhcGkuRW1pdEZsYWdzO1xuICBlcnJvcnM6IHRzLkRpYWdub3N0aWNbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGNQcm9qZWN0RmlsZUFuZEJhc2VQYXRoKFxuICAgIHByb2plY3Q6IHN0cmluZywgaG9zdDogQ29uZmlndXJhdGlvbkhvc3QgPSBnZXRGaWxlU3lzdGVtKCkpOlxuICAgIHtwcm9qZWN0RmlsZTogQWJzb2x1dGVGc1BhdGgsIGJhc2VQYXRoOiBBYnNvbHV0ZUZzUGF0aH0ge1xuICBjb25zdCBhYnNQcm9qZWN0ID0gaG9zdC5yZXNvbHZlKHByb2plY3QpO1xuICBjb25zdCBwcm9qZWN0SXNEaXIgPSBob3N0LmxzdGF0KGFic1Byb2plY3QpLmlzRGlyZWN0b3J5KCk7XG4gIGNvbnN0IHByb2plY3RGaWxlID0gcHJvamVjdElzRGlyID8gaG9zdC5qb2luKGFic1Byb2plY3QsICd0c2NvbmZpZy5qc29uJykgOiBhYnNQcm9qZWN0O1xuICBjb25zdCBwcm9qZWN0RGlyID0gcHJvamVjdElzRGlyID8gYWJzUHJvamVjdCA6IGhvc3QuZGlybmFtZShhYnNQcm9qZWN0KTtcbiAgY29uc3QgYmFzZVBhdGggPSBob3N0LnJlc29sdmUocHJvamVjdERpcik7XG4gIHJldHVybiB7cHJvamVjdEZpbGUsIGJhc2VQYXRofTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRDb25maWd1cmF0aW9uKFxuICAgIHByb2plY3Q6IHN0cmluZywgZXhpc3RpbmdPcHRpb25zPzogYXBpLkNvbXBpbGVyT3B0aW9ucyxcbiAgICBob3N0OiBDb25maWd1cmF0aW9uSG9zdCA9IGdldEZpbGVTeXN0ZW0oKSk6IFBhcnNlZENvbmZpZ3VyYXRpb24ge1xuICB0cnkge1xuICAgIGNvbnN0IGZzID0gZ2V0RmlsZVN5c3RlbSgpO1xuXG4gICAgY29uc3QgcmVhZENvbmZpZ0ZpbGUgPSAoY29uZmlnRmlsZTogc3RyaW5nKSA9PlxuICAgICAgICB0cy5yZWFkQ29uZmlnRmlsZShjb25maWdGaWxlLCBmaWxlID0+IGhvc3QucmVhZEZpbGUoaG9zdC5yZXNvbHZlKGZpbGUpKSk7XG4gICAgY29uc3QgcmVhZEFuZ3VsYXJDb21waWxlck9wdGlvbnMgPVxuICAgICAgICAoY29uZmlnRmlsZTogc3RyaW5nLCBwYXJlbnRPcHRpb25zOiBOZ0NvbXBpbGVyT3B0aW9ucyA9IHt9KTogTmdDb21waWxlck9wdGlvbnMgPT4ge1xuICAgICAgICAgIGNvbnN0IHtjb25maWcsIGVycm9yfSA9IHJlYWRDb25maWdGaWxlKGNvbmZpZ0ZpbGUpO1xuXG4gICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAvLyBFcnJvcnMgYXJlIGhhbmRsZWQgbGF0ZXIgb24gYnkgJ3BhcnNlSnNvbkNvbmZpZ0ZpbGVDb250ZW50J1xuICAgICAgICAgICAgcmV0dXJuIHBhcmVudE9wdGlvbnM7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbnRvIG1lcmdpbmcgJ2FuZ3VsYXJDb21waWxlck9wdGlvbnMnIGFzXG4gICAgICAgICAgLy8gb3RoZXIgb3B0aW9ucyBsaWtlICdjb21waWxlck9wdGlvbnMnIGFyZSBtZXJnZWQgYnkgVFNcbiAgICAgICAgICBjb25zdCBleGlzdGluZ05nQ29tcGlsZXJPcHRpb25zID0gey4uLmNvbmZpZy5hbmd1bGFyQ29tcGlsZXJPcHRpb25zLCAuLi5wYXJlbnRPcHRpb25zfTtcblxuICAgICAgICAgIGlmIChjb25maWcuZXh0ZW5kcyAmJiB0eXBlb2YgY29uZmlnLmV4dGVuZHMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zdCBleHRlbmRlZENvbmZpZ1BhdGggPSBnZXRFeHRlbmRlZENvbmZpZ1BhdGgoXG4gICAgICAgICAgICAgICAgY29uZmlnRmlsZSwgY29uZmlnLmV4dGVuZHMsIGhvc3QsIGZzLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGV4dGVuZGVkQ29uZmlnUGF0aCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAvLyBDYWxsIHJlYWRBbmd1bGFyQ29tcGlsZXJPcHRpb25zIHJlY3Vyc2l2ZWx5IHRvIG1lcmdlIE5HIENvbXBpbGVyIG9wdGlvbnNcbiAgICAgICAgICAgICAgcmV0dXJuIHJlYWRBbmd1bGFyQ29tcGlsZXJPcHRpb25zKGV4dGVuZGVkQ29uZmlnUGF0aCwgZXhpc3RpbmdOZ0NvbXBpbGVyT3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGV4aXN0aW5nTmdDb21waWxlck9wdGlvbnM7XG4gICAgICAgIH07XG5cbiAgICBjb25zdCB7cHJvamVjdEZpbGUsIGJhc2VQYXRofSA9IGNhbGNQcm9qZWN0RmlsZUFuZEJhc2VQYXRoKHByb2plY3QsIGhvc3QpO1xuICAgIGNvbnN0IGNvbmZpZ0ZpbGVOYW1lID0gaG9zdC5yZXNvbHZlKGhvc3QucHdkKCksIHByb2plY3RGaWxlKTtcbiAgICBjb25zdCB7Y29uZmlnLCBlcnJvcn0gPSByZWFkQ29uZmlnRmlsZShwcm9qZWN0RmlsZSk7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwcm9qZWN0LFxuICAgICAgICBlcnJvcnM6IFtlcnJvcl0sXG4gICAgICAgIHJvb3ROYW1lczogW10sXG4gICAgICAgIG9wdGlvbnM6IHt9LFxuICAgICAgICBlbWl0RmxhZ3M6IGFwaS5FbWl0RmxhZ3MuRGVmYXVsdFxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgZXhpc3RpbmdDb21waWxlck9wdGlvbnM6IGFwaS5Db21waWxlck9wdGlvbnMgPSB7XG4gICAgICBnZW5EaXI6IGJhc2VQYXRoLFxuICAgICAgYmFzZVBhdGgsXG4gICAgICAuLi5yZWFkQW5ndWxhckNvbXBpbGVyT3B0aW9ucyhjb25maWdGaWxlTmFtZSksXG4gICAgICAuLi5leGlzdGluZ09wdGlvbnMsXG4gICAgfTtcblxuICAgIGNvbnN0IHBhcnNlQ29uZmlnSG9zdCA9IGNyZWF0ZVBhcnNlQ29uZmlnSG9zdChob3N0LCBmcyk7XG4gICAgY29uc3Qge29wdGlvbnMsIGVycm9ycywgZmlsZU5hbWVzOiByb290TmFtZXMsIHByb2plY3RSZWZlcmVuY2VzfSA9XG4gICAgICAgIHRzLnBhcnNlSnNvbkNvbmZpZ0ZpbGVDb250ZW50KFxuICAgICAgICAgICAgY29uZmlnLCBwYXJzZUNvbmZpZ0hvc3QsIGJhc2VQYXRoLCBleGlzdGluZ0NvbXBpbGVyT3B0aW9ucywgY29uZmlnRmlsZU5hbWUpO1xuXG4gICAgLy8gQ29lcmNlIHRvIGJvb2xlYW4gYXMgYGVuYWJsZUl2eWAgY2FuIGJlIGBuZ3RzY3x0cnVlfGZhbHNlfHVuZGVmaW5lZGAgaGVyZS5cbiAgICBvcHRpb25zLmVuYWJsZUl2eSA9ICEhKG9wdGlvbnMuZW5hYmxlSXZ5ID8/IHRydWUpO1xuXG4gICAgbGV0IGVtaXRGbGFncyA9IGFwaS5FbWl0RmxhZ3MuRGVmYXVsdDtcbiAgICBpZiAoIShvcHRpb25zLnNraXBNZXRhZGF0YUVtaXQgfHwgb3B0aW9ucy5mbGF0TW9kdWxlT3V0RmlsZSkpIHtcbiAgICAgIGVtaXRGbGFncyB8PSBhcGkuRW1pdEZsYWdzLk1ldGFkYXRhO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5za2lwVGVtcGxhdGVDb2RlZ2VuKSB7XG4gICAgICBlbWl0RmxhZ3MgPSBlbWl0RmxhZ3MgJiB+YXBpLkVtaXRGbGFncy5Db2RlZ2VuO1xuICAgIH1cbiAgICByZXR1cm4ge3Byb2plY3Q6IHByb2plY3RGaWxlLCByb290TmFtZXMsIHByb2plY3RSZWZlcmVuY2VzLCBvcHRpb25zLCBlcnJvcnMsIGVtaXRGbGFnc307XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zdCBlcnJvcnM6IHRzLkRpYWdub3N0aWNbXSA9IFt7XG4gICAgICBjYXRlZ29yeTogdHMuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFxuICAgICAgbWVzc2FnZVRleHQ6IGUuc3RhY2ssXG4gICAgICBmaWxlOiB1bmRlZmluZWQsXG4gICAgICBzdGFydDogdW5kZWZpbmVkLFxuICAgICAgbGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgICBzb3VyY2U6ICdhbmd1bGFyJyxcbiAgICAgIGNvZGU6IGFwaS5VTktOT1dOX0VSUk9SX0NPREUsXG4gICAgfV07XG4gICAgcmV0dXJuIHtwcm9qZWN0OiAnJywgZXJyb3JzLCByb290TmFtZXM6IFtdLCBvcHRpb25zOiB7fSwgZW1pdEZsYWdzOiBhcGkuRW1pdEZsYWdzLkRlZmF1bHR9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVBhcnNlQ29uZmlnSG9zdChob3N0OiBDb25maWd1cmF0aW9uSG9zdCwgZnMgPSBnZXRGaWxlU3lzdGVtKCkpOiB0cy5QYXJzZUNvbmZpZ0hvc3Qge1xuICByZXR1cm4ge1xuICAgIGZpbGVFeGlzdHM6IGhvc3QuZXhpc3RzLmJpbmQoaG9zdCksXG4gICAgcmVhZERpcmVjdG9yeTogdHMuc3lzLnJlYWREaXJlY3RvcnksXG4gICAgcmVhZEZpbGU6IGhvc3QucmVhZEZpbGUuYmluZChob3N0KSxcbiAgICB1c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzOiBmcy5pc0Nhc2VTZW5zaXRpdmUoKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RXh0ZW5kZWRDb25maWdQYXRoKFxuICAgIGNvbmZpZ0ZpbGU6IHN0cmluZywgZXh0ZW5kc1ZhbHVlOiBzdHJpbmcsIGhvc3Q6IENvbmZpZ3VyYXRpb25Ib3N0LFxuICAgIGZzOiBGaWxlU3lzdGVtKTogQWJzb2x1dGVGc1BhdGh8bnVsbCB7XG4gIGxldCBleHRlbmRlZENvbmZpZ1BhdGg6IEFic29sdXRlRnNQYXRofG51bGwgPSBudWxsO1xuXG4gIGlmIChleHRlbmRzVmFsdWUuc3RhcnRzV2l0aCgnLicpIHx8IGZzLmlzUm9vdGVkKGV4dGVuZHNWYWx1ZSkpIHtcbiAgICBleHRlbmRlZENvbmZpZ1BhdGggPSBob3N0LnJlc29sdmUoaG9zdC5kaXJuYW1lKGNvbmZpZ0ZpbGUpLCBleHRlbmRzVmFsdWUpO1xuICAgIGV4dGVuZGVkQ29uZmlnUGF0aCA9IGhvc3QuZXh0bmFtZShleHRlbmRlZENvbmZpZ1BhdGgpID9cbiAgICAgICAgZXh0ZW5kZWRDb25maWdQYXRoIDpcbiAgICAgICAgYWJzb2x1dGVGcm9tKGAke2V4dGVuZGVkQ29uZmlnUGF0aH0uanNvbmApO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHBhcnNlQ29uZmlnSG9zdCA9IGNyZWF0ZVBhcnNlQ29uZmlnSG9zdChob3N0LCBmcyk7XG5cbiAgICAvLyBQYXRoIGlzbid0IGEgcm9vdGVkIG9yIHJlbGF0aXZlIHBhdGgsIHJlc29sdmUgbGlrZSBhIG1vZHVsZS5cbiAgICBjb25zdCB7XG4gICAgICByZXNvbHZlZE1vZHVsZSxcbiAgICB9ID1cbiAgICAgICAgdHMubm9kZU1vZHVsZU5hbWVSZXNvbHZlcihcbiAgICAgICAgICAgIGV4dGVuZHNWYWx1ZSwgY29uZmlnRmlsZSxcbiAgICAgICAgICAgIHttb2R1bGVSZXNvbHV0aW9uOiB0cy5Nb2R1bGVSZXNvbHV0aW9uS2luZC5Ob2RlSnMsIHJlc29sdmVKc29uTW9kdWxlOiB0cnVlfSxcbiAgICAgICAgICAgIHBhcnNlQ29uZmlnSG9zdCk7XG4gICAgaWYgKHJlc29sdmVkTW9kdWxlKSB7XG4gICAgICBleHRlbmRlZENvbmZpZ1BhdGggPSBhYnNvbHV0ZUZyb20ocmVzb2x2ZWRNb2R1bGUucmVzb2x2ZWRGaWxlTmFtZSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGV4dGVuZGVkQ29uZmlnUGF0aCAhPT0gbnVsbCAmJiBob3N0LmV4aXN0cyhleHRlbmRlZENvbmZpZ1BhdGgpKSB7XG4gICAgcmV0dXJuIGV4dGVuZGVkQ29uZmlnUGF0aDtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuZXhwb3J0IGludGVyZmFjZSBQZXJmb3JtQ29tcGlsYXRpb25SZXN1bHQge1xuICBkaWFnbm9zdGljczogRGlhZ25vc3RpY3M7XG4gIHByb2dyYW0/OiBhcGkuUHJvZ3JhbTtcbiAgZW1pdFJlc3VsdD86IHRzLkVtaXRSZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGl0Q29kZUZyb21SZXN1bHQoZGlhZ3M6IERpYWdub3N0aWNzfHVuZGVmaW5lZCk6IG51bWJlciB7XG4gIGlmICghZGlhZ3MgfHwgZmlsdGVyRXJyb3JzQW5kV2FybmluZ3MoZGlhZ3MpLmxlbmd0aCA9PT0gMCkge1xuICAgIC8vIElmIHdlIGhhdmUgYSByZXN1bHQgYW5kIGRpZG4ndCBnZXQgYW55IGVycm9ycywgd2Ugc3VjY2VlZGVkLlxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgLy8gUmV0dXJuIDIgaWYgYW55IG9mIHRoZSBlcnJvcnMgd2VyZSB1bmtub3duLlxuICByZXR1cm4gZGlhZ3Muc29tZShkID0+IGQuc291cmNlID09PSAnYW5ndWxhcicgJiYgZC5jb2RlID09PSBhcGkuVU5LTk9XTl9FUlJPUl9DT0RFKSA/IDIgOiAxO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGVyZm9ybUNvbXBpbGF0aW9uKHtcbiAgcm9vdE5hbWVzLFxuICBvcHRpb25zLFxuICBob3N0LFxuICBvbGRQcm9ncmFtLFxuICBlbWl0Q2FsbGJhY2ssXG4gIG1lcmdlRW1pdFJlc3VsdHNDYWxsYmFjayxcbiAgZ2F0aGVyRGlhZ25vc3RpY3MgPSBkZWZhdWx0R2F0aGVyRGlhZ25vc3RpY3MsXG4gIGN1c3RvbVRyYW5zZm9ybWVycyxcbiAgZW1pdEZsYWdzID0gYXBpLkVtaXRGbGFncy5EZWZhdWx0LFxuICBtb2RpZmllZFJlc291cmNlRmlsZXMgPSBudWxsXG59OiB7XG4gIHJvb3ROYW1lczogc3RyaW5nW10sXG4gIG9wdGlvbnM6IGFwaS5Db21waWxlck9wdGlvbnMsXG4gIGhvc3Q/OiBhcGkuQ29tcGlsZXJIb3N0LFxuICBvbGRQcm9ncmFtPzogYXBpLlByb2dyYW0sXG4gIGVtaXRDYWxsYmFjaz86IGFwaS5Uc0VtaXRDYWxsYmFjayxcbiAgbWVyZ2VFbWl0UmVzdWx0c0NhbGxiYWNrPzogYXBpLlRzTWVyZ2VFbWl0UmVzdWx0c0NhbGxiYWNrLFxuICBnYXRoZXJEaWFnbm9zdGljcz86IChwcm9ncmFtOiBhcGkuUHJvZ3JhbSkgPT4gRGlhZ25vc3RpY3MsXG4gIGN1c3RvbVRyYW5zZm9ybWVycz86IGFwaS5DdXN0b21UcmFuc2Zvcm1lcnMsXG4gIGVtaXRGbGFncz86IGFwaS5FbWl0RmxhZ3MsXG4gIG1vZGlmaWVkUmVzb3VyY2VGaWxlcz86IFNldDxzdHJpbmc+fCBudWxsLFxufSk6IFBlcmZvcm1Db21waWxhdGlvblJlc3VsdCB7XG4gIGxldCBwcm9ncmFtOiBhcGkuUHJvZ3JhbXx1bmRlZmluZWQ7XG4gIGxldCBlbWl0UmVzdWx0OiB0cy5FbWl0UmVzdWx0fHVuZGVmaW5lZDtcbiAgbGV0IGFsbERpYWdub3N0aWNzOiBBcnJheTx0cy5EaWFnbm9zdGljfGFwaS5EaWFnbm9zdGljPiA9IFtdO1xuICB0cnkge1xuICAgIGlmICghaG9zdCkge1xuICAgICAgaG9zdCA9IG5nLmNyZWF0ZUNvbXBpbGVySG9zdCh7b3B0aW9uc30pO1xuICAgIH1cbiAgICBpZiAobW9kaWZpZWRSZXNvdXJjZUZpbGVzKSB7XG4gICAgICBob3N0LmdldE1vZGlmaWVkUmVzb3VyY2VGaWxlcyA9ICgpID0+IG1vZGlmaWVkUmVzb3VyY2VGaWxlcztcbiAgICB9XG5cbiAgICBwcm9ncmFtID0gbmcuY3JlYXRlUHJvZ3JhbSh7cm9vdE5hbWVzLCBob3N0LCBvcHRpb25zLCBvbGRQcm9ncmFtfSk7XG5cbiAgICBjb25zdCBiZWZvcmVEaWFncyA9IERhdGUubm93KCk7XG4gICAgYWxsRGlhZ25vc3RpY3MucHVzaCguLi5nYXRoZXJEaWFnbm9zdGljcyhwcm9ncmFtISkpO1xuICAgIGlmIChvcHRpb25zLmRpYWdub3N0aWNzKSB7XG4gICAgICBjb25zdCBhZnRlckRpYWdzID0gRGF0ZS5ub3coKTtcbiAgICAgIGFsbERpYWdub3N0aWNzLnB1c2goXG4gICAgICAgICAgY3JlYXRlTWVzc2FnZURpYWdub3N0aWMoYFRpbWUgZm9yIGRpYWdub3N0aWNzOiAke2FmdGVyRGlhZ3MgLSBiZWZvcmVEaWFnc31tcy5gKSk7XG4gICAgfVxuXG4gICAgaWYgKCFoYXNFcnJvcnMoYWxsRGlhZ25vc3RpY3MpKSB7XG4gICAgICBlbWl0UmVzdWx0ID1cbiAgICAgICAgICBwcm9ncmFtIS5lbWl0KHtlbWl0Q2FsbGJhY2ssIG1lcmdlRW1pdFJlc3VsdHNDYWxsYmFjaywgY3VzdG9tVHJhbnNmb3JtZXJzLCBlbWl0RmxhZ3N9KTtcbiAgICAgIGFsbERpYWdub3N0aWNzLnB1c2goLi4uZW1pdFJlc3VsdC5kaWFnbm9zdGljcyk7XG4gICAgICByZXR1cm4ge2RpYWdub3N0aWNzOiBhbGxEaWFnbm9zdGljcywgcHJvZ3JhbSwgZW1pdFJlc3VsdH07XG4gICAgfVxuICAgIHJldHVybiB7ZGlhZ25vc3RpY3M6IGFsbERpYWdub3N0aWNzLCBwcm9ncmFtfTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxldCBlcnJNc2c6IHN0cmluZztcbiAgICBsZXQgY29kZTogbnVtYmVyO1xuICAgIGlmIChpc1N5bnRheEVycm9yKGUpKSB7XG4gICAgICAvLyBkb24ndCByZXBvcnQgdGhlIHN0YWNrIGZvciBzeW50YXggZXJyb3JzIGFzIHRoZXkgYXJlIHdlbGwga25vd24gZXJyb3JzLlxuICAgICAgZXJyTXNnID0gZS5tZXNzYWdlO1xuICAgICAgY29kZSA9IGFwaS5ERUZBVUxUX0VSUk9SX0NPREU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVyck1zZyA9IGUuc3RhY2s7XG4gICAgICAvLyBJdCBpcyBub3QgYSBzeW50YXggZXJyb3Igd2UgbWlnaHQgaGF2ZSBhIHByb2dyYW0gd2l0aCB1bmtub3duIHN0YXRlLCBkaXNjYXJkIGl0LlxuICAgICAgcHJvZ3JhbSA9IHVuZGVmaW5lZDtcbiAgICAgIGNvZGUgPSBhcGkuVU5LTk9XTl9FUlJPUl9DT0RFO1xuICAgIH1cbiAgICBhbGxEaWFnbm9zdGljcy5wdXNoKFxuICAgICAgICB7Y2F0ZWdvcnk6IHRzLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvciwgbWVzc2FnZVRleHQ6IGVyck1zZywgY29kZSwgc291cmNlOiBhcGkuU09VUkNFfSk7XG4gICAgcmV0dXJuIHtkaWFnbm9zdGljczogYWxsRGlhZ25vc3RpY3MsIHByb2dyYW19O1xuICB9XG59XG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdEdhdGhlckRpYWdub3N0aWNzKHByb2dyYW06IGFwaS5Qcm9ncmFtKTogRGlhZ25vc3RpY3Mge1xuICBjb25zdCBhbGxEaWFnbm9zdGljczogQXJyYXk8dHMuRGlhZ25vc3RpY3xhcGkuRGlhZ25vc3RpYz4gPSBbXTtcblxuICBmdW5jdGlvbiBjaGVja0RpYWdub3N0aWNzKGRpYWdzOiBEaWFnbm9zdGljc3x1bmRlZmluZWQpIHtcbiAgICBpZiAoZGlhZ3MpIHtcbiAgICAgIGFsbERpYWdub3N0aWNzLnB1c2goLi4uZGlhZ3MpO1xuICAgICAgcmV0dXJuICFoYXNFcnJvcnMoZGlhZ3MpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGxldCBjaGVja090aGVyRGlhZ25vc3RpY3MgPSB0cnVlO1xuICAvLyBDaGVjayBwYXJhbWV0ZXIgZGlhZ25vc3RpY3NcbiAgY2hlY2tPdGhlckRpYWdub3N0aWNzID0gY2hlY2tPdGhlckRpYWdub3N0aWNzICYmXG4gICAgICBjaGVja0RpYWdub3N0aWNzKFsuLi5wcm9ncmFtLmdldFRzT3B0aW9uRGlhZ25vc3RpY3MoKSwgLi4ucHJvZ3JhbS5nZXROZ09wdGlvbkRpYWdub3N0aWNzKCldKTtcblxuICAvLyBDaGVjayBzeW50YWN0aWMgZGlhZ25vc3RpY3NcbiAgY2hlY2tPdGhlckRpYWdub3N0aWNzID1cbiAgICAgIGNoZWNrT3RoZXJEaWFnbm9zdGljcyAmJiBjaGVja0RpYWdub3N0aWNzKHByb2dyYW0uZ2V0VHNTeW50YWN0aWNEaWFnbm9zdGljcygpIGFzIERpYWdub3N0aWNzKTtcblxuICAvLyBDaGVjayBUeXBlU2NyaXB0IHNlbWFudGljIGFuZCBBbmd1bGFyIHN0cnVjdHVyZSBkaWFnbm9zdGljc1xuICBjaGVja090aGVyRGlhZ25vc3RpY3MgPVxuICAgICAgY2hlY2tPdGhlckRpYWdub3N0aWNzICYmXG4gICAgICBjaGVja0RpYWdub3N0aWNzKFxuICAgICAgICAgIFsuLi5wcm9ncmFtLmdldFRzU2VtYW50aWNEaWFnbm9zdGljcygpLCAuLi5wcm9ncmFtLmdldE5nU3RydWN0dXJhbERpYWdub3N0aWNzKCldKTtcblxuICAvLyBDaGVjayBBbmd1bGFyIHNlbWFudGljIGRpYWdub3N0aWNzXG4gIGNoZWNrT3RoZXJEaWFnbm9zdGljcyA9XG4gICAgICBjaGVja090aGVyRGlhZ25vc3RpY3MgJiYgY2hlY2tEaWFnbm9zdGljcyhwcm9ncmFtLmdldE5nU2VtYW50aWNEaWFnbm9zdGljcygpIGFzIERpYWdub3N0aWNzKTtcblxuICByZXR1cm4gYWxsRGlhZ25vc3RpY3M7XG59XG5cbmZ1bmN0aW9uIGhhc0Vycm9ycyhkaWFnczogRGlhZ25vc3RpY3MpIHtcbiAgcmV0dXJuIGRpYWdzLnNvbWUoZCA9PiBkLmNhdGVnb3J5ID09PSB0cy5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IpO1xufVxuIl19
|
|
322
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyZm9ybV9jb21waWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9wZXJmb3JtX2NvbXBpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7OztJQUVILDhDQUEwRDtJQUMxRCwrQkFBaUM7SUFFakMsMkVBQXdJO0lBR3hJLDJFQUE0RDtJQUM1RCxnRUFBMEM7SUFDMUMsd0VBQWtEO0lBQ2xELG9FQUE0RDtJQUk1RCxTQUFnQix1QkFBdUIsQ0FBQyxXQUF3QjtRQUM5RCxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQTVDLENBQTRDLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRkQsMERBRUM7SUFFRCxJQUFNLGlCQUFpQixHQUE2QjtRQUNsRCxtQkFBbUIsRUFBRSxjQUFNLE9BQUEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxFQUE1QixDQUE0QjtRQUN2RCxvQkFBb0IsRUFBRSxVQUFBLFFBQVEsSUFBSSxPQUFBLFFBQVEsRUFBUixDQUFRO1FBQzFDLFVBQVUsRUFBRSxjQUFNLE9BQUEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQWQsQ0FBYztLQUNqQyxDQUFDO0lBRUYsU0FBUyxlQUFlLENBQUMsUUFBZ0IsRUFBRSxJQUE4QjtRQUN2RSxPQUFPLHNCQUFRLENBQ1gscUJBQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxFQUFFLHFCQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQsU0FBZ0Isd0JBQXdCLENBQ3BDLFFBQWtCLEVBQUUsSUFBa0Q7UUFBbEQscUJBQUEsRUFBQSx3QkFB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SSxPQUFuQixjQUFjLG1CQUFTLEtBQUssR0FBRTtnQkFDOUIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMxQjtZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUkscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLDhCQUE4QjtRQUM5QixxQkFBcUIsR0FBRyxxQkFBcUI7WUFDekMsZ0JBQWdCLGtCQUFLLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxFQUFLLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLENBQUM7UUFFakcsOEJBQThCO1FBQzlCLHFCQUFxQjtZQUNqQixxQkFBcUIsSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMseUJBQXlCLEVBQWlCLENBQUMsQ0FBQztRQUVsRyw4REFBOEQ7UUFDOUQscUJBQXFCO1lBQ2pCLHFCQUFxQjtnQkFDckIsZ0JBQWdCLGtCQUNSLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxFQUFLLE9BQU8sQ0FBQywwQkFBMEIsRUFBRSxFQUFFLENBQUM7UUFFMUYscUNBQXFDO1FBQ3JDLHFCQUFxQjtZQUNqQixxQkFBcUIsSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLEVBQWlCLENBQUMsQ0FBQztRQUVqRyxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBL0JELDREQStCQztJQUVELFNBQVMsU0FBUyxDQUFDLEtBQWtCO1FBQ25DLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxRQUFRLEtBQUssRUFBRSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBMUMsQ0FBMEMsQ0FBQyxDQUFDO0lBQ3JFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtpc1N5bnRheEVycm9yLCBQb3NpdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7YWJzb2x1dGVGcm9tLCBBYnNvbHV0ZUZzUGF0aCwgRmlsZVN5c3RlbSwgZ2V0RmlsZVN5c3RlbSwgUmVhZG9ubHlGaWxlU3lzdGVtLCByZWxhdGl2ZSwgcmVzb2x2ZX0gZnJvbSAnLi4vc3JjL25ndHNjL2ZpbGVfc3lzdGVtJztcbmltcG9ydCB7TmdDb21waWxlck9wdGlvbnN9IGZyb20gJy4vbmd0c2MvY29yZS9hcGknO1xuXG5pbXBvcnQge3JlcGxhY2VUc1dpdGhOZ0luRXJyb3JzfSBmcm9tICcuL25ndHNjL2RpYWdub3N0aWNzJztcbmltcG9ydCAqIGFzIGFwaSBmcm9tICcuL3RyYW5zZm9ybWVycy9hcGknO1xuaW1wb3J0ICogYXMgbmcgZnJvbSAnLi90cmFuc2Zvcm1lcnMvZW50cnlfcG9pbnRzJztcbmltcG9ydCB7Y3JlYXRlTWVzc2FnZURpYWdub3N0aWN9IGZyb20gJy4vdHJhbnNmb3JtZXJzL3V0aWwnO1xuXG5leHBvcnQgdHlwZSBEaWFnbm9zdGljcyA9IFJlYWRvbmx5QXJyYXk8dHMuRGlhZ25vc3RpY3xhcGkuRGlhZ25vc3RpYz47XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJFcnJvcnNBbmRXYXJuaW5ncyhkaWFnbm9zdGljczogRGlhZ25vc3RpY3MpOiBEaWFnbm9zdGljcyB7XG4gIHJldHVybiBkaWFnbm9zdGljcy5maWx0ZXIoZCA9PiBkLmNhdGVnb3J5ICE9PSB0cy5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSk7XG59XG5cbmNvbnN0IGRlZmF1bHRGb3JtYXRIb3N0OiB0cy5Gb3JtYXREaWFnbm9zdGljc0hvc3QgPSB7XG4gIGdldEN1cnJlbnREaXJlY3Rvcnk6ICgpID0+IHRzLnN5cy5nZXRDdXJyZW50RGlyZWN0b3J5KCksXG4gIGdldENhbm9uaWNhbEZpbGVOYW1lOiBmaWxlTmFtZSA9PiBmaWxlTmFtZSxcbiAgZ2V0TmV3TGluZTogKCkgPT4gdHMuc3lzLm5ld0xpbmVcbn07XG5cbmZ1bmN0aW9uIGRpc3BsYXlGaWxlTmFtZShmaWxlTmFtZTogc3RyaW5nLCBob3N0OiB0cy5Gb3JtYXREaWFnbm9zdGljc0hvc3QpOiBzdHJpbmcge1xuICByZXR1cm4gcmVsYXRpdmUoXG4gICAgICByZXNvbHZlKGhvc3QuZ2V0Q3VycmVudERpcmVjdG9yeSgpKSwgcmVzb2x2ZShob3N0LmdldENhbm9uaWNhbEZpbGVOYW1lKGZpbGVOYW1lKSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RGlhZ25vc3RpY1Bvc2l0aW9uKFxuICAgIHBvc2l0aW9uOiBQb3NpdGlvbiwgaG9zdDogdHMuRm9ybWF0RGlhZ25vc3RpY3NIb3N0ID0gZGVmYXVsdEZvcm1hdEhvc3QpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7ZGlzcGxheUZpbGVOYW1lKHBvc2l0aW9uLmZpbGVOYW1lLCBob3N0KX0oJHtwb3NpdGlvbi5saW5lICsgMX0sJHtwb3NpdGlvbi5jb2x1bW4gKyAxfSlgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmxhdHRlbkRpYWdub3N0aWNNZXNzYWdlQ2hhaW4oXG4gICAgY2hhaW46IGFwaS5EaWFnbm9zdGljTWVzc2FnZUNoYWluLCBob3N0OiB0cy5Gb3JtYXREaWFnbm9zdGljc0hvc3QgPSBkZWZhdWx0Rm9ybWF0SG9zdCxcbiAgICBpbmRlbnQgPSAwKTogc3RyaW5nIHtcbiAgY29uc3QgbmV3TGluZSA9IGhvc3QuZ2V0TmV3TGluZSgpO1xuICBsZXQgcmVzdWx0ID0gJyc7XG4gIGlmIChpbmRlbnQpIHtcbiAgICByZXN1bHQgKz0gbmV3TGluZTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5kZW50OyBpKyspIHtcbiAgICAgIHJlc3VsdCArPSAnICAnO1xuICAgIH1cbiAgfVxuICByZXN1bHQgKz0gY2hhaW4ubWVzc2FnZVRleHQ7XG5cbiAgY29uc3QgcG9zaXRpb24gPSBjaGFpbi5wb3NpdGlvbjtcbiAgLy8gYWRkIHBvc2l0aW9uIGlmIGF2YWlsYWJsZSwgYW5kIHdlIGFyZSBub3QgYXQgdGhlIGRlcGVzdCBmcmFtZVxuICBpZiAocG9zaXRpb24gJiYgaW5kZW50ICE9PSAwKSB7XG4gICAgcmVzdWx0ICs9IGAgYXQgJHtmb3JtYXREaWFnbm9zdGljUG9zaXRpb24ocG9zaXRpb24sIGhvc3QpfWA7XG4gIH1cblxuICBpbmRlbnQrKztcbiAgaWYgKGNoYWluLm5leHQpIHtcbiAgICBmb3IgKGNvbnN0IGtpZCBvZiBjaGFpbi5uZXh0KSB7XG4gICAgICByZXN1bHQgKz0gZmxhdHRlbkRpYWdub3N0aWNNZXNzYWdlQ2hhaW4oa2lkLCBob3N0LCBpbmRlbnQpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RGlhZ25vc3RpYyhcbiAgICBkaWFnbm9zdGljOiBhcGkuRGlhZ25vc3RpYywgaG9zdDogdHMuRm9ybWF0RGlhZ25vc3RpY3NIb3N0ID0gZGVmYXVsdEZvcm1hdEhvc3QpIHtcbiAgbGV0IHJlc3VsdCA9ICcnO1xuICBjb25zdCBuZXdMaW5lID0gaG9zdC5nZXROZXdMaW5lKCk7XG4gIGNvbnN0IHNwYW4gPSBkaWFnbm9zdGljLnNwYW47XG4gIGlmIChzcGFuKSB7XG4gICAgcmVzdWx0ICs9IGAke1xuICAgICAgICBmb3JtYXREaWFnbm9zdGljUG9zaXRpb24oXG4gICAgICAgICAgICB7ZmlsZU5hbWU6IHNwYW4uc3RhcnQuZmlsZS51cmwsIGxpbmU6IHNwYW4uc3RhcnQubGluZSwgY29sdW1uOiBzcGFuLnN0YXJ0LmNvbH0sXG4gICAgICAgICAgICBob3N0KX06IGA7XG4gIH0gZWxzZSBpZiAoZGlhZ25vc3RpYy5wb3NpdGlvbikge1xuICAgIHJlc3VsdCArPSBgJHtmb3JtYXREaWFnbm9zdGljUG9zaXRpb24oZGlhZ25vc3RpYy5wb3NpdGlvbiwgaG9zdCl9OiBgO1xuICB9XG4gIGlmIChkaWFnbm9zdGljLnNwYW4gJiYgZGlhZ25vc3RpYy5zcGFuLmRldGFpbHMpIHtcbiAgICByZXN1bHQgKz0gYCR7ZGlhZ25vc3RpYy5zcGFuLmRldGFpbHN9LCAke2RpYWdub3N0aWMubWVzc2FnZVRleHR9JHtuZXdMaW5lfWA7XG4gIH0gZWxzZSBpZiAoZGlhZ25vc3RpYy5jaGFpbikge1xuICAgIHJlc3VsdCArPSBgJHtmbGF0dGVuRGlhZ25vc3RpY01lc3NhZ2VDaGFpbihkaWFnbm9zdGljLmNoYWluLCBob3N0KX0uJHtuZXdMaW5lfWA7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0ICs9IGAke2RpYWdub3N0aWMubWVzc2FnZVRleHR9JHtuZXdMaW5lfWA7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdERpYWdub3N0aWNzKFxuICAgIGRpYWdzOiBEaWFnbm9zdGljcywgaG9zdDogdHMuRm9ybWF0RGlhZ25vc3RpY3NIb3N0ID0gZGVmYXVsdEZvcm1hdEhvc3QpOiBzdHJpbmcge1xuICBpZiAoZGlhZ3MgJiYgZGlhZ3MubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGRpYWdzXG4gICAgICAgIC5tYXAoZGlhZ25vc3RpYyA9PiB7XG4gICAgICAgICAgaWYgKGFwaS5pc1RzRGlhZ25vc3RpYyhkaWFnbm9zdGljKSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VUc1dpdGhOZ0luRXJyb3JzKFxuICAgICAgICAgICAgICAgIHRzLmZvcm1hdERpYWdub3N0aWNzV2l0aENvbG9yQW5kQ29udGV4dChbZGlhZ25vc3RpY10sIGhvc3QpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdERpYWdub3N0aWMoZGlhZ25vc3RpYywgaG9zdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuam9pbignJyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG59XG5cbi8qKiBVc2VkIHRvIHJlYWQgY29uZmlndXJhdGlvbiBmaWxlcy4gKi9cbmV4cG9ydCB0eXBlIENvbmZpZ3VyYXRpb25Ib3N0ID0gUGljazxcbiAgICBSZWFkb25seUZpbGVTeXN0ZW0sICdyZWFkRmlsZSd8J2V4aXN0cyd8J2xzdGF0J3wncmVzb2x2ZSd8J2pvaW4nfCdkaXJuYW1lJ3wnZXh0bmFtZSd8J3B3ZCc+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlZENvbmZpZ3VyYXRpb24ge1xuICBwcm9qZWN0OiBzdHJpbmc7XG4gIG9wdGlvbnM6IGFwaS5Db21waWxlck9wdGlvbnM7XG4gIHJvb3ROYW1lczogc3RyaW5nW107XG4gIHByb2plY3RSZWZlcmVuY2VzPzogcmVhZG9ubHkgdHMuUHJvamVjdFJlZmVyZW5jZVtdfHVuZGVmaW5lZDtcbiAgZW1pdEZsYWdzOiBhcGkuRW1pdEZsYWdzO1xuICBlcnJvcnM6IHRzLkRpYWdub3N0aWNbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGNQcm9qZWN0RmlsZUFuZEJhc2VQYXRoKFxuICAgIHByb2plY3Q6IHN0cmluZywgaG9zdDogQ29uZmlndXJhdGlvbkhvc3QgPSBnZXRGaWxlU3lzdGVtKCkpOlxuICAgIHtwcm9qZWN0RmlsZTogQWJzb2x1dGVGc1BhdGgsIGJhc2VQYXRoOiBBYnNvbHV0ZUZzUGF0aH0ge1xuICBjb25zdCBhYnNQcm9qZWN0ID0gaG9zdC5yZXNvbHZlKHByb2plY3QpO1xuICBjb25zdCBwcm9qZWN0SXNEaXIgPSBob3N0LmxzdGF0KGFic1Byb2plY3QpLmlzRGlyZWN0b3J5KCk7XG4gIGNvbnN0IHByb2plY3RGaWxlID0gcHJvamVjdElzRGlyID8gaG9zdC5qb2luKGFic1Byb2plY3QsICd0c2NvbmZpZy5qc29uJykgOiBhYnNQcm9qZWN0O1xuICBjb25zdCBwcm9qZWN0RGlyID0gcHJvamVjdElzRGlyID8gYWJzUHJvamVjdCA6IGhvc3QuZGlybmFtZShhYnNQcm9qZWN0KTtcbiAgY29uc3QgYmFzZVBhdGggPSBob3N0LnJlc29sdmUocHJvamVjdERpcik7XG4gIHJldHVybiB7cHJvamVjdEZpbGUsIGJhc2VQYXRofTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRDb25maWd1cmF0aW9uKFxuICAgIHByb2plY3Q6IHN0cmluZywgZXhpc3RpbmdPcHRpb25zPzogYXBpLkNvbXBpbGVyT3B0aW9ucyxcbiAgICBob3N0OiBDb25maWd1cmF0aW9uSG9zdCA9IGdldEZpbGVTeXN0ZW0oKSk6IFBhcnNlZENvbmZpZ3VyYXRpb24ge1xuICB0cnkge1xuICAgIGNvbnN0IGZzID0gZ2V0RmlsZVN5c3RlbSgpO1xuXG4gICAgY29uc3QgcmVhZENvbmZpZ0ZpbGUgPSAoY29uZmlnRmlsZTogc3RyaW5nKSA9PlxuICAgICAgICB0cy5yZWFkQ29uZmlnRmlsZShjb25maWdGaWxlLCBmaWxlID0+IGhvc3QucmVhZEZpbGUoaG9zdC5yZXNvbHZlKGZpbGUpKSk7XG4gICAgY29uc3QgcmVhZEFuZ3VsYXJDb21waWxlck9wdGlvbnMgPVxuICAgICAgICAoY29uZmlnRmlsZTogc3RyaW5nLCBwYXJlbnRPcHRpb25zOiBOZ0NvbXBpbGVyT3B0aW9ucyA9IHt9KTogTmdDb21waWxlck9wdGlvbnMgPT4ge1xuICAgICAgICAgIGNvbnN0IHtjb25maWcsIGVycm9yfSA9IHJlYWRDb25maWdGaWxlKGNvbmZpZ0ZpbGUpO1xuXG4gICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAvLyBFcnJvcnMgYXJlIGhhbmRsZWQgbGF0ZXIgb24gYnkgJ3BhcnNlSnNvbkNvbmZpZ0ZpbGVDb250ZW50J1xuICAgICAgICAgICAgcmV0dXJuIHBhcmVudE9wdGlvbnM7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbnRvIG1lcmdpbmcgJ2FuZ3VsYXJDb21waWxlck9wdGlvbnMnIGFzXG4gICAgICAgICAgLy8gb3RoZXIgb3B0aW9ucyBsaWtlICdjb21waWxlck9wdGlvbnMnIGFyZSBtZXJnZWQgYnkgVFNcbiAgICAgICAgICBjb25zdCBleGlzdGluZ05nQ29tcGlsZXJPcHRpb25zID0gey4uLmNvbmZpZy5hbmd1bGFyQ29tcGlsZXJPcHRpb25zLCAuLi5wYXJlbnRPcHRpb25zfTtcblxuICAgICAgICAgIGlmIChjb25maWcuZXh0ZW5kcyAmJiB0eXBlb2YgY29uZmlnLmV4dGVuZHMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zdCBleHRlbmRlZENvbmZpZ1BhdGggPSBnZXRFeHRlbmRlZENvbmZpZ1BhdGgoXG4gICAgICAgICAgICAgICAgY29uZmlnRmlsZSwgY29uZmlnLmV4dGVuZHMsIGhvc3QsIGZzLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGV4dGVuZGVkQ29uZmlnUGF0aCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAvLyBDYWxsIHJlYWRBbmd1bGFyQ29tcGlsZXJPcHRpb25zIHJlY3Vyc2l2ZWx5IHRvIG1lcmdlIE5HIENvbXBpbGVyIG9wdGlvbnNcbiAgICAgICAgICAgICAgcmV0dXJuIHJlYWRBbmd1bGFyQ29tcGlsZXJPcHRpb25zKGV4dGVuZGVkQ29uZmlnUGF0aCwgZXhpc3RpbmdOZ0NvbXBpbGVyT3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGV4aXN0aW5nTmdDb21waWxlck9wdGlvbnM7XG4gICAgICAgIH07XG5cbiAgICBjb25zdCB7cHJvamVjdEZpbGUsIGJhc2VQYXRofSA9IGNhbGNQcm9qZWN0RmlsZUFuZEJhc2VQYXRoKHByb2plY3QsIGhvc3QpO1xuICAgIGNvbnN0IGNvbmZpZ0ZpbGVOYW1lID0gaG9zdC5yZXNvbHZlKGhvc3QucHdkKCksIHByb2plY3RGaWxlKTtcbiAgICBjb25zdCB7Y29uZmlnLCBlcnJvcn0gPSByZWFkQ29uZmlnRmlsZShwcm9qZWN0RmlsZSk7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwcm9qZWN0LFxuICAgICAgICBlcnJvcnM6IFtlcnJvcl0sXG4gICAgICAgIHJvb3ROYW1lczogW10sXG4gICAgICAgIG9wdGlvbnM6IHt9LFxuICAgICAgICBlbWl0RmxhZ3M6IGFwaS5FbWl0RmxhZ3MuRGVmYXVsdFxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgZXhpc3RpbmdDb21waWxlck9wdGlvbnM6IGFwaS5Db21waWxlck9wdGlvbnMgPSB7XG4gICAgICBnZW5EaXI6IGJhc2VQYXRoLFxuICAgICAgYmFzZVBhdGgsXG4gICAgICAuLi5yZWFkQW5ndWxhckNvbXBpbGVyT3B0aW9ucyhjb25maWdGaWxlTmFtZSksXG4gICAgICAuLi5leGlzdGluZ09wdGlvbnMsXG4gICAgfTtcblxuICAgIGNvbnN0IHBhcnNlQ29uZmlnSG9zdCA9IGNyZWF0ZVBhcnNlQ29uZmlnSG9zdChob3N0LCBmcyk7XG4gICAgY29uc3Qge29wdGlvbnMsIGVycm9ycywgZmlsZU5hbWVzOiByb290TmFtZXMsIHByb2plY3RSZWZlcmVuY2VzfSA9XG4gICAgICAgIHRzLnBhcnNlSnNvbkNvbmZpZ0ZpbGVDb250ZW50KFxuICAgICAgICAgICAgY29uZmlnLCBwYXJzZUNvbmZpZ0hvc3QsIGJhc2VQYXRoLCBleGlzdGluZ0NvbXBpbGVyT3B0aW9ucywgY29uZmlnRmlsZU5hbWUpO1xuXG4gICAgLy8gQ29lcmNlIHRvIGJvb2xlYW4gYXMgYGVuYWJsZUl2eWAgY2FuIGJlIGBuZ3RzY3x0cnVlfGZhbHNlfHVuZGVmaW5lZGAgaGVyZS5cbiAgICBvcHRpb25zLmVuYWJsZUl2eSA9ICEhKG9wdGlvbnMuZW5hYmxlSXZ5ID8/IHRydWUpO1xuXG4gICAgbGV0IGVtaXRGbGFncyA9IGFwaS5FbWl0RmxhZ3MuRGVmYXVsdDtcbiAgICBpZiAoIShvcHRpb25zLnNraXBNZXRhZGF0YUVtaXQgfHwgb3B0aW9ucy5mbGF0TW9kdWxlT3V0RmlsZSkpIHtcbiAgICAgIGVtaXRGbGFncyB8PSBhcGkuRW1pdEZsYWdzLk1ldGFkYXRhO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5za2lwVGVtcGxhdGVDb2RlZ2VuKSB7XG4gICAgICBlbWl0RmxhZ3MgPSBlbWl0RmxhZ3MgJiB+YXBpLkVtaXRGbGFncy5Db2RlZ2VuO1xuICAgIH1cbiAgICByZXR1cm4ge3Byb2plY3Q6IHByb2plY3RGaWxlLCByb290TmFtZXMsIHByb2plY3RSZWZlcmVuY2VzLCBvcHRpb25zLCBlcnJvcnMsIGVtaXRGbGFnc307XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zdCBlcnJvcnM6IHRzLkRpYWdub3N0aWNbXSA9IFt7XG4gICAgICBjYXRlZ29yeTogdHMuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFxuICAgICAgbWVzc2FnZVRleHQ6IGUuc3RhY2ssXG4gICAgICBmaWxlOiB1bmRlZmluZWQsXG4gICAgICBzdGFydDogdW5kZWZpbmVkLFxuICAgICAgbGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgICBzb3VyY2U6ICdhbmd1bGFyJyxcbiAgICAgIGNvZGU6IGFwaS5VTktOT1dOX0VSUk9SX0NPREUsXG4gICAgfV07XG4gICAgcmV0dXJuIHtwcm9qZWN0OiAnJywgZXJyb3JzLCByb290TmFtZXM6IFtdLCBvcHRpb25zOiB7fSwgZW1pdEZsYWdzOiBhcGkuRW1pdEZsYWdzLkRlZmF1bHR9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVBhcnNlQ29uZmlnSG9zdChob3N0OiBDb25maWd1cmF0aW9uSG9zdCwgZnMgPSBnZXRGaWxlU3lzdGVtKCkpOiB0cy5QYXJzZUNvbmZpZ0hvc3Qge1xuICByZXR1cm4ge1xuICAgIGZpbGVFeGlzdHM6IGhvc3QuZXhpc3RzLmJpbmQoaG9zdCksXG4gICAgcmVhZERpcmVjdG9yeTogdHMuc3lzLnJlYWREaXJlY3RvcnksXG4gICAgcmVhZEZpbGU6IGhvc3QucmVhZEZpbGUuYmluZChob3N0KSxcbiAgICB1c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzOiBmcy5pc0Nhc2VTZW5zaXRpdmUoKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RXh0ZW5kZWRDb25maWdQYXRoKFxuICAgIGNvbmZpZ0ZpbGU6IHN0cmluZywgZXh0ZW5kc1ZhbHVlOiBzdHJpbmcsIGhvc3Q6IENvbmZpZ3VyYXRpb25Ib3N0LFxuICAgIGZzOiBGaWxlU3lzdGVtKTogQWJzb2x1dGVGc1BhdGh8bnVsbCB7XG4gIGNvbnN0IHJlc3VsdCA9IGdldEV4dGVuZGVkQ29uZmlnUGF0aFdvcmtlcihjb25maWdGaWxlLCBleHRlbmRzVmFsdWUsIGhvc3QsIGZzKTtcbiAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBUcnkgdG8gcmVzb2x2ZSB0aGUgcGF0aHMgd2l0aCBhIGpzb24gZXh0ZW5zaW9uIGFwcGVuZCBhIGpzb24gZXh0ZW5zaW9uIHRvIHRoZSBmaWxlIGluIGNhc2UgaWZcbiAgLy8gaXQgaXMgbWlzc2luZyBhbmQgdGhlIHJlc29sdXRpb24gZmFpbGVkLiBUaGlzIGlzIHRvIHJlcGxpY2F0ZSBUeXBlU2NyaXB0IGJlaGF2aW91ciwgc2VlOlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvYmxvYi8yOTRhNWE3ZDc4NGE1YTk1YTgwNDhlZTk5MDQwMDk3OWE2YmMzYTFjL3NyYy9jb21waWxlci9jb21tYW5kTGluZVBhcnNlci50cyNMMjgwNlxuICByZXR1cm4gZ2V0RXh0ZW5kZWRDb25maWdQYXRoV29ya2VyKGNvbmZpZ0ZpbGUsIGAke2V4dGVuZHNWYWx1ZX0uanNvbmAsIGhvc3QsIGZzKTtcbn1cblxuZnVuY3Rpb24gZ2V0RXh0ZW5kZWRDb25maWdQYXRoV29ya2VyKFxuICAgIGNvbmZpZ0ZpbGU6IHN0cmluZywgZXh0ZW5kc1ZhbHVlOiBzdHJpbmcsIGhvc3Q6IENvbmZpZ3VyYXRpb25Ib3N0LFxuICAgIGZzOiBGaWxlU3lzdGVtKTogQWJzb2x1dGVGc1BhdGh8bnVsbCB7XG4gIGlmIChleHRlbmRzVmFsdWUuc3RhcnRzV2l0aCgnLicpIHx8IGZzLmlzUm9vdGVkKGV4dGVuZHNWYWx1ZSkpIHtcbiAgICBjb25zdCBleHRlbmRlZENvbmZpZ1BhdGggPSBob3N0LnJlc29sdmUoaG9zdC5kaXJuYW1lKGNvbmZpZ0ZpbGUpLCBleHRlbmRzVmFsdWUpO1xuICAgIGlmIChob3N0LmV4aXN0cyhleHRlbmRlZENvbmZpZ1BhdGgpKSB7XG4gICAgICByZXR1cm4gZXh0ZW5kZWRDb25maWdQYXRoO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBwYXJzZUNvbmZpZ0hvc3QgPSBjcmVhdGVQYXJzZUNvbmZpZ0hvc3QoaG9zdCwgZnMpO1xuXG4gICAgLy8gUGF0aCBpc24ndCBhIHJvb3RlZCBvciByZWxhdGl2ZSBwYXRoLCByZXNvbHZlIGxpa2UgYSBtb2R1bGUuXG4gICAgY29uc3Qge1xuICAgICAgcmVzb2x2ZWRNb2R1bGUsXG4gICAgfSA9XG4gICAgICAgIHRzLm5vZGVNb2R1bGVOYW1lUmVzb2x2ZXIoXG4gICAgICAgICAgICBleHRlbmRzVmFsdWUsIGNvbmZpZ0ZpbGUsXG4gICAgICAgICAgICB7bW9kdWxlUmVzb2x1dGlvbjogdHMuTW9kdWxlUmVzb2x1dGlvbktpbmQuTm9kZUpzLCByZXNvbHZlSnNvbk1vZHVsZTogdHJ1ZX0sXG4gICAgICAgICAgICBwYXJzZUNvbmZpZ0hvc3QpO1xuICAgIGlmIChyZXNvbHZlZE1vZHVsZSkge1xuICAgICAgcmV0dXJuIGFic29sdXRlRnJvbShyZXNvbHZlZE1vZHVsZS5yZXNvbHZlZEZpbGVOYW1lKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZXJmb3JtQ29tcGlsYXRpb25SZXN1bHQge1xuICBkaWFnbm9zdGljczogRGlhZ25vc3RpY3M7XG4gIHByb2dyYW0/OiBhcGkuUHJvZ3JhbTtcbiAgZW1pdFJlc3VsdD86IHRzLkVtaXRSZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGl0Q29kZUZyb21SZXN1bHQoZGlhZ3M6IERpYWdub3N0aWNzfHVuZGVmaW5lZCk6IG51bWJlciB7XG4gIGlmICghZGlhZ3MgfHwgZmlsdGVyRXJyb3JzQW5kV2FybmluZ3MoZGlhZ3MpLmxlbmd0aCA9PT0gMCkge1xuICAgIC8vIElmIHdlIGhhdmUgYSByZXN1bHQgYW5kIGRpZG4ndCBnZXQgYW55IGVycm9ycywgd2Ugc3VjY2VlZGVkLlxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgLy8gUmV0dXJuIDIgaWYgYW55IG9mIHRoZSBlcnJvcnMgd2VyZSB1bmtub3duLlxuICByZXR1cm4gZGlhZ3Muc29tZShkID0+IGQuc291cmNlID09PSAnYW5ndWxhcicgJiYgZC5jb2RlID09PSBhcGkuVU5LTk9XTl9FUlJPUl9DT0RFKSA/IDIgOiAxO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGVyZm9ybUNvbXBpbGF0aW9uKHtcbiAgcm9vdE5hbWVzLFxuICBvcHRpb25zLFxuICBob3N0LFxuICBvbGRQcm9ncmFtLFxuICBlbWl0Q2FsbGJhY2ssXG4gIG1lcmdlRW1pdFJlc3VsdHNDYWxsYmFjayxcbiAgZ2F0aGVyRGlhZ25vc3RpY3MgPSBkZWZhdWx0R2F0aGVyRGlhZ25vc3RpY3MsXG4gIGN1c3RvbVRyYW5zZm9ybWVycyxcbiAgZW1pdEZsYWdzID0gYXBpLkVtaXRGbGFncy5EZWZhdWx0LFxuICBtb2RpZmllZFJlc291cmNlRmlsZXMgPSBudWxsXG59OiB7XG4gIHJvb3ROYW1lczogc3RyaW5nW10sXG4gIG9wdGlvbnM6IGFwaS5Db21waWxlck9wdGlvbnMsXG4gIGhvc3Q/OiBhcGkuQ29tcGlsZXJIb3N0LFxuICBvbGRQcm9ncmFtPzogYXBpLlByb2dyYW0sXG4gIGVtaXRDYWxsYmFjaz86IGFwaS5Uc0VtaXRDYWxsYmFjayxcbiAgbWVyZ2VFbWl0UmVzdWx0c0NhbGxiYWNrPzogYXBpLlRzTWVyZ2VFbWl0UmVzdWx0c0NhbGxiYWNrLFxuICBnYXRoZXJEaWFnbm9zdGljcz86IChwcm9ncmFtOiBhcGkuUHJvZ3JhbSkgPT4gRGlhZ25vc3RpY3MsXG4gIGN1c3RvbVRyYW5zZm9ybWVycz86IGFwaS5DdXN0b21UcmFuc2Zvcm1lcnMsXG4gIGVtaXRGbGFncz86IGFwaS5FbWl0RmxhZ3MsXG4gIG1vZGlmaWVkUmVzb3VyY2VGaWxlcz86IFNldDxzdHJpbmc+fCBudWxsLFxufSk6IFBlcmZvcm1Db21waWxhdGlvblJlc3VsdCB7XG4gIGxldCBwcm9ncmFtOiBhcGkuUHJvZ3JhbXx1bmRlZmluZWQ7XG4gIGxldCBlbWl0UmVzdWx0OiB0cy5FbWl0UmVzdWx0fHVuZGVmaW5lZDtcbiAgbGV0IGFsbERpYWdub3N0aWNzOiBBcnJheTx0cy5EaWFnbm9zdGljfGFwaS5EaWFnbm9zdGljPiA9IFtdO1xuICB0cnkge1xuICAgIGlmICghaG9zdCkge1xuICAgICAgaG9zdCA9IG5nLmNyZWF0ZUNvbXBpbGVySG9zdCh7b3B0aW9uc30pO1xuICAgIH1cbiAgICBpZiAobW9kaWZpZWRSZXNvdXJjZUZpbGVzKSB7XG4gICAgICBob3N0LmdldE1vZGlmaWVkUmVzb3VyY2VGaWxlcyA9ICgpID0+IG1vZGlmaWVkUmVzb3VyY2VGaWxlcztcbiAgICB9XG5cbiAgICBwcm9ncmFtID0gbmcuY3JlYXRlUHJvZ3JhbSh7cm9vdE5hbWVzLCBob3N0LCBvcHRpb25zLCBvbGRQcm9ncmFtfSk7XG5cbiAgICBjb25zdCBiZWZvcmVEaWFncyA9IERhdGUubm93KCk7XG4gICAgYWxsRGlhZ25vc3RpY3MucHVzaCguLi5nYXRoZXJEaWFnbm9zdGljcyhwcm9ncmFtISkpO1xuICAgIGlmIChvcHRpb25zLmRpYWdub3N0aWNzKSB7XG4gICAgICBjb25zdCBhZnRlckRpYWdzID0gRGF0ZS5ub3coKTtcbiAgICAgIGFsbERpYWdub3N0aWNzLnB1c2goXG4gICAgICAgICAgY3JlYXRlTWVzc2FnZURpYWdub3N0aWMoYFRpbWUgZm9yIGRpYWdub3N0aWNzOiAke2FmdGVyRGlhZ3MgLSBiZWZvcmVEaWFnc31tcy5gKSk7XG4gICAgfVxuXG4gICAgaWYgKCFoYXNFcnJvcnMoYWxsRGlhZ25vc3RpY3MpKSB7XG4gICAgICBlbWl0UmVzdWx0ID1cbiAgICAgICAgICBwcm9ncmFtIS5lbWl0KHtlbWl0Q2FsbGJhY2ssIG1lcmdlRW1pdFJlc3VsdHNDYWxsYmFjaywgY3VzdG9tVHJhbnNmb3JtZXJzLCBlbWl0RmxhZ3N9KTtcbiAgICAgIGFsbERpYWdub3N0aWNzLnB1c2goLi4uZW1pdFJlc3VsdC5kaWFnbm9zdGljcyk7XG4gICAgICByZXR1cm4ge2RpYWdub3N0aWNzOiBhbGxEaWFnbm9zdGljcywgcHJvZ3JhbSwgZW1pdFJlc3VsdH07XG4gICAgfVxuICAgIHJldHVybiB7ZGlhZ25vc3RpY3M6IGFsbERpYWdub3N0aWNzLCBwcm9ncmFtfTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxldCBlcnJNc2c6IHN0cmluZztcbiAgICBsZXQgY29kZTogbnVtYmVyO1xuICAgIGlmIChpc1N5bnRheEVycm9yKGUpKSB7XG4gICAgICAvLyBkb24ndCByZXBvcnQgdGhlIHN0YWNrIGZvciBzeW50YXggZXJyb3JzIGFzIHRoZXkgYXJlIHdlbGwga25vd24gZXJyb3JzLlxuICAgICAgZXJyTXNnID0gZS5tZXNzYWdlO1xuICAgICAgY29kZSA9IGFwaS5ERUZBVUxUX0VSUk9SX0NPREU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVyck1zZyA9IGUuc3RhY2s7XG4gICAgICAvLyBJdCBpcyBub3QgYSBzeW50YXggZXJyb3Igd2UgbWlnaHQgaGF2ZSBhIHByb2dyYW0gd2l0aCB1bmtub3duIHN0YXRlLCBkaXNjYXJkIGl0LlxuICAgICAgcHJvZ3JhbSA9IHVuZGVmaW5lZDtcbiAgICAgIGNvZGUgPSBhcGkuVU5LTk9XTl9FUlJPUl9DT0RFO1xuICAgIH1cbiAgICBhbGxEaWFnbm9zdGljcy5wdXNoKFxuICAgICAgICB7Y2F0ZWdvcnk6IHRzLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvciwgbWVzc2FnZVRleHQ6IGVyck1zZywgY29kZSwgc291cmNlOiBhcGkuU09VUkNFfSk7XG4gICAgcmV0dXJuIHtkaWFnbm9zdGljczogYWxsRGlhZ25vc3RpY3MsIHByb2dyYW19O1xuICB9XG59XG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdEdhdGhlckRpYWdub3N0aWNzKHByb2dyYW06IGFwaS5Qcm9ncmFtKTogRGlhZ25vc3RpY3Mge1xuICBjb25zdCBhbGxEaWFnbm9zdGljczogQXJyYXk8dHMuRGlhZ25vc3RpY3xhcGkuRGlhZ25vc3RpYz4gPSBbXTtcblxuICBmdW5jdGlvbiBjaGVja0RpYWdub3N0aWNzKGRpYWdzOiBEaWFnbm9zdGljc3x1bmRlZmluZWQpIHtcbiAgICBpZiAoZGlhZ3MpIHtcbiAgICAgIGFsbERpYWdub3N0aWNzLnB1c2goLi4uZGlhZ3MpO1xuICAgICAgcmV0dXJuICFoYXNFcnJvcnMoZGlhZ3MpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGxldCBjaGVja090aGVyRGlhZ25vc3RpY3MgPSB0cnVlO1xuICAvLyBDaGVjayBwYXJhbWV0ZXIgZGlhZ25vc3RpY3NcbiAgY2hlY2tPdGhlckRpYWdub3N0aWNzID0gY2hlY2tPdGhlckRpYWdub3N0aWNzICYmXG4gICAgICBjaGVja0RpYWdub3N0aWNzKFsuLi5wcm9ncmFtLmdldFRzT3B0aW9uRGlhZ25vc3RpY3MoKSwgLi4ucHJvZ3JhbS5nZXROZ09wdGlvbkRpYWdub3N0aWNzKCldKTtcblxuICAvLyBDaGVjayBzeW50YWN0aWMgZGlhZ25vc3RpY3NcbiAgY2hlY2tPdGhlckRpYWdub3N0aWNzID1cbiAgICAgIGNoZWNrT3RoZXJEaWFnbm9zdGljcyAmJiBjaGVja0RpYWdub3N0aWNzKHByb2dyYW0uZ2V0VHNTeW50YWN0aWNEaWFnbm9zdGljcygpIGFzIERpYWdub3N0aWNzKTtcblxuICAvLyBDaGVjayBUeXBlU2NyaXB0IHNlbWFudGljIGFuZCBBbmd1bGFyIHN0cnVjdHVyZSBkaWFnbm9zdGljc1xuICBjaGVja090aGVyRGlhZ25vc3RpY3MgPVxuICAgICAgY2hlY2tPdGhlckRpYWdub3N0aWNzICYmXG4gICAgICBjaGVja0RpYWdub3N0aWNzKFxuICAgICAgICAgIFsuLi5wcm9ncmFtLmdldFRzU2VtYW50aWNEaWFnbm9zdGljcygpLCAuLi5wcm9ncmFtLmdldE5nU3RydWN0dXJhbERpYWdub3N0aWNzKCldKTtcblxuICAvLyBDaGVjayBBbmd1bGFyIHNlbWFudGljIGRpYWdub3N0aWNzXG4gIGNoZWNrT3RoZXJEaWFnbm9zdGljcyA9XG4gICAgICBjaGVja090aGVyRGlhZ25vc3RpY3MgJiYgY2hlY2tEaWFnbm9zdGljcyhwcm9ncmFtLmdldE5nU2VtYW50aWNEaWFnbm9zdGljcygpIGFzIERpYWdub3N0aWNzKTtcblxuICByZXR1cm4gYWxsRGlhZ25vc3RpY3M7XG59XG5cbmZ1bmN0aW9uIGhhc0Vycm9ycyhkaWFnczogRGlhZ25vc3RpY3MpIHtcbiAgcmV0dXJuIGRpYWdzLnNvbWUoZCA9PiBkLmNhdGVnb3J5ID09PSB0cy5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IpO1xufVxuIl19
|
package/src/version.js
CHANGED
|
@@ -23,6 +23,6 @@
|
|
|
23
23
|
* Entry point for all public APIs of the common package.
|
|
24
24
|
*/
|
|
25
25
|
var compiler_1 = require("@angular/compiler");
|
|
26
|
-
exports.VERSION = new compiler_1.Version('11.2.
|
|
26
|
+
exports.VERSION = new compiler_1.Version('11.2.9');
|
|
27
27
|
});
|
|
28
28
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7SUFFSDs7OztPQUlHO0lBRUgsOENBQTBDO0lBRTdCLFFBQUEsT0FBTyxHQUFHLElBQUksa0JBQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKlxuICogQG1vZHVsZVxuICogQGRlc2NyaXB0aW9uXG4gKiBFbnRyeSBwb2ludCBmb3IgYWxsIHB1YmxpYyBBUElzIG9mIHRoZSBjb21tb24gcGFja2FnZS5cbiAqL1xuXG5pbXBvcnQge1ZlcnNpb259IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcblxuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBuZXcgVmVyc2lvbignMC4wLjAtUExBQ0VIT0xERVInKTtcbiJdfQ==
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/// <amd-module name="@angular/compiler-cli/src/ngtsc/perf/src/tracking" />
|
|
2
|
-
import * as ts from 'typescript';
|
|
3
|
-
import { DeclarationNode } from '../../reflection';
|
|
4
|
-
import { PerfRecorder } from './api';
|
|
5
|
-
export declare class PerfTracker implements PerfRecorder {
|
|
6
|
-
private zeroTime;
|
|
7
|
-
private nextSpanId;
|
|
8
|
-
private log;
|
|
9
|
-
readonly enabled = true;
|
|
10
|
-
private constructor();
|
|
11
|
-
static zeroedToNow(): PerfTracker;
|
|
12
|
-
mark(name: string, node?: DeclarationNode, category?: string, detail?: string): void;
|
|
13
|
-
start(name: string, node?: DeclarationNode, category?: string, detail?: string): number;
|
|
14
|
-
stop(span: number): void;
|
|
15
|
-
private makeLogMessage;
|
|
16
|
-
asJson(): unknown;
|
|
17
|
-
serializeToFile(target: string, host: ts.CompilerHost): void;
|
|
18
|
-
}
|
|
19
|
-
export interface PerfLogEvent {
|
|
20
|
-
name?: string;
|
|
21
|
-
span?: number;
|
|
22
|
-
file?: string;
|
|
23
|
-
declaration?: string;
|
|
24
|
-
type: PerfLogEventType;
|
|
25
|
-
category?: string;
|
|
26
|
-
detail?: string;
|
|
27
|
-
stamp: number;
|
|
28
|
-
}
|
|
29
|
-
export declare enum PerfLogEventType {
|
|
30
|
-
SPAN_OPEN = 0,
|
|
31
|
-
SPAN_CLOSE = 1,
|
|
32
|
-
MARK = 2
|
|
33
|
-
}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
(function (factory) {
|
|
2
|
-
if (typeof module === "object" && typeof module.exports === "object") {
|
|
3
|
-
var v = factory(require, exports);
|
|
4
|
-
if (v !== undefined) module.exports = v;
|
|
5
|
-
}
|
|
6
|
-
else if (typeof define === "function" && define.amd) {
|
|
7
|
-
define("@angular/compiler-cli/src/ngtsc/perf/src/tracking", ["require", "exports", "fs", "typescript", "@angular/compiler-cli/src/ngtsc/file_system", "@angular/compiler-cli/src/ngtsc/perf/src/clock"], factory);
|
|
8
|
-
}
|
|
9
|
-
})(function (require, exports) {
|
|
10
|
-
"use strict";
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.PerfLogEventType = exports.PerfTracker = void 0;
|
|
13
|
-
/**
|
|
14
|
-
* @license
|
|
15
|
-
* Copyright Google LLC All Rights Reserved.
|
|
16
|
-
*
|
|
17
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
18
|
-
* found in the LICENSE file at https://angular.io/license
|
|
19
|
-
*/
|
|
20
|
-
/// <reference types="node" />
|
|
21
|
-
var fs = require("fs");
|
|
22
|
-
var ts = require("typescript");
|
|
23
|
-
var file_system_1 = require("@angular/compiler-cli/src/ngtsc/file_system");
|
|
24
|
-
var clock_1 = require("@angular/compiler-cli/src/ngtsc/perf/src/clock");
|
|
25
|
-
var PerfTracker = /** @class */ (function () {
|
|
26
|
-
function PerfTracker(zeroTime) {
|
|
27
|
-
this.zeroTime = zeroTime;
|
|
28
|
-
this.nextSpanId = 1;
|
|
29
|
-
this.log = [];
|
|
30
|
-
this.enabled = true;
|
|
31
|
-
}
|
|
32
|
-
PerfTracker.zeroedToNow = function () {
|
|
33
|
-
return new PerfTracker(clock_1.mark());
|
|
34
|
-
};
|
|
35
|
-
PerfTracker.prototype.mark = function (name, node, category, detail) {
|
|
36
|
-
var msg = this.makeLogMessage(PerfLogEventType.MARK, name, node, category, detail, undefined);
|
|
37
|
-
this.log.push(msg);
|
|
38
|
-
};
|
|
39
|
-
PerfTracker.prototype.start = function (name, node, category, detail) {
|
|
40
|
-
var span = this.nextSpanId++;
|
|
41
|
-
var msg = this.makeLogMessage(PerfLogEventType.SPAN_OPEN, name, node, category, detail, span);
|
|
42
|
-
this.log.push(msg);
|
|
43
|
-
return span;
|
|
44
|
-
};
|
|
45
|
-
PerfTracker.prototype.stop = function (span) {
|
|
46
|
-
this.log.push({
|
|
47
|
-
type: PerfLogEventType.SPAN_CLOSE,
|
|
48
|
-
span: span,
|
|
49
|
-
stamp: clock_1.timeSinceInMicros(this.zeroTime),
|
|
50
|
-
});
|
|
51
|
-
};
|
|
52
|
-
PerfTracker.prototype.makeLogMessage = function (type, name, node, category, detail, span) {
|
|
53
|
-
var msg = {
|
|
54
|
-
type: type,
|
|
55
|
-
name: name,
|
|
56
|
-
stamp: clock_1.timeSinceInMicros(this.zeroTime),
|
|
57
|
-
};
|
|
58
|
-
if (category !== undefined) {
|
|
59
|
-
msg.category = category;
|
|
60
|
-
}
|
|
61
|
-
if (detail !== undefined) {
|
|
62
|
-
msg.detail = detail;
|
|
63
|
-
}
|
|
64
|
-
if (span !== undefined) {
|
|
65
|
-
msg.span = span;
|
|
66
|
-
}
|
|
67
|
-
if (node !== undefined) {
|
|
68
|
-
msg.file = node.getSourceFile().fileName;
|
|
69
|
-
if (!ts.isSourceFile(node)) {
|
|
70
|
-
var name_1 = ts.getNameOfDeclaration(node);
|
|
71
|
-
if (name_1 !== undefined && ts.isIdentifier(name_1)) {
|
|
72
|
-
msg.declaration = name_1.text;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
return msg;
|
|
77
|
-
};
|
|
78
|
-
PerfTracker.prototype.asJson = function () {
|
|
79
|
-
return this.log;
|
|
80
|
-
};
|
|
81
|
-
PerfTracker.prototype.serializeToFile = function (target, host) {
|
|
82
|
-
var json = JSON.stringify(this.log, null, 2);
|
|
83
|
-
if (target.startsWith('ts:')) {
|
|
84
|
-
target = target.substr('ts:'.length);
|
|
85
|
-
var outFile = file_system_1.resolve(host.getCurrentDirectory(), target);
|
|
86
|
-
host.writeFile(outFile, json, false);
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
var outFile = file_system_1.resolve(host.getCurrentDirectory(), target);
|
|
90
|
-
fs.writeFileSync(outFile, json);
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
return PerfTracker;
|
|
94
|
-
}());
|
|
95
|
-
exports.PerfTracker = PerfTracker;
|
|
96
|
-
var PerfLogEventType;
|
|
97
|
-
(function (PerfLogEventType) {
|
|
98
|
-
PerfLogEventType[PerfLogEventType["SPAN_OPEN"] = 0] = "SPAN_OPEN";
|
|
99
|
-
PerfLogEventType[PerfLogEventType["SPAN_CLOSE"] = 1] = "SPAN_CLOSE";
|
|
100
|
-
PerfLogEventType[PerfLogEventType["MARK"] = 2] = "MARK";
|
|
101
|
-
})(PerfLogEventType = exports.PerfLogEventType || (exports.PerfLogEventType = {}));
|
|
102
|
-
});
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2tpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL3BlcmYvc3JjL3RyYWNraW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUFBOzs7Ozs7T0FNRztJQUNILDhCQUE4QjtJQUM5Qix1QkFBeUI7SUFDekIsK0JBQWlDO0lBQ2pDLDJFQUEwQztJQUcxQyx3RUFBd0Q7SUFFeEQ7UUFNRSxxQkFBNEIsUUFBZ0I7WUFBaEIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtZQUxwQyxlQUFVLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsUUFBRyxHQUFtQixFQUFFLENBQUM7WUFFeEIsWUFBTyxHQUFHLElBQUksQ0FBQztRQUV1QixDQUFDO1FBRXpDLHVCQUFXLEdBQWxCO1lBQ0UsT0FBTyxJQUFJLFdBQVcsQ0FBQyxZQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFFRCwwQkFBSSxHQUFKLFVBQUssSUFBWSxFQUFFLElBQXNCLEVBQUUsUUFBaUIsRUFBRSxNQUFlO1lBQzNFLElBQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNoRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixDQUFDO1FBRUQsMkJBQUssR0FBTCxVQUFNLElBQVksRUFBRSxJQUFzQixFQUFFLFFBQWlCLEVBQUUsTUFBZTtZQUM1RSxJQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDL0IsSUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFR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SlcsZ0JBQWdCLEdBQWhCLHdCQUFnQixLQUFoQix3QkFBZ0IsUUFJM0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbi8vLyA8cmVmZXJlbmNlIHR5cGVzPVwibm9kZVwiIC8+XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7cmVzb2x2ZX0gZnJvbSAnLi4vLi4vZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtEZWNsYXJhdGlvbk5vZGV9IGZyb20gJy4uLy4uL3JlZmxlY3Rpb24nO1xuaW1wb3J0IHtQZXJmUmVjb3JkZXJ9IGZyb20gJy4vYXBpJztcbmltcG9ydCB7SHJUaW1lLCBtYXJrLCB0aW1lU2luY2VJbk1pY3Jvc30gZnJvbSAnLi9jbG9jayc7XG5cbmV4cG9ydCBjbGFzcyBQZXJmVHJhY2tlciBpbXBsZW1lbnRzIFBlcmZSZWNvcmRlciB7XG4gIHByaXZhdGUgbmV4dFNwYW5JZCA9IDE7XG4gIHByaXZhdGUgbG9nOiBQZXJmTG9nRXZlbnRbXSA9IFtdO1xuXG4gIHJlYWRvbmx5IGVuYWJsZWQgPSB0cnVlO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHJpdmF0ZSB6ZXJvVGltZTogSHJUaW1lKSB7fVxuXG4gIHN0YXRpYyB6ZXJvZWRUb05vdygpOiBQZXJmVHJhY2tlciB7XG4gICAgcmV0dXJuIG5ldyBQZXJmVHJhY2tlcihtYXJrKCkpO1xuICB9XG5cbiAgbWFyayhuYW1lOiBzdHJpbmcsIG5vZGU/OiBEZWNsYXJhdGlvbk5vZGUsIGNhdGVnb3J5Pzogc3RyaW5nLCBkZXRhaWw/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBtc2cgPSB0aGlzLm1ha2VMb2dNZXNzYWdlKFBlcmZMb2dFdmVudFR5cGUuTUFSSywgbmFtZSwgbm9kZSwgY2F0ZWdvcnksIGRldGFpbCwgdW5kZWZpbmVkKTtcbiAgICB0aGlzLmxvZy5wdXNoKG1zZyk7XG4gIH1cblxuICBzdGFydChuYW1lOiBzdHJpbmcsIG5vZGU/OiBEZWNsYXJhdGlvbk5vZGUsIGNhdGVnb3J5Pzogc3RyaW5nLCBkZXRhaWw/OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGNvbnN0IHNwYW4gPSB0aGlzLm5leHRTcGFuSWQrKztcbiAgICBjb25zdCBtc2cgPSB0aGlzLm1ha2VMb2dNZXNzYWdlKFBlcmZMb2dFdmVudFR5cGUuU1BBTl9PUEVOLCBuYW1lLCBub2RlLCBjYXRlZ29yeSwgZGV0YWlsLCBzcGFuKTtcbiAgICB0aGlzLmxvZy5wdXNoKG1zZyk7XG4gICAgcmV0dXJuIHNwYW47XG4gIH1cblxuICBzdG9wKHNwYW46IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMubG9nLnB1c2goe1xuICAgICAgdHlwZTogUGVyZkxvZ0V2ZW50VHlwZS5TUEFOX0NMT1NFLFxuICAgICAgc3BhbixcbiAgICAgIHN0YW1wOiB0aW1lU2luY2VJbk1pY3Jvcyh0aGlzLnplcm9UaW1lKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbWFrZUxvZ01lc3NhZ2UoXG4gICAgICB0eXBlOiBQZXJmTG9nRXZlbnRUeXBlLCBuYW1lOiBzdHJpbmcsIG5vZGU6IERlY2xhcmF0aW9uTm9kZXx1bmRlZmluZWQsXG4gICAgICBjYXRlZ29yeTogc3RyaW5nfHVuZGVmaW5lZCwgZGV0YWlsOiBzdHJpbmd8dW5kZWZpbmVkLCBzcGFuOiBudW1iZXJ8dW5kZWZpbmVkKTogUGVyZkxvZ0V2ZW50IHtcbiAgICBjb25zdCBtc2c6IFBlcmZMb2dFdmVudCA9IHtcbiAgICAgIHR5cGUsXG4gICAgICBuYW1lLFxuICAgICAgc3RhbXA6IHRpbWVTaW5jZUluTWljcm9zKHRoaXMuemVyb1RpbWUpLFxuICAgIH07XG4gICAgaWYgKGNhdGVnb3J5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG1zZy5jYXRlZ29yeSA9IGNhdGVnb3J5O1xuICAgIH1cbiAgICBpZiAoZGV0YWlsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG1zZy5kZXRhaWwgPSBkZXRhaWw7XG4gICAgfVxuICAgIGlmIChzcGFuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG1zZy5zcGFuID0gc3BhbjtcbiAgICB9XG4gICAgaWYgKG5vZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbXNnLmZpbGUgPSBub2RlLmdldFNvdXJjZUZpbGUoKS5maWxlTmFtZTtcbiAgICAgIGlmICghdHMuaXNTb3VyY2VGaWxlKG5vZGUpKSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSB0cy5nZXROYW1lT2ZEZWNsYXJhdGlvbihub2RlKTtcbiAgICAgICAgaWYgKG5hbWUgIT09IHVuZGVmaW5lZCAmJiB0cy5pc0lkZW50aWZpZXIobmFtZSkpIHtcbiAgICAgICAgICBtc2cuZGVjbGFyYXRpb24gPSBuYW1lLnRleHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1zZztcbiAgfVxuXG4gIGFzSnNvbigpOiB1bmtub3duIHtcbiAgICByZXR1cm4gdGhpcy5sb2c7XG4gIH1cblxuICBzZXJpYWxpemVUb0ZpbGUodGFyZ2V0OiBzdHJpbmcsIGhvc3Q6IHRzLkNvbXBpbGVySG9zdCk6IHZvaWQge1xuICAgIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeSh0aGlzLmxvZywgbnVsbCwgMik7XG5cbiAgICBpZiAodGFyZ2V0LnN0YXJ0c1dpdGgoJ3RzOicpKSB7XG4gICAgICB0YXJnZXQgPSB0YXJnZXQuc3Vic3RyKCd0czonLmxlbmd0aCk7XG4gICAgICBjb25zdCBvdXRGaWxlID0gcmVzb2x2ZShob3N0LmdldEN1cnJlbnREaXJlY3RvcnkoKSwgdGFyZ2V0KTtcbiAgICAgIGhvc3Qud3JpdGVGaWxlKG91dEZpbGUsIGpzb24sIGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgb3V0RmlsZSA9IHJlc29sdmUoaG9zdC5nZXRDdXJyZW50RGlyZWN0b3J5KCksIHRhcmdldCk7XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKG91dEZpbGUsIGpzb24pO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBlcmZMb2dFdmVudCB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHNwYW4/OiBudW1iZXI7XG4gIGZpbGU/OiBzdHJpbmc7XG4gIGRlY2xhcmF0aW9uPzogc3RyaW5nO1xuICB0eXBlOiBQZXJmTG9nRXZlbnRUeXBlO1xuICBjYXRlZ29yeT86IHN0cmluZztcbiAgZGV0YWlsPzogc3RyaW5nO1xuICBzdGFtcDogbnVtYmVyO1xufVxuXG5leHBvcnQgZW51bSBQZXJmTG9nRXZlbnRUeXBlIHtcbiAgU1BBTl9PUEVOLFxuICBTUEFOX0NMT1NFLFxuICBNQVJLLFxufVxuIl19
|