@angular/compiler-cli 10.0.6 → 10.0.10

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 (85) hide show
  1. package/ngcc/src/analysis/ngcc_trait_compiler.js +2 -1
  2. package/ngcc/src/host/esm2015_host.js +10 -4
  3. package/ngcc/src/host/esm5_host.d.ts +118 -0
  4. package/ngcc/src/host/esm5_host.js +210 -123
  5. package/ngcc/src/packages/build_marker.d.ts +1 -1
  6. package/ngcc/src/packages/build_marker.js +1 -1
  7. package/package.json +2 -2
  8. package/src/main.js +1 -2
  9. package/src/ngtsc/annotations/src/component.d.ts +1 -1
  10. package/src/ngtsc/annotations/src/component.js +3 -3
  11. package/src/ngtsc/annotations/src/diagnostics.js +2 -2
  12. package/src/ngtsc/annotations/src/metadata.js +3 -3
  13. package/src/ngtsc/annotations/src/ng_module.js +6 -6
  14. package/src/ngtsc/annotations/src/util.d.ts +4 -8
  15. package/src/ngtsc/annotations/src/util.js +73 -22
  16. package/src/ngtsc/core/src/compiler.d.ts +2 -1
  17. package/src/ngtsc/core/src/compiler.js +8 -9
  18. package/src/ngtsc/diagnostics/index.d.ts +1 -1
  19. package/src/ngtsc/diagnostics/index.js +2 -1
  20. package/src/ngtsc/diagnostics/src/error.d.ts +5 -6
  21. package/src/ngtsc/diagnostics/src/error.js +20 -20
  22. package/src/ngtsc/diagnostics/src/error_code.d.ts +10 -0
  23. package/src/ngtsc/diagnostics/src/error_code.js +11 -1
  24. package/src/ngtsc/imports/src/core.js +2 -1
  25. package/src/ngtsc/incremental/api.d.ts +12 -7
  26. package/src/ngtsc/incremental/api.js +1 -1
  27. package/src/ngtsc/incremental/src/noop.js +2 -1
  28. package/src/ngtsc/incremental/src/state.d.ts +1 -1
  29. package/src/ngtsc/incremental/src/state.js +1 -1
  30. package/src/ngtsc/program.d.ts +2 -1
  31. package/src/ngtsc/program.js +1 -1
  32. package/src/ngtsc/reflection/src/host.d.ts +110 -25
  33. package/src/ngtsc/reflection/src/host.js +1 -1
  34. package/src/ngtsc/reflection/src/type_to_value.d.ts +1 -1
  35. package/src/ngtsc/reflection/src/type_to_value.js +62 -11
  36. package/src/ngtsc/reflection/src/typescript.js +1 -4
  37. package/src/ngtsc/scope/src/local.js +4 -4
  38. package/src/ngtsc/shims/api.d.ts +6 -2
  39. package/src/ngtsc/shims/api.js +1 -1
  40. package/src/ngtsc/shims/src/factory_generator.d.ts +2 -2
  41. package/src/ngtsc/shims/src/factory_generator.js +58 -9
  42. package/src/ngtsc/transform/src/api.d.ts +1 -1
  43. package/src/ngtsc/transform/src/api.js +1 -1
  44. package/src/ngtsc/transform/src/compilation.d.ts +1 -1
  45. package/src/ngtsc/transform/src/compilation.js +1 -1
  46. package/src/ngtsc/transform/src/transform.js +2 -2
  47. package/src/ngtsc/tsc_plugin.d.ts +1 -1
  48. package/src/ngtsc/tsc_plugin.js +1 -1
  49. package/src/ngtsc/typecheck/{src → api}/api.d.ts +25 -2
  50. package/src/ngtsc/typecheck/{src → api}/api.js +2 -2
  51. package/src/ngtsc/typecheck/api/checker.d.ts +91 -0
  52. package/src/ngtsc/typecheck/api/checker.js +44 -0
  53. package/src/ngtsc/typecheck/api/context.d.ts +44 -0
  54. package/src/ngtsc/typecheck/api/context.js +20 -0
  55. package/src/ngtsc/typecheck/api/index.d.ts +11 -0
  56. package/src/ngtsc/typecheck/api/index.js +24 -0
  57. package/src/ngtsc/typecheck/index.d.ts +4 -5
  58. package/src/ngtsc/typecheck/index.js +6 -8
  59. package/src/ngtsc/typecheck/src/augmented_program.d.ts +3 -1
  60. package/src/ngtsc/typecheck/src/augmented_program.js +9 -3
  61. package/src/ngtsc/typecheck/src/checker.d.ts +63 -18
  62. package/src/ngtsc/typecheck/src/checker.js +394 -62
  63. package/src/ngtsc/typecheck/src/context.d.ts +76 -55
  64. package/src/ngtsc/typecheck/src/context.js +111 -67
  65. package/src/ngtsc/typecheck/src/diagnostics.d.ts +9 -3
  66. package/src/ngtsc/typecheck/src/diagnostics.js +28 -5
  67. package/src/ngtsc/typecheck/src/dom.d.ts +4 -5
  68. package/src/ngtsc/typecheck/src/dom.js +3 -3
  69. package/src/ngtsc/typecheck/src/environment.d.ts +1 -1
  70. package/src/ngtsc/typecheck/src/environment.js +1 -1
  71. package/src/ngtsc/typecheck/src/expression.d.ts +1 -1
  72. package/src/ngtsc/typecheck/src/expression.js +2 -2
  73. package/src/ngtsc/typecheck/src/oob.d.ts +9 -5
  74. package/src/ngtsc/typecheck/src/oob.js +25 -6
  75. package/src/ngtsc/typecheck/src/source.d.ts +4 -3
  76. package/src/ngtsc/typecheck/src/source.js +20 -4
  77. package/src/ngtsc/typecheck/src/template_semantics.d.ts +1 -1
  78. package/src/ngtsc/typecheck/src/template_semantics.js +1 -1
  79. package/src/ngtsc/typecheck/src/type_check_block.d.ts +1 -1
  80. package/src/ngtsc/typecheck/src/type_check_block.js +1 -1
  81. package/src/ngtsc/typecheck/src/type_check_file.d.ts +1 -1
  82. package/src/ngtsc/typecheck/src/type_check_file.js +1 -1
  83. package/src/ngtsc/typecheck/src/type_constructor.d.ts +1 -1
  84. package/src/ngtsc/typecheck/src/type_constructor.js +1 -1
  85. package/src/version.js +1 -1
