@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,21 @@
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
+ import type { ɵParsedTranslation } from '@angular/localize';
9
+ /**
10
+ * Magic header identifier for i18n SharedArrayBuffer translation tables ('I18N').
11
+ */
12
+ export declare const I18N_MAGIC_ID = 1227962446;
13
+ /**
14
+ * Encodes a JavaScript translation dictionary into a contiguous SharedArrayBuffer.
15
+ * The buffer contains a header, a sorted index table (by key for fast O(log N) binary search),
16
+ * and a UTF-8 string pool.
17
+ *
18
+ * @param translation The translation dictionary object.
19
+ * @returns A SharedArrayBuffer containing the binary encoded translation catalog.
20
+ */
21
+ export declare function encodeTranslationToBuffer<T = ɵParsedTranslation>(translation: Record<string, T>): SharedArrayBuffer;
@@ -0,0 +1,92 @@
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.I18N_MAGIC_ID = void 0;
11
+ exports.encodeTranslationToBuffer = encodeTranslationToBuffer;
12
+ /**
13
+ * Magic header identifier for i18n SharedArrayBuffer translation tables ('I18N').
14
+ */
15
+ exports.I18N_MAGIC_ID = 0x4931384e;
16
+ /**
17
+ * Encodes a JavaScript translation dictionary into a contiguous SharedArrayBuffer.
18
+ * The buffer contains a header, a sorted index table (by key for fast O(log N) binary search),
19
+ * and a UTF-8 string pool.
20
+ *
21
+ * @param translation The translation dictionary object.
22
+ * @returns A SharedArrayBuffer containing the binary encoded translation catalog.
23
+ */
24
+ function encodeTranslationToBuffer(translation) {
25
+ const encoder = new TextEncoder();
26
+ const entries = Object.entries(translation);
27
+ const entryCount = entries.length;
28
+ // Pre-encode string keys and JSON-serialized string values
29
+ const encodedEntries = new Array(entryCount);
30
+ let stringPoolByteSize = 0;
31
+ for (let i = 0; i < entryCount; i++) {
32
+ const [key, val] = entries[i];
33
+ const keyBytes = encoder.encode(key);
34
+ const valBytes = encoder.encode(JSON.stringify(val));
35
+ encodedEntries[i] = { keyBytes, valBytes };
36
+ stringPoolByteSize += keyBytes.byteLength + valBytes.byteLength;
37
+ }
38
+ // Sort entries lexicographically by UTF-8 byte comparison.
39
+ // Lexicographical byte comparison matches the binary search reader's byte comparison,
40
+ // ensuring deterministic and zero-allocation lookups across all runtimes regardless of UTF-16 surrogate pairs.
41
+ encodedEntries.sort((a, b) => {
42
+ const aBytes = a.keyBytes;
43
+ const bBytes = b.keyBytes;
44
+ const minLen = Math.min(aBytes.length, bBytes.length);
45
+ for (let i = 0; i < minLen; i++) {
46
+ const diff = aBytes[i] - bBytes[i];
47
+ if (diff !== 0) {
48
+ return diff;
49
+ }
50
+ }
51
+ return aBytes.length - bBytes.length;
52
+ });
53
+ const indexByteSize = entryCount * 16;
54
+ const headerByteSize = 16;
55
+ const stringPoolOffset = headerByteSize + indexByteSize;
56
+ const totalByteSize = stringPoolOffset + stringPoolByteSize;
57
+ const buffer = new SharedArrayBuffer(totalByteSize);
58
+ // Set up views over the SharedArrayBuffer
59
+ const uint32Header = new Uint32Array(buffer, 0, 4);
60
+ const uint32Index = new Uint32Array(buffer, headerByteSize, entryCount * 4);
61
+ const uint8Pool = new Uint8Array(buffer, stringPoolOffset);
62
+ // Write Header: Magic, EntryCount, IndexOffset, StringPoolOffset
63
+ uint32Header[0] = exports.I18N_MAGIC_ID;
64
+ uint32Header[1] = entryCount;
65
+ uint32Header[2] = headerByteSize;
66
+ uint32Header[3] = stringPoolOffset;
67
+ // Write Index Table and String Pool entries
68
+ let currentPoolOffset = 0;
69
+ for (let i = 0; i < entryCount; i++) {
70
+ const { keyBytes, valBytes } = encodedEntries[i];
71
+ const keyOffset = currentPoolOffset;
72
+ const keyLen = keyBytes.byteLength;
73
+ uint8Pool.set(keyBytes, keyOffset);
74
+ currentPoolOffset += keyLen;
75
+ const valOffset = currentPoolOffset;
76
+ const valLen = valBytes.byteLength;
77
+ uint8Pool.set(valBytes, valOffset);
78
+ currentPoolOffset += valLen;
79
+ // Index entry format (4 uint32 words / 16 bytes):
80
+ // [0]: keyOffset (uint32)
81
+ // [1]: keyLength (uint32)
82
+ // [2]: valOffset (uint32)
83
+ // [3]: valLength (uint32)
84
+ const idx = i * 4;
85
+ uint32Index[idx] = keyOffset;
86
+ uint32Index[idx + 1] = keyLen;
87
+ uint32Index[idx + 2] = valOffset;
88
+ uint32Index[idx + 3] = valLen;
89
+ }
90
+ return buffer;
91
+ }
92
+ //# sourceMappingURL=i18n-translation-encoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n-translation-encoder.js","sourceRoot":"","sources":["i18n-translation-encoder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
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
+ import type { ɵParsedTranslation } from '@angular/localize';
9
+ /**
10
+ * A zero-copy reader that queries translation messages directly from a SharedArrayBuffer
11
+ * using binary search over a sorted key index.
12
+ */
13
+ export declare class SharedTranslationDictionary<T = ɵParsedTranslation> {
14
+ private readonly entryCount;
15
+ private readonly uint32Index;
16
+ private readonly uint8Pool;
17
+ private readonly decoder;
18
+ private readonly encoder;
19
+ private readonly lazyCache;
20
+ constructor(buffer: SharedArrayBuffer);
21
+ /**
22
+ * Looks up a translation message by key.
23
+ * Performs a binary search over the index table if not previously cached in the lazy cache.
24
+ *
25
+ * @param targetKey The message key ID to search for.
26
+ * @returns The parsed translation message, or undefined if not found.
27
+ */
28
+ get(targetKey: string): T | undefined;
29
+ }
30
+ /**
31
+ * Creates a JavaScript object Proxy wrapping a SharedTranslationDictionary so it can be passed
32
+ * directly to `@angular/localize` inliner functions as a standard translation Record.
33
+ *
34
+ * Traps `get`, `has`, and `getOwnPropertyDescriptor` to fulfill all `@angular/localize` `translate()`
35
+ * lookup requirements (`translations[id]`, `translations[legacyId]`, `Object.hasOwn(translations, id)`).
36
+ * The `ownKeys` trap is intentionally omitted so keys are not eagerly decoded upfront upon reflection.
37
+ *
38
+ * @param buffer The SharedArrayBuffer containing binary encoded translation catalog.
39
+ * @returns A Proxy object that intercepts property reads and queries the SharedTranslationDictionary.
40
+ */
41
+ export declare function createSharedTranslationProxy<T = ɵParsedTranslation>(buffer: SharedArrayBuffer): Record<string, T>;
@@ -0,0 +1,164 @@
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.SharedTranslationDictionary = void 0;
11
+ exports.createSharedTranslationProxy = createSharedTranslationProxy;
12
+ const i18n_translation_encoder_1 = require("./i18n-translation-encoder");
13
+ /**
14
+ * Sentinel value used to cache non-existent message key lookups in lazyCache.
15
+ */
16
+ const NOT_FOUND = Symbol('NOT_FOUND');
17
+ /**
18
+ * Compares a target key's UTF-8 byte array against a byte sequence in the string pool.
19
+ * Lexicographical byte comparison of UTF-8 sequences matches UTF-16 code-unit string comparison
20
+ * used when encoding the sorted index table.
21
+ */
22
+ function compareBytes(target, pool, poolOffset, keyLen) {
23
+ if (poolOffset < 0 || poolOffset + keyLen > pool.length) {
24
+ return 1;
25
+ }
26
+ const minLen = Math.min(target.length, keyLen);
27
+ for (let i = 0; i < minLen; i++) {
28
+ const diff = target[i] - pool[poolOffset + i];
29
+ if (diff !== 0) {
30
+ return diff;
31
+ }
32
+ }
33
+ return target.length - keyLen;
34
+ }
35
+ /**
36
+ * A zero-copy reader that queries translation messages directly from a SharedArrayBuffer
37
+ * using binary search over a sorted key index.
38
+ */
39
+ class SharedTranslationDictionary {
40
+ entryCount;
41
+ uint32Index;
42
+ uint8Pool;
43
+ decoder = new TextDecoder();
44
+ encoder = new TextEncoder();
45
+ lazyCache = new Map();
46
+ constructor(buffer) {
47
+ if (buffer.byteLength < 16) {
48
+ throw new Error('Invalid SharedArrayBuffer translation header: buffer too small.');
49
+ }
50
+ const uint32Header = new Uint32Array(buffer, 0, 4);
51
+ if (uint32Header[0] !== i18n_translation_encoder_1.I18N_MAGIC_ID) {
52
+ throw new Error('Invalid SharedArrayBuffer translation header magic identifier.');
53
+ }
54
+ this.entryCount = uint32Header[1];
55
+ const headerByteSize = uint32Header[2];
56
+ const stringPoolOffset = uint32Header[3];
57
+ if (headerByteSize < 16 ||
58
+ headerByteSize % 4 !== 0 ||
59
+ headerByteSize + this.entryCount * 16 > buffer.byteLength ||
60
+ stringPoolOffset < headerByteSize + this.entryCount * 16 ||
61
+ stringPoolOffset > buffer.byteLength) {
62
+ throw new Error('Invalid SharedArrayBuffer translation header offsets.');
63
+ }
64
+ this.uint32Index = new Uint32Array(buffer, headerByteSize, this.entryCount * 4);
65
+ this.uint8Pool = new Uint8Array(buffer, stringPoolOffset);
66
+ }
67
+ /**
68
+ * Looks up a translation message by key.
69
+ * Performs a binary search over the index table if not previously cached in the lazy cache.
70
+ *
71
+ * @param targetKey The message key ID to search for.
72
+ * @returns The parsed translation message, or undefined if not found.
73
+ */
74
+ get(targetKey) {
75
+ const cached = this.lazyCache.get(targetKey);
76
+ if (cached !== undefined) {
77
+ return cached === NOT_FOUND ? undefined : cached;
78
+ }
79
+ const targetBytes = this.encoder.encode(targetKey);
80
+ let low = 0;
81
+ let high = this.entryCount - 1;
82
+ while (low <= high) {
83
+ const mid = (low + high) >>> 1;
84
+ const idx = mid * 4;
85
+ const keyOffset = this.uint32Index[idx];
86
+ const keyLen = this.uint32Index[idx + 1];
87
+ const cmp = compareBytes(targetBytes, this.uint8Pool, keyOffset, keyLen);
88
+ if (cmp === 0) {
89
+ const valOffset = this.uint32Index[idx + 2];
90
+ const valLen = this.uint32Index[idx + 3];
91
+ if (valOffset < 0 || valOffset + valLen > this.uint8Pool.length) {
92
+ this.lazyCache.set(targetKey, NOT_FOUND);
93
+ return undefined;
94
+ }
95
+ const valBytes = this.uint8Pool.subarray(valOffset, valOffset + valLen);
96
+ const valJson = this.decoder.decode(valBytes);
97
+ try {
98
+ const val = JSON.parse(valJson);
99
+ this.lazyCache.set(targetKey, val);
100
+ return val;
101
+ }
102
+ catch {
103
+ this.lazyCache.set(targetKey, NOT_FOUND);
104
+ return undefined;
105
+ }
106
+ }
107
+ else if (cmp < 0) {
108
+ high = mid - 1;
109
+ }
110
+ else {
111
+ low = mid + 1;
112
+ }
113
+ }
114
+ this.lazyCache.set(targetKey, NOT_FOUND);
115
+ return undefined;
116
+ }
117
+ }
118
+ exports.SharedTranslationDictionary = SharedTranslationDictionary;
119
+ /**
120
+ * Creates a JavaScript object Proxy wrapping a SharedTranslationDictionary so it can be passed
121
+ * directly to `@angular/localize` inliner functions as a standard translation Record.
122
+ *
123
+ * Traps `get`, `has`, and `getOwnPropertyDescriptor` to fulfill all `@angular/localize` `translate()`
124
+ * lookup requirements (`translations[id]`, `translations[legacyId]`, `Object.hasOwn(translations, id)`).
125
+ * The `ownKeys` trap is intentionally omitted so keys are not eagerly decoded upfront upon reflection.
126
+ *
127
+ * @param buffer The SharedArrayBuffer containing binary encoded translation catalog.
128
+ * @returns A Proxy object that intercepts property reads and queries the SharedTranslationDictionary.
129
+ */
130
+ function createSharedTranslationProxy(buffer) {
131
+ const dictionary = new SharedTranslationDictionary(buffer);
132
+ return new Proxy({}, {
133
+ get(target, prop) {
134
+ if (typeof prop === 'string') {
135
+ const value = dictionary.get(prop);
136
+ if (value !== undefined) {
137
+ return value;
138
+ }
139
+ }
140
+ return Reflect.get(target, prop);
141
+ },
142
+ has(target, prop) {
143
+ if (typeof prop === 'string' && dictionary.get(prop) !== undefined) {
144
+ return true;
145
+ }
146
+ return Reflect.has(target, prop);
147
+ },
148
+ getOwnPropertyDescriptor(target, prop) {
149
+ if (typeof prop === 'string') {
150
+ const val = dictionary.get(prop);
151
+ if (val !== undefined) {
152
+ return {
153
+ enumerable: true,
154
+ configurable: true,
155
+ writable: false,
156
+ value: val,
157
+ };
158
+ }
159
+ }
160
+ return Reflect.getOwnPropertyDescriptor(target, prop);
161
+ },
162
+ });
163
+ }
164
+ //# sourceMappingURL=i18n-translation-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n-translation-reader.js","sourceRoot":"","sources":["i18n-translation-reader.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAmJH,oEA0CC;AA1LD,yEAA2D;AAE3D;;GAEG;AACH,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAEtC;;;;GAIG;AACH,SAAS,YAAY,CACnB,MAAkB,EAClB,IAAgB,EAChB,UAAkB,EAClB,MAAc;IAEd,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACxD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAC9C,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAa,2BAA2B;IACrB,UAAU,CAAS;IACnB,WAAW,CAAc;IACzB,SAAS,CAAa;IACtB,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAC5B,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAC5B,SAAS,GAAG,IAAI,GAAG,EAAgC,CAAC;IAErE,YAAY,MAAyB;QACnC,IAAI,MAAM,CAAC,UAAU,GAAG,EAAE,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACrF,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACnD,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,wCAAa,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAEzC,IACE,cAAc,GAAG,EAAE;YACnB,cAAc,GAAG,CAAC,KAAK,CAAC;YACxB,cAAc,GAAG,IAAI,CAAC,UAAU,GAAG,EAAE,GAAG,MAAM,CAAC,UAAU;YACzD,gBAAgB,GAAG,cAAc,GAAG,IAAI,CAAC,UAAU,GAAG,EAAE;YACxD,gBAAgB,GAAG,MAAM,CAAC,UAAU,EACpC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,SAAS,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;;OAMG;IACH,GAAG,CAAC,SAAiB;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;QACnD,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QAE/B,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;YAEpB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YAEzC,MAAM,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YACzE,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;gBACd,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;gBAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;gBACzC,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;oBAChE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;oBAEzC,OAAO,SAAS,CAAC;gBACnB,CAAC;gBAED,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,CAAC;gBACxE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAE9C,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAC;oBACrC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;oBAEnC,OAAO,GAAG,CAAC;gBACb,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;oBAEzC,OAAO,SAAS,CAAC;gBACnB,CAAC;YACH,CAAC;iBAAM,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;gBACnB,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACN,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAEzC,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AA9FD,kEA8FC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,4BAA4B,CAC1C,MAAyB;IAEzB,MAAM,UAAU,GAAG,IAAI,2BAA2B,CAAI,MAAM,CAAC,CAAC;IAE9D,OAAO,IAAI,KAAK,CACd,EAAE,EACF;QACE,GAAG,CAAC,MAAM,EAAE,IAAqB;YAC/B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACnC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;YAED,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACnC,CAAC;QACD,GAAG,CAAC,MAAM,EAAE,IAAqB;YAC/B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBACnE,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACnC,CAAC;QACD,wBAAwB,CAAC,MAAM,EAAE,IAAqB;YACpD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACjC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;oBACtB,OAAO;wBACL,UAAU,EAAE,IAAI;wBAChB,YAAY,EAAE,IAAI;wBAClB,QAAQ,EAAE,KAAK;wBACf,KAAK,EAAE,GAAG;qBACX,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,OAAO,OAAO,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACxD,CAAC;KACF,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
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
+ export * from './i18n-inliner';
9
+ export * from './i18n-translation-encoder';
10
+ export * from './i18n-translation-reader';
11
+ export * from './locale-data';
@@ -0,0 +1,28 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
21
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ __exportStar(require("./i18n-inliner"), exports);
25
+ __exportStar(require("./i18n-translation-encoder"), exports);
26
+ __exportStar(require("./i18n-translation-reader"), exports);
27
+ __exportStar(require("./locale-data"), exports);
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;AAEH,iDAA+B;AAC/B,6DAA2C;AAC3C,4DAA0C;AAC1C,gDAA8B"}
@@ -0,0 +1,47 @@
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 internal namespace used by generated locale import statements and Angular locale data plugin.
10
+ */
11
+ export declare const LOCALE_DATA_NAMESPACE = "angular:locale/data";
12
+ /**
13
+ * The base module location used to search for locale specific data.
14
+ */
15
+ export declare const LOCALE_DATA_BASE_MODULE = "@angular/common/locales/global";
16
+ /**
17
+ * Result of resolving locale data for a given locale tag.
18
+ */
19
+ export interface LocaleDataResolution {
20
+ path?: string;
21
+ warning?: string;
22
+ error?: string;
23
+ }
24
+ /**
25
+ * Result of loading locale data for a given locale tag.
26
+ */
27
+ export interface LoadedLocaleData {
28
+ code?: string;
29
+ warning?: string;
30
+ error?: string;
31
+ }
32
+ /**
33
+ * Resolves the path to the Angular locale data file for a given locale tag.
34
+ *
35
+ * @param rawLocaleTag The raw locale identifier (e.g. "fr-CA", "de", "en-US").
36
+ * @param projectResolve A function that attempts to resolve a path string to an absolute file path.
37
+ * @returns Resolution result with file path, or warning/error diagnostics if applicable.
38
+ */
39
+ export declare function resolveLocaleDataPath(rawLocaleTag: string, projectResolve: (potentialPath: string) => string | undefined): LocaleDataResolution;
40
+ /**
41
+ * Loads the Angular global locale data script for a specified locale tag.
42
+ *
43
+ * @param rawLocaleTag The raw locale identifier (e.g. "fr-CA", "de", "en-US").
44
+ * @param projectRoot Optional project root for module resolution.
45
+ * @returns A promise resolving to the loaded locale data script code and any diagnostic warnings.
46
+ */
47
+ export declare function loadLocaleData(rawLocaleTag: string, projectRoot?: string): Promise<LoadedLocaleData>;
@@ -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.dev/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.LOCALE_DATA_BASE_MODULE = exports.LOCALE_DATA_NAMESPACE = void 0;
11
+ exports.resolveLocaleDataPath = resolveLocaleDataPath;
12
+ exports.loadLocaleData = loadLocaleData;
13
+ const promises_1 = require("node:fs/promises");
14
+ const resolve_project_1 = require("../../utils/resolve-project");
15
+ /**
16
+ * The internal namespace used by generated locale import statements and Angular locale data plugin.
17
+ */
18
+ exports.LOCALE_DATA_NAMESPACE = 'angular:locale/data';
19
+ /**
20
+ * The base module location used to search for locale specific data.
21
+ */
22
+ exports.LOCALE_DATA_BASE_MODULE = '@angular/common/locales/global';
23
+ const localeDataCache = new Map();
24
+ /**
25
+ * Resolves the path to the Angular locale data file for a given locale tag.
26
+ *
27
+ * @param rawLocaleTag The raw locale identifier (e.g. "fr-CA", "de", "en-US").
28
+ * @param projectResolve A function that attempts to resolve a path string to an absolute file path.
29
+ * @returns Resolution result with file path, or warning/error diagnostics if applicable.
30
+ */
31
+ function resolveLocaleDataPath(rawLocaleTag, projectResolve) {
32
+ let partialLocaleTag;
33
+ try {
34
+ const locale = new Intl.Locale(rawLocaleTag);
35
+ partialLocaleTag = locale.baseName;
36
+ }
37
+ catch {
38
+ return {
39
+ error: `Invalid or unsupported locale provided in configuration: "${rawLocaleTag}"`,
40
+ };
41
+ }
42
+ let exact = true;
43
+ while (partialLocaleTag) {
44
+ // Angular embeds the `en`/`en-US` locale into the framework and it does not need to be included again here.
45
+ if (partialLocaleTag === 'en' || partialLocaleTag === 'en-US') {
46
+ return {};
47
+ }
48
+ const potentialPath = `${exports.LOCALE_DATA_BASE_MODULE}/${partialLocaleTag}`;
49
+ try {
50
+ const resolvedPath = projectResolve(potentialPath);
51
+ if (resolvedPath) {
52
+ return {
53
+ path: resolvedPath,
54
+ warning: exact
55
+ ? undefined
56
+ : `Locale data for '${rawLocaleTag}' cannot be found. Using locale data for '${partialLocaleTag}'.`,
57
+ };
58
+ }
59
+ }
60
+ catch { }
61
+ // Remove the last subtag and try again with a less specific locale.
62
+ const parts = partialLocaleTag.split('-');
63
+ partialLocaleTag = parts.slice(0, -1).join('-');
64
+ exact = false;
65
+ }
66
+ return {
67
+ warning: `Locale data for '${rawLocaleTag}' cannot be found. No locale data will be included for this locale.`,
68
+ };
69
+ }
70
+ /**
71
+ * Loads the Angular global locale data script for a specified locale tag.
72
+ *
73
+ * @param rawLocaleTag The raw locale identifier (e.g. "fr-CA", "de", "en-US").
74
+ * @param projectRoot Optional project root for module resolution.
75
+ * @returns A promise resolving to the loaded locale data script code and any diagnostic warnings.
76
+ */
77
+ function loadLocaleData(rawLocaleTag, projectRoot) {
78
+ let cached = localeDataCache.get(rawLocaleTag);
79
+ if (!cached) {
80
+ cached = (async () => {
81
+ const projectResolve = (0, resolve_project_1.createProjectResolver)(projectRoot ?? process.cwd());
82
+ const resolution = resolveLocaleDataPath(rawLocaleTag, (potentialPath) => {
83
+ try {
84
+ return projectResolve(potentialPath);
85
+ }
86
+ catch {
87
+ return undefined;
88
+ }
89
+ });
90
+ if (resolution.error) {
91
+ return { error: resolution.error };
92
+ }
93
+ if (resolution.path) {
94
+ try {
95
+ const code = await (0, promises_1.readFile)(resolution.path, 'utf8');
96
+ return { code, warning: resolution.warning };
97
+ }
98
+ catch (e) {
99
+ return { error: `Failed to read locale data file: ${e.message}` };
100
+ }
101
+ }
102
+ return { warning: resolution.warning };
103
+ })();
104
+ localeDataCache.set(rawLocaleTag, cached);
105
+ }
106
+ return cached;
107
+ }
108
+ //# sourceMappingURL=locale-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locale-data.js","sourceRoot":"","sources":["locale-data.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
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
+ export * from './javascript-transformer';
@@ -0,0 +1,25 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
21
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ __exportStar(require("./javascript-transformer"), exports);
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;AAEH,2DAAyC"}
@@ -8,12 +8,8 @@
8
8
  interface JavaScriptTransformRequest {
9
9
  filename: string;
10
10
  data: string | Uint8Array;
11
- sourcemap: boolean;
12
- thirdPartySourcemaps: boolean;
13
- advancedOptimizations: boolean;
14
11
  skipLinker?: boolean;
15
12
  sideEffects?: boolean;
16
- jit: boolean;
17
13
  instrumentForCoverage?: boolean;
18
14
  }
19
15
  export default function transformJavaScript(request: JavaScriptTransformRequest): Promise<unknown>;