@angular/build 21.0.0-next.1 → 21.0.0-next.10

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 (424) hide show
  1. package/index.js +1 -0
  2. package/index.js.map +1 -0
  3. package/package.json +18 -18
  4. package/private/index.js +1 -0
  5. package/private/index.js.map +1 -0
  6. package/src/builders/application/build-action.js +1 -0
  7. package/src/builders/application/build-action.js.map +1 -0
  8. package/src/builders/application/chunk-optimizer.js +1 -0
  9. package/src/builders/application/chunk-optimizer.js.map +1 -0
  10. package/src/builders/application/execute-build.js +1 -0
  11. package/src/builders/application/execute-build.js.map +1 -0
  12. package/src/builders/application/execute-post-bundle.js +1 -0
  13. package/src/builders/application/execute-post-bundle.js.map +1 -0
  14. package/src/builders/application/i18n.js +1 -0
  15. package/src/builders/application/i18n.js.map +1 -0
  16. package/src/builders/application/index.js +42 -1
  17. package/src/builders/application/index.js.map +1 -0
  18. package/src/builders/application/options.d.ts +4 -1
  19. package/src/builders/application/options.js +1 -0
  20. package/src/builders/application/options.js.map +1 -0
  21. package/src/builders/application/results.js +1 -0
  22. package/src/builders/application/results.js.map +1 -0
  23. package/src/builders/application/schema.d.ts +14 -1
  24. package/src/builders/application/schema.js +7 -0
  25. package/src/builders/application/schema.js.map +1 -0
  26. package/src/builders/application/schema.json +2 -2
  27. package/src/builders/application/setup-bundling.js +1 -0
  28. package/src/builders/application/setup-bundling.js.map +1 -0
  29. package/src/builders/dev-server/builder.js +1 -0
  30. package/src/builders/dev-server/builder.js.map +1 -0
  31. package/src/builders/dev-server/index.js +1 -0
  32. package/src/builders/dev-server/index.js.map +1 -0
  33. package/src/builders/dev-server/internal.js +1 -0
  34. package/src/builders/dev-server/internal.js.map +1 -0
  35. package/src/builders/dev-server/options.d.ts +3 -0
  36. package/src/builders/dev-server/options.js +3 -1
  37. package/src/builders/dev-server/options.js.map +1 -0
  38. package/src/builders/dev-server/output.js +1 -0
  39. package/src/builders/dev-server/output.js.map +1 -0
  40. package/src/builders/dev-server/schema.d.ts +9 -0
  41. package/src/builders/dev-server/schema.js +1 -0
  42. package/src/builders/dev-server/schema.js.map +1 -0
  43. package/src/builders/dev-server/schema.json +7 -0
  44. package/src/builders/dev-server/vite/hmr.js +1 -0
  45. package/src/builders/dev-server/vite/hmr.js.map +1 -0
  46. package/src/builders/dev-server/vite/index.js +14 -5
  47. package/src/builders/dev-server/vite/index.js.map +1 -0
  48. package/src/builders/dev-server/vite/server.js +2 -4
  49. package/src/builders/dev-server/vite/server.js.map +1 -0
  50. package/src/builders/dev-server/vite/utils.js +1 -0
  51. package/src/builders/dev-server/vite/utils.js.map +1 -0
  52. package/src/builders/extract-i18n/application-extraction.js +1 -0
  53. package/src/builders/extract-i18n/application-extraction.js.map +1 -0
  54. package/src/builders/extract-i18n/builder.js +2 -3
  55. package/src/builders/extract-i18n/builder.js.map +1 -0
  56. package/src/builders/extract-i18n/index.js +1 -0
  57. package/src/builders/extract-i18n/index.js.map +1 -0
  58. package/src/builders/extract-i18n/options.js +1 -0
  59. package/src/builders/extract-i18n/options.js.map +1 -0
  60. package/src/builders/extract-i18n/schema.js +1 -0
  61. package/src/builders/extract-i18n/schema.js.map +1 -0
  62. package/src/builders/karma/application_builder.d.ts +0 -2
  63. package/src/builders/karma/application_builder.js +52 -352
  64. package/src/builders/karma/application_builder.js.map +1 -0
  65. package/src/builders/karma/assets-middleware.d.ts +26 -0
  66. package/src/builders/karma/assets-middleware.js +66 -0
  67. package/src/builders/karma/assets-middleware.js.map +1 -0
  68. package/src/builders/karma/coverage.d.ts +9 -0
  69. package/src/builders/karma/coverage.js +32 -0
  70. package/src/builders/karma/coverage.js.map +1 -0
  71. package/src/builders/karma/find-tests.d.ts +1 -8
  72. package/src/builders/karma/find-tests.js +7 -102
  73. package/src/builders/karma/find-tests.js.map +1 -0
  74. package/src/builders/karma/index.js +1 -0
  75. package/src/builders/karma/index.js.map +1 -0
  76. package/src/builders/karma/karma-config.d.ts +11 -0
  77. package/src/builders/karma/karma-config.js +80 -0
  78. package/src/builders/karma/karma-config.js.map +1 -0
  79. package/src/builders/karma/options.js +1 -0
  80. package/src/builders/karma/options.js.map +1 -0
  81. package/src/builders/karma/polyfills-plugin.d.ts +13 -0
  82. package/src/builders/karma/polyfills-plugin.js +75 -0
  83. package/src/builders/karma/polyfills-plugin.js.map +1 -0
  84. package/src/builders/karma/progress-reporter.d.ts +17 -0
  85. package/src/builders/karma/progress-reporter.js +76 -0
  86. package/src/builders/karma/progress-reporter.js.map +1 -0
  87. package/src/builders/karma/schema.js +1 -0
  88. package/src/builders/karma/schema.js.map +1 -0
  89. package/src/builders/karma/utils.d.ts +17 -0
  90. package/src/builders/karma/utils.js +67 -0
  91. package/src/builders/karma/utils.js.map +1 -0
  92. package/src/builders/ng-packagr/builder.js +1 -0
  93. package/src/builders/ng-packagr/builder.js.map +1 -0
  94. package/src/builders/ng-packagr/index.js +1 -0
  95. package/src/builders/ng-packagr/index.js.map +1 -0
  96. package/src/builders/ng-packagr/schema.js +1 -0
  97. package/src/builders/ng-packagr/schema.js.map +1 -0
  98. package/src/builders/unit-test/builder.js +158 -44
  99. package/src/builders/unit-test/builder.js.map +1 -0
  100. package/src/builders/unit-test/index.js +1 -0
  101. package/src/builders/unit-test/index.js.map +1 -0
  102. package/src/builders/unit-test/options.d.ts +25 -6
  103. package/src/builders/unit-test/options.js +61 -13
  104. package/src/builders/unit-test/options.js.map +1 -0
  105. package/src/builders/unit-test/runners/api.d.ts +19 -1
  106. package/src/builders/unit-test/runners/api.js +1 -0
  107. package/src/builders/unit-test/runners/api.js.map +1 -0
  108. package/src/builders/unit-test/runners/dependency-checker.d.ts +43 -0
  109. package/src/builders/unit-test/runners/dependency-checker.js +83 -0
  110. package/src/builders/unit-test/runners/dependency-checker.js.map +1 -0
  111. package/src/builders/unit-test/runners/karma/executor.js +72 -5
  112. package/src/builders/unit-test/runners/karma/executor.js.map +1 -0
  113. package/src/builders/unit-test/runners/karma/index.js +18 -0
  114. package/src/builders/unit-test/runners/karma/index.js.map +1 -0
  115. package/src/builders/unit-test/runners/vitest/browser-provider.d.ts +8 -3
  116. package/src/builders/unit-test/runners/vitest/browser-provider.js +71 -17
  117. package/src/builders/unit-test/runners/vitest/browser-provider.js.map +1 -0
  118. package/src/builders/unit-test/runners/vitest/build-options.js +48 -9
  119. package/src/builders/unit-test/runners/vitest/build-options.js.map +1 -0
  120. package/src/builders/unit-test/runners/vitest/configuration.d.ts +15 -0
  121. package/src/builders/unit-test/runners/vitest/configuration.js +57 -0
  122. package/src/builders/unit-test/runners/vitest/configuration.js.map +1 -0
  123. package/src/builders/unit-test/runners/vitest/executor.d.ts +6 -4
  124. package/src/builders/unit-test/runners/vitest/executor.js +169 -115
  125. package/src/builders/unit-test/runners/vitest/executor.js.map +1 -0
  126. package/src/builders/unit-test/runners/vitest/index.js +25 -2
  127. package/src/builders/unit-test/runners/vitest/index.js.map +1 -0
  128. package/src/builders/unit-test/runners/vitest/plugins.d.ts +23 -0
  129. package/src/builders/unit-test/runners/vitest/plugins.js +141 -0
  130. package/src/builders/unit-test/runners/vitest/plugins.js.map +1 -0
  131. package/src/builders/unit-test/schema.d.ts +163 -39
  132. package/src/builders/unit-test/schema.js +14 -13
  133. package/src/builders/unit-test/schema.js.map +1 -0
  134. package/src/builders/unit-test/schema.json +186 -40
  135. package/src/builders/unit-test/test-discovery.d.ts +29 -1
  136. package/src/builders/unit-test/test-discovery.js +215 -5
  137. package/src/builders/unit-test/test-discovery.js.map +1 -0
  138. package/src/index.js +1 -0
  139. package/src/index.js.map +1 -0
  140. package/src/private.js +1 -0
  141. package/src/private.js.map +1 -0
  142. package/src/tools/angular/angular-host.js +1 -0
  143. package/src/tools/angular/angular-host.js.map +1 -0
  144. package/src/tools/angular/compilation/angular-compilation.js +2 -5
  145. package/src/tools/angular/compilation/angular-compilation.js.map +1 -0
  146. package/src/tools/angular/compilation/aot-compilation.js +1 -0
  147. package/src/tools/angular/compilation/aot-compilation.js.map +1 -0
  148. package/src/tools/angular/compilation/factory.js +1 -0
  149. package/src/tools/angular/compilation/factory.js.map +1 -0
  150. package/src/tools/angular/compilation/hmr-candidates.js +1 -0
  151. package/src/tools/angular/compilation/hmr-candidates.js.map +1 -0
  152. package/src/tools/angular/compilation/index.js +1 -0
  153. package/src/tools/angular/compilation/index.js.map +1 -0
  154. package/src/tools/angular/compilation/jit-compilation.js +35 -2
  155. package/src/tools/angular/compilation/jit-compilation.js.map +1 -0
  156. package/src/tools/angular/compilation/noop-compilation.js +1 -0
  157. package/src/tools/angular/compilation/noop-compilation.js.map +1 -0
  158. package/src/tools/angular/compilation/parallel-compilation.js +1 -0
  159. package/src/tools/angular/compilation/parallel-compilation.js.map +1 -0
  160. package/src/tools/angular/compilation/parallel-worker.js +1 -0
  161. package/src/tools/angular/compilation/parallel-worker.js.map +1 -0
  162. package/src/tools/angular/transformers/jit-bootstrap-transformer.js +2 -1
  163. package/src/tools/angular/transformers/jit-bootstrap-transformer.js.map +1 -0
  164. package/src/tools/angular/transformers/jit-resource-transformer.js +2 -1
  165. package/src/tools/angular/transformers/jit-resource-transformer.js.map +1 -0
  166. package/src/tools/angular/transformers/lazy-routes-transformer.js +1 -0
  167. package/src/tools/angular/transformers/lazy-routes-transformer.js.map +1 -0
  168. package/src/tools/angular/transformers/web-worker-transformer.js +1 -0
  169. package/src/tools/angular/transformers/web-worker-transformer.js.map +1 -0
  170. package/src/tools/angular/uri.js +1 -0
  171. package/src/tools/angular/uri.js.map +1 -0
  172. package/src/tools/babel/plugins/add-code-coverage.js +1 -0
  173. package/src/tools/babel/plugins/add-code-coverage.js.map +1 -0
  174. package/src/tools/babel/plugins/adjust-static-class-members.js +1 -0
  175. package/src/tools/babel/plugins/adjust-static-class-members.js.map +1 -0
  176. package/src/tools/babel/plugins/adjust-typescript-enums.js +1 -0
  177. package/src/tools/babel/plugins/adjust-typescript-enums.js.map +1 -0
  178. package/src/tools/babel/plugins/elide-angular-metadata.js +1 -0
  179. package/src/tools/babel/plugins/elide-angular-metadata.js.map +1 -0
  180. package/src/tools/babel/plugins/index.js +1 -0
  181. package/src/tools/babel/plugins/index.js.map +1 -0
  182. package/src/tools/babel/plugins/pure-toplevel-functions.d.ts +0 -1
  183. package/src/tools/babel/plugins/pure-toplevel-functions.js +22 -5
  184. package/src/tools/babel/plugins/pure-toplevel-functions.js.map +1 -0
  185. package/src/tools/esbuild/angular/compilation-state.js +1 -0
  186. package/src/tools/esbuild/angular/compilation-state.js.map +1 -0
  187. package/src/tools/esbuild/angular/compiler-plugin.js +39 -14
  188. package/src/tools/esbuild/angular/compiler-plugin.js.map +1 -0
  189. package/src/tools/esbuild/angular/component-stylesheets.js +1 -0
  190. package/src/tools/esbuild/angular/component-stylesheets.js.map +1 -0
  191. package/src/tools/esbuild/angular/diagnostics.js +1 -0
  192. package/src/tools/esbuild/angular/diagnostics.js.map +1 -0
  193. package/src/tools/esbuild/angular/file-reference-tracker.js +1 -0
  194. package/src/tools/esbuild/angular/file-reference-tracker.js.map +1 -0
  195. package/src/tools/esbuild/angular/jit-plugin-callbacks.js +1 -0
  196. package/src/tools/esbuild/angular/jit-plugin-callbacks.js.map +1 -0
  197. package/src/tools/esbuild/angular/rewrite-bazel-paths.js +1 -0
  198. package/src/tools/esbuild/angular/rewrite-bazel-paths.js.map +1 -0
  199. package/src/tools/esbuild/angular/source-file-cache.js +1 -0
  200. package/src/tools/esbuild/angular/source-file-cache.js.map +1 -0
  201. package/src/tools/esbuild/angular-localize-init-warning-plugin.js +1 -0
  202. package/src/tools/esbuild/angular-localize-init-warning-plugin.js.map +1 -0
  203. package/src/tools/esbuild/application-code-bundle.js +2 -1
  204. package/src/tools/esbuild/application-code-bundle.js.map +1 -0
  205. package/src/tools/esbuild/budget-stats.js +1 -0
  206. package/src/tools/esbuild/budget-stats.js.map +1 -0
  207. package/src/tools/esbuild/bundler-context.js +1 -0
  208. package/src/tools/esbuild/bundler-context.js.map +1 -0
  209. package/src/tools/esbuild/bundler-execution-result.js +1 -0
  210. package/src/tools/esbuild/bundler-execution-result.js.map +1 -0
  211. package/src/tools/esbuild/cache.js +1 -0
  212. package/src/tools/esbuild/cache.js.map +1 -0
  213. package/src/tools/esbuild/commonjs-checker.js +1 -0
  214. package/src/tools/esbuild/commonjs-checker.js.map +1 -0
  215. package/src/tools/esbuild/compiler-plugin-options.js +1 -0
  216. package/src/tools/esbuild/compiler-plugin-options.js.map +1 -0
  217. package/src/tools/esbuild/external-packages-plugin.js +1 -0
  218. package/src/tools/esbuild/external-packages-plugin.js.map +1 -0
  219. package/src/tools/esbuild/global-scripts.js +1 -0
  220. package/src/tools/esbuild/global-scripts.js.map +1 -0
  221. package/src/tools/esbuild/global-styles.js +1 -0
  222. package/src/tools/esbuild/global-styles.js.map +1 -0
  223. package/src/tools/esbuild/i18n-inliner-worker.js +35 -2
  224. package/src/tools/esbuild/i18n-inliner-worker.js.map +1 -0
  225. package/src/tools/esbuild/i18n-inliner.js +1 -0
  226. package/src/tools/esbuild/i18n-inliner.js.map +1 -0
  227. package/src/tools/esbuild/i18n-locale-plugin.js +34 -15
  228. package/src/tools/esbuild/i18n-locale-plugin.js.map +1 -0
  229. package/src/tools/esbuild/index-html-generator.js +1 -0
  230. package/src/tools/esbuild/index-html-generator.js.map +1 -0
  231. package/src/tools/esbuild/javascript-transformer-worker.js +5 -10
  232. package/src/tools/esbuild/javascript-transformer-worker.js.map +1 -0
  233. package/src/tools/esbuild/javascript-transformer.js +1 -0
  234. package/src/tools/esbuild/javascript-transformer.js.map +1 -0
  235. package/src/tools/esbuild/license-extractor.js +1 -0
  236. package/src/tools/esbuild/license-extractor.js.map +1 -0
  237. package/src/tools/esbuild/lmdb-cache-store.js +1 -0
  238. package/src/tools/esbuild/lmdb-cache-store.js.map +1 -0
  239. package/src/tools/esbuild/load-result-cache.js +1 -0
  240. package/src/tools/esbuild/load-result-cache.js.map +1 -0
  241. package/src/tools/esbuild/loader-import-attribute-plugin.js +1 -0
  242. package/src/tools/esbuild/loader-import-attribute-plugin.js.map +1 -0
  243. package/src/tools/esbuild/profiling.js +1 -0
  244. package/src/tools/esbuild/profiling.js.map +1 -0
  245. package/src/tools/esbuild/rxjs-esm-resolution-plugin.js +1 -0
  246. package/src/tools/esbuild/rxjs-esm-resolution-plugin.js.map +1 -0
  247. package/src/tools/esbuild/server-bundle-metadata-plugin.js +1 -0
  248. package/src/tools/esbuild/server-bundle-metadata-plugin.js.map +1 -0
  249. package/src/tools/esbuild/sourcemap-ignorelist-plugin.js +1 -0
  250. package/src/tools/esbuild/sourcemap-ignorelist-plugin.js.map +1 -0
  251. package/src/tools/esbuild/stylesheets/bundle-options.d.ts +4 -1
  252. package/src/tools/esbuild/stylesheets/bundle-options.js +1 -0
  253. package/src/tools/esbuild/stylesheets/bundle-options.js.map +1 -0
  254. package/src/tools/esbuild/stylesheets/css-inline-fonts-plugin.js +1 -0
  255. package/src/tools/esbuild/stylesheets/css-inline-fonts-plugin.js.map +1 -0
  256. package/src/tools/esbuild/stylesheets/css-language.js +1 -0
  257. package/src/tools/esbuild/stylesheets/css-language.js.map +1 -0
  258. package/src/tools/esbuild/stylesheets/css-resource-plugin.js +1 -0
  259. package/src/tools/esbuild/stylesheets/css-resource-plugin.js.map +1 -0
  260. package/src/tools/esbuild/stylesheets/less-language.js +3 -26
  261. package/src/tools/esbuild/stylesheets/less-language.js.map +1 -0
  262. package/src/tools/esbuild/stylesheets/sass-language.js +1 -0
  263. package/src/tools/esbuild/stylesheets/sass-language.js.map +1 -0
  264. package/src/tools/esbuild/stylesheets/stylesheet-plugin-factory.d.ts +4 -1
  265. package/src/tools/esbuild/stylesheets/stylesheet-plugin-factory.js +8 -3
  266. package/src/tools/esbuild/stylesheets/stylesheet-plugin-factory.js.map +1 -0
  267. package/src/tools/esbuild/utils.js +1 -0
  268. package/src/tools/esbuild/utils.js.map +1 -0
  269. package/src/tools/esbuild/virtual-module-plugin.js +1 -0
  270. package/src/tools/esbuild/virtual-module-plugin.js.map +1 -0
  271. package/src/tools/esbuild/wasm-plugin.js +1 -0
  272. package/src/tools/esbuild/wasm-plugin.js.map +1 -0
  273. package/src/tools/esbuild/watcher.js +1 -0
  274. package/src/tools/esbuild/watcher.js.map +1 -0
  275. package/src/tools/sass/lexer.js +1 -0
  276. package/src/tools/sass/lexer.js.map +1 -0
  277. package/src/tools/sass/rebasing-importer.js +1 -0
  278. package/src/tools/sass/rebasing-importer.js.map +1 -0
  279. package/src/tools/sass/sass-service.js +1 -0
  280. package/src/tools/sass/sass-service.js.map +1 -0
  281. package/src/tools/sass/worker.js +1 -0
  282. package/src/tools/sass/worker.js.map +1 -0
  283. package/src/tools/vite/middlewares/assets-middleware.d.ts +2 -0
  284. package/src/tools/vite/middlewares/assets-middleware.js +32 -0
  285. package/src/tools/vite/middlewares/assets-middleware.js.map +1 -0
  286. package/src/tools/vite/middlewares/chrome-devtools-middleware.js +1 -0
  287. package/src/tools/vite/middlewares/chrome-devtools-middleware.js.map +1 -0
  288. package/src/tools/vite/middlewares/component-middleware.js +1 -0
  289. package/src/tools/vite/middlewares/component-middleware.js.map +1 -0
  290. package/src/tools/vite/middlewares/headers-middleware.js +1 -0
  291. package/src/tools/vite/middlewares/headers-middleware.js.map +1 -0
  292. package/src/tools/vite/middlewares/html-fallback-middleware.js +1 -0
  293. package/src/tools/vite/middlewares/html-fallback-middleware.js.map +1 -0
  294. package/src/tools/vite/middlewares/index-html-middleware.js +1 -0
  295. package/src/tools/vite/middlewares/index-html-middleware.js.map +1 -0
  296. package/src/tools/vite/middlewares/index.js +1 -0
  297. package/src/tools/vite/middlewares/index.js.map +1 -0
  298. package/src/tools/vite/middlewares/ssr-middleware.js +42 -5
  299. package/src/tools/vite/middlewares/ssr-middleware.js.map +1 -0
  300. package/src/tools/vite/plugins/angular-memory-plugin.js +35 -2
  301. package/src/tools/vite/plugins/angular-memory-plugin.js.map +1 -0
  302. package/src/tools/vite/plugins/id-prefix-plugin.js +1 -0
  303. package/src/tools/vite/plugins/id-prefix-plugin.js.map +1 -0
  304. package/src/tools/vite/plugins/index.d.ts +0 -1
  305. package/src/tools/vite/plugins/index.js +2 -3
  306. package/src/tools/vite/plugins/index.js.map +1 -0
  307. package/src/tools/vite/plugins/setup-middlewares-plugin.js +35 -2
  308. package/src/tools/vite/plugins/setup-middlewares-plugin.js.map +1 -0
  309. package/src/tools/vite/plugins/ssr-transform-plugin.js +35 -2
  310. package/src/tools/vite/plugins/ssr-transform-plugin.js.map +1 -0
  311. package/src/tools/vite/utils.js +1 -0
  312. package/src/tools/vite/utils.js.map +1 -0
  313. package/src/utils/bundle-calculator.js +1 -0
  314. package/src/utils/bundle-calculator.js.map +1 -0
  315. package/src/utils/check-port.js +1 -0
  316. package/src/utils/check-port.js.map +1 -0
  317. package/src/utils/color.js +1 -0
  318. package/src/utils/color.js.map +1 -0
  319. package/src/utils/delete-output-dir.js +1 -0
  320. package/src/utils/delete-output-dir.js.map +1 -0
  321. package/src/utils/environment-options.d.ts +1 -0
  322. package/src/utils/environment-options.js +7 -1
  323. package/src/utils/environment-options.js.map +1 -0
  324. package/src/utils/error.js +1 -0
  325. package/src/utils/error.js.map +1 -0
  326. package/src/utils/format-bytes.js +1 -0
  327. package/src/utils/format-bytes.js.map +1 -0
  328. package/src/utils/i18n-options.js +1 -0
  329. package/src/utils/i18n-options.js.map +1 -0
  330. package/src/utils/index-file/add-event-dispatch-contract.js +1 -0
  331. package/src/utils/index-file/add-event-dispatch-contract.js.map +1 -0
  332. package/src/utils/index-file/augment-index-html.js +35 -2
  333. package/src/utils/index-file/augment-index-html.js.map +1 -0
  334. package/src/utils/index-file/auto-csp.js +1 -0
  335. package/src/utils/index-file/auto-csp.js.map +1 -0
  336. package/src/utils/index-file/html-rewriting-stream.js +35 -2
  337. package/src/utils/index-file/html-rewriting-stream.js.map +1 -0
  338. package/src/utils/index-file/index-html-generator.js +1 -0
  339. package/src/utils/index-file/index-html-generator.js.map +1 -0
  340. package/src/utils/index-file/inline-critical-css.js +1 -0
  341. package/src/utils/index-file/inline-critical-css.js.map +1 -0
  342. package/src/utils/index-file/inline-fonts.js +1 -0
  343. package/src/utils/index-file/inline-fonts.js.map +1 -0
  344. package/src/utils/index-file/ngcm-attribute.js +1 -0
  345. package/src/utils/index-file/ngcm-attribute.js.map +1 -0
  346. package/src/utils/index-file/nonce.js +1 -0
  347. package/src/utils/index-file/nonce.js.map +1 -0
  348. package/src/utils/index-file/valid-self-closing-tags.js +1 -0
  349. package/src/utils/index-file/valid-self-closing-tags.js.map +1 -0
  350. package/src/utils/index.js +1 -0
  351. package/src/utils/index.js.map +1 -0
  352. package/src/utils/load-esm.js +1 -0
  353. package/src/utils/load-esm.js.map +1 -0
  354. package/src/utils/load-proxy-config.js +8 -21
  355. package/src/utils/load-proxy-config.js.map +1 -0
  356. package/src/utils/load-translations.js +2 -2
  357. package/src/utils/load-translations.js.map +1 -0
  358. package/src/utils/normalize-asset-patterns.js +1 -0
  359. package/src/utils/normalize-asset-patterns.js.map +1 -0
  360. package/src/utils/normalize-cache.js +2 -1
  361. package/src/utils/normalize-cache.js.map +1 -0
  362. package/src/utils/normalize-optimization.js +1 -0
  363. package/src/utils/normalize-optimization.js.map +1 -0
  364. package/src/utils/normalize-source-maps.js +1 -0
  365. package/src/utils/normalize-source-maps.js.map +1 -0
  366. package/src/utils/path.js +1 -0
  367. package/src/utils/path.js.map +1 -0
  368. package/src/utils/postcss-configuration.d.ts +4 -1
  369. package/src/utils/postcss-configuration.js +3 -2
  370. package/src/utils/postcss-configuration.js.map +1 -0
  371. package/src/utils/project-metadata.js +1 -0
  372. package/src/utils/project-metadata.js.map +1 -0
  373. package/src/utils/purge-cache.js +1 -0
  374. package/src/utils/purge-cache.js.map +1 -0
  375. package/src/utils/resolve-assets.js +1 -0
  376. package/src/utils/resolve-assets.js.map +1 -0
  377. package/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.js +3 -13
  378. package/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.js.map +1 -0
  379. package/src/utils/server-rendering/esm-in-memory-loader/register-hooks.js +1 -0
  380. package/src/utils/server-rendering/esm-in-memory-loader/register-hooks.js.map +1 -0
  381. package/src/utils/server-rendering/esm-in-memory-loader/utils.js +1 -0
  382. package/src/utils/server-rendering/esm-in-memory-loader/utils.js.map +1 -0
  383. package/src/utils/server-rendering/fetch-patch.js +1 -0
  384. package/src/utils/server-rendering/fetch-patch.js.map +1 -0
  385. package/src/utils/server-rendering/launch-server.js +37 -2
  386. package/src/utils/server-rendering/launch-server.js.map +1 -0
  387. package/src/utils/server-rendering/load-esm-from-memory.d.ts +2 -1
  388. package/src/utils/server-rendering/load-esm-from-memory.js +1 -0
  389. package/src/utils/server-rendering/load-esm-from-memory.js.map +1 -0
  390. package/src/utils/server-rendering/manifest.js +1 -0
  391. package/src/utils/server-rendering/manifest.js.map +1 -0
  392. package/src/utils/server-rendering/models.js +1 -0
  393. package/src/utils/server-rendering/models.js.map +1 -0
  394. package/src/utils/server-rendering/prerender.js +3 -25
  395. package/src/utils/server-rendering/prerender.js.map +1 -0
  396. package/src/utils/server-rendering/render-worker.js +43 -1
  397. package/src/utils/server-rendering/render-worker.js.map +1 -0
  398. package/src/utils/server-rendering/routes-extractor-worker.js +37 -0
  399. package/src/utils/server-rendering/routes-extractor-worker.js.map +1 -0
  400. package/src/utils/server-rendering/utils.d.ts +11 -1
  401. package/src/utils/server-rendering/utils.js +26 -0
  402. package/src/utils/server-rendering/utils.js.map +1 -0
  403. package/src/utils/service-worker.d.ts +1 -1
  404. package/src/utils/service-worker.js +4 -6
  405. package/src/utils/service-worker.js.map +1 -0
  406. package/src/utils/stats-table.js +1 -0
  407. package/src/utils/stats-table.js.map +1 -0
  408. package/src/utils/supported-browsers.js +8 -3
  409. package/src/utils/supported-browsers.js.map +1 -0
  410. package/src/utils/test-files.d.ts +17 -0
  411. package/src/utils/test-files.js +83 -0
  412. package/src/utils/test-files.js.map +1 -0
  413. package/src/utils/tty.js +1 -0
  414. package/src/utils/tty.js.map +1 -0
  415. package/src/utils/url.js +1 -0
  416. package/src/utils/url.js.map +1 -0
  417. package/src/utils/version.js +1 -0
  418. package/src/utils/version.js.map +1 -0
  419. package/src/utils/worker-pool.js +1 -0
  420. package/src/utils/worker-pool.js.map +1 -0
  421. package/.browserslistrc +0 -7
  422. package/src/tools/vite/plugins/i18n-locale-plugin.d.ts +0 -14
  423. package/src/tools/vite/plugins/i18n-locale-plugin.js +0 -54
  424. package/src/typings.d.ts +0 -19
