@depup/angular__build 22.1.8-depup.5 → 22.2.0-depup.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 (306) hide show
  1. package/README.md +9 -14
  2. package/builders.json +1 -1
  3. package/changes.json +12 -32
  4. package/package.json +29 -48
  5. package/src/builders/application/build-action.js +63 -92
  6. package/src/builders/application/build-action.js.map +1 -1
  7. package/src/builders/application/chunk-optimizer.d.ts +2 -2
  8. package/src/builders/application/chunk-optimizer.js +5 -5
  9. package/src/builders/application/chunk-optimizer.js.map +1 -1
  10. package/src/builders/application/execute-build.js +26 -19
  11. package/src/builders/application/execute-build.js.map +1 -1
  12. package/src/builders/application/execute-post-bundle.d.ts +2 -2
  13. package/src/builders/application/execute-post-bundle.js +5 -5
  14. package/src/builders/application/execute-post-bundle.js.map +1 -1
  15. package/src/builders/application/i18n.d.ts +3 -1
  16. package/src/builders/application/i18n.js +48 -13
  17. package/src/builders/application/i18n.js.map +1 -1
  18. package/src/{tools/esbuild → builders/application}/index-html-generator.d.ts +2 -2
  19. package/src/{tools/esbuild → builders/application}/index-html-generator.js +2 -2
  20. package/src/builders/application/index-html-generator.js.map +1 -0
  21. package/src/builders/application/index.js +2 -2
  22. package/src/builders/application/index.js.map +1 -1
  23. package/src/builders/application/options.d.ts +5 -0
  24. package/src/builders/application/options.js +8 -26
  25. package/src/builders/application/options.js.map +1 -1
  26. package/src/builders/application/results.d.ts +3 -2
  27. package/src/builders/application/schema.d.ts +2 -1
  28. package/src/builders/application/schema.js.map +1 -1
  29. package/src/builders/application/schema.json +1 -2
  30. package/src/builders/application/setup-bundling.js +3 -1
  31. package/src/builders/application/setup-bundling.js.map +1 -1
  32. package/src/builders/dev-server/internal.d.ts +1 -1
  33. package/src/builders/dev-server/internal.js +1 -1
  34. package/src/builders/dev-server/internal.js.map +1 -1
  35. package/src/builders/dev-server/vite/index.js +5 -8
  36. package/src/builders/dev-server/vite/index.js.map +1 -1
  37. package/src/builders/dev-server/vite/server.js +2 -0
  38. package/src/builders/dev-server/vite/server.js.map +1 -1
  39. package/src/builders/dev-server/vite/utils.d.ts +1 -1
  40. package/src/builders/dev-server/vite/utils.js +9 -4
  41. package/src/builders/dev-server/vite/utils.js.map +1 -1
  42. package/src/builders/extract-i18n/application-extraction.js +6 -5
  43. package/src/builders/extract-i18n/application-extraction.js.map +1 -1
  44. package/src/builders/karma/application_builder.js +1 -1
  45. package/src/builders/karma/application_builder.js.map +1 -1
  46. package/src/builders/karma/assets-middleware.d.ts +2 -2
  47. package/src/builders/karma/assets-middleware.js +5 -2
  48. package/src/builders/karma/assets-middleware.js.map +1 -1
  49. package/src/builders/karma/progress-reporter.js +7 -5
  50. package/src/builders/karma/progress-reporter.js.map +1 -1
  51. package/src/builders/karma/utils.d.ts +2 -1
  52. package/src/builders/karma/utils.js +2 -2
  53. package/src/builders/karma/utils.js.map +1 -1
  54. package/src/builders/unit-test/builder.js +1 -1
  55. package/src/builders/unit-test/runners/vitest/build-options.js +9 -3
  56. package/src/builders/unit-test/runners/vitest/build-options.js.map +1 -1
  57. package/src/builders/unit-test/runners/vitest/executor.js +5 -4
  58. package/src/builders/unit-test/runners/vitest/executor.js.map +1 -1
  59. package/src/builders/unit-test/runners/vitest/plugins.d.ts +4 -4
  60. package/src/builders/unit-test/runners/vitest/plugins.js +9 -2
  61. package/src/builders/unit-test/runners/vitest/plugins.js.map +1 -1
  62. package/src/builders/unit-test/schema.d.ts +3 -2
  63. package/src/builders/unit-test/schema.js.map +1 -1
  64. package/src/builders/unit-test/schema.json +3 -2
  65. package/src/builders/unit-test/test-discovery.js +3 -2
  66. package/src/builders/unit-test/test-discovery.js.map +1 -1
  67. package/src/private.d.ts +3 -5
  68. package/src/private.js +6 -9
  69. package/src/private.js.map +1 -1
  70. package/src/tools/angular/angular-host.d.ts +1 -2
  71. package/src/tools/angular/angular-host.js +6 -6
  72. package/src/tools/angular/angular-host.js.map +1 -1
  73. package/src/tools/angular/compilation/angular-compilation.d.ts +24 -16
  74. package/src/tools/angular/compilation/angular-compilation.js +4 -80
  75. package/src/tools/angular/compilation/angular-compilation.js.map +1 -1
  76. package/src/tools/angular/compilation/aot-compilation.d.ts +6 -12
  77. package/src/tools/angular/compilation/aot-compilation.js +23 -20
  78. package/src/tools/angular/compilation/aot-compilation.js.map +1 -1
  79. package/src/tools/angular/compilation/compiler-options.d.ts +25 -0
  80. package/src/tools/angular/compilation/compiler-options.js +135 -0
  81. package/src/tools/angular/compilation/compiler-options.js.map +1 -0
  82. package/src/tools/angular/compilation/factory.d.ts +5 -3
  83. package/src/tools/angular/compilation/factory.js +10 -5
  84. package/src/tools/angular/compilation/factory.js.map +1 -1
  85. package/src/tools/angular/compilation/index.d.ts +3 -3
  86. package/src/tools/angular/compilation/index.js +1 -3
  87. package/src/tools/angular/compilation/index.js.map +1 -1
  88. package/src/tools/angular/compilation/jit-compilation.d.ts +6 -9
  89. package/src/tools/angular/compilation/jit-compilation.js +10 -16
  90. package/src/tools/angular/compilation/jit-compilation.js.map +1 -1
  91. package/src/tools/angular/compilation/parallel-compilation.d.ts +3 -14
  92. package/src/tools/angular/compilation/parallel-compilation.js +40 -42
  93. package/src/tools/angular/compilation/parallel-compilation.js.map +1 -1
  94. package/src/tools/angular/compilation/parallel-worker.d.ts +5 -17
  95. package/src/tools/angular/compilation/parallel-worker.js +89 -68
  96. package/src/tools/angular/compilation/parallel-worker.js.map +1 -1
  97. package/src/tools/angular/compilation/typescript-compilation.d.ts +31 -0
  98. package/src/tools/angular/compilation/typescript-compilation.js +125 -0
  99. package/src/tools/angular/compilation/typescript-compilation.js.map +1 -0
  100. package/src/tools/angular/linker/oxc-ast-host.d.ts +33 -0
  101. package/src/tools/angular/linker/oxc-ast-host.js +234 -0
  102. package/src/tools/angular/linker/oxc-ast-host.js.map +1 -0
  103. package/src/tools/angular/linker/oxc-linker.d.ts +22 -0
  104. package/src/tools/angular/linker/oxc-linker.js +75 -0
  105. package/src/tools/angular/linker/oxc-linker.js.map +1 -0
  106. package/src/tools/angular/linker/string-ast-factory.d.ts +86 -0
  107. package/src/tools/angular/linker/string-ast-factory.js +234 -0
  108. package/src/tools/angular/linker/string-ast-factory.js.map +1 -0
  109. package/src/tools/esbuild/angular/compilation-state.d.ts +23 -3
  110. package/src/tools/esbuild/angular/compilation-state.js +51 -13
  111. package/src/tools/esbuild/angular/compilation-state.js.map +1 -1
  112. package/src/tools/esbuild/angular/compiler-plugin.d.ts +1 -0
  113. package/src/tools/esbuild/angular/compiler-plugin.js +126 -139
  114. package/src/tools/esbuild/angular/compiler-plugin.js.map +1 -1
  115. package/src/tools/esbuild/angular/component-stylesheets.d.ts +3 -3
  116. package/src/tools/esbuild/angular/component-stylesheets.js +52 -22
  117. package/src/tools/esbuild/angular/component-stylesheets.js.map +1 -1
  118. package/src/tools/esbuild/angular/source-file-cache.d.ts +1 -2
  119. package/src/tools/esbuild/angular/source-file-cache.js +1 -11
  120. package/src/tools/esbuild/angular/source-file-cache.js.map +1 -1
  121. package/src/tools/esbuild/application-code-bundle.js +7 -14
  122. package/src/tools/esbuild/application-code-bundle.js.map +1 -1
  123. package/src/tools/esbuild/budget-stats.js +3 -3
  124. package/src/tools/esbuild/budget-stats.js.map +1 -1
  125. package/src/tools/esbuild/bundler-context.d.ts +23 -7
  126. package/src/tools/esbuild/bundler-context.js +112 -43
  127. package/src/tools/esbuild/bundler-context.js.map +1 -1
  128. package/src/tools/esbuild/bundler-execution-result.d.ts +2 -1
  129. package/src/tools/esbuild/bundler-execution-result.js +2 -2
  130. package/src/tools/esbuild/bundler-execution-result.js.map +1 -1
  131. package/src/tools/esbuild/bundler-files.js +3 -5
  132. package/src/tools/esbuild/bundler-files.js.map +1 -1
  133. package/src/tools/esbuild/compiler-plugin-options.js +2 -1
  134. package/src/tools/esbuild/compiler-plugin-options.js.map +1 -1
  135. package/src/tools/esbuild/i18n-locale-plugin.d.ts +1 -8
  136. package/src/tools/esbuild/i18n-locale-plugin.js +33 -114
  137. package/src/tools/esbuild/i18n-locale-plugin.js.map +1 -1
  138. package/src/tools/esbuild/license-extractor.d.ts +1 -1
  139. package/src/tools/esbuild/license-extractor.js +89 -86
  140. package/src/tools/esbuild/license-extractor.js.map +1 -1
  141. package/src/tools/esbuild/load-result-cache.d.ts +2 -1
  142. package/src/tools/esbuild/load-result-cache.js +28 -13
  143. package/src/tools/esbuild/load-result-cache.js.map +1 -1
  144. package/src/tools/esbuild/persistent-load-result-cache.d.ts +87 -0
  145. package/src/tools/esbuild/persistent-load-result-cache.js +229 -0
  146. package/src/tools/esbuild/persistent-load-result-cache.js.map +1 -0
  147. package/src/tools/esbuild/stylesheets/bundle-options.d.ts +1 -0
  148. package/src/tools/esbuild/stylesheets/bundle-options.js +1 -1
  149. package/src/tools/esbuild/stylesheets/bundle-options.js.map +1 -1
  150. package/src/tools/esbuild/stylesheets/css-resource-plugin.d.ts +3 -1
  151. package/src/tools/esbuild/stylesheets/css-resource-plugin.js +4 -2
  152. package/src/tools/esbuild/stylesheets/css-resource-plugin.js.map +1 -1
  153. package/src/tools/esbuild/stylesheets/sass-language.d.ts +9 -0
  154. package/src/tools/esbuild/stylesheets/sass-language.js +109 -50
  155. package/src/tools/esbuild/stylesheets/sass-language.js.map +1 -1
  156. package/src/tools/esbuild/stylesheets/stylesheet-cache-key.d.ts +35 -0
  157. package/src/tools/esbuild/stylesheets/stylesheet-cache-key.js +64 -0
  158. package/src/tools/esbuild/stylesheets/stylesheet-cache-key.js.map +1 -0
  159. package/src/tools/esbuild/stylesheets/stylesheet-plugin-factory.d.ts +1 -1
  160. package/src/tools/esbuild/utils.d.ts +3 -3
  161. package/src/tools/esbuild/utils.js +9 -6
  162. package/src/tools/esbuild/utils.js.map +1 -1
  163. package/src/tools/i18n/i18n-inliner-worker.d.ts +126 -0
  164. package/src/tools/i18n/i18n-inliner-worker.js +363 -0
  165. package/src/tools/i18n/i18n-inliner-worker.js.map +1 -0
  166. package/src/tools/i18n/i18n-inliner.d.ts +97 -0
  167. package/src/tools/i18n/i18n-inliner.js +500 -0
  168. package/src/tools/i18n/i18n-inliner.js.map +1 -0
  169. package/src/tools/i18n/i18n-translation-encoder.d.ts +21 -0
  170. package/src/tools/i18n/i18n-translation-encoder.js +92 -0
  171. package/src/tools/i18n/i18n-translation-encoder.js.map +1 -0
  172. package/src/tools/i18n/i18n-translation-reader.d.ts +41 -0
  173. package/src/tools/i18n/i18n-translation-reader.js +164 -0
  174. package/src/tools/i18n/i18n-translation-reader.js.map +1 -0
  175. package/src/tools/i18n/index.d.ts +11 -0
  176. package/src/tools/i18n/index.js +28 -0
  177. package/src/tools/i18n/index.js.map +1 -0
  178. package/src/tools/i18n/locale-data.d.ts +47 -0
  179. package/src/tools/i18n/locale-data.js +108 -0
  180. package/src/tools/i18n/locale-data.js.map +1 -0
  181. package/src/tools/javascript-transformer/index.d.ts +8 -0
  182. package/src/tools/javascript-transformer/index.js +25 -0
  183. package/src/tools/javascript-transformer/index.js.map +1 -0
  184. package/src/tools/{esbuild → javascript-transformer}/javascript-transformer-worker.d.ts +0 -4
  185. package/src/tools/javascript-transformer/javascript-transformer-worker.js +231 -0
  186. package/src/tools/javascript-transformer/javascript-transformer-worker.js.map +1 -0
  187. package/src/tools/{esbuild → javascript-transformer}/javascript-transformer.d.ts +26 -9
  188. package/src/tools/javascript-transformer/javascript-transformer.js +294 -0
  189. package/src/tools/javascript-transformer/javascript-transformer.js.map +1 -0
  190. package/src/tools/{babel/plugins → oxc}/oxc-transform.d.ts +5 -2
  191. package/src/tools/{babel/plugins → oxc}/oxc-transform.js +105 -138
  192. package/src/tools/oxc/oxc-transform.js.map +1 -0
  193. package/src/tools/oxc/traversal.d.ts +32 -0
  194. package/src/tools/oxc/traversal.js +299 -0
  195. package/src/tools/oxc/traversal.js.map +1 -0
  196. package/src/tools/oxc/types.d.ts +20 -0
  197. package/src/tools/sass/rebasing-importer.d.ts +12 -18
  198. package/src/tools/sass/rebasing-importer.js +23 -26
  199. package/src/tools/sass/rebasing-importer.js.map +1 -1
  200. package/src/tools/sass/sass-service.d.ts +15 -38
  201. package/src/tools/sass/sass-service.js +132 -187
  202. package/src/tools/sass/sass-service.js.map +1 -1
  203. package/src/tools/vite/middlewares/assets-middleware.js +3 -3
  204. package/src/tools/vite/middlewares/assets-middleware.js.map +1 -1
  205. package/src/tools/vite/utils.d.ts +1 -1
  206. package/src/{tools/esbuild → utils/cache}/cache.d.ts +25 -8
  207. package/src/{tools/esbuild → utils/cache}/cache.js +72 -41
  208. package/src/utils/cache/cache.js.map +1 -0
  209. package/src/utils/cache/index.d.ts +8 -0
  210. package/src/utils/cache/index.js +25 -0
  211. package/src/utils/cache/index.js.map +1 -0
  212. package/src/{tools/esbuild → utils/cache}/lmdb-cache-store.js +1 -1
  213. package/src/{tools/esbuild → utils/cache}/lmdb-cache-store.js.map +1 -1
  214. package/src/{tools/esbuild → utils/cache}/sqlite-cache-store.d.ts +1 -1
  215. package/src/utils/cache/sqlite-cache-store.js +339 -0
  216. package/src/utils/cache/sqlite-cache-store.js.map +1 -0
  217. package/src/utils/concurrency.d.ts +30 -0
  218. package/src/utils/concurrency.js +81 -0
  219. package/src/utils/concurrency.js.map +1 -0
  220. package/src/utils/environment-options.d.ts +34 -0
  221. package/src/utils/environment-options.js +42 -12
  222. package/src/utils/environment-options.js.map +1 -1
  223. package/src/utils/hash.d.ts +24 -0
  224. package/src/utils/hash.js +94 -0
  225. package/src/utils/hash.js.map +1 -0
  226. package/src/utils/i18n-options.d.ts +3 -1
  227. package/src/utils/i18n-options.js.map +1 -1
  228. package/src/utils/index-file/auto-csp.d.ts +8 -0
  229. package/src/utils/index-file/auto-csp.js +30 -3
  230. package/src/utils/index-file/auto-csp.js.map +1 -1
  231. package/src/utils/index-file/index-html-generator.d.ts +1 -1
  232. package/src/utils/index-file/index-html-generator.js +9 -13
  233. package/src/utils/index-file/index-html-generator.js.map +1 -1
  234. package/src/utils/index-file/inline-critical-css.d.ts +16 -18
  235. package/src/utils/index-file/inline-critical-css.js +78 -179
  236. package/src/utils/index-file/inline-critical-css.js.map +1 -1
  237. package/src/utils/index-file/nonce.d.ts +2 -0
  238. package/src/utils/index-file/nonce.js +1 -0
  239. package/src/utils/index-file/nonce.js.map +1 -1
  240. package/src/utils/normalize-cache.js +1 -1
  241. package/src/utils/postcss-configuration.d.ts +6 -0
  242. package/src/utils/postcss-configuration.js +23 -0
  243. package/src/utils/postcss-configuration.js.map +1 -1
  244. package/src/{tools/esbuild → utils}/profiling.js +1 -1
  245. package/src/{tools/esbuild → utils}/profiling.js.map +1 -1
  246. package/src/utils/server-rendering/manifest.d.ts +2 -2
  247. package/src/utils/server-rendering/manifest.js +53 -4
  248. package/src/utils/server-rendering/manifest.js.map +1 -1
  249. package/src/utils/source-map.d.ts +26 -2
  250. package/src/utils/source-map.js +151 -53
  251. package/src/utils/source-map.js.map +1 -1
  252. package/src/utils/test-files.d.ts +2 -2
  253. package/src/utils/test-files.js +3 -3
  254. package/src/utils/test-files.js.map +1 -1
  255. package/src/utils/watcher.d.ts +61 -0
  256. package/src/utils/watcher.js +642 -0
  257. package/src/utils/watcher.js.map +1 -0
  258. package/src/tools/angular/compilation/noop-compilation.d.ts +0 -20
  259. package/src/tools/angular/compilation/noop-compilation.js +0 -27
  260. package/src/tools/angular/compilation/noop-compilation.js.map +0 -1
  261. package/src/tools/babel/plugins/add-code-coverage.d.ts +0 -14
  262. package/src/tools/babel/plugins/add-code-coverage.js +0 -44
  263. package/src/tools/babel/plugins/add-code-coverage.js.map +0 -1
  264. package/src/tools/babel/plugins/adjust-static-class-members.d.ts +0 -25
  265. package/src/tools/babel/plugins/adjust-static-class-members.js +0 -349
  266. package/src/tools/babel/plugins/adjust-static-class-members.js.map +0 -1
  267. package/src/tools/babel/plugins/adjust-typescript-enums.d.ts +0 -21
  268. package/src/tools/babel/plugins/adjust-typescript-enums.js +0 -113
  269. package/src/tools/babel/plugins/adjust-typescript-enums.js.map +0 -1
  270. package/src/tools/babel/plugins/elide-angular-metadata.d.ts +0 -23
  271. package/src/tools/babel/plugins/elide-angular-metadata.js +0 -110
  272. package/src/tools/babel/plugins/elide-angular-metadata.js.map +0 -1
  273. package/src/tools/babel/plugins/index.d.ts +0 -11
  274. package/src/tools/babel/plugins/index.js +0 -22
  275. package/src/tools/babel/plugins/index.js.map +0 -1
  276. package/src/tools/babel/plugins/oxc-transform.js.map +0 -1
  277. package/src/tools/babel/plugins/pure-toplevel-functions.d.ts +0 -13
  278. package/src/tools/babel/plugins/pure-toplevel-functions.js +0 -128
  279. package/src/tools/babel/plugins/pure-toplevel-functions.js.map +0 -1
  280. package/src/tools/babel/plugins/types.d.ts +0 -20
  281. package/src/tools/babel/typings.d.ts +0 -21
  282. package/src/tools/esbuild/cache.js.map +0 -1
  283. package/src/tools/esbuild/i18n-inliner-worker.d.ts +0 -81
  284. package/src/tools/esbuild/i18n-inliner-worker.js +0 -255
  285. package/src/tools/esbuild/i18n-inliner-worker.js.map +0 -1
  286. package/src/tools/esbuild/i18n-inliner.d.ts +0 -58
  287. package/src/tools/esbuild/i18n-inliner.js +0 -265
  288. package/src/tools/esbuild/i18n-inliner.js.map +0 -1
  289. package/src/tools/esbuild/index-html-generator.js.map +0 -1
  290. package/src/tools/esbuild/javascript-transformer-worker.js +0 -192
  291. package/src/tools/esbuild/javascript-transformer-worker.js.map +0 -1
  292. package/src/tools/esbuild/javascript-transformer.js +0 -197
  293. package/src/tools/esbuild/javascript-transformer.js.map +0 -1
  294. package/src/tools/esbuild/sqlite-cache-store.js +0 -165
  295. package/src/tools/esbuild/sqlite-cache-store.js.map +0 -1
  296. package/src/tools/esbuild/watcher.d.ts +0 -25
  297. package/src/tools/esbuild/watcher.js +0 -119
  298. package/src/tools/esbuild/watcher.js.map +0 -1
  299. package/src/tools/sass/worker.d.ts +0 -63
  300. package/src/tools/sass/worker.js +0 -202
  301. package/src/tools/sass/worker.js.map +0 -1
  302. /package/src/tools/{esbuild/angular → angular/compilation}/diagnostics.d.ts +0 -0
  303. /package/src/tools/{esbuild/angular → angular/compilation}/diagnostics.js +0 -0
  304. /package/src/tools/{esbuild/angular → angular/compilation}/diagnostics.js.map +0 -0
  305. /package/src/{tools/esbuild → utils/cache}/lmdb-cache-store.d.ts +0 -0
  306. /package/src/{tools/esbuild → utils}/profiling.d.ts +0 -0
