@depup/angular__build 22.1.8-depup.4 → 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 +13 -33
  4. package/package.json +31 -50
  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,231 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.dev/license
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ var __importDefault = (this && this.__importDefault) || function (mod) {
43
+ return (mod && mod.__esModule) ? mod : { "default": mod };
44
+ };
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.default = transformJavaScript;
47
+ const remapping_1 = __importDefault(require("@ampproject/remapping"));
48
+ const node_module_1 = require("node:module");
49
+ const node_worker_threads_1 = require("node:worker_threads");
50
+ const piscina_1 = __importDefault(require("piscina"));
51
+ const environment_options_js_1 = require("../../utils/environment-options.js");
52
+ const source_map_1 = require("../../utils/source-map");
53
+ const oxc_transform_js_1 = require("../oxc/oxc-transform.js");
54
+ const { sourcemap = false, thirdPartySourcemaps = false, advancedOptimizations = false, jit = false, } = (node_worker_threads_1.workerData || {});
55
+ let babelLinkerDeps;
56
+ const textDecoder = new TextDecoder();
57
+ const textEncoder = new TextEncoder();
58
+ async function instrumentCoverage(filename, data, useInputSourcemap) {
59
+ try {
60
+ let resolvedPath = 'istanbul-lib-instrument';
61
+ try {
62
+ const requireFn = (0, node_module_1.createRequire)(filename);
63
+ resolvedPath = requireFn.resolve('istanbul-lib-instrument');
64
+ }
65
+ catch {
66
+ // Fallback to pool worker import traversal
67
+ }
68
+ const { createInstrumenter } = (await Promise.resolve(`${resolvedPath}`).then(s => __importStar(require(s))));
69
+ const instrumenter = createInstrumenter({
70
+ produceSourceMap: useInputSourcemap,
71
+ esModules: true,
72
+ });
73
+ const inputSourceMap = useInputSourcemap ? (0, source_map_1.loadInputSourceMap)(filename, data) : undefined;
74
+ const instrumentedCode = instrumenter.instrumentSync(data, filename, inputSourceMap);
75
+ const lastMap = useInputSourcemap
76
+ ? instrumenter.lastSourceMap()
77
+ : undefined;
78
+ return {
79
+ code: instrumentedCode,
80
+ map: lastMap ?? undefined,
81
+ };
82
+ }
83
+ catch (error) {
84
+ throw new Error(`The 'istanbul-lib-instrument' package is required for code coverage but was not found. Please install the package.`, { cause: error });
85
+ }
86
+ }
87
+ async function transformJavaScript(request) {
88
+ const { filename, data, ...options } = request;
89
+ const useInputSourcemap = sourcemap && (!!thirdPartySourcemaps || !/[\\/]node_modules[\\/]/.test(filename));
90
+ let textData;
91
+ let inputSourceMap;
92
+ let isAlreadyStripped = false;
93
+ if (typeof data !== 'string') {
94
+ const trailing = (0, source_map_1.findTrailingSourceMapComment)(data);
95
+ if (trailing === null) {
96
+ // 0 comments: fast path, no sourcemap to load or strip
97
+ textData = textDecoder.decode(data);
98
+ isAlreadyStripped = true;
99
+ }
100
+ else if (trailing !== undefined) {
101
+ if (useInputSourcemap) {
102
+ inputSourceMap = (0, source_map_1.loadInputSourceMapFromUrl)(filename, trailing.urlLine);
103
+ if (inputSourceMap !== undefined) {
104
+ // Valid trailing sourcemap comment confirmed: safe to slice code buffer for transformation passes.
105
+ // Note: If no passes modify the code, the untouched original `data` buffer is returned below.
106
+ textData = textDecoder.decode(trailing.code);
107
+ isAlreadyStripped = true;
108
+ }
109
+ else {
110
+ // Not a valid trailing sourcemap (e.g. inside template literal): fallback to full decode
111
+ textData = textDecoder.decode(data);
112
+ }
113
+ }
114
+ else if ((0, source_map_1.isTrailingSourceMapComment)(trailing.urlLine)) {
115
+ // Valid trailing sourcemap comment confirmed: safe to slice code buffer
116
+ textData = textDecoder.decode(trailing.code);
117
+ isAlreadyStripped = true;
118
+ }
119
+ else {
120
+ // Fallback to full decode and state-machine stripping
121
+ textData = textDecoder.decode(data);
122
+ }
123
+ }
124
+ else {
125
+ // Multiple comments or comment not at line start: fall back to full decode and string parser
126
+ textData = textDecoder.decode(data);
127
+ }
128
+ }
129
+ else {
130
+ textData = data;
131
+ }
132
+ const transformedData = await transformJavaScriptImpl(filename, textData, {
133
+ ...options,
134
+ inputSourceMap,
135
+ isAlreadyStripped,
136
+ });
137
+ // If no transformations modified the code, return the original untouched data buffer via `move`.
138
+ // This preserves any original trailing sourcemap comment and avoids re-encoding.
139
+ if (transformedData === textData && typeof data !== 'string') {
140
+ return piscina_1.default.move(data);
141
+ }
142
+ return piscina_1.default.move(textEncoder.encode(transformedData));
143
+ }
144
+ async function transformJavaScriptImpl(filename, data, options) {
145
+ const shouldLink = !options.skipLinker;
146
+ const useInputSourcemap = sourcemap && (!!thirdPartySourcemaps || !/[\\/]node_modules[\\/]/.test(filename));
147
+ let code = data;
148
+ const maps = [];
149
+ let coverageMap;
150
+ if (options.instrumentForCoverage) {
151
+ const result = await instrumentCoverage(filename, code, useInputSourcemap);
152
+ code = result.code;
153
+ coverageMap = result.map;
154
+ }
155
+ if (shouldLink && environment_options_js_1.useBabelLinker) {
156
+ babelLinkerDeps ??= Promise.all([
157
+ Promise.resolve().then(() => __importStar(require('@angular/compiler-cli/linker/babel'))),
158
+ Promise.resolve().then(() => __importStar(require('@angular/compiler-cli'))),
159
+ Promise.resolve().then(() => __importStar(require('@babel/core'))),
160
+ ]);
161
+ const [{ createEs2015LinkerPlugin }, { ConsoleLogger, LogLevel }, { transformAsync }] = await babelLinkerDeps;
162
+ const result = await transformAsync(code, {
163
+ filename,
164
+ inputSourceMap: false,
165
+ sourceMaps: !!useInputSourcemap,
166
+ compact: false,
167
+ configFile: false,
168
+ babelrc: false,
169
+ browserslistConfigFile: false,
170
+ plugins: [
171
+ createEs2015LinkerPlugin({
172
+ fileSystem: {
173
+ exists: () => false,
174
+ readFile: () => '',
175
+ resolve: (...paths) => paths.join('/'),
176
+ dirname: (path) => path.split('/').slice(0, -1).join('/'),
177
+ relative: (_from, to) => to,
178
+ },
179
+ logger: new ConsoleLogger(LogLevel.info),
180
+ linkerJitMode: jit,
181
+ // This is a workaround until https://github.com/angular/angular/issues/42769 is fixed.
182
+ sourceMapping: false,
183
+ }),
184
+ ],
185
+ });
186
+ code = result?.code ?? code;
187
+ if (result?.map) {
188
+ maps.push(result.map);
189
+ }
190
+ }
191
+ // Run Oxc linking and/or advanced optimizations in a single unified AST traversal pass
192
+ const oxcLink = shouldLink && !environment_options_js_1.useBabelLinker;
193
+ if (oxcLink || advancedOptimizations) {
194
+ const sideEffectFree = options.sideEffects === false;
195
+ const safeAngularPackage = sideEffectFree && /[\\/]node_modules[\\/]@angular[\\/]/.test(filename);
196
+ const topLevelSafeMode = !safeAngularPackage;
197
+ const result = (0, oxc_transform_js_1.transform)(filename, code, {
198
+ link: oxcLink,
199
+ jit,
200
+ advancedOptimizations,
201
+ sourcemap: useInputSourcemap,
202
+ sideEffects: options.sideEffects,
203
+ topLevelSafeMode,
204
+ });
205
+ code = result.code;
206
+ if (result.map) {
207
+ maps.push(result.map);
208
+ }
209
+ }
210
+ if (useInputSourcemap) {
211
+ const baseMap = coverageMap ?? options.inputSourceMap ?? (0, source_map_1.loadInputSourceMap)(filename, data);
212
+ if (maps.length > 0 || coverageMap) {
213
+ if (!options.isAlreadyStripped) {
214
+ code = (0, source_map_1.removeSourceMappingURL)(code);
215
+ }
216
+ const remappingChain = maps.reverse();
217
+ if (baseMap) {
218
+ remappingChain.push(baseMap);
219
+ }
220
+ if (remappingChain.length > 0) {
221
+ const finalMap = (0, remapping_1.default)(remappingChain, () => null).toString();
222
+ const base64Map = Buffer.from(finalMap).toString('base64');
223
+ code += `\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,${base64Map}`;
224
+ }
225
+ }
226
+ return code;
227
+ }
228
+ // Strip sourcemaps if they should not be used
229
+ return options.isAlreadyStripped ? code : (0, source_map_1.removeSourceMappingURL)(code);
230
+ }
231
+ //# sourceMappingURL=javascript-transformer-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"javascript-transformer-worker.js","sourceRoot":"","sources":["javascript-transformer-worker.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
6
  * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
