@angular/compiler-cli 7.2.4 → 7.2.8

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.
Files changed (39) hide show
  1. package/index.js +1 -1
  2. package/package.json +4 -4
  3. package/src/diagnostics/expression_diagnostics.js +98 -151
  4. package/src/diagnostics/expression_type.js +122 -139
  5. package/src/diagnostics/translate_diagnostics.js +12 -12
  6. package/src/diagnostics/typescript_symbols.js +296 -514
  7. package/src/diagnostics/typescript_version.js +8 -8
  8. package/src/extract_i18n.js +11 -13
  9. package/src/main.js +80 -78
  10. package/src/metadata/bundle_index_host.js +39 -51
  11. package/src/metadata/bundler.js +214 -256
  12. package/src/metadata/collector.js +235 -317
  13. package/src/metadata/evaluator.js +146 -162
  14. package/src/metadata/index.js +1 -1
  15. package/src/metadata/index_writer.js +25 -47
  16. package/src/metadata/symbols.js +44 -62
  17. package/src/ngcc/src/packages/build_marker.d.ts +1 -1
  18. package/src/ngcc/src/packages/build_marker.js +1 -1
  19. package/src/ngtools_api.js +29 -44
  20. package/src/ngtools_api2.js +9 -11
  21. package/src/ngtsc/program.js +122 -162
  22. package/src/ngtsc/resource_loader.js +35 -50
  23. package/src/perform_compile.js +87 -93
  24. package/src/perform_watch.js +50 -51
  25. package/src/transformers/compiler_host.js +158 -171
  26. package/src/transformers/inline_resources.js +54 -57
  27. package/src/transformers/lower_expressions.js +87 -101
  28. package/src/transformers/metadata_cache.js +21 -50
  29. package/src/transformers/metadata_reader.js +17 -18
  30. package/src/transformers/nocollapse_hack.js +9 -9
  31. package/src/transformers/node_emitter.js +214 -237
  32. package/src/transformers/node_emitter_transform.js +25 -21
  33. package/src/transformers/program.js +336 -440
  34. package/src/transformers/r3_metadata_transform.js +21 -34
  35. package/src/transformers/r3_strip_decorators.js +29 -31
  36. package/src/transformers/r3_transform.js +7 -8
  37. package/src/transformers/tsc_pass_through.js +33 -37
  38. package/src/transformers/util.js +18 -30
  39. package/src/version.js +3 -3
@@ -11,17 +11,21 @@
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/transformers/node_emitter_transform", ["require", "exports", "tslib", "typescript", "@angular/compiler-cli/src/transformers/node_emitter", "@angular/compiler-cli/src/transformers/util"], factory);
14
+ define("@angular/compiler-cli/src/transformers/node_emitter_transform", ["require", "exports", "typescript", "@angular/compiler-cli/src/transformers/node_emitter", "@angular/compiler-cli/src/transformers/util"], factory);
15
15
  }
