@angular-devkit/build-angular 16.1.0-rc.0 → 16.1.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 (250) hide show
  1. package/package.json +21 -21
  2. package/plugins/karma.js +2 -2
  3. package/src/builders/browser/index.d.ts +1 -1
  4. package/src/builders/browser/index.js +5 -5
  5. package/src/builders/browser-esbuild/index.js +27 -376
  6. package/src/builders/browser-esbuild/options.js +2 -2
  7. package/src/builders/dev-server/load-proxy-config.d.ts +1 -6
  8. package/src/builders/dev-server/load-proxy-config.js +52 -13
  9. package/src/builders/dev-server/vite-server.js +3 -6
  10. package/src/builders/dev-server/webpack-server.d.ts +1 -1
  11. package/src/builders/dev-server/webpack-server.js +6 -6
  12. package/src/builders/extract-i18n/index.js +3 -3
  13. package/src/builders/karma/index.js +2 -2
  14. package/src/builders/server/index.js +4 -4
  15. package/src/tools/babel/plugins/adjust-static-class-members.js +354 -0
  16. package/src/tools/babel/plugins/adjust-typescript-enums.js +124 -0
  17. package/src/tools/babel/plugins/elide-angular-metadata.js +68 -0
  18. package/src/tools/babel/plugins/pure-toplevel-functions.js +91 -0
  19. package/src/tools/babel/presets/application.js +197 -0
  20. package/src/{babel → tools/babel}/webpack-loader.d.ts +1 -1
  21. package/src/tools/babel/webpack-loader.js +189 -0
  22. package/src/tools/esbuild/angular/angular-compilation.js +51 -0
  23. package/src/tools/esbuild/angular/angular-host.js +60 -0
  24. package/src/tools/esbuild/angular/aot-compilation.js +208 -0
  25. package/src/tools/esbuild/angular/compiler-plugin.js +314 -0
  26. package/src/tools/esbuild/angular/diagnostics.js +75 -0
  27. package/src/tools/esbuild/angular/jit-compilation.js +106 -0
  28. package/src/tools/esbuild/angular/jit-plugin-callbacks.js +113 -0
  29. package/src/tools/esbuild/angular/jit-resource-transformer.js +185 -0
  30. package/src/tools/esbuild/angular/uri.js +75 -0
  31. package/src/tools/esbuild/application-code-bundle.d.ts +11 -0
  32. package/src/tools/esbuild/application-code-bundle.js +111 -0
  33. package/src/{builders/browser-esbuild/esbuild.d.ts → tools/esbuild/bundler-context.d.ts} +1 -12
  34. package/src/tools/esbuild/bundler-context.js +194 -0
  35. package/src/tools/esbuild/bundler-execution-result.d.ts +44 -0
  36. package/src/tools/esbuild/bundler-execution-result.js +53 -0
  37. package/src/tools/esbuild/commonjs-checker.js +141 -0
  38. package/src/tools/esbuild/external-packages-plugin.d.ts +17 -0
  39. package/src/tools/esbuild/external-packages-plugin.js +49 -0
  40. package/src/{builders/browser-esbuild → tools/esbuild}/global-scripts.d.ts +1 -1
  41. package/src/tools/esbuild/global-scripts.js +139 -0
  42. package/src/{builders/browser-esbuild → tools/esbuild}/global-styles.d.ts +1 -1
  43. package/src/tools/esbuild/global-styles.js +67 -0
  44. package/src/tools/esbuild/index-html-generator.d.ts +12 -0
  45. package/src/tools/esbuild/index-html-generator.js +70 -0
  46. package/src/tools/esbuild/javascript-transformer-worker.js +76 -0
  47. package/src/tools/esbuild/javascript-transformer.js +108 -0
  48. package/src/tools/esbuild/license-extractor.js +159 -0
  49. package/src/tools/esbuild/load-result-cache.js +69 -0
  50. package/src/tools/esbuild/profiling.js +79 -0
  51. package/src/tools/esbuild/sourcemap-ignorelist-plugin.js +74 -0
  52. package/src/tools/esbuild/stylesheets/bundle-options.js +159 -0
  53. package/src/tools/esbuild/stylesheets/css-language.js +16 -0
  54. package/src/tools/esbuild/stylesheets/css-resource-plugin.js +88 -0
  55. package/src/tools/esbuild/stylesheets/less-language.js +127 -0
  56. package/src/tools/esbuild/stylesheets/sass-language.js +169 -0
  57. package/src/tools/esbuild/stylesheets/stylesheet-plugin-factory.js +218 -0
  58. package/src/tools/esbuild/utils.d.ts +30 -0
  59. package/src/tools/esbuild/utils.js +192 -0
  60. package/src/tools/esbuild/virtual-module-plugin.js +43 -0
  61. package/src/tools/esbuild/watcher.js +105 -0
  62. package/src/tools/sass/rebasing-importer.js +445 -0
  63. package/src/tools/sass/sass-service-legacy.js +176 -0
  64. package/src/tools/sass/sass-service.js +214 -0
  65. package/src/tools/sass/worker-legacy.js +44 -0
  66. package/src/tools/sass/worker.js +158 -0
  67. package/src/{webpack → tools/webpack}/configs/common.d.ts +1 -1
  68. package/src/tools/webpack/configs/common.js +421 -0
  69. package/src/{webpack → tools/webpack}/configs/dev-server.d.ts +1 -1
  70. package/src/tools/webpack/configs/dev-server.js +304 -0
  71. package/src/{webpack → tools/webpack}/configs/index.js +1 -1
  72. package/src/{webpack → tools/webpack}/configs/styles.d.ts +1 -1
  73. package/src/tools/webpack/configs/styles.js +396 -0
  74. package/src/{webpack → tools/webpack}/plugins/any-component-style-budget-checker.d.ts +1 -1
  75. package/src/tools/webpack/plugins/any-component-style-budget-checker.js +92 -0
  76. package/src/tools/webpack/plugins/builder-watch-plugin.js +99 -0
  77. package/src/tools/webpack/plugins/common-js-usage-warn-plugin.js +121 -0
  78. package/src/tools/webpack/plugins/css-optimizer-plugin.js +123 -0
  79. package/src/tools/webpack/plugins/dedupe-module-resolve-plugin.js +75 -0
  80. package/src/tools/webpack/plugins/devtools-ignore-plugin.js +57 -0
  81. package/src/tools/webpack/plugins/esbuild-executor.js +121 -0
  82. package/src/tools/webpack/plugins/hmr/hmr-accept.js +185 -0
  83. package/src/tools/webpack/plugins/hmr/hmr-loader.js +25 -0
  84. package/src/{webpack → tools/webpack}/plugins/index-html-webpack-plugin.d.ts +1 -1
  85. package/src/tools/webpack/plugins/index-html-webpack-plugin.js +85 -0
  86. package/src/{webpack → tools/webpack}/plugins/index.js +1 -1
  87. package/src/tools/webpack/plugins/javascript-optimizer-plugin.js +166 -0
  88. package/src/tools/webpack/plugins/javascript-optimizer-worker.js +140 -0
  89. package/src/tools/webpack/plugins/json-stats-plugin.js +61 -0
  90. package/src/tools/webpack/plugins/karma/karma.js +270 -0
  91. package/src/tools/webpack/plugins/named-chunks-plugin.js +59 -0
  92. package/src/tools/webpack/plugins/occurrences-plugin.js +80 -0
  93. package/src/tools/webpack/plugins/postcss-cli-resources.js +176 -0
  94. package/src/tools/webpack/plugins/progress-plugin.js +39 -0
  95. package/src/tools/webpack/plugins/remove-hash-plugin.js +31 -0
  96. package/src/tools/webpack/plugins/scripts-webpack-plugin.js +180 -0
  97. package/src/tools/webpack/plugins/service-worker-plugin.js +46 -0
  98. package/src/tools/webpack/plugins/styles-webpack-plugin.js +73 -0
  99. package/src/tools/webpack/plugins/suppress-entry-chunks-webpack-plugin.js +52 -0
  100. package/src/tools/webpack/plugins/transfer-size-plugin.js +50 -0
  101. package/src/{webpack → tools/webpack}/plugins/typescript.d.ts +1 -1
  102. package/src/tools/webpack/plugins/typescript.js +51 -0
  103. package/src/tools/webpack/plugins/watch-files-logs-plugin.js +28 -0
  104. package/src/tools/webpack/utils/async-chunks.js +46 -0
  105. package/src/{webpack → tools/webpack}/utils/helpers.d.ts +2 -2
  106. package/src/tools/webpack/utils/helpers.js +293 -0
  107. package/src/{webpack → tools/webpack}/utils/stats.d.ts +2 -2
  108. package/src/tools/webpack/utils/stats.js +443 -0
  109. package/src/utils/bundle-calculator.js +2 -2
  110. package/src/utils/index-file/augment-index-html.d.ts +1 -1
  111. package/src/utils/index-file/augment-index-html.js +1 -1
  112. package/src/utils/normalize-asset-patterns.d.ts +1 -1
  113. package/src/utils/normalize-asset-patterns.js +1 -1
  114. package/src/utils/normalize-file-replacements.d.ts +1 -1
  115. package/src/utils/normalize-file-replacements.js +1 -1
  116. package/src/utils/package-chunk-sort.js +2 -2
  117. package/src/utils/webpack-browser-config.js +2 -2
  118. package/src/babel/plugins/adjust-static-class-members.js +0 -354
  119. package/src/babel/plugins/adjust-typescript-enums.js +0 -124
  120. package/src/babel/plugins/elide-angular-metadata.js +0 -68
  121. package/src/babel/plugins/pure-toplevel-functions.js +0 -91
  122. package/src/babel/presets/application.js +0 -197
  123. package/src/babel/webpack-loader.js +0 -189
  124. package/src/builders/browser-esbuild/angular/angular-compilation.js +0 -51
  125. package/src/builders/browser-esbuild/angular/angular-host.js +0 -60
  126. package/src/builders/browser-esbuild/angular/aot-compilation.js +0 -208
  127. package/src/builders/browser-esbuild/angular/compiler-plugin.js +0 -314
  128. package/src/builders/browser-esbuild/angular/diagnostics.js +0 -75
  129. package/src/builders/browser-esbuild/angular/jit-compilation.js +0 -106
  130. package/src/builders/browser-esbuild/angular/jit-plugin-callbacks.js +0 -113
  131. package/src/builders/browser-esbuild/angular/jit-resource-transformer.js +0 -185
  132. package/src/builders/browser-esbuild/angular/uri.js +0 -75
  133. package/src/builders/browser-esbuild/commonjs-checker.js +0 -141
  134. package/src/builders/browser-esbuild/esbuild.js +0 -206
  135. package/src/builders/browser-esbuild/global-scripts.js +0 -139
  136. package/src/builders/browser-esbuild/global-styles.js +0 -67
  137. package/src/builders/browser-esbuild/javascript-transformer-worker.js +0 -76
  138. package/src/builders/browser-esbuild/javascript-transformer.js +0 -108
  139. package/src/builders/browser-esbuild/license-extractor.js +0 -159
  140. package/src/builders/browser-esbuild/load-result-cache.js +0 -69
  141. package/src/builders/browser-esbuild/profiling.js +0 -79
  142. package/src/builders/browser-esbuild/sourcemap-ignorelist-plugin.js +0 -74
  143. package/src/builders/browser-esbuild/stylesheets/bundle-options.js +0 -159
  144. package/src/builders/browser-esbuild/stylesheets/css-language.js +0 -16
  145. package/src/builders/browser-esbuild/stylesheets/css-resource-plugin.js +0 -88
  146. package/src/builders/browser-esbuild/stylesheets/less-language.js +0 -127
  147. package/src/builders/browser-esbuild/stylesheets/sass-language.js +0 -169
  148. package/src/builders/browser-esbuild/stylesheets/stylesheet-plugin-factory.js +0 -218
  149. package/src/builders/browser-esbuild/virtual-module-plugin.js +0 -43
  150. package/src/builders/browser-esbuild/watcher.js +0 -105
  151. package/src/sass/rebasing-importer.js +0 -445
  152. package/src/sass/sass-service-legacy.js +0 -176
  153. package/src/sass/sass-service.js +0 -214
  154. package/src/sass/worker-legacy.js +0 -44
  155. package/src/sass/worker.js +0 -158
  156. package/src/webpack/configs/common.js +0 -421
  157. package/src/webpack/configs/dev-server.js +0 -304
  158. package/src/webpack/configs/styles.js +0 -396
  159. package/src/webpack/plugins/any-component-style-budget-checker.js +0 -92
  160. package/src/webpack/plugins/builder-watch-plugin.js +0 -99
  161. package/src/webpack/plugins/common-js-usage-warn-plugin.js +0 -121
  162. package/src/webpack/plugins/css-optimizer-plugin.js +0 -123
  163. package/src/webpack/plugins/dedupe-module-resolve-plugin.js +0 -75
  164. package/src/webpack/plugins/devtools-ignore-plugin.js +0 -57
  165. package/src/webpack/plugins/esbuild-executor.js +0 -121
  166. package/src/webpack/plugins/hmr/hmr-accept.js +0 -185
  167. package/src/webpack/plugins/hmr/hmr-loader.js +0 -25
  168. package/src/webpack/plugins/index-html-webpack-plugin.js +0 -85
  169. package/src/webpack/plugins/javascript-optimizer-plugin.js +0 -166
  170. package/src/webpack/plugins/javascript-optimizer-worker.js +0 -140
  171. package/src/webpack/plugins/json-stats-plugin.js +0 -61
  172. package/src/webpack/plugins/karma/karma.js +0 -270
  173. package/src/webpack/plugins/named-chunks-plugin.js +0 -59
  174. package/src/webpack/plugins/occurrences-plugin.js +0 -80
  175. package/src/webpack/plugins/postcss-cli-resources.js +0 -176
  176. package/src/webpack/plugins/progress-plugin.js +0 -39
  177. package/src/webpack/plugins/remove-hash-plugin.js +0 -31
  178. package/src/webpack/plugins/scripts-webpack-plugin.js +0 -180
  179. package/src/webpack/plugins/service-worker-plugin.js +0 -46
  180. package/src/webpack/plugins/styles-webpack-plugin.js +0 -73
  181. package/src/webpack/plugins/suppress-entry-chunks-webpack-plugin.js +0 -52
  182. package/src/webpack/plugins/transfer-size-plugin.js +0 -50
  183. package/src/webpack/plugins/typescript.js +0 -51
  184. package/src/webpack/plugins/watch-files-logs-plugin.js +0 -28
  185. package/src/webpack/utils/async-chunks.js +0 -46
  186. package/src/webpack/utils/helpers.js +0 -293
  187. package/src/webpack/utils/stats.js +0 -443
  188. /package/src/{babel → tools/babel}/babel-loader.d.ts +0 -0
  189. /package/src/{babel → tools/babel}/plugins/adjust-static-class-members.d.ts +0 -0
  190. /package/src/{babel → tools/babel}/plugins/adjust-typescript-enums.d.ts +0 -0
  191. /package/src/{babel → tools/babel}/plugins/elide-angular-metadata.d.ts +0 -0
  192. /package/src/{babel → tools/babel}/plugins/pure-toplevel-functions.d.ts +0 -0
  193. /package/src/{babel → tools/babel}/presets/application.d.ts +0 -0
  194. /package/src/{builders/browser-esbuild → tools/esbuild}/angular/angular-compilation.d.ts +0 -0
  195. /package/src/{builders/browser-esbuild → tools/esbuild}/angular/angular-host.d.ts +0 -0
  196. /package/src/{builders/browser-esbuild → tools/esbuild}/angular/aot-compilation.d.ts +0 -0
  197. /package/src/{builders/browser-esbuild → tools/esbuild}/angular/compiler-plugin.d.ts +0 -0
  198. /package/src/{builders/browser-esbuild → tools/esbuild}/angular/diagnostics.d.ts +0 -0
  199. /package/src/{builders/browser-esbuild → tools/esbuild}/angular/jit-compilation.d.ts +0 -0
  200. /package/src/{builders/browser-esbuild → tools/esbuild}/angular/jit-plugin-callbacks.d.ts +0 -0
  201. /package/src/{builders/browser-esbuild → tools/esbuild}/angular/jit-resource-transformer.d.ts +0 -0
  202. /package/src/{builders/browser-esbuild → tools/esbuild}/angular/uri.d.ts +0 -0
  203. /package/src/{builders/browser-esbuild → tools/esbuild}/commonjs-checker.d.ts +0 -0
  204. /package/src/{builders/browser-esbuild → tools/esbuild}/javascript-transformer-worker.d.ts +0 -0
  205. /package/src/{builders/browser-esbuild → tools/esbuild}/javascript-transformer.d.ts +0 -0
  206. /package/src/{builders/browser-esbuild → tools/esbuild}/license-extractor.d.ts +0 -0
  207. /package/src/{builders/browser-esbuild → tools/esbuild}/load-result-cache.d.ts +0 -0
  208. /package/src/{builders/browser-esbuild → tools/esbuild}/profiling.d.ts +0 -0
  209. /package/src/{builders/browser-esbuild → tools/esbuild}/sourcemap-ignorelist-plugin.d.ts +0 -0
  210. /package/src/{builders/browser-esbuild → tools/esbuild}/stylesheets/bundle-options.d.ts +0 -0
  211. /package/src/{builders/browser-esbuild → tools/esbuild}/stylesheets/css-language.d.ts +0 -0
  212. /package/src/{builders/browser-esbuild → tools/esbuild}/stylesheets/css-resource-plugin.d.ts +0 -0
  213. /package/src/{builders/browser-esbuild → tools/esbuild}/stylesheets/less-language.d.ts +0 -0
  214. /package/src/{builders/browser-esbuild → tools/esbuild}/stylesheets/sass-language.d.ts +0 -0
  215. /package/src/{builders/browser-esbuild → tools/esbuild}/stylesheets/stylesheet-plugin-factory.d.ts +0 -0
  216. /package/src/{builders/browser-esbuild → tools/esbuild}/virtual-module-plugin.d.ts +0 -0
  217. /package/src/{builders/browser-esbuild → tools/esbuild}/watcher.d.ts +0 -0
  218. /package/src/{sass → tools/sass}/rebasing-importer.d.ts +0 -0
  219. /package/src/{sass → tools/sass}/sass-service-legacy.d.ts +0 -0
  220. /package/src/{sass → tools/sass}/sass-service.d.ts +0 -0
  221. /package/src/{sass → tools/sass}/worker-legacy.d.ts +0 -0
  222. /package/src/{sass → tools/sass}/worker.d.ts +0 -0
  223. /package/src/{webpack → tools/webpack}/configs/index.d.ts +0 -0
  224. /package/src/{webpack → tools/webpack}/plugins/builder-watch-plugin.d.ts +0 -0
  225. /package/src/{webpack → tools/webpack}/plugins/common-js-usage-warn-plugin.d.ts +0 -0
  226. /package/src/{webpack → tools/webpack}/plugins/css-optimizer-plugin.d.ts +0 -0
  227. /package/src/{webpack → tools/webpack}/plugins/dedupe-module-resolve-plugin.d.ts +0 -0
  228. /package/src/{webpack → tools/webpack}/plugins/devtools-ignore-plugin.d.ts +0 -0
  229. /package/src/{webpack → tools/webpack}/plugins/esbuild-executor.d.ts +0 -0
  230. /package/src/{webpack → tools/webpack}/plugins/hmr/hmr-accept.d.ts +0 -0
  231. /package/src/{webpack → tools/webpack}/plugins/hmr/hmr-loader.d.ts +0 -0
  232. /package/src/{webpack → tools/webpack}/plugins/index.d.ts +0 -0
  233. /package/src/{webpack → tools/webpack}/plugins/javascript-optimizer-plugin.d.ts +0 -0
  234. /package/src/{webpack → tools/webpack}/plugins/javascript-optimizer-worker.d.ts +0 -0
  235. /package/src/{webpack → tools/webpack}/plugins/json-stats-plugin.d.ts +0 -0
  236. /package/src/{webpack → tools/webpack}/plugins/karma/karma-context.html +0 -0
  237. /package/src/{webpack → tools/webpack}/plugins/karma/karma-debug.html +0 -0
  238. /package/src/{webpack → tools/webpack}/plugins/karma/karma.d.ts +0 -0
  239. /package/src/{webpack → tools/webpack}/plugins/named-chunks-plugin.d.ts +0 -0
  240. /package/src/{webpack → tools/webpack}/plugins/occurrences-plugin.d.ts +0 -0
  241. /package/src/{webpack → tools/webpack}/plugins/postcss-cli-resources.d.ts +0 -0
  242. /package/src/{webpack → tools/webpack}/plugins/progress-plugin.d.ts +0 -0
  243. /package/src/{webpack → tools/webpack}/plugins/remove-hash-plugin.d.ts +0 -0
  244. /package/src/{webpack → tools/webpack}/plugins/scripts-webpack-plugin.d.ts +0 -0
  245. /package/src/{webpack → tools/webpack}/plugins/service-worker-plugin.d.ts +0 -0
  246. /package/src/{webpack → tools/webpack}/plugins/styles-webpack-plugin.d.ts +0 -0
  247. /package/src/{webpack → tools/webpack}/plugins/suppress-entry-chunks-webpack-plugin.d.ts +0 -0
  248. /package/src/{webpack → tools/webpack}/plugins/transfer-size-plugin.d.ts +0 -0
  249. /package/src/{webpack → tools/webpack}/plugins/watch-files-logs-plugin.d.ts +0 -0
  250. /package/src/{webpack → tools/webpack}/utils/async-chunks.d.ts +0 -0
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || function (mod) {
26
+ if (mod && mod.__esModule) return mod;
27
+ var result = {};
28
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
29
+ __setModuleDefault(result, mod);
30
+ return result;
31
+ };
32
+ var __importDefault = (this && this.__importDefault) || function (mod) {
33
+ return (mod && mod.__esModule) ? mod : { "default": mod };
34
+ };
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.createGlobalScriptsBundleOptions = void 0;
37
+ const magic_string_1 = __importStar(require("magic-string"));
38
+ const node_assert_1 = __importDefault(require("node:assert"));
39
+ const promises_1 = require("node:fs/promises");
40
+ const node_path_1 = __importDefault(require("node:path"));
41
+ const error_1 = require("../../utils/error");
42
+ const load_result_cache_1 = require("./load-result-cache");
43
+ const sourcemap_ignorelist_plugin_1 = require("./sourcemap-ignorelist-plugin");
44
+ const virtual_module_plugin_1 = require("./virtual-module-plugin");
45
+ /**
46
+ * Create an esbuild 'build' options object for all global scripts defined in the user provied
47
+ * build options.
48
+ * @param options The builder's user-provider normalized options.
49
+ * @returns An esbuild BuildOptions object.
50
+ */
51
+ function createGlobalScriptsBundleOptions(options, initial, loadCache) {
52
+ const { globalScripts, optimizationOptions, outputNames, preserveSymlinks, sourcemapOptions, workspaceRoot, } = options;
53
+ const namespace = 'angular:script/global';
54
+ const entryPoints = {};
55
+ let found = false;
56
+ for (const script of globalScripts) {
57
+ if (script.initial === initial) {
58
+ found = true;
59
+ entryPoints[script.name] = `${namespace}:${script.name}`;
60
+ }
61
+ }
62
+ // Skip if there are no entry points for the style loading type
63
+ if (found === false) {
64
+ return;
65
+ }
66
+ return {
67
+ absWorkingDir: workspaceRoot,
68
+ bundle: false,
69
+ splitting: false,
70
+ entryPoints,
71
+ entryNames: initial ? outputNames.bundles : '[name]',
72
+ assetNames: outputNames.media,
73
+ mainFields: ['script', 'browser', 'main'],
74
+ conditions: ['script'],
75
+ resolveExtensions: ['.mjs', '.js'],
76
+ logLevel: options.verbose ? 'debug' : 'silent',
77
+ metafile: true,
78
+ minify: optimizationOptions.scripts,
79
+ outdir: workspaceRoot,
80
+ sourcemap: sourcemapOptions.scripts && (sourcemapOptions.hidden ? 'external' : true),
81
+ write: false,
82
+ platform: 'neutral',
83
+ preserveSymlinks,
84
+ plugins: [
85
+ (0, sourcemap_ignorelist_plugin_1.createSourcemapIngorelistPlugin)(),
86
+ (0, virtual_module_plugin_1.createVirtualModulePlugin)({
87
+ namespace,
88
+ external: true,
89
+ // Add the `js` extension here so that esbuild generates an output file with the extension
90
+ transformPath: (path) => path.slice(namespace.length + 1) + '.js',
91
+ loadContent: (args, build) => (0, load_result_cache_1.createCachedLoad)(loadCache, async (args) => {
92
+ const files = globalScripts.find(({ name }) => name === args.path.slice(0, -3))?.files;
93
+ (0, node_assert_1.default)(files, `Invalid operation: global scripts name not found [${args.path}]`);
94
+ // Global scripts are concatenated using magic-string instead of bundled via esbuild.
95
+ const bundleContent = new magic_string_1.Bundle();
96
+ const watchFiles = [];
97
+ for (const filename of files) {
98
+ let fileContent;
99
+ try {
100
+ // Attempt to read as a relative path from the workspace root
101
+ fileContent = await (0, promises_1.readFile)(node_path_1.default.join(workspaceRoot, filename), 'utf-8');
102
+ watchFiles.push(filename);
103
+ }
104
+ catch (e) {
105
+ (0, error_1.assertIsError)(e);
106
+ if (e.code !== 'ENOENT') {
107
+ throw e;
108
+ }
109
+ // If not found attempt to resolve as a module specifier
110
+ const resolveResult = await build.resolve(filename, {
111
+ kind: 'entry-point',
112
+ resolveDir: workspaceRoot,
113
+ });
114
+ if (resolveResult.errors.length) {
115
+ // Remove resolution failure notes about marking as external since it doesn't apply
116
+ // to global scripts.
117
+ resolveResult.errors.forEach((error) => (error.notes = []));
118
+ return {
119
+ errors: resolveResult.errors,
120
+ warnings: resolveResult.warnings,
121
+ };
122
+ }
123
+ watchFiles.push(node_path_1.default.relative(resolveResult.path, workspaceRoot));
124
+ fileContent = await (0, promises_1.readFile)(resolveResult.path, 'utf-8');
125
+ }
126
+ bundleContent.addSource(new magic_string_1.default(fileContent, { filename }));
127
+ }
128
+ return {
129
+ contents: bundleContent.toString(),
130
+ loader: 'js',
131
+ watchFiles,
132
+ };
133
+ }).call(build, args),
134
+ }),
135
+ ],
136
+ };
137
+ }
138
+ exports.createGlobalScriptsBundleOptions = createGlobalScriptsBundleOptions;
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLXNjcmlwdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy90b29scy9lc2J1aWxkL2dsb2JhbC1zY3JpcHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0gsNkRBQW1EO0FBQ25ELDhEQUFpQztBQUNqQywrQ0FBNEM7QUFDNUMsMERBQTZCO0FBRTdCLDZDQUFrRDtBQUNsRCwyREFBd0U7QUFDeEUsK0VBQWdGO0FBQ2hGLG1FQUFvRTtBQUVwRTs7Ozs7R0FLRztBQUNILFNBQWdCLGdDQUFnQyxDQUM5QyxPQUFpQyxFQUNqQyxPQUFnQixFQUNoQixTQUEyQjtJQUUzQixNQUFNLEVBQ0osYUFBYSxFQUNiLG1CQUFtQixFQUNuQixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixhQUFhLEdBQ2QsR0FBRyxPQUFPLENBQUM7SUFFWixNQUFNLFNBQVMsR0FBRyx1QkFBdUIsQ0FBQztJQUMxQyxNQUFNLFdBQVcsR0FBMkIsRUFBRSxDQUFDO0lBQy9DLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNsQixLQUFLLE1BQU0sTUFBTSxJQUFJLGFBQWEsRUFBRTtRQUNsQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssT0FBTyxFQUFFO1lBQzlCLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDYixXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsU0FBUyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUMxRDtLQUNGO0lBRUQsK0RBQStEO0lBQy9ELElBQUksS0FBSyxLQUFLLEtBQUssRUFBRTtRQUNuQixPQUFPO0tBQ1I7SUFFRCxPQUFPO1FBQ0wsYUFBYSxFQUFFLGFBQWE7UUFDNUIsTUFBTSxFQUFFLEtBQUs7UUFDYixTQUFTLEVBQUUsS0FBSztRQUNoQixXQUFXO1FBQ1gsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUTtRQUNwRCxVQUFVLEVBQUUsV0FBVyxDQUFDLEtBQUs7UUFDN0IsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUM7UUFDekMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDO1FBQ3RCLGlCQUFpQixFQUFFLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQztRQUNsQyxRQUFRLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRO1FBQzlDLFFBQVEsRUFBRSxJQUFJO1FBQ2QsTUFBTSxFQUFFLG1CQUFtQixDQUFDLE9BQU87UUFDbkMsTUFBTSxFQUFFLGFBQWE7UUFDckIsU0FBUyxFQUFFLGdCQUFnQixDQUFDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDcEYsS0FBSyxFQUFFLEtBQUs7UUFDWixRQUFRLEVBQUUsU0FBUztRQUNuQixnQkFBZ0I7UUFDaEIsT0FBTyxFQUFFO1lBQ1AsSUFBQSw2REFBK0IsR0FBRTtZQUNqQyxJQUFBLGlEQUF5QixFQUFDO2dCQUN4QixTQUFTO2dCQUNULFFBQVEsRUFBRSxJQUFJO2dCQUNkLDBGQUEwRjtnQkFDMUYsYUFBYSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSztnQkFDakUsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQzNCLElBQUEsb0NBQWdCLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTtvQkFDekMsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztvQkFDdkYsSUFBQSxxQkFBTSxFQUFDLEtBQUssRUFBRSxxREFBcUQsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7b0JBRWpGLHFGQUFxRjtvQkFDckYsTUFBTSxhQUFhLEdBQUcsSUFBSSxxQkFBTSxFQUFFLENBQUM7b0JBQ25DLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztvQkFDdEIsS0FBSyxNQUFNLFFBQVEsSUFBSSxLQUFLLEVBQUU7d0JBQzVCLElBQUksV0FBVyxDQUFDO3dCQUNoQixJQUFJOzRCQUNGLDZEQUE2RDs0QkFDN0QsV0FBVyxHQUFHLE1BQU0sSUFBQSxtQkFBUSxFQUFDLG1CQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQzs0QkFDMUUsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzt5QkFDM0I7d0JBQUMsT0FBTyxDQUFDLEVBQUU7NEJBQ1YsSUFBQSxxQkFBYSxFQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUNqQixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO2dDQUN2QixNQUFNLENBQUMsQ0FBQzs2QkFDVDs0QkFFRCx3REFBd0Q7NEJBQ3hELE1BQU0sYUFBYSxHQUFHLE1BQU0sS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7Z0NBQ2xELElBQUksRUFBRSxhQUFhO2dDQUNuQixVQUFVLEVBQUUsYUFBYTs2QkFDMUIsQ0FBQyxDQUFDOzRCQUVILElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7Z0NBQy9CLG1GQUFtRjtnQ0FDbkYscUJBQXFCO2dDQUNyQixhQUFhLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0NBRTVELE9BQU87b0NBQ0wsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNO29DQUM1QixRQUFRLEVBQUUsYUFBYSxDQUFDLFFBQVE7aUNBQ2pDLENBQUM7NkJBQ0g7NEJBRUQsVUFBVSxDQUFDLElBQUksQ0FBQyxtQkFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7NEJBQ2xFLFdBQVcsR0FBRyxNQUFNLElBQUEsbUJBQVEsRUFBQyxhQUFhLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO3lCQUMzRDt3QkFFRCxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksc0JBQVcsQ0FBQyxXQUFXLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7cUJBQ3JFO29CQUVELE9BQU87d0JBQ0wsUUFBUSxFQUFFLGFBQWEsQ0FBQyxRQUFRLEVBQUU7d0JBQ2xDLE1BQU0sRUFBRSxJQUFJO3dCQUNaLFVBQVU7cUJBQ1gsQ0FBQztnQkFDSixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQzthQUN2QixDQUFDO1NBQ0g7S0FDRixDQUFDO0FBQ0osQ0FBQztBQTNHRCw0RUEyR0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBCdWlsZE9wdGlvbnMgfSBmcm9tICdlc2J1aWxkJztcbmltcG9ydCBNYWdpY1N0cmluZywgeyBCdW5kbGUgfSBmcm9tICdtYWdpYy1zdHJpbmcnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdub2RlOmFzc2VydCc7XG5pbXBvcnQgeyByZWFkRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB0eXBlIHsgTm9ybWFsaXplZEJyb3dzZXJPcHRpb25zIH0gZnJvbSAnLi4vLi4vYnVpbGRlcnMvYnJvd3Nlci1lc2J1aWxkL29wdGlvbnMnO1xuaW1wb3J0IHsgYXNzZXJ0SXNFcnJvciB9IGZyb20gJy4uLy4uL3V0aWxzL2Vycm9yJztcbmltcG9ydCB7IExvYWRSZXN1bHRDYWNoZSwgY3JlYXRlQ2FjaGVkTG9hZCB9IGZyb20gJy4vbG9hZC1yZXN1bHQtY2FjaGUnO1xuaW1wb3J0IHsgY3JlYXRlU291cmNlbWFwSW5nb3JlbGlzdFBsdWdpbiB9IGZyb20gJy4vc291cmNlbWFwLWlnbm9yZWxpc3QtcGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZVZpcnR1YWxNb2R1bGVQbHVnaW4gfSBmcm9tICcuL3ZpcnR1YWwtbW9kdWxlLXBsdWdpbic7XG5cbi8qKlxuICogQ3JlYXRlIGFuIGVzYnVpbGQgJ2J1aWxkJyBvcHRpb25zIG9iamVjdCBmb3IgYWxsIGdsb2JhbCBzY3JpcHRzIGRlZmluZWQgaW4gdGhlIHVzZXIgcHJvdmllZFxuICogYnVpbGQgb3B0aW9ucy5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBidWlsZGVyJ3MgdXNlci1wcm92aWRlciBub3JtYWxpemVkIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBBbiBlc2J1aWxkIEJ1aWxkT3B0aW9ucyBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHbG9iYWxTY3JpcHRzQnVuZGxlT3B0aW9ucyhcbiAgb3B0aW9uczogTm9ybWFsaXplZEJyb3dzZXJPcHRpb25zLFxuICBpbml0aWFsOiBib29sZWFuLFxuICBsb2FkQ2FjaGU/OiBMb2FkUmVzdWx0Q2FjaGUsXG4pOiBCdWlsZE9wdGlvbnMgfCB1bmRlZmluZWQge1xuICBjb25zdCB7XG4gICAgZ2xvYmFsU2NyaXB0cyxcbiAgICBvcHRpbWl6YXRpb25PcHRpb25zLFxuICAgIG91dHB1dE5hbWVzLFxuICAgIHByZXNlcnZlU3ltbGlua3MsXG4gICAgc291cmNlbWFwT3B0aW9ucyxcbiAgICB3b3Jrc3BhY2VSb290LFxuICB9ID0gb3B0aW9ucztcblxuICBjb25zdCBuYW1lc3BhY2UgPSAnYW5ndWxhcjpzY3JpcHQvZ2xvYmFsJztcbiAgY29uc3QgZW50cnlQb2ludHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgbGV0IGZvdW5kID0gZmFsc2U7XG4gIGZvciAoY29uc3Qgc2NyaXB0IG9mIGdsb2JhbFNjcmlwdHMpIHtcbiAgICBpZiAoc2NyaXB0LmluaXRpYWwgPT09IGluaXRpYWwpIHtcbiAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgIGVudHJ5UG9pbnRzW3NjcmlwdC5uYW1lXSA9IGAke25hbWVzcGFjZX06JHtzY3JpcHQubmFtZX1gO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNraXAgaWYgdGhlcmUgYXJlIG5vIGVudHJ5IHBvaW50cyBmb3IgdGhlIHN0eWxlIGxvYWRpbmcgdHlwZVxuICBpZiAoZm91bmQgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhYnNXb3JraW5nRGlyOiB3b3Jrc3BhY2VSb290LFxuICAgIGJ1bmRsZTogZmFsc2UsXG4gICAgc3BsaXR0aW5nOiBmYWxzZSxcbiAgICBlbnRyeVBvaW50cyxcbiAgICBlbnRyeU5hbWVzOiBpbml0aWFsID8gb3V0cHV0TmFtZXMuYnVuZGxlcyA6ICdbbmFtZV0nLFxuICAgIGFzc2V0TmFtZXM6IG91dHB1dE5hbWVzLm1lZGlhLFxuICAgIG1haW5GaWVsZHM6IFsnc2NyaXB0JywgJ2Jyb3dzZXInLCAnbWFpbiddLFxuICAgIGNvbmRpdGlvbnM6IFsnc2NyaXB0J10sXG4gICAgcmVzb2x2ZUV4dGVuc2lvbnM6IFsnLm1qcycsICcuanMnXSxcbiAgICBsb2dMZXZlbDogb3B0aW9ucy52ZXJib3NlID8gJ2RlYnVnJyA6ICdzaWxlbnQnLFxuICAgIG1ldGFmaWxlOiB0cnVlLFxuICAgIG1pbmlmeTogb3B0aW1pemF0aW9uT3B0aW9ucy5zY3JpcHRzLFxuICAgIG91dGRpcjogd29ya3NwYWNlUm9vdCxcbiAgICBzb3VyY2VtYXA6IHNvdXJjZW1hcE9wdGlvbnMuc2NyaXB0cyAmJiAoc291cmNlbWFwT3B0aW9ucy5oaWRkZW4gPyAnZXh0ZXJuYWwnIDogdHJ1ZSksXG4gICAgd3JpdGU6IGZhbHNlLFxuICAgIHBsYXRmb3JtOiAnbmV1dHJhbCcsXG4gICAgcHJlc2VydmVTeW1saW5rcyxcbiAgICBwbHVnaW5zOiBbXG4gICAgICBjcmVhdGVTb3VyY2VtYXBJbmdvcmVsaXN0UGx1Z2luKCksXG4gICAgICBjcmVhdGVWaXJ0dWFsTW9kdWxlUGx1Z2luKHtcbiAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICBleHRlcm5hbDogdHJ1ZSxcbiAgICAgICAgLy8gQWRkIHRoZSBganNgIGV4dGVuc2lvbiBoZXJlIHNvIHRoYXQgZXNidWlsZCBnZW5lcmF0ZXMgYW4gb3V0cHV0IGZpbGUgd2l0aCB0aGUgZXh0ZW5zaW9uXG4gICAgICAgIHRyYW5zZm9ybVBhdGg6IChwYXRoKSA9PiBwYXRoLnNsaWNlKG5hbWVzcGFjZS5sZW5ndGggKyAxKSArICcuanMnLFxuICAgICAgICBsb2FkQ29udGVudDogKGFyZ3MsIGJ1aWxkKSA9PlxuICAgICAgICAgIGNyZWF0ZUNhY2hlZExvYWQobG9hZENhY2hlLCBhc3luYyAoYXJncykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsZXMgPSBnbG9iYWxTY3JpcHRzLmZpbmQoKHsgbmFtZSB9KSA9PiBuYW1lID09PSBhcmdzLnBhdGguc2xpY2UoMCwgLTMpKT8uZmlsZXM7XG4gICAgICAgICAgICBhc3NlcnQoZmlsZXMsIGBJbnZhbGlkIG9wZXJhdGlvbjogZ2xvYmFsIHNjcmlwdHMgbmFtZSBub3QgZm91bmQgWyR7YXJncy5wYXRofV1gKTtcblxuICAgICAgICAgICAgLy8gR2xvYmFsIHNjcmlwdHMgYXJlIGNvbmNhdGVuYXRlZCB1c2luZyBtYWdpYy1zdHJpbmcgaW5zdGVhZCBvZiBidW5kbGVkIHZpYSBlc2J1aWxkLlxuICAgICAgICAgICAgY29uc3QgYnVuZGxlQ29udGVudCA9IG5ldyBCdW5kbGUoKTtcbiAgICAgICAgICAgIGNvbnN0IHdhdGNoRmlsZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZmlsZXMpIHtcbiAgICAgICAgICAgICAgbGV0IGZpbGVDb250ZW50O1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIC8vIEF0dGVtcHQgdG8gcmVhZCBhcyBhIHJlbGF0aXZlIHBhdGggZnJvbSB0aGUgd29ya3NwYWNlIHJvb3RcbiAgICAgICAgICAgICAgICBmaWxlQ29udGVudCA9IGF3YWl0IHJlYWRGaWxlKHBhdGguam9pbih3b3Jrc3BhY2VSb290LCBmaWxlbmFtZSksICd1dGYtOCcpO1xuICAgICAgICAgICAgICAgIHdhdGNoRmlsZXMucHVzaChmaWxlbmFtZSk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBhc3NlcnRJc0Vycm9yKGUpO1xuICAgICAgICAgICAgICAgIGlmIChlLmNvZGUgIT09ICdFTk9FTlQnKSB7XG4gICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIElmIG5vdCBmb3VuZCBhdHRlbXB0IHRvIHJlc29sdmUgYXMgYSBtb2R1bGUgc3BlY2lmaWVyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzb2x2ZVJlc3VsdCA9IGF3YWl0IGJ1aWxkLnJlc29sdmUoZmlsZW5hbWUsIHtcbiAgICAgICAgICAgICAgICAgIGtpbmQ6ICdlbnRyeS1wb2ludCcsXG4gICAgICAgICAgICAgICAgICByZXNvbHZlRGlyOiB3b3Jrc3BhY2VSb290LFxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlc29sdmVSZXN1bHQuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHJlc29sdXRpb24gZmFpbHVyZSBub3RlcyBhYm91dCBtYXJraW5nIGFzIGV4dGVybmFsIHNpbmNlIGl0IGRvZXNuJ3QgYXBwbHlcbiAgICAgICAgICAgICAgICAgIC8vIHRvIGdsb2JhbCBzY3JpcHRzLlxuICAgICAgICAgICAgICAgICAgcmVzb2x2ZVJlc3VsdC5lcnJvcnMuZm9yRWFjaCgoZXJyb3IpID0+IChlcnJvci5ub3RlcyA9IFtdKSk7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yczogcmVzb2x2ZVJlc3VsdC5lcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzOiByZXNvbHZlUmVzdWx0Lndhcm5pbmdzLFxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB3YXRjaEZpbGVzLnB1c2gocGF0aC5yZWxhdGl2ZShyZXNvbHZlUmVzdWx0LnBhdGgsIHdvcmtzcGFjZVJvb3QpKTtcbiAgICAgICAgICAgICAgICBmaWxlQ29udGVudCA9IGF3YWl0IHJlYWRGaWxlKHJlc29sdmVSZXN1bHQucGF0aCwgJ3V0Zi04Jyk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBidW5kbGVDb250ZW50LmFkZFNvdXJjZShuZXcgTWFnaWNTdHJpbmcoZmlsZUNvbnRlbnQsIHsgZmlsZW5hbWUgfSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBjb250ZW50czogYnVuZGxlQ29udGVudC50b1N0cmluZygpLFxuICAgICAgICAgICAgICBsb2FkZXI6ICdqcycsXG4gICAgICAgICAgICAgIHdhdGNoRmlsZXMsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pLmNhbGwoYnVpbGQsIGFyZ3MpLFxuICAgICAgfSksXG4gICAgXSxcbiAgfTtcbn1cbiJdfQ==
@@ -6,6 +6,6 @@
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
8
  import type { BuildOptions } from 'esbuild';