@@ -6,82 +6,143 @@
6
6
  * Use of this source code is governed by an MIT-style license that can be
7
7
  * found in the LICENSE file at https://angular.dev/license
8
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
+ })();
9
42
  var __importDefault = (this && this.__importDefault) || function (mod) {
10
43
  return (mod && mod.__esModule) ? mod : { "default": mod };
11
44
  };
12
45
  Object.defineProperty(exports, "__esModule", { value: true });
13
46
  exports.VitestExecutor = void 0;
14
47
  const node_assert_1 = __importDefault(require("node:assert"));
15
- const node_crypto_1 = require("node:crypto");
16
- const node_fs_1 = require("node:fs");
17
- const promises_1 = require("node:fs/promises");
18
48
  const node_path_1 = __importDefault(require("node:path"));
49
+ const picomatch_1 = require("picomatch");
19
50
  const error_1 = require("../../../../utils/error");
20
- const load_esm_1 = require("../../../../utils/load-esm");
21
51
  const path_1 = require("../../../../utils/path");
22
52
  const results_1 = require("../../../application/results");
23
- const application_builder_1 = require("../../../karma/application_builder");
24
53
  const browser_provider_1 = require("./browser-provider");
54
+ const configuration_1 = require("./configuration");
55
+ const plugins_1 = require("./plugins");
25
56
  class VitestExecutor {
26
57
  vitest;
58
+ normalizePath;
27
59
  projectName;
28
60
  options;
29
- outputPath;
30
- latestBuildResult;
31
- // Graceful shutdown signal handler
32
- // This is needed to remove the temporary output directory on Ctrl+C
33
- sigintListener = () => {
34
- (0, node_fs_1.rmSync)(this.outputPath, { recursive: true, force: true });
35
- };
36
- constructor(projectName, options) {
61
+ buildResultFiles = new Map();
62
+ // This is a reverse map of the entry points created in `build-options.ts`.
63
+ // It is used by the in-memory provider plugin to map the requested test file
64
+ // path back to its bundled output path.
65
+ // Example: `Map<'/path/to/src/app.spec.ts', 'spec-src-app-spec'>`
66
+ testFileToEntryPoint = new Map();
67
+ entryPointToTestFile = new Map();
68
+ constructor(projectName, options, testEntryPointMappings) {
37
69
  this.projectName = projectName;
38
70
  this.options = options;
39
- this.outputPath = (0, path_1.toPosixPath)(node_path_1.default.join(options.workspaceRoot, generateOutputPath()));
40
- process.on('SIGINT', this.sigintListener);
71
+ if (testEntryPointMappings) {
72
+ for (const [entryPoint, testFile] of testEntryPointMappings) {
73
+ this.testFileToEntryPoint.set(testFile, entryPoint);
74
+ this.entryPointToTestFile.set(entryPoint + '.js', testFile);
75
+ }
76
+ }
41
77
  }
42
78
  async *execute(buildResult) {
43
- await (0, application_builder_1.writeTestFiles)(buildResult.files, this.outputPath);
44
- this.latestBuildResult = buildResult;
79
+ this.normalizePath ??= (await Promise.resolve().then(() => __importStar(require('vite')))).normalizePath;
80
+ if (buildResult.kind === results_1.ResultKind.Full) {
81
+ this.buildResultFiles.clear();
82
+ for (const [path, file] of Object.entries(buildResult.files)) {
83
+ this.buildResultFiles.set(this.normalizePath(path), file);
84
+ }
85
+ }
86
+ else {
87
+ for (const file of buildResult.removed) {
88
+ this.buildResultFiles.delete(this.normalizePath(file.path));
89
+ }
90
+ for (const [path, file] of Object.entries(buildResult.files)) {
91
+ this.buildResultFiles.set(this.normalizePath(path), file);
92
+ }
93
+ }
45
94
  // Initialize Vitest if not already present.
46
95
  this.vitest ??= await this.initializeVitest();
47
96
  const vitest = this.vitest;
48
97
  let testResults;
49
98
  if (buildResult.kind === results_1.ResultKind.Incremental) {
50
- const addedFiles = buildResult.added.map((file) => node_path_1.default.join(this.outputPath, file));
51
- const modifiedFiles = buildResult.modified.map((file) => node_path_1.default.join(this.outputPath, file));
52
- if (addedFiles.length === 0 && modifiedFiles.length === 0) {
53
- yield { success: true };
54
- return;
55
- }
56
- // If new files are added, use `start` to trigger test discovery.
57
- // Also pass modified files to `start` to ensure they are re-run.
58
- if (addedFiles.length > 0) {
59
- await vitest.start([...addedFiles, ...modifiedFiles]);
99
+ // To rerun tests, Vitest needs the original test file paths, not the output paths.
100
+ const modifiedSourceFiles = new Set();
101
+ for (const modifiedFile of buildResult.modified) {
102
+ // The `modified` files in the build result are the output paths.
103
+ // We need to find the original source file path to pass to Vitest.
104
+ const source = this.entryPointToTestFile.get(modifiedFile);
105
+ if (source) {
106
+ modifiedSourceFiles.add(source);
107
+ }
108
+ vitest.invalidateFile((0, path_1.toPosixPath)(node_path_1.default.join(this.options.workspaceRoot, modifiedFile)));
60
109
  }
61
- else {
62
- // For modified files only, use the more efficient `rerunTestSpecifications`
63
- const specsToRerun = modifiedFiles.flatMap((file) => vitest.getModuleSpecifications(file));
64
- if (specsToRerun.length > 0) {
65
- modifiedFiles.forEach((file) => vitest.invalidateFile(file));
66
- testResults = await vitest.rerunTestSpecifications(specsToRerun);
110
+ const specsToRerun = [];
111
+ for (const file of modifiedSourceFiles) {
112
+ vitest.invalidateFile(file);
113
+ const specs = vitest.getModuleSpecifications(file);
114
+ if (specs) {
115
+ specsToRerun.push(...specs);
67
116
  }
68
117
  }
118
+ if (specsToRerun.length > 0) {
119
+ testResults = await vitest.rerunTestSpecifications(specsToRerun);
120
+ }
69
121
  }
70
122
  // Check if all the tests pass to calculate the result
71
- const testModules = testResults?.testModules;
72
- yield { success: testModules?.every((testModule) => testModule.ok()) ?? true };
123
+ const testModules = testResults?.testModules ?? this.vitest.state.getTestModules();
124
+ yield { success: testModules.every((testModule) => testModule.ok()) };
73
125
  }
74
126
  async [Symbol.asyncDispose]() {
75
- process.off('SIGINT', this.sigintListener);
76
127
  await this.vitest?.close();
77
- await (0, promises_1.rm)(this.outputPath, { recursive: true, force: true });
128
+ }
129
+ prepareSetupFiles() {
130
+ const { setupFiles } = this.options;
131
+ // Add setup file entries for TestBed initialization and project polyfills
132
+ const testSetupFiles = ['init-testbed.js', ...setupFiles];
133
+ // TODO: Provide additional result metadata to avoid needing to extract based on filename
134
+ if (this.buildResultFiles.has('polyfills.js')) {
135
+ testSetupFiles.unshift('polyfills.js');
136
+ }
137
+ return testSetupFiles;
78
138
  }
79
139
  async initializeVitest() {
80
- const { codeCoverage, reporters, workspaceRoot, setupFiles, browsers, debug, watch } = this.options;
81
- const { outputPath, projectName, latestBuildResult } = this;
140
+ const { coverage, reporters, outputFile, workspaceRoot, browsers, debug, watch, browserViewport, ui, } = this.options;
82
141
  let vitestNodeModule;
142
+ let vitestCoverageModule;
83
143
  try {
84
- vitestNodeModule = await (0, load_esm_1.loadEsmModule)('vitest/node');
144
+ vitestCoverageModule = await Promise.resolve().then(() => __importStar(require('vitest/coverage')));
145
+ vitestNodeModule = await Promise.resolve().then(() => __importStar(require('vitest/node')));
85
146
  }
86
147
  catch (error) {
87
148
  (0, error_1.assertIsError)(error);
@@ -91,19 +152,37 @@ class VitestExecutor {
91
152
  throw new Error('The `vitest` package was not found. Please install the package and rerun the test command.');
92
153
  }
93
154
  const { startVitest } = vitestNodeModule;
155
+ // Augment BaseCoverageProvider to include logic to support the built virtual files.
156
+ // Temporary workaround to avoid the direct filesystem checks in the base provider that
157
+ // were introduced in v4. Also ensures that all built virtual files are available.
158
+ const builtVirtualFiles = this.buildResultFiles;
159
+ vitestCoverageModule.BaseCoverageProvider.prototype.isIncluded = function (filename) {
160
+ const relativeFilename = node_path_1.default.relative(workspaceRoot, filename);
161
+ if (!this.options.include || builtVirtualFiles.has(relativeFilename)) {
162
+ return !(0, picomatch_1.isMatch)(relativeFilename, this.options.exclude);
163
+ }
164
+ else {
165
+ return (0, picomatch_1.isMatch)(relativeFilename, this.options.include, {
166
+ ignore: this.options.exclude,
167
+ });
168
+ }
169
+ };
94
170
  // Setup vitest browser options if configured
95
- const browserOptions = (0, browser_provider_1.setupBrowserConfiguration)(browsers, debug, this.options.projectSourceRoot);
171
+ const browserOptions = await (0, browser_provider_1.setupBrowserConfiguration)(browsers, debug, this.options.projectSourceRoot, browserViewport);
96
172
  if (browserOptions.errors?.length) {
97
173
  throw new Error(browserOptions.errors.join('\n'));
98
174
  }
99
- (0, node_assert_1.default)(latestBuildResult, 'buildResult must be available before initializing vitest');
100
- // Add setup file entries for TestBed initialization and project polyfills
101
- const testSetupFiles = ['init-testbed.js', ...setupFiles];
102
- // TODO: Provide additional result metadata to avoid needing to extract based on filename
103
- const polyfillsFile = Object.keys(latestBuildResult.files).find((f) => f === 'polyfills.js');
104
- if (polyfillsFile) {
105
- testSetupFiles.unshift(polyfillsFile);
106
- }
175
+ (0, node_assert_1.default)(this.buildResultFiles.size > 0, 'buildResult must be available before initializing vitest');
176
+ const testSetupFiles = this.prepareSetupFiles();
177
+ const plugins = (0, plugins_1.createVitestPlugins)(this.options, testSetupFiles, browserOptions, {
178
+ workspaceRoot,
179
+ projectSourceRoot: this.options.projectSourceRoot,
180
+ projectName: this.projectName,
181
+ include: this.options.include,
182
+ exclude: this.options.exclude,
183
+ buildResultFiles: this.buildResultFiles,
184
+ testFileToEntryPoint: this.testFileToEntryPoint,
185
+ });
107
186
  const debugOptions = debug
108
187
  ? {
109
188
  inspectBrk: true,
@@ -111,90 +190,65 @@ class VitestExecutor {
111
190
  fileParallelism: false,
112
191
  }
113
192
  : {};
193
+ const runnerConfig = this.options.runnerConfig;
114
194
  return startVitest('test', undefined, {
115
- // Disable configuration file resolution/loading
116
- config: false,
195
+ config: runnerConfig === true
196
+ ? await (0, configuration_1.findVitestBaseConfig)([this.options.projectRoot, this.options.workspaceRoot])
197
+ : runnerConfig,
117
198
  root: workspaceRoot,
118
- project: ['base', projectName],
199
+ project: ['base', this.projectName],
119
200
  name: 'base',
120
201
  include: [],
121
- reporters: reporters ?? ['default'],
202
+ testNamePattern: this.options.filter,
122
203
  watch,
123
- coverage: generateCoverageOption(codeCoverage, workspaceRoot, this.outputPath),
124
- ...debugOptions,
204
+ ui,
125
205
  }, {
206
+ test: {
207
+ coverage: await generateCoverageOption(coverage, this.projectName),
208
+ outputFile,
209
+ ...debugOptions,
210
+ ...(reporters ? { reporters } : {}),
211
+ },
126
212
  server: {
127
213
  // Disable the actual file watcher. The boolean watch option above should still
128
214
  // be enabled as it controls other internal behavior related to rerunning tests.
129
215
  watch: null,
130
216
  },
131
- plugins: [
132
- {
133
- name: 'angular:project-init',
134
- async configureVitest(context) {
135
- // Create a subproject that can be configured with plugins for browser mode.
136
- // Plugins defined directly in the vite overrides will not be present in the
137
- // browser specific Vite instance.
138
- const [project] = await context.injectTestProjects({
139
- test: {
140
- name: projectName,
141
- root: outputPath,
142
- globals: true,
143
- setupFiles: testSetupFiles,
144
- // Use `jsdom` if no browsers are explicitly configured.
145
- // `node` is effectively no "environment" and the default.
146
- environment: browserOptions.browser ? 'node' : 'jsdom',
147
- browser: browserOptions.browser,
148
- },
149
- plugins: [
150
- {
151
- name: 'angular:html-index',
152
- transformIndexHtml: () => {
153
- (0, node_assert_1.default)(latestBuildResult, 'buildResult must be available for HTML index transformation.');
154
- // Add all global stylesheets
155
- const styleFiles = Object.entries(latestBuildResult.files).filter(([file]) => file === 'styles.css');
156
- return styleFiles.map(([href]) => ({
157
- tag: 'link',
158
- attrs: { href, rel: 'stylesheet' },
159
- injectTo: 'head',
160
- }));
161
- },
162
- },
163
- ],
164
- });
165
- // Adjust coverage excludes to not include the otherwise automatically inserted included unit tests.
166
- // Vite does this as a convenience but is problematic for the bundling strategy employed by the
167
- // builder's test setup. To workaround this, the excludes are adjusted here to only automatically
168
- // exclude the TypeScript source test files.
169
- project.config.coverage.exclude = [
170
- ...(codeCoverage?.exclude ?? []),
171
- '**/*.{test,spec}.?(c|m)ts',
172
- ];
173
- },
174
- },
175
- ],
217
+ plugins,
176
218
  });
177
219
  }
178
220
  }
179
221
  exports.VitestExecutor = VitestExecutor;
180
- function generateOutputPath() {
181
- const datePrefix = new Date().toISOString().replaceAll(/[-:.]/g, '');
182
- const uuidSuffix = (0, node_crypto_1.randomUUID)().slice(0, 8);
183
- return node_path_1.default.join('dist', 'test-out', `${datePrefix}-${uuidSuffix}`);
184
- }
185
- function generateCoverageOption(codeCoverage, workspaceRoot, outputPath) {
186
- if (!codeCoverage) {
187
- return {
188
- enabled: false,
189
- };
222
+ async function generateCoverageOption(coverage, projectName) {
223
+ let defaultExcludes = [];
224
+ if (coverage.exclude) {
225
+ try {
226
+ const vitestConfig = await Promise.resolve().then(() => __importStar(require('vitest/config')));
227
+ defaultExcludes = vitestConfig.coverageConfigDefaults.exclude;
228
+ }
229
+ catch { }
190
230
  }
191
231
  return {
192
- enabled: true,
232
+ enabled: coverage.enabled,
193
233
  excludeAfterRemap: true,
194
- include: [`${(0, path_1.toPosixPath)(node_path_1.default.relative(workspaceRoot, outputPath))}/**`],
195
- // Special handling for `reporter` due to an undefined value causing upstream failures
196
- ...(codeCoverage.reporters
197
- ? { reporter: codeCoverage.reporters }
234
+ include: coverage.include,
235
+ reportsDirectory: (0, path_1.toPosixPath)(node_path_1.default.join('coverage', projectName)),
236
+ thresholds: coverage.thresholds,
237
+ watermarks: coverage.watermarks,
238
+ // Special handling for `exclude`/`reporters` due to an undefined value causing upstream failures
239
+ ...(coverage.exclude
240
+ ? {
241
+ exclude: [
242
+ // Augment the default exclude https://vitest.dev/config/#coverage-exclude
243
+ // with the user defined exclusions
244
+ ...coverage.exclude,
245
+ ...defaultExcludes,
246
+ ],
247
+ }
248
+ : {}),
249
+ ...(coverage.reporters
250
+ ? { reporter: coverage.reporters }
198
251
  : {}),
199
252
  };
200
253
  }
254
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["executor.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  const node_assert_1 = __importDefault(require("node:assert"));
14
+ const dependency_checker_1 = require("../dependency-checker");
14
15
  const build_options_1 = require("./build-options");
15
16
  const executor_1 = require("./executor");
16
17
  /**
@@ -18,13 +19,35 @@ const executor_1 = require("./executor");
18
19
  */
19
20
  const VitestTestRunner = {
20
21
  name: 'vitest',
22
+ validateDependencies(options) {
23
+ const checker = new dependency_checker_1.DependencyChecker(options.projectSourceRoot);
24
+ checker.check('vitest');
25
+ if (options.browsers?.length) {
26
+ checker.checkAny(['playwright', 'webdriverio'], 'The "browsers" option requires either "playwright" or "webdriverio" to be installed.');
27
+ }
28
+ else {
29
+ // JSDOM is used when no browsers are specified
30
+ checker.check('jsdom');
31
+ }
32
+ if (options.coverage.enabled) {
33
+ checker.check('@vitest/coverage-v8');
34
+ }
35
+ checker.report();
36
+ },
21
37
  getBuildOptions(options, baseBuildOptions) {
22
38
  return (0, build_options_1.getVitestBuildOptions)(options, baseBuildOptions);
23
39
  },
24
- async createExecutor(context, options) {
40
+ async createExecutor(context, options, testEntryPointMappings) {
25
41
  const projectName = context.target?.project;
26
42
  (0, node_assert_1.default)(projectName, 'The builder requires a target.');
27
- return new executor_1.VitestExecutor(projectName, options);
43
+ if (typeof options.runnerConfig === 'string') {
44
+ context.logger.info(`Using Vitest configuration file: ${options.runnerConfig}`);
45
+ }
46
+ else if (options.runnerConfig) {
47
+ context.logger.info('Automatically searching for and using Vitest configuration file.');
48
+ }
49
+ return new executor_1.VitestExecutor(projectName, options, testEntryPointMappings);
28
50
  },
29
51
  };
30
52
  exports.default = VitestTestRunner;
53
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;AAEH,8DAAiC;AAEjC,8DAA0D;AAC1D,mDAAwD;AACxD,yCAA4C;AAE5C;;GAEG;AACH,MAAM,gBAAgB,GAAe;IACnC,IAAI,EAAE,QAAQ;IAEd,oBAAoB,CAAC,OAAO;QAC1B,MAAM,OAAO,GAAG,IAAI,sCAAiB,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAExB,IAAI,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC7B,OAAO,CAAC,QAAQ,CACd,CAAC,YAAY,EAAE,aAAa,CAAC,EAC7B,sFAAsF,CACvF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,+CAA+C;YAC/C,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,CAAC,MAAM,EAAE,CAAC;IACnB,CAAC;IAED,eAAe,CAAC,OAAO,EAAE,gBAAgB;QACvC,OAAO,IAAA,qCAAqB,EAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,sBAAsB;QAC3D,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;QAC5C,IAAA,qBAAM,EAAC,WAAW,EAAE,gCAAgC,CAAC,CAAC;QAEtD,IAAI,OAAO,OAAO,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;YAC7C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QAClF,CAAC;aAAM,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;QAC1F,CAAC;QAED,OAAO,IAAI,yBAAc,CAAC,WAAW,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC;IAC1E,CAAC;CACF,CAAC;AAEF,kBAAe,gBAAgB,CAAC"}
@@ -0,0 +1,23 @@
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 { VitestPlugin } from 'vitest/node';
9
+ import type { ResultFile } from '../../../application/results';
10
+ import type { NormalizedUnitTestBuilderOptions } from '../../options';
11
+ import type { BrowserConfiguration } from './browser-provider';
12
+ type VitestPlugins = Awaited<ReturnType<typeof VitestPlugin>>;
13
+ interface PluginOptions {
14
+ workspaceRoot: string;
15
+ projectSourceRoot: string;
16
+ projectName: string;
17
+ include?: string[];
18
+ exclude?: string[];
19
+ buildResultFiles: ReadonlyMap<string, ResultFile>;
20
+ testFileToEntryPoint: ReadonlyMap<string, string>;
21
+ }
22
+ export declare function createVitestPlugins(options: NormalizedUnitTestBuilderOptions, testSetupFiles: string[], browserOptions: BrowserConfiguration, pluginOptions: PluginOptions): VitestPlugins;
23
+ export {};
@@ -0,0 +1,141 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
10
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.createVitestPlugins = createVitestPlugins;
14
+ const node_assert_1 = __importDefault(require("node:assert"));
15
+ const promises_1 = require("node:fs/promises");
16
+ const node_path_1 = __importDefault(require("node:path"));
17
+ const assets_middleware_1 = require("../../../../tools/vite/middlewares/assets-middleware");
18
+ const path_1 = require("../../../../utils/path");
19
+ function createVitestPlugins(options, testSetupFiles, browserOptions, pluginOptions) {
20
+ const { workspaceRoot, projectName, buildResultFiles, testFileToEntryPoint } = pluginOptions;
21
+ return [
22
+ {
23
+ name: 'angular:project-init',
24
+ // Type is incorrect. This allows a Promise<void>.
25
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
26
+ configureVitest: async (context) => {
27
+ // Create a subproject that can be configured with plugins for browser mode.
28
+ // Plugins defined directly in the vite overrides will not be present in the
29
+ // browser specific Vite instance.
30
+ await context.injectTestProjects({
31
+ test: {
32
+ name: projectName,
33
+ root: workspaceRoot,
34
+ globals: true,
35
+ setupFiles: testSetupFiles,
36
+ include: options.include,
37
+ ...(options.exclude ? { exclude: options.exclude } : {}),
38
+ browser: browserOptions.browser,
39
+ // Use `jsdom` if no browsers are explicitly configured.
40
+ ...(browserOptions.browser ? {} : { environment: 'jsdom' }),
41
+ },
42
+ plugins: [
43
+ {
44
+ name: 'angular:test-in-memory-provider',
45
+ enforce: 'pre',
46
+ resolveId: (id, importer) => {
47
+ if (importer && (id[0] === '.' || id[0] === '/')) {
48
+ let fullPath;
49
+ if (testFileToEntryPoint.has(importer)) {
50
+ fullPath = (0, path_1.toPosixPath)(node_path_1.default.join(workspaceRoot, id));
51
+ }
52
+ else {
53
+ fullPath = (0, path_1.toPosixPath)(node_path_1.default.join(node_path_1.default.dirname(importer), id));
54
+ }
55
+ const relativePath = node_path_1.default.relative(workspaceRoot, fullPath);
56
+ if (buildResultFiles.has((0, path_1.toPosixPath)(relativePath))) {
57
+ return fullPath;
58
+ }
59
+ }
60
+ if (testFileToEntryPoint.has(id)) {
61
+ return id;
62
+ }
63
+ (0, node_assert_1.default)(buildResultFiles.size > 0, 'buildResult must be available for resolving.');
64
+ const relativePath = node_path_1.default.relative(workspaceRoot, id);
65
+ if (buildResultFiles.has((0, path_1.toPosixPath)(relativePath))) {
66
+ return id;
67
+ }
68
+ },
69
+ load: async (id) => {
70
+ (0, node_assert_1.default)(buildResultFiles.size > 0, 'buildResult must be available for in-memory loading.');
71
+ // Attempt to load as a source test file.
72
+ const entryPoint = testFileToEntryPoint.get(id);
73
+ let outputPath;
74
+ if (entryPoint) {
75
+ outputPath = entryPoint + '.js';
76
+ // To support coverage exclusion of the actual test file, the virtual
77
+ // test entry point only references the built and bundled intermediate file.
78
+ return {
79
+ code: `import "./${outputPath}";`,
80
+ };
81
+ }
82
+ else {
83
+ // Attempt to load as a built artifact.
84
+ const relativePath = node_path_1.default.relative(workspaceRoot, id);
85
+ outputPath = (0, path_1.toPosixPath)(relativePath);
86
+ }
87
+ const outputFile = buildResultFiles.get(outputPath);
88
+ if (outputFile) {
89
+ const sourceMapPath = outputPath + '.map';
90
+ const sourceMapFile = buildResultFiles.get(sourceMapPath);
91
+ const code = outputFile.origin === 'memory'
92
+ ? Buffer.from(outputFile.contents).toString('utf-8')
93
+ : await (0, promises_1.readFile)(outputFile.inputPath, 'utf-8');
94
+ const sourceMapText = sourceMapFile
95
+ ? sourceMapFile.origin === 'memory'
96
+ ? Buffer.from(sourceMapFile.contents).toString('utf-8')
97
+ : await (0, promises_1.readFile)(sourceMapFile.inputPath, 'utf-8')
98
+ : undefined;
99
+ // Vitest will include files in the coverage report if the sourcemap contains no sources.
100
+ // For builder-internal generated code chunks, which are typically helper functions,
101
+ // a virtual source is added to the sourcemap to prevent them from being incorrectly
102
+ // included in the final coverage report.
103
+ const map = sourceMapText ? JSON.parse(sourceMapText) : undefined;
104
+ if (map) {
105
+ if (!map.sources?.length && !map.sourcesContent?.length && !map.mappings) {
106
+ map.sources = ['virtual:builder'];
107
+ }
108
+ }
109
+ return {
110
+ code,
111
+ map,
112
+ };
113
+ }
114
+ },
115
+ configureServer: (server) => {
116
+ server.middlewares.use((0, assets_middleware_1.createBuildAssetsMiddleware)(server.config.base, buildResultFiles));
117
+ },
118
+ },
119
+ {
120
+ name: 'angular:html-index',
121
+ transformIndexHtml: () => {
122
+ // Add all global stylesheets
123
+ if (buildResultFiles.has('styles.css')) {
124
+ return [
125
+ {
126
+ tag: 'link',
127
+ attrs: { href: 'styles.css', rel: 'stylesheet' },
128
+ injectTo: 'head',
129
+ },
130
+ ];
131
+ }
132
+ return [];
133
+ },
134
+ },
135
+ ],
136
+ });
137
+ },
138
+ },
139
+ ];
140
+ }
141
+ //# sourceMappingURL=plugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["plugins.ts"],"names":[],"mappings":"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"}