@depup/angular-devkit__build-angular 21.2.2-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +46 -0
- package/builders.json +76 -0
- package/changes.json +70 -0
- package/index.d.ts +8 -0
- package/index.js +25 -0
- package/index.js.map +1 -0
- package/package.json +229 -0
- package/plugins/karma.d.ts +7 -0
- package/plugins/karma.js +10 -0
- package/plugins/karma.js.map +1 -0
- package/src/builders/app-shell/index.d.ts +11 -0
- package/src/builders/app-shell/index.js +193 -0
- package/src/builders/app-shell/index.js.map +1 -0
- package/src/builders/app-shell/render-worker.d.ts +36 -0
- package/src/builders/app-shell/render-worker.js +115 -0
- package/src/builders/app-shell/render-worker.js.map +1 -0
- package/src/builders/app-shell/schema.d.ts +36 -0
- package/src/builders/app-shell/schema.js +5 -0
- package/src/builders/app-shell/schema.js.map +1 -0
- package/src/builders/app-shell/schema.json +37 -0
- package/src/builders/browser/index.d.ts +42 -0
- package/src/builders/browser/index.js +342 -0
- package/src/builders/browser/index.js.map +1 -0
- package/src/builders/browser/schema.d.ts +441 -0
- package/src/builders/browser/schema.js +65 -0
- package/src/builders/browser/schema.js.map +1 -0
- package/src/builders/browser/schema.json +548 -0
- package/src/builders/browser-esbuild/index.d.ts +28 -0
- package/src/builders/browser-esbuild/index.js +53 -0
- package/src/builders/browser-esbuild/index.js.map +1 -0
- package/src/builders/browser-esbuild/schema.d.ts +431 -0
- package/src/builders/browser-esbuild/schema.js +59 -0
- package/src/builders/browser-esbuild/schema.js.map +1 -0
- package/src/builders/browser-esbuild/schema.json +541 -0
- package/src/builders/dev-server/builder.d.ts +44 -0
- package/src/builders/dev-server/builder.js +160 -0
- package/src/builders/dev-server/builder.js.map +1 -0
- package/src/builders/dev-server/index.d.ts +14 -0
- package/src/builders/dev-server/index.js +16 -0
- package/src/builders/dev-server/index.js.map +1 -0
- package/src/builders/dev-server/options.d.ts +52 -0
- package/src/builders/dev-server/options.js +116 -0
- package/src/builders/dev-server/options.js.map +1 -0
- package/src/builders/dev-server/schema.d.ts +118 -0
- package/src/builders/dev-server/schema.js +5 -0
- package/src/builders/dev-server/schema.js.map +1 -0
- package/src/builders/dev-server/schema.json +135 -0
- package/src/builders/dev-server/webpack-server.d.ts +35 -0
- package/src/builders/dev-server/webpack-server.js +296 -0
- package/src/builders/dev-server/webpack-server.js.map +1 -0
- package/src/builders/extract-i18n/application-extraction.d.ts +17 -0
- package/src/builders/extract-i18n/application-extraction.js +136 -0
- package/src/builders/extract-i18n/application-extraction.js.map +1 -0
- package/src/builders/extract-i18n/builder.d.ts +17 -0
- package/src/builders/extract-i18n/builder.js +178 -0
- package/src/builders/extract-i18n/builder.js.map +1 -0
- package/src/builders/extract-i18n/empty-loader.d.ts +8 -0
- package/src/builders/extract-i18n/empty-loader.js +14 -0
- package/src/builders/extract-i18n/empty-loader.js.map +1 -0
- package/src/builders/extract-i18n/index.d.ts +12 -0
- package/src/builders/extract-i18n/index.js +15 -0
- package/src/builders/extract-i18n/index.js.map +1 -0
- package/src/builders/extract-i18n/ivy-extract-loader.d.ts +13 -0
- package/src/builders/extract-i18n/ivy-extract-loader.js +131 -0
- package/src/builders/extract-i18n/ivy-extract-loader.js.map +1 -0
- package/src/builders/extract-i18n/options.d.ts +33 -0
- package/src/builders/extract-i18n/options.js +86 -0
- package/src/builders/extract-i18n/options.js.map +1 -0
- package/src/builders/extract-i18n/schema.d.ts +53 -0
- package/src/builders/extract-i18n/schema.js +30 -0
- package/src/builders/extract-i18n/schema.js.map +1 -0
- package/src/builders/extract-i18n/schema.json +38 -0
- package/src/builders/extract-i18n/webpack-extraction.d.ts +21 -0
- package/src/builders/extract-i18n/webpack-extraction.js +99 -0
- package/src/builders/extract-i18n/webpack-extraction.js.map +1 -0
- package/src/builders/jest/index.d.ts +11 -0
- package/src/builders/jest/index.js +213 -0
- package/src/builders/jest/index.js.map +1 -0
- package/src/builders/jest/init-test-bed.mjs +24 -0
- package/src/builders/jest/jest-global.mjs +19 -0
- package/src/builders/jest/jest.config.mjs +11 -0
- package/src/builders/jest/options.d.ts +21 -0
- package/src/builders/jest/options.js +25 -0
- package/src/builders/jest/options.js.map +1 -0
- package/src/builders/jest/schema.d.ts +26 -0
- package/src/builders/jest/schema.js +5 -0
- package/src/builders/jest/schema.js.map +1 -0
- package/src/builders/jest/schema.json +44 -0
- package/src/builders/karma/browser_builder.d.ts +20 -0
- package/src/builders/karma/browser_builder.js +195 -0
- package/src/builders/karma/browser_builder.js.map +1 -0
- package/src/builders/karma/find-tests-plugin.d.ts +20 -0
- package/src/builders/karma/find-tests-plugin.js +59 -0
- package/src/builders/karma/find-tests-plugin.js.map +1 -0
- package/src/builders/karma/index.d.ts +26 -0
- package/src/builders/karma/index.js +183 -0
- package/src/builders/karma/index.js.map +1 -0
- package/src/builders/karma/schema.d.ts +218 -0
- package/src/builders/karma/schema.js +26 -0
- package/src/builders/karma/schema.js.map +1 -0
- package/src/builders/karma/schema.json +324 -0
- package/src/builders/ng-packagr/index.d.ts +17 -0
- package/src/builders/ng-packagr/index.js +80 -0
- package/src/builders/ng-packagr/index.js.map +1 -0
- package/src/builders/ng-packagr/schema.d.ts +21 -0
- package/src/builders/ng-packagr/schema.js +5 -0
- package/src/builders/ng-packagr/schema.js.map +1 -0
- package/src/builders/ng-packagr/schema.json +27 -0
- package/src/builders/prerender/index.d.ts +19 -0
- package/src/builders/prerender/index.js +242 -0
- package/src/builders/prerender/index.js.map +1 -0
- package/src/builders/prerender/render-worker.d.ts +30 -0
- package/src/builders/prerender/render-worker.js +141 -0
- package/src/builders/prerender/render-worker.js.map +1 -0
- package/src/builders/prerender/routes-extractor-worker.d.ts +20 -0
- package/src/builders/prerender/routes-extractor-worker.js +84 -0
- package/src/builders/prerender/routes-extractor-worker.js.map +1 -0
- package/src/builders/prerender/schema.d.ts +24 -0
- package/src/builders/prerender/schema.js +5 -0
- package/src/builders/prerender/schema.js.map +1 -0
- package/src/builders/prerender/schema.json +39 -0
- package/src/builders/protractor/index.d.ts +16 -0
- package/src/builders/protractor/index.js +177 -0
- package/src/builders/protractor/index.js.map +1 -0
- package/src/builders/protractor/schema.d.ts +47 -0
- package/src/builders/protractor/schema.js +5 -0
- package/src/builders/protractor/schema.js.map +1 -0
- package/src/builders/protractor/schema.json +58 -0
- package/src/builders/protractor-error/index.d.ts +10 -0
- package/src/builders/protractor-error/index.js +15 -0
- package/src/builders/protractor-error/index.js.map +1 -0
- package/src/builders/server/index.d.ts +32 -0
- package/src/builders/server/index.js +223 -0
- package/src/builders/server/index.js.map +1 -0
- package/src/builders/server/platform-server-exports-loader.d.ts +16 -0
- package/src/builders/server/platform-server-exports-loader.js +35 -0
- package/src/builders/server/platform-server-exports-loader.js.map +1 -0
- package/src/builders/server/schema.d.ts +229 -0
- package/src/builders/server/schema.js +37 -0
- package/src/builders/server/schema.js.map +1 -0
- package/src/builders/server/schema.json +301 -0
- package/src/builders/ssr-dev-server/index.d.ts +23 -0
- package/src/builders/ssr-dev-server/index.js +316 -0
- package/src/builders/ssr-dev-server/index.js.map +1 -0
- package/src/builders/ssr-dev-server/schema.d.ts +64 -0
- package/src/builders/ssr-dev-server/schema.js +5 -0
- package/src/builders/ssr-dev-server/schema.js.map +1 -0
- package/src/builders/ssr-dev-server/schema.json +75 -0
- package/src/builders/ssr-dev-server/utils.d.ts +15 -0
- package/src/builders/ssr-dev-server/utils.js +74 -0
- package/src/builders/ssr-dev-server/utils.js.map +1 -0
- package/src/builders/web-test-runner/builder-status-warnings.d.ts +11 -0
- package/src/builders/web-test-runner/builder-status-warnings.js +46 -0
- package/src/builders/web-test-runner/builder-status-warnings.js.map +1 -0
- package/src/builders/web-test-runner/index.d.ts +10 -0
- package/src/builders/web-test-runner/index.js +162 -0
- package/src/builders/web-test-runner/index.js.map +1 -0
- package/src/builders/web-test-runner/jasmine_runner.js +91 -0
- package/src/builders/web-test-runner/options.d.ts +24 -0
- package/src/builders/web-test-runner/options.js +26 -0
- package/src/builders/web-test-runner/options.js.map +1 -0
- package/src/builders/web-test-runner/schema.d.ts +192 -0
- package/src/builders/web-test-runner/schema.js +16 -0
- package/src/builders/web-test-runner/schema.js.map +1 -0
- package/src/builders/web-test-runner/schema.json +297 -0
- package/src/builders/web-test-runner/test_page.html +40 -0
- package/src/builders/web-test-runner/write-test-files.d.ts +9 -0
- package/src/builders/web-test-runner/write-test-files.js +42 -0
- package/src/builders/web-test-runner/write-test-files.js.map +1 -0
- package/src/index.d.ts +30 -0
- package/src/index.js +55 -0
- package/src/index.js.map +1 -0
- package/src/tools/babel/babel-loader.d.ts +34 -0
- package/src/tools/babel/plugins/add-code-coverage.d.ts +14 -0
- package/src/tools/babel/plugins/add-code-coverage.js +45 -0
- package/src/tools/babel/plugins/add-code-coverage.js.map +1 -0
- package/src/tools/babel/plugins/types.d.ts +20 -0
- package/src/tools/babel/presets/application.d.ts +50 -0
- package/src/tools/babel/presets/application.js +189 -0
- package/src/tools/babel/presets/application.js.map +1 -0
- package/src/tools/babel/webpack-loader.d.ts +18 -0
- package/src/tools/babel/webpack-loader.js +201 -0
- package/src/tools/babel/webpack-loader.js.map +1 -0
- package/src/tools/webpack/configs/common.d.ts +10 -0
- package/src/tools/webpack/configs/common.js +433 -0
- package/src/tools/webpack/configs/common.js.map +1 -0
- package/src/tools/webpack/configs/dev-server.d.ts +16 -0
- package/src/tools/webpack/configs/dev-server.js +313 -0
- package/src/tools/webpack/configs/dev-server.js.map +1 -0
- package/src/tools/webpack/configs/index.d.ts +10 -0
- package/src/tools/webpack/configs/index.js +27 -0
- package/src/tools/webpack/configs/index.js.map +1 -0
- package/src/tools/webpack/configs/styles.d.ts +10 -0
- package/src/tools/webpack/configs/styles.js +384 -0
- package/src/tools/webpack/configs/styles.js.map +1 -0
- package/src/tools/webpack/plugins/any-component-style-budget-checker.d.ts +18 -0
- package/src/tools/webpack/plugins/any-component-style-budget-checker.js +100 -0
- package/src/tools/webpack/plugins/any-component-style-budget-checker.js.map +1 -0
- package/src/tools/webpack/plugins/builder-watch-plugin.d.ts +23 -0
- package/src/tools/webpack/plugins/builder-watch-plugin.js +102 -0
- package/src/tools/webpack/plugins/builder-watch-plugin.js.map +1 -0
- package/src/tools/webpack/plugins/common-js-usage-warn-plugin.d.ts +21 -0
- package/src/tools/webpack/plugins/common-js-usage-warn-plugin.js +126 -0
- package/src/tools/webpack/plugins/common-js-usage-warn-plugin.js.map +1 -0
- package/src/tools/webpack/plugins/css-optimizer-plugin.d.ts +35 -0
- package/src/tools/webpack/plugins/css-optimizer-plugin.js +124 -0
- package/src/tools/webpack/plugins/css-optimizer-plugin.js.map +1 -0
- package/src/tools/webpack/plugins/dedupe-module-resolve-plugin.d.ts +29 -0
- package/src/tools/webpack/plugins/dedupe-module-resolve-plugin.js +76 -0
- package/src/tools/webpack/plugins/dedupe-module-resolve-plugin.js.map +1 -0
- package/src/tools/webpack/plugins/devtools-ignore-plugin.d.ts +16 -0
- package/src/tools/webpack/plugins/devtools-ignore-plugin.js +57 -0
- package/src/tools/webpack/plugins/devtools-ignore-plugin.js.map +1 -0
- package/src/tools/webpack/plugins/esbuild-executor.d.ts +46 -0
- package/src/tools/webpack/plugins/esbuild-executor.js +134 -0
- package/src/tools/webpack/plugins/esbuild-executor.js.map +1 -0
- package/src/tools/webpack/plugins/hmr/hmr-accept.d.ts +8 -0
- package/src/tools/webpack/plugins/hmr/hmr-accept.js +185 -0
- package/src/tools/webpack/plugins/hmr/hmr-accept.js.map +1 -0
- package/src/tools/webpack/plugins/hmr/hmr-loader.d.ts +9 -0
- package/src/tools/webpack/plugins/hmr/hmr-loader.js +25 -0
- package/src/tools/webpack/plugins/hmr/hmr-loader.js.map +1 -0
- package/src/tools/webpack/plugins/index-html-webpack-plugin.d.ts +20 -0
- package/src/tools/webpack/plugins/index-html-webpack-plugin.js +88 -0
- package/src/tools/webpack/plugins/index-html-webpack-plugin.js.map +1 -0
- package/src/tools/webpack/plugins/index.d.ts +16 -0
- package/src/tools/webpack/plugins/index.js +33 -0
- package/src/tools/webpack/plugins/index.js.map +1 -0
- package/src/tools/webpack/plugins/javascript-optimizer-plugin.d.ts +59 -0
- package/src/tools/webpack/plugins/javascript-optimizer-plugin.js +168 -0
- package/src/tools/webpack/plugins/javascript-optimizer-plugin.js.map +1 -0
- package/src/tools/webpack/plugins/javascript-optimizer-worker.d.ts +91 -0
- package/src/tools/webpack/plugins/javascript-optimizer-worker.js +135 -0
- package/src/tools/webpack/plugins/javascript-optimizer-worker.js.map +1 -0
- package/src/tools/webpack/plugins/json-stats-plugin.d.ts +13 -0
- package/src/tools/webpack/plugins/json-stats-plugin.js +71 -0
- package/src/tools/webpack/plugins/json-stats-plugin.js.map +1 -0
- package/src/tools/webpack/plugins/karma/karma-context.html +44 -0
- package/src/tools/webpack/plugins/karma/karma-debug.html +46 -0
- package/src/tools/webpack/plugins/karma/karma.d.ts +8 -0
- package/src/tools/webpack/plugins/karma/karma.js +196 -0
- package/src/tools/webpack/plugins/karma/karma.js.map +1 -0
- package/src/tools/webpack/plugins/named-chunks-plugin.d.ts +17 -0
- package/src/tools/webpack/plugins/named-chunks-plugin.js +59 -0
- package/src/tools/webpack/plugins/named-chunks-plugin.js.map +1 -0
- package/src/tools/webpack/plugins/occurrences-plugin.d.ts +18 -0
- package/src/tools/webpack/plugins/occurrences-plugin.js +81 -0
- package/src/tools/webpack/plugins/occurrences-plugin.js.map +1 -0
- package/src/tools/webpack/plugins/postcss-cli-resources.d.ts +21 -0
- package/src/tools/webpack/plugins/postcss-cli-resources.js +189 -0
- package/src/tools/webpack/plugins/postcss-cli-resources.js.map +1 -0
- package/src/tools/webpack/plugins/progress-plugin.d.ts +11 -0
- package/src/tools/webpack/plugins/progress-plugin.js +39 -0
- package/src/tools/webpack/plugins/progress-plugin.js.map +1 -0
- package/src/tools/webpack/plugins/remove-hash-plugin.d.ts +18 -0
- package/src/tools/webpack/plugins/remove-hash-plugin.js +32 -0
- package/src/tools/webpack/plugins/remove-hash-plugin.js.map +1 -0
- package/src/tools/webpack/plugins/scripts-webpack-plugin.d.ts +24 -0
- package/src/tools/webpack/plugins/scripts-webpack-plugin.js +196 -0
- package/src/tools/webpack/plugins/scripts-webpack-plugin.js.map +1 -0
- package/src/tools/webpack/plugins/service-worker-plugin.d.ts +19 -0
- package/src/tools/webpack/plugins/service-worker-plugin.js +47 -0
- package/src/tools/webpack/plugins/service-worker-plugin.js.map +1 -0
- package/src/tools/webpack/plugins/styles-webpack-plugin.d.ts +19 -0
- package/src/tools/webpack/plugins/styles-webpack-plugin.js +74 -0
- package/src/tools/webpack/plugins/styles-webpack-plugin.js.map +1 -0
- package/src/tools/webpack/plugins/suppress-entry-chunks-webpack-plugin.d.ts +14 -0
- package/src/tools/webpack/plugins/suppress-entry-chunks-webpack-plugin.js +52 -0
- package/src/tools/webpack/plugins/suppress-entry-chunks-webpack-plugin.js.map +1 -0
- package/src/tools/webpack/plugins/transfer-size-plugin.d.ts +12 -0
- package/src/tools/webpack/plugins/transfer-size-plugin.js +50 -0
- package/src/tools/webpack/plugins/transfer-size-plugin.js.map +1 -0
- package/src/tools/webpack/plugins/typescript.d.ts +10 -0
- package/src/tools/webpack/plugins/typescript.js +53 -0
- package/src/tools/webpack/plugins/typescript.js.map +1 -0
- package/src/tools/webpack/plugins/watch-files-logs-plugin.d.ts +11 -0
- package/src/tools/webpack/plugins/watch-files-logs-plugin.js +28 -0
- package/src/tools/webpack/plugins/watch-files-logs-plugin.js.map +1 -0
- package/src/tools/webpack/utils/async-chunks.d.ts +16 -0
- package/src/tools/webpack/utils/async-chunks.js +45 -0
- package/src/tools/webpack/utils/async-chunks.js.map +1 -0
- package/src/tools/webpack/utils/helpers.d.ts +43 -0
- package/src/tools/webpack/utils/helpers.js +301 -0
- package/src/tools/webpack/utils/helpers.js.map +1 -0
- package/src/tools/webpack/utils/stats.d.ts +32 -0
- package/src/tools/webpack/utils/stats.js +301 -0
- package/src/tools/webpack/utils/stats.js.map +1 -0
- package/src/transforms.d.ts +8 -0
- package/src/transforms.js +10 -0
- package/src/transforms.js.map +1 -0
- package/src/utils/action-executor.d.ts +35 -0
- package/src/utils/action-executor.js +61 -0
- package/src/utils/action-executor.js.map +1 -0
- package/src/utils/build-options.d.ts +75 -0
- package/src/utils/build-options.js +10 -0
- package/src/utils/build-options.js.map +1 -0
- package/src/utils/bundle-inline-options.d.ts +15 -0
- package/src/utils/bundle-inline-options.js +10 -0
- package/src/utils/bundle-inline-options.js.map +1 -0
- package/src/utils/color.d.ts +10 -0
- package/src/utils/color.js +74 -0
- package/src/utils/color.js.map +1 -0
- package/src/utils/copy-assets.d.ts +18 -0
- package/src/utils/copy-assets.js +51 -0
- package/src/utils/copy-assets.js.map +1 -0
- package/src/utils/default-progress.d.ts +8 -0
- package/src/utils/default-progress.js +17 -0
- package/src/utils/default-progress.js.map +1 -0
- package/src/utils/environment-options.d.ts +16 -0
- package/src/utils/environment-options.js +83 -0
- package/src/utils/environment-options.js.map +1 -0
- package/src/utils/error.d.ts +10 -0
- package/src/utils/error.js +21 -0
- package/src/utils/error.js.map +1 -0
- package/src/utils/i18n-inlining.d.ts +11 -0
- package/src/utils/i18n-inlining.js +131 -0
- package/src/utils/i18n-inlining.js.map +1 -0
- package/src/utils/i18n-webpack.d.ts +16 -0
- package/src/utils/i18n-webpack.js +108 -0
- package/src/utils/i18n-webpack.js.map +1 -0
- package/src/utils/index.d.ts +16 -0
- package/src/utils/index.js +36 -0
- package/src/utils/index.js.map +1 -0
- package/src/utils/load-esm.d.ts +20 -0
- package/src/utils/load-esm.js +31 -0
- package/src/utils/load-esm.js.map +1 -0
- package/src/utils/normalize-asset-patterns.d.ts +14 -0
- package/src/utils/normalize-asset-patterns.js +107 -0
- package/src/utils/normalize-asset-patterns.js.map +1 -0
- package/src/utils/normalize-builder-schema.d.ts +23 -0
- package/src/utils/normalize-builder-schema.js +44 -0
- package/src/utils/normalize-builder-schema.js.map +1 -0
- package/src/utils/normalize-cache.d.ts +16 -0
- package/src/utils/normalize-cache.js +44 -0
- package/src/utils/normalize-cache.js.map +1 -0
- package/src/utils/normalize-file-replacements.d.ts +16 -0
- package/src/utils/normalize-file-replacements.js +87 -0
- package/src/utils/normalize-file-replacements.js.map +1 -0
- package/src/utils/normalize-optimization.d.ts +13 -0
- package/src/utils/normalize-optimization.js +40 -0
- package/src/utils/normalize-optimization.js.map +1 -0
- package/src/utils/normalize-polyfills.d.ts +8 -0
- package/src/utils/normalize-polyfills.js +24 -0
- package/src/utils/normalize-polyfills.js.map +1 -0
- package/src/utils/normalize-source-maps.d.ts +9 -0
- package/src/utils/normalize-source-maps.js +23 -0
- package/src/utils/normalize-source-maps.js.map +1 -0
- package/src/utils/output-paths.d.ts +9 -0
- package/src/utils/output-paths.js +27 -0
- package/src/utils/output-paths.js.map +1 -0
- package/src/utils/package-chunk-sort.d.ts +14 -0
- package/src/utils/package-chunk-sort.js +35 -0
- package/src/utils/package-chunk-sort.js.map +1 -0
- package/src/utils/package-version.d.ts +8 -0
- package/src/utils/package-version.js +12 -0
- package/src/utils/package-version.js.map +1 -0
- package/src/utils/process-bundle.d.ts +22 -0
- package/src/utils/process-bundle.js +315 -0
- package/src/utils/process-bundle.js.map +1 -0
- package/src/utils/read-tsconfig.d.ts +16 -0
- package/src/utils/read-tsconfig.js +61 -0
- package/src/utils/read-tsconfig.js.map +1 -0
- package/src/utils/run-module-as-observable-fork.d.ts +10 -0
- package/src/utils/run-module-as-observable-fork.js +78 -0
- package/src/utils/run-module-as-observable-fork.js.map +1 -0
- package/src/utils/run-module-worker.js +18 -0
- package/src/utils/spinner.d.ts +20 -0
- package/src/utils/spinner.js +56 -0
- package/src/utils/spinner.js.map +1 -0
- package/src/utils/test-files.d.ts +18 -0
- package/src/utils/test-files.js +32 -0
- package/src/utils/test-files.js.map +1 -0
- package/src/utils/tty.d.ts +8 -0
- package/src/utils/tty.js +23 -0
- package/src/utils/tty.js.map +1 -0
- package/src/utils/url.d.ts +8 -0
- package/src/utils/url.js +18 -0
- package/src/utils/url.js.map +1 -0
- package/src/utils/webpack-browser-config.d.ts +29 -0
- package/src/utils/webpack-browser-config.js +161 -0
- package/src/utils/webpack-browser-config.js.map +1 -0
- package/src/utils/webpack-diagnostics.d.ts +10 -0
- package/src/utils/webpack-diagnostics.js +18 -0
- package/src/utils/webpack-diagnostics.js.map +1 -0
|
@@ -0,0 +1,168 @@
|
|
|
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.JavaScriptOptimizerPlugin = void 0;
|
|
14
|
+
const private_1 = require("@angular/build/private");
|
|
15
|
+
const piscina_1 = __importDefault(require("piscina"));
|
|
16
|
+
const environment_options_1 = require("../../../utils/environment-options");
|
|
17
|
+
const webpack_diagnostics_1 = require("../../../utils/webpack-diagnostics");
|
|
18
|
+
const esbuild_executor_1 = require("./esbuild-executor");
|
|
19
|
+
/**
|
|
20
|
+
* The maximum number of Workers that will be created to execute optimize tasks.
|
|
21
|
+
*/
|
|
22
|
+
const MAX_OPTIMIZE_WORKERS = environment_options_1.maxWorkers;
|
|
23
|
+
/**
|
|
24
|
+
* The name of the plugin provided to Webpack when tapping Webpack compiler hooks.
|
|
25
|
+
*/
|
|
26
|
+
const PLUGIN_NAME = 'angular-javascript-optimizer';
|
|
27
|
+
/**
|
|
28
|
+
* A Webpack plugin that provides JavaScript optimization capabilities.
|
|
29
|
+
*
|
|
30
|
+
* The plugin uses both `esbuild` and `terser` to provide both fast and highly-optimized
|
|
31
|
+
* code output. `esbuild` is used as an initial pass to remove the majority of unused code
|
|
32
|
+
* as well as shorten identifiers. `terser` is then used as a secondary pass to apply
|
|
33
|
+
* optimizations not yet implemented by `esbuild`.
|
|
34
|
+
*/
|
|
35
|
+
class JavaScriptOptimizerPlugin {
|
|
36
|
+
options;
|
|
37
|
+
targets;
|
|
38
|
+
constructor(options) {
|
|
39
|
+
this.options = options;
|
|
40
|
+
if (options.supportedBrowsers) {
|
|
41
|
+
this.targets = (0, private_1.transformSupportedBrowsersToTargets)(options.supportedBrowsers);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
apply(compiler) {
|
|
45
|
+
const { OriginalSource, SourceMapSource } = compiler.webpack.sources;
|
|
46
|
+
compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
|
|
47
|
+
const logger = compilation.getLogger('build-angular.JavaScriptOptimizerPlugin');
|
|
48
|
+
compilation.hooks.processAssets.tapPromise({
|
|
49
|
+
name: PLUGIN_NAME,
|
|
50
|
+
stage: compiler.webpack.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_SIZE,
|
|
51
|
+
}, async (compilationAssets) => {
|
|
52
|
+
logger.time('optimize js assets');
|
|
53
|
+
const scriptsToOptimize = [];
|
|
54
|
+
const cache = compilation.options.cache && compilation.getCache('JavaScriptOptimizerPlugin');
|
|
55
|
+
// Analyze the compilation assets for scripts that require optimization
|
|
56
|
+
for (const assetName of Object.keys(compilationAssets)) {
|
|
57
|
+
if (!assetName.endsWith('.js')) {
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
const scriptAsset = compilation.getAsset(assetName);
|
|
61
|
+
// Skip assets that have already been optimized or are verbatim copies (project assets)
|
|
62
|
+
if (!scriptAsset || scriptAsset.info.minimized || scriptAsset.info.copied) {
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
const { source: scriptAssetSource, name } = scriptAsset;
|
|
66
|
+
let cacheItem;
|
|
67
|
+
if (cache) {
|
|
68
|
+
const eTag = cache.getLazyHashedEtag(scriptAssetSource);
|
|
69
|
+
cacheItem = cache.getItemCache(name, eTag);
|
|
70
|
+
const cachedOutput = await cacheItem.getPromise();
|
|
71
|
+
if (cachedOutput) {
|
|
72
|
+
logger.debug(`${name} restored from cache`);
|
|
73
|
+
compilation.updateAsset(name, cachedOutput.source, (assetInfo) => ({
|
|
74
|
+
...assetInfo,
|
|
75
|
+
minimized: true,
|
|
76
|
+
}));
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const { source, map } = scriptAssetSource.sourceAndMap();
|
|
81
|
+
scriptsToOptimize.push({
|
|
82
|
+
name: scriptAsset.name,
|
|
83
|
+
code: typeof source === 'string' ? source : source.toString(),
|
|
84
|
+
map,
|
|
85
|
+
cacheItem,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
if (scriptsToOptimize.length === 0) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
// Ensure all replacement values are strings which is the expected type for esbuild
|
|
92
|
+
let define;
|
|
93
|
+
if (this.options.define) {
|
|
94
|
+
define = {};
|
|
95
|
+
for (const [key, value] of Object.entries(this.options.define)) {
|
|
96
|
+
define[key] = String(value);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Setup the options used by all worker tasks
|
|
100
|
+
const optimizeOptions = {
|
|
101
|
+
sourcemap: this.options.sourcemap,
|
|
102
|
+
define,
|
|
103
|
+
keepIdentifierNames: this.options.keepIdentifierNames,
|
|
104
|
+
target: this.targets,
|
|
105
|
+
removeLicenses: this.options.removeLicenses,
|
|
106
|
+
advanced: this.options.advanced,
|
|
107
|
+
// Perform a single native esbuild support check.
|
|
108
|
+
// This removes the need for each worker to perform the check which would
|
|
109
|
+
// otherwise require spawning a separate process per worker.
|
|
110
|
+
alwaysUseWasm: !(await esbuild_executor_1.EsbuildExecutor.hasNativeSupport()),
|
|
111
|
+
};
|
|
112
|
+
// Sort scripts so larger scripts start first - worker pool uses a FIFO queue
|
|
113
|
+
scriptsToOptimize.sort((a, b) => a.code.length - b.code.length);
|
|
114
|
+
// Initialize the task worker pool
|
|
115
|
+
const workerPath = require.resolve('./javascript-optimizer-worker');
|
|
116
|
+
const workerPool = new piscina_1.default({
|
|
117
|
+
filename: workerPath,
|
|
118
|
+
maxThreads: MAX_OPTIMIZE_WORKERS,
|
|
119
|
+
recordTiming: false,
|
|
120
|
+
});
|
|
121
|
+
// Enqueue script optimization tasks and update compilation assets as the tasks complete
|
|
122
|
+
try {
|
|
123
|
+
const tasks = [];
|
|
124
|
+
for (const { name, code, map, cacheItem } of scriptsToOptimize) {
|
|
125
|
+
logger.time(`optimize asset: ${name}`);
|
|
126
|
+
tasks.push(workerPool
|
|
127
|
+
.run({
|
|
128
|
+
asset: {
|
|
129
|
+
name,
|
|
130
|
+
code,
|
|
131
|
+
map,
|
|
132
|
+
},
|
|
133
|
+
options: optimizeOptions,
|
|
134
|
+
})
|
|
135
|
+
.then(async ({ code, name, map, errors }) => {
|
|
136
|
+
if (errors?.length) {
|
|
137
|
+
for (const error of errors) {
|
|
138
|
+
(0, webpack_diagnostics_1.addError)(compilation, `Optimization error [${name}]: ${error}`);
|
|
139
|
+
}
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
const optimizedAsset = map
|
|
143
|
+
? new SourceMapSource(code, name, map)
|
|
144
|
+
: new OriginalSource(code, name);
|
|
145
|
+
compilation.updateAsset(name, optimizedAsset, (assetInfo) => ({
|
|
146
|
+
...assetInfo,
|
|
147
|
+
minimized: true,
|
|
148
|
+
}));
|
|
149
|
+
logger.timeEnd(`optimize asset: ${name}`);
|
|
150
|
+
return cacheItem?.storePromise({
|
|
151
|
+
source: optimizedAsset,
|
|
152
|
+
});
|
|
153
|
+
}, (error) => {
|
|
154
|
+
(0, webpack_diagnostics_1.addError)(compilation, `Optimization error [${name}]: ${error.stack || error.message}`);
|
|
155
|
+
}));
|
|
156
|
+
}
|
|
157
|
+
await Promise.all(tasks);
|
|
158
|
+
}
|
|
159
|
+
finally {
|
|
160
|
+
void workerPool.destroy();
|
|
161
|
+
}
|
|
162
|
+
logger.timeEnd('optimize js assets');
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
exports.JavaScriptOptimizerPlugin = JavaScriptOptimizerPlugin;
|
|
168
|
+
//# sourceMappingURL=javascript-optimizer-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"javascript-optimizer-plugin.js","sourceRoot":"","sources":["javascript-optimizer-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Google LLC All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
+
* found in the LICENSE file at https://angular.dev/license
|
|
7
|
+
*/
|
|
8
|
+
import { SourceMapInput } from '@ampproject/remapping';
|
|
9
|
+
/**
|
|
10
|
+
* The options to use when optimizing.
|
|
11
|
+
*/
|
|
12
|
+
export interface OptimizeRequestOptions {
|
|
13
|
+
/**
|
|
14
|
+
* Controls advanced optimizations.
|
|
15
|
+
* Currently these are only terser related:
|
|
16
|
+
* * terser compress passes are set to 2
|
|
17
|
+
* * terser pure_getters option is enabled
|
|
18
|
+
*/
|
|
19
|
+
advanced?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Specifies the string tokens that should be replaced with a defined value.
|
|
22
|
+
*/
|
|
23
|
+
define?: Record<string, string>;
|
|
24
|
+
/**
|
|
25
|
+
* Controls whether class, function, and variable names should be left intact
|
|
26
|
+
* throughout the output code.
|
|
27
|
+
*/
|
|
28
|
+
keepIdentifierNames: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Controls whether license text is removed from the output code.
|
|
31
|
+
* Within the CLI, this option is linked to the license extraction functionality.
|
|
32
|
+
*/
|
|
33
|
+
removeLicenses?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Controls whether source maps should be generated.
|
|
36
|
+
*/
|
|
37
|
+
sourcemap?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Specifies the list of supported esbuild targets.
|
|
40
|
+
* @see: https://esbuild.github.io/api/#target
|
|
41
|
+
*/
|
|
42
|
+
target?: string[];
|
|
43
|
+
/**
|
|
44
|
+
* Controls whether esbuild should only use the WASM-variant instead of trying to
|
|
45
|
+
* use the native variant. Some platforms may not support the native-variant and
|
|
46
|
+
* this option allows one support test to be conducted prior to all the workers starting.
|
|
47
|
+
*/
|
|
48
|
+
alwaysUseWasm: boolean;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* A request to optimize JavaScript using the supplied options.
|
|
52
|
+
*/
|
|
53
|
+
interface OptimizeRequest {
|
|
54
|
+
/**
|
|
55
|
+
* The options to use when optimizing.
|
|
56
|
+
*/
|
|
57
|
+
options: OptimizeRequestOptions;
|
|
58
|
+
/**
|
|
59
|
+
* The JavaScript asset to optimize.
|
|
60
|
+
*/
|
|
61
|
+
asset: {
|
|
62
|
+
/**
|
|
63
|
+
* The name of the JavaScript asset (typically the filename).
|
|
64
|
+
*/
|
|
65
|
+
name: string;
|
|
66
|
+
/**
|
|
67
|
+
* The source content of the JavaScript asset.
|
|
68
|
+
*/
|
|
69
|
+
code: string;
|
|
70
|
+
/**
|
|
71
|
+
* The source map of the JavaScript asset, if available.
|
|
72
|
+
* This map is merged with all intermediate source maps during optimization.
|
|
73
|
+
*/
|
|
74
|
+
map: SourceMapInput;
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Handles optimization requests sent from the main thread via the `JavaScriptOptimizerPlugin`.
|
|
79
|
+
*/
|
|
80
|
+
export default function ({ asset, options }: OptimizeRequest): Promise<{
|
|
81
|
+
name: string;
|
|
82
|
+
errors: string[];
|
|
83
|
+
code?: undefined;
|
|
84
|
+
map?: undefined;
|
|
85
|
+
} | {
|
|
86
|
+
name: string;
|
|
87
|
+
code: string;
|
|
88
|
+
map: import("@ampproject/remapping").SourceMap | undefined;
|
|
89
|
+
errors?: undefined;
|
|
90
|
+
}>;
|
|
91
|
+
export {};
|
|
@@ -0,0 +1,135 @@
|
|
|
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.default = default_1;
|
|
14
|
+
const remapping_1 = __importDefault(require("@ampproject/remapping"));
|
|
15
|
+
const terser_1 = require("terser");
|
|
16
|
+
const esbuild_executor_1 = require("./esbuild-executor");
|
|
17
|
+
/**
|
|
18
|
+
* The cached esbuild executor.
|
|
19
|
+
* This will automatically use the native or WASM version based on platform and availability
|
|
20
|
+
* with the native version given priority due to its superior performance.
|
|
21
|
+
*/
|
|
22
|
+
let esbuild;
|
|
23
|
+
/**
|
|
24
|
+
* Handles optimization requests sent from the main thread via the `JavaScriptOptimizerPlugin`.
|
|
25
|
+
*/
|
|
26
|
+
async function default_1({ asset, options }) {
|
|
27
|
+
// esbuild is used as a first pass
|
|
28
|
+
const esbuildResult = await optimizeWithEsbuild(asset.code, asset.name, options);
|
|
29
|
+
if (isEsBuildFailure(esbuildResult)) {
|
|
30
|
+
return {
|
|
31
|
+
name: asset.name,
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
33
|
+
errors: await esbuild.formatMessages(esbuildResult.errors, { kind: 'error' }),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
// terser is used as a second pass
|
|
37
|
+
const terserResult = await optimizeWithTerser(asset.name, esbuildResult.code, options.sourcemap, options.advanced);
|
|
38
|
+
// Merge intermediate sourcemaps with input sourcemap if enabled
|
|
39
|
+
let fullSourcemap;
|
|
40
|
+
if (options.sourcemap) {
|
|
41
|
+
const partialSourcemaps = [];
|
|
42
|
+
if (esbuildResult.map) {
|
|
43
|
+
partialSourcemaps.unshift(JSON.parse(esbuildResult.map));
|
|
44
|
+
}
|
|
45
|
+
if (terserResult.map) {
|
|
46
|
+
partialSourcemaps.unshift(terserResult.map);
|
|
47
|
+
}
|
|
48
|
+
if (asset.map) {
|
|
49
|
+
partialSourcemaps.push(asset.map);
|
|
50
|
+
}
|
|
51
|
+
fullSourcemap = (0, remapping_1.default)(partialSourcemaps, () => null);
|
|
52
|
+
}
|
|
53
|
+
return { name: asset.name, code: terserResult.code, map: fullSourcemap };
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Optimizes a JavaScript asset using esbuild.
|
|
57
|
+
*
|
|
58
|
+
* @param content The JavaScript asset source content to optimize.
|
|
59
|
+
* @param name The name of the JavaScript asset. Used to generate source maps.
|
|
60
|
+
* @param options The optimization request options to apply to the content.
|
|
61
|
+
* @returns A promise that resolves with the optimized code, source map, and any warnings.
|
|
62
|
+
*/
|
|
63
|
+
async function optimizeWithEsbuild(content, name, options) {
|
|
64
|
+
if (!esbuild) {
|
|
65
|
+
esbuild = new esbuild_executor_1.EsbuildExecutor(options.alwaysUseWasm);
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
return await esbuild.transform(content, {
|
|
69
|
+
minifyIdentifiers: !options.keepIdentifierNames,
|
|
70
|
+
minifySyntax: true,
|
|
71
|
+
// NOTE: Disabling whitespace ensures unused pure annotations are kept
|
|
72
|
+
minifyWhitespace: false,
|
|
73
|
+
pure: ['forwardRef'],
|
|
74
|
+
legalComments: options.removeLicenses ? 'none' : 'inline',
|
|
75
|
+
sourcefile: name,
|
|
76
|
+
sourcemap: options.sourcemap && 'external',
|
|
77
|
+
define: options.define,
|
|
78
|
+
target: options.target,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
if (isEsBuildFailure(error)) {
|
|
83
|
+
return error;
|
|
84
|
+
}
|
|
85
|
+
throw error;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Optimizes a JavaScript asset using terser.
|
|
90
|
+
*
|
|
91
|
+
* @param name The name of the JavaScript asset. Used to generate source maps.
|
|
92
|
+
* @param code The JavaScript asset source content to optimize.
|
|
93
|
+
* @param sourcemaps If true, generate an output source map for the optimized code.
|
|
94
|
+
* @param advanced Controls advanced optimizations.
|
|
95
|
+
* @returns A promise that resolves with the optimized code and source map.
|
|
96
|
+
*/
|
|
97
|
+
async function optimizeWithTerser(name, code, sourcemaps, advanced) {
|
|
98
|
+
const result = await (0, terser_1.minify)({ [name]: code }, {
|
|
99
|
+
compress: {
|
|
100
|
+
passes: advanced ? 2 : 1,
|
|
101
|
+
pure_getters: advanced,
|
|
102
|
+
},
|
|
103
|
+
// Set to ES2015 to prevent higher level features from being introduced when browserslist
|
|
104
|
+
// contains older browsers. The build system requires browsers to support ES2015 at a minimum.
|
|
105
|
+
ecma: 2015,
|
|
106
|
+
// esbuild in the first pass is used to minify identifiers instead of mangle here
|
|
107
|
+
mangle: false,
|
|
108
|
+
// esbuild in the first pass is used to minify function names
|
|
109
|
+
keep_fnames: true,
|
|
110
|
+
format: {
|
|
111
|
+
// ASCII output is enabled here as well to prevent terser from converting back to UTF-8
|
|
112
|
+
ascii_only: true,
|
|
113
|
+
wrap_func_args: false,
|
|
114
|
+
},
|
|
115
|
+
sourceMap: sourcemaps &&
|
|
116
|
+
{
|
|
117
|
+
asObject: true,
|
|
118
|
+
// typings don't include asObject option
|
|
119
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
120
|
+
},
|
|
121
|
+
});
|
|
122
|
+
if (typeof result.code !== 'string') {
|
|
123
|
+
throw new Error('Terser failed for unknown reason.');
|
|
124
|
+
}
|
|
125
|
+
return { code: result.code, map: result.map };
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Determines if an unknown value is an esbuild BuildFailure error object thrown by esbuild.
|
|
129
|
+
* @param value A potential esbuild BuildFailure error object.
|
|
130
|
+
* @returns `true` if the object is determined to be a BuildFailure object; otherwise, `false`.
|
|
131
|
+
*/
|
|
132
|
+
function isEsBuildFailure(value) {
|
|
133
|
+
return !!value && typeof value === 'object' && 'errors' in value && 'warnings' in value;
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=javascript-optimizer-worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"javascript-optimizer-worker.js","sourceRoot":"","sources":["javascript-optimizer-worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Google LLC All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
+
* found in the LICENSE file at https://angular.dev/license
|
|
7
|
+
*/
|
|
8
|
+
import { Compiler } from 'webpack';
|
|
9
|
+
export declare class JsonStatsPlugin {
|
|
10
|
+
private readonly statsOutputPath;
|
|
11
|
+
constructor(statsOutputPath: string);
|
|
12
|
+
apply(compiler: Compiler): void;
|
|
13
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright Google LLC All Rights Reserved.
|
|
5
|
+
*
|
|
6
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
7
|
+
* found in the LICENSE file at https://angular.dev/license
|
|
8
|
+
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
+
var ownKeys = function(o) {
|
|
27
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
+
var ar = [];
|
|
29
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
+
return ar;
|
|
31
|
+
};
|
|
32
|
+
return ownKeys(o);
|
|
33
|
+
};
|
|
34
|
+
return function (mod) {
|
|
35
|
+
if (mod && mod.__esModule) return mod;
|
|
36
|
+
var result = {};
|
|
37
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
+
__setModuleDefault(result, mod);
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
})();
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.JsonStatsPlugin = void 0;
|
|
44
|
+
const node_fs_1 = require("node:fs");
|
|
45
|
+
const promises_1 = require("node:fs/promises");
|
|
46
|
+
const node_path_1 = require("node:path");
|
|
47
|
+
const promises_2 = require("node:stream/promises");
|
|
48
|
+
const error_1 = require("../../../utils/error");
|
|
49
|
+
const webpack_diagnostics_1 = require("../../../utils/webpack-diagnostics");
|
|
50
|
+
class JsonStatsPlugin {
|
|
51
|
+
statsOutputPath;
|
|
52
|
+
constructor(statsOutputPath) {
|
|
53
|
+
this.statsOutputPath = statsOutputPath;
|
|
54
|
+
}
|
|
55
|
+
apply(compiler) {
|
|
56
|
+
compiler.hooks.done.tapPromise('angular-json-stats', async (stats) => {
|
|
57
|
+
const { stringifyChunked } = await Promise.resolve().then(() => __importStar(require('@discoveryjs/json-ext')));
|
|
58
|
+
const data = stats.toJson('verbose');
|
|
59
|
+
try {
|
|
60
|
+
await (0, promises_1.mkdir)((0, node_path_1.dirname)(this.statsOutputPath), { recursive: true });
|
|
61
|
+
await (0, promises_2.pipeline)(stringifyChunked(data), (0, node_fs_1.createWriteStream)(this.statsOutputPath));
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
(0, error_1.assertIsError)(error);
|
|
65
|
+
(0, webpack_diagnostics_1.addError)(stats.compilation, `Unable to write stats file: ${error.message || 'unknown error'}`);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.JsonStatsPlugin = JsonStatsPlugin;
|
|
71
|
+
//# sourceMappingURL=json-stats-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-stats-plugin.js","sourceRoot":"","sources":["json-stats-plugin.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,qCAA4C;AAC5C,+CAAyC;AACzC,yCAAoC;AACpC,mDAAgD;AAEhD,gDAAqD;AACrD,4EAA8D;AAE9D,MAAa,eAAe;IACG;IAA7B,YAA6B,eAAuB;QAAvB,oBAAe,GAAf,eAAe,CAAQ;IAAG,CAAC;IAExD,KAAK,CAAC,QAAkB;QACtB,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACnE,MAAM,EAAE,gBAAgB,EAAE,GAAG,wDAAa,uBAAuB,GAAC,CAAC;YACnE,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAErC,IAAI,CAAC;gBACH,MAAM,IAAA,gBAAK,EAAC,IAAA,mBAAO,EAAC,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChE,MAAM,IAAA,mBAAQ,EAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAA,2BAAiB,EAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;YAClF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAC;gBACrB,IAAA,8BAAQ,EACN,KAAK,CAAC,WAAW,EACjB,+BAA+B,KAAK,CAAC,OAAO,IAAI,eAAe,EAAE,CAClE,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AApBD,0CAoBC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<!--
|
|
3
|
+
This is the execution context.
|
|
4
|
+
Loaded within the iframe.
|
|
5
|
+
Reloaded before every execution run.
|
|
6
|
+
-->
|
|
7
|
+
<html>
|
|
8
|
+
<head>
|
|
9
|
+
<title></title>
|
|
10
|
+
<base href="/" />
|
|
11
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
|
12
|
+
<link rel="stylesheet" href="_karma_webpack_/styles.css" crossorigin="anonymous" />
|
|
13
|
+
<meta
|
|
14
|
+
name="viewport"
|
|
15
|
+
content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"
|
|
16
|
+
/>
|
|
17
|
+
</head>
|
|
18
|
+
|
|
19
|
+
<body>
|
|
20
|
+
<!-- The scripts need to be in the body DOM element, as some test running frameworks need the body
|
|
21
|
+
to have already been created so they can insert their magic into it. For example, if loaded
|
|
22
|
+
before body, Angular Scenario test framework fails to find the body and crashes and burns in
|
|
23
|
+
an epic manner. -->
|
|
24
|
+
<script src="context.js"></script>
|
|
25
|
+
<script type="text/javascript">
|
|
26
|
+
// Configure our Karma and set up bindings
|
|
27
|
+
%CLIENT_CONFIG%
|
|
28
|
+
window.__karma__.setupContext(window);
|
|
29
|
+
|
|
30
|
+
// All served files with the latest timestamps
|
|
31
|
+
%MAPPINGS%
|
|
32
|
+
</script>
|
|
33
|
+
<script src="_karma_webpack_/runtime.js" crossorigin="anonymous"></script>
|
|
34
|
+
<script src="_karma_webpack_/polyfills.js" crossorigin="anonymous"></script>
|
|
35
|
+
<!-- Dynamically replaced with <script> tags -->
|
|
36
|
+
%SCRIPTS%
|
|
37
|
+
<script src="_karma_webpack_/scripts.js" crossorigin="anonymous" defer></script>
|
|
38
|
+
<script src="_karma_webpack_/vendor.js" crossorigin="anonymous" type="module"></script>
|
|
39
|
+
<script src="_karma_webpack_/main.js" crossorigin="anonymous" type="module"></script>
|
|
40
|
+
<script type="module">
|
|
41
|
+
window.__karma__.loaded();
|
|
42
|
+
</script>
|
|
43
|
+
</body>
|
|
44
|
+
</html>
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<!--
|
|
3
|
+
This file is almost the same as context.html - loads all source files,
|
|
4
|
+
but its purpose is to be loaded in the main frame (not within an iframe),
|
|
5
|
+
just for immediate execution, without reporting to Karma server.
|
|
6
|
+
-->
|
|
7
|
+
<html>
|
|
8
|
+
<head>
|
|
9
|
+
%X_UA_COMPATIBLE%
|
|
10
|
+
<title>Karma DEBUG RUNNER</title>
|
|
11
|
+
<base href="/" />
|
|
12
|
+
<link href="favicon.ico" rel="icon" type="image/x-icon" />
|
|
13
|
+
<link rel="stylesheet" href="_karma_webpack_/styles.css" crossorigin="anonymous" />
|
|
14
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
|
15
|
+
<meta
|
|
16
|
+
name="viewport"
|
|
17
|
+
content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"
|
|
18
|
+
/>
|
|
19
|
+
</head>
|
|
20
|
+
|
|
21
|
+
<body>
|
|
22
|
+
<!-- The scripts need to be at the end of body, so that some test running frameworks
|
|
23
|
+
(Angular Scenario, for example) need the body to be loaded so that it can insert its magic
|
|
24
|
+
into it. If it is before body, then it fails to find the body and crashes and burns in an epic
|
|
25
|
+
manner. -->
|
|
26
|
+
<script src="context.js"></script>
|
|
27
|
+
<script src="debug.js"></script>
|
|
28
|
+
<script type="text/javascript">
|
|
29
|
+
// Configure our Karma
|
|
30
|
+
%CLIENT_CONFIG%
|
|
31
|
+
|
|
32
|
+
// All served files with the latest timestamps
|
|
33
|
+
%MAPPINGS%
|
|
34
|
+
</script>
|
|
35
|
+
<script src="_karma_webpack_/runtime.js" crossorigin="anonymous"></script>
|
|
36
|
+
<script src="_karma_webpack_/polyfills.js" crossorigin="anonymous"></script>
|
|
37
|
+
<!-- Dynamically replaced with <script> tags -->
|
|
38
|
+
%SCRIPTS%
|
|
39
|
+
<script src="_karma_webpack_/scripts.js" crossorigin="anonymous" defer></script>
|
|
40
|
+
<script src="_karma_webpack_/vendor.js" crossorigin="anonymous" type="module"></script>
|
|
41
|
+
<script src="_karma_webpack_/main.js" crossorigin="anonymous" type="module"></script>
|
|
42
|
+
<script type="module">
|
|
43
|
+
window.__karma__.loaded();
|
|
44
|
+
</script>
|
|
45
|
+
</body>
|
|
46
|
+
</html>
|