@@ -6,11 +6,10 @@
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
8
  /// <amd-module name="@angular/compiler-cli/src/ngtsc/typecheck" />
9
- export * from './src/api';
10
9
  export { ReusedProgramStrategy } from './src/augmented_program';
11
- export { TemplateTypeChecker, ProgramTypeCheckAdapter } from './src/checker';
12
- export { TypeCheckContext } from './src/context';
13
- export { TemplateDiagnostic, isTemplateDiagnostic } from './src/diagnostics';
14
- export { TypeCheckShimGenerator } from './src/shim';
10
+ export { FileTypeCheckingData, TemplateTypeCheckerImpl } from './src/checker';
11
+ export { TypeCheckContextImpl } from './src/context';
12
+ export { isTemplateDiagnostic, TemplateDiagnostic } from './src/diagnostics';
15
13
  export { TypeCheckProgramHost } from './src/host';
14
+ export { TypeCheckShimGenerator } from './src/shim';
16
15
  export { typeCheckFilePath } from './src/type_check_file';
@@ -11,26 +11,24 @@
11
11
  if (v !== undefined) module.exports = v;
12
12
  }
13
13
  else if (typeof define === "function" && define.amd) {
14
- define("@angular/compiler-cli/src/ngtsc/typecheck", ["require", "exports", "tslib", "@angular/compiler-cli/src/ngtsc/typecheck/src/api", "@angular/compiler-cli/src/ngtsc/typecheck/src/augmented_program", "@angular/compiler-cli/src/ngtsc/typecheck/src/checker", "@angular/compiler-cli/src/ngtsc/typecheck/src/context", "@angular/compiler-cli/src/ngtsc/typecheck/src/diagnostics", "@angular/compiler-cli/src/ngtsc/typecheck/src/shim", "@angular/compiler-cli/src/ngtsc/typecheck/src/host", "@angular/compiler-cli/src/ngtsc/typecheck/src/type_check_file"], factory);
14
+ define("@angular/compiler-cli/src/ngtsc/typecheck", ["require", "exports", "@angular/compiler-cli/src/ngtsc/typecheck/src/augmented_program", "@angular/compiler-cli/src/ngtsc/typecheck/src/checker", "@angular/compiler-cli/src/ngtsc/typecheck/src/context", "@angular/compiler-cli/src/ngtsc/typecheck/src/diagnostics", "@angular/compiler-cli/src/ngtsc/typecheck/src/host", "@angular/compiler-cli/src/ngtsc/typecheck/src/shim", "@angular/compiler-cli/src/ngtsc/typecheck/src/type_check_file"], 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
- tslib_1.__exportStar(require("@angular/compiler-cli/src/ngtsc/typecheck/src/api"), exports);
21
19
  var augmented_program_1 = require("@angular/compiler-cli/src/ngtsc/typecheck/src/augmented_program");
22
20
  Object.defineProperty(exports, "ReusedProgramStrategy", { enumerable: true, get: function () { return augmented_program_1.ReusedProgramStrategy; } });
23
21
  var checker_1 = require("@angular/compiler-cli/src/ngtsc/typecheck/src/checker");
24
- Object.defineProperty(exports, "TemplateTypeChecker", { enumerable: true, get: function () { return checker_1.TemplateTypeChecker; } });
22
+ Object.defineProperty(exports, "TemplateTypeCheckerImpl", { enumerable: true, get: function () { return checker_1.TemplateTypeCheckerImpl; } });
25
23
  var context_1 = require("@angular/compiler-cli/src/ngtsc/typecheck/src/context");
26
- Object.defineProperty(exports, "TypeCheckContext", { enumerable: true, get: function () { return context_1.TypeCheckContext; } });
24
+ Object.defineProperty(exports, "TypeCheckContextImpl", { enumerable: true, get: function () { return context_1.TypeCheckContextImpl; } });
27
25
  var diagnostics_1 = require("@angular/compiler-cli/src/ngtsc/typecheck/src/diagnostics");
28
26
  Object.defineProperty(exports, "isTemplateDiagnostic", { enumerable: true, get: function () { return diagnostics_1.isTemplateDiagnostic; } });
29
- var shim_1 = require("@angular/compiler-cli/src/ngtsc/typecheck/src/shim");
30
- Object.defineProperty(exports, "TypeCheckShimGenerator", { enumerable: true, get: function () { return shim_1.TypeCheckShimGenerator; } });
31
27
  var host_1 = require("@angular/compiler-cli/src/ngtsc/typecheck/src/host");
32
28
  Object.defineProperty(exports, "TypeCheckProgramHost", { enumerable: true, get: function () { return host_1.TypeCheckProgramHost; } });
29
+ var shim_1 = require("@angular/compiler-cli/src/ngtsc/typecheck/src/shim");
30
+ Object.defineProperty(exports, "TypeCheckShimGenerator", { enumerable: true, get: function () { return shim_1.TypeCheckShimGenerator; } });
33
31
  var type_check_file_1 = require("@angular/compiler-cli/src/ngtsc/typecheck/src/type_check_file");
34
32
  Object.defineProperty(exports, "typeCheckFilePath", { enumerable: true, get: function () { return type_check_file_1.typeCheckFilePath; } });
35
33
  });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL3R5cGVjaGVjay9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7SUFFSCw0RkFBMEI7SUFDMUIscUdBQThEO0lBQXRELDBIQUFBLHFCQUFxQixPQUFBO0lBQzdCLGlGQUEyRTtJQUFuRSw4R0FBQSxtQkFBbUIsT0FBQTtJQUMzQixpRkFBK0M7SUFBdkMsMkdBQUEsZ0JBQWdCLE9BQUE7SUFDeEIseUZBQTJFO0lBQS9DLG1IQUFBLG9CQUFvQixPQUFBO0lBQ2hELDJFQUFrRDtJQUExQyw4R0FBQSxzQkFBc0IsT0FBQTtJQUM5QiwyRUFBZ0Q7SUFBeEMsNEdBQUEsb0JBQW9CLE9BQUE7SUFDNUIsaUdBQXdEO0lBQWhELG9IQUFBLGlCQUFpQixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vc3JjL2FwaSc7XG5leHBvcnQge1JldXNlZFByb2dyYW1TdHJhdGVneX0gZnJvbSAnLi9zcmMvYXVnbWVudGVkX3Byb2dyYW0nO1xuZXhwb3J0IHtUZW1wbGF0ZVR5cGVDaGVja2VyLCBQcm9ncmFtVHlwZUNoZWNrQWRhcHRlcn0gZnJvbSAnLi9zcmMvY2hlY2tlcic7XG5leHBvcnQge1R5cGVDaGVja0NvbnRleHR9IGZyb20gJy4vc3JjL2NvbnRleHQnO1xuZXhwb3J0IHtUZW1wbGF0ZURpYWdub3N0aWMsIGlzVGVtcGxhdGVEaWFnbm9zdGljfSBmcm9tICcuL3NyYy9kaWFnbm9zdGljcyc7XG5leHBvcnQge1R5cGVDaGVja1NoaW1HZW5lcmF0b3J9IGZyb20gJy4vc3JjL3NoaW0nO1xuZXhwb3J0IHtUeXBlQ2hlY2tQcm9ncmFtSG9zdH0gZnJvbSAnLi9zcmMvaG9zdCc7XG5leHBvcnQge3R5cGVDaGVja0ZpbGVQYXRofSBmcm9tICcuL3NyYy90eXBlX2NoZWNrX2ZpbGUnO1xuIl19
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL3R5cGVjaGVjay9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7OztJQUVILHFHQUE4RDtJQUF0RCwwSEFBQSxxQkFBcUIsT0FBQTtJQUM3QixpRkFBNEU7SUFBOUMsa0hBQUEsdUJBQXVCLE9BQUE7SUFDckQsaUZBQW1EO0lBQTNDLCtHQUFBLG9CQUFvQixPQUFBO0lBQzVCLHlGQUEyRTtJQUFuRSxtSEFBQSxvQkFBb0IsT0FBQTtJQUM1QiwyRUFBZ0Q7SUFBeEMsNEdBQUEsb0JBQW9CLE9BQUE7SUFDNUIsMkVBQWtEO0lBQTFDLDhHQUFBLHNCQUFzQixPQUFBO0lBQzlCLGlHQUF3RDtJQUFoRCxvSEFBQSxpQkFBaUIsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5leHBvcnQge1JldXNlZFByb2dyYW1TdHJhdGVneX0gZnJvbSAnLi9zcmMvYXVnbWVudGVkX3Byb2dyYW0nO1xuZXhwb3J0IHtGaWxlVHlwZUNoZWNraW5nRGF0YSwgVGVtcGxhdGVUeXBlQ2hlY2tlckltcGx9IGZyb20gJy4vc3JjL2NoZWNrZXInO1xuZXhwb3J0IHtUeXBlQ2hlY2tDb250ZXh0SW1wbH0gZnJvbSAnLi9zcmMvY29udGV4dCc7XG5leHBvcnQge2lzVGVtcGxhdGVEaWFnbm9zdGljLCBUZW1wbGF0ZURpYWdub3N0aWN9IGZyb20gJy4vc3JjL2RpYWdub3N0aWNzJztcbmV4cG9ydCB7VHlwZUNoZWNrUHJvZ3JhbUhvc3R9IGZyb20gJy4vc3JjL2hvc3QnO1xuZXhwb3J0IHtUeXBlQ2hlY2tTaGltR2VuZXJhdG9yfSBmcm9tICcuL3NyYy9zaGltJztcbmV4cG9ydCB7dHlwZUNoZWNrRmlsZVBhdGh9IGZyb20gJy4vc3JjL3R5cGVfY2hlY2tfZmlsZSc7XG4iXX0=
@@ -8,7 +8,7 @@
8
8
  /// <amd-module name="@angular/compiler-cli/src/ngtsc/typecheck/src/augmented_program" />