9
+ import { NormalizedBrowserOptions } from '../../builders/browser-esbuild/options';
9
10
  import { LoadResultCache } from './load-result-cache';
10
- import { NormalizedBrowserOptions } from './options';
11
11
  export declare function createGlobalStylesBundleOptions(options: NormalizedBrowserOptions, target: string[], browsers: string[], initial: boolean, cache?: LoadResultCache): BuildOptions | undefined;
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ var __importDefault = (this && this.__importDefault) || function (mod) {
10
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.createGlobalStylesBundleOptions = void 0;
14
+ const node_assert_1 = __importDefault(require("node:assert"));
15
+ const bundle_options_1 = require("./stylesheets/bundle-options");
16
+ const virtual_module_plugin_1 = require("./virtual-module-plugin");
17
+ function createGlobalStylesBundleOptions(options, target, browsers, initial, cache) {
18
+ const { workspaceRoot, optimizationOptions, sourcemapOptions, outputNames, globalStyles, preserveSymlinks, externalDependencies, stylePreprocessorOptions, tailwindConfiguration, } = options;
19
+ const namespace = 'angular:styles/global';
20
+ const entryPoints = {};
21
+ let found = false;
22
+ for (const style of globalStyles) {
23
+ if (style.initial === initial) {
24
+ found = true;
25
+ entryPoints[style.name] = `${namespace};${style.name}`;
26
+ }
27
+ }
28
+ // Skip if there are no entry points for the style loading type
29
+ if (found === false) {
30
+ return;
31
+ }
32
+ const buildOptions = (0, bundle_options_1.createStylesheetBundleOptions)({
33
+ workspaceRoot,
34
+ optimization: !!optimizationOptions.styles.minify,
35
+ sourcemap: !!sourcemapOptions.styles,
36
+ preserveSymlinks,
37
+ target,
38
+ externalDependencies,
39
+ outputNames: initial
40
+ ? outputNames
41
+ : {
42
+ ...outputNames,
43
+ bundles: '[name]',
44
+ },
45
+ includePaths: stylePreprocessorOptions?.includePaths,
46
+ browsers,
47
+ tailwindConfiguration,
48
+ }, cache);
49
+ buildOptions.legalComments = options.extractLicenses ? 'none' : 'eof';
50
+ buildOptions.entryPoints = entryPoints;
51
+ buildOptions.plugins.unshift((0, virtual_module_plugin_1.createVirtualModulePlugin)({
52
+ namespace,
53
+ transformPath: (path) => path.split(';', 2)[1],
54
+ loadContent: (args) => {
55
+ const files = globalStyles.find(({ name }) => name === args.path)?.files;
56
+ (0, node_assert_1.default)(files, `global style name should always be found [${args.path}]`);
57
+ return {
58
+ contents: files.map((file) => `@import '${file.replace(/\\/g, '/')}';`).join('\n'),
59
+ loader: 'css',
60
+ resolveDir: workspaceRoot,
61
+ };
62
+ },
63
+ }));
64
+ return buildOptions;
65
+ }
66
+ exports.createGlobalStylesBundleOptions = createGlobalStylesBundleOptions;
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLXN0eWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL3Rvb2xzL2VzYnVpbGQvZ2xvYmFsLXN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7Ozs7QUFHSCw4REFBaUM7QUFHakMsaUVBQTZFO0FBQzdFLG1FQUFvRTtBQUVwRSxTQUFnQiwrQkFBK0IsQ0FDN0MsT0FBaUMsRUFDakMsTUFBZ0IsRUFDaEIsUUFBa0IsRUFDbEIsT0FBZ0IsRUFDaEIsS0FBdUI7SUFFdkIsTUFBTSxFQUNKLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWCxZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLG9CQUFvQixFQUNwQix3QkFBd0IsRUFDeEIscUJBQXFCLEdBQ3RCLEdBQUcsT0FBTyxDQUFDO0lBRVosTUFBTSxTQUFTLEdBQUcsdUJBQXVCLENBQUM7SUFDMUMsTUFBTSxXQUFXLEdBQTJCLEVBQUUsQ0FBQztJQUMvQyxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDbEIsS0FBSyxNQUFNLEtBQUssSUFBSSxZQUFZLEVBQUU7UUFDaEMsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLE9BQU8sRUFBRTtZQUM3QixLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2IsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLFNBQVMsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDeEQ7S0FDRjtJQUVELCtEQUErRDtJQUMvRCxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUU7UUFDbkIsT0FBTztLQUNSO0lBRUQsTUFBTSxZQUFZLEdBQUcsSUFBQSw4Q0FBNkIsRUFDaEQ7UUFDRSxhQUFhO1FBQ2IsWUFBWSxFQUFFLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsTUFBTTtRQUNqRCxTQUFTLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLE1BQU07UUFDcEMsZ0JBQWdCO1FBQ2hCLE1BQU07UUFDTixvQkFBb0I7UUFDcEIsV0FBVyxFQUFFLE9BQU87WUFDbEIsQ0FBQyxDQUFDLFdBQVc7WUFDYixDQUFDLENBQUM7Z0JBQ0UsR0FBRyxXQUFXO2dCQUNkLE9BQU8sRUFBRSxRQUFRO2FBQ2xCO1FBQ0wsWUFBWSxFQUFFLHdCQUF3QixFQUFFLFlBQVk7UUFDcEQsUUFBUTtRQUNSLHFCQUFxQjtLQUN0QixFQUNELEtBQUssQ0FDTixDQUFDO0lBQ0YsWUFBWSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN0RSxZQUFZLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUV2QyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FDMUIsSUFBQSxpREFBeUIsRUFBQztRQUN4QixTQUFTO1FBQ1QsYUFBYSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUMsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDcEIsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDO1lBQ3pFLElBQUEscUJBQU0sRUFBQyxLQUFLLEVBQUUsNkNBQTZDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBRXpFLE9BQU87Z0JBQ0wsUUFBUSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ2xGLE1BQU0sRUFBRSxLQUFLO2dCQUNiLFVBQVUsRUFBRSxhQUFhO2FBQzFCLENBQUM7UUFDSixDQUFDO0tBQ0YsQ0FBQyxDQUNILENBQUM7SUFFRixPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDO0FBM0VELDBFQTJFQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEJ1aWxkT3B0aW9ucyB9IGZyb20gJ2VzYnVpbGQnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdub2RlOmFzc2VydCc7XG5pbXBvcnQgeyBOb3JtYWxpemVkQnJvd3Nlck9wdGlvbnMgfSBmcm9tICcuLi8uLi9idWlsZGVycy9icm93c2VyLWVzYnVpbGQvb3B0aW9ucyc7XG5pbXBvcnQgeyBMb2FkUmVzdWx0Q2FjaGUgfSBmcm9tICcuL2xvYWQtcmVzdWx0LWNhY2hlJztcbmltcG9ydCB7IGNyZWF0ZVN0eWxlc2hlZXRCdW5kbGVPcHRpb25zIH0gZnJvbSAnLi9zdHlsZXNoZWV0cy9idW5kbGUtb3B0aW9ucyc7XG5pbXBvcnQgeyBjcmVhdGVWaXJ0dWFsTW9kdWxlUGx1Z2luIH0gZnJvbSAnLi92aXJ0dWFsLW1vZHVsZS1wbHVnaW4nO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR2xvYmFsU3R5bGVzQnVuZGxlT3B0aW9ucyhcbiAgb3B0aW9uczogTm9ybWFsaXplZEJyb3dzZXJPcHRpb25zLFxuICB0YXJnZXQ6IHN0cmluZ1tdLFxuICBicm93c2Vyczogc3RyaW5nW10sXG4gIGluaXRpYWw6IGJvb2xlYW4sXG4gIGNhY2hlPzogTG9hZFJlc3VsdENhY2hlLFxuKTogQnVpbGRPcHRpb25zIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qge1xuICAgIHdvcmtzcGFjZVJvb3QsXG4gICAgb3B0aW1pemF0aW9uT3B0aW9ucyxcbiAgICBzb3VyY2VtYXBPcHRpb25zLFxuICAgIG91dHB1dE5hbWVzLFxuICAgIGdsb2JhbFN0eWxlcyxcbiAgICBwcmVzZXJ2ZVN5bWxpbmtzLFxuICAgIGV4dGVybmFsRGVwZW5kZW5jaWVzLFxuICAgIHN0eWxlUHJlcHJvY2Vzc29yT3B0aW9ucyxcbiAgICB0YWlsd2luZENvbmZpZ3VyYXRpb24sXG4gIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IG5hbWVzcGFjZSA9ICdhbmd1bGFyOnN0eWxlcy9nbG9iYWwnO1xuICBjb25zdCBlbnRyeVBvaW50czogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgZm9yIChjb25zdCBzdHlsZSBvZiBnbG9iYWxTdHlsZXMpIHtcbiAgICBpZiAoc3R5bGUuaW5pdGlhbCA9PT0gaW5pdGlhbCkge1xuICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgZW50cnlQb2ludHNbc3R5bGUubmFtZV0gPSBgJHtuYW1lc3BhY2V9OyR7c3R5bGUubmFtZX1gO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNraXAgaWYgdGhlcmUgYXJlIG5vIGVudHJ5IHBvaW50cyBmb3IgdGhlIHN0eWxlIGxvYWRpbmcgdHlwZVxuICBpZiAoZm91bmQgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYnVpbGRPcHRpb25zID0gY3JlYXRlU3R5bGVzaGVldEJ1bmRsZU9wdGlvbnMoXG4gICAge1xuICAgICAgd29ya3NwYWNlUm9vdCxcbiAgICAgIG9wdGltaXphdGlvbjogISFvcHRpbWl6YXRpb25PcHRpb25zLnN0eWxlcy5taW5pZnksXG4gICAgICBzb3VyY2VtYXA6ICEhc291cmNlbWFwT3B0aW9ucy5zdHlsZXMsXG4gICAgICBwcmVzZXJ2ZVN5bWxpbmtzLFxuICAgICAgdGFyZ2V0LFxuICAgICAgZXh0ZXJuYWxEZXBlbmRlbmNpZXMsXG4gICAgICBvdXRwdXROYW1lczogaW5pdGlhbFxuICAgICAgICA/IG91dHB1dE5hbWVzXG4gICAgICAgIDoge1xuICAgICAgICAgICAgLi4ub3V0cHV0TmFtZXMsXG4gICAgICAgICAgICBidW5kbGVzOiAnW25hbWVdJyxcbiAgICAgICAgICB9LFxuICAgICAgaW5jbHVkZVBhdGhzOiBzdHlsZVByZXByb2Nlc3Nvck9wdGlvbnM/LmluY2x1ZGVQYXRocyxcbiAgICAgIGJyb3dzZXJzLFxuICAgICAgdGFpbHdpbmRDb25maWd1cmF0aW9uLFxuICAgIH0sXG4gICAgY2FjaGUsXG4gICk7XG4gIGJ1aWxkT3B0aW9ucy5sZWdhbENvbW1lbnRzID0gb3B0aW9ucy5leHRyYWN0TGljZW5zZXMgPyAnbm9uZScgOiAnZW9mJztcbiAgYnVpbGRPcHRpb25zLmVudHJ5UG9pbnRzID0gZW50cnlQb2ludHM7XG5cbiAgYnVpbGRPcHRpb25zLnBsdWdpbnMudW5zaGlmdChcbiAgICBjcmVhdGVWaXJ0dWFsTW9kdWxlUGx1Z2luKHtcbiAgICAgIG5hbWVzcGFjZSxcbiAgICAgIHRyYW5zZm9ybVBhdGg6IChwYXRoKSA9PiBwYXRoLnNwbGl0KCc7JywgMilbMV0sXG4gICAgICBsb2FkQ29udGVudDogKGFyZ3MpID0+IHtcbiAgICAgICAgY29uc3QgZmlsZXMgPSBnbG9iYWxTdHlsZXMuZmluZCgoeyBuYW1lIH0pID0+IG5hbWUgPT09IGFyZ3MucGF0aCk/LmZpbGVzO1xuICAgICAgICBhc3NlcnQoZmlsZXMsIGBnbG9iYWwgc3R5bGUgbmFtZSBzaG91bGQgYWx3YXlzIGJlIGZvdW5kIFske2FyZ3MucGF0aH1dYCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50czogZmlsZXMubWFwKChmaWxlKSA9PiBgQGltcG9ydCAnJHtmaWxlLnJlcGxhY2UoL1xcXFwvZywgJy8nKX0nO2ApLmpvaW4oJ1xcbicpLFxuICAgICAgICAgIGxvYWRlcjogJ2NzcycsXG4gICAgICAgICAgcmVzb2x2ZURpcjogd29ya3NwYWNlUm9vdCxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgfSksXG4gICk7XG5cbiAgcmV0dXJuIGJ1aWxkT3B0aW9ucztcbn1cbiJdfQ==
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ import { NormalizedBrowserOptions } from '../../builders/browser-esbuild/options';
9
+ import { IndexHtmlTransformResult } from '../../utils/index-file/index-html-generator';
10
+ import { InitialFileRecord } from './bundler-context';
11
+ import type { ExecutionResult } from './bundler-execution-result';
12
+ export declare function generateIndexHtml(initialFiles: Map<string, InitialFileRecord>, executionResult: ExecutionResult, buildOptions: NormalizedBrowserOptions): Promise<IndexHtmlTransformResult>;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ var __importDefault = (this && this.__importDefault) || function (mod) {
10
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.generateIndexHtml = void 0;
14
+ const node_assert_1 = __importDefault(require("node:assert"));
15
+ const node_path_1 = __importDefault(require("node:path"));
16
+ const index_html_generator_1 = require("../../utils/index-file/index-html-generator");
17
+ function generateIndexHtml(initialFiles, executionResult, buildOptions) {
18
+ // Analyze metafile for initial link-based hints.
19
+ // Skip if the internal externalPackages option is enabled since this option requires
20
+ // dev server cooperation to properly resolve and fetch imports.
21
+ const hints = [];
22
+ const { indexHtmlOptions, externalPackages, optimizationOptions, crossOrigin, subresourceIntegrity, baseHref, } = buildOptions;
23
+ (0, node_assert_1.default)(indexHtmlOptions, 'indexHtmlOptions cannot be undefined.');
24
+ if (!externalPackages) {
25
+ for (const [key, value] of initialFiles) {
26
+ if (value.entrypoint) {
27
+ // Entry points are already referenced in the HTML
28
+ continue;
29
+ }
30
+ if (value.type === 'script') {
31
+ hints.push({ url: key, mode: 'modulepreload' });
32
+ }
33
+ else if (value.type === 'style') {
34
+ hints.push({ url: key, mode: 'preload' });
35
+ }
36
+ }
37
+ }
38
+ // Create an index HTML generator that reads from the in-memory output files
39
+ const indexHtmlGenerator = new index_html_generator_1.IndexHtmlGenerator({
40
+ indexPath: indexHtmlOptions.input,
41
+ entrypoints: indexHtmlOptions.insertionOrder,
42
+ sri: subresourceIntegrity,
43
+ optimization: optimizationOptions,
44
+ crossOrigin: crossOrigin,
45
+ });
46
+ /** Virtual output path to support reading in-memory files. */
47
+ const virtualOutputPath = '/';
48
+ indexHtmlGenerator.readAsset = async function (filePath) {
49
+ // Remove leading directory separator
50
+ const relativefilePath = node_path_1.default.relative(virtualOutputPath, filePath);
51
+ const file = executionResult.outputFiles.find((file) => file.path === relativefilePath);
52
+ if (file) {
53
+ return file.text;
54
+ }
55
+ throw new Error(`Output file does not exist: ${node_path_1.default}`);
56
+ };
57
+ return indexHtmlGenerator.process({
58
+ baseHref,
59
+ lang: undefined,
60
+ outputPath: virtualOutputPath,
61
+ files: [...initialFiles].map(([file, record]) => ({
62
+ name: record.name ?? '',
63
+ file,
64
+ extension: node_path_1.default.extname(file),
65
+ })),
66
+ hints,
67
+ });
68
+ }
69
+ exports.generateIndexHtml = generateIndexHtml;
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtaHRtbC1nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy90b29scy9lc2J1aWxkL2luZGV4LWh0bWwtZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7Ozs7OztBQUVILDhEQUFpQztBQUNqQywwREFBNkI7QUFFN0Isc0ZBR3FEO0FBSXJELFNBQWdCLGlCQUFpQixDQUMvQixZQUE0QyxFQUM1QyxlQUFnQyxFQUNoQyxZQUFzQztJQUV0QyxpREFBaUQ7SUFDakQscUZBQXFGO0lBQ3JGLGdFQUFnRTtJQUNoRSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDakIsTUFBTSxFQUNKLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBQ25CLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsUUFBUSxHQUNULEdBQUcsWUFBWSxDQUFDO0lBRWpCLElBQUEscUJBQU0sRUFBQyxnQkFBZ0IsRUFBRSx1Q0FBdUMsQ0FBQyxDQUFDO0lBRWxFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtRQUNyQixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksWUFBWSxFQUFFO1lBQ3ZDLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRTtnQkFDcEIsa0RBQWtEO2dCQUNsRCxTQUFTO2FBQ1Y7WUFDRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO2dCQUMzQixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsZUFBd0IsRUFBRSxDQUFDLENBQUM7YUFDMUQ7aUJBQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtnQkFDakMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQWtCLEVBQUUsQ0FBQyxDQUFDO2FBQ3BEO1NBQ0Y7S0FDRjtJQUVELDRFQUE0RTtJQUM1RSxNQUFNLGtCQUFrQixHQUFHLElBQUkseUNBQWtCLENBQUM7UUFDaEQsU0FBUyxFQUFFLGdCQUFnQixDQUFDLEtBQUs7UUFDakMsV0FBVyxFQUFFLGdCQUFnQixDQUFDLGNBQWM7UUFDNUMsR0FBRyxFQUFFLG9CQUFvQjtRQUN6QixZQUFZLEVBQUUsbUJBQW1CO1FBQ2pDLFdBQVcsRUFBRSxXQUFXO0tBQ3pCLENBQUMsQ0FBQztJQUVILDhEQUE4RDtJQUM5RCxNQUFNLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztJQUM5QixrQkFBa0IsQ0FBQyxTQUFTLEdBQUcsS0FBSyxXQUFXLFFBQWdCO1FBQzdELHFDQUFxQztRQUNyQyxNQUFNLGdCQUFnQixHQUFHLG1CQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sSUFBSSxHQUFHLGVBQWUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLGdCQUFnQixDQUFDLENBQUM7UUFDeEYsSUFBSSxJQUFJLEVBQUU7WUFDUixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDbEI7UUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixtQkFBSSxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDLENBQUM7SUFFRixPQUFPLGtCQUFrQixDQUFDLE9BQU8sQ0FBQztRQUNoQyxRQUFRO1FBQ1IsSUFBSSxFQUFFLFNBQVM7UUFDZixVQUFVLEVBQUUsaUJBQWlCO1FBQzdCLEtBQUssRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDaEQsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRTtZQUN2QixJQUFJO1lBQ0osU0FBUyxFQUFFLG1CQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztTQUM5QixDQUFDLENBQUM7UUFDSCxLQUFLO0tBQ04sQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQW5FRCw4Q0FtRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IGFzc2VydCBmcm9tICdub2RlOmFzc2VydCc7XG5pbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgTm9ybWFsaXplZEJyb3dzZXJPcHRpb25zIH0gZnJvbSAnLi4vLi4vYnVpbGRlcnMvYnJvd3Nlci1lc2J1aWxkL29wdGlvbnMnO1xuaW1wb3J0IHtcbiAgSW5kZXhIdG1sR2VuZXJhdG9yLFxuICBJbmRleEh0bWxUcmFuc2Zvcm1SZXN1bHQsXG59IGZyb20gJy4uLy4uL3V0aWxzL2luZGV4LWZpbGUvaW5kZXgtaHRtbC1nZW5lcmF0b3InO1xuaW1wb3J0IHsgSW5pdGlhbEZpbGVSZWNvcmQgfSBmcm9tICcuL2J1bmRsZXItY29udGV4dCc7XG5pbXBvcnQgdHlwZSB7IEV4ZWN1dGlvblJlc3VsdCB9IGZyb20gJy4vYnVuZGxlci1leGVjdXRpb24tcmVzdWx0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlSW5kZXhIdG1sKFxuICBpbml0aWFsRmlsZXM6IE1hcDxzdHJpbmcsIEluaXRpYWxGaWxlUmVjb3JkPixcbiAgZXhlY3V0aW9uUmVzdWx0OiBFeGVjdXRpb25SZXN1bHQsXG4gIGJ1aWxkT3B0aW9uczogTm9ybWFsaXplZEJyb3dzZXJPcHRpb25zLFxuKTogUHJvbWlzZTxJbmRleEh0bWxUcmFuc2Zvcm1SZXN1bHQ+IHtcbiAgLy8gQW5hbHl6ZSBtZXRhZmlsZSBmb3IgaW5pdGlhbCBsaW5rLWJhc2VkIGhpbnRzLlxuICAvLyBTa2lwIGlmIHRoZSBpbnRlcm5hbCBleHRlcm5hbFBhY2thZ2VzIG9wdGlvbiBpcyBlbmFibGVkIHNpbmNlIHRoaXMgb3B0aW9uIHJlcXVpcmVzXG4gIC8vIGRldiBzZXJ2ZXIgY29vcGVyYXRpb24gdG8gcHJvcGVybHkgcmVzb2x2ZSBhbmQgZmV0Y2ggaW1wb3J0cy5cbiAgY29uc3QgaGludHMgPSBbXTtcbiAgY29uc3Qge1xuICAgIGluZGV4SHRtbE9wdGlvbnMsXG4gICAgZXh0ZXJuYWxQYWNrYWdlcyxcbiAgICBvcHRpbWl6YXRpb25PcHRpb25zLFxuICAgIGNyb3NzT3JpZ2luLFxuICAgIHN1YnJlc291cmNlSW50ZWdyaXR5LFxuICAgIGJhc2VIcmVmLFxuICB9ID0gYnVpbGRPcHRpb25zO1xuXG4gIGFzc2VydChpbmRleEh0bWxPcHRpb25zLCAnaW5kZXhIdG1sT3B0aW9ucyBjYW5ub3QgYmUgdW5kZWZpbmVkLicpO1xuXG4gIGlmICghZXh0ZXJuYWxQYWNrYWdlcykge1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGluaXRpYWxGaWxlcykge1xuICAgICAgaWYgKHZhbHVlLmVudHJ5cG9pbnQpIHtcbiAgICAgICAgLy8gRW50cnkgcG9pbnRzIGFyZSBhbHJlYWR5IHJlZmVyZW5jZWQgaW4gdGhlIEhUTUxcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUudHlwZSA9PT0gJ3NjcmlwdCcpIHtcbiAgICAgICAgaGludHMucHVzaCh7IHVybDoga2V5LCBtb2RlOiAnbW9kdWxlcHJlbG9hZCcgYXMgY29uc3QgfSk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlLnR5cGUgPT09ICdzdHlsZScpIHtcbiAgICAgICAgaGludHMucHVzaCh7IHVybDoga2V5LCBtb2RlOiAncHJlbG9hZCcgYXMgY29uc3QgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQ3JlYXRlIGFuIGluZGV4IEhUTUwgZ2VuZXJhdG9yIHRoYXQgcmVhZHMgZnJvbSB0aGUgaW4tbWVtb3J5IG91dHB1dCBmaWxlc1xuICBjb25zdCBpbmRleEh0bWxHZW5lcmF0b3IgPSBuZXcgSW5kZXhIdG1sR2VuZXJhdG9yKHtcbiAgICBpbmRleFBhdGg6IGluZGV4SHRtbE9wdGlvbnMuaW5wdXQsXG4gICAgZW50cnlwb2ludHM6IGluZGV4SHRtbE9wdGlvbnMuaW5zZXJ0aW9uT3JkZXIsXG4gICAgc3JpOiBzdWJyZXNvdXJjZUludGVncml0eSxcbiAgICBvcHRpbWl6YXRpb246IG9wdGltaXphdGlvbk9wdGlvbnMsXG4gICAgY3Jvc3NPcmlnaW46IGNyb3NzT3JpZ2luLFxuICB9KTtcblxuICAvKiogVmlydHVhbCBvdXRwdXQgcGF0aCB0byBzdXBwb3J0IHJlYWRpbmcgaW4tbWVtb3J5IGZpbGVzLiAqL1xuICBjb25zdCB2aXJ0dWFsT3V0cHV0UGF0aCA9ICcvJztcbiAgaW5kZXhIdG1sR2VuZXJhdG9yLnJlYWRBc3NldCA9IGFzeW5jIGZ1bmN0aW9uIChmaWxlUGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAvLyBSZW1vdmUgbGVhZGluZyBkaXJlY3Rvcnkgc2VwYXJhdG9yXG4gICAgY29uc3QgcmVsYXRpdmVmaWxlUGF0aCA9IHBhdGgucmVsYXRpdmUodmlydHVhbE91dHB1dFBhdGgsIGZpbGVQYXRoKTtcbiAgICBjb25zdCBmaWxlID0gZXhlY3V0aW9uUmVzdWx0Lm91dHB1dEZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUucGF0aCA9PT0gcmVsYXRpdmVmaWxlUGF0aCk7XG4gICAgaWYgKGZpbGUpIHtcbiAgICAgIHJldHVybiBmaWxlLnRleHQ7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBPdXRwdXQgZmlsZSBkb2VzIG5vdCBleGlzdDogJHtwYXRofWApO1xuICB9O1xuXG4gIHJldHVybiBpbmRleEh0bWxHZW5lcmF0b3IucHJvY2Vzcyh7XG4gICAgYmFzZUhyZWYsXG4gICAgbGFuZzogdW5kZWZpbmVkLFxuICAgIG91dHB1dFBhdGg6IHZpcnR1YWxPdXRwdXRQYXRoLFxuICAgIGZpbGVzOiBbLi4uaW5pdGlhbEZpbGVzXS5tYXAoKFtmaWxlLCByZWNvcmRdKSA9PiAoe1xuICAgICAgbmFtZTogcmVjb3JkLm5hbWUgPz8gJycsXG4gICAgICBmaWxlLFxuICAgICAgZXh0ZW5zaW9uOiBwYXRoLmV4dG5hbWUoZmlsZSksXG4gICAgfSkpLFxuICAgIGhpbnRzLFxuICB9KTtcbn1cbiJdfQ==
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ var __importDefault = (this && this.__importDefault) || function (mod) {
10
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ const core_1 = require("@babel/core");
14
+ const promises_1 = require("node:fs/promises");
15
+ const application_1 = __importDefault(require("../../tools/babel/presets/application"));
16
+ const webpack_loader_1 = require("../../tools/babel/webpack-loader");
17
+ const load_esm_1 = require("../../utils/load-esm");
18
+ async function transformJavaScript(request) {
19
+ request.data ?? (request.data = await (0, promises_1.readFile)(request.filename, 'utf-8'));
20
+ const transformedData = await transformWithBabel(request);
21
+ return Buffer.from(transformedData, 'utf-8');
22
+ }
23
+ exports.default = transformJavaScript;
24
+ let linkerPluginCreator;
25
+ async function transformWithBabel({ filename, data, ...options }) {
26
+ const forceAsyncTransformation = options.forceAsyncTransformation ??
27
+ (!/[\\/][_f]?esm2015[\\/]/.test(filename) && /async(?:\s+function)?\s*\*/.test(data));
28
+ const shouldLink = !options.skipLinker && (await (0, webpack_loader_1.requiresLinking)(filename, data));
29
+ const useInputSourcemap = options.sourcemap &&
30
+ (!!options.thirdPartySourcemaps || !/[\\/]node_modules[\\/]/.test(filename));
31
+ // If no additional transformations are needed, return the data directly
32
+ if (!forceAsyncTransformation && !options.advancedOptimizations && !shouldLink) {
33
+ // Strip sourcemaps if they should not be used
34
+ return useInputSourcemap ? data : data.replace(/^\/\/# sourceMappingURL=[^\r\n]*/gm, '');
35
+ }
36
+ // @angular/platform-server/init entry-point has side-effects.
37
+ const safeAngularPackage = /[\\/]node_modules[\\/]@angular[\\/]/.test(filename) &&
38
+ !/@angular[\\/]platform-server[\\/]f?esm2022[\\/]init/.test(filename);
39
+ // Lazy load the linker plugin only when linking is required
40
+ if (shouldLink) {
41
+ linkerPluginCreator ?? (linkerPluginCreator = (await (0, load_esm_1.loadEsmModule)('@angular/compiler-cli/linker/babel')).createEs2015LinkerPlugin);
42
+ }
43
+ const result = await (0, core_1.transformAsync)(data, {
44
+ filename,
45
+ inputSourceMap: (useInputSourcemap ? undefined : false),
46
+ sourceMaps: useInputSourcemap ? 'inline' : false,
47
+ compact: false,
48
+ configFile: false,
49
+ babelrc: false,
50
+ browserslistConfigFile: false,
51
+ plugins: [],
52
+ presets: [
53
+ [
54
+ application_1.default,
55
+ {
56
+ angularLinker: linkerPluginCreator && {
57
+ shouldLink,
58
+ jitMode: options.jit,
59
+ linkerPluginCreator,
60
+ },
61
+ forceAsyncTransformation,
62
+ optimize: options.advancedOptimizations && {
63
+ pureTopLevel: safeAngularPackage,
64
+ },
65
+ },
66
+ ],
67
+ ],
68
+ });
69
+ const outputCode = result?.code ?? data;
70
+ // Strip sourcemaps if they should not be used.
71
+ // Babel will keep the original comments even if sourcemaps are disabled.
72
+ return useInputSourcemap
73
+ ? outputCode
74
+ : outputCode.replace(/^\/\/# sourceMappingURL=[^\r\n]*/gm, '');
75
+ }
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC10cmFuc2Zvcm1lci13b3JrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy90b29scy9lc2J1aWxkL2phdmFzY3JpcHQtdHJhbnNmb3JtZXItd29ya2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7Ozs7O0FBRUgsc0NBQTZDO0FBQzdDLCtDQUE0QztBQUM1Qyx3RkFBNkU7QUFDN0UscUVBQW1FO0FBQ25FLG1EQUFxRDtBQWF0QyxLQUFLLFVBQVUsbUJBQW1CLENBQy9DLE9BQW1DO0lBRW5DLE9BQU8sQ0FBQyxJQUFJLEtBQVosT0FBTyxDQUFDLElBQUksR0FBSyxNQUFNLElBQUEsbUJBQVEsRUFBQyxPQUFPLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFDO0lBQzNELE1BQU0sZUFBZSxHQUFHLE1BQU0sa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFMUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBUEQsc0NBT0M7QUFFRCxJQUFJLG1CQUVTLENBQUM7QUFFZCxLQUFLLFVBQVUsa0JBQWtCLENBQUMsRUFDaEMsUUFBUSxFQUNSLElBQUksRUFDSixHQUFHLE9BQU8sRUFDaUI7SUFDM0IsTUFBTSx3QkFBd0IsR0FDNUIsT0FBTyxDQUFDLHdCQUF3QjtRQUNoQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLDRCQUE0QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLE1BQU0sVUFBVSxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxDQUFDLE1BQU0sSUFBQSxnQ0FBZSxFQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLE1BQU0saUJBQWlCLEdBQ3JCLE9BQU8sQ0FBQyxTQUFTO1FBQ2pCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBRS9FLHdFQUF3RTtJQUN4RSxJQUFJLENBQUMsd0JBQXdCLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLElBQUksQ0FBQyxVQUFVLEVBQUU7UUFDOUUsOENBQThDO1FBQzlDLE9BQU8saUJBQWlCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQ0FBb0MsRUFBRSxFQUFFLENBQUMsQ0FBQztLQUMxRjtJQUVELDhEQUE4RDtJQUM5RCxNQUFNLGtCQUFrQixHQUN0QixxQ0FBcUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3BELENBQUMscURBQXFELENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXhFLDREQUE0RDtJQUM1RCxJQUFJLFVBQVUsRUFBRTtRQUNkLG1CQUFtQixLQUFuQixtQkFBbUIsR0FBSyxDQUN0QixNQUFNLElBQUEsd0JBQWEsRUFDakIsb0NBQW9DLENBQ3JDLENBQ0YsQ0FBQyx3QkFBd0IsRUFBQztLQUM1QjtJQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSxxQkFBYyxFQUFDLElBQUksRUFBRTtRQUN4QyxRQUFRO1FBQ1IsY0FBYyxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFjO1FBQ3BFLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLO1FBQ2hELE9BQU8sRUFBRSxLQUFLO1FBQ2QsVUFBVSxFQUFFLEtBQUs7UUFDakIsT0FBTyxFQUFFLEtBQUs7UUFDZCxzQkFBc0IsRUFBRSxLQUFLO1FBQzdCLE9BQU8sRUFBRSxFQUFFO1FBQ1gsT0FBTyxFQUFFO1lBQ1A7Z0JBQ0UscUJBQXdCO2dCQUN4QjtvQkFDRSxhQUFhLEVBQUUsbUJBQW1CLElBQUk7d0JBQ3BDLFVBQVU7d0JBQ1YsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHO3dCQUNwQixtQkFBbUI7cUJBQ3BCO29CQUNELHdCQUF3QjtvQkFDeEIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxxQkFBcUIsSUFBSTt3QkFDekMsWUFBWSxFQUFFLGtCQUFrQjtxQkFDakM7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxVQUFVLEdBQUcsTUFBTSxFQUFFLElBQUksSUFBSSxJQUFJLENBQUM7SUFFeEMsK0NBQStDO0lBQy9DLHlFQUF5RTtJQUN6RSxPQUFPLGlCQUFpQjtRQUN0QixDQUFDLENBQUMsVUFBVTtRQUNaLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLG9DQUFvQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ25FLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsgdHJhbnNmb3JtQXN5bmMgfSBmcm9tICdAYmFiZWwvY29yZSc7XG5pbXBvcnQgeyByZWFkRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IGFuZ3VsYXJBcHBsaWNhdGlvblByZXNldCBmcm9tICcuLi8uLi90b29scy9iYWJlbC9wcmVzZXRzL2FwcGxpY2F0aW9uJztcbmltcG9ydCB7IHJlcXVpcmVzTGlua2luZyB9IGZyb20gJy4uLy4uL3Rvb2xzL2JhYmVsL3dlYnBhY2stbG9hZGVyJztcbmltcG9ydCB7IGxvYWRFc21Nb2R1bGUgfSBmcm9tICcuLi8uLi91dGlscy9sb2FkLWVzbSc7XG5cbmludGVyZmFjZSBKYXZhU2NyaXB0VHJhbnNmb3JtUmVxdWVzdCB7XG4gIGZpbGVuYW1lOiBzdHJpbmc7XG4gIGRhdGE6IHN0cmluZztcbiAgc291cmNlbWFwOiBib29sZWFuO1xuICB0aGlyZFBhcnR5U291cmNlbWFwczogYm9vbGVhbjtcbiAgYWR2YW5jZWRPcHRpbWl6YXRpb25zOiBib29sZWFuO1xuICBmb3JjZUFzeW5jVHJhbnNmb3JtYXRpb24/OiBib29sZWFuO1xuICBza2lwTGlua2VyOiBib29sZWFuO1xuICBqaXQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHRyYW5zZm9ybUphdmFTY3JpcHQoXG4gIHJlcXVlc3Q6IEphdmFTY3JpcHRUcmFuc2Zvcm1SZXF1ZXN0LFxuKTogUHJvbWlzZTxVaW50OEFycmF5PiB7XG4gIHJlcXVlc3QuZGF0YSA/Pz0gYXdhaXQgcmVhZEZpbGUocmVxdWVzdC5maWxlbmFtZSwgJ3V0Zi04Jyk7XG4gIGNvbnN0IHRyYW5zZm9ybWVkRGF0YSA9IGF3YWl0IHRyYW5zZm9ybVdpdGhCYWJlbChyZXF1ZXN0KTtcblxuICByZXR1cm4gQnVmZmVyLmZyb20odHJhbnNmb3JtZWREYXRhLCAndXRmLTgnKTtcbn1cblxubGV0IGxpbmtlclBsdWdpbkNyZWF0b3I6XG4gIHwgdHlwZW9mIGltcG9ydCgnQGFuZ3VsYXIvY29tcGlsZXItY2xpL2xpbmtlci9iYWJlbCcpLmNyZWF0ZUVzMjAxNUxpbmtlclBsdWdpblxuICB8IHVuZGVmaW5lZDtcblxuYXN5bmMgZnVuY3Rpb24gdHJhbnNmb3JtV2l0aEJhYmVsKHtcbiAgZmlsZW5hbWUsXG4gIGRhdGEsXG4gIC4uLm9wdGlvbnNcbn06IEphdmFTY3JpcHRUcmFuc2Zvcm1SZXF1ZXN0KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgZm9yY2VBc3luY1RyYW5zZm9ybWF0aW9uID1cbiAgICBvcHRpb25zLmZvcmNlQXN5bmNUcmFuc2Zvcm1hdGlvbiA/P1xuICAgICghL1tcXFxcL11bX2ZdP2VzbTIwMTVbXFxcXC9dLy50ZXN0KGZpbGVuYW1lKSAmJiAvYXN5bmMoPzpcXHMrZnVuY3Rpb24pP1xccypcXCovLnRlc3QoZGF0YSkpO1xuICBjb25zdCBzaG91bGRMaW5rID0gIW9wdGlvbnMuc2tpcExpbmtlciAmJiAoYXdhaXQgcmVxdWlyZXNMaW5raW5nKGZpbGVuYW1lLCBkYXRhKSk7XG4gIGNvbnN0IHVzZUlucHV0U291cmNlbWFwID1cbiAgICBvcHRpb25zLnNvdXJjZW1hcCAmJlxuICAgICghIW9wdGlvbnMudGhpcmRQYXJ0eVNvdXJjZW1hcHMgfHwgIS9bXFxcXC9dbm9kZV9tb2R1bGVzW1xcXFwvXS8udGVzdChmaWxlbmFtZSkpO1xuXG4gIC8vIElmIG5vIGFkZGl0aW9uYWwgdHJhbnNmb3JtYXRpb25zIGFyZSBuZWVkZWQsIHJldHVybiB0aGUgZGF0YSBkaXJlY3RseVxuICBpZiAoIWZvcmNlQXN5bmNUcmFuc2Zvcm1hdGlvbiAmJiAhb3B0aW9ucy5hZHZhbmNlZE9wdGltaXphdGlvbnMgJiYgIXNob3VsZExpbmspIHtcbiAgICAvLyBTdHJpcCBzb3VyY2VtYXBzIGlmIHRoZXkgc2hvdWxkIG5vdCBiZSB1c2VkXG4gICAgcmV0dXJuIHVzZUlucHV0U291cmNlbWFwID8gZGF0YSA6IGRhdGEucmVwbGFjZSgvXlxcL1xcLyMgc291cmNlTWFwcGluZ1VSTD1bXlxcclxcbl0qL2dtLCAnJyk7XG4gIH1cblxuICAvLyBAYW5ndWxhci9wbGF0Zm9ybS1zZXJ2ZXIvaW5pdCBlbnRyeS1wb2ludCBoYXMgc2lkZS1lZmZlY3RzLlxuICBjb25zdCBzYWZlQW5ndWxhclBhY2thZ2UgPVxuICAgIC9bXFxcXC9dbm9kZV9tb2R1bGVzW1xcXFwvXUBhbmd1bGFyW1xcXFwvXS8udGVzdChmaWxlbmFtZSkgJiZcbiAgICAhL0Bhbmd1bGFyW1xcXFwvXXBsYXRmb3JtLXNlcnZlcltcXFxcL11mP2VzbTIwMjJbXFxcXC9daW5pdC8udGVzdChmaWxlbmFtZSk7XG5cbiAgLy8gTGF6eSBsb2FkIHRoZSBsaW5rZXIgcGx1Z2luIG9ubHkgd2hlbiBsaW5raW5nIGlzIHJlcXVpcmVkXG4gIGlmIChzaG91bGRMaW5rKSB7XG4gICAgbGlua2VyUGx1Z2luQ3JlYXRvciA/Pz0gKFxuICAgICAgYXdhaXQgbG9hZEVzbU1vZHVsZTx0eXBlb2YgaW1wb3J0KCdAYW5ndWxhci9jb21waWxlci1jbGkvbGlua2VyL2JhYmVsJyk+KFxuICAgICAgICAnQGFuZ3VsYXIvY29tcGlsZXItY2xpL2xpbmtlci9iYWJlbCcsXG4gICAgICApXG4gICAgKS5jcmVhdGVFczIwMTVMaW5rZXJQbHVnaW47XG4gIH1cblxuICBjb25zdCByZXN1bHQgPSBhd2FpdCB0cmFuc2Zvcm1Bc3luYyhkYXRhLCB7XG4gICAgZmlsZW5hbWUsXG4gICAgaW5wdXRTb3VyY2VNYXA6ICh1c2VJbnB1dFNvdXJjZW1hcCA/IHVuZGVmaW5lZCA6IGZhbHNlKSBhcyB1bmRlZmluZWQsXG4gICAgc291cmNlTWFwczogdXNlSW5wdXRTb3VyY2VtYXAgPyAnaW5saW5lJyA6IGZhbHNlLFxuICAgIGNvbXBhY3Q6IGZhbHNlLFxuICAgIGNvbmZpZ0ZpbGU6IGZhbHNlLFxuICAgIGJhYmVscmM6IGZhbHNlLFxuICAgIGJyb3dzZXJzbGlzdENvbmZpZ0ZpbGU6IGZhbHNlLFxuICAgIHBsdWdpbnM6IFtdLFxuICAgIHByZXNldHM6IFtcbiAgICAgIFtcbiAgICAgICAgYW5ndWxhckFwcGxpY2F0aW9uUHJlc2V0LFxuICAgICAgICB7XG4gICAgICAgICAgYW5ndWxhckxpbmtlcjogbGlua2VyUGx1Z2luQ3JlYXRvciAmJiB7XG4gICAgICAgICAgICBzaG91bGRMaW5rLFxuICAgICAgICAgICAgaml0TW9kZTogb3B0aW9ucy5qaXQsXG4gICAgICAgICAgICBsaW5rZXJQbHVnaW5DcmVhdG9yLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZm9yY2VBc3luY1RyYW5zZm9ybWF0aW9uLFxuICAgICAgICAgIG9wdGltaXplOiBvcHRpb25zLmFkdmFuY2VkT3B0aW1pemF0aW9ucyAmJiB7XG4gICAgICAgICAgICBwdXJlVG9wTGV2ZWw6IHNhZmVBbmd1bGFyUGFja2FnZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICBdLFxuICB9KTtcblxuICBjb25zdCBvdXRwdXRDb2RlID0gcmVzdWx0Py5jb2RlID8/IGRhdGE7XG5cbiAgLy8gU3RyaXAgc291cmNlbWFwcyBpZiB0aGV5IHNob3VsZCBub3QgYmUgdXNlZC5cbiAgLy8gQmFiZWwgd2lsbCBrZWVwIHRoZSBvcmlnaW5hbCBjb21tZW50cyBldmVuIGlmIHNvdXJjZW1hcHMgYXJlIGRpc2FibGVkLlxuICByZXR1cm4gdXNlSW5wdXRTb3VyY2VtYXBcbiAgICA/IG91dHB1dENvZGVcbiAgICA6IG91dHB1dENvZGUucmVwbGFjZSgvXlxcL1xcLyMgc291cmNlTWFwcGluZ1VSTD1bXlxcclxcbl0qL2dtLCAnJyk7XG59XG4iXX0=
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
10
+ if (kind === "m") throw new TypeError("Private method is not writable");
11
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
12
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
13
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
14
+ };
15
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
16
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
17
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
18
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
19
+ };
20
+ var __importDefault = (this && this.__importDefault) || function (mod) {
21
+ return (mod && mod.__esModule) ? mod : { "default": mod };
22
+ };
23
+ var _JavaScriptTransformer_workerPool, _JavaScriptTransformer_commonOptions;
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.JavaScriptTransformer = void 0;
26
+ const piscina_1 = __importDefault(require("piscina"));
27
+ /**
28
+ * A class that performs transformation of JavaScript files and raw data.
29
+ * A worker pool is used to distribute the transformation actions and allow
30
+ * parallel processing. Transformation behavior is based on the filename and
31
+ * data. Transformations may include: async downleveling, Angular linking,
32
+ * and advanced optimizations.
33
+ */
34
+ class JavaScriptTransformer {
35
+ constructor(options, maxThreads) {
36
+ _JavaScriptTransformer_workerPool.set(this, void 0);
37
+ _JavaScriptTransformer_commonOptions.set(this, void 0);
38
+ __classPrivateFieldSet(this, _JavaScriptTransformer_workerPool, new piscina_1.default({
39
+ filename: require.resolve('./javascript-transformer-worker'),
40
+ maxThreads,
41
+ }), "f");
42
+ // Extract options to ensure only the named options are serialized and sent to the worker
43
+ const { sourcemap, thirdPartySourcemaps = false, advancedOptimizations = false, jit = false, } = options;
44
+ __classPrivateFieldSet(this, _JavaScriptTransformer_commonOptions, {
45
+ sourcemap,
46
+ thirdPartySourcemaps,
47
+ advancedOptimizations,
48
+ jit,
49
+ }, "f");
50
+ }
51
+ /**
52
+ * Performs JavaScript transformations on a file from the filesystem.
53
+ * If no transformations are required, the data for the original file will be returned.
54
+ * @param filename The full path to the file.
55
+ * @param skipLinker If true, bypass all Angular linker processing; if false, attempt linking.
56
+ * @returns A promise that resolves to a UTF-8 encoded Uint8Array containing the result.
57
+ */
58
+ transformFile(filename, skipLinker) {
59
+ // Always send the request to a worker. Files are almost always from node modules which measn
60
+ // they may need linking. The data is also not yet available to perform most transformation checks.
61
+ return __classPrivateFieldGet(this, _JavaScriptTransformer_workerPool, "f").run({
62
+ filename,
63
+ skipLinker,
64
+ ...__classPrivateFieldGet(this, _JavaScriptTransformer_commonOptions, "f"),
65
+ });
66
+ }
67
+ /**
68
+ * Performs JavaScript transformations on the provided data of a file. The file does not need
69
+ * to exist on the filesystem.
70
+ * @param filename The full path of the file represented by the data.
71
+ * @param data The data of the file that should be transformed.
72
+ * @param skipLinker If true, bypass all Angular linker processing; if false, attempt linking.
73
+ * @returns A promise that resolves to a UTF-8 encoded Uint8Array containing the result.
74
+ */
75
+ async transformData(filename, data, skipLinker) {
76
+ // Perform a quick test to determine if the data needs any transformations.
77
+ // This allows directly returning the data without the worker communication overhead.
78
+ let forceAsyncTransformation;
79
+ if (skipLinker && !__classPrivateFieldGet(this, _JavaScriptTransformer_commonOptions, "f").advancedOptimizations) {
80
+ // If the linker is being skipped and no optimizations are needed, only async transformation is left.
81
+ // This checks for async generator functions and class methods. All other async transformation is handled by esbuild.
82
+ forceAsyncTransformation = data.includes('async') && /async(?:\s+function)?\s*\*/.test(data);
83
+ if (!forceAsyncTransformation) {
84
+ const keepSourcemap = __classPrivateFieldGet(this, _JavaScriptTransformer_commonOptions, "f").sourcemap &&
85
+ (!!__classPrivateFieldGet(this, _JavaScriptTransformer_commonOptions, "f").thirdPartySourcemaps || !/[\\/]node_modules[\\/]/.test(filename));
86
+ return Buffer.from(keepSourcemap ? data : data.replace(/^\/\/# sourceMappingURL=[^\r\n]*/gm, ''), 'utf-8');
87
+ }
88
+ }
89
+ return __classPrivateFieldGet(this, _JavaScriptTransformer_workerPool, "f").run({
90
+ filename,
91
+ data,
92
+ // Send the async check result if present to avoid rechecking in the worker
93
+ forceAsyncTransformation,
94
+ skipLinker,
95
+ ...__classPrivateFieldGet(this, _JavaScriptTransformer_commonOptions, "f"),
96
+ });
97
+ }
98
+ /**
99
+ * Stops all active transformation tasks and shuts down all workers.
100
+ * @returns A void promise that resolves when closing is complete.
101
+ */
102
+ close() {
103
+ return __classPrivateFieldGet(this, _JavaScriptTransformer_workerPool, "f").destroy();
104
+ }
105
+ }
106
+ exports.JavaScriptTransformer = JavaScriptTransformer;
107
+ _JavaScriptTransformer_workerPool = new WeakMap(), _JavaScriptTransformer_commonOptions = new WeakMap();
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC10cmFuc2Zvcm1lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL3Rvb2xzL2VzYnVpbGQvamF2YXNjcmlwdC10cmFuc2Zvcm1lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCxzREFBOEI7QUFZOUI7Ozs7OztHQU1HO0FBQ0gsTUFBYSxxQkFBcUI7SUFJaEMsWUFBWSxPQUFxQyxFQUFFLFVBQW1CO1FBSHRFLG9EQUFxQjtRQUNyQix1REFBdUQ7UUFHckQsdUJBQUEsSUFBSSxxQ0FBZSxJQUFJLGlCQUFPLENBQUM7WUFDN0IsUUFBUSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsaUNBQWlDLENBQUM7WUFDNUQsVUFBVTtTQUNYLENBQUMsTUFBQSxDQUFDO1FBRUgseUZBQXlGO1FBQ3pGLE1BQU0sRUFDSixTQUFTLEVBQ1Qsb0JBQW9CLEdBQUcsS0FBSyxFQUM1QixxQkFBcUIsR0FBRyxLQUFLLEVBQzdCLEdBQUcsR0FBRyxLQUFLLEdBQ1osR0FBRyxPQUFPLENBQUM7UUFDWix1QkFBQSxJQUFJLHdDQUFrQjtZQUNwQixTQUFTO1lBQ1Qsb0JBQW9CO1lBQ3BCLHFCQUFxQjtZQUNyQixHQUFHO1NBQ0osTUFBQSxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGFBQWEsQ0FBQyxRQUFnQixFQUFFLFVBQW9CO1FBQ2xELDZGQUE2RjtRQUM3RixtR0FBbUc7UUFDbkcsT0FBTyx1QkFBQSxJQUFJLHlDQUFZLENBQUMsR0FBRyxDQUFDO1lBQzFCLFFBQVE7WUFDUixVQUFVO1lBQ1YsR0FBRyx1QkFBQSxJQUFJLDRDQUFlO1NBQ3ZCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFnQixFQUFFLElBQVksRUFBRSxVQUFtQjtRQUNyRSwyRUFBMkU7UUFDM0UscUZBQXFGO1FBQ3JGLElBQUksd0JBQXdCLENBQUM7UUFDN0IsSUFBSSxVQUFVLElBQUksQ0FBQyx1QkFBQSxJQUFJLDRDQUFlLENBQUMscUJBQXFCLEVBQUU7WUFDNUQscUdBQXFHO1lBQ3JHLHFIQUFxSDtZQUNySCx3QkFBd0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLDRCQUE0QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUU3RixJQUFJLENBQUMsd0JBQXdCLEVBQUU7Z0JBQzdCLE1BQU0sYUFBYSxHQUNqQix1QkFBQSxJQUFJLDRDQUFlLENBQUMsU0FBUztvQkFDN0IsQ0FBQyxDQUFDLENBQUMsdUJBQUEsSUFBSSw0Q0FBZSxDQUFDLG9CQUFvQixJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBRTNGLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FDaEIsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsb0NBQW9DLEVBQUUsRUFBRSxDQUFDLEVBQzdFLE9BQU8sQ0FDUixDQUFDO2FBQ0g7U0FDRjtRQUVELE9BQU8sdUJBQUEsSUFBSSx5Q0FBWSxDQUFDLEdBQUcsQ0FBQztZQUMxQixRQUFRO1lBQ1IsSUFBSTtZQUNKLDJFQUEyRTtZQUMzRSx3QkFBd0I7WUFDeEIsVUFBVTtZQUNWLEdBQUcsdUJBQUEsSUFBSSw0Q0FBZTtTQUN2QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSztRQUNILE9BQU8sdUJBQUEsSUFBSSx5Q0FBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3BDLENBQUM7Q0FDRjtBQXhGRCxzREF3RkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IFBpc2NpbmEgZnJvbSAncGlzY2luYSc7XG5cbi8qKlxuICogVHJhbnNmb3JtYXRpb24gb3B0aW9ucyB0aGF0IHNob3VsZCBhcHBseSB0byBhbGwgdHJhbnNmb3JtZWQgZmlsZXMgYW5kIGRhdGEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSmF2YVNjcmlwdFRyYW5zZm9ybWVyT3B0aW9ucyB7XG4gIHNvdXJjZW1hcDogYm9vbGVhbjtcbiAgdGhpcmRQYXJ0eVNvdXJjZW1hcHM/OiBib29sZWFuO1xuICBhZHZhbmNlZE9wdGltaXphdGlvbnM/OiBib29sZWFuO1xuICBqaXQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEEgY2xhc3MgdGhhdCBwZXJmb3JtcyB0cmFuc2Zvcm1hdGlvbiBvZiBKYXZhU2NyaXB0IGZpbGVzIGFuZCByYXcgZGF0YS5cbiAqIEEgd29ya2VyIHBvb2wgaXMgdXNlZCB0byBkaXN0cmlidXRlIHRoZSB0cmFuc2Zvcm1hdGlvbiBhY3Rpb25zIGFuZCBhbGxvd1xuICogcGFyYWxsZWwgcHJvY2Vzc2luZy4gVHJhbnNmb3JtYXRpb24gYmVoYXZpb3IgaXMgYmFzZWQgb24gdGhlIGZpbGVuYW1lIGFuZFxuICogZGF0YS4gVHJhbnNmb3JtYXRpb25zIG1heSBpbmNsdWRlOiBhc3luYyBkb3dubGV2ZWxpbmcsIEFuZ3VsYXIgbGlua2luZyxcbiAqIGFuZCBhZHZhbmNlZCBvcHRpbWl6YXRpb25zLlxuICovXG5leHBvcnQgY2xhc3MgSmF2YVNjcmlwdFRyYW5zZm9ybWVyIHtcbiAgI3dvcmtlclBvb2w6IFBpc2NpbmE7XG4gICNjb21tb25PcHRpb25zOiBSZXF1aXJlZDxKYXZhU2NyaXB0VHJhbnNmb3JtZXJPcHRpb25zPjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBKYXZhU2NyaXB0VHJhbnNmb3JtZXJPcHRpb25zLCBtYXhUaHJlYWRzPzogbnVtYmVyKSB7XG4gICAgdGhpcy4jd29ya2VyUG9vbCA9IG5ldyBQaXNjaW5hKHtcbiAgICAgIGZpbGVuYW1lOiByZXF1aXJlLnJlc29sdmUoJy4vamF2YXNjcmlwdC10cmFuc2Zvcm1lci13b3JrZXInKSxcbiAgICAgIG1heFRocmVhZHMsXG4gICAgfSk7XG5cbiAgICAvLyBFeHRyYWN0IG9wdGlvbnMgdG8gZW5zdXJlIG9ubHkgdGhlIG5hbWVkIG9wdGlvbnMgYXJlIHNlcmlhbGl6ZWQgYW5kIHNlbnQgdG8gdGhlIHdvcmtlclxuICAgIGNvbnN0IHtcbiAgICAgIHNvdXJjZW1hcCxcbiAgICAgIHRoaXJkUGFydHlTb3VyY2VtYXBzID0gZmFsc2UsXG4gICAgICBhZHZhbmNlZE9wdGltaXphdGlvbnMgPSBmYWxzZSxcbiAgICAgIGppdCA9IGZhbHNlLFxuICAgIH0gPSBvcHRpb25zO1xuICAgIHRoaXMuI2NvbW1vbk9wdGlvbnMgPSB7XG4gICAgICBzb3VyY2VtYXAsXG4gICAgICB0aGlyZFBhcnR5U291cmNlbWFwcyxcbiAgICAgIGFkdmFuY2VkT3B0aW1pemF0aW9ucyxcbiAgICAgIGppdCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm1zIEphdmFTY3JpcHQgdHJhbnNmb3JtYXRpb25zIG9uIGEgZmlsZSBmcm9tIHRoZSBmaWxlc3lzdGVtLlxuICAgKiBJZiBubyB0cmFuc2Zvcm1hdGlvbnMgYXJlIHJlcXVpcmVkLCB0aGUgZGF0YSBmb3IgdGhlIG9yaWdpbmFsIGZpbGUgd2lsbCBiZSByZXR1cm5lZC5cbiAgICogQHBhcmFtIGZpbGVuYW1lIFRoZSBmdWxsIHBhdGggdG8gdGhlIGZpbGUuXG4gICAqIEBwYXJhbSBza2lwTGlua2VyIElmIHRydWUsIGJ5cGFzcyBhbGwgQW5ndWxhciBsaW5rZXIgcHJvY2Vzc2luZzsgaWYgZmFsc2UsIGF0dGVtcHQgbGlua2luZy5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBVVEYtOCBlbmNvZGVkIFVpbnQ4QXJyYXkgY29udGFpbmluZyB0aGUgcmVzdWx0LlxuICAgKi9cbiAgdHJhbnNmb3JtRmlsZShmaWxlbmFtZTogc3RyaW5nLCBza2lwTGlua2VyPzogYm9vbGVhbik6IFByb21pc2U8VWludDhBcnJheT4ge1xuICAgIC8vIEFsd2F5cyBzZW5kIHRoZSByZXF1ZXN0IHRvIGEgd29ya2VyLiBGaWxlcyBhcmUgYWxtb3N0IGFsd2F5cyBmcm9tIG5vZGUgbW9kdWxlcyB3aGljaCBtZWFzblxuICAgIC8vIHRoZXkgbWF5IG5lZWQgbGlua2luZy4gVGhlIGRhdGEgaXMgYWxzbyBub3QgeWV0IGF2YWlsYWJsZSB0byBwZXJmb3JtIG1vc3QgdHJhbnNmb3JtYXRpb24gY2hlY2tzLlxuICAgIHJldHVybiB0aGlzLiN3b3JrZXJQb29sLnJ1bih7XG4gICAgICBmaWxlbmFtZSxcbiAgICAgIHNraXBMaW5rZXIsXG4gICAgICAuLi50aGlzLiNjb21tb25PcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm1zIEphdmFTY3JpcHQgdHJhbnNmb3JtYXRpb25zIG9uIHRoZSBwcm92aWRlZCBkYXRhIG9mIGEgZmlsZS4gVGhlIGZpbGUgZG9lcyBub3QgbmVlZFxuICAgKiB0byBleGlzdCBvbiB0aGUgZmlsZXN5c3RlbS5cbiAgICogQHBhcmFtIGZpbGVuYW1lIFRoZSBmdWxsIHBhdGggb2YgdGhlIGZpbGUgcmVwcmVzZW50ZWQgYnkgdGhlIGRhdGEuXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIG9mIHRoZSBmaWxlIHRoYXQgc2hvdWxkIGJlIHRyYW5zZm9ybWVkLlxuICAgKiBAcGFyYW0gc2tpcExpbmtlciBJZiB0cnVlLCBieXBhc3MgYWxsIEFuZ3VsYXIgbGlua2VyIHByb2Nlc3Npbmc7IGlmIGZhbHNlLCBhdHRlbXB0IGxpbmtpbmcuXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgVVRGLTggZW5jb2RlZCBVaW50OEFycmF5IGNvbnRhaW5pbmcgdGhlIHJlc3VsdC5cbiAgICovXG4gIGFzeW5jIHRyYW5zZm9ybURhdGEoZmlsZW5hbWU6IHN0cmluZywgZGF0YTogc3RyaW5nLCBza2lwTGlua2VyOiBib29sZWFuKTogUHJvbWlzZTxVaW50OEFycmF5PiB7XG4gICAgLy8gUGVyZm9ybSBhIHF1aWNrIHRlc3QgdG8gZGV0ZXJtaW5lIGlmIHRoZSBkYXRhIG5lZWRzIGFueSB0cmFuc2Zvcm1hdGlvbnMuXG4gICAgLy8gVGhpcyBhbGxvd3MgZGlyZWN0bHkgcmV0dXJuaW5nIHRoZSBkYXRhIHdpdGhvdXQgdGhlIHdvcmtlciBjb21tdW5pY2F0aW9uIG92ZXJoZWFkLlxuICAgIGxldCBmb3JjZUFzeW5jVHJhbnNmb3JtYXRpb247XG4gICAgaWYgKHNraXBMaW5rZXIgJiYgIXRoaXMuI2NvbW1vbk9wdGlvbnMuYWR2YW5jZWRPcHRpbWl6YXRpb25zKSB7XG4gICAgICAvLyBJZiB0aGUgbGlua2VyIGlzIGJlaW5nIHNraXBwZWQgYW5kIG5vIG9wdGltaXphdGlvbnMgYXJlIG5lZWRlZCwgb25seSBhc3luYyB0cmFuc2Zvcm1hdGlvbiBpcyBsZWZ0LlxuICAgICAgLy8gVGhpcyBjaGVja3MgZm9yIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbnMgYW5kIGNsYXNzIG1ldGhvZHMuIEFsbCBvdGhlciBhc3luYyB0cmFuc2Zvcm1hdGlvbiBpcyBoYW5kbGVkIGJ5IGVzYnVpbGQuXG4gICAgICBmb3JjZUFzeW5jVHJhbnNmb3JtYXRpb24gPSBkYXRhLmluY2x1ZGVzKCdhc3luYycpICYmIC9hc3luYyg/OlxccytmdW5jdGlvbik/XFxzKlxcKi8udGVzdChkYXRhKTtcblxuICAgICAgaWYgKCFmb3JjZUFzeW5jVHJhbnNmb3JtYXRpb24pIHtcbiAgICAgICAgY29uc3Qga2VlcFNvdXJjZW1hcCA9XG4gICAgICAgICAgdGhpcy4jY29tbW9uT3B0aW9ucy5zb3VyY2VtYXAgJiZcbiAgICAgICAgICAoISF0aGlzLiNjb21tb25PcHRpb25zLnRoaXJkUGFydHlTb3VyY2VtYXBzIHx8ICEvW1xcXFwvXW5vZGVfbW9kdWxlc1tcXFxcL10vLnRlc3QoZmlsZW5hbWUpKTtcblxuICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20oXG4gICAgICAgICAga2VlcFNvdXJjZW1hcCA/IGRhdGEgOiBkYXRhLnJlcGxhY2UoL15cXC9cXC8jIHNvdXJjZU1hcHBpbmdVUkw9W15cXHJcXG5dKi9nbSwgJycpLFxuICAgICAgICAgICd1dGYtOCcsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuI3dvcmtlclBvb2wucnVuKHtcbiAgICAgIGZpbGVuYW1lLFxuICAgICAgZGF0YSxcbiAgICAgIC8vIFNlbmQgdGhlIGFzeW5jIGNoZWNrIHJlc3VsdCBpZiBwcmVzZW50IHRvIGF2b2lkIHJlY2hlY2tpbmcgaW4gdGhlIHdvcmtlclxuICAgICAgZm9yY2VBc3luY1RyYW5zZm9ybWF0aW9uLFxuICAgICAgc2tpcExpbmtlcixcbiAgICAgIC4uLnRoaXMuI2NvbW1vbk9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcHMgYWxsIGFjdGl2ZSB0cmFuc2Zvcm1hdGlvbiB0YXNrcyBhbmQgc2h1dHMgZG93biBhbGwgd29ya2Vycy5cbiAgICogQHJldHVybnMgQSB2b2lkIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGNsb3NpbmcgaXMgY29tcGxldGUuXG4gICAqL1xuICBjbG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy4jd29ya2VyUG9vbC5kZXN0cm95KCk7XG4gIH1cbn1cbiJdfQ==