@nx/angular 20.2.0-canary.20241130-ec5a5e6 → 20.2.0-canary.20241204-75b2080
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/executors.json +1 -1
- package/fesm2022/nx-angular-mf.mjs.map +1 -1
- package/fesm2022/nx-angular-testing.mjs.map +1 -1
- package/fesm2022/nx-angular.mjs.map +1 -1
- package/generators.json +1 -1
- package/migrations.json +160 -1
- package/package.json +12 -19
- package/src/builders/dev-server/lib/normalize-options.js +3 -0
- package/src/builders/dev-server/lib/validate-options.js +1 -9
- package/src/builders/dev-server/schema.json +3 -4
- package/src/executors/application/application.impl.d.ts +1 -1
- package/src/executors/application/application.impl.js +4 -1
- package/src/executors/application/schema.json +78 -6
- package/src/executors/application/utils/normalize-options.d.ts +2 -0
- package/src/executors/application/utils/normalize-options.js +33 -0
- package/src/executors/application/utils/validate-options.js +18 -4
- package/src/executors/browser-esbuild/browser-esbuild.impl.d.ts +1 -1
- package/src/executors/browser-esbuild/browser-esbuild.impl.js +0 -9
- package/src/executors/browser-esbuild/schema.json +1 -1
- package/src/executors/delegate-build/delegate-build.impl.d.ts +1 -1
- package/src/executors/module-federation-dev-server/lib/index.d.ts +0 -2
- package/src/executors/module-federation-dev-server/lib/index.js +0 -2
- package/src/executors/module-federation-dev-server/lib/normalize-options.js +1 -0
- package/src/executors/module-federation-dev-server/lib/start-dev-remotes.d.ts +1 -1
- 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 +2 -26
- package/src/executors/module-federation-dev-server/schema.d.ts +1 -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 +1 -0
- package/src/executors/module-federation-ssr-dev-server/lib/start-dev-remotes.d.ts +1 -1
- 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 +7 -33
- package/src/executors/module-federation-ssr-dev-server/schema.d.ts +8 -14
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-packagr.d.ts +1 -2
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-packagr.js +11 -20
- 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 +0 -8
- package/src/executors/package/ng-packagr-adjustments/ng-packagr.d.ts +1 -2
- package/src/executors/package/ng-packagr-adjustments/ng-packagr.js +4 -21
- package/src/executors/package/package.impl.d.ts +2 -2
- package/src/executors/package/package.impl.js +1 -1
- package/src/executors/package/schema.d.ts +1 -3
- package/src/executors/package/schema.json +0 -10
- package/src/executors/utilities/ng-packagr/{stylesheet-processor.js → pre-v19/stylesheet-processor.js} +2 -2
- package/src/executors/utilities/ng-packagr/stylesheet-processor.di.js +11 -5
- package/src/executors/utilities/ng-packagr/tailwindcss.d.ts +0 -6
- package/src/executors/utilities/ng-packagr/tailwindcss.js +0 -32
- package/src/executors/utilities/ng-packagr/v19+/stylesheet-processor.d.ts +23 -0
- package/src/executors/utilities/ng-packagr/v19+/stylesheet-processor.js +93 -0
- package/src/generators/application/application.js +1 -0
- package/src/generators/application/files/ng-module/src/app/app.component.ts__tpl__ +4 -5
- package/src/generators/application/files/nx-welcome/claimed/ng-module/src/app/nx-welcome.component.ts__tpl__ +2 -1
- 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__ +2 -1
- 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__ +2 -1
- 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.ts__tpl__ +4 -6
- package/src/generators/application/lib/add-serve-static-target.d.ts +1 -1
- package/src/generators/application/lib/add-serve-static-target.js +1 -3
- package/src/generators/application/lib/create-files.js +4 -1
- package/src/generators/application/lib/create-project.js +24 -31
- package/src/generators/application/lib/normalize-options.js +1 -6
- package/src/generators/application/schema.d.ts +1 -0
- package/src/generators/application/schema.json +7 -2
- package/src/generators/component/component.js +4 -0
- package/src/generators/component/files/__fileName__.spec.ts__tpl__ +1 -1
- package/src/generators/component/files/__fileName__.ts__tpl__ +5 -13
- package/src/generators/component/lib/normalize-options.js +2 -0
- package/src/generators/component/schema.d.ts +1 -0
- package/src/generators/component/schema.json +5 -0
- package/src/generators/convert-to-application-executor/convert-to-application-executor.js +1 -4
- package/src/generators/convert-to-application-executor/schema.json +1 -1
- package/src/generators/directive/directive.js +5 -0
- package/src/generators/directive/files/__fileName__.ts__tpl__ +2 -2
- package/src/generators/directive/lib/normalize-options.js +3 -1
- package/src/generators/host/files/common/{v17+/src → src}/main.server.ts__tmpl__ +1 -1
- package/src/generators/host/lib/update-ssr-setup.js +2 -1
- package/src/generators/host/schema.d.ts +1 -0
- package/src/generators/host/schema.json +4 -0
- package/src/generators/pipe/files/__fileName__.ts__tpl__ +2 -2
- package/src/generators/pipe/lib/normalize-options.js +3 -1
- package/src/generators/pipe/pipe.js +5 -0
- package/src/generators/remote/files/common/{v17+/src → src}/main.server.ts__tmpl__ +1 -1
- package/src/generators/remote/lib/update-ssr-setup.js +2 -1
- package/src/generators/remote/schema.d.ts +1 -0
- package/src/generators/remote/schema.json +4 -0
- package/src/generators/scam/lib/normalize-options.js +3 -1
- package/src/generators/scam-directive/lib/normalize-options.js +3 -1
- package/src/generators/scam-pipe/lib/normalize-options.js +3 -1
- 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 +5 -4
- package/src/generators/setup-mf/files/entry-module-files/entry.component.ts__tmpl__ +2 -1
- package/src/generators/setup-mf/files/standalone-entry-component-files/entry.component.ts__tmpl__ +2 -2
- package/src/generators/setup-mf/lib/add-remote-entry.js +5 -0
- package/src/generators/setup-ssr/files/{server → pre-v19/server}/application-builder/__serverFileName__ +1 -1
- package/src/generators/setup-ssr/files/{server/server-builder/v17+ → pre-v19/server/server-builder}/__serverFileName__ +1 -1
- package/src/generators/setup-ssr/files/v19+/application-builder/ngmodule-src/__main__ +1 -0
- package/src/generators/setup-ssr/files/v19+/application-builder/ngmodule-src/app/__rootModuleFileName__ +13 -0
- package/src/generators/setup-ssr/files/v19+/application-builder/ngmodule-src/app/app.routes.server.ts__tpl__ +8 -0
- package/src/generators/setup-ssr/files/v19+/application-builder/server/__serverFileName__ +66 -0
- package/src/generators/setup-ssr/files/v19+/application-builder/standalone-src/__main__ +7 -0
- package/src/generators/setup-ssr/files/v19+/application-builder/standalone-src/app/app.config.server.ts__tpl__ +14 -0
- package/src/generators/setup-ssr/files/v19+/application-builder/standalone-src/app/app.routes.server.ts__tpl__ +8 -0
- package/src/generators/setup-ssr/files/v19+/application-builder-common-engine/server/__serverFileName__ +65 -0
- package/src/generators/setup-ssr/files/v19+/server-builder/ngmodule-src/__main__ +1 -0
- package/src/generators/setup-ssr/files/v19+/server-builder/ngmodule-src/app/__rootModuleFileName__ +14 -0
- package/src/generators/setup-ssr/files/v19+/server-builder/root/tsconfig.server.json.template +16 -0
- package/src/generators/setup-ssr/files/{server/server-builder/pre-v17 → v19+/server-builder/server}/__serverFileName__ +25 -15
- package/src/generators/setup-ssr/files/v19+/server-builder/standalone-src/__main__ +7 -0
- package/src/generators/setup-ssr/files/v19+/server-builder/standalone-src/app/app.config.server.ts.template +11 -0
- package/src/generators/setup-ssr/lib/add-dependencies.js +6 -17
- package/src/generators/setup-ssr/lib/add-hydration.d.ts +2 -2
- package/src/generators/setup-ssr/lib/add-hydration.js +10 -2
- package/src/generators/setup-ssr/lib/add-server-file.d.ts +2 -2
- package/src/generators/setup-ssr/lib/add-server-file.js +24 -10
- package/src/generators/setup-ssr/lib/generate-files.d.ts +2 -2
- package/src/generators/setup-ssr/lib/generate-files.js +20 -8
- 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 +24 -3
- package/src/generators/setup-ssr/lib/normalize-options.d.ts +3 -14
- package/src/generators/setup-ssr/lib/normalize-options.js +23 -6
- 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 +36 -24
- package/src/generators/setup-ssr/lib/validate-options.js +5 -0
- package/src/generators/setup-ssr/schema.d.ts +5 -0
- package/src/generators/setup-ssr/schema.json +6 -8
- package/src/generators/setup-ssr/setup-ssr.js +6 -11
- 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/lib/validate-build-target.d.ts +3 -0
- package/src/generators/setup-tailwind/lib/{add-tailwind-config-path-to-project.js → validate-build-target.js} +4 -15
- package/src/generators/setup-tailwind/setup-tailwind.js +4 -1
- package/src/generators/utils/add-jest.js +4 -8
- package/src/generators/utils/storybook-ast/component-info.js +12 -2
- package/src/generators/utils/validations.d.ts +1 -0
- package/src/generators/utils/validations.js +10 -0
- package/src/generators/utils/version-utils.js +2 -2
- package/src/migrations/update-20-2-0/add-localize-polyfill-to-targets.d.ts +3 -0
- package/src/migrations/update-20-2-0/add-localize-polyfill-to-targets.js +48 -0
- package/src/migrations/update-20-2-0/disable-angular-eslint-prefer-standalone.d.ts +2 -0
- package/src/migrations/update-20-2-0/disable-angular-eslint-prefer-standalone.js +55 -0
- package/src/migrations/update-20-2-0/update-angular-cli.d.ts +3 -0
- package/src/migrations/update-20-2-0/update-angular-cli.js +23 -0
- package/src/migrations/update-20-2-0/update-angular-ssr-imports-to-use-node-entry-point.d.ts +2 -0
- package/src/migrations/update-20-2-0/update-angular-ssr-imports-to-use-node-entry-point.js +55 -0
- package/src/utils/backward-compatible-versions.d.ts +4 -4
- package/src/utils/backward-compatible-versions.js +20 -19
- package/src/utils/nx-devkit/ast-utils.d.ts +10 -1
- package/src/utils/nx-devkit/ast-utils.js +32 -9
- package/src/utils/versions.d.ts +7 -7
- package/src/utils/versions.js +7 -7
- package/esm2022/index.mjs +0 -2
- package/esm2022/mf/index.mjs +0 -2
- package/esm2022/mf/mf.mjs +0 -116
- package/esm2022/mf/nx-angular-mf.mjs +0 -5
- package/esm2022/nx-angular.mjs +0 -5
- package/esm2022/src/runtime/nx/data-persistence.mjs +0 -349
- package/esm2022/testing/index.mjs +0 -2
- package/esm2022/testing/nx-angular-testing.mjs +0 -5
- package/esm2022/testing/src/testing-utils.mjs +0 -38
- package/src/executors/module-federation-dev-server/lib/build-static-remotes.d.ts +0 -4
- package/src/executors/module-federation-dev-server/lib/build-static-remotes.js +0 -65
- package/src/executors/module-federation-dev-server/lib/start-static-remotes-file-server.d.ts +0 -9
- package/src/executors/module-federation-dev-server/lib/start-static-remotes-file-server.js +0 -51
- package/src/executors/module-federation-ssr-dev-server/lib/build-static-remotes.d.ts +0 -4
- package/src/executors/module-federation-ssr-dev-server/lib/build-static-remotes.js +0 -65
- package/src/executors/module-federation-ssr-dev-server/lib/start-static-remotes.d.ts +0 -4
- package/src/executors/module-federation-ssr-dev-server/lib/start-static-remotes.js +0 -41
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/compile-ngc.di.d.ts +0 -14
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/compile-ngc.di.js +0 -27
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/compile-ngc.transform.d.ts +0 -12
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/compile-ngc.transform.js +0 -53
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/entry-point.di.d.ts +0 -15
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/entry-point.di.js +0 -28
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/entry-point.transform.d.ts +0 -30
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/entry-point.transform.js +0 -52
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/write-package.di.d.ts +0 -12
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/write-package.di.js +0 -20
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/write-package.transform.d.ts +0 -9
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/write-package.transform.js +0 -320
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/options.di.d.ts +0 -14
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/options.di.js +0 -35
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/package.di.d.ts +0 -14
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/package.di.js +0 -37
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ngc/compile-source-files.d.ts +0 -12
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ngc/compile-source-files.js +0 -178
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/styles/stylesheet-processor.d.ts +0 -42
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/styles/stylesheet-processor.di.d.ts +0 -10
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/styles/stylesheet-processor.di.js +0 -17
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/styles/stylesheet-processor.js +0 -201
- package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.di.d.ts +0 -14
- package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.di.js +0 -26
- package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.transform.d.ts +0 -12
- package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.transform.js +0 -71
- package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/entry-point.di.d.ts +0 -13
- package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/entry-point.di.js +0 -32
- package/src/executors/package/ng-packagr-adjustments/ng-package/options.di.d.ts +0 -14
- package/src/executors/package/ng-packagr-adjustments/ng-package/options.di.js +0 -35
- package/src/executors/package/ng-packagr-adjustments/ng-package/package.di.d.ts +0 -14
- package/src/executors/package/ng-packagr-adjustments/ng-package/package.di.js +0 -37
- package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.d.ts +0 -13
- package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.js +0 -183
- package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.d.ts +0 -36
- package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.di.d.ts +0 -10
- package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.di.js +0 -17
- package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.js +0 -194
- package/src/executors/package/ng-packagr-adjustments/utils/ng-compiler-cli.d.ts +0 -1
- package/src/executors/package/ng-packagr-adjustments/utils/ng-compiler-cli.js +0 -9
- package/src/generators/host/files/common/pre-v17/src/main.server.ts__tmpl__ +0 -66
- package/src/generators/remote/files/common/pre-v17/src/main.server.ts__tmpl__ +0 -72
- package/src/generators/setup-tailwind/lib/add-tailwind-config-path-to-project.d.ts +0 -3
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{v17+ → pre-v19}/ng-package/entry-point/write-bundles.di.d.ts +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{v17+ → pre-v19}/ng-package/entry-point/write-bundles.di.js +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{v17+ → pre-v19}/ng-package/entry-point/write-bundles.transform.d.ts +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{v17+ → pre-v19}/ng-package/entry-point/write-bundles.transform.js +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{v17+ → pre-v19}/ng-package/entry-point/write-package.di.d.ts +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{v17+ → pre-v19}/ng-package/entry-point/write-package.di.js +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{v17+ → pre-v19}/ng-package/entry-point/write-package.transform.d.ts +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{v17+ → pre-v19}/ng-package/entry-point/write-package.transform.js +0 -0
- /package/src/executors/utilities/ng-packagr/{stylesheet-processor.d.ts → pre-v19/stylesheet-processor.d.ts} +0 -0
- /package/src/generators/setup-ssr/files/{ngmodule/src → pre-v19/ngmodule-src}/__main__ +0 -0
- /package/src/generators/setup-ssr/files/{ngmodule/src → pre-v19/ngmodule-src}/app/__rootModuleFileName__ +0 -0
- /package/src/generators/setup-ssr/files/{root → pre-v19/root}/tsconfig.server.json__tpl__ +0 -0
- /package/src/generators/setup-ssr/files/{standalone/src → pre-v19/standalone-src}/__main__ +0 -0
- /package/src/generators/setup-ssr/files/{standalone/src → pre-v19/standalone-src}/app/app.config.server.ts__tpl__ +0 -0
package/esm2022/index.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export { fetch, navigation, optimisticUpdate, pessimisticUpdate, } from './src/runtime/nx/data-persistence';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLEVBQ0wsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixpQkFBaUIsR0FDbEIsTUFBTSxtQ0FBbUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIGZldGNoLFxuICBuYXZpZ2F0aW9uLFxuICBvcHRpbWlzdGljVXBkYXRlLFxuICBwZXNzaW1pc3RpY1VwZGF0ZSxcbn0gZnJvbSAnLi9zcmMvcnVudGltZS9ueC9kYXRhLXBlcnNpc3RlbmNlJztcbiJdfQ==
|
package/esm2022/mf/index.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export { setRemoteUrlResolver, setRemoteDefinitions, setRemoteDefinition, loadRemoteModule, } from './mf';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL21mL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixnQkFBZ0IsR0FDakIsTUFBTSxNQUFNLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICBzZXRSZW1vdGVVcmxSZXNvbHZlcixcbiAgc2V0UmVtb3RlRGVmaW5pdGlvbnMsXG4gIHNldFJlbW90ZURlZmluaXRpb24sXG4gIGxvYWRSZW1vdGVNb2R1bGUsXG59IGZyb20gJy4vbWYnO1xuIl19
|
package/esm2022/mf/mf.mjs
DELETED
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
let resolveRemoteUrl;
|
|
2
|
-
/**
|
|
3
|
-
* @deprecated Use Runtime Helpers from '@module-federation/enhanced/runtime' instead. This will be removed in Nx 22.
|
|
4
|
-
*/
|
|
5
|
-
export function setRemoteUrlResolver(_resolveRemoteUrl) {
|
|
6
|
-
resolveRemoteUrl = _resolveRemoteUrl;
|
|
7
|
-
}
|
|
8
|
-
let remoteUrlDefinitions;
|
|
9
|
-
/**
|
|
10
|
-
* @deprecated Use init() from '@module-federation/enhanced/runtime' instead. This will be removed in Nx 22.
|
|
11
|
-
* If you have a remote app called `my-remote-app` and you want to use the `http://localhost:4201/mf-manifest.json` as the remote url, you should change it from:
|
|
12
|
-
* ```ts
|
|
13
|
-
* import { setRemoteDefinitions } from '@nx/angular/mf';
|
|
14
|
-
*
|
|
15
|
-
* setRemoteDefinitions({
|
|
16
|
-
* 'my-remote-app': 'http://localhost:4201/mf-manifest.json'
|
|
17
|
-
* });
|
|
18
|
-
* ```
|
|
19
|
-
* to use init():
|
|
20
|
-
* ```ts
|
|
21
|
-
* import { init } from '@module-federation/enhanced/runtime';
|
|
22
|
-
*
|
|
23
|
-
* init({
|
|
24
|
-
* name: 'host',
|
|
25
|
-
* remotes: [{
|
|
26
|
-
* name: 'my-remote-app',
|
|
27
|
-
* entry: 'http://localhost:4201/mf-manifest.json'
|
|
28
|
-
* }]
|
|
29
|
-
* });
|
|
30
|
-
* ```
|
|
31
|
-
*/
|
|
32
|
-
export function setRemoteDefinitions(definitions) {
|
|
33
|
-
remoteUrlDefinitions = definitions;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* @deprecated Use registerRemotes() from '@module-federation/enhanced/runtime' instead. This will be removed in Nx 22.
|
|
37
|
-
* If you set a remote app with `setRemoteDefinition` such as:
|
|
38
|
-
* ```ts
|
|
39
|
-
* import { setRemoteDefinition } from '@nx/angular/mf';
|
|
40
|
-
*
|
|
41
|
-
* setRemoteDefinition(
|
|
42
|
-
* 'my-remote-app',
|
|
43
|
-
* 'http://localhost:4201/mf-manifest.json'
|
|
44
|
-
* );
|
|
45
|
-
* ```
|
|
46
|
-
* change it to use registerRemotes():
|
|
47
|
-
* ```ts
|
|
48
|
-
* import { registerRemotes } from '@module-federation/enhanced/runtime';
|
|
49
|
-
*
|
|
50
|
-
* registerRemotes([
|
|
51
|
-
* {
|
|
52
|
-
* name: 'my-remote-app',
|
|
53
|
-
* entry: 'http://localhost:4201/mf-manifest.json'
|
|
54
|
-
* }
|
|
55
|
-
* ]);
|
|
56
|
-
* ```
|
|
57
|
-
*/
|
|
58
|
-
export function setRemoteDefinition(remoteName, remoteUrl) {
|
|
59
|
-
remoteUrlDefinitions ??= {};
|
|
60
|
-
remoteUrlDefinitions[remoteName] = remoteUrl;
|
|
61
|
-
}
|
|
62
|
-
let remoteModuleMap = new Map();
|
|
63
|
-
let remoteContainerMap = new Map();
|
|
64
|
-
/**
|
|
65
|
-
* @deprecated Use loadRemote() from '@module-federation/enhanced/runtime' instead. This will be removed in Nx 22.
|
|
66
|
-
* If you set a load a remote with `loadRemoteModule` such as:
|
|
67
|
-
* ```ts
|
|
68
|
-
* import { loadRemoteModule } from '@nx/angular/mf';
|
|
69
|
-
*
|
|
70
|
-
* loadRemoteModule('my-remote-app', './Module').then(m => m.RemoteEntryModule);
|
|
71
|
-
* ```
|
|
72
|
-
* change it to use loadRemote():
|
|
73
|
-
* ```ts
|
|
74
|
-
* import { loadRemote } from '@module-federation/enhanced/runtime';
|
|
75
|
-
*
|
|
76
|
-
* loadRemote<typeof import('my-remote-app/Module')>('my-remote-app/Module').then(m => m.RemoteEntryModule);
|
|
77
|
-
* ```
|
|
78
|
-
*/
|
|
79
|
-
export async function loadRemoteModule(remoteName, moduleName) {
|
|
80
|
-
const remoteModuleKey = `${remoteName}:${moduleName}`;
|
|
81
|
-
if (remoteModuleMap.has(remoteModuleKey)) {
|
|
82
|
-
return remoteModuleMap.get(remoteModuleKey);
|
|
83
|
-
}
|
|
84
|
-
const container = remoteContainerMap.has(remoteName)
|
|
85
|
-
? remoteContainerMap.get(remoteName)
|
|
86
|
-
: await loadRemoteContainer(remoteName);
|
|
87
|
-
const factory = await container.get(moduleName);
|
|
88
|
-
const Module = factory();
|
|
89
|
-
remoteModuleMap.set(remoteModuleKey, Module);
|
|
90
|
-
return Module;
|
|
91
|
-
}
|
|
92
|
-
function loadModule(url) {
|
|
93
|
-
return import(/* webpackIgnore:true */ url);
|
|
94
|
-
}
|
|
95
|
-
let initialSharingScopeCreated = false;
|
|
96
|
-
async function loadRemoteContainer(remoteName) {
|
|
97
|
-
if (!resolveRemoteUrl && !remoteUrlDefinitions) {
|
|
98
|
-
throw new Error('Call setRemoteDefinitions or setRemoteUrlResolver to allow Dynamic Federation to find the remote apps correctly.');
|
|
99
|
-
}
|
|
100
|
-
if (!initialSharingScopeCreated) {
|
|
101
|
-
initialSharingScopeCreated = true;
|
|
102
|
-
await __webpack_init_sharing__('default');
|
|
103
|
-
}
|
|
104
|
-
const remoteUrl = remoteUrlDefinitions
|
|
105
|
-
? remoteUrlDefinitions[remoteName]
|
|
106
|
-
: await resolveRemoteUrl(remoteName);
|
|
107
|
-
let containerUrl = remoteUrl;
|
|
108
|
-
if (!remoteUrl.endsWith('.mjs') && !remoteUrl.endsWith('.js')) {
|
|
109
|
-
containerUrl = `${remoteUrl}${remoteUrl.endsWith('/') ? '' : '/'}remoteEntry.mjs`;
|
|
110
|
-
}
|
|
111
|
-
const container = await loadModule(containerUrl);
|
|
112
|
-
await container.init(__webpack_share_scopes__.default);
|
|
113
|
-
remoteContainerMap.set(remoteName, container);
|
|
114
|
-
return container;
|
|
115
|
-
}
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL21mL21mLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLElBQUksZ0JBQTBDLENBQUM7QUFFL0M7O0dBRUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLGlCQUEyQztJQUUzQyxnQkFBZ0IsR0FBRyxpQkFBaUIsQ0FBQztBQUN2QyxDQUFDO0FBRUQsSUFBSSxvQkFBNEMsQ0FBQztBQUVqRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxXQUFtQztJQUN0RSxvQkFBb0IsR0FBRyxXQUFXLENBQUM7QUFDckMsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFVBQWtCLEVBQUUsU0FBaUI7SUFDdkUsb0JBQW9CLEtBQUssRUFBRSxDQUFDO0lBQzVCLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUMvQyxDQUFDO0FBRUQsSUFBSSxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7QUFDakQsSUFBSSxrQkFBa0IsR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztBQUVwRDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsZ0JBQWdCLENBQUMsVUFBa0IsRUFBRSxVQUFrQjtJQUMzRSxNQUFNLGVBQWUsR0FBRyxHQUFHLFVBQVUsSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUN0RCxJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztRQUN6QyxPQUFPLGVBQWUsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7UUFDbEQsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7UUFDcEMsQ0FBQyxDQUFDLE1BQU0sbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFMUMsTUFBTSxPQUFPLEdBQUcsTUFBTSxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hELE1BQU0sTUFBTSxHQUFHLE9BQU8sRUFBRSxDQUFDO0lBRXpCLGVBQWUsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRTdDLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxHQUFXO0lBQzdCLE9BQU8sTUFBTSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRCxJQUFJLDBCQUEwQixHQUFHLEtBQUssQ0FBQztBQUV2QyxLQUFLLFVBQVUsbUJBQW1CLENBQUMsVUFBa0I7SUFDbkQsSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUMvQyxNQUFNLElBQUksS0FBSyxDQUNiLGtIQUFrSCxDQUNuSCxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ2hDLDBCQUEwQixHQUFHLElBQUksQ0FBQztRQUNsQyxNQUFNLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxvQkFBb0I7UUFDcEMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQztRQUNsQyxDQUFDLENBQUMsTUFBTSxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUV2QyxJQUFJLFlBQVksR0FBRyxTQUFTLENBQUM7SUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDOUQsWUFBWSxHQUFHLEdBQUcsU0FBUyxHQUN6QixTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQ2pDLGlCQUFpQixDQUFDO0lBQ3BCLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxNQUFNLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNqRCxNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFdkQsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM5QyxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgUmVzb2x2ZVJlbW90ZVVybEZ1bmN0aW9uID0gKFxuICByZW1vdGVOYW1lOiBzdHJpbmdcbikgPT4gc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+O1xuXG5kZWNsYXJlIGNvbnN0IF9fd2VicGFja19pbml0X3NoYXJpbmdfXzogKHNjb3BlOiAnZGVmYXVsdCcpID0+IFByb21pc2U8dm9pZD47XG5kZWNsYXJlIGNvbnN0IF9fd2VicGFja19zaGFyZV9zY29wZXNfXzogeyBkZWZhdWx0OiB1bmtub3duIH07XG5cbmxldCByZXNvbHZlUmVtb3RlVXJsOiBSZXNvbHZlUmVtb3RlVXJsRnVuY3Rpb247XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIFJ1bnRpbWUgSGVscGVycyBmcm9tICdAbW9kdWxlLWZlZGVyYXRpb24vZW5oYW5jZWQvcnVudGltZScgaW5zdGVhZC4gVGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gTnggMjIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRSZW1vdGVVcmxSZXNvbHZlcihcbiAgX3Jlc29sdmVSZW1vdGVVcmw6IFJlc29sdmVSZW1vdGVVcmxGdW5jdGlvblxuKSB7XG4gIHJlc29sdmVSZW1vdGVVcmwgPSBfcmVzb2x2ZVJlbW90ZVVybDtcbn1cblxubGV0IHJlbW90ZVVybERlZmluaXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBpbml0KCkgZnJvbSAnQG1vZHVsZS1mZWRlcmF0aW9uL2VuaGFuY2VkL3J1bnRpbWUnIGluc3RlYWQuIFRoaXMgd2lsbCBiZSByZW1vdmVkIGluIE54IDIyLlxuICogSWYgeW91IGhhdmUgYSByZW1vdGUgYXBwIGNhbGxlZCBgbXktcmVtb3RlLWFwcGAgYW5kIHlvdSB3YW50IHRvIHVzZSB0aGUgYGh0dHA6Ly9sb2NhbGhvc3Q6NDIwMS9tZi1tYW5pZmVzdC5qc29uYCBhcyB0aGUgcmVtb3RlIHVybCwgeW91IHNob3VsZCBjaGFuZ2UgaXQgZnJvbTpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBzZXRSZW1vdGVEZWZpbml0aW9ucyB9IGZyb20gJ0BueC9hbmd1bGFyL21mJztcbiAqXG4gKiBzZXRSZW1vdGVEZWZpbml0aW9ucyh7XG4gKiAgICdteS1yZW1vdGUtYXBwJzogJ2h0dHA6Ly9sb2NhbGhvc3Q6NDIwMS9tZi1tYW5pZmVzdC5qc29uJ1xuICogfSk7XG4gKiBgYGBcbiAqIHRvIHVzZSBpbml0KCk6XG4gKiBgYGB0c1xuICogaW1wb3J0IHsgaW5pdCB9IGZyb20gJ0Btb2R1bGUtZmVkZXJhdGlvbi9lbmhhbmNlZC9ydW50aW1lJztcbiAqXG4gKiBpbml0KHtcbiAqICAgbmFtZTogJ2hvc3QnLFxuICogICByZW1vdGVzOiBbe1xuICogICAgIG5hbWU6ICdteS1yZW1vdGUtYXBwJyxcbiAqICAgICBlbnRyeTogJ2h0dHA6Ly9sb2NhbGhvc3Q6NDIwMS9tZi1tYW5pZmVzdC5qc29uJ1xuICogICB9XVxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFJlbW90ZURlZmluaXRpb25zKGRlZmluaXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSB7XG4gIHJlbW90ZVVybERlZmluaXRpb25zID0gZGVmaW5pdGlvbnM7XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIHJlZ2lzdGVyUmVtb3RlcygpIGZyb20gJ0Btb2R1bGUtZmVkZXJhdGlvbi9lbmhhbmNlZC9ydW50aW1lJyBpbnN0ZWFkLiBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiBOeCAyMi5cbiAqIElmIHlvdSBzZXQgYSByZW1vdGUgYXBwIHdpdGggYHNldFJlbW90ZURlZmluaXRpb25gIHN1Y2ggYXM6XG4gKiBgYGB0c1xuICogaW1wb3J0IHsgc2V0UmVtb3RlRGVmaW5pdGlvbiB9IGZyb20gJ0BueC9hbmd1bGFyL21mJztcbiAqXG4gKiBzZXRSZW1vdGVEZWZpbml0aW9uKFxuICogICAnbXktcmVtb3RlLWFwcCcsXG4gKiAgICdodHRwOi8vbG9jYWxob3N0OjQyMDEvbWYtbWFuaWZlc3QuanNvbidcbiAqICk7XG4gKiBgYGBcbiAqIGNoYW5nZSBpdCB0byB1c2UgcmVnaXN0ZXJSZW1vdGVzKCk6XG4gKiBgYGB0c1xuICogaW1wb3J0IHsgcmVnaXN0ZXJSZW1vdGVzIH0gZnJvbSAnQG1vZHVsZS1mZWRlcmF0aW9uL2VuaGFuY2VkL3J1bnRpbWUnO1xuICpcbiAqIHJlZ2lzdGVyUmVtb3RlcyhbXG4gKiAge1xuICogICAgIG5hbWU6ICdteS1yZW1vdGUtYXBwJyxcbiAqICAgICBlbnRyeTogJ2h0dHA6Ly9sb2NhbGhvc3Q6NDIwMS9tZi1tYW5pZmVzdC5qc29uJ1xuICogICB9XG4gKiBdKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0UmVtb3RlRGVmaW5pdGlvbihyZW1vdGVOYW1lOiBzdHJpbmcsIHJlbW90ZVVybDogc3RyaW5nKSB7XG4gIHJlbW90ZVVybERlZmluaXRpb25zID8/PSB7fTtcbiAgcmVtb3RlVXJsRGVmaW5pdGlvbnNbcmVtb3RlTmFtZV0gPSByZW1vdGVVcmw7XG59XG5cbmxldCByZW1vdGVNb2R1bGVNYXAgPSBuZXcgTWFwPHN0cmluZywgdW5rbm93bj4oKTtcbmxldCByZW1vdGVDb250YWluZXJNYXAgPSBuZXcgTWFwPHN0cmluZywgdW5rbm93bj4oKTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgbG9hZFJlbW90ZSgpIGZyb20gJ0Btb2R1bGUtZmVkZXJhdGlvbi9lbmhhbmNlZC9ydW50aW1lJyBpbnN0ZWFkLiBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiBOeCAyMi5cbiAqIElmIHlvdSBzZXQgYSBsb2FkIGEgcmVtb3RlIHdpdGggYGxvYWRSZW1vdGVNb2R1bGVgIHN1Y2ggYXM6XG4gKiBgYGB0c1xuICogaW1wb3J0IHsgbG9hZFJlbW90ZU1vZHVsZSB9IGZyb20gJ0BueC9hbmd1bGFyL21mJztcbiAqXG4gKiBsb2FkUmVtb3RlTW9kdWxlKCdteS1yZW1vdGUtYXBwJywgJy4vTW9kdWxlJykudGhlbihtID0+IG0uUmVtb3RlRW50cnlNb2R1bGUpO1xuICogYGBgXG4gKiBjaGFuZ2UgaXQgdG8gdXNlIGxvYWRSZW1vdGUoKTpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBsb2FkUmVtb3RlIH0gZnJvbSAnQG1vZHVsZS1mZWRlcmF0aW9uL2VuaGFuY2VkL3J1bnRpbWUnO1xuICpcbiAqIGxvYWRSZW1vdGU8dHlwZW9mIGltcG9ydCgnbXktcmVtb3RlLWFwcC9Nb2R1bGUnKT4oJ215LXJlbW90ZS1hcHAvTW9kdWxlJykudGhlbihtID0+IG0uUmVtb3RlRW50cnlNb2R1bGUpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkUmVtb3RlTW9kdWxlKHJlbW90ZU5hbWU6IHN0cmluZywgbW9kdWxlTmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IHJlbW90ZU1vZHVsZUtleSA9IGAke3JlbW90ZU5hbWV9OiR7bW9kdWxlTmFtZX1gO1xuICBpZiAocmVtb3RlTW9kdWxlTWFwLmhhcyhyZW1vdGVNb2R1bGVLZXkpKSB7XG4gICAgcmV0dXJuIHJlbW90ZU1vZHVsZU1hcC5nZXQocmVtb3RlTW9kdWxlS2V5KTtcbiAgfVxuXG4gIGNvbnN0IGNvbnRhaW5lciA9IHJlbW90ZUNvbnRhaW5lck1hcC5oYXMocmVtb3RlTmFtZSlcbiAgICA/IHJlbW90ZUNvbnRhaW5lck1hcC5nZXQocmVtb3RlTmFtZSlcbiAgICA6IGF3YWl0IGxvYWRSZW1vdGVDb250YWluZXIocmVtb3RlTmFtZSk7XG5cbiAgY29uc3QgZmFjdG9yeSA9IGF3YWl0IGNvbnRhaW5lci5nZXQobW9kdWxlTmFtZSk7XG4gIGNvbnN0IE1vZHVsZSA9IGZhY3RvcnkoKTtcblxuICByZW1vdGVNb2R1bGVNYXAuc2V0KHJlbW90ZU1vZHVsZUtleSwgTW9kdWxlKTtcblxuICByZXR1cm4gTW9kdWxlO1xufVxuXG5mdW5jdGlvbiBsb2FkTW9kdWxlKHVybDogc3RyaW5nKSB7XG4gIHJldHVybiBpbXBvcnQoLyogd2VicGFja0lnbm9yZTp0cnVlICovIHVybCk7XG59XG5cbmxldCBpbml0aWFsU2hhcmluZ1Njb3BlQ3JlYXRlZCA9IGZhbHNlO1xuXG5hc3luYyBmdW5jdGlvbiBsb2FkUmVtb3RlQ29udGFpbmVyKHJlbW90ZU5hbWU6IHN0cmluZykge1xuICBpZiAoIXJlc29sdmVSZW1vdGVVcmwgJiYgIXJlbW90ZVVybERlZmluaXRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0NhbGwgc2V0UmVtb3RlRGVmaW5pdGlvbnMgb3Igc2V0UmVtb3RlVXJsUmVzb2x2ZXIgdG8gYWxsb3cgRHluYW1pYyBGZWRlcmF0aW9uIHRvIGZpbmQgdGhlIHJlbW90ZSBhcHBzIGNvcnJlY3RseS4nXG4gICAgKTtcbiAgfVxuXG4gIGlmICghaW5pdGlhbFNoYXJpbmdTY29wZUNyZWF0ZWQpIHtcbiAgICBpbml0aWFsU2hhcmluZ1Njb3BlQ3JlYXRlZCA9IHRydWU7XG4gICAgYXdhaXQgX193ZWJwYWNrX2luaXRfc2hhcmluZ19fKCdkZWZhdWx0Jyk7XG4gIH1cblxuICBjb25zdCByZW1vdGVVcmwgPSByZW1vdGVVcmxEZWZpbml0aW9uc1xuICAgID8gcmVtb3RlVXJsRGVmaW5pdGlvbnNbcmVtb3RlTmFtZV1cbiAgICA6IGF3YWl0IHJlc29sdmVSZW1vdGVVcmwocmVtb3RlTmFtZSk7XG5cbiAgbGV0IGNvbnRhaW5lclVybCA9IHJlbW90ZVVybDtcbiAgaWYgKCFyZW1vdGVVcmwuZW5kc1dpdGgoJy5tanMnKSAmJiAhcmVtb3RlVXJsLmVuZHNXaXRoKCcuanMnKSkge1xuICAgIGNvbnRhaW5lclVybCA9IGAke3JlbW90ZVVybH0ke1xuICAgICAgcmVtb3RlVXJsLmVuZHNXaXRoKCcvJykgPyAnJyA6ICcvJ1xuICAgIH1yZW1vdGVFbnRyeS5tanNgO1xuICB9XG5cbiAgY29uc3QgY29udGFpbmVyID0gYXdhaXQgbG9hZE1vZHVsZShjb250YWluZXJVcmwpO1xuICBhd2FpdCBjb250YWluZXIuaW5pdChfX3dlYnBhY2tfc2hhcmVfc2NvcGVzX18uZGVmYXVsdCk7XG5cbiAgcmVtb3RlQ29udGFpbmVyTWFwLnNldChyZW1vdGVOYW1lLCBjb250YWluZXIpO1xuICByZXR1cm4gY29udGFpbmVyO1xufVxuIl19
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './index';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtYW5ndWxhci1tZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbWYvbngtYW5ndWxhci1tZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
package/esm2022/nx-angular.mjs
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './index';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtYW5ndWxhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbngtYW5ndWxhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -1,349 +0,0 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1wZXJzaXN0ZW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvc3JjL3J1bnRpbWUvbngvZGF0YS1wZXJzaXN0ZW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUd2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQ0wsVUFBVSxFQUNWLFNBQVMsRUFDVCxNQUFNLEVBQ04sT0FBTyxFQUNQLEdBQUcsRUFDSCxRQUFRLEVBQ1IsU0FBUyxHQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFxQ3hCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5REc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQy9CLElBQWlDO0lBRWpDLE9BQU8sQ0FBQyxNQUFnQyxFQUFzQixFQUFFO1FBQzlELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FDaEIsaUJBQWlCLEVBQUUsRUFDbkIsU0FBUyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQ3hELENBQUM7SUFDSixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwREc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLElBQWdDO0lBRWhDLE9BQU8sQ0FBQyxNQUFnQyxFQUFzQixFQUFFO1FBQzlELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FDaEIsaUJBQWlCLEVBQUUsRUFDbkIsU0FBUyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FB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QUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzNCLE1BQU0sRUFBRSxHQUFHLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNQLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFJLEdBQTZCO0lBQzFELElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDdEIsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO1NBQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLE9BQU8sRUFBRSxFQUFFLENBQUM7SUFDZCxDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sRUFBRSxDQUFDLEdBQVEsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7XG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIFJvdXRlclN0YXRlU25hcHNob3QsXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgdHlwZSB7IFJvdXRlck5hdmlnYXRpb25BY3Rpb24gfSBmcm9tICdAbmdyeC9yb3V0ZXItc3RvcmUnO1xuaW1wb3J0IHsgUk9VVEVSX05BVklHQVRJT04gfSBmcm9tICdAbmdyeC9yb3V0ZXItc3RvcmUnO1xuaW1wb3J0IHR5cGUgeyBBY3Rpb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgdHlwZSB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGNhdGNoRXJyb3IsXG4gIGNvbmNhdE1hcCxcbiAgZmlsdGVyLFxuICBncm91cEJ5LFxuICBtYXAsXG4gIG1lcmdlTWFwLFxuICBzd2l0Y2hNYXAsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGludGVyZmFjZSBQZXNzaW1pc3RpY1VwZGF0ZU9wdHM8VCBleHRlbmRzIEFycmF5PHVua25vd24+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==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export { readAll, readFirst } from './src/testing-utils';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL3Rlc3RpbmcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IHJlYWRBbGwsIHJlYWRGaXJzdCB9IGZyb20gJy4vc3JjL3Rlc3RpbmctdXRpbHMnO1xuIl19
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './index';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtYW5ndWxhci10ZXN0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci90ZXN0aW5nL254LWFuZ3VsYXItdGVzdGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -1,38 +0,0 @@
|
|
|
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
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { type Schema } from '../schema';
|
|
2
|
-
import { type ExecutorContext } from '@nx/devkit';
|
|
3
|
-
import type { StaticRemotesConfig } from '@nx/module-federation/src/utils';
|
|
4
|
-
export declare function buildStaticRemotes(staticRemotesConfig: StaticRemotesConfig, nxBin: any, context: ExecutorContext, options: Schema): Promise<Record<string, string>>;
|