9
9
  import * as ts from 'typescript';
10
10
  import { AbsoluteFsPath } from '../../file_system';
11
- import { TypeCheckingProgramStrategy, UpdateMode } from './api';
11
+ import { TypeCheckingProgramStrategy, UpdateMode } from '../api';
12
12
  /**
13
13
  * Implements a template type-checking program using `ts.createProgram` and TypeScript's program
14
14
  * reuse functionality.
@@ -27,6 +27,8 @@ export declare class ReusedProgramStrategy implements TypeCheckingProgramStrateg
27
27
  private sfMap;
28
28
  private program;
29
29
  constructor(originalProgram: ts.Program, originalHost: ts.CompilerHost, options: ts.CompilerOptions, shimExtensionPrefixes: string[]);
30
+ readonly supportsInlineOperations = true;
30
31
  getProgram(): ts.Program;
31
32
  updateFiles(contents: Map<AbsoluteFsPath, string>, updateMode: UpdateMode): void;
33
+ shimPathForComponent(node: ts.ClassDeclaration): AbsoluteFsPath;
32
34
  }
@@ -11,7 +11,7 @@
11
11
  if (v !== undefined) module.exports = v;
12
12
  }
13
13
  else if (typeof define === "function" && define.amd) {
14
- define("@angular/compiler-cli/src/ngtsc/typecheck/src/augmented_program", ["require", "exports", "tslib", "typescript", "@angular/compiler-cli/src/ngtsc/shims", "@angular/compiler-cli/src/ngtsc/typecheck/src/api", "@angular/compiler-cli/src/ngtsc/typecheck/src/host"], factory);
14
+ define("@angular/compiler-cli/src/ngtsc/typecheck/src/augmented_program", ["require", "exports", "tslib", "typescript", "@angular/compiler-cli/src/ngtsc/file_system", "@angular/compiler-cli/src/ngtsc/shims", "@angular/compiler-cli/src/ngtsc/typecheck/api", "@angular/compiler-cli/src/ngtsc/typecheck/src/host", "@angular/compiler-cli/src/ngtsc/typecheck/src/shim"], factory);
15
15
  }
16
16
  })(function (require, exports) {
17
17
  "use strict";
@@ -19,9 +19,11 @@
19
19
  exports.ReusedProgramStrategy = void 0;
20
20
  var tslib_1 = require("tslib");
21
21
  var ts = require("typescript");
22
+ var file_system_1 = require("@angular/compiler-cli/src/ngtsc/file_system");
22
23
  var shims_1 = require("@angular/compiler-cli/src/ngtsc/shims");
23
- var api_1 = require("@angular/compiler-cli/src/ngtsc/typecheck/src/api");
24
+ var api_1 = require("@angular/compiler-cli/src/ngtsc/typecheck/api");
24
25
  var host_1 = require("@angular/compiler-cli/src/ngtsc/typecheck/src/host");
26
+ var shim_1 = require("@angular/compiler-cli/src/ngtsc/typecheck/src/shim");
25
27
  /**
26
28
  * Implements a template type-checking program using `ts.createProgram` and TypeScript's program
27
29
  * reuse functionality.
@@ -40,6 +42,7 @@
40
42
  */