- import { Cache } from './cache';
8
+ import { Cache } from '../../utils/cache';
9
9
  /**
10
10
  * Transformation options that should apply to all transformed files and data.
11
11
  */
@@ -14,6 +14,25 @@ export interface JavaScriptTransformerOptions {
14
14
  thirdPartySourcemaps?: boolean;
15
15
  advancedOptimizations?: boolean;
16
16
  jit?: boolean;
17
+ /**
18
+ * The maximum number of concurrent transformation operations.
19
+ * When omitted, concurrency defaults to the available worker pool threads.
20
+ */
21
+ maxConcurrency?: number;
22
+ }
23
+ /**
24
+ * Transformation options for an individual file or data transform request.
25
+ */
26
+ export interface TransformOptions {
27
+ /** If true, bypass all Angular linker processing; if false, attempt linking. */
28
+ skipLinker?: boolean;
29
+ /**
30
+ * An optional lazy resolver callback that returns whether the file has side-effects.
31
+ * If it resolves to false, top-level pure function annotations and decorator wrapping may be applied.
32
+ */
33
+ sideEffects?: () => Promise<boolean | undefined>;
34
+ /** If true, instrument the code for test coverage. */
35
+ instrumentForCoverage?: boolean;
17
36
  }
18
37
  /**
19
38
  * A class that performs transformation of JavaScript files and raw data.
@@ -24,28 +43,26 @@ export interface JavaScriptTransformerOptions {
24
43
  */