@@ -0,0 +1,64 @@
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.dev/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.calculateGlobalStylesheetConfigHash = calculateGlobalStylesheetConfigHash;
11
+ const hash_1 = require("../../../utils/hash");
12
+ /**
13
+ * Generates a global hash based on all build options that affect stylesheet compilation.
14
+ *
15
+ * IMPORTANT: This hash acts as the root cache key prefix for all persistent stylesheet cache
16
+ * entries. Any change in the values hashed below will invalidate all cached stylesheet outputs
17
+ * across the entire application.
18
+ *
19
+ * Included build options and their rationale:
20
+ * - `optimization`: Affects CSS minification, dead code elimination, and whitespace stripping.
21
+ * - `sourcemap`: Toggles inline/external source map generation and comment insertion.
22
+ * - `sourcesContent`: Toggles embedding original source content inside generated source maps.
23
+ * - `includePaths`: Changes Sass/Less `@import` and `@use` path resolution search directories.
24
+ * - `sassOptions`: Changes Sass compiler deprecations and behavior flags.
25
+ * - `target`: Affects CSS property lowering and browser vendor prefixing in esbuild.
26
+ * - `publicPath`: Affects relative asset URL rewriting (`url('...')`) inside CSS output.
27
+ * - `outputNames`: Affects asset output filename hashing schemes.
28
+ * - `inlineFonts`: Controls whether external web font `@import` / `<link>` directives are inlined.
29
+ * - `preserveSymlinks`: Controls symlink realpath resolution in monorepos/pnpm workspace packages.
30
+ * - `externalDependencies`: Controls which CSS modules/urls are excluded from bundling.
31
+ * - `postcssConfig`: Path to custom PostCSS configuration file.
32
+ * - `tailwindConfig`: Path to Tailwind CSS configuration file.
33
+ * - `packageVersion`: Invalidates cache across `@angular/build` compiler toolchain updates.
34
+ *
35
+ * @note Maintainers: If any new build option is added to `BundleStylesheetOptions` or `@angular/build`
36
+ * that alters generated stylesheet code or asset outputs, it MUST be added to this hash object.
37
+ */
38
+ function calculateGlobalStylesheetConfigHash(options, packageVersion = '') {
39
+ return (0, hash_1.calculateHash)(JSON.stringify({
40
+ optimization: options.optimization,
41
+ sourcemap: options.sourcemap,
42
+ sourcesContent: options.sourcesContent,
43
+ includePaths: options.includePaths,
44
+ sassOptions: options.sass
45
+ ? {
46
+ futureDeprecations: options.sass.futureDeprecations,
47
+ fatalDeprecations: options.sass.fatalDeprecations,
48
+ silenceDeprecations: options.sass.silenceDeprecations,
49
+ }
50
+ : undefined,
51
+ target: options.target,
52
+ publicPath: options.publicPath,
53
+ outputNames: options.outputNames,
54
+ inlineFonts: options.inlineFonts,
55
+ preserveSymlinks: options.preserveSymlinks,
56
+ externalDependencies: options.externalDependencies,
57
+ postcssConfig: options.postcssConfiguration?.configPath
58
+ ? options.postcssConfiguration.configPath
59
+ : '',
60
+ tailwindConfig: options.tailwindConfiguration?.file ? options.tailwindConfiguration.file : '',
61
+ packageVersion,
62
+ }));
63
+ }
64
+ //# sourceMappingURL=stylesheet-cache-key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stylesheet-cache-key.js","sourceRoot":"","sources":["stylesheet-cache-key.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AA+BH,kFA8BC;AA3DD,8CAAoD;AAGpD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,SAAgB,mCAAmC,CACjD,OAAgC,EAChC,iBAAyB,EAAE;IAE3B,OAAO,IAAA,oBAAa,EAClB,IAAI,CAAC,SAAS,CAAC;QACb,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,WAAW,EAAE,OAAO,CAAC,IAAI;YACvB,CAAC,CAAC;gBACE,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB;gBACnD,iBAAiB,EAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB;gBACjD,mBAAmB,EAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB;aACtD;YACH,CAAC,CAAC,SAAS;QACb,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;QAClD,aAAa,EAAE,OAAO,CAAC,oBAAoB,EAAE,UAAU;YACrD,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,UAAU;YACzC,CAAC,CAAC,EAAE;QACN,cAAc,EAAE,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;QAC7F,cAAc;KACf,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -6,7 +6,7 @@
6
6
  * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  import type { OnLoadResult, Plugin, PluginBuild } from 'esbuild';