41
43
  this.sfMap = new Map();
42
44
  this.program = this.originalProgram;
45
+ this.supportsInlineOperations = true;
43
46
  }
44
47
  ReusedProgramStrategy.prototype.getProgram = function () {
45
48
  return this.program;
@@ -88,8 +91,11 @@
88
91
  shims_1.untagAllTsFiles(this.program);
89
92
  shims_1.untagAllTsFiles(oldProgram);
90
93
  };
94
+ ReusedProgramStrategy.prototype.shimPathForComponent = function (node) {
95
+ return shim_1.TypeCheckShimGenerator.shimFor(file_system_1.absoluteFromSourceFile(node.getSourceFile()));
96
+ };
91
97
  return ReusedProgramStrategy;
92
98
  }());
93
99
  exports.ReusedProgramStrategy = ReusedProgramStrategy;
94
100
  });
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVnbWVudGVkX3Byb2dyYW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL3R5cGVjaGVjay9zcmMvYXVnbWVudGVkX3Byb2dyYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7OztJQUVILCtCQUFpQztJQUdqQywrREFBNkQ7SUFFN0QseUVBQThEO0lBQzlELDJFQUE0QztJQUU1Qzs7O09BR0c7SUFDSDtRQVdFLCtCQUNZLGVBQTJCLEVBQVUsWUFBNkIsRUFDbEUsT0FBMkIsRUFBVSxxQkFBK0I7WUFEcEUsb0JBQWUsR0FBZixlQUFlLENBQVk7WUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBaUI7WUFDbEUsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7WUFBVSwwQkFBcUIsR0FBckIscUJBQXFCLENBQVU7WUFaaEY7Ozs7O2VBS0c7WUFDSyxVQUFLLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7WUFFekMsWUFBTyxHQUFlLElBQUksQ0FBQyxlQUFlLENBQUM7UUFJZ0MsQ0FBQztRQUVwRiwwQ0FBVSxHQUFWO1lBQ0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3RCLENBQUM7UUFFRCwyQ0FBVyxHQUFYLFVBQVksUUFBcUMsRUFBRSxVQUFzQjs7WUFDdkUsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtnQkFDdkIsd0VBQXdFO2dCQUN4RSw0RkFBNEY7Z0JBQzVGLHFGQUFxRjtnQkFFckYsSUFBSSxVQUFVLEtBQUssZ0JBQVUsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO29CQUMvRCx3RkFBd0Y7b0JBQ3hGLE9BQU87aUJBQ1I7YUFDRjtZQUVELElBQUksVUFBVSxLQUFLLGdCQUFVLENBQUMsUUFBUSxFQUFFO2dCQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ3BCOztnQkFFRCxLQUErQixJQUFBLEtBQUEsaUJBQUEsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFBLGdCQUFBLDRCQUFFO29CQUF4QyxJQUFBLEtBQUEsMkJBQWdCLEVBQWYsUUFBUSxRQUFBLEVBQUUsSUFBSSxRQUFBO29CQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztpQkFDN0Y7Ozs7Ozs7OztZQUVELElBQU0sSUFBSSxHQUFHLElBQUksMkJBQW9CLENBQ2pDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ3JGLElBQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFFaEMsNEZBQTRGO1lBQzVGLGFBQWE7WUFDYix1QkFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRTVCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQztnQkFDOUIsSUFBSSxNQUFBO2dCQUNKLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFO2dCQUMxQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQ3JCLFVBQVUsWUFBQTthQUNYLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBRWxDLDRGQUE0RjtZQUM1Riw0REFBNEQ7WUFDNUQsdUJBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUIsdUJBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBQ0gsNEJBQUM7SUFBRCxDQUFDLEFBNURELElBNERDO0lBNURZLHNEQUFxQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtBYnNvbHV0ZUZzUGF0aH0gZnJvbSAnLi4vLi4vZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtyZXRhZ0FsbFRzRmlsZXMsIHVudGFnQWxsVHNGaWxlc30gZnJvbSAnLi4vLi4vc2hpbXMnO1xuXG5pbXBvcnQge1R5cGVDaGVja2luZ1Byb2dyYW1TdHJhdGVneSwgVXBkYXRlTW9kZX0gZnJvbSAnLi9hcGknO1xuaW1wb3J0IHtUeXBlQ2hlY2tQcm9ncmFtSG9zdH0gZnJvbSAnLi9ob3N0JztcblxuLyoqXG4gKiBJbXBsZW1lbnRzIGEgdGVtcGxhdGUgdHlwZS1jaGVja2luZyBwcm9ncmFtIHVzaW5nIGB0cy5jcmVhdGVQcm9ncmFtYCBhbmQgVHlwZVNjcmlwdCdzIHByb2dyYW1cbiAqIHJldXNlIGZ1bmN0aW9uYWxpdHkuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXVzZWRQcm9ncmFtU3RyYXRlZ3kgaW1wbGVtZW50cyBUeXBlQ2hlY2tpbmdQcm9ncmFtU3RyYXRlZ3kge1xuICAvKipcbiAgICogQSBtYXAgb2Ygc291cmNlIGZpbGUgcGF0aHMgdG8gcmVwbGFjZW1lbnQgYHRzLlNvdXJjZUZpbGVgcyBmb3IgdGhvc2UgcGF0aHMuXG4gICAqXG4gICAqIEVmZmVjdGl2ZWx5LCB0aGlzIHRyYWNrcyB0aGUgZGVsdGEgYmV0d2VlbiB0aGUgdXNlcidzIHByb2dyYW0gKHJlcHJlc2VudGVkIGJ5IHRoZVxuICAgKiBgb3JpZ2luYWxIb3N0YCkgYW5kIHRoZSB0ZW1wbGF0ZSB0eXBlLWNoZWNraW5nIHByb2dyYW0gYmVpbmcgbWFuYWdlZC5cbiAgICovXG4gIHByaXZhdGUgc2ZNYXAgPSBuZXcgTWFwPHN0cmluZywgdHMuU291cmNlRmlsZT4oKTtcblxuICBwcml2YXRlIHByb2dyYW06IHRzLlByb2dyYW0gPSB0aGlzLm9yaWdpbmFsUHJvZ3JhbTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgb3JpZ2luYWxQcm9ncmFtOiB0cy5Qcm9ncmFtLCBwcml2YXRlIG9yaWdpbmFsSG9zdDogdHMuQ29tcGlsZXJIb3N0LFxuICAgICAgcHJpdmF0ZSBvcHRpb25zOiB0cy5Db21waWxlck9wdGlvbnMsIHByaXZhdGUgc2hpbUV4dGVuc2lvblByZWZpeGVzOiBzdHJpbmdbXSkge31cblxuICBnZXRQcm9ncmFtKCk6IHRzLlByb2dyYW0ge1xuICAgIHJldHVybiB0aGlzLnByb2dyYW07XG4gIH1cblxuICB1cGRhdGVGaWxlcyhjb250ZW50czogTWFwPEFic29sdXRlRnNQYXRoLCBzdHJpbmc+LCB1cGRhdGVNb2RlOiBVcGRhdGVNb2RlKTogdm9pZCB7XG4gICAgaWYgKGNvbnRlbnRzLnNpemUgPT09IDApIHtcbiAgICAgIC8vIE5vIGNoYW5nZXMgaGF2ZSBiZWVuIHJlcXVlc3RlZC4gSXMgaXQgc2FmZSB0byBza2lwIHVwZGF0aW5nIGVudGlyZWx5P1xuICAgICAgLy8gSWYgVXBkYXRlTW9kZSBpcyBJbmNyZW1lbnRhbCwgdGhlbiB5ZXMuIElmIFVwZGF0ZU1vZGUgaXMgQ29tcGxldGUsIHRoZW4gaXQncyBzYWZlIHRvIHNraXBcbiAgICAgIC8vIG9ubHkgaWYgdGhlcmUgYXJlIG5vIGFjdGl2ZSBjaGFuZ2VzIGFscmVhZHkgKHRoYXQgd291bGQgYmUgY2xlYXJlZCBieSB0aGUgdXBkYXRlKS5cblxuICAgICAgaWYgKHVwZGF0ZU1vZGUgIT09IFVwZGF0ZU1vZGUuQ29tcGxldGUgfHwgdGhpcy5zZk1hcC5zaXplID09PSAwKSB7XG4gICAgICAgIC8vIE5vIGNoYW5nZXMgd291bGQgYmUgbWFkZSB0byB0aGUgYHRzLlByb2dyYW1gIGFueXdheSwgc28gaXQncyBzYWZlIHRvIGRvIG5vdGhpbmcgaGVyZS5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh1cGRhdGVNb2RlID09PSBVcGRhdGVNb2RlLkNvbXBsZXRlKSB7XG4gICAgICB0aGlzLnNmTWFwLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbZmlsZVBhdGgsIHRleHRdIG9mIGNvbnRlbnRzLmVudHJpZXMoKSkge1xuICAgICAgdGhpcy5zZk1hcC5zZXQoZmlsZVBhdGgsIHRzLmNyZWF0ZVNvdXJjZUZpbGUoZmlsZVBhdGgsIHRleHQsIHRzLlNjcmlwdFRhcmdldC5MYXRlc3QsIHRydWUpKTtcbiAgICB9XG5cbiAgICBjb25zdCBob3N0ID0gbmV3IFR5cGVDaGVja1Byb2dyYW1Ib3N0KFxuICAgICAgICB0aGlzLnNmTWFwLCB0aGlzLm9yaWdpbmFsUHJvZ3JhbSwgdGhpcy5vcmlnaW5hbEhvc3QsIHRoaXMuc2hpbUV4dGVuc2lvblByZWZpeGVzKTtcbiAgICBjb25zdCBvbGRQcm9ncmFtID0gdGhpcy5wcm9ncmFtO1xuXG4gICAgLy8gUmV0YWcgdGhlIG9sZCBwcm9ncmFtJ3MgYHRzLlNvdXJjZUZpbGVgcyB3aXRoIHNoaW0gdGFncywgdG8gYWxsb3cgVHlwZVNjcmlwdCB0byByZXVzZSB0aGVcbiAgICAvLyBtb3N0IGRhdGEuXG4gICAgcmV0YWdBbGxUc0ZpbGVzKG9sZFByb2dyYW0pO1xuXG4gICAgdGhpcy5wcm9ncmFtID0gdHMuY3JlYXRlUHJvZ3JhbSh7XG4gICAgICBob3N0LFxuICAgICAgcm9vdE5hbWVzOiB0aGlzLnByb2dyYW0uZ2V0Um9vdEZpbGVOYW1lcygpLFxuICAgICAgb3B0aW9uczogdGhpcy5vcHRpb25zLFxuICAgICAgb2xkUHJvZ3JhbSxcbiAgICB9KTtcbiAgICBob3N0LnBvc3RQcm9ncmFtQ3JlYXRpb25DbGVhbnVwKCk7XG5cbiAgICAvLyBBbmQgdW50YWcgdGhlbSBhZnRlcndhcmRzLiBXZSBleHBsaWNpdGx5IHVudGFnIGJvdGggcHJvZ3JhbXMgaGVyZSwgYmVjYXVzZSB0aGUgb2xkUHJvZ3JhbVxuICAgIC8vIG1heSBzdGlsbCBiZSB1c2VkIGZvciBlbWl0IGFuZCBuZWVkcyB0byBub3QgY29udGFpbiB0YWdzLlxuICAgIHVudGFnQWxsVHNGaWxlcyh0aGlzLnByb2dyYW0pO1xuICAgIHVudGFnQWxsVHNGaWxlcyhvbGRQcm9ncmFtKTtcbiAgfVxufVxuIl19
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVnbWVudGVkX3Byb2dyYW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL3R5cGVjaGVjay9zcmMvYXVnbWVudGVkX3Byb2dyYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7OztJQUVILCtCQUFpQztJQUVqQywyRUFBeUU7SUFDekUsK0RBQTZEO0lBQzdELHFFQUErRDtJQUUvRCwyRUFBNEM7SUFDNUMsMkVBQThDO0lBRTlDOzs7T0FHRztJQUNIO1FBV0UsK0JBQ1ksZUFBMkIsRUFBVSxZQUE2QixFQUNsRSxPQUEyQixFQUFVLHFCQUErQjtZQURwRSxvQkFBZSxHQUFmLGVBQWUsQ0FBWTtZQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFpQjtZQUNsRSxZQUFPLEdBQVAsT0FBTyxDQUFvQjtZQUFVLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBVTtZQVpoRjs7Ozs7ZUFLRztZQUNLLFVBQUssR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztZQUV6QyxZQUFPLEdBQWUsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQU0xQyw2QkFBd0IsR0FBRyxJQUFJLENBQUM7UUFGMEMsQ0FBQztRQUlwRiwwQ0FBVSxHQUFWO1lBQ0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3RCLENBQUM7UUFFRCwyQ0FBVyxHQUFYLFVBQVksUUFBcUMsRUFBRSxVQUFzQjs7WUFDdkUsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtnQkFDdkIsd0VBQXdFO2dCQUN4RSw0RkFBNEY7Z0JBQzVGLHFGQUFxRjtnQkFFckYsSUFBSSxVQUFVLEtBQUssZ0JBQVUsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO29CQUMvRCx3RkFBd0Y7b0JBQ3hGLE9BQU87aUJBQ1I7YUFDRjtZQUVELElBQUksVUFBVSxLQUFLLGdCQUFVLENBQUMsUUFBUSxFQUFFO2dCQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ3BCOztnQkFFRCxLQUErQixJQUFBLEtBQUEsaUJBQUEsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFBLGdCQUFBLDRCQUFFO29CQUF4QyxJQUFBLEtBQUEsMkJBQWdCLEVBQWYsUUFBUSxRQUFBLEVBQUUsSUFBSSxRQUFBO29CQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztpQkFDN0Y7Ozs7Ozs7OztZQUVELElBQU0sSUFBSSxHQUFHLElBQUksMkJBQW9CLENBQ2pDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ3JGLElBQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFFaEMsNEZBQTRGO1lBQzVGLGFBQWE7WUFDYix1QkFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRTVCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQztnQkFDOUIsSUFBSSxNQUFBO2dCQUNKLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFO2dCQUMxQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQ3JCLFVBQVUsWUFBQTthQUNYLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBRWxDLDRGQUE0RjtZQUM1Riw0REFBNEQ7WUFDNUQsdUJBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUIsdUJBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBRUQsb0RBQW9CLEdBQXBCLFVBQXFCLElBQXlCO1lBQzVDLE9BQU8sNkJBQXNCLENBQUMsT0FBTyxDQUFDLG9DQUFzQixDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEYsQ0FBQztRQUNILDRCQUFDO0lBQUQsQ0FBQyxBQWxFRCxJQWtFQztJQWxFWSxzREFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7YWJzb2x1dGVGcm9tU291cmNlRmlsZSwgQWJzb2x1dGVGc1BhdGh9IGZyb20gJy4uLy4uL2ZpbGVfc3lzdGVtJztcbmltcG9ydCB7cmV0YWdBbGxUc0ZpbGVzLCB1bnRhZ0FsbFRzRmlsZXN9IGZyb20gJy4uLy4uL3NoaW1zJztcbmltcG9ydCB7VHlwZUNoZWNraW5nUHJvZ3JhbVN0cmF0ZWd5LCBVcGRhdGVNb2RlfSBmcm9tICcuLi9hcGknO1xuXG5pbXBvcnQge1R5cGVDaGVja1Byb2dyYW1Ib3N0fSBmcm9tICcuL2hvc3QnO1xuaW1wb3J0IHtUeXBlQ2hlY2tTaGltR2VuZXJhdG9yfSBmcm9tICcuL3NoaW0nO1xuXG4vKipcbiAqIEltcGxlbWVudHMgYSB0ZW1wbGF0ZSB0eXBlLWNoZWNraW5nIHByb2dyYW0gdXNpbmcgYHRzLmNyZWF0ZVByb2dyYW1gIGFuZCBUeXBlU2NyaXB0J3MgcHJvZ3JhbVxuICogcmV1c2UgZnVuY3Rpb25hbGl0eS5cbiAqL1xuZXhwb3J0IGNsYXNzIFJldXNlZFByb2dyYW1TdHJhdGVneSBpbXBsZW1lbnRzIFR5cGVDaGVja2luZ1Byb2dyYW1TdHJhdGVneSB7XG4gIC8qKlxuICAgKiBBIG1hcCBvZiBzb3VyY2UgZmlsZSBwYXRocyB0byByZXBsYWNlbWVudCBgdHMuU291cmNlRmlsZWBzIGZvciB0aG9zZSBwYXRocy5cbiAgICpcbiAgICogRWZmZWN0aXZlbHksIHRoaXMgdHJhY2tzIHRoZSBkZWx0YSBiZXR3ZWVuIHRoZSB1c2VyJ3MgcHJvZ3JhbSAocmVwcmVzZW50ZWQgYnkgdGhlXG4gICAqIGBvcmlnaW5hbEhvc3RgKSBhbmQgdGhlIHRlbXBsYXRlIHR5cGUtY2hlY2tpbmcgcHJvZ3JhbSBiZWluZyBtYW5hZ2VkLlxuICAgKi9cbiAgcHJpdmF0ZSBzZk1hcCA9IG5ldyBNYXA8c3RyaW5nLCB0cy5Tb3VyY2VGaWxlPigpO1xuXG4gIHByaXZhdGUgcHJvZ3JhbTogdHMuUHJvZ3JhbSA9IHRoaXMub3JpZ2luYWxQcm9ncmFtO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSBvcmlnaW5hbFByb2dyYW06IHRzLlByb2dyYW0sIHByaXZhdGUgb3JpZ2luYWxIb3N0OiB0cy5Db21waWxlckhvc3QsXG4gICAgICBwcml2YXRlIG9wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucywgcHJpdmF0ZSBzaGltRXh0ZW5zaW9uUHJlZml4ZXM6IHN0cmluZ1tdKSB7fVxuXG4gIHJlYWRvbmx5IHN1cHBvcnRzSW5saW5lT3BlcmF0aW9ucyA9IHRydWU7XG5cbiAgZ2V0UHJvZ3JhbSgpOiB0cy5Qcm9ncmFtIHtcbiAgICByZXR1cm4gdGhpcy5wcm9ncmFtO1xuICB9XG5cbiAgdXBkYXRlRmlsZXMoY29udGVudHM6IE1hcDxBYnNvbHV0ZUZzUGF0aCwgc3RyaW5nPiwgdXBkYXRlTW9kZTogVXBkYXRlTW9kZSk6IHZvaWQge1xuICAgIGlmIChjb250ZW50cy5zaXplID09PSAwKSB7XG4gICAgICAvLyBObyBjaGFuZ2VzIGhhdmUgYmVlbiByZXF1ZXN0ZWQuIElzIGl0IHNhZmUgdG8gc2tpcCB1cGRhdGluZyBlbnRpcmVseT9cbiAgICAgIC8vIElmIFVwZGF0ZU1vZGUgaXMgSW5jcmVtZW50YWwsIHRoZW4geWVzLiBJZiBVcGRhdGVNb2RlIGlzIENvbXBsZXRlLCB0aGVuIGl0J3Mgc2FmZSB0byBza2lwXG4gICAgICAvLyBvbmx5IGlmIHRoZXJlIGFyZSBubyBhY3RpdmUgY2hhbmdlcyBhbHJlYWR5ICh0aGF0IHdvdWxkIGJlIGNsZWFyZWQgYnkgdGhlIHVwZGF0ZSkuXG5cbiAgICAgIGlmICh1cGRhdGVNb2RlICE9PSBVcGRhdGVNb2RlLkNvbXBsZXRlIHx8IHRoaXMuc2ZNYXAuc2l6ZSA9PT0gMCkge1xuICAgICAgICAvLyBObyBjaGFuZ2VzIHdvdWxkIGJlIG1hZGUgdG8gdGhlIGB0cy5Qcm9ncmFtYCBhbnl3YXksIHNvIGl0J3Mgc2FmZSB0byBkbyBub3RoaW5nIGhlcmUuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodXBkYXRlTW9kZSA9PT0gVXBkYXRlTW9kZS5Db21wbGV0ZSkge1xuICAgICAgdGhpcy5zZk1hcC5jbGVhcigpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW2ZpbGVQYXRoLCB0ZXh0XSBvZiBjb250ZW50cy5lbnRyaWVzKCkpIHtcbiAgICAgIHRoaXMuc2ZNYXAuc2V0KGZpbGVQYXRoLCB0cy5jcmVhdGVTb3VyY2VGaWxlKGZpbGVQYXRoLCB0ZXh0LCB0cy5TY3JpcHRUYXJnZXQuTGF0ZXN0LCB0cnVlKSk7XG4gICAgfVxuXG4gICAgY29uc3QgaG9zdCA9IG5ldyBUeXBlQ2hlY2tQcm9ncmFtSG9zdChcbiAgICAgICAgdGhpcy5zZk1hcCwgdGhpcy5vcmlnaW5hbFByb2dyYW0sIHRoaXMub3JpZ2luYWxIb3N0LCB0aGlzLnNoaW1FeHRlbnNpb25QcmVmaXhlcyk7XG4gICAgY29uc3Qgb2xkUHJvZ3JhbSA9IHRoaXMucHJvZ3JhbTtcblxuICAgIC8vIFJldGFnIHRoZSBvbGQgcHJvZ3JhbSdzIGB0cy5Tb3VyY2VGaWxlYHMgd2l0aCBzaGltIHRhZ3MsIHRvIGFsbG93IFR5cGVTY3JpcHQgdG8gcmV1c2UgdGhlXG4gICAgLy8gbW9zdCBkYXRhLlxuICAgIHJldGFnQWxsVHNGaWxlcyhvbGRQcm9ncmFtKTtcblxuICAgIHRoaXMucHJvZ3JhbSA9IHRzLmNyZWF0ZVByb2dyYW0oe1xuICAgICAgaG9zdCxcbiAgICAgIHJvb3ROYW1lczogdGhpcy5wcm9ncmFtLmdldFJvb3RGaWxlTmFtZXMoKSxcbiAgICAgIG9wdGlvbnM6IHRoaXMub3B0aW9ucyxcbiAgICAgIG9sZFByb2dyYW0sXG4gICAgfSk7XG4gICAgaG9zdC5wb3N0UHJvZ3JhbUNyZWF0aW9uQ2xlYW51cCgpO1xuXG4gICAgLy8gQW5kIHVudGFnIHRoZW0gYWZ0ZXJ3YXJkcy4gV2UgZXhwbGljaXRseSB1bnRhZyBib3RoIHByb2dyYW1zIGhlcmUsIGJlY2F1c2UgdGhlIG9sZFByb2dyYW1cbiAgICAvLyBtYXkgc3RpbGwgYmUgdXNlZCBmb3IgZW1pdCBhbmQgbmVlZHMgdG8gbm90IGNvbnRhaW4gdGFncy5cbiAgICB1bnRhZ0FsbFRzRmlsZXModGhpcy5wcm9ncmFtKTtcbiAgICB1bnRhZ0FsbFRzRmlsZXMob2xkUHJvZ3JhbSk7XG4gIH1cblxuICBzaGltUGF0aEZvckNvbXBvbmVudChub2RlOiB0cy5DbGFzc0RlY2xhcmF0aW9uKTogQWJzb2x1dGVGc1BhdGgge1xuICAgIHJldHVybiBUeXBlQ2hlY2tTaGltR2VuZXJhdG9yLnNoaW1Gb3IoYWJzb2x1dGVGcm9tU291cmNlRmlsZShub2RlLmdldFNvdXJjZUZpbGUoKSkpO1xuICB9XG59XG4iXX0=
@@ -6,43 +6,88 @@
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
8
  /// <amd-module name="@angular/compiler-cli/src/ngtsc/typecheck/src/checker" />
