@depup/angular__build 22.1.8-depup.5 → 22.2.0-depup.1

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 +11 -15
  2. package/builders.json +1 -1
  3. package/changes.json +17 -33
  4. package/package.json +36 -51
  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,229 @@
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.PersistentLoadResultCache = void 0;
11
+ exports.extractDiskFilePath = extractDiskFilePath;
12
+ const promises_1 = require("node:fs/promises");
13
+ const node_path_1 = require("node:path");
14
+ const node_url_1 = require("node:url");
15
+ const concurrency_1 = require("../../utils/concurrency");
16
+ const hash_1 = require("../../utils/hash");
17
+ const load_result_cache_1 = require("./load-result-cache");
18
+ /**
19
+ * Calculates a unique cache key from the global configuration hash and path.
20
+ */
21
+ function calculateCacheKey(globalConfigHash, path) {
22
+ const hasher = (0, hash_1.createContentHash)();
23
+ hasher.update(globalConfigHash);
24
+ hasher.update('\0');
25
+ hasher.update(path);
26
+ return hasher.digest();
27
+ }
28
+ /**
29
+ * Normalizes a namespaced cache key into a valid disk file path if one exists.
30
+ * Handles 'file:' URIs, OS platform differences, and custom plugin namespaces.
31
+ */
32
+ function extractDiskFilePath(path) {
33
+ if (path.startsWith('file:')) {
34
+ const urlStr = path.startsWith('file://') ? path : 'file://' + path.slice(5);
35
+ try {
36
+ return (0, node_url_1.fileURLToPath)(urlStr);
37
+ }
38
+ catch {
39
+ const candidate = path.slice(5);
40
+ return (0, node_path_1.isAbsolute)(candidate) ? candidate : undefined;
41
+ }
42
+ }
43
+ // Handle custom namespace prefix (e.g. "sass:/path/to/file")
44
+ // Ensure colonIndex > 1 to avoid treating Windows drive letters (e.g. "C:/") as namespace prefixes.
45
+ const colonIndex = path.indexOf(':');
46
+ if (colonIndex > 1) {
47
+ const candidatePath = path.slice(colonIndex + 1);
48
+ if ((0, node_path_1.isAbsolute)(candidatePath)) {
49
+ return candidatePath;
50
+ }
51
+ }
52
+ return (0, node_path_1.isAbsolute)(path) ? path : undefined;
53
+ }
54
+ /** Maximum number of concurrent file system read/stat operations to prevent OS file descriptor exhaustion. */
55
+ const MAX_CONCURRENT_READS = 16;
56
+ /**
57
+ * Validates that all imported watch files exist on disk and their contents match.
58
+ * Performs a fast-path metadata check (mtime + size) first, falling back to content hashing.
59
+ * Heals/updates the cached metadata on disk if the content hash was valid but the metadata changed.
60
+ */
61
+ async function validateAndHealCacheEntry(watchFilesMetadata, store, cacheKey, cached) {
62
+ if (!watchFilesMetadata) {
63
+ return false;
64
+ }
65
+ const watchFiles = Object.keys(watchFilesMetadata);
66
+ let healed = false;
67
+ const isValidResults = await (0, concurrency_1.mapConcurrent)(watchFiles, MAX_CONCURRENT_READS, async (filePath) => {
68
+ try {
69
+ const stats = await (0, promises_1.stat)(filePath);
70
+ const expected = watchFilesMetadata[filePath];
71
+ if (!expected) {
72
+ return false;
73
+ }
74
+ // 1. Fast Path: size and mtime match
75
+ if (stats.size === expected.size && stats.mtimeMs === expected.mtimeMs) {
76
+ return true;
77
+ }
78
+ // 2. Slow Path: content hash fallback
79
+ const currentContent = await (0, promises_1.readFile)(filePath);
80
+ const currentHash = (0, hash_1.calculateHash)(currentContent);
81
+ if (currentHash === expected.hash) {
82
+ // Heal cache entry with new metadata
83
+ watchFilesMetadata[filePath] = {
84
+ ...expected,
85
+ mtimeMs: stats.mtimeMs,
86
+ size: stats.size,
87
+ };
88
+ healed = true;
89
+ return true;
90
+ }
91
+ return false;
92
+ }
93
+ catch {
94
+ return false;
95
+ }
96
+ });
97
+ if (isValidResults.some((isValid) => !isValid)) {
98
+ return false;
99
+ }
100
+ if (healed) {
101
+ try {
102
+ await store.put(cacheKey, cached);
103
+ }
104
+ catch {
105
+ // Ignore errors writing healed entries
106
+ }
107
+ }
108
+ return true;
109
+ }
110
+ /**
111
+ * Computes metadata (content hashes, mtime, size) for an array of watch file paths.
112
+ * Processes files with a sliding worker pool of 16 concurrent operations.
113
+ */
114
+ async function computeMetadataForWatchFiles(watchFiles, knownContents) {
115
+ const watchFilesMetadata = {};
116
+ await (0, concurrency_1.runConcurrent)(watchFiles, MAX_CONCURRENT_READS, async (filePath) => {
117
+ try {
118
+ const knownContent = knownContents?.get(filePath);
119
+ const [content, stats] = await Promise.all([
120
+ knownContent !== undefined ? knownContent : (0, promises_1.readFile)(filePath),
121
+ (0, promises_1.stat)(filePath),
122
+ ]);
123
+ const hash = (0, hash_1.calculateHash)(content);
124
+ watchFilesMetadata[filePath] = {
125
+ hash,
126
+ mtimeMs: stats.mtimeMs,
127
+ size: stats.size,
128
+ };
129
+ }
130
+ catch {
131
+ // Ignore unreadable files
132
+ }
133
+ });
134
+ return watchFilesMetadata;
135
+ }
136
+ class PersistentLoadResultCache {
137
+ persistentStore;
138
+ globalConfigHash;
139
+ memoryCache = new load_result_cache_1.MemoryLoadResultCache();
140
+ constructor(persistentStore, globalConfigHash = '') {
141
+ this.persistentStore = persistentStore;
142
+ this.globalConfigHash = globalConfigHash;
143
+ }
144
+ /**
145
+ * Retrieves a load result from cache.
146
+ * Checks L1 memory cache first for immediate watch-mode speed, falling back to L2 persistent disk
147
+ * store on L1 cache miss. L2 persistent cache entries are validated against dependency metadata.
148
+ */
149
+ async get(path) {
150
+ // 1. Check L1 Memory Cache
151
+ const memoryResult = this.memoryCache.get(path);
152
+ if (memoryResult) {
153
+ return memoryResult;
154
+ }
155
+ if (!this.persistentStore) {
156
+ return undefined;
157
+ }
158
+ // 2. Check L2 Persistent Disk Cache
159
+ const cacheKey = calculateCacheKey(this.globalConfigHash, path);
160
+ const cached = await this.persistentStore.get(cacheKey);
161
+ if (cached &&
162
+ (await validateAndHealCacheEntry(cached.watchFilesMetadata, this.persistentStore, cacheKey, cached))) {
163
+ const result = {
164
+ contents: cached.contents,
165
+ loader: cached.loader,
166
+ watchFiles: cached.watchFiles,
167
+ watchDirs: cached.watchDirs,
168
+ warnings: cached.warnings,
169
+ errors: cached.errors,
170
+ };
171
+ // Populate L1 Memory Cache for subsequent lookups
172
+ await this.memoryCache.put(path, result);
173
+ return result;
174
+ }
175
+ return undefined;
176
+ }
177
+ /**
178
+ * Stores a load result in both L1 memory cache and L2 persistent disk store.
179
+ */
180
+ async put(path, result) {
181
+ await this.memoryCache.put(path, result);
182
+ // Persist to L2 store if persistentStore is configured and contents exist (including empty strings/buffers)
183
+ if (this.persistentStore && result.contents !== undefined) {
184
+ let content = '';
185
+ const filePath = extractDiskFilePath(path);
186
+ if (filePath) {
187
+ try {
188
+ content = await (0, promises_1.readFile)(filePath);
189
+ }
190
+ catch {
191
+ // Skip L2 persistent store if target disk file cannot be read
192
+ return;
193
+ }
194
+ }
195
+ const cacheKey = calculateCacheKey(this.globalConfigHash, path);
196
+ // Reuse the target file's pre-read content buffer to avoid redundant disk reads (readFile)
197
+ // during dependency watch file metadata computation.
198
+ const knownContents = filePath
199
+ ? new Map([[filePath, content]])
200
+ : undefined;
201
+ const allWatchFiles = Array.from(new Set(filePath ? [filePath, ...(result.watchFiles ?? [])] : result.watchFiles));
202
+ const watchFilesMetadata = await computeMetadataForWatchFiles(allWatchFiles, knownContents);
203
+ await this.persistentStore.put(cacheKey, {
204
+ contents: result.contents,
205
+ loader: result.loader,
206
+ watchFiles: result.watchFiles ?? [],
207
+ watchDirs: result.watchDirs,
208
+ watchFilesMetadata,
209
+ warnings: result.warnings,
210
+ errors: result.errors,
211
+ });
212
+ }
213
+ }
214
+ /**
215
+ * Invalidates cached entries affected by a modified dependency file during watch mode.
216
+ *
217
+ * Note: Invalidation of L1 memory cache is sufficient for active watch mode.
218
+ * Cross-process/cold start stale entries in L2 persistent store are automatically handled
219
+ * during `get()` via dependency metadata verification (`validateAndHealCacheEntry`).
220
+ */
221
+ invalidate(path) {
222
+ return this.memoryCache.invalidate(path);
223
+ }
224
+ get watchFiles() {
225
+ return this.memoryCache.watchFiles;
226
+ }
227
+ }
228
+ exports.PersistentLoadResultCache = PersistentLoadResultCache;
229
+ //# sourceMappingURL=persistent-load-result-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistent-load-result-cache.js","sourceRoot":"","sources":["persistent-load-result-cache.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ export interface BundleStylesheetOptions {
14
14
  workspaceRoot: string;