25
44
  export declare class JavaScriptTransformer {
26
45
  #private;
27
- readonly maxThreads: number;
46
+ private readonly options;
28
47
  private readonly cache?;
29
- constructor(options: JavaScriptTransformerOptions, maxThreads: number, cache?: Cache<Uint8Array> | undefined);
48
+ constructor(options: JavaScriptTransformerOptions, cache?: Cache<Uint8Array> | undefined);
30
49
  /**
31
50
  * Performs JavaScript transformations on a file from the filesystem.
32
51
  * If no transformations are required, the data for the original file will be returned.
33
52
  * @param filename The full path to the file.
34
- * @param skipLinker If true, bypass all Angular linker processing; if false, attempt linking.
35
- * @param sideEffects If false, and `advancedOptimizations` is enabled tslib decorators are wrapped.
53
+ * @param options Transformation options specific to this file.
36
54
  * @returns A promise that resolves to a UTF-8 encoded Uint8Array containing the result.
37
55
  */
38
- transformFile(filename: string, skipLinker?: boolean, sideEffects?: boolean, instrumentForCoverage?: boolean): Promise<Uint8Array>;
56
+ transformFile(filename: string, options?: TransformOptions): Promise<Uint8Array>;
39
57
  /**
40
58
  * Performs JavaScript transformations on the provided data of a file. The file does not need
41
59
  * to exist on the filesystem.
42
60
  * @param filename The full path of the file represented by the data.
43
61
  * @param data The data of the file that should be transformed.
44
- * @param skipLinker If true, bypass all Angular linker processing; if false, attempt linking.
45
- * @param sideEffects If false, and `advancedOptimizations` is enabled tslib decorators are wrapped.
62
+ * @param options Transformation options specific to this file data.
46
63
  * @returns A promise that resolves to a UTF-8 encoded Uint8Array containing the result.
47
64
  */
48
- transformData(filename: string, data: string, skipLinker: boolean, sideEffects?: boolean, instrumentForCoverage?: boolean): Promise<Uint8Array>;
65
+ transformData(filename: string, data: string | Uint8Array, options?: TransformOptions): Promise<Uint8Array>;
49
66
  /**
50
67
  * Stops all active transformation tasks and shuts down all workers.
51
68
  * @returns A void promise that resolves when closing is complete.
@@ -0,0 +1,294 @@
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.JavaScriptTransformer = void 0;
11
+ const promises_1 = require("node:fs/promises");
12
+ const hash_1 = require("../../utils/hash");
13
+ const utils_1 = require("../../utils/server-rendering/esm-in-memory-loader/utils");
14
+ const source_map_1 = require("../../utils/source-map");
15
+ const worker_pool_1 = require("../../utils/worker-pool");
16
+ const LINKER_DECLARATION_PREFIX = 'ɵɵngDeclare';
17
+ const LINKER_DECLARATION_PREFIX_BYTES = Buffer.from(LINKER_DECLARATION_PREFIX, 'utf-8');
18
+ const ADVANCED_OPTIMIZATION_TOKENS = [
19
+ 'ɵ',
20
+ 'InjectionToken',
21
+ 'INJECTOR_KEY',
22
+ 'ctorParameters',
23
+ 'decorators',
24
+ 'propDecorators',
25
+ ];
26
+ const ADVANCED_OPTIMIZATION_TOKEN_BYTES = ADVANCED_OPTIMIZATION_TOKENS.map((token) => Buffer.from(token, 'utf-8'));
27
+ const DECORATOR_TOKENS = ['__decorate', '__esDecorate'];
28
+ const DECORATOR_TOKEN_BYTES = DECORATOR_TOKENS.map((token) => Buffer.from(token, 'utf-8'));
29
+ const ADVANCED_OPTIMIZATION_REGEX = new RegExp(ADVANCED_OPTIMIZATION_TOKENS.join('|'));
30
+ const DECORATOR_REGEX = new RegExp(DECORATOR_TOKENS.join('|'));
31
+ /**
32
+ * Determines whether JavaScript code contains potential candidate constructs for advanced optimizations.
33
+ * When false, advanced optimizations can be bypassed without worker dispatch or AST parsing.
34
+ *
35
+ * @param filename The full path to the file.
36
+ * @param data The data (string or Buffer) of the file.
37
+ * @param sideEffects An optional lazy resolver callback that returns whether the file is considered side-effect free.
38
+ * @returns True if the code may contain constructs that advanced optimizations can mutate.
39
+ */
40
+ async function hasAdvancedOptimizationCandidates(filename, data, sideEffects) {
41
+ // Side-effect-free @angular/ packages undergo top-level pure function annotations
42
+ if (/[\\/]node_modules[\\/]@angular[\\/]/.test(filename) && (await sideEffects?.()) === false) {
43
+ return true;
44
+ }
45
+ if (typeof data === 'string') {
46
+ const hasDecorators = DECORATOR_REGEX.test(data);
47
+ if (hasDecorators && (await sideEffects?.()) === false) {
48
+ return true;
49
+ }
50
+ return ADVANCED_OPTIMIZATION_REGEX.test(data);
51
+ }
52
+ const dataBuffer = Buffer.isBuffer(data)
53
+ ? data
54
+ : Buffer.from(data.buffer, data.byteOffset, data.byteLength);
55
+ for (const tokenBytes of DECORATOR_TOKEN_BYTES) {
56
+ if (dataBuffer.includes(tokenBytes)) {
57
+ if ((await sideEffects?.()) === false) {
58
+ return true;
59
+ }
60
+ break;
61
+ }
62
+ }
63
+ for (const tokenBytes of ADVANCED_OPTIMIZATION_TOKEN_BYTES) {
64
+ if (dataBuffer.includes(tokenBytes)) {
65
+ return true;
66
+ }
67
+ }
68
+ return false;
69
+ }
70
+ /**
71
+ * Determines whether JavaScript code requires Angular linker processing.
72
+ *
73
+ * @param path The full path to the file.
74
+ * @param data The data (string or Buffer) of the file.
75
+ * @returns True if the code contains an Angular partial declaration; otherwise false.
76
+ */
77
+ function requiresLinking(path, data) {
78
+ // @angular/core and @angular/compiler will cause false positives
79
+ // Also, TypeScript files do not require linking
80
+ if (/[\\/]@angular[\\/](?:compiler|core)[\\/]|\.[cm]?tsx?$/.test(path)) {
81
+ return false;
82
+ }
83
+ if (typeof data === 'string') {
84
+ return data.includes(LINKER_DECLARATION_PREFIX);
85
+ }
86
+ const dataBuffer = Buffer.isBuffer(data)
87
+ ? data
88
+ : Buffer.from(data.buffer, data.byteOffset, data.byteLength);
89
+ return dataBuffer.includes(LINKER_DECLARATION_PREFIX_BYTES);
90
+ }
91
+ /**
92
+ * A class that performs transformation of JavaScript files and raw data.
93
+ * A worker pool is used to distribute the transformation actions and allow
94
+ * parallel processing. Transformation behavior is based on the filename and
95
+ * data. Transformations may include: async downleveling, Angular linking,
96
+ * and advanced optimizations.
97
+ */
98
+ class JavaScriptTransformer {
99
+ options;
100
+ cache;
101
+ #workerPool;
102
+ #commonOptions;
103
+ #fileCacheKeyBase;
104
+ /** Queue of pending transformation tasks waiting for an active concurrency slot. */
105
+ #pendingTasks = [];
106
+ /** Current count of actively executing transformation tasks. */
107
+ #activeTasks = 0;
108
+ get #maxConcurrency() {
109
+ return this.options.maxConcurrency ?? (this.#workerPool?.maxThreads || 1);
110
+ }
111
+ constructor(options, cache) {
112
+ this.options = options;
113
+ this.cache = cache;
114
+ if (options.maxConcurrency !== undefined &&
115
+ (!Number.isInteger(options.maxConcurrency) || options.maxConcurrency < 1)) {
116
+ throw new RangeError('options.maxConcurrency must be an integer greater than or equal to 1.');
117
+ }
118
+ // Extract options to ensure only the named options are serialized and sent to the worker
119
+ const { sourcemap, thirdPartySourcemaps = false, advancedOptimizations = false, jit = false, } = options;
120
+ this.#commonOptions = {
121
+ sourcemap,
122
+ thirdPartySourcemaps,
123
+ advancedOptimizations,
124
+ jit,
125
+ };
126
+ this.#fileCacheKeyBase = Buffer.from(JSON.stringify(this.#commonOptions), 'utf-8');
127
+ this.#workerPool = this.#ensureWorkerPool();
128
+ }
129
+ /**
130
+ * Executes a transformation action using a semaphore-based backpressure throttle.
131
+ * Prevents libuv thread pool saturation and excessive V8 heap accumulation.
132
+ * @param action A callback that produces a promise for the transformation result.
133
+ * @returns A promise resolving to the transformation result.
134
+ */
135
+ async #runWithThrottle(action) {
136
+ if (this.#activeTasks >= this.#maxConcurrency) {
137
+ await new Promise((resolve, reject) => {
138
+ this.#pendingTasks.push({ resolve, reject });
139
+ });
140
+ }
141
+ else {
142
+ this.#activeTasks++;
143
+ }
144
+ try {
145
+ return await action();
146
+ }
147
+ finally {
148
+ const next = this.#pendingTasks.shift();
149
+ if (next) {
150
+ next.resolve();
151
+ }
152
+ else {
153
+ this.#activeTasks--;
154
+ }
155
+ }
156
+ }
157
+ #ensureWorkerPool() {
158
+ if (this.#workerPool) {
159
+ return this.#workerPool;
160
+ }
161
+ const workerPoolOptions = {
162
+ filename: require.resolve('./javascript-transformer-worker'),
163
+ workerData: this.#commonOptions,
164
+ ...(this.options.maxConcurrency !== undefined && {
165
+ minThreads: this.options.maxConcurrency,
166
+ maxThreads: this.options.maxConcurrency,
167
+ }),
168
+ };
169
+ // Prevent passing SSR `--import` (loader-hooks) from parent to child worker.
170
+ const filteredExecArgv = process.execArgv.filter((v) => v !== utils_1.IMPORT_EXEC_ARGV);
171
+ if (process.execArgv.length !== filteredExecArgv.length) {
172
+ workerPoolOptions.execArgv = filteredExecArgv;
173
+ }
174
+ this.#workerPool = new worker_pool_1.WorkerPool(workerPoolOptions);
175
+ return this.#workerPool;
176
+ }
177
+ /**
178
+ * Performs JavaScript transformations on a file from the filesystem.
179
+ * If no transformations are required, the data for the original file will be returned.
180
+ * @param filename The full path to the file.
181
+ * @param options Transformation options specific to this file.
182
+ * @returns A promise that resolves to a UTF-8 encoded Uint8Array containing the result.
183
+ */
184
+ async transformFile(filename, options) {
185
+ return this.#runWithThrottle(async () => {
186
+ const data = await (0, promises_1.readFile)(filename);
187
+ return this.#transform(filename, data, options);
188
+ });
189
+ }
190
+ /**
191
+ * Performs JavaScript transformations on the provided data of a file. The file does not need
192
+ * to exist on the filesystem.
193
+ * @param filename The full path of the file represented by the data.
194
+ * @param data The data of the file that should be transformed.
195
+ * @param options Transformation options specific to this file data.
196
+ * @returns A promise that resolves to a UTF-8 encoded Uint8Array containing the result.
197
+ */
198
+ async transformData(filename, data, options) {
199
+ return this.#runWithThrottle(() => this.#transform(filename, data, options));
200
+ }
201
+ async #transform(filename, data, options) {
202
+ let resolvedSideEffects;
203
+ let sideEffectsQueried = false;
204
+ const sideEffectsGetter = options?.sideEffects
205
+ ? async () => {
206
+ if (!sideEffectsQueried) {
207
+ sideEffectsQueried = true;
208
+ resolvedSideEffects = await options.sideEffects?.();
209
+ }
210
+ return resolvedSideEffects;
211
+ }
212
+ : undefined;
213
+ const shouldLink = !options?.skipLinker && requiresLinking(filename, data);
214
+ const shouldOptimize = this.#commonOptions.advancedOptimizations &&
215
+ (await hasAdvancedOptimizationCandidates(filename, data, sideEffectsGetter));
216
+ // Perform a quick test to determine if the data needs any transformations.
217
+ // This allows directly returning the data without the worker communication overhead.
218
+ if (!shouldLink && !shouldOptimize && !options?.instrumentForCoverage) {
219
+ const keepSourcemap = this.#commonOptions.sourcemap &&
220
+ (!!this.#commonOptions.thirdPartySourcemaps || !/[\\/]node_modules[\\/]/.test(filename));
221
+ if (typeof data === 'string') {
222
+ return Buffer.from(keepSourcemap ? data : (0, source_map_1.removeSourceMappingURL)(data), 'utf-8');
223
+ }
224
+ return keepSourcemap ? data : (0, source_map_1.removeSourceMappingURL)(data);
225
+ }
226
+ let cacheKey;
227
+ if (this.cache) {
228
+ // Create a cache key from the file data and options that affect the output.
229
+ // NOTE: If additional options are added, this may need to be updated.
230
+ const hasher = (0, hash_1.createContentHash)();
231
+ hasher.update(`${!options?.skipLinker}--${resolvedSideEffects === false}--${!!options?.instrumentForCoverage}`);
232
+ hasher.update(data);
233
+ hasher.update(this.#fileCacheKeyBase);
234
+ cacheKey = hasher.digest();
235
+ try {
236
+ const cached = await this.cache.get(cacheKey);
237
+ if (cached !== undefined) {
238
+ return cached;
239
+ }
240
+ }
241
+ catch {
242
+ // Failure to get the value should not fail the transform
243
+ }
244
+ }
245
+ // Only standalone (non-pooled) ArrayBuffers can be transferred across worker threads.
246
+ // Node.js shares an internal 8KB ArrayBuffer pool for small buffers, and transferring
247
+ // a pooled buffer will throw a DataCloneError because detaching it invalidates other slices.
248
+ // In addition, SharedArrayBuffers cannot be transferred, and Yarn PnP has deserialization issues.
249
+ const isTransferable = typeof data !== 'string' &&
250
+ data.buffer instanceof ArrayBuffer &&
251
+ data.byteOffset === 0 &&
252
+ data.byteLength === data.buffer.byteLength &&
253
+ !process.versions.pnp;
254
+ const result = (await this.#ensureWorkerPool().run({
255
+ filename,
256
+ data,
257
+ skipLinker: !shouldLink,
258
+ sideEffects: resolvedSideEffects,
259
+ instrumentForCoverage: options?.instrumentForCoverage,
260
+ }, {
261
+ transferList: isTransferable ? [data.buffer] : undefined,
262
+ }));
263
+ if (this.cache && cacheKey) {
264
+ try {
265
+ await this.cache.put(cacheKey, result);
266
+ }
267
+ catch {
268
+ // Failure to store the value in the cache should not fail the transform
269
+ }
270
+ }
271
+ return result;
272
+ }
273
+ /**
274
+ * Stops all active transformation tasks and shuts down all workers.
275
+ * @returns A void promise that resolves when closing is complete.
276
+ */
277
+ async close() {
278
+ const pending = this.#pendingTasks;
279
+ this.#pendingTasks = [];
280
+ for (const task of pending) {
281
+ task.reject(new Error('JavaScriptTransformer closed.'));
282
+ }
283
+ if (this.#workerPool) {
284
+ try {
285
+ await this.#workerPool.destroy();
286
+ }
287
+ finally {
288
+ this.#workerPool = undefined;
289
+ }
290
+ }
291
+ }
292
+ }
293
+ exports.JavaScriptTransformer = JavaScriptTransformer;
294
+ //# sourceMappingURL=javascript-transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"javascript-transformer.js","sourceRoot":"","sources":["javascript-transformer.ts"],"names":[],"mappings":"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"}
@@ -5,12 +5,15 @@
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
6
  * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
+ import type { DecodedSourceMap } from '@ampproject/remapping';
8
9
  export interface OxcTransformOptions {
9
10
  sourcemap?: boolean;
10
- jit?: boolean;
11
11
  sideEffects?: boolean;
12
12
  topLevelSafeMode?: boolean;
13
13
  pureAnnotate?: boolean;
14
+ link?: boolean;
15
+ jit?: boolean;
16
+ advancedOptimizations?: boolean;
14
17
  }
15
18
  /**
16
19
  * Executes a single-pass optimized transformation using oxc-parser and magic-string.
@@ -24,5 +27,5 @@ export interface OxcTransformOptions {
24
27
  */
25
28
  export declare function transform(filename: string, code: string, options: OxcTransformOptions): {
26
29
  code: string;
27
- map: string | undefined;
30
+ map: DecodedSourceMap | undefined;
28
31
  };