9
+ import { ParseError, TmplAstNode } from '@angular/compiler';
9
10
  import * as ts from 'typescript';
11
+ import { AbsoluteFsPath } from '../../file_system';
10
12
  import { ReferenceEmitter } from '../../imports';
11
13
  import { IncrementalBuild } from '../../incremental/api';
12
14
  import { ReflectionHost } from '../../reflection';
13
- import { TypeCheckingConfig, TypeCheckingProgramStrategy } from './api';
14
- import { FileTypeCheckingData, TypeCheckContext, TypeCheckRequest } from './context';
15
- /**
16
- * Interface to trigger generation of type-checking code for a program given a new
17
- * `TypeCheckContext`.
18
- */
19
- export interface ProgramTypeCheckAdapter {
20
- typeCheck(sf: ts.SourceFile, ctx: TypeCheckContext): void;
21
- }
15
+ import { OptimizeFor, ProgramTypeCheckAdapter, TemplateId, TemplateTypeChecker, TypeCheckingConfig, TypeCheckingProgramStrategy } from '../api';
16
+ import { ShimTypeCheckingData } from './context';
17
+ import { TemplateSourceManager } from './source';
22
18
  /**
23
19
  * Primary template type-checking engine, which performs type-checking using a
24
20
  * `TypeCheckingProgramStrategy` for type-checking program maintenance, and the
25
21
  * `ProgramTypeCheckAdapter` for generation of template type-checking code.
26
22
  */
