@angular/compiler-cli 9.0.0-rc.6 → 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/ngcc/src/analysis/decoration_analyzer.d.ts +13 -26
  2. package/ngcc/src/analysis/decoration_analyzer.js +100 -134
  3. package/ngcc/src/analysis/migration_host.d.ts +5 -16
  4. package/ngcc/src/analysis/migration_host.js +20 -91
  5. package/ngcc/src/analysis/module_with_providers_analyzer.js +2 -2
  6. package/ngcc/src/analysis/ngcc_trait_compiler.d.ts +42 -0
  7. package/ngcc/src/analysis/ngcc_trait_compiler.js +107 -0
  8. package/ngcc/src/analysis/private_declarations_analyzer.d.ts +0 -1
  9. package/ngcc/src/analysis/private_declarations_analyzer.js +4 -35
  10. package/ngcc/src/analysis/types.d.ts +6 -21
  11. package/ngcc/src/analysis/types.js +1 -1
  12. package/ngcc/src/analysis/util.d.ts +2 -5
  13. package/ngcc/src/analysis/util.js +11 -94
  14. package/ngcc/src/dependencies/commonjs_dependency_host.d.ts +1 -1
  15. package/ngcc/src/dependencies/commonjs_dependency_host.js +90 -39
  16. package/ngcc/src/dependencies/dependency_host.d.ts +7 -5
  17. package/ngcc/src/dependencies/dependency_host.js +12 -10
  18. package/ngcc/src/dependencies/dependency_resolver.d.ts +2 -1
  19. package/ngcc/src/dependencies/dependency_resolver.js +9 -4
  20. package/ngcc/src/dependencies/dts_dependency_host.d.ts +21 -0
  21. package/ngcc/src/dependencies/dts_dependency_host.js +34 -0
  22. package/ngcc/src/dependencies/esm_dependency_host.d.ts +8 -1
  23. package/ngcc/src/dependencies/esm_dependency_host.js +30 -22
  24. package/ngcc/src/dependencies/module_resolver.d.ts +1 -1
  25. package/ngcc/src/dependencies/module_resolver.js +1 -1
  26. package/ngcc/src/dependencies/umd_dependency_host.d.ts +1 -1
  27. package/ngcc/src/dependencies/umd_dependency_host.js +3 -3
  28. package/ngcc/src/entry_point_finder/targeted_entry_point_finder.d.ts +2 -0
  29. package/ngcc/src/entry_point_finder/targeted_entry_point_finder.js +49 -9
  30. package/ngcc/src/execution/cluster/executor.d.ts +3 -1
  31. package/ngcc/src/execution/cluster/executor.js +12 -7
  32. package/ngcc/src/execution/cluster/package_json_updater.js +3 -2
  33. package/ngcc/src/execution/cluster/worker.d.ts +3 -1
  34. package/ngcc/src/execution/cluster/worker.js +10 -7
  35. package/ngcc/src/execution/lock_file.d.ts +43 -0
  36. package/ngcc/src/execution/lock_file.js +129 -0
  37. package/ngcc/src/execution/single_process_executor.d.ts +3 -1
  38. package/ngcc/src/execution/single_process_executor.js +18 -15
  39. package/ngcc/src/execution/task_selection/base_task_queue.d.ts +1 -1
  40. package/ngcc/src/host/commonjs_host.d.ts +6 -18
  41. package/ngcc/src/host/commonjs_host.js +45 -81
  42. package/ngcc/src/host/commonjs_umd_utils.d.ts +73 -0
  43. package/ngcc/src/host/commonjs_umd_utils.js +109 -0
  44. package/ngcc/src/host/esm2015_host.d.ts +46 -14
  45. package/ngcc/src/host/esm2015_host.js +182 -55
  46. package/ngcc/src/host/esm5_host.js +3 -1
  47. package/ngcc/src/host/umd_host.d.ts +12 -5
  48. package/ngcc/src/host/umd_host.js +144 -92
  49. package/ngcc/src/main.js +65 -122
  50. package/ngcc/src/migrations/migration.d.ts +1 -0
  51. package/ngcc/src/migrations/migration.js +1 -1
  52. package/ngcc/src/packages/build_marker.d.ts +17 -8
  53. package/ngcc/src/packages/build_marker.js +61 -32
  54. package/ngcc/src/packages/entry_point_bundle.js +2 -2
  55. package/ngcc/src/packages/transformer.js +5 -6
  56. package/ngcc/src/rendering/commonjs_rendering_formatter.js +9 -5
  57. package/ngcc/src/rendering/dts_renderer.js +8 -5
  58. package/ngcc/src/rendering/esm_rendering_formatter.js +17 -5
  59. package/ngcc/src/rendering/renderer.js +4 -4
  60. package/ngcc/src/rendering/umd_rendering_formatter.d.ts +18 -1
  61. package/ngcc/src/rendering/umd_rendering_formatter.js +69 -16
  62. package/ngcc/src/utils.d.ts +14 -0
  63. package/ngcc/src/utils.js +29 -1
  64. package/ngcc/src/writing/cleaning/cleaning_strategies.d.ts +45 -0
  65. package/ngcc/src/writing/cleaning/cleaning_strategies.js +77 -0
  66. package/ngcc/src/writing/cleaning/package_cleaner.d.ts +39 -0
  67. package/ngcc/src/writing/cleaning/package_cleaner.js +125 -0
  68. package/ngcc/src/writing/cleaning/utils.d.ts +16 -0
  69. package/ngcc/src/writing/cleaning/utils.js +29 -0
  70. package/ngcc/src/writing/in_place_file_writer.d.ts +1 -0
  71. package/ngcc/src/writing/in_place_file_writer.js +3 -2
  72. package/ngcc/src/writing/new_entry_point_file_writer.d.ts +2 -0
  73. package/ngcc/src/writing/new_entry_point_file_writer.js +5 -4
  74. package/ngcc/src/writing/package_json_updater.d.ts +24 -10
  75. package/ngcc/src/writing/package_json_updater.js +53 -10
  76. package/package.json +6 -5
  77. package/src/main.d.ts +2 -2
  78. package/src/metadata/symbols.d.ts +1 -1
  79. package/src/ngtsc/annotations/src/component.d.ts +58 -20
  80. package/src/ngtsc/annotations/src/component.js +149 -97
  81. package/src/ngtsc/annotations/src/diagnostics.d.ts +23 -0
  82. package/src/ngtsc/annotations/src/diagnostics.js +123 -0
  83. package/src/ngtsc/annotations/src/directive.d.ts +19 -8
  84. package/src/ngtsc/annotations/src/directive.js +41 -18
  85. package/src/ngtsc/annotations/src/injectable.d.ts +8 -4
  86. package/src/ngtsc/annotations/src/injectable.js +7 -3
  87. package/src/ngtsc/annotations/src/ng_module.d.ts +22 -7
  88. package/src/ngtsc/annotations/src/ng_module.js +115 -52
  89. package/src/ngtsc/annotations/src/pipe.d.ts +12 -6
  90. package/src/ngtsc/annotations/src/pipe.js +22 -5
  91. package/src/ngtsc/annotations/src/util.d.ts +22 -0
  92. package/src/ngtsc/annotations/src/util.js +92 -3
  93. package/src/ngtsc/core/api.d.ts +368 -0
  94. package/src/ngtsc/core/api.js +20 -0
  95. package/src/ngtsc/core/index.d.ts +10 -0
  96. package/src/ngtsc/core/index.js +24 -0
  97. package/src/ngtsc/core/src/compiler.d.ts +120 -0
  98. package/src/ngtsc/core/src/compiler.js +769 -0
  99. package/src/ngtsc/core/src/host.d.ts +85 -0
  100. package/src/ngtsc/core/src/host.js +208 -0
  101. package/src/ngtsc/cycles/src/imports.js +2 -2
  102. package/src/ngtsc/diagnostics/index.d.ts +1 -1
  103. package/src/ngtsc/diagnostics/index.js +5 -5
  104. package/src/ngtsc/diagnostics/src/error.d.ts +1 -1
  105. package/src/ngtsc/diagnostics/src/error.js +1 -1
  106. package/src/ngtsc/diagnostics/src/{code.d.ts → error_code.d.ts} +27 -4
  107. package/src/ngtsc/diagnostics/src/error_code.js +128 -0
  108. package/src/ngtsc/file_system/src/cached_file_system.d.ts +3 -1
  109. package/src/ngtsc/file_system/src/cached_file_system.js +48 -4
  110. package/src/ngtsc/file_system/src/invalid_file_system.d.ts +3 -1
  111. package/src/ngtsc/file_system/src/invalid_file_system.js +4 -2
  112. package/src/ngtsc/file_system/src/node_js_file_system.d.ts +3 -1
  113. package/src/ngtsc/file_system/src/node_js_file_system.js +8 -4
  114. package/src/ngtsc/file_system/src/types.d.ts +3 -1
  115. package/src/ngtsc/file_system/src/types.js +1 -1
  116. package/src/ngtsc/imports/index.d.ts +3 -3
  117. package/src/ngtsc/imports/index.js +4 -4
  118. package/src/ngtsc/imports/src/alias.d.ts +12 -11
  119. package/src/ngtsc/imports/src/alias.js +21 -16
  120. package/src/ngtsc/imports/src/emitter.d.ts +40 -19
  121. package/src/ngtsc/imports/src/emitter.js +54 -26
  122. package/src/ngtsc/imports/src/references.d.ts +30 -8
  123. package/src/ngtsc/imports/src/references.js +41 -6
  124. package/src/ngtsc/imports/src/resolver.d.ts +3 -6
  125. package/src/ngtsc/imports/src/resolver.js +5 -4
  126. package/src/ngtsc/incremental/api.d.ts +51 -0
  127. package/src/ngtsc/incremental/api.js +20 -0
  128. package/src/ngtsc/incremental/index.d.ts +1 -0
  129. package/src/ngtsc/incremental/index.js +4 -2
  130. package/src/ngtsc/incremental/src/dependency_tracking.d.ts +56 -0
  131. package/src/ngtsc/incremental/src/dependency_tracking.js +186 -0
  132. package/src/ngtsc/incremental/src/noop.d.ts +10 -0
  133. package/src/ngtsc/incremental/src/noop.js +23 -0
  134. package/src/ngtsc/incremental/src/state.d.ts +8 -14
  135. package/src/ngtsc/incremental/src/state.js +83 -80
  136. package/src/ngtsc/indexer/index.d.ts +1 -0
  137. package/src/ngtsc/indexer/index.js +4 -2
  138. package/src/ngtsc/metadata/index.d.ts +1 -1
  139. package/src/ngtsc/metadata/index.js +2 -1
  140. package/src/ngtsc/metadata/src/api.d.ts +8 -0
  141. package/src/ngtsc/metadata/src/api.js +1 -1
  142. package/src/ngtsc/metadata/src/dts.js +2 -1
  143. package/src/ngtsc/metadata/src/registry.d.ts +12 -1
  144. package/src/ngtsc/metadata/src/registry.js +22 -2
  145. package/src/ngtsc/metadata/src/util.d.ts +2 -0
  146. package/src/ngtsc/metadata/src/util.js +10 -1
  147. package/src/ngtsc/modulewithproviders/src/scanner.js +2 -2
  148. package/src/ngtsc/partial_evaluator/index.d.ts +1 -1
  149. package/src/ngtsc/partial_evaluator/index.js +1 -1
  150. package/src/ngtsc/partial_evaluator/src/builtin.d.ts +7 -6
  151. package/src/ngtsc/partial_evaluator/src/builtin.js +54 -9
  152. package/src/ngtsc/partial_evaluator/src/interface.d.ts +3 -9
  153. package/src/ngtsc/partial_evaluator/src/interface.js +4 -3
  154. package/src/ngtsc/partial_evaluator/src/interpreter.d.ts +4 -3
  155. package/src/ngtsc/partial_evaluator/src/interpreter.js +11 -7
  156. package/src/ngtsc/partial_evaluator/src/known_declaration.d.ts +19 -0
  157. package/src/ngtsc/partial_evaluator/src/known_declaration.js +38 -0
  158. package/src/ngtsc/partial_evaluator/src/result.d.ts +1 -1
  159. package/src/ngtsc/partial_evaluator/src/result.js +1 -1
  160. package/src/ngtsc/partial_evaluator/src/ts_helpers.d.ts +1 -1
  161. package/src/ngtsc/partial_evaluator/src/ts_helpers.js +13 -3
  162. package/src/ngtsc/program.d.ts +46 -57
  163. package/src/ngtsc/program.js +68 -574
  164. package/src/ngtsc/reflection/src/host.d.ts +19 -2
  165. package/src/ngtsc/reflection/src/host.js +17 -3
  166. package/src/ngtsc/reflection/src/typescript.js +11 -7
  167. package/src/ngtsc/resource/index.d.ts +9 -0
  168. package/src/ngtsc/resource/index.js +22 -0
  169. package/src/ngtsc/{resource_loader.d.ts → resource/src/loader.d.ts} +4 -4
  170. package/src/ngtsc/resource/src/loader.js +193 -0
  171. package/src/ngtsc/routing/src/route.js +2 -2
  172. package/src/ngtsc/scope/index.d.ts +1 -1
  173. package/src/ngtsc/scope/index.js +1 -1
  174. package/src/ngtsc/scope/src/component_scope.d.ts +2 -2
  175. package/src/ngtsc/scope/src/component_scope.js +1 -1
  176. package/src/ngtsc/scope/src/dependency.js +10 -8
  177. package/src/ngtsc/scope/src/local.d.ts +31 -4
  178. package/src/ngtsc/scope/src/local.js +83 -15
  179. package/src/ngtsc/shims/index.d.ts +2 -1
  180. package/src/ngtsc/shims/index.js +4 -5
  181. package/src/ngtsc/shims/src/api.d.ts +25 -0
  182. package/src/ngtsc/shims/src/api.js +13 -0
  183. package/src/ngtsc/shims/src/factory_generator.d.ts +2 -2
  184. package/src/ngtsc/shims/src/factory_generator.js +1 -1
  185. package/src/ngtsc/shims/src/factory_tracker.d.ts +24 -0
  186. package/src/ngtsc/shims/src/factory_tracker.js +47 -0
  187. package/src/ngtsc/shims/src/summary_generator.d.ts +1 -1
  188. package/src/ngtsc/shims/src/summary_generator.js +1 -1
  189. package/src/ngtsc/shims/src/typecheck_shim.d.ts +1 -1
  190. package/src/ngtsc/shims/src/typecheck_shim.js +1 -1
  191. package/src/ngtsc/synthetic_files_compiler_host.d.ts +1 -1
  192. package/src/ngtsc/transform/index.d.ts +3 -1
  193. package/src/ngtsc/transform/index.js +8 -3
  194. package/src/ngtsc/transform/src/alias.d.ts +1 -1
  195. package/src/ngtsc/transform/src/alias.js +1 -1
  196. package/src/ngtsc/transform/src/api.d.ts +52 -17
  197. package/src/ngtsc/transform/src/api.js +1 -1
  198. package/src/ngtsc/transform/src/compilation.d.ts +68 -47
  199. package/src/ngtsc/transform/src/compilation.js +498 -313
  200. package/src/ngtsc/transform/src/declaration.d.ts +1 -1
  201. package/src/ngtsc/transform/src/declaration.js +6 -1
  202. package/src/ngtsc/transform/src/trait.d.ts +169 -0
  203. package/src/ngtsc/transform/src/trait.js +114 -0
  204. package/src/ngtsc/transform/src/transform.d.ts +2 -2
  205. package/src/ngtsc/transform/src/transform.js +4 -4
  206. package/src/ngtsc/translator/src/translator.d.ts +11 -9
  207. package/src/ngtsc/translator/src/translator.js +51 -18
  208. package/src/ngtsc/typecheck/index.d.ts +1 -0
  209. package/src/ngtsc/typecheck/index.js +4 -2
  210. package/src/ngtsc/typecheck/src/api.d.ts +12 -1
  211. package/src/ngtsc/typecheck/src/api.js +1 -1
  212. package/src/ngtsc/typecheck/src/context.d.ts +3 -2
  213. package/src/ngtsc/typecheck/src/context.js +10 -8
  214. package/src/ngtsc/typecheck/src/diagnostics.d.ts +30 -31
  215. package/src/ngtsc/typecheck/src/diagnostics.js +108 -70
  216. package/src/ngtsc/typecheck/src/dom.d.ts +6 -5
  217. package/src/ngtsc/typecheck/src/dom.js +3 -3
  218. package/src/ngtsc/typecheck/src/environment.d.ts +5 -3
  219. package/src/ngtsc/typecheck/src/environment.js +20 -8
  220. package/src/ngtsc/typecheck/src/expression.d.ts +2 -3
  221. package/src/ngtsc/typecheck/src/expression.js +26 -23
  222. package/src/ngtsc/typecheck/src/host.d.ts +1 -0
  223. package/src/ngtsc/typecheck/src/host.js +4 -1
  224. package/src/ngtsc/typecheck/src/oob.d.ts +11 -11
  225. package/src/ngtsc/typecheck/src/oob.js +15 -4
  226. package/src/ngtsc/typecheck/src/source.d.ts +9 -9
  227. package/src/ngtsc/typecheck/src/source.js +15 -15
  228. package/src/ngtsc/typecheck/src/template_semantics.d.ts +22 -0
  229. package/src/ngtsc/typecheck/src/template_semantics.js +51 -0
  230. package/src/ngtsc/typecheck/src/ts_util.js +36 -1
  231. package/src/ngtsc/typecheck/src/type_check_block.d.ts +3 -3
  232. package/src/ngtsc/typecheck/src/type_check_block.js +70 -43
  233. package/src/ngtsc/typecheck/src/type_check_file.d.ts +2 -2
  234. package/src/ngtsc/typecheck/src/type_check_file.js +3 -3
  235. package/src/ngtsc/typecheck/src/type_constructor.d.ts +4 -4
  236. package/src/ngtsc/typecheck/src/type_constructor.js +15 -10
  237. package/src/ngtsc/typecheck/src/type_emitter.d.ts +72 -0
  238. package/src/ngtsc/typecheck/src/type_emitter.js +150 -0
  239. package/src/ngtsc/typecheck/src/type_parameter_emitter.d.ts +31 -0
  240. package/src/ngtsc/typecheck/src/type_parameter_emitter.js +96 -0
  241. package/src/ngtsc/util/src/typescript.d.ts +7 -1
  242. package/src/ngtsc/util/src/typescript.js +15 -5
  243. package/src/perform_watch.js +6 -5
  244. package/src/transformers/api.d.ts +3 -204
  245. package/src/transformers/api.js +1 -1
  246. package/src/transformers/compiler_host.js +2 -2
  247. package/src/transformers/program.js +1 -1
  248. package/src/typescript_support.js +2 -2
  249. package/src/version.js +1 -1
  250. package/src/ngtsc/diagnostics/src/code.js +0 -101
  251. package/src/ngtsc/resource_loader.js +0 -193
  252. package/src/ngtsc/shims/src/host.d.ts +0 -46
  253. package/src/ngtsc/shims/src/host.js +0 -82
  254. package/src/ngtsc/util/src/resource_recorder.d.ts +0 -18
  255. package/src/ngtsc/util/src/resource_recorder.js +0 -20
