@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
@@ -7,17 +7,15 @@
7
7
  * found in the LICENSE file at https://angular.dev/license
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.LOCALE_DATA_BASE_MODULE = exports.LOCALE_DATA_NAMESPACE = void 0;
10
+ exports.resolveLocaleDataPath = exports.loadLocaleData = exports.LOCALE_DATA_BASE_MODULE = exports.LOCALE_DATA_NAMESPACE = void 0;
11
11
  exports.createAngularLocaleDataPlugin = createAngularLocaleDataPlugin;
12
12
  const resolve_project_1 = require("../../utils/resolve-project");
13
- /**
14
- * The internal namespace used by generated locale import statements and Angular locale data plugin.
15
- */
16
- exports.LOCALE_DATA_NAMESPACE = 'angular:locale/data';
17
- /**
18
- * The base module location used to search for locale specific data.
19
- */
20
- exports.LOCALE_DATA_BASE_MODULE = '@angular/common/locales/global';
13
+ const locale_data_1 = require("../i18n/locale-data");
14
+ var locale_data_2 = require("../i18n/locale-data");
15
+ Object.defineProperty(exports, "LOCALE_DATA_NAMESPACE", { enumerable: true, get: function () { return locale_data_2.LOCALE_DATA_NAMESPACE; } });
16
+ Object.defineProperty(exports, "LOCALE_DATA_BASE_MODULE", { enumerable: true, get: function () { return locale_data_2.LOCALE_DATA_BASE_MODULE; } });
17
+ Object.defineProperty(exports, "loadLocaleData", { enumerable: true, get: function () { return locale_data_2.loadLocaleData; } });
18
+ Object.defineProperty(exports, "resolveLocaleDataPath", { enumerable: true, get: function () { return locale_data_2.resolveLocaleDataPath; } });
21
19
  /**
22
20
  * Creates an esbuild plugin that resolves Angular locale data files from `@angular/common`.
23
21
  *
@@ -28,120 +26,41 @@ function createAngularLocaleDataPlugin() {
28
26
  name: 'angular-locale-data',
29
27
  setup(build) {
30
28
  build.onResolve({ filter: /^angular:locale\/data:/ }, async ({ path }) => {
31
- // Extract the locale from the path
32
29
  const rawLocaleTag = path.split(':', 3)[2];
33
- // Extract and normalize the base name of the raw locale tag
34
- let partialLocaleTag;
35
- try {
36
- const locale = new Intl.Locale(rawLocaleTag);
37
- partialLocaleTag = locale.baseName;
38
- }
39
- catch {
30
+ const { absWorkingDir } = build.initialOptions;
31
+ let projectResolve;
32
+ const resolution = (0, locale_data_1.resolveLocaleDataPath)(rawLocaleTag, (potentialPath) => {
33
+ projectResolve ??= (0, resolve_project_1.createProjectResolver)(absWorkingDir ?? process.cwd());
34
+ try {
35
+ return projectResolve(potentialPath);
36
+ }
37
+ catch {
38
+ return undefined;
39
+ }
40
+ });
41
+ if (resolution.error) {
40
42
  return {
41
43
  path: rawLocaleTag,
42
- namespace: exports.LOCALE_DATA_NAMESPACE,
43
- errors: [
44
- {
45
- text: `Invalid or unsupported locale provided in configuration: "${rawLocaleTag}"`,
46
- },
47
- ],
44
+ namespace: locale_data_1.LOCALE_DATA_NAMESPACE,
45
+ errors: [{ text: resolution.error }],
48
46
  };
49
47
  }
50
- let exact = true;
51
- let projectResolve;
52
- while (partialLocaleTag) {
53
- // Angular embeds the `en`/`en-US` locale into the framework and it does not need to be included again here.
54
- // The onLoad hook below for the locale data namespace has an `empty` loader that will prevent inclusion.
55
- // Angular does not contain exact locale data for `en-US` but `en` is equivalent.
56
- if (partialLocaleTag === 'en' || partialLocaleTag === 'en-US') {
57
- return {
58
- path: rawLocaleTag,
59
- namespace: exports.LOCALE_DATA_NAMESPACE,
60
- };
61
- }
62
- // Attempt to resolve the locale tag data within the Angular base module location
63
- const potentialPath = `${exports.LOCALE_DATA_BASE_MODULE}/${partialLocaleTag}`;
64
- // If packages are configured to be external then leave the original angular locale import path.
65
- // This happens when using the development server with caching enabled to allow Vite prebundling to work.
66
- // There currently is no option on the esbuild resolve function to resolve while disabling the option.
67
- // NOTE: If esbuild eventually allows controlling the external package options in a build.resolve call, this
68
- // workaround can be removed.
69
- let result;
70
- const { packages, absWorkingDir } = build.initialOptions;
71
- if (packages === 'external' && absWorkingDir) {
72
- projectResolve ??= (0, resolve_project_1.createProjectResolver)(absWorkingDir);
73
- try {
74
- projectResolve(potentialPath);
75
- result = {
76
- errors: [],
77
- warnings: [],
78
- external: true,
79
- sideEffects: true,
80
- namespace: '',
81
- suffix: '',
82
- pluginData: undefined,
83
- path: potentialPath,
84
- };
85
- }
86
- catch { }
87
- }
88
- else {
89
- result = await build.resolve(potentialPath, {
90
- kind: 'import-statement',
91
- resolveDir: absWorkingDir,
92
- });
93
- if (result && result.external && absWorkingDir) {
94
- projectResolve ??= (0, resolve_project_1.createProjectResolver)(absWorkingDir);
95
- try {
96
- const resolvedPath = projectResolve(potentialPath);
97
- result = {
98
- ...result,
99
- external: false,
100
- path: resolvedPath,
101
- };
102
- }
103
- catch { }
104
- }
105
- }
106
- if (result?.path) {
107
- if (exact) {
108
- return result;
109
- }
110
- else {
111
- return {
112
- ...result,
113
- warnings: [
114
- ...result.warnings,
115
- {
116
- location: null,
117
- text: `Locale data for '${rawLocaleTag}' cannot be found. Using locale data for '${partialLocaleTag}'.`,
118
- },
119
- ],
120
- };
121
- }
122
- }
123
- // Remove the last subtag and try again with a less specific locale.
124
- // Usually the match is exact so the string splitting here is not done until actually needed after the exact
125
- // match fails to resolve.
126
- const parts = partialLocaleTag.split('-');
127
- partialLocaleTag = parts.slice(0, -1).join('-');
128
- exact = false;
48
+ if (!resolution.path) {
49
+ return {
50
+ path: rawLocaleTag,
51
+ namespace: locale_data_1.LOCALE_DATA_NAMESPACE,
52
+ warnings: resolution.warning
53
+ ? [{ location: null, text: resolution.warning }]
54
+ : undefined,
55
+ };
129
56
  }
130
- // Not found so issue a warning and use an empty loader. Framework built-in `en-US` data will be used.
131
- // This retains existing behavior as in the Webpack-based builder.
132
57
  return {
133
- path: rawLocaleTag,
134
- namespace: exports.LOCALE_DATA_NAMESPACE,
135
- warnings: [
136
- {
137
- location: null,
138
- text: `Locale data for '${rawLocaleTag}' cannot be found. No locale data will be included for this locale.`,
139
- },
140
- ],
58
+ path: resolution.path,
59
+ warnings: resolution.warning ? [{ location: null, text: resolution.warning }] : undefined,
141
60
  };
142
61
  });
143
- // Locales that cannot be found will be loaded as empty content with a warning from the resolve step
144
- build.onLoad({ filter: /./, namespace: exports.LOCALE_DATA_NAMESPACE }, () => ({
62
+ // Locales that cannot be found or are en/en-US will be loaded as empty content
63
+ build.onLoad({ filter: /./, namespace: locale_data_1.LOCALE_DATA_NAMESPACE }, () => ({
145
64
  contents: '',
146
65
  loader: 'empty',
147
66
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"i18n-locale-plugin.js","sourceRoot":"","sources":["i18n-locale-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"i18n-locale-plugin.js","sourceRoot":"","sources":["i18n-locale-plugin.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AA0BH,sEAiDC;AAxED,iEAAoE;AACpE,qDAM6B;AAE7B,mDAO6B;AAN3B,oHAAA,qBAAqB,OAAA;AACrB,sHAAA,uBAAuB,OAAA;AAGvB,6GAAA,cAAc,OAAA;AACd,oHAAA,qBAAqB,OAAA;AAGvB;;;;GAIG;AACH,SAAgB,6BAA6B;IAC3C,OAAO;QACL,IAAI,EAAE,qBAAqB;QAC3B,KAAK,CAAC,KAAK;YACT,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,wBAAwB,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;gBACvE,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,MAAM,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC,cAAc,CAAC;gBAC/C,IAAI,cAA6D,CAAC;gBAElE,MAAM,UAAU,GAAG,IAAA,mCAAqB,EAAC,YAAY,EAAE,CAAC,aAAa,EAAE,EAAE;oBACvE,cAAc,KAAK,IAAA,uCAAqB,EAAC,aAAa,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;oBACzE,IAAI,CAAC;wBACH,OAAO,cAAc,CAAC,aAAa,CAAC,CAAC;oBACvC,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,SAAS,CAAC;oBACnB,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;oBACrB,OAAO;wBACL,IAAI,EAAE,YAAY;wBAClB,SAAS,EAAE,mCAAqB;wBAChC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC;qBACrC,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;oBACrB,OAAO;wBACL,IAAI,EAAE,YAAY;wBAClB,SAAS,EAAE,mCAAqB;wBAChC,QAAQ,EAAE,UAAU,CAAC,OAAO;4BAC1B,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC;4BAChD,CAAC,CAAC,SAAS;qBACd,CAAC;gBACJ,CAAC;gBAED,OAAO;oBACL,IAAI,EAAE,UAAU,CAAC,IAAI;oBACrB,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;iBAC1F,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,+EAA+E;YAC/E,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,mCAAqB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;gBACrE,QAAQ,EAAE,EAAE;gBACZ,MAAM,EAAE,OAAO;aAChB,CAAC,CAAC,CAAC;QACN,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -22,4 +22,4 @@ import type { Metafile } from 'esbuild';
22
22
  * @param rootDirectory The root directory of the workspace.
23
23
  * @returns A string containing the content of the output licenses file.
24
24
  */