16
16
  })(function (require, exports) {
17
17
  "use strict";
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
- var tslib_1 = require("tslib");
20
- var ts = require("typescript");
21
- var node_emitter_1 = require("@angular/compiler-cli/src/transformers/node_emitter");
22
- var util_1 = require("@angular/compiler-cli/src/transformers/util");
19
+ const ts = require("typescript");
20
+ const node_emitter_1 = require("@angular/compiler-cli/src/transformers/node_emitter");
21
+ const util_1 = require("@angular/compiler-cli/src/transformers/util");
23
22
  function getPreamble(original) {
24
- return "/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n * " + original + "\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */";
23
+ return `/**
24
+ * @fileoverview This file was generated by the Angular template compiler. Do not edit.
25
+ * ${original}
26
+ * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}
27
+ * tslint:disable
28
+ */`;
25
29
  }
26
30
  /**
27
31
  * Returns a transformer that does two things for generated files (ngfactory etc):
@@ -33,20 +37,20 @@
33
37
  */
34
38
  function getAngularEmitterTransformFactory(generatedFiles, program) {
35
39
  return function () {
36
- var emitter = new node_emitter_1.TypeScriptNodeEmitter();
40
+ const emitter = new node_emitter_1.TypeScriptNodeEmitter();
37
41
  return function (sourceFile) {
38
- var g = generatedFiles.get(sourceFile.fileName);
39
- var orig = g && program.getSourceFile(g.srcFileUrl);
40
- var originalComment = '';
42
+ const g = generatedFiles.get(sourceFile.fileName);
43
+ const orig = g && program.getSourceFile(g.srcFileUrl);
44
+ let originalComment = '';
41
45
  if (orig)
42
46
  originalComment = getFileoverviewComment(orig);
43
- var preamble = getPreamble(originalComment);
47
+ const preamble = getPreamble(originalComment);
44
48
  if (g && g.stmts) {
45
- var orig_1 = program.getSourceFile(g.srcFileUrl);
46
- var originalComment_1 = '';
47
- if (orig_1)
48
- originalComment_1 = getFileoverviewComment(orig_1);
49
- var _a = tslib_1.__read(emitter.updateSourceFile(sourceFile, g.stmts, preamble), 1), newSourceFile = _a[0];
49
+ const orig = program.getSourceFile(g.srcFileUrl);
50
+ let originalComment = '';
51
+ if (orig)
52
+ originalComment = getFileoverviewComment(orig);
53
+ const [newSourceFile] = emitter.updateSourceFile(sourceFile, g.stmts, preamble);
50
54
  return newSourceFile;
51
55
  }
52
56
  else if (util_1.GENERATED_FILES.test(sourceFile.fileName)) {
@@ -66,22 +70,22 @@
66
70
  * in the given source file. Returns the empty string if no such comment can be found.
67
71
  */
68
72
  function getFileoverviewComment(sourceFile) {
69
- var trivia = sourceFile.getFullText().substring(0, sourceFile.getStart());
70
- var leadingComments = ts.getLeadingCommentRanges(trivia, 0);
73
+ const trivia = sourceFile.getFullText().substring(0, sourceFile.getStart());
74
+ const leadingComments = ts.getLeadingCommentRanges(trivia, 0);
71
75
  if (!leadingComments || leadingComments.length === 0)
72
76
  return '';
73
- var comment = leadingComments[0];
77
+ const comment = leadingComments[0];
74
78
  if (comment.kind !== ts.SyntaxKind.MultiLineCommentTrivia)
75
79
  return '';
76
80
  // Only comments separated with a \n\n from the file contents are considered file-level comments
77
81
  // in TypeScript.
78
82
  if (sourceFile.getFullText().substring(comment.end, comment.end + 2) !== '\n\n')
79
83
  return '';
80
- var commentText = sourceFile.getFullText().substring(comment.pos, comment.end);
84
+ const commentText = sourceFile.getFullText().substring(comment.pos, comment.end);
81
85
  // Closure Compiler ignores @suppress and similar if the comment contains @license.
82
86
  if (commentText.indexOf('@license') !== -1)
83
87
  return '';
84
88
  return commentText.replace(/^\/\*\*/, '').replace(/ ?\*\/$/, '');
85
89
  }
86
90
  });
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZV9lbWl0dGVyX3RyYW5zZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvdHJhbnNmb3JtZXJzL25vZGVfZW1pdHRlcl90cmFuc2Zvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7O0lBR0gsK0JBQWlDO0lBRWpDLG9GQUFxRDtJQUNyRCxvRUFBdUM7SUFFdkMsU0FBUyxXQUFXLENBQUMsUUFBZ0I7UUFDbkMsT0FBTyxzR0FFSixRQUFRLHFIQUdULENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFNBQWdCLGlDQUFpQyxDQUM3QyxjQUEwQyxFQUFFLE9BQW1CO1FBRWpFLE9BQU87WUFDTCxJQUFNLE9BQU8sR0FBRyxJQUFJLG9DQUFxQixFQUFFLENBQUM7WUFDNUMsT0FBTyxVQUFTLFVBQXlCO2dCQUN2QyxJQUFNLENBQUMsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDbEQsSUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLGVBQWUsR0FBRyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksSUFBSTtvQkFBRSxlQUFlLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3pELElBQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRTtvQkFDaEIsSUFBTSxNQUFJLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ2pELElBQUksaUJBQWUsR0FBRyxFQUFFLENBQUM7b0JBQ3pCLElBQUksTUFBSTt3QkFBRSxpQkFBZSxHQUFHLHNCQUFzQixDQUFDLE1BQUksQ0FBQyxDQUFDO29CQUNuRCxJQUFBLCtFQUF5RSxFQUF4RSxxQkFBd0UsQ0FBQztvQkFDaEYsT0FBTyxhQUFhLENBQUM7aUJBQ3RCO3FCQUFNLElBQUksc0JBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUNwRCxpRkFBaUY7b0JBQ2pGLHdCQUF3QjtvQkFDeEIsbUZBQW1GO29CQUNuRixrQ0FBa0M7b0JBQ2xDLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUMxQixVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDekU7Z0JBQ0QsT0FBTyxVQUFVLENBQUM7WUFDcEIsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQTVCRCw4RUE0QkM7SUFFRDs7O09BR0c7SUFDSCxTQUFTLHNCQUFzQixDQUFDLFVBQXlCO1FBQ3ZELElBQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLElBQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLGVBQWUsSUFBSSxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNoRSxJQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsc0JBQXNCO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDckUsZ0dBQWdHO1FBQ2hHLGlCQUFpQjtRQUNqQixJQUFJLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLE1BQU07WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUMzRixJQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pGLG1GQUFtRjtRQUNuRixJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDdEQsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7R2VuZXJhdGVkRmlsZX0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7VHlwZVNjcmlwdE5vZGVFbWl0dGVyfSBmcm9tICcuL25vZGVfZW1pdHRlcic7XG5pbXBvcnQge0dFTkVSQVRFRF9GSUxFU30gZnJvbSAnLi91dGlsJztcblxuZnVuY3Rpb24gZ2V0UHJlYW1ibGUob3JpZ2luYWw6IHN0cmluZykge1xuICByZXR1cm4gYC8qKlxuICogQGZpbGVvdmVydmlldyBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSB0aGUgQW5ndWxhciB0ZW1wbGF0ZSBjb21waWxlci4gRG8gbm90IGVkaXQuXG4gKiAke29yaWdpbmFsfVxuICogQHN1cHByZXNzIHtzdXNwaWNpb3VzQ29kZSx1c2VsZXNzQ29kZSxtaXNzaW5nUHJvcGVydGllcyxtaXNzaW5nT3ZlcnJpZGUsY2hlY2tUeXBlc31cbiAqIHRzbGludDpkaXNhYmxlXG4gKi9gO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSB0cmFuc2Zvcm1lciB0aGF0IGRvZXMgdHdvIHRoaW5ncyBmb3IgZ2VuZXJhdGVkIGZpbGVzIChuZ2ZhY3RvcnkgZXRjKTpcbiAqIC0gYWRkcyBhIGZpbGVvdmVydmlldyBKU0RvYyBjb21tZW50IGNvbnRhaW5pbmcgQ2xvc3VyZSBDb21waWxlciBzcGVjaWZpYyBcInN1cHByZXNzXCJpb25zIGluIEpTRG9jLlxuICogICBUaGUgbmV3IGNvbW1lbnQgd2lsbCBjb250YWluIGFueSBmaWxlb3ZlcnZpZXcgY29tbWVudCB0ZXh0IGZyb20gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlIHRoaXNcbiAqICAgZmlsZSB3YXMgZ2VuZXJhdGVkIGZyb20uXG4gKiAtIHVwZGF0ZXMgZ2VuZXJhdGVkIGZpbGVzIHRoYXQgYXJlIG5vdCBpbiB0aGUgZ2l2ZW4gbWFwIG9mIGdlbmVyYXRlZEZpbGVzIHRvIGhhdmUgYW4gZW1wdHlcbiAqICAgbGlzdCBvZiBzdGF0ZW1lbnRzIGFzIHRoZWlyIGJvZHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbmd1bGFyRW1pdHRlclRyYW5zZm9ybUZhY3RvcnkoXG4gICAgZ2VuZXJhdGVkRmlsZXM6IE1hcDxzdHJpbmcsIEdlbmVyYXRlZEZpbGU+LCBwcm9ncmFtOiB0cy5Qcm9ncmFtKTogKCkgPT5cbiAgICAoc291cmNlRmlsZTogdHMuU291cmNlRmlsZSkgPT4gdHMuU291cmNlRmlsZSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICBjb25zdCBlbWl0dGVyID0gbmV3IFR5cGVTY3JpcHROb2RlRW1pdHRlcigpO1xuICAgIHJldHVybiBmdW5jdGlvbihzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlKTogdHMuU291cmNlRmlsZSB7XG4gICAgICBjb25zdCBnID0gZ2VuZXJhdGVkRmlsZXMuZ2V0KHNvdXJjZUZpbGUuZmlsZU5hbWUpO1xuICAgICAgY29uc3Qgb3JpZyA9IGcgJiYgcHJvZ3JhbS5nZXRTb3VyY2VGaWxlKGcuc3JjRmlsZVVybCk7XG4gICAgICBsZXQgb3JpZ2luYWxDb21tZW50ID0gJyc7XG4gICAgICBpZiAob3JpZykgb3JpZ2luYWxDb21tZW50ID0gZ2V0RmlsZW92ZXJ2aWV3Q29tbWVudChvcmlnKTtcbiAgICAgIGNvbnN0IHByZWFtYmxlID0gZ2V0UHJlYW1ibGUob3JpZ2luYWxDb21tZW50KTtcbiAgICAgIGlmIChnICYmIGcuc3RtdHMpIHtcbiAgICAgICAgY29uc3Qgb3JpZyA9IHByb2dyYW0uZ2V0U291cmNlRmlsZShnLnNyY0ZpbGVVcmwpO1xuICAgICAgICBsZXQgb3JpZ2luYWxDb21tZW50ID0gJyc7XG4gICAgICAgIGlmIChvcmlnKSBvcmlnaW5hbENvbW1lbnQgPSBnZXRGaWxlb3ZlcnZpZXdDb21tZW50KG9yaWcpO1xuICAgICAgICBjb25zdCBbbmV3U291cmNlRmlsZV0gPSBlbWl0dGVyLnVwZGF0ZVNvdXJjZUZpbGUoc291cmNlRmlsZSwgZy5zdG10cywgcHJlYW1ibGUpO1xuICAgICAgICByZXR1cm4gbmV3U291cmNlRmlsZTtcbiAgICAgIH0gZWxzZSBpZiAoR0VORVJBVEVEX0ZJTEVTLnRlc3Qoc291cmNlRmlsZS5maWxlTmFtZSkpIHtcbiAgICAgICAgLy8gVGhlIGZpbGUgc2hvdWxkIGJlIGVtcHR5LCBidXQgZW1pdHRlci51cGRhdGVTb3VyY2VGaWxlIHdvdWxkIHN0aWxsIGFkZCBpbXBvcnRzXG4gICAgICAgIC8vIGFuZCB2YXJpb3VzIG1pbnV0aWFlLlxuICAgICAgICAvLyBDbGVhciBvdXQgdGhlIHNvdXJjZSBmaWxlIGVudGlyZWx5LCBvbmx5IGluY2x1ZGluZyB0aGUgcHJlYW1ibGUgY29tbWVudCwgc28gdGhhdFxuICAgICAgICAvLyBuZ2MgcHJvZHVjZXMgYW4gZW1wdHkgLmpzIGZpbGUuXG4gICAgICAgIHJldHVybiB0cy51cGRhdGVTb3VyY2VGaWxlTm9kZShcbiAgICAgICAgICAgIHNvdXJjZUZpbGUsIFtlbWl0dGVyLmNyZWF0ZUNvbW1lbnRTdGF0ZW1lbnQoc291cmNlRmlsZSwgcHJlYW1ibGUpXSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc291cmNlRmlsZTtcbiAgICB9O1xuICB9O1xufVxuXG4vKipcbiAqIFBhcnNlcyBhbmQgcmV0dXJucyB0aGUgY29tbWVudCB0ZXh0ICh3aXRob3V0IHN0YXJ0IGFuZCBlbmQgbWFya2Vycykgb2YgYSBcXEBmaWxlb3ZlcnZpZXcgY29tbWVudFxuICogaW4gdGhlIGdpdmVuIHNvdXJjZSBmaWxlLiBSZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcgaWYgbm8gc3VjaCBjb21tZW50IGNhbiBiZSBmb3VuZC5cbiAqL1xuZnVuY3Rpb24gZ2V0RmlsZW92ZXJ2aWV3Q29tbWVudChzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlKTogc3RyaW5nIHtcbiAgY29uc3QgdHJpdmlhID0gc291cmNlRmlsZS5nZXRGdWxsVGV4dCgpLnN1YnN0cmluZygwLCBzb3VyY2VGaWxlLmdldFN0YXJ0KCkpO1xuICBjb25zdCBsZWFkaW5nQ29tbWVudHMgPSB0cy5nZXRMZWFkaW5nQ29tbWVudFJhbmdlcyh0cml2aWEsIDApO1xuICBpZiAoIWxlYWRpbmdDb21tZW50cyB8fCBsZWFkaW5nQ29tbWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gIGNvbnN0IGNvbW1lbnQgPSBsZWFkaW5nQ29tbWVudHNbMF07XG4gIGlmIChjb21tZW50LmtpbmQgIT09IHRzLlN5bnRheEtpbmQuTXVsdGlMaW5lQ29tbWVudFRyaXZpYSkgcmV0dXJuICcnO1xuICAvLyBPbmx5IGNvbW1lbnRzIHNlcGFyYXRlZCB3aXRoIGEgXFxuXFxuIGZyb20gdGhlIGZpbGUgY29udGVudHMgYXJlIGNvbnNpZGVyZWQgZmlsZS1sZXZlbCBjb21tZW50c1xuICAvLyBpbiBUeXBlU2NyaXB0LlxuICBpZiAoc291cmNlRmlsZS5nZXRGdWxsVGV4dCgpLnN1YnN0cmluZyhjb21tZW50LmVuZCwgY29tbWVudC5lbmQgKyAyKSAhPT0gJ1xcblxcbicpIHJldHVybiAnJztcbiAgY29uc3QgY29tbWVudFRleHQgPSBzb3VyY2VGaWxlLmdldEZ1bGxUZXh0KCkuc3Vic3RyaW5nKGNvbW1lbnQucG9zLCBjb21tZW50LmVuZCk7XG4gIC8vIENsb3N1cmUgQ29tcGlsZXIgaWdub3JlcyBAc3VwcHJlc3MgYW5kIHNpbWlsYXIgaWYgdGhlIGNvbW1lbnQgY29udGFpbnMgQGxpY2Vuc2UuXG4gIGlmIChjb21tZW50VGV4dC5pbmRleE9mKCdAbGljZW5zZScpICE9PSAtMSkgcmV0dXJuICcnO1xuICByZXR1cm4gY29tbWVudFRleHQucmVwbGFjZSgvXlxcL1xcKlxcKi8sICcnKS5yZXBsYWNlKC8gP1xcKlxcLyQvLCAnJyk7XG59XG4iXX0=
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZV9lbWl0dGVyX3RyYW5zZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvdHJhbnNmb3JtZXJzL25vZGVfZW1pdHRlcl90cmFuc2Zvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7SUFHSCxpQ0FBaUM7SUFFakMsc0ZBQXFEO0lBQ3JELHNFQUF1QztJQUV2QyxTQUFTLFdBQVcsQ0FBQyxRQUFnQjtRQUNuQyxPQUFPOztLQUVKLFFBQVE7OztJQUdULENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFNBQWdCLGlDQUFpQyxDQUM3QyxjQUEwQyxFQUFFLE9BQW1CO1FBRWpFLE9BQU87WUFDTCxNQUFNLE9BQU8sR0FBRyxJQUFJLG9DQUFxQixFQUFFLENBQUM7WUFDNUMsT0FBTyxVQUFTLFVBQXlCO2dCQUN2QyxNQUFNLENBQUMsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDbEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLGVBQWUsR0FBRyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksSUFBSTtvQkFBRSxlQUFlLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3pELE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRTtvQkFDaEIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ2pELElBQUksZUFBZSxHQUFHLEVBQUUsQ0FBQztvQkFDekIsSUFBSSxJQUFJO3dCQUFFLGVBQWUsR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDekQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztvQkFDaEYsT0FBTyxhQUFhLENBQUM7aUJBQ3RCO3FCQUFNLElBQUksc0JBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUNwRCxpRkFBaUY7b0JBQ2pGLHdCQUF3QjtvQkFDeEIsbUZBQW1GO29CQUNuRixrQ0FBa0M7b0JBQ2xDLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUMxQixVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDekU7Z0JBQ0QsT0FBTyxVQUFVLENBQUM7WUFDcEIsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQTVCRCw4RUE0QkM7SUFFRDs7O09BR0c7SUFDSCxTQUFTLHNCQUFzQixDQUFDLFVBQXlCO1FBQ3ZELE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLGVBQWUsSUFBSSxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNoRSxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsc0JBQXNCO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDckUsZ0dBQWdHO1FBQ2hHLGlCQUFpQjtRQUNqQixJQUFJLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLE1BQU07WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUMzRixNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pGLG1GQUFtRjtRQUNuRixJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDdEQsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7R2VuZXJhdGVkRmlsZX0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7VHlwZVNjcmlwdE5vZGVFbWl0dGVyfSBmcm9tICcuL25vZGVfZW1pdHRlcic7XG5pbXBvcnQge0dFTkVSQVRFRF9GSUxFU30gZnJvbSAnLi91dGlsJztcblxuZnVuY3Rpb24gZ2V0UHJlYW1ibGUob3JpZ2luYWw6IHN0cmluZykge1xuICByZXR1cm4gYC8qKlxuICogQGZpbGVvdmVydmlldyBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSB0aGUgQW5ndWxhciB0ZW1wbGF0ZSBjb21waWxlci4gRG8gbm90IGVkaXQuXG4gKiAke29yaWdpbmFsfVxuICogQHN1cHByZXNzIHtzdXNwaWNpb3VzQ29kZSx1c2VsZXNzQ29kZSxtaXNzaW5nUHJvcGVydGllcyxtaXNzaW5nT3ZlcnJpZGUsY2hlY2tUeXBlc31cbiAqIHRzbGludDpkaXNhYmxlXG4gKi9gO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSB0cmFuc2Zvcm1lciB0aGF0IGRvZXMgdHdvIHRoaW5ncyBmb3IgZ2VuZXJhdGVkIGZpbGVzIChuZ2ZhY3RvcnkgZXRjKTpcbiAqIC0gYWRkcyBhIGZpbGVvdmVydmlldyBKU0RvYyBjb21tZW50IGNvbnRhaW5pbmcgQ2xvc3VyZSBDb21waWxlciBzcGVjaWZpYyBcInN1cHByZXNzXCJpb25zIGluIEpTRG9jLlxuICogICBUaGUgbmV3IGNvbW1lbnQgd2lsbCBjb250YWluIGFueSBmaWxlb3ZlcnZpZXcgY29tbWVudCB0ZXh0IGZyb20gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlIHRoaXNcbiAqICAgZmlsZSB3YXMgZ2VuZXJhdGVkIGZyb20uXG4gKiAtIHVwZGF0ZXMgZ2VuZXJhdGVkIGZpbGVzIHRoYXQgYXJlIG5vdCBpbiB0aGUgZ2l2ZW4gbWFwIG9mIGdlbmVyYXRlZEZpbGVzIHRvIGhhdmUgYW4gZW1wdHlcbiAqICAgbGlzdCBvZiBzdGF0ZW1lbnRzIGFzIHRoZWlyIGJvZHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbmd1bGFyRW1pdHRlclRyYW5zZm9ybUZhY3RvcnkoXG4gICAgZ2VuZXJhdGVkRmlsZXM6IE1hcDxzdHJpbmcsIEdlbmVyYXRlZEZpbGU+LCBwcm9ncmFtOiB0cy5Qcm9ncmFtKTogKCkgPT5cbiAgICAoc291cmNlRmlsZTogdHMuU291cmNlRmlsZSkgPT4gdHMuU291cmNlRmlsZSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICBjb25zdCBlbWl0dGVyID0gbmV3IFR5cGVTY3JpcHROb2RlRW1pdHRlcigpO1xuICAgIHJldHVybiBmdW5jdGlvbihzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlKTogdHMuU291cmNlRmlsZSB7XG4gICAgICBjb25zdCBnID0gZ2VuZXJhdGVkRmlsZXMuZ2V0KHNvdXJjZUZpbGUuZmlsZU5hbWUpO1xuICAgICAgY29uc3Qgb3JpZyA9IGcgJiYgcHJvZ3JhbS5nZXRTb3VyY2VGaWxlKGcuc3JjRmlsZVVybCk7XG4gICAgICBsZXQgb3JpZ2luYWxDb21tZW50ID0gJyc7XG4gICAgICBpZiAob3JpZykgb3JpZ2luYWxDb21tZW50ID0gZ2V0RmlsZW92ZXJ2aWV3Q29tbWVudChvcmlnKTtcbiAgICAgIGNvbnN0IHByZWFtYmxlID0gZ2V0UHJlYW1ibGUob3JpZ2luYWxDb21tZW50KTtcbiAgICAgIGlmIChnICYmIGcuc3RtdHMpIHtcbiAgICAgICAgY29uc3Qgb3JpZyA9IHByb2dyYW0uZ2V0U291cmNlRmlsZShnLnNyY0ZpbGVVcmwpO1xuICAgICAgICBsZXQgb3JpZ2luYWxDb21tZW50ID0gJyc7XG4gICAgICAgIGlmIChvcmlnKSBvcmlnaW5hbENvbW1lbnQgPSBnZXRGaWxlb3ZlcnZpZXdDb21tZW50KG9yaWcpO1xuICAgICAgICBjb25zdCBbbmV3U291cmNlRmlsZV0gPSBlbWl0dGVyLnVwZGF0ZVNvdXJjZUZpbGUoc291cmNlRmlsZSwgZy5zdG10cywgcHJlYW1ibGUpO1xuICAgICAgICByZXR1cm4gbmV3U291cmNlRmlsZTtcbiAgICAgIH0gZWxzZSBpZiAoR0VORVJBVEVEX0ZJTEVTLnRlc3Qoc291cmNlRmlsZS5maWxlTmFtZSkpIHtcbiAgICAgICAgLy8gVGhlIGZpbGUgc2hvdWxkIGJlIGVtcHR5LCBidXQgZW1pdHRlci51cGRhdGVTb3VyY2VGaWxlIHdvdWxkIHN0aWxsIGFkZCBpbXBvcnRzXG4gICAgICAgIC8vIGFuZCB2YXJpb3VzIG1pbnV0aWFlLlxuICAgICAgICAvLyBDbGVhciBvdXQgdGhlIHNvdXJjZSBmaWxlIGVudGlyZWx5LCBvbmx5IGluY2x1ZGluZyB0aGUgcHJlYW1ibGUgY29tbWVudCwgc28gdGhhdFxuICAgICAgICAvLyBuZ2MgcHJvZHVjZXMgYW4gZW1wdHkgLmpzIGZpbGUuXG4gICAgICAgIHJldHVybiB0cy51cGRhdGVTb3VyY2VGaWxlTm9kZShcbiAgICAgICAgICAgIHNvdXJjZUZpbGUsIFtlbWl0dGVyLmNyZWF0ZUNvbW1lbnRTdGF0ZW1lbnQoc291cmNlRmlsZSwgcHJlYW1ibGUpXSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc291cmNlRmlsZTtcbiAgICB9O1xuICB9O1xufVxuXG4vKipcbiAqIFBhcnNlcyBhbmQgcmV0dXJucyB0aGUgY29tbWVudCB0ZXh0ICh3aXRob3V0IHN0YXJ0IGFuZCBlbmQgbWFya2Vycykgb2YgYSBcXEBmaWxlb3ZlcnZpZXcgY29tbWVudFxuICogaW4gdGhlIGdpdmVuIHNvdXJjZSBmaWxlLiBSZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcgaWYgbm8gc3VjaCBjb21tZW50IGNhbiBiZSBmb3VuZC5cbiAqL1xuZnVuY3Rpb24gZ2V0RmlsZW92ZXJ2aWV3Q29tbWVudChzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlKTogc3RyaW5nIHtcbiAgY29uc3QgdHJpdmlhID0gc291cmNlRmlsZS5nZXRGdWxsVGV4dCgpLnN1YnN0cmluZygwLCBzb3VyY2VGaWxlLmdldFN0YXJ0KCkpO1xuICBjb25zdCBsZWFkaW5nQ29tbWVudHMgPSB0cy5nZXRMZWFkaW5nQ29tbWVudFJhbmdlcyh0cml2aWEsIDApO1xuICBpZiAoIWxlYWRpbmdDb21tZW50cyB8fCBsZWFkaW5nQ29tbWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gIGNvbnN0IGNvbW1lbnQgPSBsZWFkaW5nQ29tbWVudHNbMF07XG4gIGlmIChjb21tZW50LmtpbmQgIT09IHRzLlN5bnRheEtpbmQuTXVsdGlMaW5lQ29tbWVudFRyaXZpYSkgcmV0dXJuICcnO1xuICAvLyBPbmx5IGNvbW1lbnRzIHNlcGFyYXRlZCB3aXRoIGEgXFxuXFxuIGZyb20gdGhlIGZpbGUgY29udGVudHMgYXJlIGNvbnNpZGVyZWQgZmlsZS1sZXZlbCBjb21tZW50c1xuICAvLyBpbiBUeXBlU2NyaXB0LlxuICBpZiAoc291cmNlRmlsZS5nZXRGdWxsVGV4dCgpLnN1YnN0cmluZyhjb21tZW50LmVuZCwgY29tbWVudC5lbmQgKyAyKSAhPT0gJ1xcblxcbicpIHJldHVybiAnJztcbiAgY29uc3QgY29tbWVudFRleHQgPSBzb3VyY2VGaWxlLmdldEZ1bGxUZXh0KCkuc3Vic3RyaW5nKGNvbW1lbnQucG9zLCBjb21tZW50LmVuZCk7XG4gIC8vIENsb3N1cmUgQ29tcGlsZXIgaWdub3JlcyBAc3VwcHJlc3MgYW5kIHNpbWlsYXIgaWYgdGhlIGNvbW1lbnQgY29udGFpbnMgQGxpY2Vuc2UuXG4gIGlmIChjb21tZW50VGV4dC5pbmRleE9mKCdAbGljZW5zZScpICE9PSAtMSkgcmV0dXJuICcnO1xuICByZXR1cm4gY29tbWVudFRleHQucmVwbGFjZSgvXlxcL1xcKlxcKi8sICcnKS5yZXBsYWNlKC8gP1xcKlxcLyQvLCAnJyk7XG59XG4iXX0=