@@ -0,0 +1,368 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google Inc. All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ /// <amd-module name="@angular/compiler-cli/src/ngtsc/core/api" />
9
+ import * as ts from 'typescript';
10
+ /**
11
+ * A host backed by a build system which has a unified view of the module namespace.
12
+ *
13
+ * Such a build system supports the `fileNameToModuleName` method provided by certain build system
14
+ * integrations (such as the integration with Bazel). See the docs on `fileNameToModuleName` for
15
+ * more details.
16
+ */
17
+ export interface UnifiedModulesHost {
18
+ /**
19
+ * Converts a file path to a module name that can be used as an `import ...`.
20
+ *
21
+ * For example, such a host might determine that `/absolute/path/to/monorepo/lib/importedFile.ts`
22
+ * should be imported using a module specifier of `monorepo/lib/importedFile`.
23
+ */
24
+ fileNameToModuleName(importedFilePath: string, containingFilePath: string): string;
25
+ }
26
+ /**
27
+ * A host which additionally tracks and produces "resources" (HTML templates, CSS
28
+ * files, etc).
29
+ */
30
+ export interface ResourceHost {
31
+ /**
32
+ * Converts a file path for a resource that is used in a source file or another resource
33
+ * into a filepath.
34
+ */
35
+ resourceNameToFileName(resourceName: string, containingFilePath: string): string | null;
36
+ /**
37
+ * Load a referenced resource either statically or asynchronously. If the host returns a
38
+ * `Promise<string>` it is assumed the user of the corresponding `Program` will call
39
+ * `loadNgStructureAsync()`. Returning `Promise<string>` outside `loadNgStructureAsync()` will
40
+ * cause a diagnostics diagnostic error or an exception to be thrown.
41
+ */
42
+ readResource(fileName: string): Promise<string> | string;
43
+ /**
44
+ * Get the absolute paths to the changed files that triggered the current compilation
45
+ * or `undefined` if this is not an incremental build.
46
+ */
47
+ getModifiedResourceFiles?(): Set<string> | undefined;
48
+ }
49
+ /**
50
+ * A `ts.CompilerHost` interface which supports some number of optional methods in addition to the
51
+ * core interface.
52
+ */
53
+ export interface ExtendedTsCompilerHost extends ts.CompilerHost, Partial<ResourceHost>, Partial<UnifiedModulesHost> {
54
+ }
55
+ /**
56
+ * Options supported by the legacy View Engine compiler, which are still consumed by the Angular Ivy
57
+ * compiler for backwards compatibility.
58
+ *
59
+ * These are expected to be removed at some point in the future.
60
+ */
61
+ export interface LegacyNgcOptions {
62
+ /** generate all possible generated files */
63
+ allowEmptyCodegenFiles?: boolean;
64
+ /**
65
+ * Whether to type check the entire template.
66
+ *
67
+ * This flag currently controls a couple aspects of template type-checking, including
68
+ * whether embedded views are checked.
69
+ *
70
+ * For maximum type-checking, set this to `true`, and set `strictTemplates` to `true`.
71
+ *
72
+ * It is an error for this flag to be `false`, while `strictTemplates` is set to `true`.
73
+ */
74
+ fullTemplateTypeCheck?: boolean;
75
+ /**
76
+ * Whether to generate a flat module index of the given name and the corresponding
77
+ * flat module metadata. This option is intended to be used when creating flat
78
+ * modules similar to how `@angular/core` and `@angular/common` are packaged.
79
+ * When this option is used the `package.json` for the library should refer to the
80
+ * generated flat module index instead of the library index file. When using this
81
+ * option only one .metadata.json file is produced that contains all the metadata
82
+ * necessary for symbols exported from the library index.
83
+ * In the generated .ngfactory.ts files flat module index is used to import symbols
84
+ * including both the public API from the library index as well as shrowded internal
85
+ * symbols.
86
+ * By default the .ts file supplied in the `files` field is assumed to be the
87
+ * library index. If more than one is specified, uses `libraryIndex` to select the
88
+ * file to use. If more than one .ts file is supplied and no `libraryIndex` is supplied
89
+ * an error is produced.
90
+ * A flat module index .d.ts and .js will be created with the given `flatModuleOutFile`
91
+ * name in the same location as the library index .d.ts file is emitted.
92
+ * For example, if a library uses `public_api.ts` file as the library index of the
93
+ * module the `tsconfig.json` `files` field would be `["public_api.ts"]`. The
94
+ * `flatModuleOutFile` options could then be set to, for example `"index.js"`, which
95
+ * produces `index.d.ts` and `index.metadata.json` files. The library's
96
+ * `package.json`'s `module` field would be `"index.js"` and the `typings` field would
97
+ * be `"index.d.ts"`.
98
+ */
99
+ flatModuleOutFile?: string;
100
+ /**
101
+ * Preferred module id to use for importing flat module. References generated by `ngc`
102
+ * will use this module name when importing symbols from the flat module. This is only
103
+ * meaningful when `flatModuleOutFile` is also supplied. It is otherwise ignored.
104
+ */
105
+ flatModuleId?: string;
106
+ /**
107
+ * Always report errors a parameter is supplied whose injection type cannot
108
+ * be determined. When this value option is not provided or is `false`, constructor
109
+ * parameters of classes marked with `@Injectable` whose type cannot be resolved will
110
+ * produce a warning. With this option `true`, they produce an error. When this option is
111
+ * not provided is treated as if it were `false`.
112
+ */
113
+ strictInjectionParameters?: boolean;
114
+ /**
115
+ * Whether to remove blank text nodes from compiled templates. It is `false` by default starting
116
+ * from Angular 6.
117
+ */
118
+ preserveWhitespaces?: boolean;
119
+ }
120
+ /**
121
+ * Options which were added to the Angular Ivy compiler to support backwards compatibility with
122
+ * existing View Engine applications.
123
+ *
124
+ * These are expected to be removed at some point in the future.
125
+ */
126
+ export interface NgcCompatibilityOptions {
127
+ /**
128
+ * Controls whether ngtsc will emit `.ngfactory.js` shims for each compiled `.ts` file.
129
+ *
130
+ * These shims support legacy imports from `ngfactory` files, by exporting a factory shim
131
+ * for each component or NgModule in the original `.ts` file.
132
+ */
133
+ generateNgFactoryShims?: boolean;
134
+ /**
135
+ * Controls whether ngtsc will emit `.ngsummary.js` shims for each compiled `.ts` file.
136
+ *
137
+ * These shims support legacy imports from `ngsummary` files, by exporting an empty object
138
+ * for each NgModule in the original `.ts` file. The only purpose of summaries is to feed them to
139
+ * `TestBed`, which is a no-op in Ivy.
140
+ */
141
+ generateNgSummaryShims?: boolean;
142
+ /**
143
+ * Tells the compiler to generate definitions using the Render3 style code generation.
144
+ * This option defaults to `true`.
145
+ *
146
+ * Acceptable values are as follows:
147
+ *
148
+ * `false` - run ngc normally
149
+ * `true` - run the ngtsc compiler instead of the normal ngc compiler
150
+ * `ngtsc` - alias for `true`
151
+ */
152
+ enableIvy?: boolean | 'ngtsc';
153
+ }
154
+ /**
155
+ * Options related to template type-checking and its strictness.
156
+ */
157
+ export interface StrictTemplateOptions {
158
+ /**
159
+ * If `true`, implies all template strictness flags below (unless individually disabled).
160
+ *
161
+ * Has no effect unless `fullTemplateTypeCheck` is also enabled.
162
+ *
163
+ * Defaults to `false`, even if "fullTemplateTypeCheck" is set.
164
+ */
165
+ strictTemplates?: boolean;
166
+ /**
167
+ * Whether to check the type of a binding to a directive/component input against the type of the
168
+ * field on the directive/component.
169
+ *
170
+ * For example, if this is `false` then the expression `[input]="expr"` will have `expr` type-
171
+ * checked, but not the assignment of the resulting type to the `input` property of whichever
172
+ * directive or component is receiving the binding. If set to `true`, both sides of the assignment
173
+ * are checked.
174
+ *
175
+ * Defaults to `false`, even if "fullTemplateTypeCheck" is set.
176
+ */
177
+ strictInputTypes?: boolean;
178
+ /**
179
+ * Whether to use strict null types for input bindings for directives.
180
+ *
181
+ * If this is `true`, applications that are compiled with TypeScript's `strictNullChecks` enabled
182
+ * will produce type errors for bindings which can evaluate to `undefined` or `null` where the
183
+ * inputs's type does not include `undefined` or `null` in its type. If set to `false`, all
184
+ * binding expressions are wrapped in a non-null assertion operator to effectively disable strict
185
+ * null checks.
186
+ *
187
+ * Defaults to `false`, even if "fullTemplateTypeCheck" is set. Note that if `strictInputTypes` is
188
+ * not set, or set to `false`, this flag has no effect.
189
+ */
190
+ strictNullInputTypes?: boolean;
191
+ /**
192
+ * Whether to check text attributes that happen to be consumed by a directive or component.
193
+ *
194
+ * For example, in a template containing `<input matInput disabled>` the `disabled` attribute ends
195
+ * up being consumed as an input with type `boolean` by the `matInput` directive. At runtime, the
196
+ * input will be set to the attribute's string value, which is an empty string for attributes
197
+ * without a value, so with this flag set to `true`, an error would be reported. If set to
198
+ * `false`, text attributes will never report an error.
199
+ *
200
+ * Defaults to `false`, even if "fullTemplateTypeCheck" is set. Note that if `strictInputTypes` is
201
+ * not set, or set to `false`, this flag has no effect.
202
+ */
203
+ strictAttributeTypes?: boolean;
204
+ /**
205
+ * Whether to use a strict type for null-safe navigation operations.
206
+ *
207
+ * If this is `false`, then the return type of `a?.b` or `a?()` will be `any`. If set to `true`,
208
+ * then the return type of `a?.b` for example will be the same as the type of the ternary
209
+ * expression `a != null ? a.b : a`.
210
+ *
211
+ * Defaults to `false`, even if "fullTemplateTypeCheck" is set.
212
+ */
213
+ strictSafeNavigationTypes?: boolean;
214
+ /**
215
+ * Whether to infer the type of local references.
216
+ *
217
+ * If this is `true`, the type of a `#ref` variable on a DOM node in the template will be
218
+ * determined by the type of `document.createElement` for the given DOM node. If set to `false`,
219
+ * the type of `ref` for DOM nodes will be `any`.
220
+ *
221
+ * Defaults to `false`, even if "fullTemplateTypeCheck" is set.
222
+ */
223
+ strictDomLocalRefTypes?: boolean;
224
+ /**
225
+ * Whether to infer the type of the `$event` variable in event bindings for directive outputs or
226
+ * animation events.
227
+ *
228
+ * If this is `true`, the type of `$event` will be inferred based on the generic type of
229
+ * `EventEmitter`/`Subject` of the output. If set to `false`, the `$event` variable will be of
230
+ * type `any`.
231
+ *
232
+ * Defaults to `false`, even if "fullTemplateTypeCheck" is set.
233
+ */
234
+ strictOutputEventTypes?: boolean;
235
+ /**
236
+ * Whether to infer the type of the `$event` variable in event bindings to DOM events.
237
+ *
238
+ * If this is `true`, the type of `$event` will be inferred based on TypeScript's
239
+ * `HTMLElementEventMap`, with a fallback to the native `Event` type. If set to `false`, the
240
+ * `$event` variable will be of type `any`.
241
+ *
242
+ * Defaults to `false`, even if "fullTemplateTypeCheck" is set.
243
+ */
244
+ strictDomEventTypes?: boolean;
245
+ /**
246
+ * Whether to include the generic type of components when type-checking the template.
247
+ *
248
+ * If no component has generic type parameters, this setting has no effect.
249
+ *
250
+ * If a component has generic type parameters and this setting is `true`, those generic parameters
251
+ * will be included in the context type for the template. If `false`, any generic parameters will
252
+ * be set to `any` in the template context type.
253
+ *
254
+ * Defaults to `false`, even if "fullTemplateTypeCheck" is set.
255
+ */
256
+ strictContextGenerics?: boolean;
257
+ }
258
+ /**
259
+ * Options which control behavior useful for "monorepo" build cases using Bazel (such as the
260
+ * internal Google monorepo, g3).
261
+ */
262
+ export interface BazelAndG3Options {
263
+ /**
264
+ * Enables the generation of alias re-exports of directives/pipes that are visible from an
265
+ * NgModule from that NgModule's file.
266
+ *
267
+ * This option should be disabled for application builds or for Angular Package Format libraries
268
+ * (where NgModules along with their directives/pipes are exported via a single entrypoint).
269
+ *
270
+ * For other library compilations which are intended to be path-mapped into an application build
271
+ * (or another library), enabling this option enables the resulting deep imports to work
272
+ * correctly.
273
+ *
274
+ * A consumer of such a path-mapped library will write an import like:
275
+ *
276
+ * ```typescript
277
+ * import {LibModule} from 'lib/deep/path/to/module';
278
+ * ```
279
+ *
280
+ * The compiler will attempt to generate imports of directives/pipes from that same module
281
+ * specifier (the compiler does not rewrite the user's given import path, unlike View Engine).
282
+ *
283
+ * ```typescript
284
+ * import {LibDir, LibCmp, LibPipe} from 'lib/deep/path/to/module';
285
+ * ```
286
+ *
287
+ * It would be burdensome for users to have to re-export all directives/pipes alongside each
288
+ * NgModule to support this import model. Enabling this option tells the compiler to generate
289
+ * private re-exports alongside the NgModule of all the directives/pipes it makes available, to
290
+ * support these future imports.
291
+ */
292
+ generateDeepReexports?: boolean;
293
+ /**
294
+ * Insert JSDoc type annotations needed by Closure Compiler
295
+ */
296
+ annotateForClosureCompiler?: boolean;
297
+ }
298
+ /**
299
+ * Options related to i18n compilation support.
300
+ */
301
+ export interface I18nOptions {
302
+ /**
303
+ * Locale of the imported translations
304
+ */
305
+ i18nInLocale?: string;
306
+ /**
307
+ * Render `$localize` messages with legacy format ids.
308
+ *
309
+ * This is only active if we are building with `enableIvy: true`.
310
+ * The default value for now is `true`.
311
+ *
312
+ * Use this option when use are using the `$localize` based localization messages but
313
+ * have not migrated the translation files to use the new `$localize` message id format.
314
+ */
315
+ enableI18nLegacyMessageIdFormat?: boolean;
316
+ /**
317
+ * Whether translation variable name should contain external message id
318
+ * (used by Closure Compiler's output of `goog.getMsg` for transition period)
319
+ */
320
+ i18nUseExternalIds?: boolean;
321
+ }
322
+ /**
323
+ * Non-public options which are useful during testing of the compiler.
324
+ */
325
+ export interface TestOnlyOptions {
326
+ }
327
+ /**
328
+ * A merged interface of all of the various Angular compiler options, as well as the standard
329
+ * `ts.CompilerOptions`.
330
+ *
331
+ * Also includes a few miscellaneous options.
332
+ */
333
+ export interface NgCompilerOptions extends ts.CompilerOptions, LegacyNgcOptions, BazelAndG3Options, NgcCompatibilityOptions, StrictTemplateOptions, TestOnlyOptions, I18nOptions {
334
+ /**
335
+ * Whether the compiler should avoid generating code for classes that haven't been exported.
336
+ * This is only active when building with `enableIvy: true`. Defaults to `true`.
337
+ */
338
+ compileNonExportedClasses?: boolean;
339
+ /**
340
+ * Whether to remove blank text nodes from compiled templates. It is `false` by default starting
341
+ * from Angular 6.
342
+ */
343
+ preserveWhitespaces?: boolean;
344
+ /**
345
+ * Disable TypeScript Version Check.
346
+ */
347
+ disableTypeScriptVersionCheck?: boolean;
348
+ /** An option to enable ngtsc's internal performance tracing.
349
+ *
350
+ * This should be a path to a JSON file where trace information will be written. An optional 'ts:'
351
+ * prefix will cause the trace to be written via the TS host instead of directly to the filesystem
352
+ * (not all hosts support this mode of operation).
353
+ *
354
+ * This is currently not exposed to users as the trace format is still unstable.
355
+ */
356
+ tracePerformance?: string;
357
+ }
358
+ export interface LazyRoute {
359
+ route: string;
360
+ module: {
361
+ name: string;
362
+ filePath: string;
363
+ };
364
+ referencedModule: {
365
+ name: string;
366
+ filePath: string;
367
+ };
368
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google Inc. All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ (function (factory) {
9
+ if (typeof module === "object" && typeof module.exports === "object") {
10
+ var v = factory(require, exports);
11
+ if (v !== undefined) module.exports = v;
12
+ }
13
+ else if (typeof define === "function" && define.amd) {
14
+ define("@angular/compiler-cli/src/ngtsc/core/api", ["require", "exports"], factory);
15
+ }
16
+ })(function (require, exports) {
17
+ "use strict";
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9jb3JlL2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG4vKipcbiAqIEEgaG9zdCBiYWNrZWQgYnkgYSBidWlsZCBzeXN0ZW0gd2hpY2ggaGFzIGEgdW5pZmllZCB2aWV3IG9mIHRoZSBtb2R1bGUgbmFtZXNwYWNlLlxuICpcbiAqIFN1Y2ggYSBidWlsZCBzeXN0ZW0gc3VwcG9ydHMgdGhlIGBmaWxlTmFtZVRvTW9kdWxlTmFtZWAgbWV0aG9kIHByb3ZpZGVkIGJ5IGNlcnRhaW4gYnVpbGQgc3lzdGVtXG4gKiBpbnRlZ3JhdGlvbnMgKHN1Y2ggYXMgdGhlIGludGVncmF0aW9uIHdpdGggQmF6ZWwpLiBTZWUgdGhlIGRvY3Mgb24gYGZpbGVOYW1lVG9Nb2R1bGVOYW1lYCBmb3JcbiAqIG1vcmUgZGV0YWlscy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbmlmaWVkTW9kdWxlc0hvc3Qge1xuICAvKipcbiAgICogQ29udmVydHMgYSBmaWxlIHBhdGggdG8gYSBtb2R1bGUgbmFtZSB0aGF0IGNhbiBiZSB1c2VkIGFzIGFuIGBpbXBvcnQgLi4uYC5cbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIHN1Y2ggYSBob3N0IG1pZ2h0IGRldGVybWluZSB0aGF0IGAvYWJzb2x1dGUvcGF0aC90by9tb25vcmVwby9saWIvaW1wb3J0ZWRGaWxlLnRzYFxuICAgKiBzaG91bGQgYmUgaW1wb3J0ZWQgdXNpbmcgYSBtb2R1bGUgc3BlY2lmaWVyIG9mIGBtb25vcmVwby9saWIvaW1wb3J0ZWRGaWxlYC5cbiAgICovXG4gIGZpbGVOYW1lVG9Nb2R1bGVOYW1lKGltcG9ydGVkRmlsZVBhdGg6IHN0cmluZywgY29udGFpbmluZ0ZpbGVQYXRoOiBzdHJpbmcpOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBob3N0IHdoaWNoIGFkZGl0aW9uYWxseSB0cmFja3MgYW5kIHByb2R1Y2VzIFwicmVzb3VyY2VzXCIgKEhUTUwgdGVtcGxhdGVzLCBDU1NcbiAqIGZpbGVzLCBldGMpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlSG9zdCB7XG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIGZpbGUgcGF0aCBmb3IgYSByZXNvdXJjZSB0aGF0IGlzIHVzZWQgaW4gYSBzb3VyY2UgZmlsZSBvciBhbm90aGVyIHJlc291cmNlXG4gICAqIGludG8gYSBmaWxlcGF0aC5cbiAgICovXG4gIHJlc291cmNlTmFtZVRvRmlsZU5hbWUocmVzb3VyY2VOYW1lOiBzdHJpbmcsIGNvbnRhaW5pbmdGaWxlUGF0aDogc3RyaW5nKTogc3RyaW5nfG51bGw7XG5cbiAgLyoqXG4gICAqIExvYWQgYSByZWZlcmVuY2VkIHJlc291cmNlIGVpdGhlciBzdGF0aWNhbGx5IG9yIGFzeW5jaHJvbm91c2x5LiBJZiB0aGUgaG9zdCByZXR1cm5zIGFcbiAgICogYFByb21pc2U8c3RyaW5nPmAgaXQgaXMgYXNzdW1lZCB0aGUgdXNlciBvZiB0aGUgY29ycmVzcG9uZGluZyBgUHJvZ3JhbWAgd2lsbCBjYWxsXG4gICAqIGBsb2FkTmdTdHJ1Y3R1cmVBc3luYygpYC4gUmV0dXJuaW5nICBgUHJvbWlzZTxzdHJpbmc+YCBvdXRzaWRlIGBsb2FkTmdTdHJ1Y3R1cmVBc3luYygpYCB3aWxsXG4gICAqIGNhdXNlIGEgZGlhZ25vc3RpY3MgZGlhZ25vc3RpYyBlcnJvciBvciBhbiBleGNlcHRpb24gdG8gYmUgdGhyb3duLlxuICAgKi9cbiAgcmVhZFJlc291cmNlKGZpbGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz58c3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGFic29sdXRlIHBhdGhzIHRvIHRoZSBjaGFuZ2VkIGZpbGVzIHRoYXQgdHJpZ2dlcmVkIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uXG4gICAqIG9yIGB1bmRlZmluZWRgIGlmIHRoaXMgaXMgbm90IGFuIGluY3JlbWVudGFsIGJ1aWxkLlxuICAgKi9cbiAgZ2V0TW9kaWZpZWRSZXNvdXJjZUZpbGVzPygpOiBTZXQ8c3RyaW5nPnx1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQSBgdHMuQ29tcGlsZXJIb3N0YCBpbnRlcmZhY2Ugd2hpY2ggc3VwcG9ydHMgc29tZSBudW1iZXIgb2Ygb3B0aW9uYWwgbWV0aG9kcyBpbiBhZGRpdGlvbiB0byB0aGVcbiAqIGNvcmUgaW50ZXJmYWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuZGVkVHNDb21waWxlckhvc3QgZXh0ZW5kcyB0cy5Db21waWxlckhvc3QsIFBhcnRpYWw8UmVzb3VyY2VIb3N0PixcbiAgICBQYXJ0aWFsPFVuaWZpZWRNb2R1bGVzSG9zdD4ge31cblxuLyoqXG4gKiBPcHRpb25zIHN1cHBvcnRlZCBieSB0aGUgbGVnYWN5IFZpZXcgRW5naW5lIGNvbXBpbGVyLCB3aGljaCBhcmUgc3RpbGwgY29uc3VtZWQgYnkgdGhlIEFuZ3VsYXIgSXZ5XG4gKiBjb21waWxlciBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG4gKlxuICogVGhlc2UgYXJlIGV4cGVjdGVkIHRvIGJlIHJlbW92ZWQgYXQgc29tZSBwb2ludCBpbiB0aGUgZnV0dXJlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExlZ2FjeU5nY09wdGlvbnMge1xuICAvKiogZ2VuZXJhdGUgYWxsIHBvc3NpYmxlIGdlbmVyYXRlZCBmaWxlcyAgKi9cbiAgYWxsb3dFbXB0eUNvZGVnZW5GaWxlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdHlwZSBjaGVjayB0aGUgZW50aXJlIHRlbXBsYXRlLlxuICAgKlxuICAgKiBUaGlzIGZsYWcgY3VycmVudGx5IGNvbnRyb2xzIGEgY291cGxlIGFzcGVjdHMgb2YgdGVtcGxhdGUgdHlwZS1jaGVja2luZywgaW5jbHVkaW5nXG4gICAqIHdoZXRoZXIgZW1iZWRkZWQgdmlld3MgYXJlIGNoZWNrZWQuXG4gICAqXG4gICAqIEZvciBtYXhpbXVtIHR5cGUtY2hlY2tpbmcsIHNldCB0aGlzIHRvIGB0cnVlYCwgYW5kIHNldCBgc3RyaWN0VGVtcGxhdGVzYCB0byBgdHJ1ZWAuXG4gICAqXG4gICAqIEl0IGlzIGFuIGVycm9yIGZvciB0aGlzIGZsYWcgdG8gYmUgYGZhbHNlYCwgd2hpbGUgYHN0cmljdFRlbXBsYXRlc2AgaXMgc2V0IHRvIGB0cnVlYC5cbiAgICovXG4gIGZ1bGxUZW1wbGF0ZVR5cGVDaGVjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZ2VuZXJhdGUgYSBmbGF0IG1vZHVsZSBpbmRleCBvZiB0aGUgZ2l2ZW4gbmFtZSBhbmQgdGhlIGNvcnJlc3BvbmRpbmdcbiAgICogZmxhdCBtb2R1bGUgbWV0YWRhdGEuIFRoaXMgb3B0aW9uIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgd2hlbiBjcmVhdGluZyBmbGF0XG4gICAqIG1vZHVsZXMgc2ltaWxhciB0byBob3cgYEBhbmd1bGFyL2NvcmVgIGFuZCBgQGFuZ3VsYXIvY29tbW9uYCBhcmUgcGFja2FnZWQuXG4gICAqIFdoZW4gdGhpcyBvcHRpb24gaXMgdXNlZCB0aGUgYHBhY2thZ2UuanNvbmAgZm9yIHRoZSBsaWJyYXJ5IHNob3VsZCByZWZlciB0byB0aGVcbiAgICogZ2VuZXJhdGVkIGZsYXQgbW9kdWxlIGluZGV4IGluc3RlYWQgb2YgdGhlIGxpYnJhcnkgaW5kZXggZmlsZS4gV2hlbiB1c2luZyB0aGlzXG4gICAqIG9wdGlvbiBvbmx5IG9uZSAubWV0YWRhdGEuanNvbiBmaWxlIGlzIHByb2R1Y2VkIHRoYXQgY29udGFpbnMgYWxsIHRoZSBtZXRhZGF0YVxuICAgKiBuZWNlc3NhcnkgZm9yIHN5bWJvbHMgZXhwb3J0ZWQgZnJvbSB0aGUgbGlicmFyeSBpbmRleC5cbiAgICogSW4gdGhlIGdlbmVyYXRlZCAubmdmYWN0b3J5LnRzIGZpbGVzIGZsYXQgbW9kdWxlIGluZGV4IGlzIHVzZWQgdG8gaW1wb3J0IHN5bWJvbHNcbiAgICogaW5jbHVkaW5nIGJvdGggdGhlIHB1YmxpYyBBUEkgZnJvbSB0aGUgbGlicmFyeSBpbmRleCBhcyB3ZWxsIGFzIHNocm93ZGVkIGludGVybmFsXG4gICAqIHN5bWJvbHMuXG4gICAqIEJ5IGRlZmF1bHQgdGhlIC50cyBmaWxlIHN1cHBsaWVkIGluIHRoZSBgZmlsZXNgIGZpZWxkIGlzIGFzc3VtZWQgdG8gYmUgdGhlXG4gICAqIGxpYnJhcnkgaW5kZXguIElmIG1vcmUgdGhhbiBvbmUgaXMgc3BlY2lmaWVkLCB1c2VzIGBsaWJyYXJ5SW5kZXhgIHRvIHNlbGVjdCB0aGVcbiAgICogZmlsZSB0byB1c2UuIElmIG1vcmUgdGhhbiBvbmUgLnRzIGZpbGUgaXMgc3VwcGxpZWQgYW5kIG5vIGBsaWJyYXJ5SW5kZXhgIGlzIHN1cHBsaWVkXG4gICAqIGFuIGVycm9yIGlzIHByb2R1Y2VkLlxuICAgKiBBIGZsYXQgbW9kdWxlIGluZGV4IC5kLnRzIGFuZCAuanMgd2lsbCBiZSBjcmVhdGVkIHdpdGggdGhlIGdpdmVuIGBmbGF0TW9kdWxlT3V0RmlsZWBcbiAgICogbmFtZSBpbiB0aGUgc2FtZSBsb2NhdGlvbiBhcyB0aGUgbGlicmFyeSBpbmRleCAuZC50cyBmaWxlIGlzIGVtaXR0ZWQuXG4gICAqIEZvciBleGFtcGxlLCBpZiBhIGxpYnJhcnkgdXNlcyBgcHVibGljX2FwaS50c2AgZmlsZSBhcyB0aGUgbGlicmFyeSBpbmRleCBvZiB0aGVcbiAgICogbW9kdWxlIHRoZSBgdHNjb25maWcuanNvbmAgYGZpbGVzYCBmaWVsZCB3b3VsZCBiZSBgW1wicHVibGljX2FwaS50c1wiXWAuIFRoZVxuICAgKiBgZmxhdE1vZHVsZU91dEZpbGVgIG9wdGlvbnMgY291bGQgdGhlbiBiZSBzZXQgdG8sIGZvciBleGFtcGxlIGBcImluZGV4LmpzXCJgLCB3aGljaFxuICAgKiBwcm9kdWNlcyBgaW5kZXguZC50c2AgYW5kICBgaW5kZXgubWV0YWRhdGEuanNvbmAgZmlsZXMuIFRoZSBsaWJyYXJ5J3NcbiAgICogYHBhY2thZ2UuanNvbmAncyBgbW9kdWxlYCBmaWVsZCB3b3VsZCBiZSBgXCJpbmRleC5qc1wiYCBhbmQgdGhlIGB0eXBpbmdzYCBmaWVsZCB3b3VsZFxuICAgKiBiZSBgXCJpbmRleC5kLnRzXCJgLlxuICAgKi9cbiAgZmxhdE1vZHVsZU91dEZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFByZWZlcnJlZCBtb2R1bGUgaWQgdG8gdXNlIGZvciBpbXBvcnRpbmcgZmxhdCBtb2R1bGUuIFJlZmVyZW5jZXMgZ2VuZXJhdGVkIGJ5IGBuZ2NgXG4gICAqIHdpbGwgdXNlIHRoaXMgbW9kdWxlIG5hbWUgd2hlbiBpbXBvcnRpbmcgc3ltYm9scyBmcm9tIHRoZSBmbGF0IG1vZHVsZS4gVGhpcyBpcyBvbmx5XG4gICAqIG1lYW5pbmdmdWwgd2hlbiBgZmxhdE1vZHVsZU91dEZpbGVgIGlzIGFsc28gc3VwcGxpZWQuIEl0IGlzIG90aGVyd2lzZSBpZ25vcmVkLlxuICAgKi9cbiAgZmxhdE1vZHVsZUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbHdheXMgcmVwb3J0IGVycm9ycyBhIHBhcmFtZXRlciBpcyBzdXBwbGllZCB3aG9zZSBpbmplY3Rpb24gdHlwZSBjYW5ub3RcbiAgICogYmUgZGV0ZXJtaW5lZC4gV2hlbiB0aGlzIHZhbHVlIG9wdGlvbiBpcyBub3QgcHJvdmlkZWQgb3IgaXMgYGZhbHNlYCwgY29uc3RydWN0b3JcbiAgICogcGFyYW1ldGVycyBvZiBjbGFzc2VzIG1hcmtlZCB3aXRoIGBASW5qZWN0YWJsZWAgd2hvc2UgdHlwZSBjYW5ub3QgYmUgcmVzb2x2ZWQgd2lsbFxuICAgKiBwcm9kdWNlIGEgd2FybmluZy4gV2l0aCB0aGlzIG9wdGlvbiBgdHJ1ZWAsIHRoZXkgcHJvZHVjZSBhbiBlcnJvci4gV2hlbiB0aGlzIG9wdGlvbiBpc1xuICAgKiBub3QgcHJvdmlkZWQgaXMgdHJlYXRlZCBhcyBpZiBpdCB3ZXJlIGBmYWxzZWAuXG4gICAqL1xuICBzdHJpY3RJbmplY3Rpb25QYXJhbWV0ZXJzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZW1vdmUgYmxhbmsgdGV4dCBub2RlcyBmcm9tIGNvbXBpbGVkIHRlbXBsYXRlcy4gSXQgaXMgYGZhbHNlYCBieSBkZWZhdWx0IHN0YXJ0aW5nXG4gICAqIGZyb20gQW5ndWxhciA2LlxuICAgKi9cbiAgcHJlc2VydmVXaGl0ZXNwYWNlcz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyB3aGljaCB3ZXJlIGFkZGVkIHRvIHRoZSBBbmd1bGFyIEl2eSBjb21waWxlciB0byBzdXBwb3J0IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGhcbiAqIGV4aXN0aW5nIFZpZXcgRW5naW5lIGFwcGxpY2F0aW9ucy5cbiAqXG4gKiBUaGVzZSBhcmUgZXhwZWN0ZWQgdG8gYmUgcmVtb3ZlZCBhdCBzb21lIHBvaW50IGluIHRoZSBmdXR1cmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmdjQ29tcGF0aWJpbGl0eU9wdGlvbnMge1xuICAvKipcbiAgICogQ29udHJvbHMgd2hldGhlciBuZ3RzYyB3aWxsIGVtaXQgYC5uZ2ZhY3RvcnkuanNgIHNoaW1zIGZvciBlYWNoIGNvbXBpbGVkIGAudHNgIGZpbGUuXG4gICAqXG4gICAqIFRoZXNlIHNoaW1zIHN1cHBvcnQgbGVnYWN5IGltcG9ydHMgZnJvbSBgbmdmYWN0b3J5YCBmaWxlcywgYnkgZXhwb3J0aW5nIGEgZmFjdG9yeSBzaGltXG4gICAqIGZvciBlYWNoIGNvbXBvbmVudCBvciBOZ01vZHVsZSBpbiB0aGUgb3JpZ2luYWwgYC50c2AgZmlsZS5cbiAgICovXG4gIGdlbmVyYXRlTmdGYWN0b3J5U2hpbXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB3aGV0aGVyIG5ndHNjIHdpbGwgZW1pdCBgLm5nc3VtbWFyeS5qc2Agc2hpbXMgZm9yIGVhY2ggY29tcGlsZWQgYC50c2AgZmlsZS5cbiAgICpcbiAgICogVGhlc2Ugc2hpbXMgc3VwcG9ydCBsZWdhY3kgaW1wb3J0cyBmcm9tIGBuZ3N1bW1hcnlgIGZpbGVzLCBieSBleHBvcnRpbmcgYW4gZW1wdHkgb2JqZWN0XG4gICAqIGZvciBlYWNoIE5nTW9kdWxlIGluIHRoZSBvcmlnaW5hbCBgLnRzYCBmaWxlLiBUaGUgb25seSBwdXJwb3NlIG9mIHN1bW1hcmllcyBpcyB0byBmZWVkIHRoZW0gdG9cbiAgICogYFRlc3RCZWRgLCB3aGljaCBpcyBhIG5vLW9wIGluIEl2eS5cbiAgICovXG4gIGdlbmVyYXRlTmdTdW1tYXJ5U2hpbXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUZWxscyB0aGUgY29tcGlsZXIgdG8gZ2VuZXJhdGUgZGVmaW5pdGlvbnMgdXNpbmcgdGhlIFJlbmRlcjMgc3R5bGUgY29kZSBnZW5lcmF0aW9uLlxuICAgKiBUaGlzIG9wdGlvbiBkZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAqXG4gICAqIEFjY2VwdGFibGUgdmFsdWVzIGFyZSBhcyBmb2xsb3dzOlxuICAgKlxuICAgKiBgZmFsc2VgIC0gcnVuIG5nYyBub3JtYWxseVxuICAgKiBgdHJ1ZWAgLSBydW4gdGhlIG5ndHNjIGNvbXBpbGVyIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBuZ2MgY29tcGlsZXJcbiAgICogYG5ndHNjYCAtIGFsaWFzIGZvciBgdHJ1ZWBcbiAgICovXG4gIGVuYWJsZUl2eT86IGJvb2xlYW58J25ndHNjJztcbn1cblxuLyoqXG4gKiBPcHRpb25zIHJlbGF0ZWQgdG8gdGVtcGxhdGUgdHlwZS1jaGVja2luZyBhbmQgaXRzIHN0cmljdG5lc3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaWN0VGVtcGxhdGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgaW1wbGllcyBhbGwgdGVtcGxhdGUgc3RyaWN0bmVzcyBmbGFncyBiZWxvdyAodW5sZXNzIGluZGl2aWR1YWxseSBkaXNhYmxlZCkuXG4gICAqXG4gICAqIEhhcyBubyBlZmZlY3QgdW5sZXNzIGBmdWxsVGVtcGxhdGVUeXBlQ2hlY2tgIGlzIGFsc28gZW5hYmxlZC5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYCwgZXZlbiBpZiBcImZ1bGxUZW1wbGF0ZVR5cGVDaGVja1wiIGlzIHNldC5cbiAgICovXG4gIHN0cmljdFRlbXBsYXRlcz86IGJvb2xlYW47XG5cblxuICAvKipcbiAgICogV2hldGhlciB0byBjaGVjayB0aGUgdHlwZSBvZiBhIGJpbmRpbmcgdG8gYSBkaXJlY3RpdmUvY29tcG9uZW50IGlucHV0IGFnYWluc3QgdGhlIHR5cGUgb2YgdGhlXG4gICAqIGZpZWxkIG9uIHRoZSBkaXJlY3RpdmUvY29tcG9uZW50LlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgaWYgdGhpcyBpcyBgZmFsc2VgIHRoZW4gdGhlIGV4cHJlc3Npb24gYFtpbnB1dF09XCJleHByXCJgIHdpbGwgaGF2ZSBgZXhwcmAgdHlwZS1cbiAgICogY2hlY2tlZCwgYnV0IG5vdCB0aGUgYXNzaWdubWVudCBvZiB0aGUgcmVzdWx0aW5nIHR5cGUgdG8gdGhlIGBpbnB1dGAgcHJvcGVydHkgb2Ygd2hpY2hldmVyXG4gICAqIGRpcmVjdGl2ZSBvciBjb21wb25lbnQgaXMgcmVjZWl2aW5nIHRoZSBiaW5kaW5nLiBJZiBzZXQgdG8gYHRydWVgLCBib3RoIHNpZGVzIG9mIHRoZSBhc3NpZ25tZW50XG4gICAqIGFyZSBjaGVja2VkLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBgZmFsc2VgLCBldmVuIGlmIFwiZnVsbFRlbXBsYXRlVHlwZUNoZWNrXCIgaXMgc2V0LlxuICAgKi9cbiAgc3RyaWN0SW5wdXRUeXBlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdXNlIHN0cmljdCBudWxsIHR5cGVzIGZvciBpbnB1dCBiaW5kaW5ncyBmb3IgZGlyZWN0aXZlcy5cbiAgICpcbiAgICogSWYgdGhpcyBpcyBgdHJ1ZWAsIGFwcGxpY2F0aW9ucyB0aGF0IGFyZSBjb21waWxlZCB3aXRoIFR5cGVTY3JpcHQncyBgc3RyaWN0TnVsbENoZWNrc2AgZW5hYmxlZFxuICAgKiB3aWxsIHByb2R1Y2UgdHlwZSBlcnJvcnMgZm9yIGJpbmRpbmdzIHdoaWNoIGNhbiBldmFsdWF0ZSB0byBgdW5kZWZpbmVkYCBvciBgbnVsbGAgd2hlcmUgdGhlXG4gICAqIGlucHV0cydzIHR5cGUgZG9lcyBub3QgaW5jbHVkZSBgdW5kZWZpbmVkYCBvciBgbnVsbGAgaW4gaXRzIHR5cGUuIElmIHNldCB0byBgZmFsc2VgLCBhbGxcbiAgICogYmluZGluZyBleHByZXNzaW9ucyBhcmUgd3JhcHBlZCBpbiBhIG5vbi1udWxsIGFzc2VydGlvbiBvcGVyYXRvciB0byBlZmZlY3RpdmVseSBkaXNhYmxlIHN0cmljdFxuICAgKiBudWxsIGNoZWNrcy5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYCwgZXZlbiBpZiBcImZ1bGxUZW1wbGF0ZVR5cGVDaGVja1wiIGlzIHNldC4gTm90ZSB0aGF0IGlmIGBzdHJpY3RJbnB1dFR5cGVzYCBpc1xuICAgKiBub3Qgc2V0LCBvciBzZXQgdG8gYGZhbHNlYCwgdGhpcyBmbGFnIGhhcyBubyBlZmZlY3QuXG4gICAqL1xuICBzdHJpY3ROdWxsSW5wdXRUeXBlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gY2hlY2sgdGV4dCBhdHRyaWJ1dGVzIHRoYXQgaGFwcGVuIHRvIGJlIGNvbnN1bWVkIGJ5IGEgZGlyZWN0aXZlIG9yIGNvbXBvbmVudC5cbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIGluIGEgdGVtcGxhdGUgY29udGFpbmluZyBgPGlucHV0IG1hdElucHV0IGRpc2FibGVkPmAgdGhlIGBkaXNhYmxlZGAgYXR0cmlidXRlIGVuZHNcbiAgICogdXAgYmVpbmcgY29uc3VtZWQgYXMgYW4gaW5wdXQgd2l0aCB0eXBlIGBib29sZWFuYCBieSB0aGUgYG1hdElucHV0YCBkaXJlY3RpdmUuIEF0IHJ1bnRpbWUsIHRoZVxuICAgKiBpbnB1dCB3aWxsIGJlIHNldCB0byB0aGUgYXR0cmlidXRlJ3Mgc3RyaW5nIHZhbHVlLCB3aGljaCBpcyBhbiBlbXB0eSBzdHJpbmcgZm9yIGF0dHJpYnV0ZXNcbiAgICogd2l0aG91dCBhIHZhbHVlLCBzbyB3aXRoIHRoaXMgZmxhZyBzZXQgdG8gYHRydWVgLCBhbiBlcnJvciB3b3VsZCBiZSByZXBvcnRlZC4gSWYgc2V0IHRvXG4gICAqIGBmYWxzZWAsIHRleHQgYXR0cmlidXRlcyB3aWxsIG5ldmVyIHJlcG9ydCBhbiBlcnJvci5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYCwgZXZlbiBpZiBcImZ1bGxUZW1wbGF0ZVR5cGVDaGVja1wiIGlzIHNldC4gTm90ZSB0aGF0IGlmIGBzdHJpY3RJbnB1dFR5cGVzYCBpc1xuICAgKiBub3Qgc2V0LCBvciBzZXQgdG8gYGZhbHNlYCwgdGhpcyBmbGFnIGhhcyBubyBlZmZlY3QuXG4gICAqL1xuICBzdHJpY3RBdHRyaWJ1dGVUeXBlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdXNlIGEgc3RyaWN0IHR5cGUgZm9yIG51bGwtc2FmZSBuYXZpZ2F0aW9uIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgYGZhbHNlYCwgdGhlbiB0aGUgcmV0dXJuIHR5cGUgb2YgYGE/LmJgIG9yIGBhPygpYCB3aWxsIGJlIGBhbnlgLiBJZiBzZXQgdG8gYHRydWVgLFxuICAgKiB0aGVuIHRoZSByZXR1cm4gdHlwZSBvZiBgYT8uYmAgZm9yIGV4YW1wbGUgd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUgdHlwZSBvZiB0aGUgdGVybmFyeVxuICAgKiBleHByZXNzaW9uIGBhICE9IG51bGwgPyBhLmIgOiBhYC5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYCwgZXZlbiBpZiBcImZ1bGxUZW1wbGF0ZVR5cGVDaGVja1wiIGlzIHNldC5cbiAgICovXG4gIHN0cmljdFNhZmVOYXZpZ2F0aW9uVHlwZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluZmVyIHRoZSB0eXBlIG9mIGxvY2FsIHJlZmVyZW5jZXMuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgYHRydWVgLCB0aGUgdHlwZSBvZiBhIGAjcmVmYCB2YXJpYWJsZSBvbiBhIERPTSBub2RlIGluIHRoZSB0ZW1wbGF0ZSB3aWxsIGJlXG4gICAqIGRldGVybWluZWQgYnkgdGhlIHR5cGUgb2YgYGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRgIGZvciB0aGUgZ2l2ZW4gRE9NIG5vZGUuIElmIHNldCB0byBgZmFsc2VgLFxuICAgKiB0aGUgdHlwZSBvZiBgcmVmYCBmb3IgRE9NIG5vZGVzIHdpbGwgYmUgYGFueWAuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAsIGV2ZW4gaWYgXCJmdWxsVGVtcGxhdGVUeXBlQ2hlY2tcIiBpcyBzZXQuXG4gICAqL1xuICBzdHJpY3REb21Mb2NhbFJlZlR5cGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbmZlciB0aGUgdHlwZSBvZiB0aGUgYCRldmVudGAgdmFyaWFibGUgaW4gZXZlbnQgYmluZGluZ3MgZm9yIGRpcmVjdGl2ZSBvdXRwdXRzIG9yXG4gICAqIGFuaW1hdGlvbiBldmVudHMuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgYHRydWVgLCB0aGUgdHlwZSBvZiBgJGV2ZW50YCB3aWxsIGJlIGluZmVycmVkIGJhc2VkIG9uIHRoZSBnZW5lcmljIHR5cGUgb2ZcbiAgICogYEV2ZW50RW1pdHRlcmAvYFN1YmplY3RgIG9mIHRoZSBvdXRwdXQuIElmIHNldCB0byBgZmFsc2VgLCB0aGUgYCRldmVudGAgdmFyaWFibGUgd2lsbCBiZSBvZlxuICAgKiB0eXBlIGBhbnlgLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBgZmFsc2VgLCBldmVuIGlmIFwiZnVsbFRlbXBsYXRlVHlwZUNoZWNrXCIgaXMgc2V0LlxuICAgKi9cbiAgc3RyaWN0T3V0cHV0RXZlbnRUeXBlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5mZXIgdGhlIHR5cGUgb2YgdGhlIGAkZXZlbnRgIHZhcmlhYmxlIGluIGV2ZW50IGJpbmRpbmdzIHRvIERPTSBldmVudHMuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgYHRydWVgLCB0aGUgdHlwZSBvZiBgJGV2ZW50YCB3aWxsIGJlIGluZmVycmVkIGJhc2VkIG9uIFR5cGVTY3JpcHQnc1xuICAgKiBgSFRNTEVsZW1lbnRFdmVudE1hcGAsIHdpdGggYSBmYWxsYmFjayB0byB0aGUgbmF0aXZlIGBFdmVudGAgdHlwZS4gSWYgc2V0IHRvIGBmYWxzZWAsIHRoZVxuICAgKiBgJGV2ZW50YCB2YXJpYWJsZSB3aWxsIGJlIG9mIHR5cGUgYGFueWAuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAsIGV2ZW4gaWYgXCJmdWxsVGVtcGxhdGVUeXBlQ2hlY2tcIiBpcyBzZXQuXG4gICAqL1xuICBzdHJpY3REb21FdmVudFR5cGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbmNsdWRlIHRoZSBnZW5lcmljIHR5cGUgb2YgY29tcG9uZW50cyB3aGVuIHR5cGUtY2hlY2tpbmcgdGhlIHRlbXBsYXRlLlxuICAgKlxuICAgKiBJZiBubyBjb21wb25lbnQgaGFzIGdlbmVyaWMgdHlwZSBwYXJhbWV0ZXJzLCB0aGlzIHNldHRpbmcgaGFzIG5vIGVmZmVjdC5cbiAgICpcbiAgICogSWYgYSBjb21wb25lbnQgaGFzIGdlbmVyaWMgdHlwZSBwYXJhbWV0ZXJzIGFuZCB0aGlzIHNldHRpbmcgaXMgYHRydWVgLCB0aG9zZSBnZW5lcmljIHBhcmFtZXRlcnNcbiAgICogd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgY29udGV4dCB0eXBlIGZvciB0aGUgdGVtcGxhdGUuIElmIGBmYWxzZWAsIGFueSBnZW5lcmljIHBhcmFtZXRlcnMgd2lsbFxuICAgKiBiZSBzZXQgdG8gYGFueWAgaW4gdGhlIHRlbXBsYXRlIGNvbnRleHQgdHlwZS5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYCwgZXZlbiBpZiBcImZ1bGxUZW1wbGF0ZVR5cGVDaGVja1wiIGlzIHNldC5cbiAgICovXG4gIHN0cmljdENvbnRleHRHZW5lcmljcz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyB3aGljaCBjb250cm9sIGJlaGF2aW9yIHVzZWZ1bCBmb3IgXCJtb25vcmVwb1wiIGJ1aWxkIGNhc2VzIHVzaW5nIEJhemVsIChzdWNoIGFzIHRoZVxuICogaW50ZXJuYWwgR29vZ2xlIG1vbm9yZXBvLCBnMykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmF6ZWxBbmRHM09wdGlvbnMge1xuICAvKipcbiAgICogRW5hYmxlcyB0aGUgZ2VuZXJhdGlvbiBvZiBhbGlhcyByZS1leHBvcnRzIG9mIGRpcmVjdGl2ZXMvcGlwZXMgdGhhdCBhcmUgdmlzaWJsZSBmcm9tIGFuXG4gICAqIE5nTW9kdWxlIGZyb20gdGhhdCBOZ01vZHVsZSdzIGZpbGUuXG4gICAqXG4gICAqIFRoaXMgb3B0aW9uIHNob3VsZCBiZSBkaXNhYmxlZCBmb3IgYXBwbGljYXRpb24gYnVpbGRzIG9yIGZvciBBbmd1bGFyIFBhY2thZ2UgRm9ybWF0IGxpYnJhcmllc1xuICAgKiAod2hlcmUgTmdNb2R1bGVzIGFsb25nIHdpdGggdGhlaXIgZGlyZWN0aXZlcy9waXBlcyBhcmUgZXhwb3J0ZWQgdmlhIGEgc2luZ2xlIGVudHJ5cG9pbnQpLlxuICAgKlxuICAgKiBGb3Igb3RoZXIgbGlicmFyeSBjb21waWxhdGlvbnMgd2hpY2ggYXJlIGludGVuZGVkIHRvIGJlIHBhdGgtbWFwcGVkIGludG8gYW4gYXBwbGljYXRpb24gYnVpbGRcbiAgICogKG9yIGFub3RoZXIgbGlicmFyeSksIGVuYWJsaW5nIHRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIHJlc3VsdGluZyBkZWVwIGltcG9ydHMgdG8gd29ya1xuICAgKiBjb3JyZWN0bHkuXG4gICAqXG4gICAqIEEgY29uc3VtZXIgb2Ygc3VjaCBhIHBhdGgtbWFwcGVkIGxpYnJhcnkgd2lsbCB3cml0ZSBhbiBpbXBvcnQgbGlrZTpcbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBpbXBvcnQge0xpYk1vZHVsZX0gZnJvbSAnbGliL2RlZXAvcGF0aC90by9tb2R1bGUnO1xuICAgKiBgYGBcbiAgICpcbiAgICogVGhlIGNvbXBpbGVyIHdpbGwgYXR0ZW1wdCB0byBnZW5lcmF0ZSBpbXBvcnRzIG9mIGRpcmVjdGl2ZXMvcGlwZXMgZnJvbSB0aGF0IHNhbWUgbW9kdWxlXG4gICAqIHNwZWNpZmllciAodGhlIGNvbXBpbGVyIGRvZXMgbm90IHJld3JpdGUgdGhlIHVzZXIncyBnaXZlbiBpbXBvcnQgcGF0aCwgdW5saWtlIFZpZXcgRW5naW5lKS5cbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBpbXBvcnQge0xpYkRpciwgTGliQ21wLCBMaWJQaXBlfSBmcm9tICdsaWIvZGVlcC9wYXRoL3RvL21vZHVsZSc7XG4gICAqIGBgYFxuICAgKlxuICAgKiBJdCB3b3VsZCBiZSBidXJkZW5zb21lIGZvciB1c2VycyB0byBoYXZlIHRvIHJlLWV4cG9ydCBhbGwgZGlyZWN0aXZlcy9waXBlcyBhbG9uZ3NpZGUgZWFjaFxuICAgKiBOZ01vZHVsZSB0byBzdXBwb3J0IHRoaXMgaW1wb3J0IG1vZGVsLiBFbmFibGluZyB0aGlzIG9wdGlvbiB0ZWxscyB0aGUgY29tcGlsZXIgdG8gZ2VuZXJhdGVcbiAgICogcHJpdmF0ZSByZS1leHBvcnRzIGFsb25nc2lkZSB0aGUgTmdNb2R1bGUgb2YgYWxsIHRoZSBkaXJlY3RpdmVzL3BpcGVzIGl0IG1ha2VzIGF2YWlsYWJsZSwgdG9cbiAgICogc3VwcG9ydCB0aGVzZSBmdXR1cmUgaW1wb3J0cy5cbiAgICovXG4gIGdlbmVyYXRlRGVlcFJlZXhwb3J0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluc2VydCBKU0RvYyB0eXBlIGFubm90YXRpb25zIG5lZWRlZCBieSBDbG9zdXJlIENvbXBpbGVyXG4gICAqL1xuICBhbm5vdGF0ZUZvckNsb3N1cmVDb21waWxlcj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyByZWxhdGVkIHRvIGkxOG4gY29tcGlsYXRpb24gc3VwcG9ydC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJMThuT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBMb2NhbGUgb2YgdGhlIGltcG9ydGVkIHRyYW5zbGF0aW9uc1xuICAgKi9cbiAgaTE4bkluTG9jYWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZW5kZXIgYCRsb2NhbGl6ZWAgbWVzc2FnZXMgd2l0aCBsZWdhY3kgZm9ybWF0IGlkcy5cbiAgICpcbiAgICogVGhpcyBpcyBvbmx5IGFjdGl2ZSBpZiB3ZSBhcmUgYnVpbGRpbmcgd2l0aCBgZW5hYmxlSXZ5OiB0cnVlYC5cbiAgICogVGhlIGRlZmF1bHQgdmFsdWUgZm9yIG5vdyBpcyBgdHJ1ZWAuXG4gICAqXG4gICAqIFVzZSB0aGlzIG9wdGlvbiB3aGVuIHVzZSBhcmUgdXNpbmcgdGhlIGAkbG9jYWxpemVgIGJhc2VkIGxvY2FsaXphdGlvbiBtZXNzYWdlcyBidXRcbiAgICogaGF2ZSBub3QgbWlncmF0ZWQgdGhlIHRyYW5zbGF0aW9uIGZpbGVzIHRvIHVzZSB0aGUgbmV3IGAkbG9jYWxpemVgIG1lc3NhZ2UgaWQgZm9ybWF0LlxuICAgKi9cbiAgZW5hYmxlSTE4bkxlZ2FjeU1lc3NhZ2VJZEZvcm1hdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdHJhbnNsYXRpb24gdmFyaWFibGUgbmFtZSBzaG91bGQgY29udGFpbiBleHRlcm5hbCBtZXNzYWdlIGlkXG4gICAqICh1c2VkIGJ5IENsb3N1cmUgQ29tcGlsZXIncyBvdXRwdXQgb2YgYGdvb2cuZ2V0TXNnYCBmb3IgdHJhbnNpdGlvbiBwZXJpb2QpXG4gICAqL1xuICBpMThuVXNlRXh0ZXJuYWxJZHM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE5vbi1wdWJsaWMgb3B0aW9ucyB3aGljaCBhcmUgdXNlZnVsIGR1cmluZyB0ZXN0aW5nIG9mIHRoZSBjb21waWxlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZXN0T25seU9wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0byB1c2UgdGhlIENvbXBpbGVySG9zdCdzIGZpbGVOYW1lVG9Nb2R1bGVOYW1lIHV0aWxpdHkgKGlmIGF2YWlsYWJsZSkgdG8gZ2VuZXJhdGVcbiAgICogaW1wb3J0IG1vZHVsZSBzcGVjaWZpZXJzLiBUaGlzIGlzIGZhbHNlIGJ5IGRlZmF1bHQsIGFuZCBleGlzdHMgdG8gc3VwcG9ydCBydW5uaW5nIG5ndHNjXG4gICAqIHdpdGhpbiBHb29nbGUuIFRoaXMgb3B0aW9uIGlzIGludGVybmFsIGFuZCBpcyB1c2VkIGJ5IHRoZSBuZ19tb2R1bGUuYnpsIHJ1bGUgdG8gc3dpdGNoXG4gICAqIGJlaGF2aW9yIGJldHdlZW4gQmF6ZWwgYW5kIEJsYXplLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF91c2VIb3N0Rm9ySW1wb3J0R2VuZXJhdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFR1cm4gb24gdGVtcGxhdGUgdHlwZS1jaGVja2luZyBpbiB0aGUgSXZ5IGNvbXBpbGVyLlxuICAgKlxuICAgKiBUaGlzIGlzIGFuIGludGVybmFsIGZsYWcgYmVpbmcgdXNlZCB0byByb2xsIG91dCB0ZW1wbGF0ZSB0eXBlLWNoZWNraW5nIGluIG5ndHNjLiBUdXJuaW5nIGl0IG9uXG4gICAqIGJ5IGRlZmF1bHQgYmVmb3JlIGl0J3MgcmVhZHkgbWlnaHQgYnJlYWsgb3RoZXIgdXNlcnMgYXR0ZW1wdGluZyB0byB0ZXN0IHRoZSBuZXcgY29tcGlsZXInc1xuICAgKiBiZWhhdmlvci5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBpdnlUZW1wbGF0ZVR5cGVDaGVjaz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQSBtZXJnZWQgaW50ZXJmYWNlIG9mIGFsbCBvZiB0aGUgdmFyaW91cyBBbmd1bGFyIGNvbXBpbGVyIG9wdGlvbnMsIGFzIHdlbGwgYXMgdGhlIHN0YW5kYXJkXG4gKiBgdHMuQ29tcGlsZXJPcHRpb25zYC5cbiAqXG4gKiBBbHNvIGluY2x1ZGVzIGEgZmV3IG1pc2NlbGxhbmVvdXMgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZ0NvbXBpbGVyT3B0aW9ucyBleHRlbmRzIHRzLkNvbXBpbGVyT3B0aW9ucywgTGVnYWN5TmdjT3B0aW9ucywgQmF6ZWxBbmRHM09wdGlvbnMsXG4gICAgTmdjQ29tcGF0aWJpbGl0eU9wdGlvbnMsIFN0cmljdFRlbXBsYXRlT3B0aW9ucywgVGVzdE9ubHlPcHRpb25zLCBJMThuT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjb21waWxlciBzaG91bGQgYXZvaWQgZ2VuZXJhdGluZyBjb2RlIGZvciBjbGFzc2VzIHRoYXQgaGF2ZW4ndCBiZWVuIGV4cG9ydGVkLlxuICAgKiBUaGlzIGlzIG9ubHkgYWN0aXZlIHdoZW4gYnVpbGRpbmcgd2l0aCBgZW5hYmxlSXZ5OiB0cnVlYC4gRGVmYXVsdHMgdG8gYHRydWVgLlxuICAgKi9cbiAgY29tcGlsZU5vbkV4cG9ydGVkQ2xhc3Nlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVtb3ZlIGJsYW5rIHRleHQgbm9kZXMgZnJvbSBjb21waWxlZCB0ZW1wbGF0ZXMuIEl0IGlzIGBmYWxzZWAgYnkgZGVmYXVsdCBzdGFydGluZ1xuICAgKiBmcm9tIEFuZ3VsYXIgNi5cbiAgICovXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEaXNhYmxlIFR5cGVTY3JpcHQgVmVyc2lvbiBDaGVjay5cbiAgICovXG4gIGRpc2FibGVUeXBlU2NyaXB0VmVyc2lvbkNoZWNrPzogYm9vbGVhbjtcblxuICAvKiogQW4gb3B0aW9uIHRvIGVuYWJsZSBuZ3RzYydzIGludGVybmFsIHBlcmZvcm1hbmNlIHRyYWNpbmcuXG4gICAqXG4gICAqIFRoaXMgc2hvdWxkIGJlIGEgcGF0aCB0byBhIEpTT04gZmlsZSB3aGVyZSB0cmFjZSBpbmZvcm1hdGlvbiB3aWxsIGJlIHdyaXR0ZW4uIEFuIG9wdGlvbmFsICd0czonXG4gICAqIHByZWZpeCB3aWxsIGNhdXNlIHRoZSB0cmFjZSB0byBiZSB3cml0dGVuIHZpYSB0aGUgVFMgaG9zdCBpbnN0ZWFkIG9mIGRpcmVjdGx5IHRvIHRoZSBmaWxlc3lzdGVtXG4gICAqIChub3QgYWxsIGhvc3RzIHN1cHBvcnQgdGhpcyBtb2RlIG9mIG9wZXJhdGlvbikuXG4gICAqXG4gICAqIFRoaXMgaXMgY3VycmVudGx5IG5vdCBleHBvc2VkIHRvIHVzZXJzIGFzIHRoZSB0cmFjZSBmb3JtYXQgaXMgc3RpbGwgdW5zdGFibGUuXG4gICAqL1xuICB0cmFjZVBlcmZvcm1hbmNlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExhenlSb3V0ZSB7XG4gIHJvdXRlOiBzdHJpbmc7XG4gIG1vZHVsZToge25hbWU6IHN0cmluZywgZmlsZVBhdGg6IHN0cmluZ307XG4gIHJlZmVyZW5jZWRNb2R1bGU6IHtuYW1lOiBzdHJpbmcsIGZpbGVQYXRoOiBzdHJpbmd9O1xufVxuIl19
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google Inc. All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ /// <amd-module name="@angular/compiler-cli/src/ngtsc/core" />
9
+ export { NgCompiler } from './src/compiler';
10
+ export { NgCompilerHost } from './src/host';
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google Inc. All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ (function (factory) {
9
+ if (typeof module === "object" && typeof module.exports === "object") {
10
+ var v = factory(require, exports);
11
+ if (v !== undefined) module.exports = v;
12
+ }
13
+ else if (typeof define === "function" && define.amd) {
14
+ define("@angular/compiler-cli/src/ngtsc/core", ["require", "exports", "@angular/compiler-cli/src/ngtsc/core/src/compiler", "@angular/compiler-cli/src/ngtsc/core/src/host"], factory);
15
+ }
16
+ })(function (require, exports) {
17
+ "use strict";
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ var compiler_1 = require("@angular/compiler-cli/src/ngtsc/core/src/compiler");
20
+ exports.NgCompiler = compiler_1.NgCompiler;
21
+ var host_1 = require("@angular/compiler-cli/src/ngtsc/core/src/host");
22
+ exports.NgCompilerHost = host_1.NgCompilerHost;
23
+ });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL2NvcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7SUFFSCw4RUFBMEM7SUFBbEMsZ0NBQUEsVUFBVSxDQUFBO0lBQ2xCLHNFQUEwQztJQUFsQyxnQ0FBQSxjQUFjLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmV4cG9ydCB7TmdDb21waWxlcn0gZnJvbSAnLi9zcmMvY29tcGlsZXInO1xuZXhwb3J0IHtOZ0NvbXBpbGVySG9zdH0gZnJvbSAnLi9zcmMvaG9zdCc7XG4iXX0=
@@ -0,0 +1,120 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google Inc. All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ /// <amd-module name="@angular/compiler-cli/src/ngtsc/core/src/compiler" />
9
+ import * as ts from 'typescript';
10
+ import { IncrementalDriver } from '../../incremental';
11
+ import { IndexedComponent } from '../../indexer';
12
+ import { PerfRecorder } from '../../perf';
13
+ import { LazyRoute, NgCompilerOptions } from '../api';
14
+ import { NgCompilerHost } from './host';
15
+ /**
16
+ * The heart of the Angular Ivy compiler.
17
+ *
18
+ * The `NgCompiler` provides an API for performing Angular compilation within a custom TypeScript
19
+ * compiler. Each instance of `NgCompiler` supports a single compilation, which might be
20
+ * incremental.
21
+ *
22
+ * `NgCompiler` is lazy, and does not perform any of the work of the compilation until one of its
23
+ * output methods (e.g. `getDiagnostics`) is called.
24
+ *
25
+ * See the README.md for more information.
26
+ */
27
+ export declare class NgCompiler {
28
+ private host;
29
+ private options;
30
+ private tsProgram;
31
+ private perfRecorder;
32
+ /**
33
+ * Lazily evaluated state of the compilation.
34
+ *
35
+ * This is created on demand by calling `ensureAnalyzed`.
36
+ */
37
+ private compilation;
38
+ /**
39
+ * Any diagnostics related to the construction of the compilation.
40
+ *
41
+ * These are diagnostics which arose during setup of the host and/or program.
42
+ */
43
+ private constructionDiagnostics;
44
+ /**
45
+ * Semantic diagnostics related to the program itself.
46
+ *
47
+ * This is set by (and memoizes) `getDiagnostics`.
48
+ */
49
+ private diagnostics;
50
+ private closureCompilerEnabled;
51
+ private typeCheckFile;
52
+ private nextProgram;
53
+ private entryPoint;
54
+ private moduleResolver;
55
+ private resourceManager;
56
+ private cycleAnalyzer;
57
+ readonly incrementalDriver: IncrementalDriver;
58
+ constructor(host: NgCompilerHost, options: NgCompilerOptions, tsProgram: ts.Program, oldProgram?: ts.Program | null, perfRecorder?: PerfRecorder);
59
+ /**
60
+ * Get all Angular-related diagnostics for this compilation.
61
+ *
62
+ * If a `ts.SourceFile` is passed, only diagnostics related to that file are returned.
63
+ */
64
+ getDiagnostics(file?: ts.SourceFile): ts.Diagnostic[];
65
+ /**
66
+ * Get all setup-related diagnostics for this compilation.
67
+ */
68
+ getOptionDiagnostics(): ts.Diagnostic[];
69
+ /**
70
+ * Get the `ts.Program` to use as a starting point when spawning a subsequent incremental
71
+ * compilation.
72
+ *
73
+ * The `NgCompiler` spawns an internal incremental TypeScript compilation (inheriting the
74
+ * consumer's `ts.Program` into a new one for the purposes of template type-checking). After this
75
+ * operation, the consumer's `ts.Program` is no longer usable for starting a new incremental
76
+ * compilation. `getNextProgram` retrieves the `ts.Program` which can be used instead.
77
+ */
78
+ getNextProgram(): ts.Program;
79
+ /**
80
+ * Perform Angular's analysis step (as a precursor to `getDiagnostics` or `prepareEmit`)
81
+ * asynchronously.
82
+ *
83
+ * Normally, this operation happens lazily whenever `getDiagnostics` or `prepareEmit` are called.
84
+ * However, certain consumers may wish to allow for an asynchronous phase of analysis, where
85
+ * resources such as `styleUrls` are resolved asynchonously. In these cases `analyzeAsync` must be
86
+ * called first, and its `Promise` awaited prior to calling any other APIs of `NgCompiler`.
87
+ */
88
+ analyzeAsync(): Promise<void>;
89
+ /**
90
+ * List lazy routes detected during analysis.
91
+ *
92
+ * This can be called for one specific route, or to retrieve all top-level routes.
93
+ */
94
+ listLazyRoutes(entryRoute?: string): LazyRoute[];
95
+ /**
96
+ * Fetch transformers and other information which is necessary for a consumer to `emit` the
97
+ * program with Angular-added definitions.
98
+ */
99
+ prepareEmit(): {
100
+ transformers: ts.CustomTransformers;
101
+ ignoreFiles: Set<ts.SourceFile>;
102
+ };
103
+ /**
104
+ * Run the indexing process and return a `Map` of all indexed components.
105
+ *
106
+ * See the `indexing` package for more details.
107
+ */
108
+ getIndexedComponents(): Map<ts.Declaration, IndexedComponent>;
109
+ private ensureAnalyzed;
110
+ private analyzeSync;
111
+ private resolveCompilation;
112
+ private getTemplateDiagnostics;
113
+ /**
114
+ * Reifies the inter-dependencies of NgModules and the components within their compilation scopes
115
+ * into the `IncrementalDriver`'s dependency graph.
116
+ */
117
+ private recordNgModuleScopeDependencies;
118
+ private scanForMwp;
119
+ private makeCompilation;
120
+ }