@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
@@ -39,8 +39,13 @@ var __importStar = (this && this.__importStar) || (function () {
39
39
  return result;
40
40
  };
41
41
  })();
42
+ var __importDefault = (this && this.__importDefault) || function (mod) {
43
+ return (mod && mod.__esModule) ? mod : { "default": mod };
44
+ };
42
45
  Object.defineProperty(exports, "__esModule", { value: true });
43
46
  exports.KarmaExecutor = void 0;
47
+ const promises_1 = __importDefault(require("node:fs/promises"));
48
+ const node_path_1 = __importDefault(require("node:path"));
44
49
  class KarmaExecutor {
45
50
  context;
46
51
  options;
@@ -50,15 +55,38 @@ class KarmaExecutor {
50
55
  }
51
56
  async *execute() {
52
57
  const { context, options: unitTestOptions } = this;
58
+ if (unitTestOptions.browserViewport) {
59
+ context.logger.warn('The "karma" test runner does not support the "browserViewport" option. The option will be ignored.');
60
+ }
53
61
  if (unitTestOptions.debug) {
54
62
  context.logger.warn('The "karma" test runner does not support the "debug" option. The option will be ignored.');
55
63
  }
56
64
  if (unitTestOptions.setupFiles.length) {
57
65
  context.logger.warn('The "karma" test runner does not support the "setupFiles" option. The option will be ignored.');
58
66
  }
67
+ if (unitTestOptions.coverage?.include) {
68
+ context.logger.warn('The "karma" test runner does not support the "coverageInclude" option. The option will be ignored.');
69
+ }
59
70
  const buildTargetOptions = (await context.validateOptions(await context.getTargetOptions(unitTestOptions.buildTarget), await context.getBuilderNameForTarget(unitTestOptions.buildTarget)));
71
+ let karmaConfig;
72
+ if (typeof unitTestOptions.runnerConfig === 'string') {
73
+ karmaConfig = unitTestOptions.runnerConfig;
74
+ context.logger.info(`Using Karma configuration file: ${karmaConfig}`);
75
+ }
76
+ else if (unitTestOptions.runnerConfig) {
77
+ const potentialPath = node_path_1.default.join(unitTestOptions.projectRoot, 'karma.conf.js');
78
+ try {
79
+ await promises_1.default.access(potentialPath);
80
+ karmaConfig = potentialPath;
81
+ context.logger.info(`Using Karma configuration file: ${karmaConfig}`);
82
+ }
83
+ catch {
84
+ context.logger.info('No Karma configuration file found. Using default configuration.');
85
+ }
86
+ }
60
87
  const karmaOptions = {
61
- tsConfig: unitTestOptions.tsConfig,
88
+ karmaConfig,
89
+ tsConfig: unitTestOptions.tsConfig ?? buildTargetOptions.tsConfig,
62
90
  polyfills: buildTargetOptions.polyfills,
63
91
  assets: buildTargetOptions.assets,
64
92
  scripts: buildTargetOptions.scripts,
@@ -76,18 +104,57 @@ class KarmaExecutor {
76
104
  poll: buildTargetOptions.poll,
77
105
  preserveSymlinks: buildTargetOptions.preserveSymlinks,
78
106
  browsers: unitTestOptions.browsers?.join(','),
79
- codeCoverage: !!unitTestOptions.codeCoverage,
80
- codeCoverageExclude: unitTestOptions.codeCoverage?.exclude,
107
+ codeCoverage: unitTestOptions.coverage.enabled,
108
+ codeCoverageExclude: unitTestOptions.coverage.exclude,
81
109
  fileReplacements: buildTargetOptions.fileReplacements,
82
- reporters: unitTestOptions.reporters,
110
+ reporters: unitTestOptions.reporters?.map((reporter) => {
111
+ // Karma only supports string reporters.
112
+ if (Object.keys(reporter[1]).length > 0) {
113
+ context.logger.warn(`The "karma" test runner does not support options for the "${reporter[0]}" reporter. The options will be ignored.`);
114
+ }
115
+ return reporter[0];
116
+ }),
83
117
  webWorkerTsConfig: buildTargetOptions.webWorkerTsConfig,
84
118
  aot: buildTargetOptions.aot,
85
119
  };
120
+ const transformOptions = {
121
+ karmaOptions: (options) => {
122
+ if (unitTestOptions.filter) {
123
+ let filter = unitTestOptions.filter;
124
+ if (filter[0] === '/' && filter.at(-1) === '/') {
125
+ this.context.logger.warn('The `--filter` option is always a regular expression.' +
126
+ 'Leading and trailing `/` are not required and will be ignored.');
127
+ }
128
+ else {
129
+ filter = `/${filter}/`;
130
+ }
131
+ options.client ??= {};
132
+ options.client.args ??= [];
133
+ options.client.args.push('--grep', filter);
134
+ }
135
+ // Add coverage options
136
+ if (unitTestOptions.coverage.enabled) {
137
+ const { thresholds, watermarks } = unitTestOptions.coverage;
138
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
139
+ const coverageReporter = (options.coverageReporter ??= {});
140
+ if (thresholds) {
141
+ coverageReporter.check = thresholds.perFile
142
+ ? { each: thresholds }
143
+ : { global: thresholds };
144
+ }
145
+ if (watermarks) {
146
+ coverageReporter.watermarks = watermarks;
147
+ }
148
+ }
149
+ return options;
150
+ },
151
+ };
86
152
  const { execute } = await Promise.resolve().then(() => __importStar(require('../../../karma')));
87
- yield* execute(karmaOptions, context);
153
+ yield* execute(karmaOptions, context, transformOptions);
88
154
  }
89
155
  async [Symbol.asyncDispose]() {
90
156
  // The Karma builder handles its own teardown
91
157
  }
92
158
  }
93
159
  exports.KarmaExecutor = KarmaExecutor;
160
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["executor.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@
7
7
  * found in the LICENSE file at https://angular.dev/license
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
+ const dependency_checker_1 = require("../dependency-checker");
10
11
  const executor_1 = require("./executor");
11
12
  /**
12
13
  * A declarative definition of the Karma test runner.
@@ -14,6 +15,22 @@ const executor_1 = require("./executor");
14
15
  const KarmaTestRunner = {
15
16
  name: 'karma',
16
17
  isStandalone: true,
18
+ validateDependencies(options) {
19
+ const checker = new dependency_checker_1.DependencyChecker(options.projectSourceRoot);
20
+ checker.check('karma');
21
+ checker.check('karma-jasmine');
22
+ // Check for browser launchers
23
+ if (options.browsers?.length) {
24
+ for (const browser of options.browsers) {
25
+ const launcherName = `karma-${browser.toLowerCase().split('headless')[0]}-launcher`;
26
+ checker.check(launcherName);
27
+ }
28
+ }
29
+ if (options.coverage) {
30
+ checker.check('karma-coverage');
31
+ }
32
+ checker.report();
33
+ },
17
34
  getBuildOptions() {
18
35
  return {
19
36
  buildOptions: {},
@@ -24,3 +41,4 @@ const KarmaTestRunner = {
24
41
  },
25
42
  };
26
43
  exports.default = KarmaTestRunner;
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAGH,8DAA0D;AAC1D,yCAA2C;AAE3C;;GAEG;AACH,MAAM,eAAe,GAAe;IAClC,IAAI,EAAE,OAAO;IACb,YAAY,EAAE,IAAI;IAElB,oBAAoB,CAAC,OAAO;QAC1B,MAAM,OAAO,GAAG,IAAI,sCAAiB,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAE/B,8BAA8B;QAC9B,IAAI,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC7B,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACvC,MAAM,YAAY,GAAG,SAAS,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;gBACpF,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,CAAC,MAAM,EAAE,CAAC;IACnB,CAAC;IAED,eAAe;QACb,OAAO;YACL,YAAY,EAAE,EAAE;SACjB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO;QACnC,OAAO,IAAI,wBAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;CACF,CAAC;AAEF,kBAAe,eAAe,CAAC"}
@@ -5,7 +5,12 @@
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
- export declare function setupBrowserConfiguration(browsers: string[] | undefined, debug: boolean, projectSourceRoot: string): {
9
- browser?: import('vitest/node').BrowserConfigOptions;
8
+ import type { BrowserConfigOptions } from 'vitest/node';
9
+ export interface BrowserConfiguration {
10
+ browser?: BrowserConfigOptions;
10
11
  errors?: string[];
11
- };
12
+ }
13
+ export declare function setupBrowserConfiguration(browsers: string[] | undefined, debug: boolean, projectSourceRoot: string, viewport: {
14
+ width: number;
15
+ height: number;
16
+ } | undefined): Promise<BrowserConfiguration>;
@@ -6,9 +6,43 @@
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
  Object.defineProperty(exports, "__esModule", { value: true });
10
43
  exports.setupBrowserConfiguration = setupBrowserConfiguration;
11
44
  const node_module_1 = require("node:module");
45
+ const error_1 = require("../../../../utils/error");
12
46
  function findBrowserProvider(projectResolver) {
13
47
  // One of these must be installed in the project to use browser testing
14
48
  const vitestBuiltinProviders = ['playwright', 'webdriverio'];
@@ -28,42 +62,62 @@ function normalizeBrowserName(browserName) {
28
62
  const normalized = browserName.toLowerCase();
29
63
  return normalized.replace(/headless$/, '');
30
64
  }
31
- function setupBrowserConfiguration(browsers, debug, projectSourceRoot) {
65
+ async function setupBrowserConfiguration(browsers, debug, projectSourceRoot, viewport) {
32
66
  if (browsers === undefined) {
33
67
  return {};
34
68
  }
35
69
  const projectResolver = (0, node_module_1.createRequire)(projectSourceRoot + '/').resolve;
36
70
  let errors;
37
- try {
38
- projectResolver('@vitest/browser');
39
- }
40
- catch {
41
- errors ??= [];
42
- errors.push('The "browsers" option requires the "@vitest/browser" package to be installed within the project.' +
43
- ' Please install this package and rerun the test command.');
44
- }
45
- const provider = findBrowserProvider(projectResolver);
46
- if (!provider) {
71
+ const providerName = findBrowserProvider(projectResolver);
72
+ if (!providerName) {
47
73
  errors ??= [];
48
74
  errors.push('The "browsers" option requires either "playwright" or "webdriverio" to be installed within the project.' +
49
75
  ' Please install one of these packages and rerun the test command.');
50
76
  }
51
- // Vitest current requires the playwright browser provider to use the inspect-brk option used by "debug"
52
- if (debug && provider !== 'playwright') {
53
- errors ??= [];
54
- errors.push('Debugging browser mode tests currently requires the use of "playwright".' +
55
- ' Please install this package and rerun the test command.');
77
+ let provider;
78
+ if (providerName) {
79
+ const providerPackage = `@vitest/browser-${providerName}`;
80
+ try {
81
+ const providerModule = await Promise.resolve(`${projectResolver(providerPackage)}`).then(s => __importStar(require(s)));
82
+ // Validate that the imported module has the expected structure
83
+ const providerFactory = providerModule[providerName];
84
+ if (typeof providerFactory === 'function') {
85
+ provider = providerFactory();
86
+ }
87
+ else {
88
+ errors ??= [];
89
+ errors.push(`The "${providerPackage}" package does not have a valid browser provider export.`);
90
+ }
91
+ }
92
+ catch (e) {
93
+ (0, error_1.assertIsError)(e);
94
+ errors ??= [];
95
+ // Check for a module not found error to provide a more specific message
96
+ if (e.code === 'ERR_MODULE_NOT_FOUND') {
97
+ errors.push(`The "browsers" option with "${providerName}" requires the "${providerPackage}" package.` +
98
+ ' Please install this package and rerun the test command.');
99
+ }
100
+ else {
101
+ // Handle other potential errors during import
102
+ errors.push(`An error occurred while loading the "${providerPackage}" browser provider:\n ${e.message}`);
103
+ }
104
+ }
56
105
  }
57
106
  if (errors) {
58
107
  return { errors };
59
108
  }
109
+ const isCI = !!process.env['CI'];
110
+ const headless = isCI || browsers.some((name) => name.toLowerCase().includes('headless'));
60
111
  const browser = {
61
112
  enabled: true,
62
113
  provider,
63
- headless: browsers.some((name) => name.toLowerCase().includes('headless')),
114
+ headless,
115
+ ui: !headless,
116
+ viewport,
64
117
  instances: browsers.map((browserName) => ({
65
118
  browser: normalizeBrowserName(browserName),
66
119
  })),
67
120
  };
68
121
  return { browser };
69
122
  }
123
+ //# sourceMappingURL=browser-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-provider.js","sourceRoot":"","sources":["browser-provider.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,22 @@ const path_1 = require("../../../../utils/path");
16
16
  const schema_1 = require("../../../application/schema");
17
17
  const options_1 = require("../../options");
18
18
  const test_discovery_1 = require("../../test-discovery");
19
- function createTestBedInitVirtualFile(providersFile, projectSourceRoot) {
19
+ /**
20
+ * A list of Angular related packages that should be marked as external.
21
+ * This allows Vite to pre-bundle them, improving performance.
22
+ */
23
+ const ANGULAR_PACKAGES_TO_EXTERNALIZE = [
24
+ '@angular/core',
25
+ '@angular/common',
26
+ '@angular/platform-browser',
27
+ '@angular/compiler',
28
+ '@angular/router',
29
+ '@angular/forms',
30
+ '@angular/animations',
31
+ 'rxjs',
32
+ ];
33
+ function createTestBedInitVirtualFile(providersFile, projectSourceRoot, polyfills = []) {
34
+ const usesZoneJS = polyfills.includes('zone.js');
20
35
  let providersImport = 'const providers = [];';
21
36
  if (providersFile) {
22
37
  const relativePath = node_path_1.default.relative(projectSourceRoot, providersFile);
@@ -26,7 +41,7 @@ function createTestBedInitVirtualFile(providersFile, projectSourceRoot) {
26
41
  }
27
42
  return `
28
43
  // Initialize the Angular testing environment
29
- import { NgModule } from '@angular/core';
44
+ import { NgModule${usesZoneJS ? ', provideZoneChangeDetection' : ''} } from '@angular/core';
30
45
  import { getTestBed, ɵgetCleanupHook as getCleanupHook } from '@angular/core/testing';
31
46
  import { BrowserTestingModule, platformBrowserTesting } from '@angular/platform-browser/testing';
32
47
  ${providersImport}
@@ -34,7 +49,7 @@ function createTestBedInitVirtualFile(providersFile, projectSourceRoot) {
34
49
  beforeEach(getCleanupHook(false));
35
50
  afterEach(getCleanupHook(true));
36
51
  @NgModule({
37
- providers,
52
+ providers: [${usesZoneJS ? 'provideZoneChangeDetection(), ' : ''}...providers],
38
53
  })
39
54
  export class TestModule {}
40
55
  getTestBed().initTestEnvironment([BrowserTestingModule, TestModule], platformBrowserTesting(), {
@@ -43,8 +58,18 @@ function createTestBedInitVirtualFile(providersFile, projectSourceRoot) {
43
58
  });
44
59
  `;
45
60
  }
61
+ function adjustOutputHashing(hashing) {
62
+ switch (hashing) {
63
+ case schema_1.OutputHashing.All:
64
+ case schema_1.OutputHashing.Media:
65
+ // Ensure media is continued to be hashed to avoid overwriting of output media files
66
+ return schema_1.OutputHashing.Media;
67
+ default:
68
+ return schema_1.OutputHashing.None;
69
+ }
70
+ }
46
71
  async function getVitestBuildOptions(options, baseBuildOptions) {
47
- const { workspaceRoot, projectSourceRoot, include, exclude, watch, tsConfig, providersFile } = options;
72
+ const { workspaceRoot, projectSourceRoot, include, exclude = [], watch, providersFile } = options;
48
73
  // Find test files
49
74
  const testFiles = await (0, test_discovery_1.findTests)(include, exclude, workspaceRoot, projectSourceRoot);
50
75
  if (testFiles.length === 0) {
@@ -53,8 +78,21 @@ async function getVitestBuildOptions(options, baseBuildOptions) {
53
78
  (exclude.length ? `- Excluded: ${exclude.join(', ')}\n` : '') +
54
79
  `\nPlease check the 'test' target configuration in your project's 'angular.json' file.`);
55
80
  }
56
- const entryPoints = (0, test_discovery_1.getTestEntrypoints)(testFiles, { projectSourceRoot, workspaceRoot });
81
+ const entryPoints = (0, test_discovery_1.getTestEntrypoints)(testFiles, {
82
+ projectSourceRoot,
83
+ workspaceRoot,
84
+ removeTestExtension: true,
85
+ });
57
86
  entryPoints.set('init-testbed', 'angular:test-bed-init');
87
+ const externalDependencies = new Set(['vitest']);
88
+ if (!options.browsers?.length) {
89
+ // Only add for non-browser setups.
90
+ // Comprehensive browser prebundling will be handled separately.
91
+ ANGULAR_PACKAGES_TO_EXTERNALIZE.forEach((dep) => externalDependencies.add(dep));
92
+ }
93
+ if (baseBuildOptions.externalDependencies) {
94
+ baseBuildOptions.externalDependencies.forEach((dep) => externalDependencies.add(dep));
95
+ }
58
96
  const buildOptions = {
59
97
  ...baseBuildOptions,
60
98
  watch,
@@ -70,18 +108,19 @@ async function getVitestBuildOptions(options, baseBuildOptions) {
70
108
  ssr: false,
71
109
  prerender: false,
72
110
  sourceMap: { scripts: true, vendor: false, styles: false },
73
- outputHashing: schema_1.OutputHashing.None,
111
+ outputHashing: adjustOutputHashing(baseBuildOptions.outputHashing),
74
112
  optimization: false,
75
- tsConfig,
76
113
  entryPoints,
77
- externalDependencies: ['vitest', '@vitest/browser/context'],
114
+ externalDependencies: [...externalDependencies],
78
115
  };
79
116
  buildOptions.polyfills = (0, options_1.injectTestingPolyfills)(buildOptions.polyfills);
80
- const testBedInitContents = createTestBedInitVirtualFile(providersFile, projectSourceRoot);
117
+ const testBedInitContents = createTestBedInitVirtualFile(providersFile, projectSourceRoot, buildOptions.polyfills);
81
118
  return {
82
119
  buildOptions,
83
120
  virtualFiles: {
84
121
  'angular:test-bed-init': testBedInitContents,
85
122
  },
123
+ testEntryPointMappings: entryPoints,
86
124
  };
87
125
  }
126
+ //# sourceMappingURL=build-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-options.js","sourceRoot":"","sources":["build-options.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.dev/license
7
+ */
8
+ /**
9
+ * Finds the Vitest configuration file in the given search directories.
10
+ *
11
+ * @param searchDirs An array of directories to search for the configuration file.
12
+ * @returns The path to the configuration file, or `false` if no file is found.
13
+ * Returning `false` is used to disable Vitest's default configuration file search.
14
+ */
15
+ export declare function findVitestBaseConfig(searchDirs: string[]): Promise<string | false>;
@@ -0,0 +1,57 @@
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.findVitestBaseConfig = findVitestBaseConfig;
14
+ /**
15
+ * @fileoverview
16
+ * This file contains utility functions for finding the Vitest base configuration file.
17
+ */
18
+ const promises_1 = require("node:fs/promises");
19
+ const node_path_1 = __importDefault(require("node:path"));
20
+ /**
21
+ * A list of potential Vitest configuration filenames.
22
+ * The order of the files is important as the first one found will be used.
23
+ */
24
+ const POTENTIAL_CONFIGS = [
25
+ 'vitest-base.config.ts',
26
+ 'vitest-base.config.mts',
27
+ 'vitest-base.config.cts',
28
+ 'vitest-base.config.js',
29
+ 'vitest-base.config.mjs',
30
+ 'vitest-base.config.cjs',
31
+ ];
32
+ /**
33
+ * Finds the Vitest configuration file in the given search directories.
34
+ *
35
+ * @param searchDirs An array of directories to search for the configuration file.
36
+ * @returns The path to the configuration file, or `false` if no file is found.
37
+ * Returning `false` is used to disable Vitest's default configuration file search.
38
+ */
39
+ async function findVitestBaseConfig(searchDirs) {
40
+ const uniqueDirs = new Set(searchDirs);
41
+ for (const dir of uniqueDirs) {
42
+ try {
43
+ const entries = await (0, promises_1.readdir)(dir, { withFileTypes: true });
44
+ const files = new Set(entries.filter((e) => e.isFile()).map((e) => e.name));
45
+ for (const potential of POTENTIAL_CONFIGS) {
46
+ if (files.has(potential)) {
47
+ return node_path_1.default.join(dir, potential);
48
+ }
49
+ }
50
+ }
51
+ catch {
52
+ // Ignore directories that cannot be read
53
+ }
54
+ }
55
+ return false;
56
+ }
57
+ //# sourceMappingURL=configuration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration.js","sourceRoot":"","sources":["configuration.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;AA8BH,oDAkBC;AA9CD;;;GAGG;AAEH,+CAA2C;AAC3C,0DAA6B;AAE7B;;;GAGG;AACH,MAAM,iBAAiB,GAAG;IACxB,uBAAuB;IACvB,wBAAwB;IACxB,wBAAwB;IACxB,uBAAuB;IACvB,wBAAwB;IACxB,wBAAwB;CACzB,CAAC;AAEF;;;;;;GAMG;AACI,KAAK,UAAU,oBAAoB,CAAC,UAAoB;IAC7D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAA,kBAAO,EAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5D,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAE5E,KAAK,MAAM,SAAS,IAAI,iBAAiB,EAAE,CAAC;gBAC1C,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBACzB,OAAO,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yCAAyC;QAC3C,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -11,13 +11,15 @@ import { NormalizedUnitTestBuilderOptions } from '../../options';
11
11
  import type { TestExecutor } from '../api';
12
12
  export declare class VitestExecutor implements TestExecutor {
13
13
  private vitest;
14
+ private normalizePath;
14
15
  private readonly projectName;
15
16
  private readonly options;
16
- private readonly outputPath;
17
- private latestBuildResult;
18
- private readonly sigintListener;
19
- constructor(projectName: string, options: NormalizedUnitTestBuilderOptions);
17
+ private readonly buildResultFiles;
18
+ private readonly testFileToEntryPoint;
19
+ private readonly entryPointToTestFile;
20
+ constructor(projectName: string, options: NormalizedUnitTestBuilderOptions, testEntryPointMappings: Map<string, string> | undefined);
20
21
  execute(buildResult: FullResult | IncrementalResult): AsyncIterable<BuilderOutput>;
21
22
  [Symbol.asyncDispose](): Promise<void>;
23
+ private prepareSetupFiles;
22
24
  private initializeVitest;
23
25
  }