9
- import type { Options } from 'sass';
9
+ import type { Options } from 'sass-embedded';
10
10
  import type { PostcssConfiguration } from '../../../utils/postcss-configuration';
11
11
  import { LoadResultCache } from '../load-result-cache';
12
12
  /**
@@ -11,8 +11,8 @@ import { NormalizedApplicationBuildOptions } from '../../builders/application/op
11
11
  import { BudgetCalculatorResult } from '../../utils/bundle-calculator';
12
12
  import { BuildOutputAsset, ExecutionResult } from './bundler-execution-result';
13
13
  import { type BuildOutputFile, type InitialFileRecord } from './bundler-files';
14
- export declare function logBuildStats(metafile: Metafile, outputFiles: BuildOutputFile[], initial: Map<string, InitialFileRecord>, budgetFailures: BudgetCalculatorResult[] | undefined, colors: boolean, changedFiles?: Set<string>, estimatedTransferSizes?: Map<string, number>, ssrOutputEnabled?: boolean, verbose?: boolean): string;
15
- export declare function getChunkNameFromMetafile(metafile: Metafile, file: string): string | undefined;
14
+ export declare function logBuildStats(metafiles: Metafile[], outputFiles: BuildOutputFile[], initial: Map<string, InitialFileRecord>, budgetFailures: BudgetCalculatorResult[] | undefined, colors: boolean, changedFiles?: Set<string>, estimatedTransferSizes?: Map<string, number>, ssrOutputEnabled?: boolean, verbose?: boolean): string;
15
+ export declare function getChunkNameFromMetafile(metafiles: Metafile[] | Metafile, file: string): string | undefined;
16
16
  export declare function calculateEstimatedTransferSizes(outputFiles: OutputFile[]): Promise<Map<string, number>>;
17
17
  export declare function withSpinner<T>(text: string, action: () => T | Promise<T>): Promise<T>;
18
18
  export declare function withNoProgress<T>(text: string, action: () => T | Promise<T>): Promise<T>;
@@ -23,7 +23,7 @@ export declare function withNoProgress<T>(text: string, action: () => T | Promis
23
23
  * @returns An object that can be used with the esbuild build `supported` option.
24
24
  */
