@angular/build 21.0.0-next.0 → 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.
- package/index.js +1 -0
- package/index.js.map +1 -0
- package/package.json +18 -18
- package/private/index.js +1 -0
- package/private/index.js.map +1 -0
- package/src/builders/application/build-action.js +1 -0
- package/src/builders/application/build-action.js.map +1 -0
- package/src/builders/application/chunk-optimizer.js +3 -1
- package/src/builders/application/chunk-optimizer.js.map +1 -0
- package/src/builders/application/execute-build.js +1 -0
- package/src/builders/application/execute-build.js.map +1 -0
- package/src/builders/application/execute-post-bundle.js +1 -0
- package/src/builders/application/execute-post-bundle.js.map +1 -0
- package/src/builders/application/i18n.js +1 -0
- package/src/builders/application/i18n.js.map +1 -0
- package/src/builders/application/index.js +42 -1
- package/src/builders/application/index.js.map +1 -0
- package/src/builders/application/options.d.ts +4 -1
- package/src/builders/application/options.js +1 -0
- package/src/builders/application/options.js.map +1 -0
- package/src/builders/application/results.js +1 -0
- package/src/builders/application/results.js.map +1 -0
- package/src/builders/application/schema.d.ts +14 -1
- package/src/builders/application/schema.js +7 -0
- package/src/builders/application/schema.js.map +1 -0
- package/src/builders/application/schema.json +2 -2
- package/src/builders/application/setup-bundling.js +1 -0
- package/src/builders/application/setup-bundling.js.map +1 -0
- package/src/builders/dev-server/builder.js +1 -0
- package/src/builders/dev-server/builder.js.map +1 -0
- package/src/builders/dev-server/index.js +1 -0
- package/src/builders/dev-server/index.js.map +1 -0
- package/src/builders/dev-server/internal.js +1 -0
- package/src/builders/dev-server/internal.js.map +1 -0
- package/src/builders/dev-server/options.d.ts +3 -0
- package/src/builders/dev-server/options.js +3 -1
- package/src/builders/dev-server/options.js.map +1 -0
- package/src/builders/dev-server/output.js +1 -0
- package/src/builders/dev-server/output.js.map +1 -0
- package/src/builders/dev-server/schema.d.ts +9 -0
- package/src/builders/dev-server/schema.js +1 -0
- package/src/builders/dev-server/schema.js.map +1 -0
- package/src/builders/dev-server/schema.json +7 -0
- package/src/builders/dev-server/vite/hmr.js +1 -0
- package/src/builders/dev-server/vite/hmr.js.map +1 -0
- package/src/builders/dev-server/vite/index.js +14 -5
- package/src/builders/dev-server/vite/index.js.map +1 -0
- package/src/builders/dev-server/vite/server.js +2 -4
- package/src/builders/dev-server/vite/server.js.map +1 -0
- package/src/builders/dev-server/vite/utils.js +1 -0
- package/src/builders/dev-server/vite/utils.js.map +1 -0
- package/src/builders/extract-i18n/application-extraction.js +1 -0
- package/src/builders/extract-i18n/application-extraction.js.map +1 -0
- package/src/builders/extract-i18n/builder.js +2 -3
- package/src/builders/extract-i18n/builder.js.map +1 -0
- package/src/builders/extract-i18n/index.js +1 -0
- package/src/builders/extract-i18n/index.js.map +1 -0
- package/src/builders/extract-i18n/options.js +1 -0
- package/src/builders/extract-i18n/options.js.map +1 -0
- package/src/builders/extract-i18n/schema.js +1 -0
- package/src/builders/extract-i18n/schema.js.map +1 -0
- package/src/builders/karma/application_builder.d.ts +0 -2
- package/src/builders/karma/application_builder.js +52 -350
- package/src/builders/karma/application_builder.js.map +1 -0
- package/src/builders/karma/assets-middleware.d.ts +26 -0
- package/src/builders/karma/assets-middleware.js +66 -0
- package/src/builders/karma/assets-middleware.js.map +1 -0
- package/src/builders/karma/coverage.d.ts +9 -0
- package/src/builders/karma/coverage.js +32 -0
- package/src/builders/karma/coverage.js.map +1 -0
- package/src/builders/karma/find-tests.d.ts +1 -8
- package/src/builders/karma/find-tests.js +7 -102
- package/src/builders/karma/find-tests.js.map +1 -0
- package/src/builders/karma/index.js +1 -0
- package/src/builders/karma/index.js.map +1 -0
- package/src/builders/karma/karma-config.d.ts +11 -0
- package/src/builders/karma/karma-config.js +80 -0
- package/src/builders/karma/karma-config.js.map +1 -0
- package/src/builders/karma/options.js +1 -0
- package/src/builders/karma/options.js.map +1 -0
- package/src/builders/karma/polyfills-plugin.d.ts +13 -0
- package/src/builders/karma/polyfills-plugin.js +75 -0
- package/src/builders/karma/polyfills-plugin.js.map +1 -0
- package/src/builders/karma/progress-reporter.d.ts +17 -0
- package/src/builders/karma/progress-reporter.js +76 -0
- package/src/builders/karma/progress-reporter.js.map +1 -0
- package/src/builders/karma/schema.js +1 -0
- package/src/builders/karma/schema.js.map +1 -0
- package/src/builders/karma/utils.d.ts +17 -0
- package/src/builders/karma/utils.js +67 -0
- package/src/builders/karma/utils.js.map +1 -0
- package/src/builders/ng-packagr/builder.js +1 -0
- package/src/builders/ng-packagr/builder.js.map +1 -0
- package/src/builders/ng-packagr/index.js +1 -0
- package/src/builders/ng-packagr/index.js.map +1 -0
- package/src/builders/ng-packagr/schema.js +1 -0
- package/src/builders/ng-packagr/schema.js.map +1 -0
- package/src/builders/unit-test/builder.js +158 -44
- package/src/builders/unit-test/builder.js.map +1 -0
- package/src/builders/unit-test/index.js +1 -0
- package/src/builders/unit-test/index.js.map +1 -0
- package/src/builders/unit-test/options.d.ts +25 -6
- package/src/builders/unit-test/options.js +61 -13
- package/src/builders/unit-test/options.js.map +1 -0
- package/src/builders/unit-test/runners/api.d.ts +19 -1
- package/src/builders/unit-test/runners/api.js +1 -0
- package/src/builders/unit-test/runners/api.js.map +1 -0
- package/src/builders/unit-test/runners/dependency-checker.d.ts +43 -0
- package/src/builders/unit-test/runners/dependency-checker.js +83 -0
- package/src/builders/unit-test/runners/dependency-checker.js.map +1 -0
- package/src/builders/unit-test/runners/karma/executor.js +72 -5
- package/src/builders/unit-test/runners/karma/executor.js.map +1 -0
- package/src/builders/unit-test/runners/karma/index.js +18 -0
- package/src/builders/unit-test/runners/karma/index.js.map +1 -0
- package/src/builders/unit-test/runners/vitest/browser-provider.d.ts +8 -3
- package/src/builders/unit-test/runners/vitest/browser-provider.js +71 -17
- package/src/builders/unit-test/runners/vitest/browser-provider.js.map +1 -0
- package/src/builders/unit-test/runners/vitest/build-options.js +48 -9
- package/src/builders/unit-test/runners/vitest/build-options.js.map +1 -0
- package/src/builders/unit-test/runners/vitest/configuration.d.ts +15 -0
- package/src/builders/unit-test/runners/vitest/configuration.js +57 -0
- package/src/builders/unit-test/runners/vitest/configuration.js.map +1 -0
- package/src/builders/unit-test/runners/vitest/executor.d.ts +7 -4
- package/src/builders/unit-test/runners/vitest/executor.js +183 -89
- package/src/builders/unit-test/runners/vitest/executor.js.map +1 -0
- package/src/builders/unit-test/runners/vitest/index.js +25 -2
- package/src/builders/unit-test/runners/vitest/index.js.map +1 -0
- package/src/builders/unit-test/runners/vitest/plugins.d.ts +23 -0
- package/src/builders/unit-test/runners/vitest/plugins.js +141 -0
- package/src/builders/unit-test/runners/vitest/plugins.js.map +1 -0
- package/src/builders/unit-test/schema.d.ts +163 -39
- package/src/builders/unit-test/schema.js +14 -13
- package/src/builders/unit-test/schema.js.map +1 -0
- package/src/builders/unit-test/schema.json +186 -40
- package/src/builders/unit-test/test-discovery.d.ts +29 -1
- package/src/builders/unit-test/test-discovery.js +215 -5
- package/src/builders/unit-test/test-discovery.js.map +1 -0
- package/src/index.js +1 -0
- package/src/index.js.map +1 -0
- package/src/private.js +1 -0
- package/src/private.js.map +1 -0
- package/src/tools/angular/angular-host.js +1 -0
- package/src/tools/angular/angular-host.js.map +1 -0
- package/src/tools/angular/compilation/angular-compilation.js +2 -5
- package/src/tools/angular/compilation/angular-compilation.js.map +1 -0
- package/src/tools/angular/compilation/aot-compilation.js +1 -0
- package/src/tools/angular/compilation/aot-compilation.js.map +1 -0
- package/src/tools/angular/compilation/factory.js +1 -0
- package/src/tools/angular/compilation/factory.js.map +1 -0
- package/src/tools/angular/compilation/hmr-candidates.js +1 -0
- package/src/tools/angular/compilation/hmr-candidates.js.map +1 -0
- package/src/tools/angular/compilation/index.js +1 -0
- package/src/tools/angular/compilation/index.js.map +1 -0
- package/src/tools/angular/compilation/jit-compilation.js +35 -2
- package/src/tools/angular/compilation/jit-compilation.js.map +1 -0
- package/src/tools/angular/compilation/noop-compilation.js +1 -0
- package/src/tools/angular/compilation/noop-compilation.js.map +1 -0
- package/src/tools/angular/compilation/parallel-compilation.js +1 -0
- package/src/tools/angular/compilation/parallel-compilation.js.map +1 -0
- package/src/tools/angular/compilation/parallel-worker.js +1 -0
- package/src/tools/angular/compilation/parallel-worker.js.map +1 -0
- package/src/tools/angular/transformers/jit-bootstrap-transformer.js +2 -1
- package/src/tools/angular/transformers/jit-bootstrap-transformer.js.map +1 -0
- package/src/tools/angular/transformers/jit-resource-transformer.js +2 -1
- package/src/tools/angular/transformers/jit-resource-transformer.js.map +1 -0
- package/src/tools/angular/transformers/lazy-routes-transformer.js +1 -0
- package/src/tools/angular/transformers/lazy-routes-transformer.js.map +1 -0
- package/src/tools/angular/transformers/web-worker-transformer.js +1 -0
- package/src/tools/angular/transformers/web-worker-transformer.js.map +1 -0
- package/src/tools/angular/uri.js +1 -0
- package/src/tools/angular/uri.js.map +1 -0
- package/src/tools/babel/plugins/add-code-coverage.js +1 -0
- package/src/tools/babel/plugins/add-code-coverage.js.map +1 -0
- package/src/tools/babel/plugins/adjust-static-class-members.js +1 -0
- package/src/tools/babel/plugins/adjust-static-class-members.js.map +1 -0
- package/src/tools/babel/plugins/adjust-typescript-enums.js +1 -0
- package/src/tools/babel/plugins/adjust-typescript-enums.js.map +1 -0
- package/src/tools/babel/plugins/elide-angular-metadata.js +1 -0
- package/src/tools/babel/plugins/elide-angular-metadata.js.map +1 -0
- package/src/tools/babel/plugins/index.js +1 -0
- package/src/tools/babel/plugins/index.js.map +1 -0
- package/src/tools/babel/plugins/pure-toplevel-functions.d.ts +0 -1
- package/src/tools/babel/plugins/pure-toplevel-functions.js +22 -5
- package/src/tools/babel/plugins/pure-toplevel-functions.js.map +1 -0
- package/src/tools/esbuild/angular/compilation-state.js +1 -0
- package/src/tools/esbuild/angular/compilation-state.js.map +1 -0
- package/src/tools/esbuild/angular/compiler-plugin.js +44 -16
- package/src/tools/esbuild/angular/compiler-plugin.js.map +1 -0
- package/src/tools/esbuild/angular/component-stylesheets.js +1 -0
- package/src/tools/esbuild/angular/component-stylesheets.js.map +1 -0
- package/src/tools/esbuild/angular/diagnostics.js +1 -0
- package/src/tools/esbuild/angular/diagnostics.js.map +1 -0
- package/src/tools/esbuild/angular/file-reference-tracker.js +1 -0
- package/src/tools/esbuild/angular/file-reference-tracker.js.map +1 -0
- package/src/tools/esbuild/angular/jit-plugin-callbacks.js +1 -0
- package/src/tools/esbuild/angular/jit-plugin-callbacks.js.map +1 -0
- package/src/tools/esbuild/angular/rewrite-bazel-paths.d.ts +8 -0
- package/src/tools/esbuild/angular/rewrite-bazel-paths.js +28 -0
- package/src/tools/esbuild/angular/rewrite-bazel-paths.js.map +1 -0
- package/src/tools/esbuild/angular/source-file-cache.js +1 -0
- package/src/tools/esbuild/angular/source-file-cache.js.map +1 -0
- package/src/tools/esbuild/angular-localize-init-warning-plugin.js +1 -0
- package/src/tools/esbuild/angular-localize-init-warning-plugin.js.map +1 -0
- package/src/tools/esbuild/application-code-bundle.js +2 -1
- package/src/tools/esbuild/application-code-bundle.js.map +1 -0
- package/src/tools/esbuild/budget-stats.js +1 -0
- package/src/tools/esbuild/budget-stats.js.map +1 -0
- package/src/tools/esbuild/bundler-context.js +1 -0
- package/src/tools/esbuild/bundler-context.js.map +1 -0
- package/src/tools/esbuild/bundler-execution-result.js +1 -0
- package/src/tools/esbuild/bundler-execution-result.js.map +1 -0
- package/src/tools/esbuild/cache.js +1 -0
- package/src/tools/esbuild/cache.js.map +1 -0
- package/src/tools/esbuild/commonjs-checker.js +1 -0
- package/src/tools/esbuild/commonjs-checker.js.map +1 -0
- package/src/tools/esbuild/compiler-plugin-options.js +1 -0
- package/src/tools/esbuild/compiler-plugin-options.js.map +1 -0
- package/src/tools/esbuild/external-packages-plugin.js +1 -0
- package/src/tools/esbuild/external-packages-plugin.js.map +1 -0
- package/src/tools/esbuild/global-scripts.js +1 -0
- package/src/tools/esbuild/global-scripts.js.map +1 -0
- package/src/tools/esbuild/global-styles.js +1 -0
- package/src/tools/esbuild/global-styles.js.map +1 -0
- package/src/tools/esbuild/i18n-inliner-worker.js +35 -2
- package/src/tools/esbuild/i18n-inliner-worker.js.map +1 -0
- package/src/tools/esbuild/i18n-inliner.js +1 -0
- package/src/tools/esbuild/i18n-inliner.js.map +1 -0
- package/src/tools/esbuild/i18n-locale-plugin.js +34 -15
- package/src/tools/esbuild/i18n-locale-plugin.js.map +1 -0
- package/src/tools/esbuild/index-html-generator.js +1 -0
- package/src/tools/esbuild/index-html-generator.js.map +1 -0
- package/src/tools/esbuild/javascript-transformer-worker.js +5 -10
- package/src/tools/esbuild/javascript-transformer-worker.js.map +1 -0
- package/src/tools/esbuild/javascript-transformer.js +1 -0
- package/src/tools/esbuild/javascript-transformer.js.map +1 -0
- package/src/tools/esbuild/license-extractor.js +1 -0
- package/src/tools/esbuild/license-extractor.js.map +1 -0
- package/src/tools/esbuild/lmdb-cache-store.js +1 -0
- package/src/tools/esbuild/lmdb-cache-store.js.map +1 -0
- package/src/tools/esbuild/load-result-cache.js +1 -0
- package/src/tools/esbuild/load-result-cache.js.map +1 -0
- package/src/tools/esbuild/loader-import-attribute-plugin.js +1 -0
- package/src/tools/esbuild/loader-import-attribute-plugin.js.map +1 -0
- package/src/tools/esbuild/profiling.js +1 -0
- package/src/tools/esbuild/profiling.js.map +1 -0
- package/src/tools/esbuild/rxjs-esm-resolution-plugin.js +1 -0
- package/src/tools/esbuild/rxjs-esm-resolution-plugin.js.map +1 -0
- package/src/tools/esbuild/server-bundle-metadata-plugin.js +1 -0
- package/src/tools/esbuild/server-bundle-metadata-plugin.js.map +1 -0
- package/src/tools/esbuild/sourcemap-ignorelist-plugin.js +1 -0
- package/src/tools/esbuild/sourcemap-ignorelist-plugin.js.map +1 -0
- package/src/tools/esbuild/stylesheets/bundle-options.d.ts +4 -1
- package/src/tools/esbuild/stylesheets/bundle-options.js +1 -0
- package/src/tools/esbuild/stylesheets/bundle-options.js.map +1 -0
- package/src/tools/esbuild/stylesheets/css-inline-fonts-plugin.js +1 -0
- package/src/tools/esbuild/stylesheets/css-inline-fonts-plugin.js.map +1 -0
- package/src/tools/esbuild/stylesheets/css-language.js +1 -0
- package/src/tools/esbuild/stylesheets/css-language.js.map +1 -0
- package/src/tools/esbuild/stylesheets/css-resource-plugin.js +1 -0
- package/src/tools/esbuild/stylesheets/css-resource-plugin.js.map +1 -0
- package/src/tools/esbuild/stylesheets/less-language.js +3 -26
- package/src/tools/esbuild/stylesheets/less-language.js.map +1 -0
- package/src/tools/esbuild/stylesheets/sass-language.js +1 -0
- package/src/tools/esbuild/stylesheets/sass-language.js.map +1 -0
- package/src/tools/esbuild/stylesheets/stylesheet-plugin-factory.d.ts +4 -1
- package/src/tools/esbuild/stylesheets/stylesheet-plugin-factory.js +8 -3
- package/src/tools/esbuild/stylesheets/stylesheet-plugin-factory.js.map +1 -0
- package/src/tools/esbuild/utils.js +1 -0
- package/src/tools/esbuild/utils.js.map +1 -0
- package/src/tools/esbuild/virtual-module-plugin.js +1 -0
- package/src/tools/esbuild/virtual-module-plugin.js.map +1 -0
- package/src/tools/esbuild/wasm-plugin.js +1 -0
- package/src/tools/esbuild/wasm-plugin.js.map +1 -0
- package/src/tools/esbuild/watcher.js +1 -0
- package/src/tools/esbuild/watcher.js.map +1 -0
- package/src/tools/sass/lexer.js +1 -0
- package/src/tools/sass/lexer.js.map +1 -0
- package/src/tools/sass/rebasing-importer.js +1 -0
- package/src/tools/sass/rebasing-importer.js.map +1 -0
- package/src/tools/sass/sass-service.js +1 -0
- package/src/tools/sass/sass-service.js.map +1 -0
- package/src/tools/sass/worker.js +1 -0
- package/src/tools/sass/worker.js.map +1 -0
- package/src/tools/vite/middlewares/assets-middleware.d.ts +2 -0
- package/src/tools/vite/middlewares/assets-middleware.js +32 -0
- package/src/tools/vite/middlewares/assets-middleware.js.map +1 -0
- package/src/tools/vite/middlewares/chrome-devtools-middleware.js +1 -0
- package/src/tools/vite/middlewares/chrome-devtools-middleware.js.map +1 -0
- package/src/tools/vite/middlewares/component-middleware.js +1 -0
- package/src/tools/vite/middlewares/component-middleware.js.map +1 -0
- package/src/tools/vite/middlewares/headers-middleware.js +1 -0
- package/src/tools/vite/middlewares/headers-middleware.js.map +1 -0
- package/src/tools/vite/middlewares/html-fallback-middleware.js +1 -0
- package/src/tools/vite/middlewares/html-fallback-middleware.js.map +1 -0
- package/src/tools/vite/middlewares/index-html-middleware.js +1 -0
- package/src/tools/vite/middlewares/index-html-middleware.js.map +1 -0
- package/src/tools/vite/middlewares/index.js +1 -0
- package/src/tools/vite/middlewares/index.js.map +1 -0
- package/src/tools/vite/middlewares/ssr-middleware.js +42 -5
- package/src/tools/vite/middlewares/ssr-middleware.js.map +1 -0
- package/src/tools/vite/plugins/angular-memory-plugin.js +35 -2
- package/src/tools/vite/plugins/angular-memory-plugin.js.map +1 -0
- package/src/tools/vite/plugins/id-prefix-plugin.js +1 -0
- package/src/tools/vite/plugins/id-prefix-plugin.js.map +1 -0
- package/src/tools/vite/plugins/index.d.ts +0 -1
- package/src/tools/vite/plugins/index.js +2 -3
- package/src/tools/vite/plugins/index.js.map +1 -0
- package/src/tools/vite/plugins/setup-middlewares-plugin.js +35 -2
- package/src/tools/vite/plugins/setup-middlewares-plugin.js.map +1 -0
- package/src/tools/vite/plugins/ssr-transform-plugin.js +35 -2
- package/src/tools/vite/plugins/ssr-transform-plugin.js.map +1 -0
- package/src/tools/vite/utils.js +1 -0
- package/src/tools/vite/utils.js.map +1 -0
- package/src/utils/bundle-calculator.js +1 -0
- package/src/utils/bundle-calculator.js.map +1 -0
- package/src/utils/check-port.js +1 -0
- package/src/utils/check-port.js.map +1 -0
- package/src/utils/color.js +1 -0
- package/src/utils/color.js.map +1 -0
- package/src/utils/delete-output-dir.js +1 -0
- package/src/utils/delete-output-dir.js.map +1 -0
- package/src/utils/environment-options.d.ts +1 -0
- package/src/utils/environment-options.js +7 -1
- package/src/utils/environment-options.js.map +1 -0
- package/src/utils/error.js +1 -0
- package/src/utils/error.js.map +1 -0
- package/src/utils/format-bytes.js +1 -0
- package/src/utils/format-bytes.js.map +1 -0
- package/src/utils/i18n-options.js +1 -0
- package/src/utils/i18n-options.js.map +1 -0
- package/src/utils/index-file/add-event-dispatch-contract.js +1 -0
- package/src/utils/index-file/add-event-dispatch-contract.js.map +1 -0
- package/src/utils/index-file/augment-index-html.js +35 -2
- package/src/utils/index-file/augment-index-html.js.map +1 -0
- package/src/utils/index-file/auto-csp.js +1 -0
- package/src/utils/index-file/auto-csp.js.map +1 -0
- package/src/utils/index-file/html-rewriting-stream.js +35 -2
- package/src/utils/index-file/html-rewriting-stream.js.map +1 -0
- package/src/utils/index-file/index-html-generator.js +1 -0
- package/src/utils/index-file/index-html-generator.js.map +1 -0
- package/src/utils/index-file/inline-critical-css.js +1 -0
- package/src/utils/index-file/inline-critical-css.js.map +1 -0
- package/src/utils/index-file/inline-fonts.js +1 -0
- package/src/utils/index-file/inline-fonts.js.map +1 -0
- package/src/utils/index-file/ngcm-attribute.js +1 -0
- package/src/utils/index-file/ngcm-attribute.js.map +1 -0
- package/src/utils/index-file/nonce.js +1 -0
- package/src/utils/index-file/nonce.js.map +1 -0
- package/src/utils/index-file/valid-self-closing-tags.js +1 -0
- package/src/utils/index-file/valid-self-closing-tags.js.map +1 -0
- package/src/utils/index.js +1 -0
- package/src/utils/index.js.map +1 -0
- package/src/utils/load-esm.js +1 -0
- package/src/utils/load-esm.js.map +1 -0
- package/src/utils/load-proxy-config.js +8 -21
- package/src/utils/load-proxy-config.js.map +1 -0
- package/src/utils/load-translations.js +2 -2
- package/src/utils/load-translations.js.map +1 -0
- package/src/utils/normalize-asset-patterns.js +1 -0
- package/src/utils/normalize-asset-patterns.js.map +1 -0
- package/src/utils/normalize-cache.js +2 -1
- package/src/utils/normalize-cache.js.map +1 -0
- package/src/utils/normalize-optimization.js +1 -0
- package/src/utils/normalize-optimization.js.map +1 -0
- package/src/utils/normalize-source-maps.js +1 -0
- package/src/utils/normalize-source-maps.js.map +1 -0
- package/src/utils/path.js +1 -0
- package/src/utils/path.js.map +1 -0
- package/src/utils/postcss-configuration.d.ts +4 -1
- package/src/utils/postcss-configuration.js +3 -2
- package/src/utils/postcss-configuration.js.map +1 -0
- package/src/utils/project-metadata.js +1 -0
- package/src/utils/project-metadata.js.map +1 -0
- package/src/utils/purge-cache.js +1 -0
- package/src/utils/purge-cache.js.map +1 -0
- package/src/utils/resolve-assets.js +1 -0
- package/src/utils/resolve-assets.js.map +1 -0
- package/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.js +3 -13
- package/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.js.map +1 -0
- package/src/utils/server-rendering/esm-in-memory-loader/register-hooks.js +1 -0
- package/src/utils/server-rendering/esm-in-memory-loader/register-hooks.js.map +1 -0
- package/src/utils/server-rendering/esm-in-memory-loader/utils.js +1 -0
- package/src/utils/server-rendering/esm-in-memory-loader/utils.js.map +1 -0
- package/src/utils/server-rendering/fetch-patch.js +1 -0
- package/src/utils/server-rendering/fetch-patch.js.map +1 -0
- package/src/utils/server-rendering/launch-server.js +37 -2
- package/src/utils/server-rendering/launch-server.js.map +1 -0
- package/src/utils/server-rendering/load-esm-from-memory.d.ts +2 -1
- package/src/utils/server-rendering/load-esm-from-memory.js +1 -0
- package/src/utils/server-rendering/load-esm-from-memory.js.map +1 -0
- package/src/utils/server-rendering/manifest.js +1 -0
- package/src/utils/server-rendering/manifest.js.map +1 -0
- package/src/utils/server-rendering/models.js +1 -0
- package/src/utils/server-rendering/models.js.map +1 -0
- package/src/utils/server-rendering/prerender.js +3 -25
- package/src/utils/server-rendering/prerender.js.map +1 -0
- package/src/utils/server-rendering/render-worker.js +43 -1
- package/src/utils/server-rendering/render-worker.js.map +1 -0
- package/src/utils/server-rendering/routes-extractor-worker.js +37 -0
- package/src/utils/server-rendering/routes-extractor-worker.js.map +1 -0
- package/src/utils/server-rendering/utils.d.ts +11 -1
- package/src/utils/server-rendering/utils.js +26 -0
- package/src/utils/server-rendering/utils.js.map +1 -0
- package/src/utils/service-worker.d.ts +1 -1
- package/src/utils/service-worker.js +4 -6
- package/src/utils/service-worker.js.map +1 -0
- package/src/utils/stats-table.js +1 -0
- package/src/utils/stats-table.js.map +1 -0
- package/src/utils/supported-browsers.js +8 -3
- package/src/utils/supported-browsers.js.map +1 -0
- package/src/utils/test-files.d.ts +17 -0
- package/src/utils/test-files.js +83 -0
- package/src/utils/test-files.js.map +1 -0
- package/src/utils/tty.js +1 -0
- package/src/utils/tty.js.map +1 -0
- package/src/utils/url.js +1 -0
- package/src/utils/url.js.map +1 -0
- package/src/utils/version.js +1 -0
- package/src/utils/version.js.map +1 -0
- package/src/utils/worker-pool.js +1 -0
- package/src/utils/worker-pool.js.map +1 -0
- package/.browserslistrc +0 -7
- package/src/tools/vite/plugins/i18n-locale-plugin.d.ts +0 -14
- package/src/tools/vite/plugins/i18n-locale-plugin.js +0 -54
- package/src/typings.d.ts +0 -19
|
@@ -98,11 +98,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
98
98
|
exports.execute = execute;
|
|
99
99
|
const architect_1 = require("@angular-devkit/architect");
|
|
100
100
|
const node_assert_1 = __importDefault(require("node:assert"));
|
|
101
|
+
const promises_1 = require("node:fs/promises");
|
|
102
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
101
103
|
const virtual_module_plugin_1 = require("../../tools/esbuild/virtual-module-plugin");
|
|
102
104
|
const error_1 = require("../../utils/error");
|
|
105
|
+
const test_files_1 = require("../../utils/test-files");
|
|
103
106
|
const application_1 = require("../application");
|
|
104
107
|
const results_1 = require("../application/results");
|
|
105
108
|
const options_1 = require("./options");
|
|
109
|
+
const dependency_checker_1 = require("./runners/dependency-checker");
|
|
110
|
+
const test_discovery_1 = require("./test-discovery");
|
|
106
111
|
async function loadTestRunner(runnerName) {
|
|
107
112
|
// Harden against directory traversal
|
|
108
113
|
if (!/^[a-zA-Z0-9-]+$/.test(runnerName)) {
|
|
@@ -148,7 +153,8 @@ function prepareBuildExtensions(virtualFiles, projectSourceRoot, extensions) {
|
|
|
148
153
|
}
|
|
149
154
|
return extensions;
|
|
150
155
|
}
|
|
151
|
-
async function* runBuildAndTest(executor, applicationBuildOptions, context, extensions) {
|
|
156
|
+
async function* runBuildAndTest(executor, applicationBuildOptions, context, dumpDirectory, extensions) {
|
|
157
|
+
let consecutiveErrorCount = 0;
|
|
152
158
|
for await (const buildResult of (0, application_1.buildApplicationInternal)(applicationBuildOptions, context, extensions)) {
|
|
153
159
|
if (buildResult.kind === results_1.ResultKind.Failure) {
|
|
154
160
|
yield { success: false };
|
|
@@ -159,65 +165,173 @@ async function* runBuildAndTest(executor, applicationBuildOptions, context, exte
|
|
|
159
165
|
node_assert_1.default.fail('A full and/or incremental build result is required from the application builder.');
|
|
160
166
|
}
|
|
161
167
|
(0, node_assert_1.default)(buildResult.files, 'Builder did not provide result files.');
|
|
168
|
+
if (dumpDirectory) {
|
|
169
|
+
if (buildResult.kind === results_1.ResultKind.Full) {
|
|
170
|
+
// Full build, so clean the directory
|
|
171
|
+
await (0, promises_1.rm)(dumpDirectory, { recursive: true, force: true });
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
// Incremental build, so delete removed files
|
|
175
|
+
for (const file of buildResult.removed) {
|
|
176
|
+
await (0, promises_1.rm)(node_path_1.default.join(dumpDirectory, file.path), { force: true });
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
await (0, test_files_1.writeTestFiles)(buildResult.files, dumpDirectory);
|
|
180
|
+
context.logger.info(`Build output files successfully dumped to '${dumpDirectory}'.`);
|
|
181
|
+
}
|
|
162
182
|
// Pass the build artifacts to the executor
|
|
163
|
-
|
|
183
|
+
try {
|
|
184
|
+
yield* executor.execute(buildResult);
|
|
185
|
+
// Successful execution resets the failure counter
|
|
186
|
+
consecutiveErrorCount = 0;
|
|
187
|
+
}
|
|
188
|
+
catch (e) {
|
|
189
|
+
(0, error_1.assertIsError)(e);
|
|
190
|
+
context.logger.error(`An exception occurred during test execution:\n${e.stack ?? e.message}`);
|
|
191
|
+
yield { success: false };
|
|
192
|
+
consecutiveErrorCount++;
|
|
193
|
+
}
|
|
194
|
+
if (consecutiveErrorCount >= 3) {
|
|
195
|
+
context.logger.error('Test runner process has failed multiple times in a row. Please fix the configuration and restart the process.');
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
164
198
|
}
|
|
165
199
|
}
|
|
166
200
|
/**
|
|
167
201
|
* @experimental Direct usage of this function is considered experimental.
|
|
168
202
|
*/
|
|
169
203
|
async function* execute(options, context, extensions) {
|
|
170
|
-
|
|
204
|
+
// Determine project name from builder context target
|
|
205
|
+
const projectName = context.target?.project;
|
|
206
|
+
if (!projectName) {
|
|
207
|
+
context.logger.error(`The builder requires a target to be specified.`);
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
// Initialize the test runner and normalize options
|
|
211
|
+
let runner;
|
|
212
|
+
let normalizedOptions;
|
|
171
213
|
try {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
214
|
+
normalizedOptions = await (0, options_1.normalizeOptions)(context, projectName, options);
|
|
215
|
+
runner = await loadTestRunner(normalizedOptions.runnerName);
|
|
216
|
+
await runner.validateDependencies?.(normalizedOptions);
|
|
217
|
+
}
|
|
218
|
+
catch (e) {
|
|
219
|
+
(0, error_1.assertIsError)(e);
|
|
220
|
+
if (e instanceof dependency_checker_1.MissingDependenciesError) {
|
|
221
|
+
context.logger.error(e.message);
|
|
177
222
|
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
const runner = await loadTestRunner(normalizedOptions.runnerName);
|
|
181
|
-
const executor = __addDisposableResource(env_1, await runner.createExecutor(context, normalizedOptions), true);
|
|
182
|
-
if (runner.isStandalone) {
|
|
183
|
-
yield* executor.execute({
|
|
184
|
-
kind: results_1.ResultKind.Full,
|
|
185
|
-
files: {},
|
|
186
|
-
});
|
|
187
|
-
return;
|
|
223
|
+
else {
|
|
224
|
+
context.logger.error(`An exception occurred during initialization of the test runner:\n${e.stack ?? e.message}`);
|
|
188
225
|
}
|
|
189
|
-
|
|
190
|
-
|
|
226
|
+
yield { success: false };
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
if (normalizedOptions.listTests) {
|
|
230
|
+
const testFiles = await (0, test_discovery_1.findTests)(normalizedOptions.include, normalizedOptions.exclude ?? [], normalizedOptions.workspaceRoot, normalizedOptions.projectSourceRoot);
|
|
231
|
+
context.logger.info('Discovered test files:');
|
|
232
|
+
for (const file of testFiles) {
|
|
233
|
+
context.logger.info(` ${node_path_1.default.relative(normalizedOptions.workspaceRoot, file)}`);
|
|
234
|
+
}
|
|
235
|
+
yield { success: true };
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
if (runner.isStandalone) {
|
|
191
239
|
try {
|
|
192
|
-
|
|
240
|
+
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
241
|
+
try {
|
|
242
|
+
const executor = __addDisposableResource(env_1, await runner.createExecutor(context, normalizedOptions, undefined), true);
|
|
243
|
+
yield* executor.execute({
|
|
244
|
+
kind: results_1.ResultKind.Full,
|
|
245
|
+
files: {},
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
catch (e_1) {
|
|
249
|
+
env_1.error = e_1;
|
|
250
|
+
env_1.hasError = true;
|
|
251
|
+
}
|
|
252
|
+
finally {
|
|
253
|
+
const result_1 = __disposeResources(env_1);
|
|
254
|
+
if (result_1)
|
|
255
|
+
await result_1;
|
|
256
|
+
}
|
|
193
257
|
}
|
|
194
258
|
catch (e) {
|
|
195
259
|
(0, error_1.assertIsError)(e);
|
|
196
|
-
context.logger.error(`
|
|
197
|
-
|
|
198
|
-
`Error: ${e.message}`);
|
|
199
|
-
return;
|
|
260
|
+
context.logger.error(`An exception occurred during standalone test execution:\n${e.stack ?? e.message}`);
|
|
261
|
+
yield { success: false };
|
|
200
262
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
// Get base build options from the buildTarget
|
|
266
|
+
let buildTargetOptions;
|
|
267
|
+
try {
|
|
268
|
+
const builderName = await context.getBuilderNameForTarget(normalizedOptions.buildTarget);
|
|
269
|
+
if (builderName !== '@angular/build:application' &&
|
|
270
|
+
// TODO: Add comprehensive support for ng-packagr.
|
|
271
|
+
builderName !== '@angular/build:ng-packagr') {
|
|
272
|
+
context.logger.warn(`The 'buildTarget' is configured to use '${builderName}', which is not supported. ` +
|
|
273
|
+
`The 'unit-test' builder is designed to work with '@angular/build:application'. ` +
|
|
274
|
+
'Unexpected behavior or build failures may occur.');
|
|
275
|
+
}
|
|
276
|
+
buildTargetOptions = (await context.validateOptions(await context.getTargetOptions(normalizedOptions.buildTarget), builderName));
|
|
277
|
+
}
|
|
278
|
+
catch (e) {
|
|
279
|
+
(0, error_1.assertIsError)(e);
|
|
280
|
+
context.logger.error(`Could not load build target options for "${(0, architect_1.targetStringFromTarget)(normalizedOptions.buildTarget)}".\n` +
|
|
281
|
+
`Please check your 'angular.json' configuration.\n` +
|
|
282
|
+
`Error: ${e.message}`);
|
|
283
|
+
yield { success: false };
|
|
284
|
+
return;
|
|
213
285
|
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
286
|
+
// Get runner-specific build options
|
|
287
|
+
let runnerBuildOptions;
|
|
288
|
+
let virtualFiles;
|
|
289
|
+
let testEntryPointMappings;
|
|
290
|
+
try {
|
|
291
|
+
({
|
|
292
|
+
buildOptions: runnerBuildOptions,
|
|
293
|
+
virtualFiles,
|
|
294
|
+
testEntryPointMappings,
|
|
295
|
+
} = await runner.getBuildOptions(normalizedOptions, buildTargetOptions));
|
|
217
296
|
}
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
297
|
+
catch (e) {
|
|
298
|
+
(0, error_1.assertIsError)(e);
|
|
299
|
+
context.logger.error(`An exception occurred while getting runner-specific build options:\n${e.stack ?? e.message}`);
|
|
300
|
+
yield { success: false };
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
try {
|
|
304
|
+
const env_2 = { stack: [], error: void 0, hasError: false };
|
|
305
|
+
try {
|
|
306
|
+
const executor = __addDisposableResource(env_2, await runner.createExecutor(context, normalizedOptions, testEntryPointMappings), true);
|
|
307
|
+
const finalExtensions = prepareBuildExtensions(virtualFiles, normalizedOptions.projectSourceRoot, extensions);
|
|
308
|
+
// Prepare and run the application build
|
|
309
|
+
const applicationBuildOptions = {
|
|
310
|
+
...buildTargetOptions,
|
|
311
|
+
...runnerBuildOptions,
|
|
312
|
+
watch: normalizedOptions.watch,
|
|
313
|
+
progress: normalizedOptions.buildProgress ?? buildTargetOptions.progress,
|
|
314
|
+
...(normalizedOptions.tsConfig ? { tsConfig: normalizedOptions.tsConfig } : {}),
|
|
315
|
+
};
|
|
316
|
+
const dumpDirectory = normalizedOptions.dumpVirtualFiles
|
|
317
|
+
? node_path_1.default.join(normalizedOptions.cacheOptions.path, 'unit-test', 'output-files')
|
|
318
|
+
: undefined;
|
|
319
|
+
yield* runBuildAndTest(executor, applicationBuildOptions, context, dumpDirectory, finalExtensions);
|
|
320
|
+
}
|
|
321
|
+
catch (e_2) {
|
|
322
|
+
env_2.error = e_2;
|
|
323
|
+
env_2.hasError = true;
|
|
324
|
+
}
|
|
325
|
+
finally {
|
|
326
|
+
const result_2 = __disposeResources(env_2);
|
|
327
|
+
if (result_2)
|
|
328
|
+
await result_2;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
catch (e) {
|
|
332
|
+
(0, error_1.assertIsError)(e);
|
|
333
|
+
context.logger.error(`An exception occurred while creating the test executor:\n${e.stack ?? e.message}`);
|
|
334
|
+
yield { success: false };
|
|
222
335
|
}
|
|
223
336
|
}
|
|
337
|
+
//# sourceMappingURL=builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,3 +13,4 @@ const builder_1 = require("./builder");
|
|
|
13
13
|
Object.defineProperty(exports, "execute", { enumerable: true, get: function () { return builder_1.execute; } });
|
|
14
14
|
const builder = (0, architect_1.createBuilder)(builder_1.execute);
|
|
15
15
|
exports.default = builder;
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,yDAAwE;AACxE,uCAAiE;AAE3B,wFAFA,iBAAO,OAEA;AAE7C,MAAM,OAAO,GAAoC,IAAA,yBAAa,EAAC,iBAAO,CAAC,CAAC;AAExE,kBAAe,OAAO,CAAC"}
|
|
@@ -15,19 +15,38 @@ export declare function normalizeOptions(context: BuilderContext, projectName: s
|
|
|
15
15
|
cacheOptions: import("../../utils/normalize-cache").NormalizedCachedOptions;
|
|
16
16
|
buildTarget: import("@angular-devkit/architect").Target;
|
|
17
17
|
include: string[];
|
|
18
|
-
exclude: string[];
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
exclude: string[] | undefined;
|
|
19
|
+
filter: string | undefined;
|
|
20
|
+
runnerName: string;
|
|
21
|
+
coverage: {
|
|
22
|
+
enabled: boolean | undefined;
|
|
21
23
|
exclude: string[] | undefined;
|
|
24
|
+
include: string[] | undefined;
|
|
22
25
|
reporters: [string, Record<string, unknown>][] | undefined;
|
|
23
|
-
|
|
24
|
-
|
|
26
|
+
thresholds: import("./schema").CoverageThresholds | undefined;
|
|
27
|
+
watermarks: {
|
|
28
|
+
statements?: [number, number];
|
|
29
|
+
branches?: [number, number];
|
|
30
|
+
functions?: [number, number];
|
|
31
|
+
lines?: [number, number];
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
tsConfig: string | undefined;
|
|
25
35
|
buildProgress: boolean | undefined;
|
|
26
|
-
reporters: string[] | undefined;
|
|
36
|
+
reporters: [string, Record<string, unknown>][] | undefined;
|
|
37
|
+
outputFile: string | undefined;
|
|
27
38
|
browsers: string[] | undefined;
|
|
39
|
+
browserViewport: {
|
|
40
|
+
width: number;
|
|
41
|
+
height: number;
|
|
42
|
+
} | undefined;
|
|
28
43
|
watch: boolean;
|
|
29
44
|
debug: boolean;
|
|
45
|
+
ui: boolean;
|
|
30
46
|
providersFile: string | undefined;
|
|
31
47
|
setupFiles: string[];
|
|
48
|
+
dumpVirtualFiles: boolean | undefined;
|
|
49
|
+
listTests: boolean | undefined;
|
|
50
|
+
runnerConfig: string | boolean | undefined;
|
|
32
51
|
}>;
|
|
33
52
|
export declare function injectTestingPolyfills(polyfills?: string[]): string[];
|
|
@@ -13,10 +13,25 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
13
13
|
exports.normalizeOptions = normalizeOptions;
|
|
14
14
|
exports.injectTestingPolyfills = injectTestingPolyfills;
|
|
15
15
|
const architect_1 = require("@angular-devkit/architect");
|
|
16
|
+
const node_fs_1 = require("node:fs");
|
|
16
17
|
const node_path_1 = __importDefault(require("node:path"));
|
|
17
18
|
const normalize_cache_1 = require("../../utils/normalize-cache");
|
|
18
19
|
const project_metadata_1 = require("../../utils/project-metadata");
|
|
19
20
|
const tty_1 = require("../../utils/tty");
|
|
21
|
+
async function exists(path) {
|
|
22
|
+
try {
|
|
23
|
+
await node_fs_1.promises.access(path, node_fs_1.constants.F_OK);
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function normalizeReporterOption(reporters) {
|
|
31
|
+
return reporters?.map((entry) => typeof entry === 'string'
|
|
32
|
+
? [entry, {}]
|
|
33
|
+
: entry);
|
|
34
|
+
}
|
|
20
35
|
async function normalizeOptions(context, projectName, options) {
|
|
21
36
|
// Setup base paths based on workspace root and project information
|
|
22
37
|
const workspaceRoot = context.workspaceRoot;
|
|
@@ -28,7 +43,30 @@ async function normalizeOptions(context, projectName, options) {
|
|
|
28
43
|
// Target specifier defaults to the current project's build target using a development configuration
|
|
29
44
|
const buildTargetSpecifier = options.buildTarget ?? `::development`;
|
|
30
45
|
const buildTarget = (0, architect_1.targetFromTargetString)(buildTargetSpecifier, projectName, 'build');
|
|
31
|
-
const {
|
|
46
|
+
const { runner, browsers, progress, filter, browserViewport, ui, runnerConfig } = options;
|
|
47
|
+
if (ui && runner !== 'vitest') {
|
|
48
|
+
throw new Error('The "ui" option is only available for the "vitest" runner.');
|
|
49
|
+
}
|
|
50
|
+
const [width, height] = browserViewport?.split('x').map(Number) ?? [];
|
|
51
|
+
let tsConfig = options.tsConfig;
|
|
52
|
+
if (tsConfig) {
|
|
53
|
+
const fullTsConfigPath = node_path_1.default.join(workspaceRoot, tsConfig);
|
|
54
|
+
if (!(await exists(fullTsConfigPath))) {
|
|
55
|
+
throw new Error(`The specified tsConfig file '${tsConfig}' does not exist.`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
const tsconfigSpecPath = node_path_1.default.join(projectRoot, 'tsconfig.spec.json');
|
|
60
|
+
if (await exists(tsconfigSpecPath)) {
|
|
61
|
+
// The application builder expects a path relative to the workspace root.
|
|
62
|
+
tsConfig = node_path_1.default.relative(workspaceRoot, tsconfigSpecPath);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
let watch = options.watch ?? (0, tty_1.isTTY)();
|
|
66
|
+
if (options.ui && options.watch === false) {
|
|
67
|
+
context.logger.warn(`The '--ui' option requires watch mode. The '--no-watch' flag will be ignored.`);
|
|
68
|
+
watch = true;
|
|
69
|
+
}
|
|
32
70
|
return {
|
|
33
71
|
// Project/workspace information
|
|
34
72
|
workspaceRoot,
|
|
@@ -38,28 +76,38 @@ async function normalizeOptions(context, projectName, options) {
|
|
|
38
76
|
// Target/configuration specified options
|
|
39
77
|
buildTarget,
|
|
40
78
|
include: options.include ?? ['**/*.spec.ts'],
|
|
41
|
-
exclude: options.exclude
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
79
|
+
exclude: options.exclude,
|
|
80
|
+
filter,
|
|
81
|
+
runnerName: runner ?? 'vitest',
|
|
82
|
+
coverage: {
|
|
83
|
+
enabled: options.coverage,
|
|
84
|
+
exclude: options.coverageExclude,
|
|
85
|
+
include: options.coverageInclude,
|
|
86
|
+
reporters: normalizeReporterOption(options.coverageReporters),
|
|
87
|
+
thresholds: options.coverageThresholds,
|
|
88
|
+
// The schema generation tool doesn't support tuple types for items, but the schema validation
|
|
89
|
+
// does ensure that the array has exactly two numbers.
|
|
90
|
+
watermarks: options.coverageWatermarks,
|
|
91
|
+
},
|
|
51
92
|
tsConfig,
|
|
52
93
|
buildProgress: progress,
|
|
53
|
-
reporters,
|
|
94
|
+
reporters: normalizeReporterOption(options.reporters),
|
|
95
|
+
outputFile: options.outputFile,
|
|
54
96
|
browsers,
|
|
55
|
-
|
|
97
|
+
browserViewport: width && height ? { width, height } : undefined,
|
|
98
|
+
watch,
|
|
56
99
|
debug: options.debug ?? false,
|
|
100
|
+
ui: options.ui ?? false,
|
|
57
101
|
providersFile: options.providersFile && node_path_1.default.join(workspaceRoot, options.providersFile),
|
|
58
102
|
setupFiles: options.setupFiles
|
|
59
103
|
? options.setupFiles.map((setupFile) => node_path_1.default.join(workspaceRoot, setupFile))
|
|
60
104
|
: [],
|
|
105
|
+
dumpVirtualFiles: options.dumpVirtualFiles,
|
|
106
|
+
listTests: options.listTests,
|
|
107
|
+
runnerConfig: typeof runnerConfig === 'string' ? node_path_1.default.join(workspaceRoot, runnerConfig) : runnerConfig,
|
|
61
108
|
};
|
|
62
109
|
}
|
|
63
110
|
function injectTestingPolyfills(polyfills = []) {
|
|
64
111
|
return polyfills.includes('zone.js') ? [...polyfills, 'zone.js/testing'] : polyfills;
|
|
65
112
|
}
|
|
113
|
+
//# sourceMappingURL=options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["options.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,9 +9,25 @@ import type { BuilderContext, BuilderOutput } from '@angular-devkit/architect';
|
|
|
9
9
|
import type { ApplicationBuilderInternalOptions } from '../../application/options';
|
|
10
10
|
import type { FullResult, IncrementalResult } from '../../application/results';
|
|
11
11
|
import type { NormalizedUnitTestBuilderOptions } from '../options';
|
|
12
|
+
/**
|
|
13
|
+
* Represents the options for a test runner.
|
|
14
|
+
*/
|
|
12
15
|
export interface RunnerOptions {
|
|
16
|
+
/**
|
|
17
|
+
* Partial options for the application builder.
|
|
18
|
+
* These will be merged with the options from the build target.
|
|
19
|
+
*/
|
|
13
20
|
buildOptions: Partial<ApplicationBuilderInternalOptions>;
|
|
21
|
+
/**
|
|
22
|
+
* A record of virtual files to be added to the build.
|
|
23
|
+
* The key is the file path and the value is the file content.
|
|
24
|
+
*/
|
|
14
25
|
virtualFiles?: Record<string, string>;
|
|
26
|
+
/**
|
|
27
|
+
* A map of test entry points to their corresponding test files.
|
|
28
|
+
* This is used to avoid re-discovering the test files in the executor.
|
|
29
|
+
*/
|
|
30
|
+
testEntryPointMappings?: Map<string, string>;
|
|
15
31
|
}
|
|
16
32
|
/**
|
|
17
33
|
* Represents a stateful test execution session.
|
|
@@ -34,6 +50,7 @@ export interface TestExecutor {
|
|
|
34
50
|
export interface TestRunner {
|
|
35
51
|
readonly name: string;
|
|
36
52
|
readonly isStandalone?: boolean;
|
|
53
|
+
validateDependencies?(options: NormalizedUnitTestBuilderOptions): void | Promise<void>;
|
|
37
54
|
getBuildOptions(options: NormalizedUnitTestBuilderOptions, baseBuildOptions: Partial<ApplicationBuilderInternalOptions>): RunnerOptions | Promise<RunnerOptions>;
|
|
38
55
|
/**
|
|
39
56
|
* Creates a stateful executor for a test session.
|
|
@@ -41,7 +58,8 @@ export interface TestRunner {
|
|
|
41
58
|
*
|
|
42
59
|
* @param context The Architect builder context.
|
|
43
60
|
* @param options The normalized unit test options.
|
|
61
|
+
* @param testEntryPointMappings A map of test entry points to their corresponding test files.
|
|
44
62
|
* @returns A TestExecutor instance that will handle the test runs.
|
|
45
63
|
*/
|
|
46
|
-
createExecutor(context: BuilderContext, options: NormalizedUnitTestBuilderOptions): Promise<TestExecutor>;
|
|
64
|
+
createExecutor(context: BuilderContext, options: NormalizedUnitTestBuilderOptions, testEntryPointMappings: Map<string, string> | undefined): Promise<TestExecutor>;
|
|
47
65
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["api.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG"}
|
|
@@ -0,0 +1,43 @@
|
|
|
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
|
+
* A custom error class to represent missing dependency errors.
|
|
10
|
+
* This is used to avoid printing a stack trace for this expected error.
|
|
11
|
+
*/
|
|
12
|
+
export declare class MissingDependenciesError extends Error {
|
|
13
|
+
constructor(message: string);
|
|
14
|
+
}
|
|
15
|
+
export declare class DependencyChecker {
|
|
16
|
+
private readonly resolver;
|
|
17
|
+
private readonly missingDependencies;
|
|
18
|
+
constructor(projectSourceRoot: string);
|
|
19
|
+
/**
|
|
20
|
+
* Checks if a package is installed.
|
|
21
|
+
* @param packageName The name of the package to check.
|
|
22
|
+
* @returns True if the package is found, false otherwise.
|
|
23
|
+
*/
|
|
24
|
+
private isInstalled;
|
|
25
|
+
/**
|
|
26
|
+
* Verifies that a package is installed and adds it to a list of missing
|
|
27
|
+
* dependencies if it is not.
|
|
28
|
+
* @param packageName The name of the package to check.
|
|
29
|
+
*/
|
|
30
|
+
check(packageName: string): void;
|
|
31
|
+
/**
|
|
32
|
+
* Verifies that at least one of a list of packages is installed. If none are
|
|
33
|
+
* installed, a custom error message is added to the list of errors.
|
|
34
|
+
* @param packageNames An array of package names to check.
|
|
35
|
+
* @param customErrorMessage The error message to use if none of the packages are found.
|
|
36
|
+
*/
|
|
37
|
+
checkAny(packageNames: string[], customErrorMessage: string): void;
|
|
38
|
+
/**
|
|
39
|
+
* Throws a `MissingDependenciesError` if any dependencies were found to be missing.
|
|
40
|
+
* The error message is a formatted list of all missing packages.
|
|
41
|
+
*/
|
|
42
|
+
report(): void;
|
|
43
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright Google LLC All Rights Reserved.
|
|
5
|
+
*
|
|
6
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
7
|
+
* found in the LICENSE file at https://angular.dev/license
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.DependencyChecker = exports.MissingDependenciesError = void 0;
|
|
11
|
+
const node_module_1 = require("node:module");
|
|
12
|
+
/**
|
|
13
|
+
* A custom error class to represent missing dependency errors.
|
|
14
|
+
* This is used to avoid printing a stack trace for this expected error.
|
|
15
|
+
*/
|
|
16
|
+
class MissingDependenciesError extends Error {
|
|
17
|
+
constructor(message) {
|
|
18
|
+
super(message);
|
|
19
|
+
this.name = 'MissingDependenciesError';
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.MissingDependenciesError = MissingDependenciesError;
|
|
23
|
+
class DependencyChecker {
|
|
24
|
+
resolver;
|
|
25
|
+
missingDependencies = new Set();
|
|
26
|
+
constructor(projectSourceRoot) {
|
|
27
|
+
this.resolver = (0, node_module_1.createRequire)(projectSourceRoot + '/').resolve;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Checks if a package is installed.
|
|
31
|
+
* @param packageName The name of the package to check.
|
|
32
|
+
* @returns True if the package is found, false otherwise.
|
|
33
|
+
*/
|
|
34
|
+
isInstalled(packageName) {
|
|
35
|
+
try {
|
|
36
|
+
this.resolver(packageName);
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Verifies that a package is installed and adds it to a list of missing
|
|
45
|
+
* dependencies if it is not.
|
|
46
|
+
* @param packageName The name of the package to check.
|
|
47
|
+
*/
|
|
48
|
+
check(packageName) {
|
|
49
|
+
if (!this.isInstalled(packageName)) {
|
|
50
|
+
this.missingDependencies.add(packageName);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Verifies that at least one of a list of packages is installed. If none are
|
|
55
|
+
* installed, a custom error message is added to the list of errors.
|
|
56
|
+
* @param packageNames An array of package names to check.
|
|
57
|
+
* @param customErrorMessage The error message to use if none of the packages are found.
|
|
58
|
+
*/
|
|
59
|
+
checkAny(packageNames, customErrorMessage) {
|
|
60
|
+
if (packageNames.every((name) => !this.isInstalled(name))) {
|
|
61
|
+
// This is a custom error, so we add it directly.
|
|
62
|
+
// Using a Set avoids duplicate custom messages.
|
|
63
|
+
this.missingDependencies.add(customErrorMessage);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Throws a `MissingDependenciesError` if any dependencies were found to be missing.
|
|
68
|
+
* The error message is a formatted list of all missing packages.
|
|
69
|
+
*/
|
|
70
|
+
report() {
|
|
71
|
+
if (this.missingDependencies.size === 0) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
let message = 'The following packages are required but were not found:\n';
|
|
75
|
+
for (const name of this.missingDependencies) {
|
|
76
|
+
message += ` - ${name}\n`;
|
|
77
|
+
}
|
|
78
|
+
message += 'Please install the missing packages and rerun the test command.';
|
|
79
|
+
throw new MissingDependenciesError(message);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
exports.DependencyChecker = DependencyChecker;
|
|
83
|
+
//# sourceMappingURL=dependency-checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-checker.js","sourceRoot":"","sources":["dependency-checker.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,6CAA4C;AAE5C;;;GAGG;AACH,MAAa,wBAAyB,SAAQ,KAAK;IACjD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AALD,4DAKC;AAID,MAAa,iBAAiB;IACX,QAAQ,CAAW;IACnB,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;IAEzD,YAAY,iBAAyB;QACnC,IAAI,CAAC,QAAQ,GAAG,IAAA,2BAAa,EAAC,iBAAiB,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC;IACjE,CAAC;IAED;;;;OAIG;IACK,WAAW,CAAC,WAAmB;QACrC,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAE3B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAmB;QACvB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,YAAsB,EAAE,kBAA0B;QACzD,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC1D,iDAAiD;YACjD,gDAAgD;YAChD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACxC,OAAO;QACT,CAAC;QAED,IAAI,OAAO,GAAG,2DAA2D,CAAC;QAC1E,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC5C,OAAO,IAAI,OAAO,IAAI,IAAI,CAAC;QAC7B,CAAC;QACD,OAAO,IAAI,iEAAiE,CAAC;QAE7E,MAAM,IAAI,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;CACF;AAjED,8CAiEC"}
|