25
- export declare function extractLicenses(metafile: Metafile, rootDirectory: string): Promise<string>;
25
+ export declare function extractLicenses(metafiles: Metafile[], rootDirectory: string): Promise<string>;
@@ -58,106 +58,109 @@ const EXTRACTION_FILE_SEPARATOR = '-'.repeat(80) + '\n';
58
58
  * @param rootDirectory The root directory of the workspace.
59
59
  * @returns A string containing the content of the output licenses file.
60
60
  */
61
- async function extractLicenses(metafile, rootDirectory) {
61
+ async function extractLicenses(metafiles, rootDirectory) {
62
62
  let extractedLicenseContent = `${EXTRACTION_FILE_HEADER}\n${EXTRACTION_FILE_SEPARATOR}`;
63
63
  const seenPaths = new Set();
64
64
  const seenPackageDirectories = new Set();
65
65
  const seenPackages = new Set();
66
- for (const entry of Object.values(metafile.outputs)) {
67
- for (const [inputPath, { bytesInOutput }] of Object.entries(entry.inputs)) {
68
- // Skip if not included in output
69
- if (bytesInOutput <= 0) {
70
- continue;
71
- }
72
- // Skip already processed paths
73
- if (seenPaths.has(inputPath)) {
74
- continue;
75
- }
76
- seenPaths.add(inputPath);
77
- // Skip non-package paths
78
- if (!inputPath.includes(NODE_MODULE_SEGMENT)) {
79
- continue;
80
- }
81
- // Extract the package name from the path
82
- let baseDirectory = node_path_1.default.join(rootDirectory, inputPath);
83
- let nameOrScope, nameOrFile;
84
- let found = false;
85
- while (baseDirectory !== node_path_1.default.dirname(baseDirectory)) {
86
- const segment = node_path_1.default.basename(baseDirectory);
87
- if (segment === NODE_MODULE_SEGMENT) {
88
- found = true;
89
- break;
66
+ for (const metafile of metafiles) {
67
+ for (const entry of Object.values(metafile.outputs)) {
68
+ for (const [inputPath, { bytesInOutput }] of Object.entries(entry.inputs)) {
69
+ // Skip if not included in output
70
+ if (bytesInOutput <= 0) {
71
+ continue;
90
72
  }
91
- nameOrFile = nameOrScope;
92
- nameOrScope = segment;
93
- baseDirectory = node_path_1.default.dirname(baseDirectory);
94
- }
95
- // Skip non-package path edge cases that are not caught in the includes check above
96
- if (!found || !nameOrScope) {
97
- continue;
98
- }
99
- const packageName = nameOrScope.startsWith('@')
100
- ? `${nameOrScope}/${nameOrFile}`
101
- : nameOrScope;
102
- const packageDirectory = node_path_1.default.join(baseDirectory, packageName);
103
- if (seenPackageDirectories.has(packageDirectory)) {
104
- continue;
105
- }
106
- seenPackageDirectories.add(packageDirectory);
107
- // Load the package's metadata to find the package's name, version, and license type
108
- const packageJsonPath = node_path_1.default.join(packageDirectory, 'package.json');
109
- let packageJson;
110
- try {
111
- packageJson = JSON.parse(await (0, promises_1.readFile)(packageJsonPath, 'utf-8'));
112
- }
113
- catch {
114
- // Invalid package
115
- continue;
116
- }
117
- // Skip already processed packages
118
- const packageId = `${packageName}@${packageJson.version}`;
119
- if (seenPackages.has(packageId)) {
120
- continue;
121
- }
122
- seenPackages.add(packageId);
123
- // Attempt to find license text inside package
124
- let licenseText = '';
125
- if (typeof packageJson.license === 'string' &&
126
- packageJson.license.toUpperCase().startsWith(CUSTOM_LICENSE_TEXT)) {
127
- // Attempt to load the package's custom license
128
- let customLicensePath;
129
- const customLicenseFile = node_path_1.default.normalize(packageJson.license.slice(CUSTOM_LICENSE_TEXT.length).trim());
130
- if (customLicenseFile.startsWith('..') || node_path_1.default.isAbsolute(customLicenseFile)) {
131
- // Path is attempting to access files outside of the package
132
- // TODO: Issue warning?
73
+ // Skip already processed paths
74
+ if (seenPaths.has(inputPath)) {
75
+ continue;
133
76
  }
134
- else {
135
- customLicensePath = node_path_1.default.join(packageDirectory, customLicenseFile);
136
- try {
137
- licenseText = await (0, promises_1.readFile)(customLicensePath, 'utf-8');
77
+ seenPaths.add(inputPath);
78
+ // Skip non-package paths
79
+ if (!inputPath.includes(NODE_MODULE_SEGMENT)) {
80
+ continue;
81
+ }
82
+ // Extract the package name from the path
83
+ let baseDirectory = node_path_1.default.join(rootDirectory, inputPath);
84
+ let nameOrScope, nameOrFile;
85
+ let found = false;
86
+ while (baseDirectory !== node_path_1.default.dirname(baseDirectory)) {
87
+ const segment = node_path_1.default.basename(baseDirectory);
88
+ if (segment === NODE_MODULE_SEGMENT) {
89
+ found = true;
90
+ break;
138
91
  }
139
- catch { }
92
+ nameOrFile = nameOrScope;
93
+ nameOrScope = segment;
94
+ baseDirectory = node_path_1.default.dirname(baseDirectory);
140
95
  }
141
- }
142
- else {
143
- // Search for a license file within the root of the package
144
- const entries = await (0, promises_1.readdir)(packageDirectory, { withFileTypes: true }).catch(() => []);
145
- for (const entry of entries) {
146
- if ((entry.isFile() || entry.isSymbolicLink()) && LICENSE_FILE_REGEXP.test(entry.name)) {
147
- const packageLicensePath = node_path_1.default.join(packageDirectory, entry.name);
96
+ // Skip non-package path edge cases that are not caught in the includes check above
97
+ if (!found || !nameOrScope) {
98
+ continue;
99
+ }
100
+ const packageName = nameOrScope.startsWith('@')
101
+ ? `${nameOrScope}/${nameOrFile}`
102
+ : nameOrScope;
103
+ const packageDirectory = node_path_1.default.join(baseDirectory, packageName);
104
+ if (seenPackageDirectories.has(packageDirectory)) {
105
+ continue;
106
+ }
107
+ seenPackageDirectories.add(packageDirectory);
108
+ // Load the package's metadata to find the package's name, version, and license type
109
+ const packageJsonPath = node_path_1.default.join(packageDirectory, 'package.json');
110
+ let packageJson;
111
+ try {
112
+ packageJson = JSON.parse(await (0, promises_1.readFile)(packageJsonPath, 'utf-8'));
113
+ }
114
+ catch {
115
+ // Invalid package
116
+ continue;
117
+ }
118
+ // Skip already processed packages
119
+ const packageId = `${packageName}@${packageJson.version}`;
120
+ if (seenPackages.has(packageId)) {
121
+ continue;
122
+ }
123
+ seenPackages.add(packageId);
124
+ // Attempt to find license text inside package
125
+ let licenseText = '';
126
+ if (typeof packageJson.license === 'string' &&
127
+ packageJson.license.toUpperCase().startsWith(CUSTOM_LICENSE_TEXT)) {
128
+ // Attempt to load the package's custom license
129
+ let customLicensePath;
130
+ const customLicenseFile = node_path_1.default.normalize(packageJson.license.slice(CUSTOM_LICENSE_TEXT.length).trim());
131
+ if (customLicenseFile.startsWith('..') || node_path_1.default.isAbsolute(customLicenseFile)) {
132
+ // Path is attempting to access files outside of the package
133
+ // TODO: Issue warning?
134
+ }
135
+ else {
136
+ customLicensePath = node_path_1.default.join(packageDirectory, customLicenseFile);
148
137
  try {
149
- licenseText = await (0, promises_1.readFile)(packageLicensePath, 'utf-8');
150
- break;
138
+ licenseText = await (0, promises_1.readFile)(customLicensePath, 'utf-8');
151
139
  }
152
140
  catch { }
153
141
  }
154
142
  }
143
+ else {
144
+ // Search for a license file within the root of the package
145
+ const entries = await (0, promises_1.readdir)(packageDirectory, { withFileTypes: true }).catch(() => []);
146
+ for (const entry of entries) {
147
+ if ((entry.isFile() || entry.isSymbolicLink()) &&
148
+ LICENSE_FILE_REGEXP.test(entry.name)) {
149
+ const packageLicensePath = node_path_1.default.join(packageDirectory, entry.name);
150
+ try {
151
+ licenseText = await (0, promises_1.readFile)(packageLicensePath, 'utf-8');
152
+ break;
153
+ }
154
+ catch { }
155
+ }
156
+ }
157
+ }
158
+ // Generate the package's license entry in the output content
159
+ extractedLicenseContent += `Package: ${packageJson.name}\n`;
160
+ extractedLicenseContent += `License: ${JSON.stringify(packageJson.license, null, 2)}\n`;
161
+ extractedLicenseContent += `\n${licenseText}\n`;
162
+ extractedLicenseContent += EXTRACTION_FILE_SEPARATOR;
155
163
  }
156
- // Generate the package's license entry in the output content
157
- extractedLicenseContent += `Package: ${packageJson.name}\n`;
158
- extractedLicenseContent += `License: ${JSON.stringify(packageJson.license, null, 2)}\n`;
159
- extractedLicenseContent += `\n${licenseText}\n`;
160
- extractedLicenseContent += EXTRACTION_FILE_SEPARATOR;
161
164
  }
162
165
  }
163
166
  return extractedLicenseContent;
@@ -1 +1 @@
1
- {"version":3,"file":"license-extractor.js","sourceRoot":"","sources":["license-extractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"license-extractor.js","sourceRoot":"","sources":["license-extractor.ts"],"names":[],"mappings":"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"}
@@ -7,8 +7,9 @@
7
7
  */
8
8
  import type { OnLoadResult, PluginBuild } from 'esbuild';
9
9
  export interface LoadResultCache {
10
- get(path: string): OnLoadResult | undefined;
10
+ get(path: string): OnLoadResult | Promise<OnLoadResult | undefined> | undefined;
11
11
  put(path: string, result: OnLoadResult): Promise<void>;
12
+ invalidate(path: string): boolean;
12
13
  readonly watchFiles: ReadonlyArray<string>;
13
14
  }
14
15
  export declare function createCachedLoad(cache: LoadResultCache | undefined, callback: Parameters<PluginBuild['onLoad']>[1]): Parameters<PluginBuild['onLoad']>[1];
@@ -16,7 +16,7 @@ function createCachedLoad(cache, callback) {
16
16
  }
17
17
  return async (args) => {
18
18
  const loadCacheKey = `${args.namespace}:${args.path}`;
19
- let result = cache.get(loadCacheKey);
19
+ let result = await cache.get(loadCacheKey);
20
20
  if (result === undefined) {
21
21
  result = await callback(args);
22
22
  // Do not cache null or undefined
@@ -24,7 +24,9 @@ function createCachedLoad(cache, callback) {
24
24
  // Ensure requested path is included if it was a resolved file
25
25
  if (args.namespace === 'file') {
26
26
  result.watchFiles ??= [];
27
- result.watchFiles.push(args.path);
27
+ if (!result.watchFiles.includes(args.path)) {
28
+ result.watchFiles.push(args.path);
29
+ }
28
30
  }
29
31
  await cache.put(loadCacheKey, result);
30
32
  }
@@ -40,13 +42,29 @@ class MemoryLoadResultCache {
40
42
  return this.#loadResults.get(path);
41
43
  }
42
44
  async put(path, result) {
45
+ const previousWatchFiles = this.#watchFilesPerKey.get(path);
43
46
  if (result.errors && result.errors.length > 0) {
44
- const previousWatchFiles = this.#watchFilesPerKey.get(path);
45
47
  if (previousWatchFiles) {
46
48
  result.watchFiles = Array.from(new Set([...(result.watchFiles ?? []), ...previousWatchFiles]));
47
49
  }
48
50
  }
49
- else if (result.watchFiles && result.watchFiles.length > 0) {
51
+ const currentNormalizedWatchFiles = new Set(result.watchFiles?.map(node_path_1.normalize) ?? []);
52
+ // Clean up any previous file dependencies that are no longer referenced
53
+ if (previousWatchFiles) {
54
+ for (const watchFile of previousWatchFiles) {
55
+ const normalizedWatchFile = (0, node_path_1.normalize)(watchFile);
56
+ if (!currentNormalizedWatchFiles.has(normalizedWatchFile)) {
57
+ const affected = this.#fileDependencies.get(normalizedWatchFile);
58
+ if (affected) {
59
+ affected.delete(path);
60
+ if (affected.size === 0) {
61
+ this.#fileDependencies.delete(normalizedWatchFile);
62
+ }
63
+ }
64
+ }
65
+ }
66
+ }
67
+ if (result.watchFiles && result.watchFiles.length > 0) {
50
68
  this.#watchFilesPerKey.set(path, [...result.watchFiles]);
51
69
  }
52
70
  else {
@@ -68,16 +86,13 @@ class MemoryLoadResultCache {
68
86
  }
69
87
  invalidate(path) {
70
88
  const affectedPaths = this.#fileDependencies.get(path);
71
- let found = false;
72
- if (affectedPaths) {
73
- for (const affected of affectedPaths) {
74
- if (this.#loadResults.delete(affected)) {
75
- found = true;
76
- }
77
- }
78
- this.#fileDependencies.delete(path);
89
+ if (!affectedPaths) {
90
+ return false;
91
+ }
92
+ for (const affected of affectedPaths) {
93
+ this.#loadResults.delete(affected);
79
94
  }
80
- return found;
95
+ return true;
81
96
  }
82
97
  get watchFiles() {
83
98
  // this.#loadResults.keys() is not included here because the keys
@@ -1 +1 @@
1
- {"version":3,"file":"load-result-cache.js","sourceRoot":"","sources":["load-result-cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"load-result-cache.js","sourceRoot":"","sources":["load-result-cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
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
+ * @fileoverview
10
+ * Implements a generic, two-tier (L1 memory + L2 persistent disk store) caching system for
11
+ * esbuild plugin `OnLoadResult` outcomes across the `@angular/build` compiler pipeline.
12
+ *
13
+ * Supported Module Types:
14
+ * 1. **Disk File Modules** (`file:` namespace): Standard disk-based source files (TS, JS, CSS, Sass, Less).
15
+ * Cache keys are computed using the root `globalConfigHash`, file path, and file content. Validity is
16
+ * verified via fast-path metadata (`mtimeMs` + `size`) with fallback to content hashing (`sha256`).
17
+ * 2. **Custom Plugin Namespace Modules** (e.g. `angular:script/global`, `sass:`): Modules loaded through
18
+ * custom esbuild namespaces that resolve to disk source files.
19
+ * 3. **Virtual Modules & Remote Resources** (e.g. `angular:styles/component`, `css-inline-fonts`): Synthetic
20
+ * in-memory modules or remote asset declarations whose compiled outcomes depend on parent source file
21
+ * dependencies (`watchFiles`) or global configuration options (`globalConfigHash`).
22
+ *
23
+ * Key Exported Types:
24
+ * - {@link PersistentLoadResultCache}: Primary two-tier cache manager implementing `LoadResultCache`.
25
+ * - {@link CachedLoadResultEntry}: Serialized structure persisted to disk for cached esbuild `OnLoadResult` items.
26
+ * - {@link CachedDependencyMetadata}: Per-dependency file metadata (`hash`, `mtimeMs`, `size`) used for cache validation and healing.
27
+ */
28
+ import type { Loader, OnLoadResult, PartialMessage } from 'esbuild';
29
+ import type { Cache as PersistentCacheStore } from '../../utils/cache';
30
+ import { LoadResultCache } from './load-result-cache';
31
+ /**
32
+ * Metadata for a single watch file dependency.
33
+ */
34
+ export interface CachedDependencyMetadata {
35
+ hash: string;
36
+ mtimeMs: number;
37
+ size: number;
38
+ }
39
+ /**
40
+ * Serialized representation of any esbuild load result stored in persistent cache.
41
+ */
42
+ export interface CachedLoadResultEntry {
43
+ /** Compiled output string or binary data */
44
+ contents: string | Uint8Array;
45
+ /** esbuild loader type */
46
+ loader?: Loader;
47
+ /** Absolute paths of all imported/watched dependency files */
48
+ watchFiles: string[];
49
+ /** Absolute paths of all watched directories */
50
+ watchDirs?: string[];
51
+ /** Map of watchFile absolute paths to dependency metadata */
52
+ watchFilesMetadata: Record<string, CachedDependencyMetadata>;
53
+ /** Warnings emitted during load processing */
54
+ warnings?: PartialMessage[];
55
+ /** Errors emitted during load processing */
56
+ errors?: PartialMessage[];
57
+ }
58
+ /**
59
+ * Normalizes a namespaced cache key into a valid disk file path if one exists.
60
+ * Handles 'file:' URIs, OS platform differences, and custom plugin namespaces.
61
+ */
62
+ export declare function extractDiskFilePath(path: string): string | undefined;
63
+ export declare class PersistentLoadResultCache implements LoadResultCache {
64
+ private readonly persistentStore?;
65
+ private readonly globalConfigHash;
66
+ private readonly memoryCache;
67
+ constructor(persistentStore?: PersistentCacheStore<CachedLoadResultEntry> | undefined, globalConfigHash?: string);
68
+ /**
69
+ * Retrieves a load result from cache.
70
+ * Checks L1 memory cache first for immediate watch-mode speed, falling back to L2 persistent disk
71
+ * store on L1 cache miss. L2 persistent cache entries are validated against dependency metadata.
72
+ */
73
+ get(path: string): Promise<OnLoadResult | undefined>;
74
+ /**
75
+ * Stores a load result in both L1 memory cache and L2 persistent disk store.
76
+ */
77
+ put(path: string, result: OnLoadResult): Promise<void>;
78
+ /**
79
+ * Invalidates cached entries affected by a modified dependency file during watch mode.
80
+ *
81
+ * Note: Invalidation of L1 memory cache is sufficient for active watch mode.
82
+ * Cross-process/cold start stale entries in L2 persistent store are automatically handled
83
+ * during `get()` via dependency metadata verification (`validateAndHealCacheEntry`).
84
+ */
85
+ invalidate(path: string): boolean;
86
+ get watchFiles(): ReadonlyArray<string>;
87
+ }