25
25
  export declare function getFeatureSupport(nativeAsyncAwait: boolean): BuildOptions['supported'];
26
- export declare function emitFilesToDisk<T = BuildOutputAsset | BuildOutputFile>(files: T[], writeFileCallback: (file: T) => Promise<void>): Promise<void>;
26
+ export declare function emitFilesToDisk<T = BuildOutputAsset | BuildOutputFile>(files: readonly T[], writeFileCallback: (file: T) => Promise<void>): Promise<void>;
27
27
  export declare function createJsonBuildManifest(result: ExecutionResult, normalizedOptions: NormalizedApplicationBuildOptions): Promise<string>;
28
28
  export declare function logMessages(logger: BuilderContext['logger'], executionResult: ExecutionResult, color?: boolean, jsonLogs?: boolean): Promise<void>;
29
29
  /**
@@ -26,7 +26,7 @@ const node_zlib_1 = require("node:zlib");
26
26
  const schema_1 = require("../../builders/application/schema");
27
27
  const stats_table_1 = require("../../utils/stats-table");
28
28
  const bundler_files_1 = require("./bundler-files");
29
- function logBuildStats(metafile, outputFiles, initial, budgetFailures, colors, changedFiles, estimatedTransferSizes, ssrOutputEnabled, verbose) {
29
+ function logBuildStats(metafiles, outputFiles, initial, budgetFailures, colors, changedFiles, estimatedTransferSizes, ssrOutputEnabled, verbose) {
30
30
  // Remove the i18n subpath in case the build is using i18n.
31
31
  // en-US/main.js -> main.js
32
32
  const normalizedChangedFiles = new Set([...(changedFiles ?? [])].map((f) => (0, node_path_1.basename)(f)));
@@ -50,11 +50,11 @@ function logBuildStats(metafile, outputFiles, initial, budgetFailures, colors, c
50
50
  continue;
51
51
  }
52
52
  // Skip logging external component stylesheets used for HMR
53
- if (metafile.outputs[file] && 'ng-component' in metafile.outputs[file]) {
53
+ if (metafiles.some((mf) => mf.outputs[file] && 'ng-component' in mf.outputs[file])) {
54
54
  componentStyleChange = true;
55
55
  continue;
56
56
  }
57
- const name = initial.get(file)?.name ?? getChunkNameFromMetafile(metafile, file);
57
+ const name = initial.get(file)?.name ?? getChunkNameFromMetafile(metafiles, file);
58
58
  const stat = {
59
59
  initial: initial.has(file),
60
60
  stats: [file, name ?? '-', size, estimatedTransferSizes?.get(file) ?? '-'],
@@ -83,9 +83,12 @@ function logBuildStats(metafile, outputFiles, initial, budgetFailures, colors, c
83
83
  }
84
84
  return '';
85
85
  }
86
- function getChunkNameFromMetafile(metafile, file) {
87
- if (metafile.outputs[file]?.entryPoint) {
88
- return getEntryPointName(metafile.outputs[file].entryPoint);
86
+ function getChunkNameFromMetafile(metafiles, file) {
87
+ const metafileArray = Array.isArray(metafiles) ? metafiles : [metafiles];
88
+ for (const metafile of metafileArray) {
89
+ if (metafile.outputs[file]?.entryPoint) {
90
+ return getEntryPointName(metafile.outputs[file].entryPoint);
91
+ }
89
92
  }
90
93
  }
91
94
  async function calculateEstimatedTransferSizes(outputFiles) {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["utils.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAoBH,sCAkFC;AAED,4DAIC;AAED,0EA6CC;AAED,kCAiBC;AAED,wCAEC;AAQD,8CAcC;AAGD,0CAeC;AAaD,0DA4BC;AAED,kCAuBC;AAQD,sCAGC;AAED,8CAKC;AA3SD,qCAA6E;AAC7E,mCAA+B;AAC/B,yCAA2C;AAC3C,uCAAyC;AACzC,yCAA2C;AAE3C,8DAA+D;AAG/D,yDAAsF;AAMtF,mDAAoG;AAEpG,SAAgB,aAAa,CAC3B,QAAkB,EAClB,WAA8B,EAC9B,OAAuC,EACvC,cAAoD,EACpD,MAAe,EACf,YAA0B,EAC1B,sBAA4C,EAC5C,gBAA0B,EAC1B,OAAiB;IAEjB,2DAA2D;IAC3D,2BAA2B;IAC3B,MAAM,sBAAsB,GAAgB,IAAI,GAAG,CACjD,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,oBAAQ,EAAC,CAAC,CAAC,CAAC,CAClD,CAAC;IACF,MAAM,YAAY,GAAkB,EAAE,CAAC;IACvC,MAAM,WAAW,GAAkB,EAAE,CAAC;IACtC,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,oBAAoB,GAAG,KAAK,CAAC;IAEjC,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,WAAW,EAAE,CAAC;QACrD,wCAAwC;QACxC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,SAAS;QACX,CAAC;QAED,wDAAwD;QACxD,IAAI,sBAAsB,CAAC,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACrE,EAAE,cAAc,CAAC;YACjB,SAAS;QACX,CAAC;QAED,MAAM,gBAAgB,GACpB,IAAI,KAAK,mCAAmB,CAAC,iBAAiB,IAAI,IAAI,KAAK,mCAAmB,CAAC,UAAU,CAAC;QAC5F,IAAI,gBAAgB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1C,mDAAmD;YACnD,SAAS;QACX,CAAC;QAED,2DAA2D;QAC3D,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,cAAc,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACvE,oBAAoB,GAAG,IAAI,CAAC;YAC5B,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,wBAAwB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACjF,MAAM,IAAI,GAAgB;YACxB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAC1B,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,sBAAsB,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;SAC3E,CAAC;QAEF,IAAI,gBAAgB,EAAE,CAAC;YACrB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,MAAM,SAAS,GAAG,IAAA,4CAA8B,EAC9C,CAAC,YAAY,EAAE,WAAW,CAAC,EAC3B,MAAM,EACN,cAAc,KAAK,CAAC,EACpB,CAAC,CAAC,sBAAsB,EACxB,cAAc,EACd,OAAO,CACR,CAAC;QAEF,OAAO,SAAS,GAAG,IAAI,CAAC;IAC1B,CAAC;SAAM,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QACtC,IAAI,oBAAoB,EAAE,CAAC;YACzB,OAAO,sCAAsC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,OAAO,6BAA6B,CAAC;QACvC,CAAC;IACH,CAAC;IACD,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,2BAA2B,cAAc,EAAE,CAAC;IACrD,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAgB,wBAAwB,CAAC,QAAkB,EAAE,IAAY;IACvE,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;QACvC,OAAO,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,+BAA+B,CACnD,WAAyB;IAEzB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,0CAA0C;YAC1C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1E,EAAE,aAAa,CAAC;gBAChB,SAAS;YACX,CAAC;YAED,sGAAsG;YACtG,gCAAgC;YAChC,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,EAAE,CAAC;gBAC1C,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAC3D,EAAE,aAAa,CAAC;gBAChB,SAAS;YACX,CAAC;YAED,uGAAuG;YACvG,IAAA,0BAAc,EAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;gBACpD,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,CAAC,KAAK,CAAC,CAAC;oBAEd,OAAO;gBACT,CAAC;gBAED,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;gBAC9C,IAAI,EAAE,aAAa,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;oBAC1C,OAAO,CAAC,KAAK,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,uDAAuD;QACvD,IAAI,aAAa,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACxC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,WAAW,CAAI,IAAY,EAAE,MAA4B;IAC7E,IAAI,MAAM,CAAC;IACX,MAAM,QAAQ,GAAG,IAAI,cAAK,CACxB;QACE;YACE,KAAK,EAAE,IAAI;YACX,KAAK,CAAC,IAAI;gBACR,MAAM,GAAG,MAAM,MAAM,EAAE,CAAC;YAC1B,CAAC;SACF;KACF,EACD,EAAE,eAAe,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAC3C,CAAC;IAEF,MAAM,QAAQ,CAAC,GAAG,EAAE,CAAC;IAErB,OAAO,MAAW,CAAC;AACrB,CAAC;AAEM,KAAK,UAAU,cAAc,CAAI,IAAY,EAAE,MAA4B;IAChF,OAAO,MAAM,EAAE,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,gBAAyB;IACzD,OAAO;QACL,sFAAsF;QACtF,sGAAsG;QACtG,aAAa,EAAE,gBAAgB;QAC/B,qGAAqG;QACrG,sGAAsG;QACtG,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,qGAAqG;QACrG,oGAAoG;QACpG,8EAA8E;QAC9E,0EAA0E;QAC1E,oBAAoB,EAAE,KAAK;KAC5B,CAAC;AACJ,CAAC;AAED,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAC1B,KAAK,UAAU,eAAe,CACnC,KAAU,EACV,iBAA6C;IAE7C,8EAA8E;IAC9E,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,qBAAqB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAE3E,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,OAAO,SAAS,GAAG,QAAQ,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAaM,KAAK,UAAU,uBAAuB,CAC3C,MAAuB,EACvB,iBAAoD;IAEpD,MAAM,EACJ,MAAM,EAAE,KAAK,EACb,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EACxC,UAAU,EACV,UAAU,GACX,GAAG,iBAAiB,CAAC;IAEtB,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAAC;IAEvD,MAAM,QAAQ,GAAkB;QAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAA,wBAAc,EAAC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;QACnF,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAA,wBAAc,EAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;QAC3F,WAAW,EAAE;YACX,IAAI,EAAE,IAAA,wBAAa,EAAC,IAAI,CAAC;YACzB,OAAO,EAAE,IAAA,wBAAa,EAAC,IAAA,gBAAI,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC3C,MAAM,EACJ,UAAU,KAAK,mBAAU,CAAC,MAAM,IAAI,UAAU;gBAC5C,CAAC,CAAC,IAAA,wBAAa,EAAC,IAAA,gBAAI,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACnC,CAAC,CAAC,SAAS;SAChB;QACD,iBAAiB;KAClB,CAAC;IAEF,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;AAChD,CAAC;AAEM,KAAK,UAAU,WAAW,CAC/B,MAAgC,EAChC,eAAgC,EAChC,KAAe,EACf,QAAkB;IAElB,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;IAEnD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,IAAA,wBAAc,EAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,IAAA,wBAAc,EAAC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACpF,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,SAA+B;IAC3D,4FAA4F;IAC5F,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,SAAgB,iBAAiB,CAAC,UAAkB;IAClD,OAAO,IAAA,oBAAQ,EAAC,UAAU,CAAC;SACxB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,mCAAmC;SACxD,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;SAC5B,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
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.dev/license
7
+ */
8
+ /**
9
+ * The options passed to the inliner for each code request
10
+ */
11
+ export interface InlineCodeRequest {
12
+ /**
13
+ * The code that should be processed.
14
+ */
15
+ code: string;
16
+ /**
17
+ * The filename to use in error and warning messages for the provided code.
18
+ */
19
+ filename: string;
20
+ /**
21
+ * The locale specifier that should be used during the inlining process of the file.
22
+ */
23
+ locale: string;
24
+ /**
25
+ * The serialized translation messages for the locale that should be used during the inlining
26
+ * process of the file. A SharedArrayBuffer or Blob is used so that the messages are shared with
27
+ * the Worker by reference instead of being copied into it for every request.
28
+ */
29
+ translation?: Blob | SharedArrayBuffer;
30
+ /**
31
+ * How to handle missing translations.
32
+ */
33
+ missingTranslation?: 'error' | 'warning' | 'ignore';
34
+ }
35
+ /**
36
+ * The response returned from a code request.
37
+ */
38
+ export interface InlineCodeResult {
39
+ output: string;
40
+ messages: {
41
+ type: 'error' | 'warning';
42
+ message: string;
43
+ }[];
44
+ }
45
+ /**
46
+ * The options passed to the inliner for a batch file request
47
+ */
48
+ export interface InlineFileBatchRequest {
49
+ /**
50
+ * The filename that should be processed.
51
+ */
52
+ filename: string;
53
+ /**
54
+ * The file content as a Blob.
55
+ */
56
+ code: Blob;
57
+ /**
58
+ * Optional sourcemap content as a Blob.
59
+ */
60
+ map?: Blob;
61
+ /**
62
+ * The locale specifiers and optional translations to use during the inlining process of the file.
63
+ */
64
+ locales: ReadonlyMap<string, Blob | SharedArrayBuffer | undefined>;
65
+ /**
66
+ * How to handle missing translations.
67
+ */
68
+ missingTranslation?: 'error' | 'warning' | 'ignore';
69
+ /**
70
+ * Whether the file data should be treated as ephemeral and not cached long-term in the Worker.
71
+ * Typically true when all remaining locales for the file are processed in a single batch.
72
+ */
73
+ ephemeral?: boolean;
74
+ /**
75
+ * The list of active locales in the current inlining window. Any cached translation dictionaries
76
+ * not present in this list will be evicted from the Worker's memory cache.
77
+ */
78
+ activeLocales?: string[];
79
+ /**
80
+ * The current inlining generation counter. When a request with a new generation is received,
81
+ * all long-term worker caches are cleared.
82
+ */
83
+ generation?: number;
84
+ }
85
+ /**
86
+ * The result for a single locale within a batch file request.
87
+ */
88
+ export interface InlineLocaleResult {
89
+ locale: string;
90
+ code?: string;
91
+ map?: string;
92
+ messages: {
93
+ type: 'error' | 'warning';
94
+ message: string;
95
+ }[];
96
+ }
97
+ /**
98
+ * The response returned from a batch file request.
99
+ */
100
+ export type InlineFileBatchResult = {
101
+ file: string;
102
+ unmodified: true;
103
+ messages: {
104
+ type: 'error' | 'warning';
105
+ message: string;
106
+ }[];
107
+ } | {
108
+ file: string;
109
+ unmodified?: false;
110
+ results: InlineLocaleResult[];
111
+ };
112
+ /**
113
+ * Inlines multiple locales and translations into a JavaScript file that contains `$localize` usage.
114
+ *
115
+ * @param request An InlineFileBatchRequest object representing the options for inlining.
116
+ * @returns An object containing the inlined results for each requested locale.
117
+ */
118
+ export declare function inlineFileBatch(request: InlineFileBatchRequest): Promise<InlineFileBatchResult>;
119
+ /**
120
+ * Inlines the provided locale and translation into JavaScript code that contains `$localize` usage.
121
+ * This function is a secondary entry primarily for use with component HMR update modules.
122
+ *
123
+ * @param request An InlineRequest object representing the options for inlining
124
+ * @returns An object containing the inlined code.
125
+ */
126
+ export declare function inlineCode(request: InlineCodeRequest): Promise<InlineCodeResult>;
@@ -0,0 +1,363 @@
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.dev/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 () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ var __importDefault = (this && this.__importDefault) || function (mod) {
43
+ return (mod && mod.__esModule) ? mod : { "default": mod };
44
+ };
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.inlineFileBatch = inlineFileBatch;
47
+ exports.inlineCode = inlineCode;
48
+ const remapping_1 = __importDefault(require("@ampproject/remapping"));
49
+ const magic_string_1 = require("magic-string");
50
+ const node_v8_1 = require("node:v8");
51
+ const oxc_parser_1 = require("oxc-parser");
52
+ const traversal_1 = require("../oxc/traversal");
53
+ const i18n_translation_reader_1 = require("./i18n-translation-reader");
54
+ const locale_data_1 = require("./locale-data");
55
+ /**
56
+ * Cache of file data promises keyed by filename.
57
+ */
58
+ const fileDataCache = new Map();
59
+ /**
60
+ * Cache of deserialized translation messages keyed by locale.
61
+ */
62
+ const deserializedTranslations = new Map();
63
+ /**
64
+ * The current inlining generation for this worker.
65
+ */
66
+ let currentGeneration;
67
+ /**
68
+ * Retrieves the file data for a filename, loading and extracting localization metadata.
69
+ * If `cache` is true, the result is cached in `fileDataCache` across requests in this Worker.
70
+ * If `cache` is false (ephemeral), the result is not retained in `fileDataCache`, allowing it
71
+ * to be garbage-collected once the batch request finishes.
72
+ *
73
+ * @param filename The name of the file to load.
74
+ * @param codeBlob The source code file as a Blob.
75
+ * @param cache Whether to cache the loaded file data in the Worker's long-term cache.
76
+ * @returns The cached or newly extracted code and localization metadata.
77
+ */
78
+ function loadFileData(filename, codeBlob, cache = true) {
79
+ const existing = fileDataCache.get(filename);
80
+ if (existing) {
81
+ if (!cache) {
82
+ fileDataCache.delete(filename);
83
+ }
84
+ return existing;
85
+ }
86
+ const fileDataPromise = (async () => {
87
+ const code = await codeBlob.text();
88
+ const metadata = extractLocalizeMetadata(filename, code);
89
+ return { code, metadata };
90
+ })();
91
+ if (cache) {
92
+ fileDataPromise.catch(() => {
93
+ fileDataCache.delete(filename);
94
+ });
95
+ fileDataCache.set(filename, fileDataPromise);
96
+ }
97
+ return fileDataPromise;
98
+ }
99
+ /**
100
+ * Deserializes or wraps the translation messages for a locale, reusing the result for any
101
+ * subsequent request that targets the same locale.
102
+ * @param locale The locale identifier.
103
+ * @param translation Optional serialized translation messages (SharedArrayBuffer or Blob).
104
+ * @returns The translation messages, or undefined if the locale has no translations.
105
+ */
106
+ function loadTranslation(locale, translation) {
107
+ if (!translation) {
108
+ return undefined;
109
+ }
110
+ let messagesPromise = deserializedTranslations.get(locale);
111
+ if (!messagesPromise) {
112
+ if (translation instanceof Blob) {
113
+ messagesPromise = translation
114
+ .arrayBuffer()
115
+ .then((buffer) => (0, node_v8_1.deserialize)(new Uint8Array(buffer)))
116
+ .catch((error) => {
117
+ deserializedTranslations.delete(locale);
118
+ throw error;
119
+ });
120
+ }
121
+ else {
122
+ messagesPromise = Promise.resolve((0, i18n_translation_reader_1.createSharedTranslationProxy)(translation));
123
+ }
124
+ deserializedTranslations.set(locale, messagesPromise);
125
+ }
126
+ return messagesPromise;
127
+ }
128
+ /**
129
+ * Inlines multiple locales and translations into a JavaScript file that contains `$localize` usage.
130
+ *
131
+ * @param request An InlineFileBatchRequest object representing the options for inlining.
132
+ * @returns An object containing the inlined results for each requested locale.
133
+ */
134
+ async function inlineFileBatch(request) {
135
+ if (request.generation !== undefined && request.generation !== currentGeneration) {
136
+ currentGeneration = request.generation;
137
+ fileDataCache.clear();
138
+ deserializedTranslations.clear();
139
+ }
140
+ if (request.activeLocales) {
141
+ const activeSet = new Set(request.activeLocales);
142
+ for (const locale of deserializedTranslations.keys()) {
143
+ if (!activeSet.has(locale)) {
144
+ deserializedTranslations.delete(locale);
145
+ }
146
+ }
147
+ }
148
+ const { code, metadata } = await loadFileData(request.filename, request.code, !request.ephemeral);
149
+ // Fast path: file has no $localize call sites or locale insert sites
150
+ if (metadata.callSites.length === 0 && metadata.localeInsertSites.length === 0) {
151
+ return {
152
+ file: request.filename,
153
+ unmodified: true,
154
+ messages: (metadata.diagnostics ?? []).map((message) => ({
155
+ type: 'error',
156
+ message,
157
+ })),
158
+ };
159
+ }
160
+ // Parse the sourcemap once for the entire batch if provided.
161
+ // It will naturally be garbage-collected after this batch action returns.
162
+ let map;
163
+ if (request.map) {
164
+ const rawMap = await request.map.text();
165
+ map = rawMap ? JSON.parse(rawMap) : undefined;
166
+ }
167
+ const results = await Promise.all(Array.from(request.locales, async ([locale, translation]) => {
168
+ const result = await inlineLocalize(code, map, metadata, locale, await loadTranslation(locale, translation), request.filename, request.missingTranslation);
169
+ return {
170
+ locale,
171
+ code: result.code,
172
+ map: result.map,
173
+ messages: result.diagnostics.messages,
174
+ };
175
+ }));
176
+ return {
177
+ file: request.filename,
178
+ results,
179
+ };
180
+ }
181
+ /**
182
+ * Inlines the provided locale and translation into JavaScript code that contains `$localize` usage.
183
+ * This function is a secondary entry primarily for use with component HMR update modules.
184
+ *
185
+ * @param request An InlineRequest object representing the options for inlining
186
+ * @returns An object containing the inlined code.
187
+ */
188
+ async function inlineCode(request) {
189
+ const metadata = extractLocalizeMetadata(request.filename, request.code);
190
+ const result = await inlineLocalize(request.code, undefined, metadata, request.locale, await loadTranslation(request.locale, request.translation), request.filename, request.missingTranslation);
191
+ return {
192
+ output: result.code ?? request.code,
193
+ messages: result.diagnostics.messages,
194
+ };
195
+ }
196
+ /**
197
+ * Cached instance of the `@angular/localize/tools` module.
198
+ * This is used to remove the need to repeatedly import the module per file translation.
199
+ */
200
+ let localizeToolsModule;
201
+ /**
202
+ * Attempts to load the `@angular/localize/tools` module containing the functionality to
203
+ * perform the file translations.
204
+ * This module must be dynamically loaded as it is an ESM module and this file is CommonJS.
205
+ */
206
+ async function loadLocalizeTools() {
207
+ // Load ESM `@angular/localize/tools` using the TypeScript dynamic import workaround.
208
+ // Once TypeScript provides support for keeping the dynamic import this workaround can be
209
+ // changed to a direct dynamic import.
210
+ localizeToolsModule ??= await Promise.resolve().then(() => __importStar(require('@angular/localize/tools')));
211
+ return localizeToolsModule;
212
+ }
213
+ /**
214
+ * Extracts localization call sites and locale insertion points from JavaScript code using OXC.
215
+ *
216
+ * @param filename The name of the file being processed.
217
+ * @param code The JavaScript source code.
218
+ * @returns The extracted localization metadata.
219
+ */
220
+ function extractLocalizeMetadata(filename, code) {
221
+ const { program } = (0, oxc_parser_1.parseSync)(filename, code, {
222
+ sourceType: 'unambiguous',
223
+ });
224
+ if (!program) {
225
+ throw new Error(`Unknown error occurred parsing file "${filename}" with OXC.`);
226
+ }
227
+ const callSites = [];
228
+ const localeInsertSites = [];
229
+ let diagnostics;
230
+ (0, traversal_1.traversePostOrder)(program, (node) => {
231
+ if (node.type === 'Literal') {
232
+ if (typeof node.value === 'string' && node.value === '___NG_LOCALE_INSERT___') {
233
+ localeInsertSites.push({ start: node.start, end: node.end });
234
+ }
235
+ }
236
+ else if (node.type === 'TaggedTemplateExpression') {
237
+ if (node.tag.type === 'Identifier' && node.tag.name === '$localize') {
238
+ const cooked = [];
239
+ const raw = [];
240
+ let hasMalformedEscape = false;
241
+ for (const q of node.quasi.quasis) {
242
+ if (q.value.cooked === null || q.value.cooked === undefined) {
243
+ hasMalformedEscape = true;
244
+ (diagnostics ??= []).push(`Malformed escape sequence in $localize template literal in file "${filename}".`);
245
+ break;
246
+ }
247
+ cooked.push(q.value.cooked);
248
+ raw.push(q.value.raw);
249
+ }
250
+ if (!hasMalformedEscape) {
251
+ const messageParts = Object.assign(cooked, { raw });
252
+ const expressions = node.quasi.expressions.map((expr) => ({
253
+ start: expr.start,
254
+ end: expr.end,
255
+ }));
256
+ const expressionIndexes = expressions.map((_, index) => index);
257
+ callSites.push({
258
+ start: node.start,
259
+ end: node.end,
260
+ messageParts,
261
+ expressions,
262
+ expressionIndexes,
263
+ });
264
+ }
265
+ }
266
+ }
267
+ });
268
+ return { callSites, localeInsertSites, diagnostics };
269
+ }
270
+ /**
271
+ * Escapes a template literal string part for insertion into an ES template literal (backticks).
272
+ * Uses JSON.stringify for base escaping of control characters and backslashes, then unescapes
273
+ * double quotes and escapes backticks and `${` expression delimiters in a single pass.
274
+ */
275
+ function escapeTemplatePart(part) {
276
+ return JSON.stringify(part)
277
+ .slice(1, -1)
278
+ .replace(/\\"|`|\$\{/g, (match) => (match === '\\"' ? '"' : '\\' + match));
279
+ }
280
+ /**
281
+ * Inlines translations into code using previously extracted localization metadata.
282
+ *
283
+ * @param code The source code to transform.
284
+ * @param map Optional source map for the source code.
285
+ * @param metadata Extracted localization metadata.
286
+ * @param locale The target locale identifier.
287
+ * @param translation The translation messages dictionary, or undefined for untranslated locale.
288
+ * @param filename The name of the file being transformed.
289
+ * @param missingTranslation How to handle missing translations.
290
+ * @returns The transformed code, optional remapped source map, and diagnostics.
291
+ */
292
+ async function inlineLocalize(code, map, metadata, locale, translation, filename, missingTranslation = 'warning') {
293
+ const magicString = new magic_string_1.MagicString(code);
294
+ const { Diagnostics, translate } = await loadLocalizeTools();
295
+ const diagnostics = new Diagnostics();
296
+ if (metadata.diagnostics) {
297
+ for (const message of metadata.diagnostics) {
298
+ diagnostics.error(message);
299
+ }
300
+ }
301
+ if (metadata.localeInsertSites.length > 0) {
302
+ const localeData = await (0, locale_data_1.loadLocaleData)(locale);
303
+ if (localeData.error) {
304
+ diagnostics.error(localeData.error);
305
+ }
306
+ else if (localeData.warning) {
307
+ diagnostics.warn(localeData.warning);
308
+ }
309
+ let injected = false;
310
+ for (const site of metadata.localeInsertSites) {
311
+ magicString.overwrite(site.start, site.end, JSON.stringify(locale) + (localeData.code && !injected ? `;\n${localeData.code}\n;` : ''));
312
+ injected = true;
313
+ }
314
+ }
315
+ for (const callSite of metadata.callSites) {
316
+ const [translatedParts, translatedSubstitutions] = translate(diagnostics, translation || {}, callSite.messageParts, callSite.expressionIndexes, translation === undefined ? 'ignore' : missingTranslation);
317
+ // Reconstruct the new template/string literal replacement
318
+ let replacement;
319
+ if (translatedSubstitutions.length === 0) {
320
+ replacement = JSON.stringify(translatedParts[0]);
321
+ }
322
+ else {
323
+ replacement = '`';
324
+ for (let i = 0; i < translatedParts.length; i++) {
325
+ replacement += escapeTemplatePart(translatedParts[i]);
326
+ if (i < translatedSubstitutions.length) {
327
+ const originalIndex = translatedSubstitutions[i];
328
+ const expr = callSite.expressions[originalIndex];
329
+ const exprCode = magicString.slice(expr.start, expr.end);
330
+ replacement += '${' + exprCode + '}';
331
+ }
332
+ }
333
+ replacement += '`';
334
+ }
335
+ magicString.overwrite(callSite.start, callSite.end, replacement);
336
+ }
337
+ if (!magicString.hasChanged()) {
338
+ return {
339
+ code: undefined,
340
+ map: undefined,
341
+ diagnostics,
342
+ };
343
+ }
344
+ const outputCode = magicString.toString();
345
+ let outputMap;
346
+ if (map) {
347
+ // A decoded map is generated here rather than an encoded one because remapping decodes its
348
+ // inputs. Encoding the mappings only for remapping to immediately decode them again doubles
349
+ // the peak memory of the largest structure involved in inlining a file.
350
+ const rawMap = magicString.generateDecodedMap({
351
+ source: filename,
352
+ includeContent: true,
353
+ hires: 'boundary',
354
+ });
355
+ outputMap = (0, remapping_1.default)([{ ...rawMap, version: 3 }, map], () => null);
356
+ }
357
+ return {
358
+ code: outputCode,
359
+ map: outputMap && JSON.stringify(outputMap),
360
+ diagnostics,
361
+ };
362
+ }
363
+ //# sourceMappingURL=i18n-inliner-worker.js.map