27
- export declare class TemplateTypeChecker {
23
+ export declare class TemplateTypeCheckerImpl implements TemplateTypeChecker {
28
24
  private originalProgram;
29
- private typeCheckingStrategy;
25
+ readonly typeCheckingStrategy: TypeCheckingProgramStrategy;
30
26
  private typeCheckAdapter;
31
27
  private config;
32
28
  private refEmitter;
33
29
  private reflector;
34
30
  private compilerHost;
35
31
  private priorBuild;
36
- private files;
32
+ private state;
33
+ private isComplete;
37
34
  constructor(originalProgram: ts.Program, typeCheckingStrategy: TypeCheckingProgramStrategy, typeCheckAdapter: ProgramTypeCheckAdapter, config: TypeCheckingConfig, refEmitter: ReferenceEmitter, reflector: ReflectionHost, compilerHost: Pick<ts.CompilerHost, 'getCanonicalFileName'>, priorBuild: IncrementalBuild<unknown, FileTypeCheckingData>);
38
- /**
39
- * Reset the internal type-checking program by generating type-checking code from the user's
40
- * program.
41
- */
42
- refresh(): TypeCheckRequest;
35
+ resetOverrides(): void;
36
+ overrideComponentTemplate(component: ts.ClassDeclaration, template: string): {
37
+ nodes: TmplAstNode[];
38
+ errors?: ParseError[];
39
+ };
43
40
  /**
44
41
  * Retrieve type-checking diagnostics from the given `ts.SourceFile` using the most recent
45
42
  * type-checking program.
46
43
  */
47
- getDiagnosticsForFile(sf: ts.SourceFile): ts.Diagnostic[];
44
+ getDiagnosticsForFile(sf: ts.SourceFile, optimizeFor: OptimizeFor): ts.Diagnostic[];
45
+ getDiagnosticsForComponent(component: ts.ClassDeclaration): ts.Diagnostic[];
46
+ getTypeCheckBlock(component: ts.ClassDeclaration): ts.Node | null;
47
+ private maybeAdoptPriorResultsForFile;
48
+ private ensureAllShimsForAllFiles;
49
+ private ensureAllShimsForOneFile;
50
+ private ensureShimForComponent;
51
+ private newContext;
52
+ /**
53
+ * Remove any shim data that depends on inline operations applied to the type-checking program.
54
+ *
55
+ * This can be useful if new inlines need to be applied, and it's not possible to guarantee that
56
+ * they won't overwrite or corrupt existing inlines that are used by such shims.
57
+ */
58
+ clearAllShimDataUsingInlines(): void;
59
+ private updateFromContext;
60
+ getFileData(path: AbsoluteFsPath): FileTypeCheckingData;
61
+ }
62
+ /**
63
+ * Data for template type-checking related to a specific input file in the user's program (which
64
+ * contains components to be checked).
65
+ */
66
+ export interface FileTypeCheckingData {
67
+ /**
68
+ * Whether the type-checking shim required any inline changes to the original file, which affects
69
+ * whether the shim can be reused.
70
+ */
71
+ hasInlines: boolean;
72
+ /**
73
+ * Source mapping information for mapping diagnostics from inlined type check blocks back to the
74
+ * original template.
75
+ */
76
+ sourceManager: TemplateSourceManager;
77
+ /**
78
+ * Map of template overrides applied to any components in this input file.
79
+ */
80
+ templateOverrides: Map<TemplateId, TmplAstNode[]> | null;
81
+ /**
82
+ * Data for each shim generated from this input file.
83
+ *
84
+ * A single input file will generate one or more shim files that actually contain template
85
+ * type-checking code.
86
+ */
87
+ shimData: Map<AbsoluteFsPath, ShimTypeCheckingData>;
88
+ /**
89
+ * Whether the template type-checker is certain that all components from this input file have had
90
+ * type-checking code generated into shims.
91
+ */
92
+ isComplete: boolean;
48
93
  }