15
15
  optimization: boolean;
16
16
  inlineFonts: boolean;
17
+ dataurl?: boolean;
17
18
  preserveSymlinks?: boolean;
18
19
  sourcemap: boolean | 'external' | 'inline' | 'linked';
19
20
  sourcesContent?: boolean;
@@ -33,7 +33,7 @@ function createStylesheetBundleOptions(options, cache, inlineComponentData) {
33
33
  pluginFactory.create(sass_language_1.SassStylesheetLanguage),
34
34
  pluginFactory.create(less_language_1.LessStylesheetLanguage),
35
35
  pluginFactory.create(css_language_1.CssStylesheetLanguage),
36
- (0, css_resource_plugin_1.createCssResourcePlugin)(cache),
36
+ (0, css_resource_plugin_1.createCssResourcePlugin)(cache, options.dataurl),
37
37
  ];
38
38
  if (options.inlineFonts) {
39
39
  plugins.unshift((0, css_inline_fonts_plugin_1.createCssInlineFontsPlugin)({ cache, cacheOptions: options.cacheOptions }));
@@ -1 +1 @@
1
- {"version":3,"file":"bundle-options.js","sourceRoot":"","sources":["bundle-options.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;AAgCH,sEAyDC;AAtFD,0DAA6B;AAI7B,uEAAuE;AACvE,iDAAuD;AACvD,+DAAgE;AAChE,mDAAyD;AACzD,mDAAyD;AACzD,2EAA4F;AAoB5F,SAAgB,6BAA6B,CAC3C,OAAgC,EAChC,KAAuB,EACvB,mBAA4C;IAE5C,6EAA6E;IAC7E,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAC7D,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,CACjD,CAAC;IAEF,MAAM,aAAa,GAAG,IAAI,mDAAuB,CAC/C;QACE,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS;QAC9B,YAAY;QACZ,mBAAmB;QACnB,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;QACpD,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;QAClD,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,EACD,KAAK,CACN,CAAC;IAEF,MAAM,OAAO,GAAa;QACxB,aAAa,CAAC,MAAM,CAAC,sCAAsB,CAAC;QAC5C,aAAa,CAAC,MAAM,CAAC,sCAAsB,CAAC;QAC5C,aAAa,CAAC,MAAM,CAAC,oCAAqB,CAAC;QAC3C,IAAA,6CAAuB,EAAC,KAAK,CAAC;KAC/B,CAAC;IAEF,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,OAAO,CAAC,OAAO,CAAC,IAAA,oDAA0B,EAAC,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAC7F,CAAC;IAED,OAAO;QACL,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,OAAO;QACvC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK;QACrC,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,OAAO,CAAC,YAAY;QAC5B,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,MAAM,EAAE,OAAO,CAAC,aAAa;QAC7B,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,SAAS;QACnB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,QAAQ,EAAE,OAAO,CAAC,oBAAoB;QACtC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC;QAC1F,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;QAC7B,6EAA6E;QAC7E,gFAAgF;QAChF,iBAAiB,EAAE,EAAE;QACrB,OAAO;KACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"bundle-options.js","sourceRoot":"","sources":["bundle-options.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;AAiCH,sEAyDC;AAvFD,0DAA6B;AAI7B,uEAAuE;AACvE,iDAAuD;AACvD,+DAAgE;AAChE,mDAAyD;AACzD,mDAAyD;AACzD,2EAA4F;AAqB5F,SAAgB,6BAA6B,CAC3C,OAAgC,EAChC,KAAuB,EACvB,mBAA4C;IAE5C,6EAA6E;IAC7E,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAC7D,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,CACjD,CAAC;IAEF,MAAM,aAAa,GAAG,IAAI,mDAAuB,CAC/C;QACE,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS;QAC9B,YAAY;QACZ,mBAAmB;QACnB,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;QACpD,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;QAClD,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,EACD,KAAK,CACN,CAAC;IAEF,MAAM,OAAO,GAAa;QACxB,aAAa,CAAC,MAAM,CAAC,sCAAsB,CAAC;QAC5C,aAAa,CAAC,MAAM,CAAC,sCAAsB,CAAC;QAC5C,aAAa,CAAC,MAAM,CAAC,oCAAqB,CAAC;QAC3C,IAAA,6CAAuB,EAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC;KAChD,CAAC;IAEF,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,OAAO,CAAC,OAAO,CAAC,IAAA,oDAA0B,EAAC,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAC7F,CAAC;IAED,OAAO;QACL,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,OAAO;QACvC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK;QACrC,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,OAAO,CAAC,YAAY;QAC5B,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,MAAM,EAAE,OAAO,CAAC,aAAa;QAC7B,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,SAAS;QACnB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,QAAQ,EAAE,OAAO,CAAC,oBAAoB;QACtC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC;QAC1F,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;QAC7B,6EAA6E;QAC7E,gFAAgF;QAChF,iBAAiB,EAAE,EAAE;QACrB,OAAO;KACR,CAAC;AACJ,CAAC"}
@@ -13,6 +13,8 @@ import { LoadResultCache } from '../load-result-cache';
13
13
  * and types to be supported without needing to manually specify all extensions
14
14
  * within the build configuration.
15
15
  *
16
+ * @param cache An optional load result cache.
17
+ * @param dataurl If true, resources will be loaded with the 'dataurl' loader to inline them as base64 data URIs.
16
18
  * @returns An esbuild {@link Plugin} instance.
17
19
  */
18
- export declare function createCssResourcePlugin(cache?: LoadResultCache): Plugin;
20
+ export declare function createCssResourcePlugin(cache?: LoadResultCache, dataurl?: boolean): Plugin;
@@ -23,9 +23,11 @@ const CSS_RESOURCE_RESOLUTION = Symbol('CSS_RESOURCE_RESOLUTION');
23
23
  * and types to be supported without needing to manually specify all extensions
24
24
  * within the build configuration.
25
25
  *
26
+ * @param cache An optional load result cache.
27
+ * @param dataurl If true, resources will be loaded with the 'dataurl' loader to inline them as base64 data URIs.
26
28
  * @returns An esbuild {@link Plugin} instance.
27
29
  */
28
- function createCssResourcePlugin(cache) {
30
+ function createCssResourcePlugin(cache, dataurl) {
29
31
  return {
30
32
  name: 'angular-css-resource',
31
33
  setup(build) {
@@ -104,7 +106,7 @@ function createCssResourcePlugin(cache) {
104
106
  const resourcePath = (0, node_path_1.join)(build.initialOptions.absWorkingDir ?? '', args.path);
105
107
  return {
106
108
  contents: await (0, promises_1.readFile)(resourcePath),
107
- loader: 'file',
109
+ loader: dataurl ? 'dataurl' : 'file',
108
110
  watchFiles: [resourcePath],
109
111
  };
110
112
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"css-resource-plugin.js","sourceRoot":"","sources":["css-resource-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"css-resource-plugin.js","sourceRoot":"","sources":["css-resource-plugin.ts"],"names":[],"mappings":"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"}
@@ -6,5 +6,14 @@
6
6
  * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  import { StylesheetLanguage } from './stylesheet-plugin-factory';
9
+ export declare function resetSassWorkerPoolCaches(): void;
9
10
  export declare function shutdownSassWorkerPool(): void;
10
11
  export declare const SassStylesheetLanguage: Readonly<StylesheetLanguage>;
12
+ export declare function isPackageUrl(url: string): boolean;
13
+ /**
14
+ * Returns the scope that qualifies the cached package resolutions of a stylesheet. A stylesheet
15
+ * within `node_modules` uses the root of its enclosing package, since every file of a package
16
+ * resolves its dependencies against the same `node_modules` directories. All other stylesheets use
17
+ * the working directory, allowing component stylesheets to share package resolutions.
18
+ */
19
+ export declare function getPackageScope(containingPath: string | undefined, workingDirectory: string | undefined): string;
@@ -41,24 +41,40 @@ var __importStar = (this && this.__importStar) || (function () {
41
41
  })();
42
42
  Object.defineProperty(exports, "__esModule", { value: true });
43
43
  exports.SassStylesheetLanguage = void 0;
44
+ exports.resetSassWorkerPoolCaches = resetSassWorkerPoolCaches;
44
45
  exports.shutdownSassWorkerPool = shutdownSassWorkerPool;
46
+ exports.isPackageUrl = isPackageUrl;
47
+ exports.getPackageScope = getPackageScope;
45
48
  const node_path_1 = require("node:path");
46
49
  const node_url_1 = require("node:url");
47
- const cache_1 = require("../cache");
48
- let sassWorkerPool;
49
- let sassWorkerPoolPromise;
50
+ const cache_1 = require("../../../utils/cache");
51
+ let sassService;
52
+ let sassServicePromise;
53
+ let resolutionCache;
54
+ let packageRootCache;
50
55
  function isSassException(error) {
51
56
  return !!error && typeof error === 'object' && 'sassMessage' in error;
52
57
  }
58
+ function resetSassWorkerPoolCaches() {
59
+ resolutionCache?.clear();
60
+ packageRootCache?.clear();
61
+ if (sassService) {
62
+ sassService.clearCache();
63
+ }
64
+ else if (sassServicePromise) {
65
+ void sassServicePromise.then((service) => service.clearCache());
66
+ }
67
+ }
53
68
  function shutdownSassWorkerPool() {
54
- if (sassWorkerPool) {
55
- void sassWorkerPool.close();
56
- sassWorkerPool = undefined;
69
+ resetSassWorkerPoolCaches();
70
+ if (sassService) {
71
+ void sassService.close();
72
+ sassService = undefined;
57
73
  }
58
- else if (sassWorkerPoolPromise) {
59
- void sassWorkerPoolPromise.then(shutdownSassWorkerPool);
74
+ else if (sassServicePromise) {
75
+ void sassServicePromise.then(shutdownSassWorkerPool);
60
76
  }
61
- sassWorkerPoolPromise = undefined;
77
+ sassServicePromise = undefined;
62
78
  }
63
79
  exports.SassStylesheetLanguage = Object.freeze({
64
80
  name: 'sass',
@@ -66,11 +82,7 @@ exports.SassStylesheetLanguage = Object.freeze({
66
82
  fileFilter: /\.s[ac]ss$/,
67
83
  process(data, file, format, options, build) {
68
84
  const syntax = format === 'sass' ? 'indented' : 'scss';
69
- const resolveUrl = async (url, options) => {
70
- let resolveDir = build.initialOptions.absWorkingDir;
71
- if (options.containingUrl) {
72
- resolveDir = (0, node_path_1.dirname)((0, node_url_1.fileURLToPath)(options.containingUrl));
73
- }
85
+ const resolveUrl = async (url, resolveDir) => {
74
86
  const path = url.startsWith('pkg:') ? url.slice(4) : url;
75
87
  const result = await build.resolve(path, {
76
88
  kind: 'import-rule',
@@ -78,9 +90,19 @@ exports.SassStylesheetLanguage = Object.freeze({
78
90
  });
79
91
  return result;
80
92
  };
81
- return compileString(data, file, syntax, options, resolveUrl);
93
+ return compileString(data, file, syntax, options, resolveUrl, build.initialOptions.absWorkingDir);
82
94
  },
83
95
  });
96
+ function isPackageUrl(url) {
97
+ if (url.startsWith('pkg:')) {
98
+ return true;
99
+ }
100
+ return (url.length > 0 &&
101
+ !url.startsWith('.') &&
102
+ !url.startsWith('/') &&
103
+ !url.startsWith('\\') &&
104
+ !url.includes(':'));
105
+ }
84
106
  function parsePackageName(url) {
85
107
  const parts = (url.startsWith('pkg:') ? url.slice(4) : url).split('/');
86
108
  const hasScope = parts.length >= 2 && parts[0][0] === '@';
@@ -93,26 +115,49 @@ function parsePackageName(url) {
93
115
  },
94
116
  };
95
117
  }
96
- async function compileString(data, filePath, syntax, options, resolveUrl) {
118
+ /**
119
+ * Returns the scope that qualifies the cached package resolutions of a stylesheet. A stylesheet
120
+ * within `node_modules` uses the root of its enclosing package, since every file of a package
121
+ * resolves its dependencies against the same `node_modules` directories. All other stylesheets use
122
+ * the working directory, allowing component stylesheets to share package resolutions.
123
+ */
124
+ function getPackageScope(containingPath, workingDirectory) {
125
+ // The directory segments of the stylesheet, excluding the file name
126
+ const segments = containingPath?.split(/[\\/]/).slice(0, -1) ?? [];
127
+ const index = segments.lastIndexOf('node_modules');
128
+ if (index === -1) {
129
+ return workingDirectory ?? '';
130
+ }
131
+ const packageNameLength = segments[index + 1]?.[0] === '@' ? 2 : 1;
132
+ return segments.slice(0, index + 1 + packageNameLength).join('/');
133
+ }
134
+ async function compileString(data, filePath, syntax, options, resolveUrl, workingDirectory) {
97
135
  // Lazily load Sass when a Sass file is found
98
- if (sassWorkerPool === undefined) {
99
- if (sassWorkerPoolPromise === undefined) {
100
- sassWorkerPoolPromise = Promise.resolve().then(() => __importStar(require('../../sass/sass-service'))).then((sassService) => new sassService.SassWorkerImplementation(true));
136
+ if (sassService === undefined) {
137
+ if (sassServicePromise === undefined) {
138
+ sassServicePromise = Promise.resolve().then(() => __importStar(require('../../sass/sass-service'))).then((sassService) => new sassService.SassCompiler(true));
139
+ }
140
+ try {
141
+ sassService = await sassServicePromise;
142
+ }
143
+ finally {
144
+ sassServicePromise = undefined;
101
145
  }
102
- sassWorkerPool = await sassWorkerPoolPromise;
103
146
  }
104
- // Cache is currently local to individual compile requests.
105
- // Caching follows Sass behavior where a given url will always resolve to the same value
106
- // regardless of its importer's path.
147
+ // Caching follows Sass behavior where a given package url will always resolve to the same value
148
+ // regardless of its importer's path, except for importers within `node_modules`, which are
149
+ // scoped to their enclosing package. Relative paths are qualified with the containing URL.
107
150
  // A null value indicates that the cached resolution attempt failed to find a location and
108
151
  // later stage resolution should be attempted. This avoids potentially expensive repeat
109
152
  // failing resolution attempts.
110
- const resolutionCache = new cache_1.MemoryCache();
111
- const packageRootCache = new cache_1.MemoryCache();
153
+ resolutionCache ??= new cache_1.MemoryCache();
154
+ packageRootCache ??= new cache_1.MemoryCache();
155
+ const currentResolutionCache = resolutionCache;
156
+ const currentPackageRootCache = packageRootCache;
112
157
  const warnings = [];
113
158
  const { silenceDeprecations, futureDeprecations, fatalDeprecations } = options.sass ?? {};
114
159
  try {
115
- const { css, sourceMap, loadedUrls } = await sassWorkerPool.compileStringAsync(data, {
160
+ const { css, sourceMap, loadedUrls } = await sassService.compileStringAsync(data, {
116
161
  url: (0, node_url_1.pathToFileURL)(filePath),
117
162
  style: 'expanded',
118
163
  syntax,
@@ -125,30 +170,44 @@ async function compileString(data, filePath, syntax, options, resolveUrl) {
125
170
  quietDeps: true,
126
171
  importers: [
127
172
  {
128
- findFileUrl: (url, options) => resolutionCache.getOrCreate(url, async () => {
129
- const result = await resolveUrl(url, options);
130
- if (result.path) {
131
- return (0, node_url_1.pathToFileURL)(result.path);
132
- }
133
- // Check for package deep imports
134
- const { packageName, pathSegments } = parsePackageName(url);
135
- // Caching package root locations is particularly beneficial for `@material/*` packages
136
- // which extensively use deep imports.
137
- const packageRoot = await packageRootCache.getOrCreate(packageName, async () => {
138
- // Use the required presence of a package root `package.json` file to resolve the location
139
- const packageResult = await resolveUrl(packageName + '/package.json', options);
140
- return packageResult.path ? (0, node_path_1.dirname)(packageResult.path) : null;
173
+ findFileUrl: (url, options) => {
174
+ const containingPath = options.containingUrl?.protocol === 'file:'
175
+ ? (0, node_url_1.fileURLToPath)(options.containingUrl)
176
+ : undefined;
177
+ const resolveDir = containingPath ? (0, node_path_1.dirname)(containingPath) : workingDirectory;
178
+ const isPackage = isPackageUrl(url);
179
+ const scope = getPackageScope(containingPath, workingDirectory);
180
+ const cacheKey = isPackage
181
+ ? `${scope}:${url}`
182
+ : `${options.containingUrl?.href ?? ''}:${url}`;
183
+ return currentResolutionCache.getOrCreate(cacheKey, async () => {
184
+ const result = await resolveUrl(url, resolveDir);
185
+ if (result.path) {
186
+ return (0, node_url_1.pathToFileURL)(result.path);
187
+ }
188
+ // Check for package deep imports
189
+ if (!isPackage) {
190
+ return null;
191
+ }
192
+ const { packageName, pathSegments } = parsePackageName(url);
193
+ // Caching package root locations is particularly beneficial for `@material/*` packages
194
+ // which extensively use deep imports.
195
+ const packageRoot = await currentPackageRootCache.getOrCreate(`${scope}:${packageName}`, async () => {
196
+ // Use the required presence of a package root `package.json` file to resolve the location
197
+ const packageResult = await resolveUrl(packageName + '/package.json', resolveDir);
198
+ return packageResult.path ? (0, node_path_1.dirname)(packageResult.path) : null;
199
+ });
200
+ // Package not found could be because of an error or the specifier is intended to be found
201
+ // via a later stage of the resolution process (`loadPaths`, etc.).
202
+ // Errors are reported after the full completion of the resolution process. Exceptions for
203
+ // not found packages should not be raised here.
204
+ if (packageRoot) {
205
+ return (0, node_url_1.pathToFileURL)((0, node_path_1.join)(packageRoot, ...pathSegments));
206
+ }
207
+ // Not found
208
+ return null;
141
209
  });
142
- // Package not found could be because of an error or the specifier is intended to be found
143
- // via a later stage of the resolution process (`loadPaths`, etc.).
144
- // Errors are reported after the full completion of the resolution process. Exceptions for
145
- // not found packages should not be raised here.
146
- if (packageRoot) {
147
- return (0, node_url_1.pathToFileURL)((0, node_path_1.join)(packageRoot, ...pathSegments));
148
- }
149
- // Not found
150
- return null;
151
- }),
210
+ },
152
211
  },
153
212
  ],
154
213
  logger: {
@@ -223,7 +282,7 @@ function* extractFilesFromStack(stack) {
223
282
  path += segments[index++];
224
283
  }
225
284
  if (path) {
226
- // Stack paths from dart-sass are relative to the current working directory (not input file or workspace root)
285
+ // Stack paths from sass are relative to the current working directory (not input file or workspace root)
227
286
  yield (0, node_path_1.join)(cwd, path);
228
287
  }
229
288
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sass-language.js","sourceRoot":"","sources":["sass-language.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sass-language.js","sourceRoot":"","sources":["sass-language.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
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 { BundleStylesheetOptions } from './bundle-options';
9
+ /**
10
+ * Generates a global hash based on all build options that affect stylesheet compilation.
11
+ *
12
+ * IMPORTANT: This hash acts as the root cache key prefix for all persistent stylesheet cache
13
+ * entries. Any change in the values hashed below will invalidate all cached stylesheet outputs
14
+ * across the entire application.
15
+ *
16
+ * Included build options and their rationale:
17
+ * - `optimization`: Affects CSS minification, dead code elimination, and whitespace stripping.
18
+ * - `sourcemap`: Toggles inline/external source map generation and comment insertion.
19
+ * - `sourcesContent`: Toggles embedding original source content inside generated source maps.
20
+ * - `includePaths`: Changes Sass/Less `@import` and `@use` path resolution search directories.
21
+ * - `sassOptions`: Changes Sass compiler deprecations and behavior flags.
22
+ * - `target`: Affects CSS property lowering and browser vendor prefixing in esbuild.
23
+ * - `publicPath`: Affects relative asset URL rewriting (`url('...')`) inside CSS output.
24
+ * - `outputNames`: Affects asset output filename hashing schemes.
25
+ * - `inlineFonts`: Controls whether external web font `@import` / `<link>` directives are inlined.
26
+ * - `preserveSymlinks`: Controls symlink realpath resolution in monorepos/pnpm workspace packages.
27
+ * - `externalDependencies`: Controls which CSS modules/urls are excluded from bundling.
28
+ * - `postcssConfig`: Path to custom PostCSS configuration file.
29
+ * - `tailwindConfig`: Path to Tailwind CSS configuration file.
30
+ * - `packageVersion`: Invalidates cache across `@angular/build` compiler toolchain updates.
31
+ *
32
+ * @note Maintainers: If any new build option is added to `BundleStylesheetOptions` or `@angular/build`
33
+ * that alters generated stylesheet code or asset outputs, it MUST be added to this hash object.
34
+ */
35
+ export declare function calculateGlobalStylesheetConfigHash(options: BundleStylesheetOptions, packageVersion?: string): string;