@nx/angular 0.0.0-pr-31231-180f614 → 0.0.0-pr-31222-862e973
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 +1 -1
- package/README.md +1 -1
- package/esm2022/index.mjs +2 -0
- package/esm2022/mf/index.mjs +2 -0
- package/esm2022/mf/mf.mjs +52 -0
- package/esm2022/mf/nx-angular-mf.mjs +5 -0
- package/esm2022/nx-angular.mjs +5 -0
- package/esm2022/src/runtime/nx/data-persistence.mjs +349 -0
- package/esm2022/testing/index.mjs +2 -0
- package/esm2022/testing/nx-angular-testing.mjs +5 -0
- package/esm2022/testing/src/testing-utils.mjs +38 -0
- package/executors.d.ts +6 -1
- package/executors.js +3 -2
- package/executors.json +2 -2
- package/fesm2022/nx-angular-mf.mjs +0 -64
- package/fesm2022/nx-angular-mf.mjs.map +1 -1
- package/fesm2022/nx-angular-testing.mjs +45 -0
- package/fesm2022/nx-angular-testing.mjs.map +1 -0
- package/fesm2022/nx-angular.mjs +352 -0
- package/fesm2022/nx-angular.mjs.map +1 -1
- package/generators.d.ts +1 -0
- package/generators.js +1 -0
- package/generators.json +18 -19
- package/index.d.ts +1 -1
- package/mf/mf.d.ts +0 -64
- package/migrations.json +1289 -769
- package/module-federation/index.d.ts +2 -5
- package/module-federation/index.js +4 -3
- package/ng-package.json +2 -2
- package/package.json +29 -17
- package/src/builders/dev-server/dev-server.impl.js +4 -6
- package/src/builders/dev-server/lib/normalize-options.js +0 -3
- package/src/builders/dev-server/lib/validate-options.js +9 -1
- package/src/builders/dev-server/schema.d.ts +0 -3
- package/src/builders/dev-server/schema.json +8 -8
- package/src/builders/webpack-browser/schema.d.ts +5 -0
- package/src/builders/webpack-browser/schema.json +2 -0
- package/src/builders/webpack-browser/webpack-browser.impl.js +4 -3
- package/src/builders/webpack-server/schema.json +1 -0
- package/src/executors/application/application.impl.d.ts +1 -1
- package/src/executors/application/application.impl.js +1 -4
- package/src/executors/application/schema.json +8 -78
- package/src/executors/application/utils/validate-options.js +4 -18
- package/src/executors/browser-esbuild/browser-esbuild.impl.d.ts +1 -1
- package/src/executors/browser-esbuild/browser-esbuild.impl.js +9 -0
- package/src/executors/browser-esbuild/schema.json +3 -1
- package/src/executors/delegate-build/delegate-build.impl.d.ts +3 -1
- package/src/executors/delegate-build/delegate-build.impl.js +3 -0
- package/src/executors/module-federation-dev-server/lib/build-static-remotes.d.ts +4 -0
- package/src/executors/module-federation-dev-server/lib/build-static-remotes.js +65 -0
- package/src/executors/module-federation-dev-server/lib/index.d.ts +2 -0
- package/src/executors/module-federation-dev-server/lib/index.js +2 -0
- package/src/executors/module-federation-dev-server/lib/normalize-options.js +0 -1
- package/src/executors/module-federation-dev-server/lib/start-dev-remotes.d.ts +1 -1
- package/src/executors/module-federation-dev-server/lib/start-static-remotes-file-server.d.ts +9 -0
- package/src/executors/module-federation-dev-server/lib/start-static-remotes-file-server.js +51 -0
- package/src/executors/module-federation-dev-server/module-federation-dev-server.impl.d.ts +1 -1
- package/src/executors/module-federation-dev-server/module-federation-dev-server.impl.js +31 -5
- package/src/executors/module-federation-dev-server/schema.d.ts +0 -4
- package/src/executors/module-federation-dev-server/schema.json +1 -2
- package/src/executors/module-federation-ssr-dev-server/lib/build-static-remotes.d.ts +4 -0
- package/src/executors/module-federation-ssr-dev-server/lib/build-static-remotes.js +65 -0
- package/src/executors/module-federation-ssr-dev-server/lib/normalize-options.d.ts +2 -2
- package/src/executors/module-federation-ssr-dev-server/lib/normalize-options.js +0 -1
- package/src/executors/module-federation-ssr-dev-server/lib/start-dev-remotes.d.ts +1 -1
- package/src/executors/module-federation-ssr-dev-server/lib/start-static-remotes.d.ts +4 -0
- package/src/executors/module-federation-ssr-dev-server/lib/start-static-remotes.js +41 -0
- package/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.d.ts +1 -1
- package/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.js +35 -7
- package/src/executors/module-federation-ssr-dev-server/schema.d.ts +14 -8
- package/src/executors/module-federation-ssr-dev-server/schema.json +0 -1
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-packagr.d.ts +3 -2
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-packagr.js +26 -7
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/compile-ngc.di.d.ts +14 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/compile-ngc.di.js +27 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/compile-ngc.transform.d.ts +12 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/compile-ngc.transform.js +53 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/entry-point.di.d.ts +15 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/entry-point.di.js +28 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/entry-point.transform.d.ts +30 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/entry-point.transform.js +52 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/write-package.di.d.ts +12 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/write-package.di.js +20 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/write-package.transform.d.ts +9 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/write-package.transform.js +320 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/options.di.d.ts +14 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/options.di.js +35 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/package.di.d.ts +14 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/package.di.js +37 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ngc/compile-source-files.d.ts +12 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ngc/compile-source-files.js +178 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/styles/stylesheet-processor.d.ts +42 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/styles/stylesheet-processor.di.d.ts +10 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/styles/stylesheet-processor.di.js +17 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/styles/stylesheet-processor.js +201 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-bundles.di.d.ts +2 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-bundles.di.js +12 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → v17+/ng-package}/entry-point/write-bundles.transform.d.ts +1 -3
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-bundles.transform.js +12 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.di.d.ts +8 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.di.js +18 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.transform.d.ts +8 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.transform.js +286 -0
- package/src/executors/ng-packagr-lite/ng-packagr-lite.impl.d.ts +1 -1
- package/src/executors/ng-packagr-lite/ng-packagr-lite.impl.js +1 -1
- package/src/executors/ng-packagr-lite/schema.json +7 -3
- package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.di.d.ts +14 -0
- package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.di.js +26 -0
- package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.transform.d.ts +12 -0
- package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.transform.js +71 -0
- package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/entry-point.di.d.ts +13 -0
- package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/entry-point.di.js +32 -0
- package/src/executors/package/ng-packagr-adjustments/ng-package/options.di.d.ts +14 -0
- package/src/executors/package/ng-packagr-adjustments/ng-package/options.di.js +35 -0
- package/src/executors/package/ng-packagr-adjustments/ng-package/package.di.d.ts +14 -0
- package/src/executors/package/ng-packagr-adjustments/ng-package/package.di.js +37 -0
- package/src/executors/package/ng-packagr-adjustments/ng-packagr.d.ts +3 -2
- package/src/executors/package/ng-packagr-adjustments/ng-packagr.js +21 -4
- package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.d.ts +13 -0
- package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.js +183 -0
- package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.d.ts +36 -0
- package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.di.d.ts +10 -0
- package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.di.js +17 -0
- package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.js +194 -0
- package/src/executors/package/ng-packagr-adjustments/utils/ng-compiler-cli.d.ts +1 -0
- package/src/executors/package/ng-packagr-adjustments/utils/ng-compiler-cli.js +9 -0
- package/src/executors/package/package.impl.d.ts +2 -2
- package/src/executors/package/package.impl.js +4 -6
- package/src/executors/package/schema.d.ts +6 -4
- package/src/executors/package/schema.json +10 -4
- package/src/executors/utilities/ng-packagr/stylesheet-processor.di.d.ts +1 -1
- package/src/executors/utilities/ng-packagr/stylesheet-processor.di.js +14 -23
- package/src/executors/utilities/ng-packagr/{pre-v19/stylesheet-processor.js → stylesheet-processor.js} +4 -4
- package/src/executors/utilities/ng-packagr/tailwindcss.d.ts +6 -0
- package/src/executors/utilities/ng-packagr/tailwindcss.js +32 -0
- package/src/generators/add-linting/add-linting.js +17 -2
- package/src/generators/add-linting/lib/create-eslint-configuration.d.ts +2 -2
- package/src/generators/add-linting/lib/create-eslint-configuration.js +2 -2
- package/src/generators/add-linting/schema.d.ts +0 -1
- package/src/generators/application/application.d.ts +1 -0
- package/src/generators/application/application.js +9 -24
- package/src/generators/application/files/ng-module/src/app/app.component.html__tpl__ +1 -8
- package/src/generators/application/files/ng-module/src/app/app.component.ts__tpl__ +5 -4
- package/src/generators/application/files/nx-welcome/claimed/ng-module/src/app/nx-welcome.component.ts__tpl__ +1 -2
- package/src/generators/application/files/nx-welcome/claimed/standalone/src/app/nx-welcome.component.ts__tpl__ +2 -2
- package/src/generators/application/files/nx-welcome/not-configured/ng-module/src/app/nx-welcome.component.ts__tpl__ +1 -2
- package/src/generators/application/files/nx-welcome/not-configured/standalone/src/app/nx-welcome.component.ts__tpl__ +2 -2
- package/src/generators/application/files/nx-welcome/unclaimed/ng-module/src/app/nx-welcome.component.ts__tpl__ +1 -2
- package/src/generators/application/files/nx-welcome/unclaimed/standalone/src/app/nx-welcome.component.ts__tpl__ +2 -2
- package/src/generators/application/files/standalone-components/src/app/app.component.html__tpl__ +1 -8
- package/src/generators/application/files/standalone-components/src/app/app.component.ts__tpl__ +6 -4
- package/src/generators/application/lib/add-e2e.js +9 -2
- package/src/generators/application/lib/add-linting.js +2 -2
- package/src/generators/application/lib/add-serve-static-target.d.ts +1 -1
- package/src/generators/application/lib/add-serve-static-target.js +3 -2
- package/src/generators/application/lib/add-unit-test-runner.js +7 -20
- package/src/generators/application/lib/create-files.js +1 -4
- package/src/generators/application/lib/create-project.js +31 -25
- package/src/generators/application/lib/normalize-options.d.ts +1 -1
- package/src/generators/application/lib/normalize-options.js +15 -14
- package/src/generators/application/schema.d.ts +6 -5
- package/src/generators/application/schema.json +21 -16
- package/src/generators/component/component.d.ts +1 -0
- package/src/generators/component/component.js +7 -4
- package/src/generators/component/files/__fileName__.__style__ +1 -1
- package/src/generators/component/files/__fileName__.spec.ts__tpl__ +1 -1
- package/src/generators/component/files/__fileName__.ts__tpl__ +13 -5
- package/src/generators/component/lib/normalize-options.js +6 -8
- package/src/generators/component/schema.d.ts +18 -3
- package/src/generators/component/schema.json +28 -11
- package/src/generators/component-cypress-spec/component-cypress-spec.d.ts +4 -0
- package/src/generators/component-cypress-spec/component-cypress-spec.js +35 -0
- package/src/generators/component-cypress-spec/files/__componentFileName__.__fileExt__ +17 -0
- package/src/generators/component-cypress-spec/lib/get-args-default-value.d.ts +2 -0
- package/src/generators/component-cypress-spec/lib/get-args-default-value.js +24 -0
- package/src/generators/component-cypress-spec/lib/get-component-selector.d.ts +2 -0
- package/src/generators/component-cypress-spec/lib/get-component-selector.js +23 -0
- package/src/generators/component-cypress-spec/schema.d.ts +10 -0
- package/src/generators/component-cypress-spec/schema.json +66 -0
- package/src/generators/component-story/files/__componentFileName__.stories.ts__tmpl__ +4 -4
- package/src/generators/component-test/component-test.js +1 -1
- package/src/generators/convert-to-application-executor/convert-to-application-executor.js +4 -1
- package/src/generators/convert-to-application-executor/schema.json +1 -1
- package/src/generators/cypress-component-configuration/cypress-component-configuration.d.ts +2 -1
- package/src/generators/cypress-component-configuration/cypress-component-configuration.js +7 -1
- package/src/generators/directive/directive.js +0 -5
- package/src/generators/directive/files/__fileName__.ts__tpl__ +2 -2
- package/src/generators/directive/lib/normalize-options.js +7 -6
- package/src/generators/directive/schema.d.ts +17 -2
- package/src/generators/directive/schema.json +28 -20
- package/src/generators/federate-module/lib/add-remote.js +3 -0
- package/src/generators/federate-module/schema.d.ts +2 -0
- package/src/generators/federate-module/schema.json +16 -19
- package/src/generators/host/files/common/pre-v17/src/main.server.ts__tmpl__ +66 -0
- package/src/generators/host/files/common/{src → v17+/src}/main.server.ts__tmpl__ +1 -1
- package/src/generators/host/files/js/webpack.server.config.js__tmpl__ +1 -1
- package/src/generators/host/files/ts/webpack.server.config.ts__tmpl__ +1 -1
- package/src/generators/host/host.d.ts +2 -1
- package/src/generators/host/host.js +24 -30
- package/src/generators/host/lib/update-ssr-setup.js +3 -7
- package/src/generators/host/schema.d.ts +5 -4
- package/src/generators/host/schema.json +27 -34
- package/src/generators/init/init.js +1 -3
- package/src/generators/library/files/base/README.md__tpl__ +2 -2
- package/src/generators/library/lib/add-project.d.ts +1 -1
- package/src/generators/library/lib/add-project.js +1 -7
- package/src/generators/library/lib/add-standalone-component.js +3 -4
- package/src/generators/library/lib/normalize-options.js +5 -4
- package/src/generators/library/lib/normalized-schema.d.ts +3 -2
- package/src/generators/library/library.d.ts +1 -0
- package/src/generators/library/library.js +19 -27
- package/src/generators/library/schema.d.ts +5 -2
- package/src/generators/library/schema.json +20 -9
- package/src/generators/move/lib/update-secondary-entry-points.js +0 -1
- package/src/generators/move/move.d.ts +1 -3
- package/src/generators/move/move.js +8 -4
- package/src/generators/move/schema.d.ts +3 -0
- package/src/generators/move/schema.json +5 -0
- package/src/generators/ng-add/migrators/builders/angular-devkit-karma.migrator.js +1 -1
- package/src/generators/ng-add/migrators/builders/angular-devkit-ng-packagr.migrator.js +3 -4
- package/src/generators/ng-add/migrators/builders/angular-eslint-lint.migrator.js +1 -1
- package/src/generators/ng-add/migrators/builders/builder.migrator.d.ts +2 -2
- package/src/generators/ng-add/migrators/builders/builder.migrator.js +4 -4
- package/src/generators/ng-add/migrators/projects/e2e.migrator.js +4 -4
- package/src/generators/ng-add/migrators/projects/project.migrator.js +1 -1
- package/src/generators/ng-add/utilities/validation-logging.js +4 -5
- package/src/generators/ng-add/utilities/workspace.js +2 -5
- package/src/generators/ngrx/ngrx.d.ts +0 -3
- package/src/generators/ngrx/ngrx.js +0 -3
- package/src/generators/ngrx/schema.json +1 -1
- package/src/generators/ngrx-feature-store/schema.d.ts +1 -1
- package/src/generators/ngrx-root-store/lib/add-imports.js +4 -4
- package/src/generators/ngrx-root-store/lib/normalize-options.js +2 -3
- package/src/generators/pipe/files/__fileName__.ts__tpl__ +2 -2
- package/src/generators/pipe/lib/normalize-options.js +7 -6
- package/src/generators/pipe/pipe.js +0 -5
- package/src/generators/pipe/schema.d.ts +17 -2
- package/src/generators/pipe/schema.json +28 -20
- package/src/generators/remote/files/base/webpack.server.config.js__tmpl__ +1 -1
- package/src/generators/remote/files/base-ts/webpack.server.config.ts__tmpl__ +1 -1
- package/src/generators/remote/files/common/pre-v17/src/main.server.ts__tmpl__ +72 -0
- package/src/generators/remote/files/common/{src → v17+/src}/main.server.ts__tmpl__ +1 -1
- package/src/generators/remote/lib/update-ssr-setup.js +3 -7
- package/src/generators/remote/remote.d.ts +2 -1
- package/src/generators/remote/remote.js +14 -38
- package/src/generators/remote/schema.d.ts +5 -4
- package/src/generators/remote/schema.json +25 -32
- package/src/generators/scam/lib/normalize-options.js +7 -6
- package/src/generators/scam/scam.js +2 -0
- package/src/generators/scam/schema.d.ts +17 -3
- package/src/generators/scam/schema.json +30 -16
- package/src/generators/scam-directive/lib/normalize-options.js +7 -6
- package/src/generators/scam-directive/scam-directive.js +2 -0
- package/src/generators/scam-directive/schema.d.ts +17 -3
- package/src/generators/scam-directive/schema.json +31 -16
- package/src/generators/scam-pipe/lib/normalize-options.js +7 -6
- package/src/generators/scam-pipe/scam-pipe.js +2 -0
- package/src/generators/scam-pipe/schema.d.ts +17 -3
- package/src/generators/scam-pipe/schema.json +31 -16
- package/src/generators/scam-to-standalone/lib/convert-scam-to-standalone.d.ts +1 -1
- package/src/generators/scam-to-standalone/lib/convert-scam-to-standalone.js +4 -5
- package/src/generators/scam-to-standalone/lib/replace-module-usages-with-component.js +1 -3
- package/src/generators/setup-mf/files/entry-module-files/entry.component.ts__tmpl__ +1 -2
- package/src/generators/setup-mf/files/standalone-entry-component-files/entry.component.ts__tmpl__ +2 -2
- package/src/generators/setup-mf/files/ts-webpack/module-federation.config.ts__tmpl__ +1 -4
- package/src/generators/setup-mf/files/ts-webpack/webpack.config.ts__tmpl__ +1 -1
- package/src/generators/setup-mf/files/ts-webpack/webpack.prod.config.ts__tmpl__ +1 -1
- package/src/generators/setup-mf/files/webpack/module-federation.config.js__tmpl__ +0 -3
- package/src/generators/setup-mf/files/webpack/webpack.config.js__tmpl__ +1 -1
- package/src/generators/setup-mf/files/webpack/webpack.prod.config.js__tmpl__ +1 -1
- package/src/generators/setup-mf/lib/add-remote-entry.js +0 -5
- package/src/generators/setup-mf/lib/add-remote-to-host.js +8 -21
- package/src/generators/setup-mf/lib/fix-bootstrap.js +2 -3
- package/src/generators/setup-mf/lib/setup-serve-target.js +0 -1
- package/src/generators/setup-mf/lib/setup-tspath-for-remote.js +1 -1
- package/src/generators/setup-mf/schema.json +3 -5
- package/src/generators/setup-mf/setup-mf.js +2 -5
- package/src/generators/setup-ssr/files/{pre-v19/server → server}/application-builder/__serverFileName__ +1 -1
- package/src/generators/setup-ssr/files/{v19+/server-builder/server → server/server-builder/pre-v17}/__serverFileName__ +15 -25
- package/src/generators/setup-ssr/files/{pre-v19/server/server-builder → server/server-builder/v17+}/__serverFileName__ +1 -1
- package/src/generators/setup-ssr/lib/add-dependencies.js +17 -6
- package/src/generators/setup-ssr/lib/add-hydration.d.ts +2 -2
- package/src/generators/setup-ssr/lib/add-hydration.js +2 -10
- package/src/generators/setup-ssr/lib/add-server-file.d.ts +2 -2
- package/src/generators/setup-ssr/lib/add-server-file.js +10 -24
- package/src/generators/setup-ssr/lib/generate-files.d.ts +2 -2
- package/src/generators/setup-ssr/lib/generate-files.js +8 -31
- package/src/generators/setup-ssr/lib/generate-server-ts-config.d.ts +3 -3
- package/src/generators/setup-ssr/lib/generate-server-ts-config.js +3 -24
- package/src/generators/setup-ssr/lib/normalize-options.d.ts +14 -3
- package/src/generators/setup-ssr/lib/normalize-options.js +6 -27
- package/src/generators/setup-ssr/lib/set-router-initial-navigation.d.ts +2 -2
- package/src/generators/setup-ssr/lib/update-project-config.d.ts +3 -3
- package/src/generators/setup-ssr/lib/update-project-config.js +24 -37
- package/src/generators/setup-ssr/lib/validate-options.js +0 -5
- package/src/generators/setup-ssr/schema.d.ts +0 -5
- package/src/generators/setup-ssr/schema.json +8 -6
- package/src/generators/setup-ssr/setup-ssr.js +11 -6
- package/src/generators/setup-tailwind/lib/add-tailwind-config-path-to-project.d.ts +3 -0
- package/src/generators/setup-tailwind/lib/{validate-build-target.js → add-tailwind-config-path-to-project.js} +15 -5
- package/src/generators/setup-tailwind/lib/index.d.ts +1 -1
- package/src/generators/setup-tailwind/lib/index.js +1 -1
- package/src/generators/setup-tailwind/lib/update-application-styles.js +1 -1
- package/src/generators/setup-tailwind/setup-tailwind.js +1 -4
- package/src/generators/stories/lib/get-e2e-project.d.ts +2 -0
- package/src/generators/stories/lib/get-e2e-project.js +14 -0
- package/src/generators/stories/schema.d.ts +2 -0
- package/src/generators/stories/schema.json +10 -0
- package/src/generators/stories/stories.js +21 -2
- package/src/generators/storybook-configuration/lib/generate-stories.js +6 -0
- package/src/generators/storybook-configuration/lib/generate-storybook-configuration.js +2 -0
- package/src/generators/storybook-configuration/lib/validate-options.d.ts +2 -0
- package/src/generators/storybook-configuration/lib/validate-options.js +8 -0
- package/src/generators/storybook-configuration/schema.d.ts +3 -0
- package/src/generators/storybook-configuration/schema.json +15 -0
- package/src/generators/storybook-configuration/storybook-configuration.js +3 -0
- package/src/generators/utils/add-jest.d.ts +0 -1
- package/src/generators/utils/add-jest.js +9 -5
- package/src/generators/utils/ensure-angular-dependencies.js +1 -0
- package/src/generators/utils/storybook-ast/component-info.js +3 -13
- package/src/generators/utils/testing.js +28 -15
- package/src/generators/utils/validations.d.ts +0 -1
- package/src/generators/utils/validations.js +0 -10
- package/src/generators/utils/version-utils.d.ts +0 -1
- package/src/generators/utils/version-utils.js +2 -7
- package/src/migrations/{update-20-2-0/update-angular-ssr-imports-to-use-node-entry-point.d.ts → update-14-2-0/remove-show-circular-dependencies-option.d.ts} +1 -1
- package/src/migrations/update-14-2-0/remove-show-circular-dependencies-option.js +23 -0
- package/src/migrations/{update-20-4-0 → update-14-2-0}/update-angular-cli.d.ts +0 -1
- package/src/migrations/{update-20-4-0 → update-14-2-0}/update-angular-cli.js +3 -4
- package/src/migrations/update-14-2-0/update-libraries-secondary-entrypoints.d.ts +2 -0
- package/src/migrations/update-14-2-0/update-libraries-secondary-entrypoints.js +34 -0
- package/src/migrations/update-14-2-0/update-ngcc-target.d.ts +2 -0
- package/src/migrations/update-14-2-0/update-ngcc-target.js +17 -0
- package/src/migrations/{update-20-2-0/disable-angular-eslint-prefer-standalone.d.ts → update-14-2-0/update-router-initial-navigation.d.ts} +1 -1
- package/src/migrations/update-14-2-0/update-router-initial-navigation.js +73 -0
- package/src/migrations/update-14-2-0/update-tsconfig-target.d.ts +2 -0
- package/src/migrations/update-14-2-0/update-tsconfig-target.js +155 -0
- package/src/migrations/update-14-5-0/migrate-mfe-to-mf.d.ts +5 -0
- package/src/migrations/update-14-5-0/migrate-mfe-to-mf.js +90 -0
- package/src/migrations/{update-20-2-0 → update-14-5-2}/update-angular-cli.d.ts +0 -1
- package/src/migrations/{update-20-5-0 → update-14-5-2}/update-angular-cli.js +3 -4
- package/src/migrations/{update-20-5-0 → update-14-6-0}/update-angular-cli.d.ts +0 -1
- package/src/migrations/update-14-6-0/update-angular-cli.js +22 -0
- package/src/migrations/update-14-8-0/rename-webpack-server.d.ts +2 -0
- package/src/migrations/update-14-8-0/rename-webpack-server.js +21 -0
- package/src/migrations/update-15-0-0/add-karma-inputs.d.ts +2 -0
- package/src/migrations/update-15-0-0/add-karma-inputs.js +41 -0
- package/src/migrations/update-15-0-0/switch-to-jasmine-marbles.d.ts +2 -0
- package/src/migrations/update-15-0-0/switch-to-jasmine-marbles.js +102 -0
- package/src/migrations/update-15-2-0/remove-browserlist-config.d.ts +4 -0
- package/src/migrations/update-15-2-0/remove-browserlist-config.js +59 -0
- package/src/migrations/{update-21-0-0/change-data-persistence-operators-imports-to-ngrx-router-store-data-persistence.d.ts → update-15-2-0/remove-platform-server-exports.d.ts} +1 -1
- package/src/migrations/update-15-2-0/remove-platform-server-exports.js +62 -0
- package/src/migrations/update-15-2-0/update-angular-cli.d.ts +2 -0
- package/src/migrations/update-15-2-0/update-angular-cli.js +22 -0
- package/src/migrations/update-15-2-0/update-karma-main-file.d.ts +2 -0
- package/src/migrations/update-15-2-0/update-karma-main-file.js +72 -0
- package/src/migrations/update-15-2-0/update-typescript-target.d.ts +2 -0
- package/src/migrations/update-15-2-0/update-typescript-target.js +52 -0
- package/src/migrations/update-15-2-0/update-workspace-config.d.ts +2 -0
- package/src/migrations/update-15-2-0/update-workspace-config.js +24 -0
- package/src/migrations/update-15-5-0/update-angular-cli.d.ts +2 -0
- package/src/migrations/update-15-5-0/update-angular-cli.js +22 -0
- package/src/migrations/update-15-7-0/install-required-packages.d.ts +2 -0
- package/src/migrations/update-15-7-0/install-required-packages.js +36 -0
- package/src/migrations/update-15-8-0/update-angular-cli.d.ts +2 -0
- package/src/migrations/update-15-8-0/update-angular-cli.js +22 -0
- package/src/migrations/update-15-9-0/update-file-server-executor.d.ts +2 -0
- package/src/migrations/update-15-9-0/update-file-server-executor.js +42 -0
- package/src/migrations/update-15-9-0/update-testing-tsconfig.d.ts +3 -0
- package/src/migrations/update-15-9-0/update-testing-tsconfig.js +32 -0
- package/src/migrations/update-16-0-0/remove-karma-defaults.d.ts +2 -0
- package/src/migrations/update-16-0-0/remove-karma-defaults.js +52 -0
- package/src/migrations/update-16-0-0/remove-library-generator-simple-module-name-option.d.ts +2 -0
- package/src/migrations/update-16-0-0/remove-library-generator-simple-module-name-option.js +40 -0
- package/src/migrations/update-16-0-0/remove-protractor-defaults.d.ts +2 -0
- package/src/migrations/update-16-0-0/remove-protractor-defaults.js +52 -0
- package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.d.ts +2 -0
- package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.js +9 -0
- package/src/migrations/update-16-1-0/extract-standalone-config-from-bootstrap.d.ts +2 -0
- package/src/migrations/update-16-1-0/extract-standalone-config-from-bootstrap.js +127 -0
- package/src/migrations/update-16-1-0/remove-ngcc-invocation.d.ts +2 -0
- package/src/migrations/update-16-1-0/remove-ngcc-invocation.js +22 -0
- package/src/migrations/update-16-1-0/remove-render-module-platform-server-exports.d.ts +2 -0
- package/src/migrations/update-16-1-0/remove-render-module-platform-server-exports.js +62 -0
- package/src/migrations/update-16-1-0/update-angular-cli.d.ts +3 -0
- package/src/migrations/{update-20-2-0 → update-16-1-0}/update-angular-cli.js +1 -1
- package/src/migrations/update-16-1-0/update-server-executor-config.d.ts +2 -0
- package/src/migrations/update-16-1-0/update-server-executor-config.js +26 -0
- package/src/migrations/update-16-2-0/switch-data-persistence-operators-imports-to-ngrx-router-store.js +4 -4
- package/src/migrations/update-19-6-0/turn-off-dts-by-default.js +2 -2
- package/src/plugins/plugin.js +2 -7
- package/src/runtime/nx/data-persistence.d.ts +276 -0
- package/src/utils/backward-compatible-versions.d.ts +4 -4
- package/src/utils/backward-compatible-versions.js +23 -27
- package/src/utils/mf/utils.d.ts +15 -0
- package/src/utils/mf/utils.js +101 -0
- package/src/utils/mf/with-module-federation-ssr.d.ts +2 -0
- package/src/utils/mf/with-module-federation-ssr.js +68 -0
- package/src/utils/mf/with-module-federation.d.ts +2 -0
- package/src/utils/mf/with-module-federation.js +70 -0
- package/src/utils/nx-devkit/ast-utils.d.ts +2 -3
- package/src/utils/nx-devkit/ast-utils.js +4 -22
- package/src/utils/test-runners.d.ts +1 -2
- package/src/utils/test-runners.js +0 -1
- package/src/utils/versions.d.ts +11 -13
- package/src/utils/versions.js +12 -14
- package/testing/index.d.ts +1 -0
- package/testing/ng-package.json +6 -0
- package/testing/src/testing-utils.d.ts +33 -0
- package/src/executors/application/utils/normalize-options.d.ts +0 -2
- package/src/executors/application/utils/normalize-options.js +0 -34
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/entry-point.d.ts +0 -3
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/entry-point.js +0 -22
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-bundles.di.d.ts +0 -2
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-bundles.di.js +0 -17
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-bundles.transform.js +0 -49
- package/src/executors/utilities/ng-packagr/ng-packagr-version.d.ts +0 -2
- package/src/executors/utilities/ng-packagr/ng-packagr-version.js +0 -11
- package/src/executors/utilities/ng-packagr/package-imports.d.ts +0 -1
- package/src/executors/utilities/ng-packagr/package-imports.js +0 -10
- package/src/executors/utilities/ng-packagr/v19+/stylesheet-processor.d.ts +0 -14
- package/src/executors/utilities/ng-packagr/v19+/stylesheet-processor.js +0 -99
- package/src/generators/application/files/rspack-ssr/server.ts__tmpl__ +0 -72
- package/src/generators/convert-to-rspack/convert-to-rspack.d.ts +0 -4
- package/src/generators/convert-to-rspack/convert-to-rspack.js +0 -362
- package/src/generators/convert-to-rspack/lib/create-config.d.ts +0 -2
- package/src/generators/convert-to-rspack/lib/create-config.js +0 -45
- package/src/generators/convert-to-rspack/lib/get-custom-webpack-config.d.ts +0 -6
- package/src/generators/convert-to-rspack/lib/get-custom-webpack-config.js +0 -77
- package/src/generators/convert-to-rspack/lib/update-tsconfig.d.ts +0 -2
- package/src/generators/convert-to-rspack/lib/update-tsconfig.js +0 -26
- package/src/generators/convert-to-rspack/lib/validate-supported-executor.d.ts +0 -2
- package/src/generators/convert-to-rspack/lib/validate-supported-executor.js +0 -14
- package/src/generators/convert-to-rspack/schema.d.ts +0 -5
- package/src/generators/convert-to-rspack/schema.json +0 -30
- package/src/generators/setup-ssr/files/v19+/application-builder/ngmodule-src/__main__ +0 -1
- package/src/generators/setup-ssr/files/v19+/application-builder/ngmodule-src/app/__rootModuleFileName__ +0 -13
- package/src/generators/setup-ssr/files/v19+/application-builder/ngmodule-src/app/app.routes.server.ts__tpl__ +0 -8
- package/src/generators/setup-ssr/files/v19+/application-builder/server/__serverFileName__ +0 -66
- package/src/generators/setup-ssr/files/v19+/application-builder/standalone-src/__main__ +0 -7
- package/src/generators/setup-ssr/files/v19+/application-builder/standalone-src/app/app.config.server.ts__tpl__ +0 -14
- package/src/generators/setup-ssr/files/v19+/application-builder/standalone-src/app/app.routes.server.ts__tpl__ +0 -8
- package/src/generators/setup-ssr/files/v19+/application-builder-common-engine/server/__serverFileName__ +0 -67
- package/src/generators/setup-ssr/files/v19+/server-builder/ngmodule-src/__main__ +0 -1
- package/src/generators/setup-ssr/files/v19+/server-builder/ngmodule-src/app/__rootModuleFileName__ +0 -14
- package/src/generators/setup-ssr/files/v19+/server-builder/root/tsconfig.server.json.template +0 -16
- package/src/generators/setup-ssr/files/v19+/server-builder/standalone-src/__main__ +0 -7
- package/src/generators/setup-ssr/files/v19+/server-builder/standalone-src/app/app.config.server.ts.template +0 -11
- package/src/generators/setup-tailwind/lib/validate-build-target.d.ts +0 -3
- package/src/generators/utils/add-vitest.d.ts +0 -9
- package/src/generators/utils/add-vitest.js +0 -21
- package/src/generators/utils/assert-mf-utils.d.ts +0 -1
- package/src/generators/utils/assert-mf-utils.js +0 -11
- package/src/migrations/update-20-2-0/add-localize-polyfill-to-targets.d.ts +0 -3
- package/src/migrations/update-20-2-0/add-localize-polyfill-to-targets.js +0 -55
- package/src/migrations/update-20-2-0/disable-angular-eslint-prefer-standalone.js +0 -55
- package/src/migrations/update-20-2-0/migrate-mf-imports-to-new-package.d.ts +0 -2
- package/src/migrations/update-20-2-0/migrate-mf-imports-to-new-package.js +0 -61
- package/src/migrations/update-20-2-0/migrate-with-mf-import-to-new-package.d.ts +0 -2
- package/src/migrations/update-20-2-0/migrate-with-mf-import-to-new-package.js +0 -41
- package/src/migrations/update-20-2-0/remove-angular-eslint-rules.d.ts +0 -3
- package/src/migrations/update-20-2-0/remove-angular-eslint-rules.js +0 -62
- package/src/migrations/update-20-2-0/remove-tailwind-config-from-ng-packagr-executors.d.ts +0 -3
- package/src/migrations/update-20-2-0/remove-tailwind-config-from-ng-packagr-executors.js +0 -73
- package/src/migrations/update-20-2-0/update-angular-ssr-imports-to-use-node-entry-point.js +0 -55
- package/src/migrations/update-20-3-0/ensure-nx-module-federation-package.d.ts +0 -2
- package/src/migrations/update-20-3-0/ensure-nx-module-federation-package.js +0 -18
- package/src/migrations/update-21-0-0/change-data-persistence-operators-imports-to-ngrx-router-store-data-persistence.js +0 -122
- package/src/migrations/update-21-0-0/set-continuous-option.d.ts +0 -3
- package/src/migrations/update-21-0-0/set-continuous-option.js +0 -29
- /package/src/executors/utilities/ng-packagr/{pre-v19/stylesheet-processor.d.ts → stylesheet-processor.d.ts} +0 -0
- /package/src/generators/setup-ssr/files/{pre-v19/ngmodule-src → ngmodule/src}/__main__ +0 -0
- /package/src/generators/setup-ssr/files/{pre-v19/ngmodule-src → ngmodule/src}/app/__rootModuleFileName__ +0 -0
- /package/src/generators/setup-ssr/files/{pre-v19/root → root}/tsconfig.server.json__tpl__ +0 -0
- /package/src/generators/setup-ssr/files/{pre-v19/standalone-src → standalone/src}/__main__ +0 -0
- /package/src/generators/setup-ssr/files/{pre-v19/standalone-src → standalone/src}/app/app.config.server.ts__tpl__ +0 -0
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
[](https://circleci.com/gh/nrwl/nx)
|
|
11
11
|
[]()
|
|
12
|
-
[](https://www.npmjs.com/@nx/workspace)
|
|
13
13
|
[]()
|
|
14
14
|
[](http://commitizen.github.io/cz-cli/)
|
|
15
15
|
[](https://gitter.im/nrwl-nx/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { fetch, navigation, optimisticUpdate, pessimisticUpdate, } from './src/runtime/nx/data-persistence';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLEVBQ0wsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixpQkFBaUIsR0FDbEIsTUFBTSxtQ0FBbUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIGZldGNoLFxuICBuYXZpZ2F0aW9uLFxuICBvcHRpbWlzdGljVXBkYXRlLFxuICBwZXNzaW1pc3RpY1VwZGF0ZSxcbn0gZnJvbSAnLi9zcmMvcnVudGltZS9ueC9kYXRhLXBlcnNpc3RlbmNlJztcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { setRemoteUrlResolver, setRemoteDefinitions, setRemoteDefinition, loadRemoteModule, } from './mf';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL21mL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixnQkFBZ0IsR0FDakIsTUFBTSxNQUFNLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICBzZXRSZW1vdGVVcmxSZXNvbHZlcixcbiAgc2V0UmVtb3RlRGVmaW5pdGlvbnMsXG4gIHNldFJlbW90ZURlZmluaXRpb24sXG4gIGxvYWRSZW1vdGVNb2R1bGUsXG59IGZyb20gJy4vbWYnO1xuIl19
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
let resolveRemoteUrl;
|
|
2
|
+
export function setRemoteUrlResolver(_resolveRemoteUrl) {
|
|
3
|
+
resolveRemoteUrl = _resolveRemoteUrl;
|
|
4
|
+
}
|
|
5
|
+
let remoteUrlDefinitions;
|
|
6
|
+
export function setRemoteDefinitions(definitions) {
|
|
7
|
+
remoteUrlDefinitions = definitions;
|
|
8
|
+
}
|
|
9
|
+
export function setRemoteDefinition(remoteName, remoteUrl) {
|
|
10
|
+
remoteUrlDefinitions ??= {};
|
|
11
|
+
remoteUrlDefinitions[remoteName] = remoteUrl;
|
|
12
|
+
}
|
|
13
|
+
let remoteModuleMap = new Map();
|
|
14
|
+
let remoteContainerMap = new Map();
|
|
15
|
+
export async function loadRemoteModule(remoteName, moduleName) {
|
|
16
|
+
const remoteModuleKey = `${remoteName}:${moduleName}`;
|
|
17
|
+
if (remoteModuleMap.has(remoteModuleKey)) {
|
|
18
|
+
return remoteModuleMap.get(remoteModuleKey);
|
|
19
|
+
}
|
|
20
|
+
const container = remoteContainerMap.has(remoteName)
|
|
21
|
+
? remoteContainerMap.get(remoteName)
|
|
22
|
+
: await loadRemoteContainer(remoteName);
|
|
23
|
+
const factory = await container.get(moduleName);
|
|
24
|
+
const Module = factory();
|
|
25
|
+
remoteModuleMap.set(remoteModuleKey, Module);
|
|
26
|
+
return Module;
|
|
27
|
+
}
|
|
28
|
+
function loadModule(url) {
|
|
29
|
+
return import(/* webpackIgnore:true */ url);
|
|
30
|
+
}
|
|
31
|
+
let initialSharingScopeCreated = false;
|
|
32
|
+
async function loadRemoteContainer(remoteName) {
|
|
33
|
+
if (!resolveRemoteUrl && !remoteUrlDefinitions) {
|
|
34
|
+
throw new Error('Call setRemoteDefinitions or setRemoteUrlResolver to allow Dynamic Federation to find the remote apps correctly.');
|
|
35
|
+
}
|
|
36
|
+
if (!initialSharingScopeCreated) {
|
|
37
|
+
initialSharingScopeCreated = true;
|
|
38
|
+
await __webpack_init_sharing__('default');
|
|
39
|
+
}
|
|
40
|
+
const remoteUrl = remoteUrlDefinitions
|
|
41
|
+
? remoteUrlDefinitions[remoteName]
|
|
42
|
+
: await resolveRemoteUrl(remoteName);
|
|
43
|
+
let containerUrl = remoteUrl;
|
|
44
|
+
if (!remoteUrl.endsWith('.mjs') && !remoteUrl.endsWith('.js')) {
|
|
45
|
+
containerUrl = `${remoteUrl}${remoteUrl.endsWith('/') ? '' : '/'}remoteEntry.mjs`;
|
|
46
|
+
}
|
|
47
|
+
const container = await loadModule(containerUrl);
|
|
48
|
+
await container.init(__webpack_share_scopes__.default);
|
|
49
|
+
remoteContainerMap.set(remoteName, container);
|
|
50
|
+
return container;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL21mL21mLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLElBQUksZ0JBQTBDLENBQUM7QUFFL0MsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxpQkFBMkM7SUFFM0MsZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUM7QUFDdkMsQ0FBQztBQUVELElBQUksb0JBQTRDLENBQUM7QUFFakQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFdBQW1DO0lBQ3RFLG9CQUFvQixHQUFHLFdBQVcsQ0FBQztBQUNyQyxDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFVBQWtCLEVBQUUsU0FBaUI7SUFDdkUsb0JBQW9CLEtBQUssRUFBRSxDQUFDO0lBQzVCLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUMvQyxDQUFDO0FBRUQsSUFBSSxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7QUFDakQsSUFBSSxrQkFBa0IsR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztBQUVwRCxNQUFNLENBQUMsS0FBSyxVQUFVLGdCQUFnQixDQUFDLFVBQWtCLEVBQUUsVUFBa0I7SUFDM0UsTUFBTSxlQUFlLEdBQUcsR0FBRyxVQUFVLElBQUksVUFBVSxFQUFFLENBQUM7SUFDdEQsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7UUFDekMsT0FBTyxlQUFlLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO1FBQ2xELENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxNQUFNLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRTFDLE1BQU0sT0FBTyxHQUFHLE1BQU0sU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoRCxNQUFNLE1BQU0sR0FBRyxPQUFPLEVBQUUsQ0FBQztJQUV6QixlQUFlLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUU3QyxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsR0FBVztJQUM3QixPQUFPLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRUQsSUFBSSwwQkFBMEIsR0FBRyxLQUFLLENBQUM7QUFFdkMsS0FBSyxVQUFVLG1CQUFtQixDQUFDLFVBQWtCO0lBQ25ELElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDL0MsTUFBTSxJQUFJLEtBQUssQ0FDYixrSEFBa0gsQ0FDbkgsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUNoQywwQkFBMEIsR0FBRyxJQUFJLENBQUM7UUFDbEMsTUFBTSx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsb0JBQW9CO1FBQ3BDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUM7UUFDbEMsQ0FBQyxDQUFDLE1BQU0sZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFdkMsSUFBSSxZQUFZLEdBQUcsU0FBUyxDQUFDO0lBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzlELFlBQVksR0FBRyxHQUFHLFNBQVMsR0FDekIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUNqQyxpQkFBaUIsQ0FBQztJQUNwQixDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakQsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXZELGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDOUMsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFJlc29sdmVSZW1vdGVVcmxGdW5jdGlvbiA9IChcbiAgcmVtb3RlTmFtZTogc3RyaW5nXG4pID0+IHN0cmluZyB8IFByb21pc2U8c3RyaW5nPjtcblxuZGVjbGFyZSBjb25zdCBfX3dlYnBhY2tfaW5pdF9zaGFyaW5nX186IChzY29wZTogJ2RlZmF1bHQnKSA9PiBQcm9taXNlPHZvaWQ+O1xuZGVjbGFyZSBjb25zdCBfX3dlYnBhY2tfc2hhcmVfc2NvcGVzX186IHsgZGVmYXVsdDogdW5rbm93biB9O1xuXG5sZXQgcmVzb2x2ZVJlbW90ZVVybDogUmVzb2x2ZVJlbW90ZVVybEZ1bmN0aW9uO1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0UmVtb3RlVXJsUmVzb2x2ZXIoXG4gIF9yZXNvbHZlUmVtb3RlVXJsOiBSZXNvbHZlUmVtb3RlVXJsRnVuY3Rpb25cbikge1xuICByZXNvbHZlUmVtb3RlVXJsID0gX3Jlc29sdmVSZW1vdGVVcmw7XG59XG5cbmxldCByZW1vdGVVcmxEZWZpbml0aW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldFJlbW90ZURlZmluaXRpb25zKGRlZmluaXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSB7XG4gIHJlbW90ZVVybERlZmluaXRpb25zID0gZGVmaW5pdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRSZW1vdGVEZWZpbml0aW9uKHJlbW90ZU5hbWU6IHN0cmluZywgcmVtb3RlVXJsOiBzdHJpbmcpIHtcbiAgcmVtb3RlVXJsRGVmaW5pdGlvbnMgPz89IHt9O1xuICByZW1vdGVVcmxEZWZpbml0aW9uc1tyZW1vdGVOYW1lXSA9IHJlbW90ZVVybDtcbn1cblxubGV0IHJlbW90ZU1vZHVsZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCB1bmtub3duPigpO1xubGV0IHJlbW90ZUNvbnRhaW5lck1hcCA9IG5ldyBNYXA8c3RyaW5nLCB1bmtub3duPigpO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFJlbW90ZU1vZHVsZShyZW1vdGVOYW1lOiBzdHJpbmcsIG1vZHVsZU5hbWU6IHN0cmluZykge1xuICBjb25zdCByZW1vdGVNb2R1bGVLZXkgPSBgJHtyZW1vdGVOYW1lfToke21vZHVsZU5hbWV9YDtcbiAgaWYgKHJlbW90ZU1vZHVsZU1hcC5oYXMocmVtb3RlTW9kdWxlS2V5KSkge1xuICAgIHJldHVybiByZW1vdGVNb2R1bGVNYXAuZ2V0KHJlbW90ZU1vZHVsZUtleSk7XG4gIH1cblxuICBjb25zdCBjb250YWluZXIgPSByZW1vdGVDb250YWluZXJNYXAuaGFzKHJlbW90ZU5hbWUpXG4gICAgPyByZW1vdGVDb250YWluZXJNYXAuZ2V0KHJlbW90ZU5hbWUpXG4gICAgOiBhd2FpdCBsb2FkUmVtb3RlQ29udGFpbmVyKHJlbW90ZU5hbWUpO1xuXG4gIGNvbnN0IGZhY3RvcnkgPSBhd2FpdCBjb250YWluZXIuZ2V0KG1vZHVsZU5hbWUpO1xuICBjb25zdCBNb2R1bGUgPSBmYWN0b3J5KCk7XG5cbiAgcmVtb3RlTW9kdWxlTWFwLnNldChyZW1vdGVNb2R1bGVLZXksIE1vZHVsZSk7XG5cbiAgcmV0dXJuIE1vZHVsZTtcbn1cblxuZnVuY3Rpb24gbG9hZE1vZHVsZSh1cmw6IHN0cmluZykge1xuICByZXR1cm4gaW1wb3J0KC8qIHdlYnBhY2tJZ25vcmU6dHJ1ZSAqLyB1cmwpO1xufVxuXG5sZXQgaW5pdGlhbFNoYXJpbmdTY29wZUNyZWF0ZWQgPSBmYWxzZTtcblxuYXN5bmMgZnVuY3Rpb24gbG9hZFJlbW90ZUNvbnRhaW5lcihyZW1vdGVOYW1lOiBzdHJpbmcpIHtcbiAgaWYgKCFyZXNvbHZlUmVtb3RlVXJsICYmICFyZW1vdGVVcmxEZWZpbml0aW9ucykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdDYWxsIHNldFJlbW90ZURlZmluaXRpb25zIG9yIHNldFJlbW90ZVVybFJlc29sdmVyIHRvIGFsbG93IER5bmFtaWMgRmVkZXJhdGlvbiB0byBmaW5kIHRoZSByZW1vdGUgYXBwcyBjb3JyZWN0bHkuJ1xuICAgICk7XG4gIH1cblxuICBpZiAoIWluaXRpYWxTaGFyaW5nU2NvcGVDcmVhdGVkKSB7XG4gICAgaW5pdGlhbFNoYXJpbmdTY29wZUNyZWF0ZWQgPSB0cnVlO1xuICAgIGF3YWl0IF9fd2VicGFja19pbml0X3NoYXJpbmdfXygnZGVmYXVsdCcpO1xuICB9XG5cbiAgY29uc3QgcmVtb3RlVXJsID0gcmVtb3RlVXJsRGVmaW5pdGlvbnNcbiAgICA/IHJlbW90ZVVybERlZmluaXRpb25zW3JlbW90ZU5hbWVdXG4gICAgOiBhd2FpdCByZXNvbHZlUmVtb3RlVXJsKHJlbW90ZU5hbWUpO1xuXG4gIGxldCBjb250YWluZXJVcmwgPSByZW1vdGVVcmw7XG4gIGlmICghcmVtb3RlVXJsLmVuZHNXaXRoKCcubWpzJykgJiYgIXJlbW90ZVVybC5lbmRzV2l0aCgnLmpzJykpIHtcbiAgICBjb250YWluZXJVcmwgPSBgJHtyZW1vdGVVcmx9JHtcbiAgICAgIHJlbW90ZVVybC5lbmRzV2l0aCgnLycpID8gJycgOiAnLydcbiAgICB9cmVtb3RlRW50cnkubWpzYDtcbiAgfVxuXG4gIGNvbnN0IGNvbnRhaW5lciA9IGF3YWl0IGxvYWRNb2R1bGUoY29udGFpbmVyVXJsKTtcbiAgYXdhaXQgY29udGFpbmVyLmluaXQoX193ZWJwYWNrX3NoYXJlX3Njb3Blc19fLmRlZmF1bHQpO1xuXG4gIHJlbW90ZUNvbnRhaW5lck1hcC5zZXQocmVtb3RlTmFtZSwgY29udGFpbmVyKTtcbiAgcmV0dXJuIGNvbnRhaW5lcjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtYW5ndWxhci1tZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbWYvbngtYW5ndWxhci1tZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtYW5ndWxhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbngtYW5ndWxhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
import { ROUTER_NAVIGATION } from '@ngrx/router-store';
|
|
2
|
+
import { isObservable, of } from 'rxjs';
|
|
3
|
+
import { catchError, concatMap, filter, groupBy, map, mergeMap, switchMap, } from 'rxjs/operators';
|
|
4
|
+
/**
|
|
5
|
+
* @whatItDoes Handles pessimistic updates (updating the server first).
|
|
6
|
+
*
|
|
7
|
+
* Updating the server, when implemented naively, suffers from race conditions and poor error handling.
|
|
8
|
+
*
|
|
9
|
+
* `pessimisticUpdate` addresses these problems. It runs all fetches in order, which removes race conditions
|
|
10
|
+
* and forces the developer to handle errors.
|
|
11
|
+
*
|
|
12
|
+
* ## Example:
|
|
13
|
+
*
|
|
14
|
+
* ```typescript
|
|
15
|
+
* @Injectable()
|
|
16
|
+
* class TodoEffects {
|
|
17
|
+
* updateTodo$ = createEffect(() =>
|
|
18
|
+
* this.actions$.pipe(
|
|
19
|
+
* ofType('UPDATE_TODO'),
|
|
20
|
+
* pessimisticUpdate({
|
|
21
|
+
* // provides an action
|
|
22
|
+
* run: (action: UpdateTodo) => {
|
|
23
|
+
* // update the backend first, and then dispatch an action that will
|
|
24
|
+
* // update the client side
|
|
25
|
+
* return this.backend.updateTodo(action.todo.id, action.todo).pipe(
|
|
26
|
+
* map((updated) => ({
|
|
27
|
+
* type: 'UPDATE_TODO_SUCCESS',
|
|
28
|
+
* todo: updated,
|
|
29
|
+
* }))
|
|
30
|
+
* );
|
|
31
|
+
* },
|
|
32
|
+
* onError: (action: UpdateTodo, error: any) => {
|
|
33
|
+
* // we don't need to undo the changes on the client side.
|
|
34
|
+
* // we can dispatch an error, or simply log the error here and return `null`
|
|
35
|
+
* return null;
|
|
36
|
+
* },
|
|
37
|
+
* })
|
|
38
|
+
* )
|
|
39
|
+
* );
|
|
40
|
+
*
|
|
41
|
+
* constructor(private actions$: Actions, private backend: Backend) {}
|
|
42
|
+
* }
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* Note that if you don't return a new action from the run callback, you must set the dispatch property
|
|
46
|
+
* of the effect to false, like this:
|
|
47
|
+
*
|
|
48
|
+
* ```typescript
|
|
49
|
+
* class TodoEffects {
|
|
50
|
+
* updateTodo$ = createEffect(() =>
|
|
51
|
+
* this.actions$.pipe(
|
|
52
|
+
* //...
|
|
53
|
+
* ), { dispatch: false }
|
|
54
|
+
* );
|
|
55
|
+
* }
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* @param opts
|
|
59
|
+
*
|
|
60
|
+
* @deprecated This will be removed in Nx v21. Import `pessimisticUpdate` from `@ngrx/router-store/data-persistence` instead.
|
|
61
|
+
*/
|
|
62
|
+
export function pessimisticUpdate(opts) {
|
|
63
|
+
return (source) => {
|
|
64
|
+
return source.pipe(mapActionAndState(), concatMap(runWithErrorHandling(opts.run, opts.onError)));
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* @whatItDoes Handles optimistic updates (updating the client first).
|
|
69
|
+
*
|
|
70
|
+
* It runs all fetches in order, which removes race conditions and forces the developer to handle errors.
|
|
71
|
+
*
|
|
72
|
+
* When using `optimisticUpdate`, in case of a failure, the developer has already updated the state locally,
|
|
73
|
+
* so the developer must provide an undo action.
|
|
74
|
+
*
|
|
75
|
+
* The error handling must be done in the callback, or by means of the undo action.
|
|
76
|
+
*
|
|
77
|
+
* ## Example:
|
|
78
|
+
*
|
|
79
|
+
* ```typescript
|
|
80
|
+
* @Injectable()
|
|
81
|
+
* class TodoEffects {
|
|
82
|
+
* updateTodo$ = createEffect(() =>
|
|
83
|
+
* this.actions$.pipe(
|
|
84
|
+
* ofType('UPDATE_TODO'),
|
|
85
|
+
* optimisticUpdate({
|
|
86
|
+
* // provides an action
|
|
87
|
+
* run: (action: UpdateTodo) => {
|
|
88
|
+
* return this.backend.updateTodo(action.todo.id, action.todo).pipe(
|
|
89
|
+
* mapTo({
|
|
90
|
+
* type: 'UPDATE_TODO_SUCCESS',
|
|
91
|
+
* })
|
|
92
|
+
* );
|
|
93
|
+
* },
|
|
94
|
+
* undoAction: (action: UpdateTodo, error: any) => {
|
|
95
|
+
* // dispatch an undo action to undo the changes in the client state
|
|
96
|
+
* return {
|
|
97
|
+
* type: 'UNDO_TODO_UPDATE',
|
|
98
|
+
* todo: action.todo,
|
|
99
|
+
* };
|
|
100
|
+
* },
|
|
101
|
+
* })
|
|
102
|
+
* )
|
|
103
|
+
* );
|
|
104
|
+
*
|
|
105
|
+
* constructor(private actions$: Actions, private backend: Backend) {}
|
|
106
|
+
* }
|
|
107
|
+
* ```
|
|
108
|
+
*
|
|
109
|
+
* Note that if you don't return a new action from the run callback, you must set the dispatch property
|
|
110
|
+
* of the effect to false, like this:
|
|
111
|
+
*
|
|
112
|
+
* ```typescript
|
|
113
|
+
* class TodoEffects {
|
|
114
|
+
* updateTodo$ = createEffect(() =>
|
|
115
|
+
* this.actions$.pipe(
|
|
116
|
+
* //...
|
|
117
|
+
* ), { dispatch: false }
|
|
118
|
+
* );
|
|
119
|
+
* }
|
|
120
|
+
* ```
|
|
121
|
+
*
|
|
122
|
+
* @param opts
|
|
123
|
+
*
|
|
124
|
+
* @deprecated This will be removed in Nx v21. Import `optimisticUpdate` from `@ngrx/router-store/data-persistence` instead.
|
|
125
|
+
*/
|
|
126
|
+
export function optimisticUpdate(opts) {
|
|
127
|
+
return (source) => {
|
|
128
|
+
return source.pipe(mapActionAndState(), concatMap(runWithErrorHandling(opts.run, opts.undoAction)));
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* @whatItDoes Handles data fetching.
|
|
133
|
+
*
|
|
134
|
+
* Data fetching implemented naively suffers from race conditions and poor error handling.
|
|
135
|
+
*
|
|
136
|
+
* `fetch` addresses these problems. It runs all fetches in order, which removes race conditions
|
|
137
|
+
* and forces the developer to handle errors.
|
|
138
|
+
*
|
|
139
|
+
* ## Example:
|
|
140
|
+
*
|
|
141
|
+
* ```typescript
|
|
142
|
+
* @Injectable()
|
|
143
|
+
* class TodoEffects {
|
|
144
|
+
* loadTodos$ = createEffect(() =>
|
|
145
|
+
* this.actions$.pipe(
|
|
146
|
+
* ofType('GET_TODOS'),
|
|
147
|
+
* fetch({
|
|
148
|
+
* // provides an action
|
|
149
|
+
* run: (a: GetTodos) => {
|
|
150
|
+
* return this.backend.getAll().pipe(
|
|
151
|
+
* map((response) => ({
|
|
152
|
+
* type: 'TODOS',
|
|
153
|
+
* todos: response.todos,
|
|
154
|
+
* }))
|
|
155
|
+
* );
|
|
156
|
+
* },
|
|
157
|
+
* onError: (action: GetTodos, error: any) => {
|
|
158
|
+
* // dispatch an undo action to undo the changes in the client state
|
|
159
|
+
* return null;
|
|
160
|
+
* },
|
|
161
|
+
* })
|
|
162
|
+
* )
|
|
163
|
+
* );
|
|
164
|
+
*
|
|
165
|
+
* constructor(private actions$: Actions, private backend: Backend) {}
|
|
166
|
+
* }
|
|
167
|
+
* ```
|
|
168
|
+
*
|
|
169
|
+
* This is correct, but because it set the concurrency to 1, it may not be performant.
|
|
170
|
+
*
|
|
171
|
+
* To fix that, you can provide the `id` function, like this:
|
|
172
|
+
*
|
|
173
|
+
* ```typescript
|
|
174
|
+
* @Injectable()
|
|
175
|
+
* class TodoEffects {
|
|
176
|
+
* loadTodo$ = createEffect(() =>
|
|
177
|
+
* this.actions$.pipe(
|
|
178
|
+
* ofType('GET_TODO'),
|
|
179
|
+
* fetch({
|
|
180
|
+
* id: (todo: GetTodo) => {
|
|
181
|
+
* return todo.id;
|
|
182
|
+
* },
|
|
183
|
+
* // provides an action
|
|
184
|
+
* run: (todo: GetTodo) => {
|
|
185
|
+
* return this.backend.getTodo(todo.id).map((response) => ({
|
|
186
|
+
* type: 'LOAD_TODO_SUCCESS',
|
|
187
|
+
* todo: response.todo,
|
|
188
|
+
* }));
|
|
189
|
+
* },
|
|
190
|
+
* onError: (action: GetTodo, error: any) => {
|
|
191
|
+
* // dispatch an undo action to undo the changes in the client state
|
|
192
|
+
* return null;
|
|
193
|
+
* },
|
|
194
|
+
* })
|
|
195
|
+
* )
|
|
196
|
+
* );
|
|
197
|
+
*
|
|
198
|
+
* constructor(private actions$: Actions, private backend: Backend) {}
|
|
199
|
+
* }
|
|
200
|
+
* ```
|
|
201
|
+
*
|
|
202
|
+
* With this setup, the requests for Todo 1 will run concurrently with the requests for Todo 2.
|
|
203
|
+
*
|
|
204
|
+
* In addition, if there are multiple requests for Todo 1 scheduled, it will only run the last one.
|
|
205
|
+
*
|
|
206
|
+
* @param opts
|
|
207
|
+
*
|
|
208
|
+
* @deprecated This will be removed in Nx v21. Import `fetch` from `@ngrx/router-store/data-persistence` instead.
|
|
209
|
+
*/
|
|
210
|
+
export function fetch(opts) {
|
|
211
|
+
return (source) => {
|
|
212
|
+
if (opts.id) {
|
|
213
|
+
const groupedFetches = source.pipe(mapActionAndState(), groupBy(([action, ...store]) => {
|
|
214
|
+
return opts.id(action, ...store);
|
|
215
|
+
}));
|
|
216
|
+
return groupedFetches.pipe(mergeMap((pairs) => pairs.pipe(switchMap(runWithErrorHandling(opts.run, opts.onError)))));
|
|
217
|
+
}
|
|
218
|
+
return source.pipe(mapActionAndState(), concatMap(runWithErrorHandling(opts.run, opts.onError)));
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* @whatItDoes Handles data fetching as part of router navigation.
|
|
223
|
+
*
|
|
224
|
+
* Data fetching implemented naively suffers from race conditions and poor error handling.
|
|
225
|
+
*
|
|
226
|
+
* `navigation` addresses these problems.
|
|
227
|
+
*
|
|
228
|
+
* It checks if an activated router state contains the passed in component type, and, if it does, runs the `run`
|
|
229
|
+
* callback. It provides the activated snapshot associated with the component and the current state. And it only runs
|
|
230
|
+
* the last request.
|
|
231
|
+
*
|
|
232
|
+
* ## Example:
|
|
233
|
+
*
|
|
234
|
+
* ```typescript
|
|
235
|
+
* @Injectable()
|
|
236
|
+
* class TodoEffects {
|
|
237
|
+
* loadTodo$ = createEffect(() =>
|
|
238
|
+
* this.actions$.pipe(
|
|
239
|
+
* // listens for the routerNavigation action from @ngrx/router-store
|
|
240
|
+
* navigation(TodoComponent, {
|
|
241
|
+
* run: (activatedRouteSnapshot: ActivatedRouteSnapshot) => {
|
|
242
|
+
* return this.backend
|
|
243
|
+
* .fetchTodo(activatedRouteSnapshot.params['id'])
|
|
244
|
+
* .pipe(
|
|
245
|
+
* map((todo) => ({
|
|
246
|
+
* type: 'LOAD_TODO_SUCCESS',
|
|
247
|
+
* todo: todo,
|
|
248
|
+
* }))
|
|
249
|
+
* );
|
|
250
|
+
* },
|
|
251
|
+
* onError: (
|
|
252
|
+
* activatedRouteSnapshot: ActivatedRouteSnapshot,
|
|
253
|
+
* error: any
|
|
254
|
+
* ) => {
|
|
255
|
+
* // we can log and error here and return null
|
|
256
|
+
* // we can also navigate back
|
|
257
|
+
* return null;
|
|
258
|
+
* },
|
|
259
|
+
* })
|
|
260
|
+
* )
|
|
261
|
+
* );
|
|
262
|
+
*
|
|
263
|
+
* constructor(private actions$: Actions, private backend: Backend) {}
|
|
264
|
+
* }
|
|
265
|
+
* ```
|
|
266
|
+
*
|
|
267
|
+
* @param component
|
|
268
|
+
* @param opts
|
|
269
|
+
*
|
|
270
|
+
* @deprecated This will be removed in Nx v21. Import `navigation` from `@ngrx/router-store/data-persistence` instead.
|
|
271
|
+
*/
|
|
272
|
+
export function navigation(component, opts) {
|
|
273
|
+
return (source) => {
|
|
274
|
+
const nav = source.pipe(mapActionAndState(), filter(([action]) => isStateSnapshot(action)), map(([action, ...slices]) => {
|
|
275
|
+
if (!isStateSnapshot(action)) {
|
|
276
|
+
// Because of the above filter we'll never get here,
|
|
277
|
+
// but this properly type narrows `action`
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
return [
|
|
281
|
+
findSnapshot(component, action.payload.routerState.root),
|
|
282
|
+
...slices,
|
|
283
|
+
];
|
|
284
|
+
}), filter(([snapshot]) => !!snapshot));
|
|
285
|
+
return nav.pipe(switchMap(runWithErrorHandling(opts.run, opts.onError)));
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
function isStateSnapshot(action) {
|
|
289
|
+
return action.type === ROUTER_NAVIGATION;
|
|
290
|
+
}
|
|
291
|
+
function runWithErrorHandling(run, onError) {
|
|
292
|
+
return ([action, ...slices]) => {
|
|
293
|
+
try {
|
|
294
|
+
const r = wrapIntoObservable(run(action, ...slices));
|
|
295
|
+
return r.pipe(catchError((e) => wrapIntoObservable(onError(action, e))));
|
|
296
|
+
}
|
|
297
|
+
catch (e) {
|
|
298
|
+
return wrapIntoObservable(onError(action, e));
|
|
299
|
+
}
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* @whatItDoes maps Observable<Action | [Action, State]> to
|
|
304
|
+
* Observable<[Action, State]>
|
|
305
|
+
*/
|
|
306
|
+
function mapActionAndState() {
|
|
307
|
+
return (source) => {
|
|
308
|
+
return source.pipe(map((value) => normalizeActionAndState(value)));
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* @whatItDoes Normalizes either a bare action or an array of action and slices
|
|
313
|
+
* into an array of action and slices (or undefined)
|
|
314
|
+
*/
|
|
315
|
+
function normalizeActionAndState(args) {
|
|
316
|
+
let action, slices;
|
|
317
|
+
if (args instanceof Array) {
|
|
318
|
+
[action, ...slices] = args;
|
|
319
|
+
}
|
|
320
|
+
else {
|
|
321
|
+
slices = [];
|
|
322
|
+
action = args;
|
|
323
|
+
}
|
|
324
|
+
return [action, ...slices];
|
|
325
|
+
}
|
|
326
|
+
function findSnapshot(component, s) {
|
|
327
|
+
if (s.routeConfig && s.routeConfig.component === component) {
|
|
328
|
+
return s;
|
|
329
|
+
}
|
|
330
|
+
for (const c of s.children) {
|
|
331
|
+
const ss = findSnapshot(component, c);
|
|
332
|
+
if (ss) {
|
|
333
|
+
return ss;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
return null;
|
|
337
|
+
}
|
|
338
|
+
function wrapIntoObservable(obj) {
|
|
339
|
+
if (isObservable(obj)) {
|
|
340
|
+
return obj;
|
|
341
|
+
}
|
|
342
|
+
else if (!obj) {
|
|
343
|
+
return of();
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
return of(obj);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1wZXJzaXN0ZW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvc3JjL3J1bnRpbWUvbngvZGF0YS1wZXJzaXN0ZW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUd2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQ0wsVUFBVSxFQUNWLFNBQVMsRUFDVCxNQUFNLEVBQ04sT0FBTyxFQUNQLEdBQUcsRUFDSCxRQUFRLEVBQ1IsU0FBUyxHQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFxQ3hCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5REc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQy9CLElBQWlDO0lBRWpDLE9BQU8sQ0FBQyxNQUFnQyxFQUFzQixFQUFFO1FBQzlELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FDaEIsaUJBQWlCLEVBQUUsRUFDbkIsU0FBUyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQ3hELENBQUM7SUFDSixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwREc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLElBQWdDO0lBRWhDLE9BQU8sQ0FBQyxNQUFnQyxFQUFzQixFQUFFO1FBQzlELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FDaEIsaUJBQWlCLEVBQUUsRUFDbkIsU0FBUyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQzNELENBQUM7SUFDSixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThFRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQ25CLElBQXFCO0lBRXJCLE9BQU8sQ0FBQyxNQUFnQyxFQUFzQixFQUFFO1FBQzlELElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1osTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FDaEMsaUJBQWlCLEVBQUUsRUFDbkIsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxFQUFFO2dCQUM3QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDbkMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztZQUVGLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FDeEIsUUFBUSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDakIsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUNwRSxDQUNGLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUNoQixpQkFBaUIsRUFBRSxFQUNuQixTQUFTLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FDeEQsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrREc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUN4QixTQUFvQixFQUNwQixJQUE2QjtJQUU3QixPQUFPLENBQUMsTUFBZ0MsRUFBRSxFQUFFO1FBQzFDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQ3JCLGlCQUFpQixFQUFFLEVBQ25CLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUM3QyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUM3QixvREFBb0Q7Z0JBQ3BELDBDQUEwQztnQkFDMUMsT0FBTztZQUNULENBQUM7WUFFRCxPQUFPO2dCQUNMLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO2dCQUN4RCxHQUFHLE1BQU07YUFDd0IsQ0FBQztRQUN0QyxDQUFDLENBQUMsRUFDRixNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQ25DLENBQUM7UUFFRixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQ3RCLE1BQVc7SUFFWCxPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssaUJBQWlCLENBQUM7QUFDM0MsQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQzNCLEdBQTBELEVBQzFELE9BQVk7SUFFWixPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQVksRUFBaUIsRUFBRTtRQUN2RCxJQUFJLENBQUM7WUFDSCxNQUFNLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNyRCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNFLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQztJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLGlCQUFpQjtJQUN4QixPQUFPLENBQUMsTUFBa0QsRUFBRSxFQUFFO1FBQzVELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FDaEIsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQWMsQ0FBQyxDQUM1RCxDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsdUJBQXVCLENBQzlCLElBQW9DO0lBRXBDLElBQUksTUFBUyxFQUFFLE1BQVMsQ0FBQztJQUV6QixJQUFJLElBQUksWUFBWSxLQUFLLEVBQUUsQ0FBQztRQUMxQixDQUFDLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU0sR0FBRyxFQUFPLENBQUM7UUFDakIsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FDbkIsU0FBb0IsRUFDcEIsQ0FBeUI7SUFFekIsSUFBSSxDQUFDLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQzNELE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUNELEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzNCLE1BQU0sRUFBRSxHQUFHLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNQLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFJLEdBQTZCO0lBQzFELElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDdEIsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO1NBQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLE9BQU8sRUFBRSxFQUFFLENBQUM7SUFDZCxDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sRUFBRSxDQUFDLEdBQVEsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7XG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIFJvdXRlclN0YXRlU25hcHNob3QsXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgdHlwZSB7IFJvdXRlck5hdmlnYXRpb25BY3Rpb24gfSBmcm9tICdAbmdyeC9yb3V0ZXItc3RvcmUnO1xuaW1wb3J0IHsgUk9VVEVSX05BVklHQVRJT04gfSBmcm9tICdAbmdyeC9yb3V0ZXItc3RvcmUnO1xuaW1wb3J0IHR5cGUgeyBBY3Rpb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgdHlwZSB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGNhdGNoRXJyb3IsXG4gIGNvbmNhdE1hcCxcbiAgZmlsdGVyLFxuICBncm91cEJ5LFxuICBtYXAsXG4gIG1lcmdlTWFwLFxuICBzd2l0Y2hNYXAsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGludGVyZmFjZSBQZXNzaW1pc3RpY1VwZGF0ZU9wdHM8VCBleHRlbmRzIEFycmF5PHVua25vd24+LCBBPiB7XG4gIHJ1bihhOiBBLCAuLi5zbGljZXM6IFsuLi5UXSk6IE9ic2VydmFibGU8QWN0aW9uPiB8IEFjdGlvbiB8IHZvaWQ7XG4gIG9uRXJyb3IoYTogQSwgZTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHwgYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9wdGltaXN0aWNVcGRhdGVPcHRzPFQgZXh0ZW5kcyBBcnJheTx1bmtub3duPiwgQT4ge1xuICBydW4oYTogQSwgLi4uc2xpY2VzOiBbLi4uVF0pOiBPYnNlcnZhYmxlPEFjdGlvbj4gfCBBY3Rpb24gfCB2b2lkO1xuICB1bmRvQWN0aW9uKGE6IEEsIGU6IGFueSk6IE9ic2VydmFibGU8QWN0aW9uPiB8IEFjdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZXRjaE9wdHM8VCBleHRlbmRzIEFycmF5PHVua25vd24+LCBBPiB7XG4gIGlkPyhhOiBBLCAuLi5zbGljZXM6IFsuLi5UXSk6IGFueTtcbiAgcnVuKGE6IEEsIC4uLnNsaWNlczogWy4uLlRdKTogT2JzZXJ2YWJsZTxBY3Rpb24+IHwgQWN0aW9uIHwgdm9pZDtcbiAgb25FcnJvcj8oYTogQSwgZTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHwgYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhhbmRsZU5hdmlnYXRpb25PcHRzPFQgZXh0ZW5kcyBBcnJheTx1bmtub3duPj4ge1xuICBydW4oXG4gICAgYTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICAuLi5zbGljZXM6IFsuLi5UXVxuICApOiBPYnNlcnZhYmxlPEFjdGlvbj4gfCBBY3Rpb24gfCB2b2lkO1xuICBvbkVycm9yPyhhOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBlOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4gfCBhbnk7XG59XG5cbmV4cG9ydCB0eXBlIEFjdGlvbk9yQWN0aW9uV2l0aFN0YXRlczxUIGV4dGVuZHMgQXJyYXk8dW5rbm93bj4sIEE+ID1cbiAgfCBBXG4gIHwgW0EsIC4uLlRdO1xuZXhwb3J0IHR5cGUgQWN0aW9uT3JBY3Rpb25XaXRoU3RhdGU8VCwgQT4gPSBBY3Rpb25PckFjdGlvbldpdGhTdGF0ZXM8W1RdLCBBPjtcbmV4cG9ydCB0eXBlIEFjdGlvblN0YXRlc1N0cmVhbTxUIGV4dGVuZHMgQXJyYXk8dW5rbm93bj4sIEE+ID0gT2JzZXJ2YWJsZTxcbiAgQWN0aW9uT3JBY3Rpb25XaXRoU3RhdGVzPFQsIEE+XG4+O1xuZXhwb3J0IHR5cGUgQWN0aW9uU3RhdGVTdHJlYW08VCwgQT4gPSBPYnNlcnZhYmxlPFxuICBBY3Rpb25PckFjdGlvbldpdGhTdGF0ZXM8W1RdLCBBPlxuPjtcblxuLyoqXG4gKiBAd2hhdEl0RG9lcyBIYW5kbGVzIHBlc3NpbWlzdGljIHVwZGF0ZXMgKHVwZGF0aW5nIHRoZSBzZXJ2ZXIgZmlyc3QpLlxuICpcbiAqIFVwZGF0aW5nIHRoZSBzZXJ2ZXIsIHdoZW4gaW1wbGVtZW50ZWQgbmFpdmVseSwgc3VmZmVycyBmcm9tIHJhY2UgY29uZGl0aW9ucyBhbmQgcG9vciBlcnJvciBoYW5kbGluZy5cbiAqXG4gKiBgcGVzc2ltaXN0aWNVcGRhdGVgIGFkZHJlc3NlcyB0aGVzZSBwcm9ibGVtcy4gSXQgcnVucyBhbGwgZmV0Y2hlcyBpbiBvcmRlciwgd2hpY2ggcmVtb3ZlcyByYWNlIGNvbmRpdGlvbnNcbiAqIGFuZCBmb3JjZXMgdGhlIGRldmVsb3BlciB0byBoYW5kbGUgZXJyb3JzLlxuICpcbiAqICMjIEV4YW1wbGU6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogQEluamVjdGFibGUoKVxuICogY2xhc3MgVG9kb0VmZmVjdHMge1xuICogICB1cGRhdGVUb2RvJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICogICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAqICAgICAgIG9mVHlwZSgnVVBEQVRFX1RPRE8nKSxcbiAqICAgICAgIHBlc3NpbWlzdGljVXBkYXRlKHtcbiAqICAgICAgICAgLy8gcHJvdmlkZXMgYW4gYWN0aW9uXG4gKiAgICAgICAgIHJ1bjogKGFjdGlvbjogVXBkYXRlVG9kbykgPT4ge1xuICogICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgYmFja2VuZCBmaXJzdCwgYW5kIHRoZW4gZGlzcGF0Y2ggYW4gYWN0aW9uIHRoYXQgd2lsbFxuICogICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgY2xpZW50IHNpZGVcbiAqICAgICAgICAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnVwZGF0ZVRvZG8oYWN0aW9uLnRvZG8uaWQsIGFjdGlvbi50b2RvKS5waXBlKFxuICogICAgICAgICAgICAgbWFwKCh1cGRhdGVkKSA9PiAoe1xuICogICAgICAgICAgICAgICB0eXBlOiAnVVBEQVRFX1RPRE9fU1VDQ0VTUycsXG4gKiAgICAgICAgICAgICAgIHRvZG86IHVwZGF0ZWQsXG4gKiAgICAgICAgICAgICB9KSlcbiAqICAgICAgICAgICApO1xuICogICAgICAgICB9LFxuICogICAgICAgICBvbkVycm9yOiAoYWN0aW9uOiBVcGRhdGVUb2RvLCBlcnJvcjogYW55KSA9PiB7XG4gKiAgICAgICAgICAgLy8gd2UgZG9uJ3QgbmVlZCB0byB1bmRvIHRoZSBjaGFuZ2VzIG9uIHRoZSBjbGllbnQgc2lkZS5cbiAqICAgICAgICAgICAvLyB3ZSBjYW4gZGlzcGF0Y2ggYW4gZXJyb3IsIG9yIHNpbXBseSBsb2cgdGhlIGVycm9yIGhlcmUgYW5kIHJldHVybiBgbnVsbGBcbiAqICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAqICAgICAgICAgfSxcbiAqICAgICAgIH0pXG4gKiAgICAgKVxuICogICApO1xuICpcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9ucywgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kKSB7fVxuICogfVxuICogYGBgXG4gKlxuICogTm90ZSB0aGF0IGlmIHlvdSBkb24ndCByZXR1cm4gYSBuZXcgYWN0aW9uIGZyb20gdGhlIHJ1biBjYWxsYmFjaywgeW91IG11c3Qgc2V0IHRoZSBkaXNwYXRjaCBwcm9wZXJ0eVxuICogb2YgdGhlIGVmZmVjdCB0byBmYWxzZSwgbGlrZSB0aGlzOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIFRvZG9FZmZlY3RzIHtcbiAqICAgdXBkYXRlVG9kbyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAqICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gKiAgICAgICAvLy4uLlxuICogICAgICksIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAqICAgKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBvcHRzXG4gKlxuICogQGRlcHJlY2F0ZWQgVGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gTnggdjIxLiBJbXBvcnQgYHBlc3NpbWlzdGljVXBkYXRlYCBmcm9tIGBAbmdyeC9yb3V0ZXItc3RvcmUvZGF0YS1wZXJzaXN0ZW5jZWAgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBlc3NpbWlzdGljVXBkYXRlPFQgZXh0ZW5kcyBBcnJheTx1bmtub3duPiwgQSBleHRlbmRzIEFjdGlvbj4oXG4gIG9wdHM6IFBlc3NpbWlzdGljVXBkYXRlT3B0czxULCBBPlxuKSB7XG4gIHJldHVybiAoc291cmNlOiBBY3Rpb25TdGF0ZXNTdHJlYW08VCwgQT4pOiBPYnNlcnZhYmxlPEFjdGlvbj4gPT4ge1xuICAgIHJldHVybiBzb3VyY2UucGlwZShcbiAgICAgIG1hcEFjdGlvbkFuZFN0YXRlKCksXG4gICAgICBjb25jYXRNYXAocnVuV2l0aEVycm9ySGFuZGxpbmcob3B0cy5ydW4sIG9wdHMub25FcnJvcikpXG4gICAgKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBAd2hhdEl0RG9lcyBIYW5kbGVzIG9wdGltaXN0aWMgdXBkYXRlcyAodXBkYXRpbmcgdGhlIGNsaWVudCBmaXJzdCkuXG4gKlxuICogSXQgcnVucyBhbGwgZmV0Y2hlcyBpbiBvcmRlciwgd2hpY2ggcmVtb3ZlcyByYWNlIGNvbmRpdGlvbnMgYW5kIGZvcmNlcyB0aGUgZGV2ZWxvcGVyIHRvIGhhbmRsZSBlcnJvcnMuXG4gKlxuICogV2hlbiB1c2luZyBgb3B0aW1pc3RpY1VwZGF0ZWAsIGluIGNhc2Ugb2YgYSBmYWlsdXJlLCB0aGUgZGV2ZWxvcGVyIGhhcyBhbHJlYWR5IHVwZGF0ZWQgdGhlIHN0YXRlIGxvY2FsbHksXG4gKiBzbyB0aGUgZGV2ZWxvcGVyIG11c3QgcHJvdmlkZSBhbiB1bmRvIGFjdGlvbi5cbiAqXG4gKiBUaGUgZXJyb3IgaGFuZGxpbmcgbXVzdCBiZSBkb25lIGluIHRoZSBjYWxsYmFjaywgb3IgYnkgbWVhbnMgb2YgdGhlIHVuZG8gYWN0aW9uLlxuICpcbiAqICMjIEV4YW1wbGU6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogQEluamVjdGFibGUoKVxuICogY2xhc3MgVG9kb0VmZmVjdHMge1xuICogICB1cGRhdGVUb2RvJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICogICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAqICAgICAgIG9mVHlwZSgnVVBEQVRFX1RPRE8nKSxcbiAqICAgICAgIG9wdGltaXN0aWNVcGRhdGUoe1xuICogICAgICAgICAvLyBwcm92aWRlcyBhbiBhY3Rpb25cbiAqICAgICAgICAgcnVuOiAoYWN0aW9uOiBVcGRhdGVUb2RvKSA9PiB7XG4gKiAgICAgICAgICAgcmV0dXJuIHRoaXMuYmFja2VuZC51cGRhdGVUb2RvKGFjdGlvbi50b2RvLmlkLCBhY3Rpb24udG9kbykucGlwZShcbiAqICAgICAgICAgICAgIG1hcFRvKHtcbiAqICAgICAgICAgICAgICAgdHlwZTogJ1VQREFURV9UT0RPX1NVQ0NFU1MnLFxuICogICAgICAgICAgICAgfSlcbiAqICAgICAgICAgICApO1xuICogICAgICAgICB9LFxuICogICAgICAgICB1bmRvQWN0aW9uOiAoYWN0aW9uOiBVcGRhdGVUb2RvLCBlcnJvcjogYW55KSA9PiB7XG4gKiAgICAgICAgICAgLy8gZGlzcGF0Y2ggYW4gdW5kbyBhY3Rpb24gdG8gdW5kbyB0aGUgY2hhbmdlcyBpbiB0aGUgY2xpZW50IHN0YXRlXG4gKiAgICAgICAgICAgcmV0dXJuIHtcbiAqICAgICAgICAgICAgIHR5cGU6ICdVTkRPX1RPRE9fVVBEQVRFJyxcbiAqICAgICAgICAgICAgIHRvZG86IGFjdGlvbi50b2RvLFxuICogICAgICAgICAgIH07XG4gKiAgICAgICAgIH0sXG4gKiAgICAgICB9KVxuICogICAgIClcbiAqICAgKTtcbiAqXG4gKiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYWN0aW9ucyQ6IEFjdGlvbnMsIHByaXZhdGUgYmFja2VuZDogQmFja2VuZCkge31cbiAqIH1cbiAqIGBgYFxuICpcbiAqIE5vdGUgdGhhdCBpZiB5b3UgZG9uJ3QgcmV0dXJuIGEgbmV3IGFjdGlvbiBmcm9tIHRoZSBydW4gY2FsbGJhY2ssIHlvdSBtdXN0IHNldCB0aGUgZGlzcGF0Y2ggcHJvcGVydHlcbiAqIG9mIHRoZSBlZmZlY3QgdG8gZmFsc2UsIGxpa2UgdGhpczpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjbGFzcyBUb2RvRWZmZWN0cyB7XG4gKiAgIHVwZGF0ZVRvZG8kID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gKiAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICogICAgICAgLy8uLi5cbiAqICAgICApLCB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gKiAgICk7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gb3B0c1xuICpcbiAqIEBkZXByZWNhdGVkIFRoaXMgd2lsbCBiZSByZW1vdmVkIGluIE54IHYyMS4gSW1wb3J0IGBvcHRpbWlzdGljVXBkYXRlYCBmcm9tIGBAbmdyeC9yb3V0ZXItc3RvcmUvZGF0YS1wZXJzaXN0ZW5jZWAgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9wdGltaXN0aWNVcGRhdGU8VCBleHRlbmRzIEFycmF5PHVua25vd24+LCBBIGV4dGVuZHMgQWN0aW9uPihcbiAgb3B0czogT3B0aW1pc3RpY1VwZGF0ZU9wdHM8VCwgQT5cbikge1xuICByZXR1cm4gKHNvdXJjZTogQWN0aW9uU3RhdGVzU3RyZWFtPFQsIEE+KTogT2JzZXJ2YWJsZTxBY3Rpb24+ID0+IHtcbiAgICByZXR1cm4gc291cmNlLnBpcGUoXG4gICAgICBtYXBBY3Rpb25BbmRTdGF0ZSgpLFxuICAgICAgY29uY2F0TWFwKHJ1bldpdGhFcnJvckhhbmRsaW5nKG9wdHMucnVuLCBvcHRzLnVuZG9BY3Rpb24pKVxuICAgICk7XG4gIH07XG59XG5cbi8qKlxuICogQHdoYXRJdERvZXMgSGFuZGxlcyBkYXRhIGZldGNoaW5nLlxuICpcbiAqIERhdGEgZmV0Y2hpbmcgaW1wbGVtZW50ZWQgbmFpdmVseSBzdWZmZXJzIGZyb20gcmFjZSBjb25kaXRpb25zIGFuZCBwb29yIGVycm9yIGhhbmRsaW5nLlxuICpcbiAqIGBmZXRjaGAgYWRkcmVzc2VzIHRoZXNlIHByb2JsZW1zLiBJdCBydW5zIGFsbCBmZXRjaGVzIGluIG9yZGVyLCB3aGljaCByZW1vdmVzIHJhY2UgY29uZGl0aW9uc1xuICogYW5kIGZvcmNlcyB0aGUgZGV2ZWxvcGVyIHRvIGhhbmRsZSBlcnJvcnMuXG4gKlxuICogIyMgRXhhbXBsZTpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBASW5qZWN0YWJsZSgpXG4gKiBjbGFzcyBUb2RvRWZmZWN0cyB7XG4gKiAgIGxvYWRUb2RvcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAqICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gKiAgICAgICBvZlR5cGUoJ0dFVF9UT0RPUycpLFxuICogICAgICAgZmV0Y2goe1xuICogICAgICAgICAvLyBwcm92aWRlcyBhbiBhY3Rpb25cbiAqICAgICAgICAgcnVuOiAoYTogR2V0VG9kb3MpID0+IHtcbiAqICAgICAgICAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldEFsbCgpLnBpcGUoXG4gKiAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiAoe1xuICogICAgICAgICAgICAgICB0eXBlOiAnVE9ET1MnLFxuICogICAgICAgICAgICAgICB0b2RvczogcmVzcG9uc2UudG9kb3MsXG4gKiAgICAgICAgICAgICB9KSlcbiAqICAgICAgICAgICApO1xuICogICAgICAgICB9LFxuICogICAgICAgICBvbkVycm9yOiAoYWN0aW9uOiBHZXRUb2RvcywgZXJyb3I6IGFueSkgPT4ge1xuICogICAgICAgICAgIC8vIGRpc3BhdGNoIGFuIHVuZG8gYWN0aW9uIHRvIHVuZG8gdGhlIGNoYW5nZXMgaW4gdGhlIGNsaWVudCBzdGF0ZVxuICogICAgICAgICAgIHJldHVybiBudWxsO1xuICogICAgICAgICB9LFxuICogICAgICAgfSlcbiAqICAgICApXG4gKiAgICk7XG4gKlxuICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFjdGlvbnMkOiBBY3Rpb25zLCBwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmQpIHt9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBUaGlzIGlzIGNvcnJlY3QsIGJ1dCBiZWNhdXNlIGl0IHNldCB0aGUgY29uY3VycmVuY3kgdG8gMSwgaXQgbWF5IG5vdCBiZSBwZXJmb3JtYW50LlxuICpcbiAqIFRvIGZpeCB0aGF0LCB5b3UgY2FuIHByb3ZpZGUgdGhlIGBpZGAgZnVuY3Rpb24sIGxpa2UgdGhpczpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBASW5qZWN0YWJsZSgpXG4gKiBjbGFzcyBUb2RvRWZmZWN0cyB7XG4gKiAgIGxvYWRUb2RvJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICogICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAqICAgICAgIG9mVHlwZSgnR0VUX1RPRE8nKSxcbiAqICAgICAgIGZldGNoKHtcbiAqICAgICAgICAgaWQ6ICh0b2RvOiBHZXRUb2RvKSA9PiB7XG4gKiAgICAgICAgICAgcmV0dXJuIHRvZG8uaWQ7XG4gKiAgICAgICAgIH0sXG4gKiAgICAgICAgIC8vIHByb3ZpZGVzIGFuIGFjdGlvblxuICogICAgICAgICBydW46ICh0b2RvOiBHZXRUb2RvKSA9PiB7XG4gKiAgICAgICAgICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRUb2RvKHRvZG8uaWQpLm1hcCgocmVzcG9uc2UpID0+ICh7XG4gKiAgICAgICAgICAgICB0eXBlOiAnTE9BRF9UT0RPX1NVQ0NFU1MnLFxuICogICAgICAgICAgICAgdG9kbzogcmVzcG9uc2UudG9kbyxcbiAqICAgICAgICAgICB9KSk7XG4gKiAgICAgICAgIH0sXG4gKiAgICAgICAgIG9uRXJyb3I6IChhY3Rpb246IEdldFRvZG8sIGVycm9yOiBhbnkpID0+IHtcbiAqICAgICAgICAgICAvLyBkaXNwYXRjaCBhbiB1bmRvIGFjdGlvbiB0byB1bmRvIHRoZSBjaGFuZ2VzIGluIHRoZSBjbGllbnQgc3RhdGVcbiAqICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAqICAgICAgICAgfSxcbiAqICAgICAgIH0pXG4gKiAgICAgKVxuICogICApO1xuICpcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9ucywgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kKSB7fVxuICogfVxuICogYGBgXG4gKlxuICogV2l0aCB0aGlzIHNldHVwLCB0aGUgcmVxdWVzdHMgZm9yIFRvZG8gMSB3aWxsIHJ1biBjb25jdXJyZW50bHkgd2l0aCB0aGUgcmVxdWVzdHMgZm9yIFRvZG8gMi5cbiAqXG4gKiBJbiBhZGRpdGlvbiwgaWYgdGhlcmUgYXJlIG11bHRpcGxlIHJlcXVlc3RzIGZvciBUb2RvIDEgc2NoZWR1bGVkLCBpdCB3aWxsIG9ubHkgcnVuIHRoZSBsYXN0IG9uZS5cbiAqXG4gKiBAcGFyYW0gb3B0c1xuICpcbiAqIEBkZXByZWNhdGVkIFRoaXMgd2lsbCBiZSByZW1vdmVkIGluIE54IHYyMS4gSW1wb3J0IGBmZXRjaGAgZnJvbSBgQG5ncngvcm91dGVyLXN0b3JlL2RhdGEtcGVyc2lzdGVuY2VgIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmZXRjaDxUIGV4dGVuZHMgQXJyYXk8dW5rbm93bj4sIEEgZXh0ZW5kcyBBY3Rpb24+KFxuICBvcHRzOiBGZXRjaE9wdHM8VCwgQT5cbikge1xuICByZXR1cm4gKHNvdXJjZTogQWN0aW9uU3RhdGVzU3RyZWFtPFQsIEE+KTogT2JzZXJ2YWJsZTxBY3Rpb24+ID0+IHtcbiAgICBpZiAob3B0cy5pZCkge1xuICAgICAgY29uc3QgZ3JvdXBlZEZldGNoZXMgPSBzb3VyY2UucGlwZShcbiAgICAgICAgbWFwQWN0aW9uQW5kU3RhdGUoKSxcbiAgICAgICAgZ3JvdXBCeSgoW2FjdGlvbiwgLi4uc3RvcmVdKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG9wdHMuaWQoYWN0aW9uLCAuLi5zdG9yZSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gZ3JvdXBlZEZldGNoZXMucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKHBhaXJzKSA9PlxuICAgICAgICAgIHBhaXJzLnBpcGUoc3dpdGNoTWFwKHJ1bldpdGhFcnJvckhhbmRsaW5nKG9wdHMucnVuLCBvcHRzLm9uRXJyb3IpKSlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc291cmNlLnBpcGUoXG4gICAgICBtYXBBY3Rpb25BbmRTdGF0ZSgpLFxuICAgICAgY29uY2F0TWFwKHJ1bldpdGhFcnJvckhhbmRsaW5nKG9wdHMucnVuLCBvcHRzLm9uRXJyb3IpKVxuICAgICk7XG4gIH07XG59XG5cbi8qKlxuICogQHdoYXRJdERvZXMgSGFuZGxlcyBkYXRhIGZldGNoaW5nIGFzIHBhcnQgb2Ygcm91dGVyIG5hdmlnYXRpb24uXG4gKlxuICogRGF0YSBmZXRjaGluZyBpbXBsZW1lbnRlZCBuYWl2ZWx5IHN1ZmZlcnMgZnJvbSByYWNlIGNvbmRpdGlvbnMgYW5kIHBvb3IgZXJyb3IgaGFuZGxpbmcuXG4gKlxuICogYG5hdmlnYXRpb25gIGFkZHJlc3NlcyB0aGVzZSBwcm9ibGVtcy5cbiAqXG4gKiBJdCBjaGVja3MgaWYgYW4gYWN0aXZhdGVkIHJvdXRlciBzdGF0ZSBjb250YWlucyB0aGUgcGFzc2VkIGluIGNvbXBvbmVudCB0eXBlLCBhbmQsIGlmIGl0IGRvZXMsIHJ1bnMgdGhlIGBydW5gXG4gKiBjYWxsYmFjay4gSXQgcHJvdmlkZXMgdGhlIGFjdGl2YXRlZCBzbmFwc2hvdCBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbXBvbmVudCBhbmQgdGhlIGN1cnJlbnQgc3RhdGUuIEFuZCBpdCBvbmx5IHJ1bnNcbiAqIHRoZSBsYXN0IHJlcXVlc3QuXG4gKlxuICogIyMgRXhhbXBsZTpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBASW5qZWN0YWJsZSgpXG4gKiBjbGFzcyBUb2RvRWZmZWN0cyB7XG4gKiAgIGxvYWRUb2RvJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICogICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAqICAgICAgIC8vIGxpc3RlbnMgZm9yIHRoZSByb3V0ZXJOYXZpZ2F0aW9uIGFjdGlvbiBmcm9tIEBuZ3J4L3JvdXRlci1zdG9yZVxuICogICAgICAgbmF2aWdhdGlvbihUb2RvQ29tcG9uZW50LCB7XG4gKiAgICAgICAgIHJ1bjogKGFjdGl2YXRlZFJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpID0+IHtcbiAqICAgICAgICAgICByZXR1cm4gdGhpcy5iYWNrZW5kXG4gKiAgICAgICAgICAgICAuZmV0Y2hUb2RvKGFjdGl2YXRlZFJvdXRlU25hcHNob3QucGFyYW1zWydpZCddKVxuICogICAgICAgICAgICAgLnBpcGUoXG4gKiAgICAgICAgICAgICAgIG1hcCgodG9kbykgPT4gKHtcbiAqICAgICAgICAgICAgICAgICB0eXBlOiAnTE9BRF9UT0RPX1NVQ0NFU1MnLFxuICogICAgICAgICAgICAgICAgIHRvZG86IHRvZG8sXG4gKiAgICAgICAgICAgICAgIH0pKVxuICogICAgICAgICAgICAgKTtcbiAqICAgICAgICAgfSxcbiAqICAgICAgICAgb25FcnJvcjogKFxuICogICAgICAgICAgIGFjdGl2YXRlZFJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gKiAgICAgICAgICAgZXJyb3I6IGFueVxuICogICAgICAgICApID0+IHtcbiAqICAgICAgICAgICAvLyB3ZSBjYW4gbG9nIGFuZCBlcnJvciBoZXJlIGFuZCByZXR1cm4gbnVsbFxuICogICAgICAgICAgIC8vIHdlIGNhbiBhbHNvIG5hdmlnYXRlIGJhY2tcbiAqICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAqICAgICAgICAgfSxcbiAqICAgICAgIH0pXG4gKiAgICAgKVxuICogICApO1xuICpcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9ucywgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kKSB7fVxuICogfVxuICogYGBgXG4gKlxuICogQHBhcmFtIGNvbXBvbmVudFxuICogQHBhcmFtIG9wdHNcbiAqXG4gKiBAZGVwcmVjYXRlZCBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiBOeCB2MjEuIEltcG9ydCBgbmF2aWdhdGlvbmAgZnJvbSBgQG5ncngvcm91dGVyLXN0b3JlL2RhdGEtcGVyc2lzdGVuY2VgIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuYXZpZ2F0aW9uPFQgZXh0ZW5kcyBBcnJheTx1bmtub3duPiwgQSBleHRlbmRzIEFjdGlvbj4oXG4gIGNvbXBvbmVudDogVHlwZTxhbnk+LFxuICBvcHRzOiBIYW5kbGVOYXZpZ2F0aW9uT3B0czxUPlxuKSB7XG4gIHJldHVybiAoc291cmNlOiBBY3Rpb25TdGF0ZXNTdHJlYW08VCwgQT4pID0+IHtcbiAgICBjb25zdCBuYXYgPSBzb3VyY2UucGlwZShcbiAgICAgIG1hcEFjdGlvbkFuZFN0YXRlKCksXG4gICAgICBmaWx0ZXIoKFthY3Rpb25dKSA9PiBpc1N0YXRlU25hcHNob3QoYWN0aW9uKSksXG4gICAgICBtYXAoKFthY3Rpb24sIC4uLnNsaWNlc10pID0+IHtcbiAgICAgICAgaWYgKCFpc1N0YXRlU25hcHNob3QoYWN0aW9uKSkge1xuICAgICAgICAgIC8vIEJlY2F1c2Ugb2YgdGhlIGFib3ZlIGZpbHRlciB3ZSdsbCBuZXZlciBnZXQgaGVyZSxcbiAgICAgICAgICAvLyBidXQgdGhpcyBwcm9wZXJseSB0eXBlIG5hcnJvd3MgYGFjdGlvbmBcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIGZpbmRTbmFwc2hvdChjb21wb25lbnQsIGFjdGlvbi5wYXlsb2FkLnJvdXRlclN0YXRlLnJvb3QpLFxuICAgICAgICAgIC4uLnNsaWNlcyxcbiAgICAgICAgXSBhcyBbQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgLi4uVF07XG4gICAgICB9KSxcbiAgICAgIGZpbHRlcigoW3NuYXBzaG90XSkgPT4gISFzbmFwc2hvdClcbiAgICApO1xuXG4gICAgcmV0dXJuIG5hdi5waXBlKHN3aXRjaE1hcChydW5XaXRoRXJyb3JIYW5kbGluZyhvcHRzLnJ1biwgb3B0cy5vbkVycm9yKSkpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBpc1N0YXRlU25hcHNob3QoXG4gIGFjdGlvbjogYW55XG4pOiBhY3Rpb24gaXMgUm91dGVyTmF2aWdhdGlvbkFjdGlvbjxSb3V0ZXJTdGF0ZVNuYXBzaG90PiB7XG4gIHJldHVybiBhY3Rpb24udHlwZSA9PT0gUk9VVEVSX05BVklHQVRJT047XG59XG5cbmZ1bmN0aW9uIHJ1bldpdGhFcnJvckhhbmRsaW5nPFQgZXh0ZW5kcyBBcnJheTx1bmtub3duPiwgQSwgUj4oXG4gIHJ1bjogKGE6IEEsIC4uLnNsaWNlczogWy4uLlRdKSA9PiBPYnNlcnZhYmxlPFI+IHwgUiB8IHZvaWQsXG4gIG9uRXJyb3I6IGFueVxuKSB7XG4gIHJldHVybiAoW2FjdGlvbiwgLi4uc2xpY2VzXTogW0EsIC4uLlRdKTogT2JzZXJ2YWJsZTxSPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHIgPSB3cmFwSW50b09ic2VydmFibGUocnVuKGFjdGlvbiwgLi4uc2xpY2VzKSk7XG4gICAgICByZXR1cm4gci5waXBlKGNhdGNoRXJyb3IoKGUpID0+IHdyYXBJbnRvT2JzZXJ2YWJsZShvbkVycm9yKGFjdGlvbiwgZSkpKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHdyYXBJbnRvT2JzZXJ2YWJsZShvbkVycm9yKGFjdGlvbiwgZSkpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBAd2hhdEl0RG9lcyBtYXBzIE9ic2VydmFibGU8QWN0aW9uIHwgW0FjdGlvbiwgU3RhdGVdPiB0b1xuICogT2JzZXJ2YWJsZTxbQWN0aW9uLCBTdGF0ZV0+XG4gKi9cbmZ1bmN0aW9uIG1hcEFjdGlvbkFuZFN0YXRlPFQgZXh0ZW5kcyBBcnJheTx1bmtub3duPiwgQT4oKSB7XG4gIHJldHVybiAoc291cmNlOiBPYnNlcnZhYmxlPEFjdGlvbk9yQWN0aW9uV2l0aFN0YXRlczxULCBBPj4pID0+IHtcbiAgICByZXR1cm4gc291cmNlLnBpcGUoXG4gICAgICBtYXAoKHZhbHVlKSA9PiBub3JtYWxpemVBY3Rpb25BbmRTdGF0ZSh2YWx1ZSkgYXMgW0EsIC4uLlRdKVxuICAgICk7XG4gIH07XG59XG5cbi8qKlxuICogQHdoYXRJdERvZXMgTm9ybWFsaXplcyBlaXRoZXIgYSBiYXJlIGFjdGlvbiBvciBhbiBhcnJheSBvZiBhY3Rpb24gYW5kIHNsaWNlc1xuICogaW50byBhbiBhcnJheSBvZiBhY3Rpb24gYW5kIHNsaWNlcyAob3IgdW5kZWZpbmVkKVxuICovXG5mdW5jdGlvbiBub3JtYWxpemVBY3Rpb25BbmRTdGF0ZTxUIGV4dGVuZHMgQXJyYXk8dW5rbm93bj4sIEE+KFxuICBhcmdzOiBBY3Rpb25PckFjdGlvbldpdGhTdGF0ZXM8VCwgQT5cbik6IFtBLCAuLi5UXSB7XG4gIGxldCBhY3Rpb246IEEsIHNsaWNlczogVDtcblxuICBpZiAoYXJncyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgW2FjdGlvbiwgLi4uc2xpY2VzXSA9IGFyZ3M7XG4gIH0gZWxzZSB7XG4gICAgc2xpY2VzID0gW10gYXMgVDtcbiAgICBhY3Rpb24gPSBhcmdzO1xuICB9XG5cbiAgcmV0dXJuIFthY3Rpb24sIC4uLnNsaWNlc107XG59XG5cbmZ1bmN0aW9uIGZpbmRTbmFwc2hvdChcbiAgY29tcG9uZW50OiBUeXBlPGFueT4sXG4gIHM6IEFjdGl2YXRlZFJvdXRlU25hcHNob3Rcbik6IEFjdGl2YXRlZFJvdXRlU25hcHNob3Qge1xuICBpZiAocy5yb3V0ZUNvbmZpZyAmJiBzLnJvdXRlQ29uZmlnLmNvbXBvbmVudCA9PT0gY29tcG9uZW50KSB7XG4gICAgcmV0dXJuIHM7XG4gIH1cbiAgZm9yIChjb25zdCBjIG9mIHMuY2hpbGRyZW4pIHtcbiAgICBjb25zdCBzcyA9IGZpbmRTbmFwc2hvdChjb21wb25lbnQsIGMpO1xuICAgIGlmIChzcykge1xuICAgICAgcmV0dXJuIHNzO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gd3JhcEludG9PYnNlcnZhYmxlPE8+KG9iajogT2JzZXJ2YWJsZTxPPiB8IE8gfCB2b2lkKTogT2JzZXJ2YWJsZTxPPiB7XG4gIGlmIChpc09ic2VydmFibGUob2JqKSkge1xuICAgIHJldHVybiBvYmo7XG4gIH0gZWxzZSBpZiAoIW9iaikge1xuICAgIHJldHVybiBvZigpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBvZihvYmogYXMgTyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { readAll, readFirst } from './src/testing-utils';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL3Rlc3RpbmcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IHJlYWRBbGwsIHJlYWRGaXJzdCB9IGZyb20gJy4vc3JjL3Rlc3RpbmctdXRpbHMnO1xuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtYW5ndWxhci10ZXN0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci90ZXN0aW5nL254LWFuZ3VsYXItdGVzdGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { first, toArray } from 'rxjs/operators';
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated This will be removed in Nx v21. If using RxJS 7, use `firstValueFrom(obs$.pipe(toArray()))`
|
|
4
|
+
* or `lastValueFrom(obs$.pipe(toArray()))`. If using RxJS 6, use `obs$.pipe(toArray()).toPromise()`.
|
|
5
|
+
*
|
|
6
|
+
* @whatItDoes reads all the values from an observable and returns a promise
|
|
7
|
+
* with an array of all values. This should be used in combination with async/await.
|
|
8
|
+
*
|
|
9
|
+
* ## Example
|
|
10
|
+
*
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const obs = of(1, 2, 3, 4);
|
|
13
|
+
* const res = await readAll(obs)
|
|
14
|
+
* expect(res).toEqual([1, 2, 3, 4]);
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export function readAll(o) {
|
|
18
|
+
return o.pipe(toArray()).toPromise();
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* @deprecated This will be removed in Nx v21. Since RxJS 7, use `firstValueFrom(obs$)`. If using RxJS 6,
|
|
22
|
+
* use `obs$.pipe(first()).toPromise()`.
|
|
23
|
+
*
|
|
24
|
+
* @whatItDoes reads the first value from an observable and returns a promise
|
|
25
|
+
* with it. This should be used in combination with async/await.
|
|
26
|
+
*
|
|
27
|
+
* ## Example
|
|
28
|
+
*
|
|
29
|
+
* ```typescript
|
|
30
|
+
* const obs = of(1, 2, 3, 4);
|
|
31
|
+
* const res = await readFirst(obs)
|
|
32
|
+
* expect(res).toEqual(1);
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export function readFirst(o) {
|
|
36
|
+
return o.pipe(first()).toPromise();
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvdGVzdGluZy9zcmMvdGVzdGluZy11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxVQUFVLE9BQU8sQ0FBSSxDQUFnQjtJQUN6QyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUN2QyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFJLENBQWdCO0lBQzNDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ3JDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpcnN0LCB0b0FycmF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFRoaXMgd2lsbCBiZSByZW1vdmVkIGluIE54IHYyMS4gSWYgdXNpbmcgUnhKUyA3LCB1c2UgYGZpcnN0VmFsdWVGcm9tKG9icyQucGlwZSh0b0FycmF5KCkpKWBcbiAqIG9yIGBsYXN0VmFsdWVGcm9tKG9icyQucGlwZSh0b0FycmF5KCkpKWAuIElmIHVzaW5nIFJ4SlMgNiwgdXNlIGBvYnMkLnBpcGUodG9BcnJheSgpKS50b1Byb21pc2UoKWAuXG4gKlxuICogQHdoYXRJdERvZXMgcmVhZHMgYWxsIHRoZSB2YWx1ZXMgZnJvbSBhbiBvYnNlcnZhYmxlIGFuZCByZXR1cm5zIGEgcHJvbWlzZVxuICogd2l0aCBhbiBhcnJheSBvZiBhbGwgdmFsdWVzLiBUaGlzIHNob3VsZCBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggYXN5bmMvYXdhaXQuXG4gKlxuICogIyMgRXhhbXBsZVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG9icyA9IG9mKDEsIDIsIDMsIDQpO1xuICogY29uc3QgcmVzID0gYXdhaXQgcmVhZEFsbChvYnMpXG4gKiBleHBlY3QocmVzKS50b0VxdWFsKFsxLCAyLCAzLCA0XSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRBbGw8VD4obzogT2JzZXJ2YWJsZTxUPik6IFByb21pc2U8VFtdPiB7XG4gIHJldHVybiBvLnBpcGUodG9BcnJheSgpKS50b1Byb21pc2UoKTtcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiBOeCB2MjEuIFNpbmNlIFJ4SlMgNywgdXNlIGBmaXJzdFZhbHVlRnJvbShvYnMkKWAuIElmIHVzaW5nIFJ4SlMgNixcbiAqIHVzZSBgb2JzJC5waXBlKGZpcnN0KCkpLnRvUHJvbWlzZSgpYC5cbiAqXG4gKiBAd2hhdEl0RG9lcyByZWFkcyB0aGUgZmlyc3QgdmFsdWUgZnJvbSBhbiBvYnNlcnZhYmxlIGFuZCByZXR1cm5zIGEgcHJvbWlzZVxuICogd2l0aCBpdC4gVGhpcyBzaG91bGQgYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIGFzeW5jL2F3YWl0LlxuICpcbiAqICMjIEV4YW1wbGVcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBvYnMgPSBvZigxLCAyLCAzLCA0KTtcbiAqIGNvbnN0IHJlcyA9IGF3YWl0IHJlYWRGaXJzdChvYnMpXG4gKiBleHBlY3QocmVzKS50b0VxdWFsKDEpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkRmlyc3Q8VD4obzogT2JzZXJ2YWJsZTxUPik6IFByb21pc2U8VD4ge1xuICByZXR1cm4gby5waXBlKGZpcnN0KCkpLnRvUHJvbWlzZSgpO1xufVxuIl19
|
package/executors.d.ts
CHANGED
|
@@ -8,4 +8,9 @@ export * from './src/executors/browser-esbuild/browser-esbuild.impl';
|
|
|
8
8
|
export * from './src/executors/application/application.impl';
|
|
9
9
|
export * from './src/executors/extract-i18n/extract-i18n.impl';
|
|
10
10
|
export * from './src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl';
|
|
11
|
-
|
|
11
|
+
import { executeDevServerBuilder } from './src/builders/dev-server/dev-server.impl';
|
|
12
|
+
export {
|
|
13
|
+
/**
|
|
14
|
+
* @deprecated Use executeDevServerBuilder instead. It will be removed in Nx v20.
|
|
15
|
+
*/
|
|
16
|
+
executeDevServerBuilder as executeWebpackDevServerBuilder, executeDevServerBuilder, };
|
package/executors.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.executeDevServerBuilder = void 0;
|
|
3
|
+
exports.executeDevServerBuilder = exports.executeWebpackDevServerBuilder = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
tslib_1.__exportStar(require("./src/builders/webpack-browser/webpack-browser.impl"), exports);
|
|
6
6
|
tslib_1.__exportStar(require("./src/builders/webpack-server/webpack-server.impl"), exports);
|
|
@@ -12,5 +12,6 @@ tslib_1.__exportStar(require("./src/executors/browser-esbuild/browser-esbuild.im
|
|
|
12
12
|
tslib_1.__exportStar(require("./src/executors/application/application.impl"), exports);
|
|
13
13
|
tslib_1.__exportStar(require("./src/executors/extract-i18n/extract-i18n.impl"), exports);
|
|
14
14
|
tslib_1.__exportStar(require("./src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl"), exports);
|
|
15
|
-
|
|
15
|
+
const dev_server_impl_1 = require("./src/builders/dev-server/dev-server.impl");
|
|
16
|
+
Object.defineProperty(exports, "executeWebpackDevServerBuilder", { enumerable: true, get: function () { return dev_server_impl_1.executeDevServerBuilder; } });
|
|
16
17
|
Object.defineProperty(exports, "executeDevServerBuilder", { enumerable: true, get: function () { return dev_server_impl_1.executeDevServerBuilder; } });
|
package/executors.json
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"package": {
|
|
14
14
|
"implementation": "./src/executors/package/package.impl",
|
|
15
15
|
"schema": "./src/executors/package/schema.json",
|
|
16
|
-
"description": "Builds and packages an Angular library producing an output following the Angular Package Format (APF) to be distributed as an NPM package.\n\nThis executor is a drop-in replacement for the `@angular-devkit/build-angular:ng-packagr`
|
|
16
|
+
"description": "Builds and packages an Angular library producing an output following the Angular Package Format (APF) to be distributed as an NPM package.\n\nThis executor is a drop-in replacement for the `@angular-devkit/build-angular:ng-packagr` with additional support for incremental builds."
|
|
17
17
|
},
|
|
18
18
|
"browser-esbuild": {
|
|
19
19
|
"implementation": "./src/executors/browser-esbuild/browser-esbuild.impl",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"application": {
|
|
34
34
|
"implementation": "./src/executors/application/application.impl",
|
|
35
35
|
"schema": "./src/executors/application/schema.json",
|
|
36
|
-
"description": "Builds an Angular application using [esbuild](https://esbuild.github.io/) with integrated SSR and prerendering capabilities."
|
|
36
|
+
"description": "Builds an Angular application using [esbuild](https://esbuild.github.io/) with integrated SSR and prerendering capabilities. _Note: this is only supported in Angular versions >= 17.0.0_."
|
|
37
37
|
},
|
|
38
38
|
"extract-i18n": {
|
|
39
39
|
"implementation": "./src/executors/extract-i18n/extract-i18n.impl",
|