@wallfree-dev/angular-core 0.0.59-beta.1
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/README.md +60 -0
- package/esm2022/lib/airgap-angular-core.module.mjs +63 -0
- package/esm2022/lib/base/base.component.mjs +38 -0
- package/esm2022/lib/base/base.facade.mjs +37 -0
- package/esm2022/lib/capacitor-plugins/definitions.mjs +15 -0
- package/esm2022/lib/capacitor-plugins/injection-tokens.mjs +11 -0
- package/esm2022/lib/capacitor-plugins/isolated-modules/isolated-modules.plugin-wrapper.mjs +67 -0
- package/esm2022/lib/capacitor-plugins/isolated-modules/isolated-modules.plugin.mjs +247 -0
- package/esm2022/lib/components/account-item/account-item.component.mjs +30 -0
- package/esm2022/lib/components/account-selection/account-selection.component.mjs +61 -0
- package/esm2022/lib/components/components.module.mjs +97 -0
- package/esm2022/lib/components/currency-symbol/currency-symbol.component.mjs +45 -0
- package/esm2022/lib/components/currency-symbol/currency-symbol.facade.mjs +8 -0
- package/esm2022/lib/components/currency-symbol/currency-symbol.types.mjs +2 -0
- package/esm2022/lib/components/from-to/from-to.component.mjs +100 -0
- package/esm2022/lib/components/iac-qr/iac-qr.component.mjs +192 -0
- package/esm2022/lib/components/identicon/identicon.component.mjs +51 -0
- package/esm2022/lib/components/isolated-modules-badges/isolated-modules-badges.component.mjs +16 -0
- package/esm2022/lib/components/isolated-modules-details/isolated-modules-details.component.mjs +43 -0
- package/esm2022/lib/components/isolated-modules-details/isolated-modules-details.facade.mjs +7 -0
- package/esm2022/lib/components/isolated-modules-list/isolated-modules-list.component.mjs +50 -0
- package/esm2022/lib/components/isolated-modules-list/isolated-modules-list.facade.mjs +7 -0
- package/esm2022/lib/components/isolated-modules-onboarding/isolated-modules-onboarding.component.mjs +12 -0
- package/esm2022/lib/components/network-badge/network-badge.component.mjs +19 -0
- package/esm2022/lib/components/qr/qr.component.mjs +36 -0
- package/esm2022/lib/components/qr-settings/qr-settings.component.mjs +30 -0
- package/esm2022/lib/components/titled-address/titled-address.component.mjs +31 -0
- package/esm2022/lib/components/titled-text/titled-text.component.mjs +28 -0
- package/esm2022/lib/config/app-config.mjs +3 -0
- package/esm2022/lib/pages/isolated-modules-list/isolated-modules-list.facade.mjs +7 -0
- package/esm2022/lib/pipes/amount-converter/amount-converter.pipe.mjs +82 -0
- package/esm2022/lib/pipes/fee-converter/fee-converter.pipe.mjs +36 -0
- package/esm2022/lib/pipes/pipes.module.mjs +19 -0
- package/esm2022/lib/pipes/wallet-filter/wallet-filter.pipe.mjs +36 -0
- package/esm2022/lib/protocol/adapter/protocol-v0-adapter.mjs +880 -0
- package/esm2022/lib/protocol/isolated/base-isolated.mjs +27 -0
- package/esm2022/lib/protocol/isolated/block-explorer-isolated.mjs +32 -0
- package/esm2022/lib/protocol/isolated/protocol-offline-isolated.mjs +37 -0
- package/esm2022/lib/protocol/isolated/protocol-online-isolated.mjs +52 -0
- package/esm2022/lib/protocol/isolated/v3-serializer-companion-isolated.mjs +35 -0
- package/esm2022/lib/services/address/address.service.mjs +78 -0
- package/esm2022/lib/services/clipboard/clipboard.service.mjs +48 -0
- package/esm2022/lib/services/deeplink/deeplink.service.mjs +73 -0
- package/esm2022/lib/services/environment/base-environment.service.mjs +6 -0
- package/esm2022/lib/services/filesystem/filesystem.service.mjs +291 -0
- package/esm2022/lib/services/iac/base.iac.service.mjs +155 -0
- package/esm2022/lib/services/iac/message-handler-single.mjs +48 -0
- package/esm2022/lib/services/iac/message-handler.mjs +22 -0
- package/esm2022/lib/services/iac/qr-generator.mjs +17 -0
- package/esm2022/lib/services/image/fetcher/image-direct.fetcher.mjs +16 -0
- package/esm2022/lib/services/image/fetcher/image-proxy.fetcher.mjs +45 -0
- package/esm2022/lib/services/image/image.service.mjs +39 -0
- package/esm2022/lib/services/key-pair/key-pair.service.mjs +57 -0
- package/esm2022/lib/services/language/language.service.mjs +47 -0
- package/esm2022/lib/services/modules/base-modules.service.mjs +157 -0
- package/esm2022/lib/services/modules/controller/base-modules.controller.mjs +2 -0
- package/esm2022/lib/services/modules/controller/integral/integral-modules.controller.mjs +91 -0
- package/esm2022/lib/services/modules/controller/isolated/isolated-modules.controller.mjs +190 -0
- package/esm2022/lib/services/modules/controller/modules.controller.mjs +85 -0
- package/esm2022/lib/services/permissions/permissions.service.mjs +140 -0
- package/esm2022/lib/services/protocol/defaults.mjs +55 -0
- package/esm2022/lib/services/protocol/protocol.service.mjs +230 -0
- package/esm2022/lib/services/protocol/store/base-protocol-store.service.mjs +63 -0
- package/esm2022/lib/services/protocol/store/main/main-protocol-store.service.mjs +91 -0
- package/esm2022/lib/services/protocol/store/sub/sub-protocol-store.service.mjs +174 -0
- package/esm2022/lib/services/qr/qr-generators/bc-ur-generator.mjs +127 -0
- package/esm2022/lib/services/qr/qr-generators/metamask-generator.mjs +117 -0
- package/esm2022/lib/services/qr/qr-generators/output-descriptor-generator.mjs +49 -0
- package/esm2022/lib/services/qr/qr-generators/serializer-v2-generator.mjs +30 -0
- package/esm2022/lib/services/qr/qr-generators/serializer-v3-generator.mjs +45 -0
- package/esm2022/lib/services/qr/qr-generators/xpub-generator.mjs +38 -0
- package/esm2022/lib/services/qr/qr-handler/serializer-v2-handler.mjs +114 -0
- package/esm2022/lib/services/qr/qr-handler/serializer-v3-handler.mjs +274 -0
- package/esm2022/lib/services/qr-scanner/qr-scanner.service.mjs +61 -0
- package/esm2022/lib/services/serializer/serializer.service.mjs +181 -0
- package/esm2022/lib/services/storage/base.storage.mjs +30 -0
- package/esm2022/lib/services/storage/storage.service.mjs +33 -0
- package/esm2022/lib/services/token/token.service.mjs +52 -0
- package/esm2022/lib/services/transaction/transaction.service.mjs +67 -0
- package/esm2022/lib/services/ui-event/ui-event.service.mjs +198 -0
- package/esm2022/lib/services/ui-event-elements/ui-event-elements.service.mjs +122 -0
- package/esm2022/lib/services/uri/uri.service.mjs +51 -0
- package/esm2022/lib/translation/AirGapTranslateLoader.mjs +26 -0
- package/esm2022/lib/types/Either.mjs +2 -0
- package/esm2022/lib/types/ExternalAliasResolver.mjs +2 -0
- package/esm2022/lib/types/RuntimeMode.mjs +6 -0
- package/esm2022/lib/types/SupportedLanguage.mjs +2 -0
- package/esm2022/lib/types/Token.mjs +2 -0
- package/esm2022/lib/types/isolated-modules/IsolatedModule.mjs +2 -0
- package/esm2022/lib/types/isolated-modules/IsolatedModuleManifest.mjs +2 -0
- package/esm2022/lib/types/isolated-modules/IsolatedModuleMetadata.mjs +2 -0
- package/esm2022/lib/types/ui/UIAction.mjs +6 -0
- package/esm2022/lib/types/ui/UIResource.mjs +8 -0
- package/esm2022/lib/utils/ExposedPromise.mjs +103 -0
- package/esm2022/lib/utils/airgap-transaction.mjs +23 -0
- package/esm2022/lib/utils/array.mjs +32 -0
- package/esm2022/lib/utils/modules/isolated/isolated-modules-metadata.mjs +10 -0
- package/esm2022/lib/utils/modules/load-protocol.mjs +19 -0
- package/esm2022/lib/utils/not-initialized.mjs +7 -0
- package/esm2022/lib/utils/protocol/delegation.mjs +33 -0
- package/esm2022/lib/utils/protocol/protocol-identifier.mjs +4 -0
- package/esm2022/lib/utils/protocol/protocol-network-identifier.mjs +18 -0
- package/esm2022/lib/utils/protocol/protocol-options.mjs +114 -0
- package/esm2022/lib/utils/protocol/protocol-v0-adapter.mjs +390 -0
- package/esm2022/lib/utils/utils.mjs +80 -0
- package/esm2022/lib/utils/worker.mjs +28 -0
- package/esm2022/public-api.mjs +102 -0
- package/esm2022/wallfree-dev-angular-core.mjs +5 -0
- package/fesm2022/wallfree-dev-angular-core.mjs +6933 -0
- package/fesm2022/wallfree-dev-angular-core.mjs.map +1 -0
- package/index.d.ts +6 -0
- package/lib/airgap-angular-core.module.d.ts +25 -0
- package/lib/airgap-angular-core.module.d.ts.map +1 -0
- package/lib/base/base.component.d.ts +18 -0
- package/lib/base/base.component.d.ts.map +1 -0
- package/lib/base/base.facade.d.ts +16 -0
- package/lib/base/base.facade.d.ts.map +1 -0
- package/lib/capacitor-plugins/definitions.d.ts +122 -0
- package/lib/capacitor-plugins/definitions.d.ts.map +1 -0
- package/lib/capacitor-plugins/injection-tokens.d.ts +18 -0
- package/lib/capacitor-plugins/injection-tokens.d.ts.map +1 -0
- package/lib/capacitor-plugins/isolated-modules/isolated-modules.plugin-wrapper.d.ts +20 -0
- package/lib/capacitor-plugins/isolated-modules/isolated-modules.plugin-wrapper.d.ts.map +1 -0
- package/lib/capacitor-plugins/isolated-modules/isolated-modules.plugin.d.ts +38 -0
- package/lib/capacitor-plugins/isolated-modules/isolated-modules.plugin.d.ts.map +1 -0
- package/lib/components/account-item/account-item.component.d.ts +15 -0
- package/lib/components/account-item/account-item.component.d.ts.map +1 -0
- package/lib/components/account-selection/account-selection.component.d.ts +23 -0
- package/lib/components/account-selection/account-selection.component.d.ts.map +1 -0
- package/lib/components/components.module.d.ts +28 -0
- package/lib/components/components.module.d.ts.map +1 -0
- package/lib/components/currency-symbol/currency-symbol.component.d.ts +20 -0
- package/lib/components/currency-symbol/currency-symbol.component.d.ts.map +1 -0
- package/lib/components/currency-symbol/currency-symbol.facade.d.ts +16 -0
- package/lib/components/currency-symbol/currency-symbol.facade.d.ts.map +1 -0
- package/lib/components/currency-symbol/currency-symbol.types.d.ts +35 -0
- package/lib/components/currency-symbol/currency-symbol.types.d.ts.map +1 -0
- package/lib/components/from-to/from-to.component.d.ts +33 -0
- package/lib/components/from-to/from-to.component.d.ts.map +1 -0
- package/lib/components/iac-qr/iac-qr.component.d.ts +45 -0
- package/lib/components/iac-qr/iac-qr.component.d.ts.map +1 -0
- package/lib/components/identicon/identicon.component.d.ts +14 -0
- package/lib/components/identicon/identicon.component.d.ts.map +1 -0
- package/lib/components/isolated-modules-badges/isolated-modules-badges.component.d.ts +8 -0
- package/lib/components/isolated-modules-badges/isolated-modules-badges.component.d.ts.map +1 -0
- package/lib/components/isolated-modules-details/isolated-modules-details.component.d.ts +17 -0
- package/lib/components/isolated-modules-details/isolated-modules-details.component.d.ts.map +1 -0
- package/lib/components/isolated-modules-details/isolated-modules-details.facade.d.ts +17 -0
- package/lib/components/isolated-modules-details/isolated-modules-details.facade.d.ts.map +1 -0
- package/lib/components/isolated-modules-list/isolated-modules-list.component.d.ts +20 -0
- package/lib/components/isolated-modules-list/isolated-modules-list.component.d.ts.map +1 -0
- package/lib/components/isolated-modules-list/isolated-modules-list.facade.d.ts +15 -0
- package/lib/components/isolated-modules-list/isolated-modules-list.facade.d.ts.map +1 -0
- package/lib/components/isolated-modules-onboarding/isolated-modules-onboarding.component.d.ts +6 -0
- package/lib/components/isolated-modules-onboarding/isolated-modules-onboarding.component.d.ts.map +1 -0
- package/lib/components/network-badge/network-badge.component.d.ts +9 -0
- package/lib/components/network-badge/network-badge.component.d.ts.map +1 -0
- package/lib/components/qr/qr.component.d.ts +16 -0
- package/lib/components/qr/qr.component.d.ts.map +1 -0
- package/lib/components/qr-settings/qr-settings.component.d.ts +12 -0
- package/lib/components/qr-settings/qr-settings.component.d.ts.map +1 -0
- package/lib/components/titled-address/titled-address.component.d.ts +13 -0
- package/lib/components/titled-address/titled-address.component.d.ts.map +1 -0
- package/lib/components/titled-text/titled-text.component.d.ts +11 -0
- package/lib/components/titled-text/titled-text.component.d.ts.map +1 -0
- package/lib/config/app-config.d.ts +15 -0
- package/lib/config/app-config.d.ts.map +1 -0
- package/lib/pages/isolated-modules-list/isolated-modules-list.facade.d.ts +16 -0
- package/lib/pages/isolated-modules-list/isolated-modules-list.facade.d.ts.map +1 -0
- package/lib/pipes/amount-converter/amount-converter.pipe.d.ts +29 -0
- package/lib/pipes/amount-converter/amount-converter.pipe.d.ts.map +1 -0
- package/lib/pipes/fee-converter/fee-converter.pipe.d.ts +20 -0
- package/lib/pipes/fee-converter/fee-converter.pipe.d.ts.map +1 -0
- package/lib/pipes/pipes.module.d.ts +10 -0
- package/lib/pipes/pipes.module.d.ts.map +1 -0
- package/lib/pipes/wallet-filter/wallet-filter.pipe.d.ts +15 -0
- package/lib/pipes/wallet-filter/wallet-filter.pipe.d.ts.map +1 -0
- package/lib/protocol/adapter/protocol-v0-adapter.d.ts +231 -0
- package/lib/protocol/adapter/protocol-v0-adapter.d.ts.map +1 -0
- package/lib/protocol/isolated/base-isolated.d.ts +11 -0
- package/lib/protocol/isolated/base-isolated.d.ts.map +1 -0
- package/lib/protocol/isolated/block-explorer-isolated.d.ts +14 -0
- package/lib/protocol/isolated/block-explorer-isolated.d.ts.map +1 -0
- package/lib/protocol/isolated/protocol-offline-isolated.d.ts +17 -0
- package/lib/protocol/isolated/protocol-offline-isolated.d.ts.map +1 -0
- package/lib/protocol/isolated/protocol-online-isolated.d.ts +21 -0
- package/lib/protocol/isolated/protocol-online-isolated.d.ts.map +1 -0
- package/lib/protocol/isolated/v3-serializer-companion-isolated.d.ts +17 -0
- package/lib/protocol/isolated/v3-serializer-companion-isolated.d.ts.map +1 -0
- package/lib/services/address/address.service.d.ts +26 -0
- package/lib/services/address/address.service.d.ts.map +1 -0
- package/lib/services/clipboard/clipboard.service.d.ts +14 -0
- package/lib/services/clipboard/clipboard.service.d.ts.map +1 -0
- package/lib/services/deeplink/deeplink.service.d.ts +18 -0
- package/lib/services/deeplink/deeplink.service.d.ts.map +1 -0
- package/lib/services/environment/base-environment.service.d.ts +6 -0
- package/lib/services/environment/base-environment.service.d.ts.map +1 -0
- package/lib/services/filesystem/filesystem.service.d.ts +42 -0
- package/lib/services/filesystem/filesystem.service.d.ts.map +1 -0
- package/lib/services/iac/base.iac.service.d.ts +41 -0
- package/lib/services/iac/base.iac.service.d.ts.map +1 -0
- package/lib/services/iac/message-handler-single.d.ts +20 -0
- package/lib/services/iac/message-handler-single.d.ts.map +1 -0
- package/lib/services/iac/message-handler.d.ts +34 -0
- package/lib/services/iac/message-handler.d.ts.map +1 -0
- package/lib/services/iac/qr-generator.d.ts +13 -0
- package/lib/services/iac/qr-generator.d.ts.map +1 -0
- package/lib/services/image/fetcher/image-direct.fetcher.d.ts +9 -0
- package/lib/services/image/fetcher/image-direct.fetcher.d.ts.map +1 -0
- package/lib/services/image/fetcher/image-proxy.fetcher.d.ts +9 -0
- package/lib/services/image/fetcher/image-proxy.fetcher.d.ts.map +1 -0
- package/lib/services/image/image.service.d.ts +20 -0
- package/lib/services/image/image.service.d.ts.map +1 -0
- package/lib/services/key-pair/key-pair.service.d.ts +14 -0
- package/lib/services/key-pair/key-pair.service.d.ts.map +1 -0
- package/lib/services/language/language.service.d.ts +21 -0
- package/lib/services/language/language.service.d.ts.map +1 -0
- package/lib/services/modules/base-modules.service.d.ts +34 -0
- package/lib/services/modules/base-modules.service.d.ts.map +1 -0
- package/lib/services/modules/controller/base-modules.controller.d.ts +19 -0
- package/lib/services/modules/controller/base-modules.controller.d.ts.map +1 -0
- package/lib/services/modules/controller/integral/integral-modules.controller.d.ts +22 -0
- package/lib/services/modules/controller/integral/integral-modules.controller.d.ts.map +1 -0
- package/lib/services/modules/controller/isolated/isolated-modules.controller.d.ts +32 -0
- package/lib/services/modules/controller/isolated/isolated-modules.controller.d.ts.map +1 -0
- package/lib/services/modules/controller/modules.controller.d.ts +27 -0
- package/lib/services/modules/controller/modules.controller.d.ts.map +1 -0
- package/lib/services/permissions/permissions.service.d.ts +39 -0
- package/lib/services/permissions/permissions.service.d.ts.map +1 -0
- package/lib/services/protocol/defaults.d.ts +6 -0
- package/lib/services/protocol/defaults.d.ts.map +1 -0
- package/lib/services/protocol/protocol.service.d.ts +47 -0
- package/lib/services/protocol/protocol.service.d.ts.map +1 -0
- package/lib/services/protocol/store/base-protocol-store.service.d.ts +36 -0
- package/lib/services/protocol/store/base-protocol-store.service.d.ts.map +1 -0
- package/lib/services/protocol/store/main/main-protocol-store.service.d.ts +21 -0
- package/lib/services/protocol/store/main/main-protocol-store.service.d.ts.map +1 -0
- package/lib/services/protocol/store/sub/sub-protocol-store.service.d.ts +31 -0
- package/lib/services/protocol/store/sub/sub-protocol-store.service.d.ts.map +1 -0
- package/lib/services/qr/qr-generators/bc-ur-generator.d.ts +16 -0
- package/lib/services/qr/qr-generators/bc-ur-generator.d.ts.map +1 -0
- package/lib/services/qr/qr-generators/metamask-generator.d.ts +16 -0
- package/lib/services/qr/qr-generators/metamask-generator.d.ts.map +1 -0
- package/lib/services/qr/qr-generators/output-descriptor-generator.d.ts +13 -0
- package/lib/services/qr/qr-generators/output-descriptor-generator.d.ts.map +1 -0
- package/lib/services/qr/qr-generators/serializer-v2-generator.d.ts +13 -0
- package/lib/services/qr/qr-generators/serializer-v2-generator.d.ts.map +1 -0
- package/lib/services/qr/qr-generators/serializer-v3-generator.d.ts +12 -0
- package/lib/services/qr/qr-generators/serializer-v3-generator.d.ts.map +1 -0
- package/lib/services/qr/qr-generators/xpub-generator.d.ts +12 -0
- package/lib/services/qr/qr-generators/xpub-generator.d.ts.map +1 -0
- package/lib/services/qr/qr-handler/serializer-v2-handler.d.ts +20 -0
- package/lib/services/qr/qr-handler/serializer-v2-handler.d.ts.map +1 -0
- package/lib/services/qr/qr-handler/serializer-v3-handler.d.ts +23 -0
- package/lib/services/qr/qr-handler/serializer-v3-handler.d.ts.map +1 -0
- package/lib/services/qr-scanner/qr-scanner.service.d.ts +23 -0
- package/lib/services/qr-scanner/qr-scanner.service.d.ts.map +1 -0
- package/lib/services/serializer/serializer.service.d.ts +34 -0
- package/lib/services/serializer/serializer.service.d.ts.map +1 -0
- package/lib/services/storage/base.storage.d.ts +15 -0
- package/lib/services/storage/base.storage.d.ts.map +1 -0
- package/lib/services/storage/storage.service.d.ts +28 -0
- package/lib/services/storage/storage.service.d.ts.map +1 -0
- package/lib/services/token/token.service.d.ts +11 -0
- package/lib/services/token/token.service.d.ts.map +1 -0
- package/lib/services/transaction/transaction.service.d.ts +21 -0
- package/lib/services/transaction/transaction.service.d.ts.map +1 -0
- package/lib/services/ui-event/ui-event.service.d.ts +58 -0
- package/lib/services/ui-event/ui-event.service.d.ts.map +1 -0
- package/lib/services/ui-event-elements/ui-event-elements.service.d.ts +16 -0
- package/lib/services/ui-event-elements/ui-event-elements.service.d.ts.map +1 -0
- package/lib/services/uri/uri.service.d.ts +15 -0
- package/lib/services/uri/uri.service.d.ts.map +1 -0
- package/lib/translation/AirGapTranslateLoader.d.ts +15 -0
- package/lib/translation/AirGapTranslateLoader.d.ts.map +1 -0
- package/lib/types/Either.d.ts +2 -0
- package/lib/types/Either.d.ts.map +1 -0
- package/lib/types/ExternalAliasResolver.d.ts +6 -0
- package/lib/types/ExternalAliasResolver.d.ts.map +1 -0
- package/lib/types/RuntimeMode.d.ts +5 -0
- package/lib/types/RuntimeMode.d.ts.map +1 -0
- package/lib/types/SupportedLanguage.d.ts +2 -0
- package/lib/types/SupportedLanguage.d.ts.map +1 -0
- package/lib/types/Token.d.ts +9 -0
- package/lib/types/Token.d.ts.map +1 -0
- package/lib/types/isolated-modules/IsolatedModule.d.ts +28 -0
- package/lib/types/isolated-modules/IsolatedModule.d.ts.map +1 -0
- package/lib/types/isolated-modules/IsolatedModuleManifest.d.ts +24 -0
- package/lib/types/isolated-modules/IsolatedModuleManifest.d.ts.map +1 -0
- package/lib/types/isolated-modules/IsolatedModuleMetadata.d.ts +21 -0
- package/lib/types/isolated-modules/IsolatedModuleMetadata.d.ts.map +1 -0
- package/lib/types/ui/UIAction.d.ts +10 -0
- package/lib/types/ui/UIAction.d.ts.map +1 -0
- package/lib/types/ui/UIResource.d.ts +11 -0
- package/lib/types/ui/UIResource.d.ts.map +1 -0
- package/lib/utils/ExposedPromise.d.ts +40 -0
- package/lib/utils/ExposedPromise.d.ts.map +1 -0
- package/lib/utils/airgap-transaction.d.ts +4 -0
- package/lib/utils/airgap-transaction.d.ts.map +1 -0
- package/lib/utils/array.d.ts +6 -0
- package/lib/utils/array.d.ts.map +1 -0
- package/lib/utils/modules/isolated/isolated-modules-metadata.d.ts +3 -0
- package/lib/utils/modules/isolated/isolated-modules-metadata.d.ts.map +1 -0
- package/lib/utils/modules/load-protocol.d.ts +4 -0
- package/lib/utils/modules/load-protocol.d.ts.map +1 -0
- package/lib/utils/not-initialized.d.ts +2 -0
- package/lib/utils/not-initialized.d.ts.map +1 -0
- package/lib/utils/protocol/delegation.d.ts +6 -0
- package/lib/utils/protocol/delegation.d.ts.map +1 -0
- package/lib/utils/protocol/protocol-identifier.d.ts +3 -0
- package/lib/utils/protocol/protocol-identifier.d.ts.map +1 -0
- package/lib/utils/protocol/protocol-network-identifier.d.ts +8 -0
- package/lib/utils/protocol/protocol-network-identifier.d.ts.map +1 -0
- package/lib/utils/protocol/protocol-options.d.ts +6 -0
- package/lib/utils/protocol/protocol-options.d.ts.map +1 -0
- package/lib/utils/protocol/protocol-v0-adapter.d.ts +75 -0
- package/lib/utils/protocol/protocol-v0-adapter.d.ts.map +1 -0
- package/lib/utils/utils.d.ts +9 -0
- package/lib/utils/utils.d.ts.map +1 -0
- package/lib/utils/worker.d.ts +11 -0
- package/lib/utils/worker.d.ts.map +1 -0
- package/package.json +88 -0
- package/public-api.d.ts +87 -0
- package/public-api.d.ts.map +1 -0
- package/src/assets/i18n-common/de.json +112 -0
- package/src/assets/i18n-common/en.json +112 -0
- package/src/assets/i18n-common/es.json +112 -0
- package/src/assets/i18n-common/fr.json +112 -0
- package/src/assets/i18n-common/pt_BR.json +112 -0
- package/src/assets/i18n-common/ru.json +112 -0
- package/src/assets/i18n-common/zh_CN.json +112 -0
- package/src/assets/img/identicon_placeholder.png +0 -0
- package/src/assets/native/isolated_modules/isolated-modules.js-engine-android.js +34 -0
- package/src/assets/native/isolated_modules/isolated-modules.script.js +304 -0
- package/src/assets/symbols/abt.svg +1 -0
- package/src/assets/symbols/adx.svg +1 -0
- package/src/assets/symbols/ae.svg +17 -0
- package/src/assets/symbols/agi.svg +1 -0
- package/src/assets/symbols/aion.svg +1 -0
- package/src/assets/symbols/amb.svg +1 -0
- package/src/assets/symbols/ampl.svg +7 -0
- package/src/assets/symbols/ant.svg +1 -0
- package/src/assets/symbols/aoa.svg +7 -0
- package/src/assets/symbols/appc.svg +1 -0
- package/src/assets/symbols/aqua.svg +5 -0
- package/src/assets/symbols/arn.svg +1 -0
- package/src/assets/symbols/ary.svg +1 -0
- package/src/assets/symbols/ast.svg +1 -0
- package/src/assets/symbols/astr.png +0 -0
- package/src/assets/symbols/atm.svg +1 -0
- package/src/assets/symbols/atom.svg +1 -0
- package/src/assets/symbols/auto.svg +1 -0
- package/src/assets/symbols/bal.svg +7 -0
- package/src/assets/symbols/band.svg +7 -0
- package/src/assets/symbols/bat.svg +1 -0
- package/src/assets/symbols/bcbc.svg +1 -0
- package/src/assets/symbols/bcpt.svg +1 -0
- package/src/assets/symbols/bix.svg +1 -0
- package/src/assets/symbols/blz.svg +1 -0
- package/src/assets/symbols/bnb.svg +1 -0
- package/src/assets/symbols/bnt.svg +1 -0
- package/src/assets/symbols/bnty.svg +1 -0
- package/src/assets/symbols/bpt.svg +1 -0
- package/src/assets/symbols/brc.svg +7 -0
- package/src/assets/symbols/brd.svg +1 -0
- package/src/assets/symbols/btc.svg +1 -0
- package/src/assets/symbols/btctz.png +0 -0
- package/src/assets/symbols/btm.svg +1 -0
- package/src/assets/symbols/busd.svg +7 -0
- package/src/assets/symbols/bytom.svg +7 -0
- package/src/assets/symbols/cacu.svg +1 -0
- package/src/assets/symbols/cdt.svg +1 -0
- package/src/assets/symbols/cel.svg +7 -0
- package/src/assets/symbols/cennz.svg +7 -0
- package/src/assets/symbols/cfx.svg +1 -0
- package/src/assets/symbols/chsb.svg +7 -0
- package/src/assets/symbols/chz.svg +7 -0
- package/src/assets/symbols/ckbtc.png +0 -0
- package/src/assets/symbols/cmt.svg +1 -0
- package/src/assets/symbols/cnd.svg +1 -0
- package/src/assets/symbols/cob.svg +1 -0
- package/src/assets/symbols/comp.svg +7 -0
- package/src/assets/symbols/coreum.png +0 -0
- package/src/assets/symbols/cred.svg +1 -0
- package/src/assets/symbols/cro.svg +7 -0
- package/src/assets/symbols/crpt.svg +1 -0
- package/src/assets/symbols/crv.svg +7 -0
- package/src/assets/symbols/cs.svg +1 -0
- package/src/assets/symbols/ctez.svg +1 -0
- package/src/assets/symbols/ctr.svg +1 -0
- package/src/assets/symbols/ctxc.svg +1 -0
- package/src/assets/symbols/cusdc.svg +7 -0
- package/src/assets/symbols/cvc.svg +1 -0
- package/src/assets/symbols/cvt.svg +7 -0
- package/src/assets/symbols/czrx.svg +7 -0
- package/src/assets/symbols/dai.svg +7 -0
- package/src/assets/symbols/dat.svg +1 -0
- package/src/assets/symbols/data.svg +1 -0
- package/src/assets/symbols/dcn.svg +1 -0
- package/src/assets/symbols/deez.svg +1 -0
- package/src/assets/symbols/dent.svg +1 -0
- package/src/assets/symbols/dew.svg +1 -0
- package/src/assets/symbols/dgd.svg +1 -0
- package/src/assets/symbols/dia.svg +7 -0
- package/src/assets/symbols/divx.svg +7 -0
- package/src/assets/symbols/dlt.svg +1 -0
- package/src/assets/symbols/dnt.svg +1 -0
- package/src/assets/symbols/dock.svg +1 -0
- package/src/assets/symbols/doga.png +0 -0
- package/src/assets/symbols/dot.svg +14 -0
- package/src/assets/symbols/drgn.svg +1 -0
- package/src/assets/symbols/drop.svg +1 -0
- package/src/assets/symbols/dth.svg +1 -0
- package/src/assets/symbols/dtr.svg +1 -0
- package/src/assets/symbols/dx.svg +7 -0
- package/src/assets/symbols/edg.svg +1 -0
- package/src/assets/symbols/edo.svg +1 -0
- package/src/assets/symbols/elf.svg +1 -0
- package/src/assets/symbols/elix.svg +1 -0
- package/src/assets/symbols/eng.svg +1 -0
- package/src/assets/symbols/enj.svg +1 -0
- package/src/assets/symbols/entrp.svg +1 -0
- package/src/assets/symbols/eos.svg +1 -0
- package/src/assets/symbols/eth.svg +1 -0
- package/src/assets/symbols/ethtz.png +0 -0
- package/src/assets/symbols/eurc.svg +8 -0
- package/src/assets/symbols/evx.svg +1 -0
- package/src/assets/symbols/fet.svg +7 -0
- package/src/assets/symbols/frax.svg +26 -0
- package/src/assets/symbols/fsn.svg +1 -0
- package/src/assets/symbols/ftc.svg +1 -0
- package/src/assets/symbols/ftm.svg +7 -0
- package/src/assets/symbols/fuel.svg +1 -0
- package/src/assets/symbols/fun.svg +1 -0
- package/src/assets/symbols/gbx.svg +1 -0
- package/src/assets/symbols/generic-coin.svg +1 -0
- package/src/assets/symbols/glmr.svg +1 -0
- package/src/assets/symbols/gno.svg +1 -0
- package/src/assets/symbols/gnt.svg +1 -0
- package/src/assets/symbols/grs.svg +1 -0
- package/src/assets/symbols/gsc.svg +1 -0
- package/src/assets/symbols/gto.svg +1 -0
- package/src/assets/symbols/gup.svg +1 -0
- package/src/assets/symbols/gusd.svg +1 -0
- package/src/assets/symbols/gvt.svg +1 -0
- package/src/assets/symbols/gzr.svg +1 -0
- package/src/assets/symbols/hedg.svg +7 -0
- package/src/assets/symbols/hodl.svg +1 -0
- package/src/assets/symbols/hot.svg +7 -0
- package/src/assets/symbols/hpb.svg +1 -0
- package/src/assets/symbols/ht.svg +1 -0
- package/src/assets/symbols/husd.svg +7 -0
- package/src/assets/symbols/icn.svg +1 -0
- package/src/assets/symbols/icp.svg +16 -0
- package/src/assets/symbols/icx.svg +1 -0
- package/src/assets/symbols/inb.svg +7 -0
- package/src/assets/symbols/ino.svg +7 -0
- package/src/assets/symbols/ins.svg +1 -0
- package/src/assets/symbols/iost.svg +1 -0
- package/src/assets/symbols/iotx.svg +1 -0
- package/src/assets/symbols/itc.svg +1 -0
- package/src/assets/symbols/jnt.svg +1 -0
- package/src/assets/symbols/kcs.svg +7 -0
- package/src/assets/symbols/kin.svg +1 -0
- package/src/assets/symbols/knc.svg +1 -0
- package/src/assets/symbols/ksm.svg +1 -0
- package/src/assets/symbols/kusd.svg +1 -0
- package/src/assets/symbols/ldo.svg +97 -0
- package/src/assets/symbols/lend.svg +1 -0
- package/src/assets/symbols/leo.svg +7 -0
- package/src/assets/symbols/link.svg +7 -0
- package/src/assets/symbols/loom.svg +1 -0
- package/src/assets/symbols/lpt.svg +1 -0
- package/src/assets/symbols/lrc.svg +1 -0
- package/src/assets/symbols/lun.svg +1 -0
- package/src/assets/symbols/mana.svg +1 -0
- package/src/assets/symbols/matic.svg +7 -0
- package/src/assets/symbols/mcap.svg +1 -0
- package/src/assets/symbols/mco.svg +1 -0
- package/src/assets/symbols/mda.svg +1 -0
- package/src/assets/symbols/mds.svg +1 -0
- package/src/assets/symbols/mkr.svg +1 -0
- package/src/assets/symbols/mln.svg +7 -0
- package/src/assets/symbols/mnw.svg +1 -0
- package/src/assets/symbols/mod.svg +1 -0
- package/src/assets/symbols/movr.svg +10 -0
- package/src/assets/symbols/mth.svg +1 -0
- package/src/assets/symbols/mtl.svg +1 -0
- package/src/assets/symbols/mxc.svg +7 -0
- package/src/assets/symbols/nas.svg +1 -0
- package/src/assets/symbols/ncash.svg +1 -0
- package/src/assets/symbols/neu.svg +1 -0
- package/src/assets/symbols/nexo.svg +1 -0
- package/src/assets/symbols/ngc.svg +1 -0
- package/src/assets/symbols/nio.svg +1 -0
- package/src/assets/symbols/nmr.svg +7 -0
- package/src/assets/symbols/noah.svg +7 -0
- package/src/assets/symbols/npxs.svg +1 -0
- package/src/assets/symbols/nuls.svg +1 -0
- package/src/assets/symbols/nxm.svg +7 -0
- package/src/assets/symbols/oax.svg +1 -0
- package/src/assets/symbols/ocean.svg +7 -0
- package/src/assets/symbols/okb.svg +7 -0
- package/src/assets/symbols/omg.svg +1 -0
- package/src/assets/symbols/ong.svg +1 -0
- package/src/assets/symbols/op.svg +21 -0
- package/src/assets/symbols/ost.svg +1 -0
- package/src/assets/symbols/pax.svg +1 -0
- package/src/assets/symbols/paxg.svg +7 -0
- package/src/assets/symbols/pay.svg +1 -0
- package/src/assets/symbols/plenty.svg +1 -0
- package/src/assets/symbols/plr.svg +1 -0
- package/src/assets/symbols/pnk.svg +7 -0
- package/src/assets/symbols/poe.svg +1 -0
- package/src/assets/symbols/poly.svg +1 -0
- package/src/assets/symbols/powr.svg +1 -0
- package/src/assets/symbols/ppp.svg +1 -0
- package/src/assets/symbols/ppt.svg +1 -0
- package/src/assets/symbols/prl.svg +1 -0
- package/src/assets/symbols/qash.svg +1 -0
- package/src/assets/symbols/qnt.svg +7 -0
- package/src/assets/symbols/qrl.svg +1 -0
- package/src/assets/symbols/qsp.svg +1 -0
- package/src/assets/symbols/qtum.svg +1 -0
- package/src/assets/symbols/quipu.png +0 -0
- package/src/assets/symbols/r.svg +1 -0
- package/src/assets/symbols/rcn.svg +1 -0
- package/src/assets/symbols/rdn.svg +1 -0
- package/src/assets/symbols/ren.svg +7 -0
- package/src/assets/symbols/rep.svg +1 -0
- package/src/assets/symbols/repv2.svg +7 -0
- package/src/assets/symbols/req.svg +1 -0
- package/src/assets/symbols/rev.svg +7 -0
- package/src/assets/symbols/rhoc.svg +1 -0
- package/src/assets/symbols/rlc.svg +1 -0
- package/src/assets/symbols/rsr.svg +7 -0
- package/src/assets/symbols/sai.svg +7 -0
- package/src/assets/symbols/salt.svg +1 -0
- package/src/assets/symbols/san.svg +1 -0
- package/src/assets/symbols/sdn.svg +1 -0
- package/src/assets/symbols/shx.svg +32 -0
- package/src/assets/symbols/sirs.svg +1 -0
- package/src/assets/symbols/smart.svg +1 -0
- package/src/assets/symbols/sngls.svg +1 -0
- package/src/assets/symbols/snm.svg +1 -0
- package/src/assets/symbols/snt.svg +1 -0
- package/src/assets/symbols/snx.svg +7 -0
- package/src/assets/symbols/soc.svg +1 -0
- package/src/assets/symbols/sol.svg +1 -0
- package/src/assets/symbols/spank.svg +1 -0
- package/src/assets/symbols/sphtx.svg +1 -0
- package/src/assets/symbols/srm.svg +7 -0
- package/src/assets/symbols/srn.svg +1 -0
- package/src/assets/symbols/stake.svg +7 -0
- package/src/assets/symbols/stellar.png +0 -0
- package/src/assets/symbols/storj.svg +1 -0
- package/src/assets/symbols/storm.svg +1 -0
- package/src/assets/symbols/stq.svg +1 -0
- package/src/assets/symbols/stxtz.svg +18 -0
- package/src/assets/symbols/sub.svg +1 -0
- package/src/assets/symbols/sushi.svg +7 -0
- package/src/assets/symbols/sxp.svg +7 -0
- package/src/assets/symbols/sxtz.svg +6 -0
- package/src/assets/symbols/taas.svg +1 -0
- package/src/assets/symbols/tau.svg +1 -0
- package/src/assets/symbols/tbx.svg +1 -0
- package/src/assets/symbols/tel.svg +1 -0
- package/src/assets/symbols/ten.svg +1 -0
- package/src/assets/symbols/theta.svg +1 -0
- package/src/assets/symbols/tix.svg +1 -0
- package/src/assets/symbols/tkn.svg +1 -0
- package/src/assets/symbols/tnt.svg +1 -0
- package/src/assets/symbols/tomo.svg +1 -0
- package/src/assets/symbols/trac.svg +7 -0
- package/src/assets/symbols/trb.svg +7 -0
- package/src/assets/symbols/trx.svg +1 -0
- package/src/assets/symbols/tusd.svg +1 -0
- package/src/assets/symbols/tzbtc.svg +1 -0
- package/src/assets/symbols/ubt.svg +7 -0
- package/src/assets/symbols/ubtc.svg +1 -0
- package/src/assets/symbols/udefi.svg +1 -0
- package/src/assets/symbols/uma.svg +7 -0
- package/src/assets/symbols/usdc.svg +1 -0
- package/src/assets/symbols/usdt.png +0 -0
- package/src/assets/symbols/usdt.svg +1 -0
- package/src/assets/symbols/usdtz.svg +17 -0
- package/src/assets/symbols/ust.svg +1 -0
- package/src/assets/symbols/utk.svg +1 -0
- package/src/assets/symbols/uusd.svg +1 -0
- package/src/assets/symbols/uxtz.svg +1 -0
- package/src/assets/symbols/velo.svg +5 -0
- package/src/assets/symbols/ven.svg +7 -0
- package/src/assets/symbols/veri.svg +1 -0
- package/src/assets/symbols/verse.svg +1 -0
- package/src/assets/symbols/vest.svg +7 -0
- package/src/assets/symbols/vib.svg +1 -0
- package/src/assets/symbols/vibe.svg +1 -0
- package/src/assets/symbols/wabi.svg +1 -0
- package/src/assets/symbols/wax.svg +1 -0
- package/src/assets/symbols/wbtc.svg +7 -0
- package/src/assets/symbols/weth.svg +18 -0
- package/src/assets/symbols/wic.svg +7 -0
- package/src/assets/symbols/wings.svg +1 -0
- package/src/assets/symbols/wnxm.svg +7 -0
- package/src/assets/symbols/wpr.svg +1 -0
- package/src/assets/symbols/wrap.png +0 -0
- package/src/assets/symbols/wtc.svg +1 -0
- package/src/assets/symbols/wusdc.png +0 -0
- package/src/assets/symbols/xchf.svg +1 -0
- package/src/assets/symbols/xdce.svg +7 -0
- package/src/assets/symbols/xin.svg +7 -0
- package/src/assets/symbols/xpa.svg +1 -0
- package/src/assets/symbols/xpl.svg +1 -0
- package/src/assets/symbols/xtz.svg +5 -0
- package/src/assets/symbols/yfi.svg +7 -0
- package/src/assets/symbols/you.svg +1 -0
- package/src/assets/symbols/yoyow.svg +1 -0
- package/src/assets/symbols/ytez.svg +1 -0
- package/src/assets/symbols/zb.svg +7 -0
- package/src/assets/symbols/zil.svg +1 -0
- package/src/assets/symbols/zrx.svg +1 -0
- package/src/assets/workers/airgap-coin-lib.js +119 -0
- package/wallfree-dev-angular-core.d.ts.map +1 -0
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { SubProtocolSymbols, MainProtocolSymbols } from '@wallfree-dev/coinlib-core';
|
|
3
|
+
import { erc20Tokens } from '@wallfree-dev/ethereum';
|
|
4
|
+
import { ExposedPromise } from '../../utils/ExposedPromise';
|
|
5
|
+
import { getMainIdentifier } from '../../utils/protocol/protocol-identifier';
|
|
6
|
+
import { getDefaultPassiveProtocols, getDefaultActiveProtocols, getDefaultPassiveSubProtocols, getDefaultActiveSubProtocols } from './defaults';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "./store/main/main-protocol-store.service";
|
|
9
|
+
import * as i2 from "./store/sub/sub-protocol-store.service";
|
|
10
|
+
export class ProtocolService {
|
|
11
|
+
constructor(mainProtocolStore, subProtocolStore) {
|
|
12
|
+
this.mainProtocolStore = mainProtocolStore;
|
|
13
|
+
this.subProtocolStore = subProtocolStore;
|
|
14
|
+
this.isReady = new ExposedPromise();
|
|
15
|
+
}
|
|
16
|
+
get isInitialized() {
|
|
17
|
+
return this.mainProtocolStore.isInitialized && this.subProtocolStore.isInitialized;
|
|
18
|
+
}
|
|
19
|
+
async getSupportedProtocols() {
|
|
20
|
+
await this.waitReady();
|
|
21
|
+
return Array.from((await this.mainProtocolStore.supportedProtocols).values());
|
|
22
|
+
}
|
|
23
|
+
async getPassiveProtocols() {
|
|
24
|
+
await this.waitReady();
|
|
25
|
+
return Array.from(this.mainProtocolStore.passiveProtocols.values());
|
|
26
|
+
}
|
|
27
|
+
async getActiveProtocols() {
|
|
28
|
+
await this.waitReady();
|
|
29
|
+
return Array.from(this.mainProtocolStore.activeProtocols.values());
|
|
30
|
+
}
|
|
31
|
+
async getSupportedSubProtocols() {
|
|
32
|
+
await this.waitReady();
|
|
33
|
+
return this.subProtocolStore.supportedProtocols;
|
|
34
|
+
}
|
|
35
|
+
async getPassiveSubProtocols() {
|
|
36
|
+
await this.waitReady();
|
|
37
|
+
return this.subProtocolStore.passiveProtocols;
|
|
38
|
+
}
|
|
39
|
+
async getActiveSubProtocols() {
|
|
40
|
+
await this.waitReady();
|
|
41
|
+
return this.subProtocolStore.activeProtocols;
|
|
42
|
+
}
|
|
43
|
+
async init(config) {
|
|
44
|
+
if (this.isInitialized) {
|
|
45
|
+
// eslint-disable-next-line no-console
|
|
46
|
+
console.log('[ProtocolService] already initialized');
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
await Promise.all([
|
|
50
|
+
this.mainProtocolStore.init({
|
|
51
|
+
passiveProtocols: (config?.passiveProtocols ?? (await getDefaultPassiveProtocols())).concat(config?.extraPassiveProtocols ?? []),
|
|
52
|
+
activeProtocols: (config?.activeProtocols ?? (await getDefaultActiveProtocols())).concat(config?.extraActiveProtocols ?? [])
|
|
53
|
+
}),
|
|
54
|
+
this.subProtocolStore.init({
|
|
55
|
+
passiveSubProtocols: (config?.passiveSubProtocols ?? (await getDefaultPassiveSubProtocols())).concat(config?.extraPassiveSubProtocols ?? []),
|
|
56
|
+
activeSubProtocols: (config?.activeSubProtocols ?? (await getDefaultActiveSubProtocols())).concat(config?.extraActiveSubProtocols ?? [])
|
|
57
|
+
})
|
|
58
|
+
]);
|
|
59
|
+
this.isReady.resolve();
|
|
60
|
+
}
|
|
61
|
+
async waitReady() {
|
|
62
|
+
return this.isReady.promise;
|
|
63
|
+
}
|
|
64
|
+
async isProtocolActive(protocolOrIdentifier, network) {
|
|
65
|
+
await this.waitReady();
|
|
66
|
+
return this.isProtocolRegistered(protocolOrIdentifier, network, true);
|
|
67
|
+
}
|
|
68
|
+
async isProtocolSupported(protocolOrIdentifier, network) {
|
|
69
|
+
await this.waitReady();
|
|
70
|
+
return this.isProtocolRegistered(protocolOrIdentifier, network, false);
|
|
71
|
+
}
|
|
72
|
+
async getProtocol(protocolOrIdentifier, network, activeOnly = true) {
|
|
73
|
+
await this.waitReady();
|
|
74
|
+
if (typeof protocolOrIdentifier === 'string') {
|
|
75
|
+
let protocol;
|
|
76
|
+
if (this.mainProtocolStore.isIdentifierValid(protocolOrIdentifier)) {
|
|
77
|
+
protocol = await this.mainProtocolStore.getProtocolByIdentifier(protocolOrIdentifier, network, activeOnly);
|
|
78
|
+
}
|
|
79
|
+
else if (this.subProtocolStore.isIdentifierValid(protocolOrIdentifier)) {
|
|
80
|
+
protocol = await this.subProtocolStore.getProtocolByIdentifier(protocolOrIdentifier, network, activeOnly);
|
|
81
|
+
if (protocol === undefined) {
|
|
82
|
+
const mainProtocolIdentifier = getMainIdentifier(protocolOrIdentifier);
|
|
83
|
+
return this.getProtocol(mainProtocolIdentifier, network, activeOnly);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (protocol === undefined) {
|
|
87
|
+
throw new Error(`Protocol ${protocolOrIdentifier} not supported`);
|
|
88
|
+
}
|
|
89
|
+
return protocol;
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
return protocolOrIdentifier;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
async addActiveProtocols(protocolOrProtocols) {
|
|
96
|
+
const protocols = Array.isArray(protocolOrProtocols) ? protocolOrProtocols : [protocolOrProtocols];
|
|
97
|
+
const filteredMainProtocols = await Promise.all(protocols.map(async (protocol) => {
|
|
98
|
+
const protocolIdentifier = await protocol.getIdentifier();
|
|
99
|
+
return this.mainProtocolStore.isIdentifierValid(protocolIdentifier) ? protocol : undefined;
|
|
100
|
+
}));
|
|
101
|
+
const mainProtocols = filteredMainProtocols.filter((protocol) => protocol !== undefined);
|
|
102
|
+
const filteredSubProtocols = await Promise.all(protocols.map(async (protocol) => {
|
|
103
|
+
const protocolIdentifier = await protocol.getIdentifier();
|
|
104
|
+
return this.subProtocolStore.isIdentifierValid(protocolIdentifier) ? protocol : undefined;
|
|
105
|
+
}));
|
|
106
|
+
const subProtocols = filteredSubProtocols.filter((protocol) => protocol !== undefined);
|
|
107
|
+
await Promise.all([this.addActiveMainProtocols(mainProtocols), this.addActiveSubProtocols(subProtocols)]);
|
|
108
|
+
}
|
|
109
|
+
async addActiveMainProtocols(protocolOrProtocols) {
|
|
110
|
+
await this.waitReady();
|
|
111
|
+
const protocols = Array.isArray(protocolOrProtocols) ? protocolOrProtocols : [protocolOrProtocols];
|
|
112
|
+
const filtered = await Promise.all(protocols.map(async (protocol) => {
|
|
113
|
+
const protocolIdentifier = await protocol.getIdentifier();
|
|
114
|
+
return this.mainProtocolStore.isIdentifierValid(protocolIdentifier) ? protocol : undefined;
|
|
115
|
+
}));
|
|
116
|
+
const validProtocols = await Promise.all(filtered
|
|
117
|
+
.filter((protocol) => protocol !== undefined)
|
|
118
|
+
.map(async (protocol) => {
|
|
119
|
+
const protocolAndNetworkIdentifier = await this.mainProtocolStore.getProtocolAndNetworkIdentifier(protocol);
|
|
120
|
+
return [protocolAndNetworkIdentifier, protocol];
|
|
121
|
+
}));
|
|
122
|
+
await this.mainProtocolStore.addActiveProtocols(new Map(validProtocols));
|
|
123
|
+
}
|
|
124
|
+
async addActiveSubProtocols(protocolOrProtocols) {
|
|
125
|
+
await this.waitReady();
|
|
126
|
+
const protocols = Array.isArray(protocolOrProtocols) ? protocolOrProtocols : [protocolOrProtocols];
|
|
127
|
+
const filtered = await Promise.all(protocols.map(async (protocol) => {
|
|
128
|
+
const protocolIdentifier = await protocol.getIdentifier();
|
|
129
|
+
return this.subProtocolStore.isIdentifierValid(protocolIdentifier) ? protocol : undefined;
|
|
130
|
+
}));
|
|
131
|
+
const validProtocols = filtered.filter((protocol) => protocol !== undefined);
|
|
132
|
+
const mapped = await Promise.all(validProtocols.map(async (protocol) => {
|
|
133
|
+
const protocolIdentifier = await protocol.getIdentifier();
|
|
134
|
+
const protocolOptions = await protocol.getOptions();
|
|
135
|
+
const mainIdentifier = getMainIdentifier(protocolIdentifier);
|
|
136
|
+
const protocolAndNetworkIdentifier = await this.subProtocolStore.getProtocolAndNetworkIdentifier(mainIdentifier, protocolOptions.network);
|
|
137
|
+
return [protocolAndNetworkIdentifier, [protocolIdentifier, protocol]];
|
|
138
|
+
}));
|
|
139
|
+
await this.subProtocolStore.addActiveProtocols(mapped.reduce((obj, [protocolAndNetworkIdentifier, [protocolIdentifier, protocol]]) => Object.assign(obj, {
|
|
140
|
+
[protocolAndNetworkIdentifier]: Object.assign(obj[protocolAndNetworkIdentifier] ?? {}, { [protocolIdentifier]: protocol })
|
|
141
|
+
}), {}));
|
|
142
|
+
}
|
|
143
|
+
async removeProtocols(protocolIdentifiers) {
|
|
144
|
+
await Promise.all([
|
|
145
|
+
this.mainProtocolStore.removeProtocols(protocolIdentifiers),
|
|
146
|
+
this.subProtocolStore.removeProtocols(protocolIdentifiers)
|
|
147
|
+
]);
|
|
148
|
+
}
|
|
149
|
+
async isProtocolAvailable(protocolIdentifier, networkIdentifier) {
|
|
150
|
+
await this.waitReady();
|
|
151
|
+
const protocol = this.mainProtocolStore.isIdentifierValid(protocolIdentifier)
|
|
152
|
+
? await this.mainProtocolStore.getProtocolByIdentifier(protocolIdentifier, networkIdentifier, true, false)
|
|
153
|
+
: await this.subProtocolStore.getProtocolByIdentifier(protocolIdentifier, networkIdentifier, true, false);
|
|
154
|
+
return protocol !== undefined;
|
|
155
|
+
}
|
|
156
|
+
async getSubProtocols(mainProtocol, network, activeOnly = true) {
|
|
157
|
+
await this.waitReady();
|
|
158
|
+
const mainIdentifier = typeof mainProtocol === 'string' ? mainProtocol : await mainProtocol.getIdentifier();
|
|
159
|
+
const targetNetwork = await this.subProtocolStore.getTargetNetwork(mainIdentifier, network);
|
|
160
|
+
const protocolAndNetworkIdentifier = await this.subProtocolStore.getProtocolAndNetworkIdentifier(mainIdentifier, targetNetwork);
|
|
161
|
+
const subProtocolsMap = await (activeOnly ? this.getActiveSubProtocols() : this.getSupportedSubProtocols());
|
|
162
|
+
return Object.values(subProtocolsMap[protocolAndNetworkIdentifier] ?? {}).filter((subProtocol) => subProtocol !== undefined);
|
|
163
|
+
}
|
|
164
|
+
async getAllSubProtocols(mainProtocol, activeOnly = true) {
|
|
165
|
+
await this.waitReady();
|
|
166
|
+
const mainIdentifier = typeof mainProtocol === 'string' ? mainProtocol : await mainProtocol.getIdentifier();
|
|
167
|
+
const subProtocolsMap = await (activeOnly ? this.getActiveSubProtocols() : this.getSupportedSubProtocols());
|
|
168
|
+
return Object.keys(subProtocolsMap)
|
|
169
|
+
.filter((key) => key.startsWith(mainIdentifier))
|
|
170
|
+
.map((key) => Object.values(subProtocolsMap[key] ?? {}))
|
|
171
|
+
.reduce((flatten, next) => flatten.concat(next), []);
|
|
172
|
+
}
|
|
173
|
+
async getNetworksForProtocol(protocolOrIdentifier, activeOnly = true) {
|
|
174
|
+
await this.waitReady();
|
|
175
|
+
const identifier = typeof protocolOrIdentifier === 'string' ? protocolOrIdentifier : await protocolOrIdentifier.getIdentifier();
|
|
176
|
+
return this.mainProtocolStore.isIdentifierValid(identifier)
|
|
177
|
+
? this.mainProtocolStore.getNetworksForProtocol(identifier, activeOnly)
|
|
178
|
+
: this.subProtocolStore.getNetworksForProtocol(identifier, activeOnly);
|
|
179
|
+
}
|
|
180
|
+
async getNetworkForProtocol(protocolOrIdentifier, networkIdentifier, activeOnly = true) {
|
|
181
|
+
const networks = await this.getNetworksForProtocol(protocolOrIdentifier, activeOnly);
|
|
182
|
+
return networks.find((network) => network.identifier === networkIdentifier);
|
|
183
|
+
}
|
|
184
|
+
async isAddressOfProtocol(protocolOrIdentifier, address) {
|
|
185
|
+
await this.waitReady();
|
|
186
|
+
const protocol = typeof protocolOrIdentifier === 'string' ? await this.getProtocol(protocolOrIdentifier) : protocolOrIdentifier;
|
|
187
|
+
return address.match(await protocol.getAddressValidationPattern()) !== null;
|
|
188
|
+
}
|
|
189
|
+
async getProtocolsForAddress(address) {
|
|
190
|
+
await this.waitReady();
|
|
191
|
+
const protocols = await this.getSupportedProtocols();
|
|
192
|
+
return (await Promise.all(protocols.map(async (protocol) => {
|
|
193
|
+
const isProtocolAddress = await this.isAddressOfProtocol(protocol, address);
|
|
194
|
+
return isProtocolAddress ? protocol : undefined;
|
|
195
|
+
}))).filter((protocol) => protocol !== undefined);
|
|
196
|
+
}
|
|
197
|
+
isKnownProtocolSymbol(symbol) {
|
|
198
|
+
if (this.knownProtocolSymbols === undefined) {
|
|
199
|
+
this.knownProtocolSymbols = new Set([
|
|
200
|
+
...Object.values(MainProtocolSymbols),
|
|
201
|
+
...Object.values(SubProtocolSymbols),
|
|
202
|
+
...Object.values(erc20Tokens).map((token) => token.identifier)
|
|
203
|
+
]);
|
|
204
|
+
}
|
|
205
|
+
return this.knownProtocolSymbols?.has(symbol) ?? false;
|
|
206
|
+
}
|
|
207
|
+
async isProtocolRegistered(protocolOrIdentifier, network, checkActiveOnly = true) {
|
|
208
|
+
const identifier = typeof protocolOrIdentifier === 'string' ? protocolOrIdentifier : await protocolOrIdentifier.getIdentifier();
|
|
209
|
+
const targetNetwork = this.mainProtocolStore.isIdentifierValid(identifier)
|
|
210
|
+
? await this.mainProtocolStore.getTargetNetwork(identifier, network)
|
|
211
|
+
: await this.subProtocolStore.getTargetNetwork(identifier, network);
|
|
212
|
+
const targetNetworkIdentifier = typeof targetNetwork === 'string' ? targetNetwork : targetNetwork?.identifier;
|
|
213
|
+
return this.getProtocol(identifier, targetNetwork, checkActiveOnly)
|
|
214
|
+
.then(async (protocol) => {
|
|
215
|
+
const foundIdentifier = await protocol.getIdentifier();
|
|
216
|
+
const foundNetworkIdentifier = targetNetworkIdentifier !== undefined ? (await protocol.getOptions()).network.identifier : undefined;
|
|
217
|
+
return foundIdentifier === identifier && foundNetworkIdentifier === targetNetworkIdentifier;
|
|
218
|
+
})
|
|
219
|
+
.catch(() => false);
|
|
220
|
+
}
|
|
221
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProtocolService, deps: [{ token: i1.MainProtocolStoreService }, { token: i2.SubProtocolStoreService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
222
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProtocolService, providedIn: 'root' }); }
|
|
223
|
+
}
|
|
224
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProtocolService, decorators: [{
|
|
225
|
+
type: Injectable,
|
|
226
|
+
args: [{
|
|
227
|
+
providedIn: 'root'
|
|
228
|
+
}]
|
|
229
|
+
}], ctorParameters: () => [{ type: i1.MainProtocolStoreService }, { type: i2.SubProtocolStoreService }] });
|
|
230
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9jb2wuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvcHJvdG9jb2wvcHJvdG9jb2wuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFLTCxrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ3BCLE1BQU0sNEJBQTRCLENBQUE7QUFFbkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQTtBQUk1RSxPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLHlCQUF5QixFQUN6Qiw2QkFBNkIsRUFDN0IsNEJBQTRCLEVBQzdCLE1BQU0sWUFBWSxDQUFBOzs7O0FBYW5CLE1BQU0sT0FBTyxlQUFlO0lBSTFCLFlBQTZCLGlCQUEyQyxFQUFtQixnQkFBeUM7UUFBdkcsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUEwQjtRQUFtQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXlCO1FBSG5ILFlBQU8sR0FBeUIsSUFBSSxjQUFjLEVBQUUsQ0FBQTtJQUdrRSxDQUFDO0lBRXhJLElBQVksYUFBYTtRQUN2QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQTtJQUNwRixDQUFDO0lBRU0sS0FBSyxDQUFDLHFCQUFxQjtRQUNoQyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTtRQUV0QixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7SUFD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TSxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQztZQUNwRSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQ3JFLE1BQU0sdUJBQXVCLEdBQUcsT0FBTyxhQUFhLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUE7UUFFN0csT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsZUFBZSxDQUFDO2FBQ2hFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDdkIsTUFBTSxlQUFlLEdBQUcsTUFBTSxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUE7WUFDdEQsTUFBTSxzQkFBc0IsR0FBRyx1QkFBdUIsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7WUFFbkksT0FBTyxlQUFlLEtBQUssVUFBVSxJQUFJLHNCQUFzQixLQUFLLHVCQUF1QixDQUFBO1FBQzdGLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN2QixDQUFDOytHQXJWVSxlQUFlO21IQUFmLGVBQWUsY0FGZCxNQUFNOzs0RkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgSUNvaW5Qcm90b2NvbCxcbiAgSUNvaW5TdWJQcm90b2NvbCxcbiAgUHJvdG9jb2xOZXR3b3JrLFxuICBQcm90b2NvbFN5bWJvbHMsXG4gIFN1YlByb3RvY29sU3ltYm9scyxcbiAgTWFpblByb3RvY29sU3ltYm9sc1xufSBmcm9tICdAd2FsbGZyZWUtZGV2L2NvaW5saWItY29yZSdcbmltcG9ydCB7IFByb3RvY29sT3B0aW9ucyB9IGZyb20gJ0B3YWxsZnJlZS1kZXYvY29pbmxpYi1jb3JlL3V0aWxzL1Byb3RvY29sT3B0aW9ucydcbmltcG9ydCB7IGVyYzIwVG9rZW5zIH0gZnJvbSAnQHdhbGxmcmVlLWRldi9ldGhlcmV1bSdcbmltcG9ydCB7IEV4cG9zZWRQcm9taXNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvRXhwb3NlZFByb21pc2UnXG5pbXBvcnQgeyBnZXRNYWluSWRlbnRpZmllciB9IGZyb20gJy4uLy4uL3V0aWxzL3Byb3RvY29sL3Byb3RvY29sLWlkZW50aWZpZXInXG5pbXBvcnQgeyBUb2tlbiB9IGZyb20gJy4uLy4uL3R5cGVzL1Rva2VuJ1xuaW1wb3J0IHsgTWFpblByb3RvY29sU3RvcmVDb25maWcsIE1haW5Qcm90b2NvbFN0b3JlU2VydmljZSB9IGZyb20gJy4vc3RvcmUvbWFpbi9tYWluLXByb3RvY29sLXN0b3JlLnNlcnZpY2UnXG5pbXBvcnQgeyBTdWJQcm90b2NvbFN0b3JlQ29uZmlnLCBTdWJQcm90b2NvbFN0b3JlU2VydmljZSwgU3ViUHJvdG9jb2xzTWFwIH0gZnJvbSAnLi9zdG9yZS9zdWIvc3ViLXByb3RvY29sLXN0b3JlLnNlcnZpY2UnXG5pbXBvcnQge1xuICBnZXREZWZhdWx0UGFzc2l2ZVByb3RvY29scyxcbiAgZ2V0RGVmYXVsdEFjdGl2ZVByb3RvY29scyxcbiAgZ2V0RGVmYXVsdFBhc3NpdmVTdWJQcm90b2NvbHMsXG4gIGdldERlZmF1bHRBY3RpdmVTdWJQcm90b2NvbHNcbn0gZnJvbSAnLi9kZWZhdWx0cydcblxuZXhwb3J0IGludGVyZmFjZSBQcm90b2NvbFNlcnZpY2VDb25maWcgZXh0ZW5kcyBQYXJ0aWFsPE1haW5Qcm90b2NvbFN0b3JlQ29uZmlnICYgU3ViUHJvdG9jb2xTdG9yZUNvbmZpZz4ge1xuICBleHRyYVBhc3NpdmVQcm90b2NvbHM/OiBJQ29pblByb3RvY29sW11cbiAgZXh0cmFBY3RpdmVQcm90b2NvbHM/OiBJQ29pblByb3RvY29sW11cblxuICBleHRyYVBhc3NpdmVTdWJQcm90b2NvbHM/OiBbSUNvaW5Qcm90b2NvbCwgSUNvaW5TdWJQcm90b2NvbF1bXVxuICBleHRyYUFjdGl2ZVN1YlByb3RvY29scz86IFtJQ29pblByb3RvY29sLCBJQ29pblN1YlByb3RvY29sXVtdXG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFByb3RvY29sU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNSZWFkeTogRXhwb3NlZFByb21pc2U8dm9pZD4gPSBuZXcgRXhwb3NlZFByb21pc2UoKVxuICBwcml2YXRlIGtub3duUHJvdG9jb2xTeW1ib2xzOiBTZXQ8c3RyaW5nPiB8IHVuZGVmaW5lZFxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbWFpblByb3RvY29sU3RvcmU6IE1haW5Qcm90b2NvbFN0b3JlU2VydmljZSwgcHJpdmF0ZSByZWFkb25seSBzdWJQcm90b2NvbFN0b3JlOiBTdWJQcm90b2NvbFN0b3JlU2VydmljZSkge31cblxuICBwcml2YXRlIGdldCBpc0luaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1haW5Qcm90b2NvbFN0b3JlLmlzSW5pdGlhbGl6ZWQgJiYgdGhpcy5zdWJQcm90b2NvbFN0b3JlLmlzSW5pdGlhbGl6ZWRcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTdXBwb3J0ZWRQcm90b2NvbHMoKTogUHJvbWlzZTxJQ29pblByb3RvY29sW10+IHtcbiAgICBhd2FpdCB0aGlzLndhaXRSZWFkeSgpXG5cbiAgICByZXR1cm4gQXJyYXkuZnJvbSgoYXdhaXQgdGhpcy5tYWluUHJvdG9jb2xTdG9yZS5zdXBwb3J0ZWRQcm90b2NvbHMpLnZhbHVlcygpKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBhc3NpdmVQcm90b2NvbHMoKTogUHJvbWlzZTxJQ29pblByb3RvY29sW10+IHtcbiAgICBhd2FpdCB0aGlzLndhaXRSZWFkeSgpXG5cbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLm1haW5Qcm90b2NvbFN0b3JlLnBhc3NpdmVQcm90b2NvbHMudmFsdWVzKCkpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QWN0aXZlUHJvdG9jb2xzKCk6IFByb21pc2U8SUNvaW5Qcm90b2NvbFtdPiB7XG4gICAgYXdhaXQgdGhpcy53YWl0UmVhZHkoKVxuXG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5tYWluUHJvdG9jb2xTdG9yZS5hY3RpdmVQcm90b2NvbHMudmFsdWVzKCkpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U3VwcG9ydGVkU3ViUHJvdG9jb2xzKCk6IFByb21pc2U8U3ViUHJvdG9jb2xzTWFwPiB7XG4gICAgYXdhaXQgdGhpcy53YWl0UmVhZHkoKVxuXG4gICAgcmV0dXJuIHRoaXMuc3ViUHJvdG9jb2xTdG9yZS5zdXBwb3J0ZWRQcm90b2NvbHNcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQYXNzaXZlU3ViUHJvdG9jb2xzKCk6IFByb21pc2U8U3ViUHJvdG9jb2xzTWFwPiB7XG4gICAgYXdhaXQgdGhpcy53YWl0UmVhZHkoKVxuXG4gICAgcmV0dXJuIHRoaXMuc3ViUHJvdG9jb2xTdG9yZS5wYXNzaXZlUHJvdG9jb2xzXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QWN0aXZlU3ViUHJvdG9jb2xzKCk6IFByb21pc2U8U3ViUHJvdG9jb2xzTWFwPiB7XG4gICAgYXdhaXQgdGhpcy53YWl0UmVhZHkoKVxuXG4gICAgcmV0dXJuIHRoaXMuc3ViUHJvdG9jb2xTdG9yZS5hY3RpdmVQcm90b2NvbHNcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpbml0KGNvbmZpZz86IFByb3RvY29sU2VydmljZUNvbmZpZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmxvZygnW1Byb3RvY29sU2VydmljZV0gYWxyZWFkeSBpbml0aWFsaXplZCcpXG5cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHRoaXMubWFpblByb3RvY29sU3RvcmUuaW5pdCh7XG4gICAgICAgIHBhc3NpdmVQcm90b2NvbHM6IChjb25maWc/LnBhc3NpdmVQcm90b2NvbHMgPz8gKGF3YWl0IGdldERlZmF1bHRQYXNzaXZlUHJvdG9jb2xzKCkpKS5jb25jYXQoY29uZmlnPy5leHRyYVBhc3NpdmVQcm90b2NvbHMgPz8gW10pLFxuICAgICAgICBhY3RpdmVQcm90b2NvbHM6IChjb25maWc/LmFjdGl2ZVByb3RvY29scyA/PyAoYXdhaXQgZ2V0RGVmYXVsdEFjdGl2ZVByb3RvY29scygpKSkuY29uY2F0KGNvbmZpZz8uZXh0cmFBY3RpdmVQcm90b2NvbHMgPz8gW10pXG4gICAgICB9KSxcbiAgICAgIHRoaXMuc3ViUHJvdG9jb2xTdG9yZS5pbml0KHtcbiAgICAgICAgcGFzc2l2ZVN1YlByb3RvY29sczogKGNvbmZpZz8ucGFzc2l2ZVN1YlByb3RvY29scyA/PyAoYXdhaXQgZ2V0RGVmYXVsdFBhc3NpdmVTdWJQcm90b2NvbHMoKSkpLmNvbmNhdChcbiAgICAgICAgICBjb25maWc/LmV4dHJhUGFzc2l2ZVN1YlByb3RvY29scyA/PyBbXVxuICAgICAgICApLFxuICAgICAgICBhY3RpdmVTdWJQcm90b2NvbHM6IChjb25maWc/LmFjdGl2ZVN1YlByb3RvY29scyA/PyAoYXdhaXQgZ2V0RGVmYXVsdEFjdGl2ZVN1YlByb3RvY29scygpKSkuY29uY2F0KFxuICAgICAgICAgIGNvbmZpZz8uZXh0cmFBY3RpdmVTdWJQcm90b2NvbHMgPz8gW11cbiAgICAgICAgKVxuICAgICAgfSlcbiAgICBdKVxuXG4gICAgdGhpcy5pc1JlYWR5LnJlc29sdmUoKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHdhaXRSZWFkeSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5pc1JlYWR5LnByb21pc2VcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpc1Byb3RvY29sQWN0aXZlKHByb3RvY29sOiBJQ29pblByb3RvY29sKTogUHJvbWlzZTxib29sZWFuPlxuICBwdWJsaWMgYXN5bmMgaXNQcm90b2NvbEFjdGl2ZShpZGVudGlmaWVyOiBQcm90b2NvbFN5bWJvbHMsIG5ldHdvcms/OiBQcm90b2NvbE5ldHdvcmspOiBQcm9taXNlPGJvb2xlYW4+XG4gIHB1YmxpYyBhc3luYyBpc1Byb3RvY29sQWN0aXZlKHByb3RvY29sT3JJZGVudGlmaWVyOiBJQ29pblByb3RvY29sIHwgUHJvdG9jb2xTeW1ib2xzLCBuZXR3b3JrPzogUHJvdG9jb2xOZXR3b3JrKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgYXdhaXQgdGhpcy53YWl0UmVhZHkoKVxuXG4gICAgcmV0dXJuIHRoaXMuaXNQcm90b2NvbFJlZ2lzdGVyZWQocHJvdG9jb2xPcklkZW50aWZpZXIsIG5ldHdvcmssIHRydWUpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaXNQcm90b2NvbFN1cHBvcnRlZChwcm90b2NvbDogSUNvaW5Qcm90b2NvbCk6IFByb21pc2U8Ym9vbGVhbj5cbiAgcHVibGljIGFzeW5jIGlzUHJvdG9jb2xTdXBwb3J0ZWQoaWRlbnRpZmllcjogUHJvdG9jb2xTeW1ib2xzLCBuZXR3b3JrPzogUHJvdG9jb2xOZXR3b3JrKTogUHJvbWlzZTxib29sZWFuPlxuICBwdWJsaWMgYXN5bmMgaXNQcm90b2NvbFN1cHBvcnRlZChwcm90b2NvbE9ySWRlbnRpZmllcjogSUNvaW5Qcm90b2NvbCB8IFByb3RvY29sU3ltYm9scywgbmV0d29yaz86IFByb3RvY29sTmV0d29yayk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGF3YWl0IHRoaXMud2FpdFJlYWR5KClcblxuICAgIHJldHVybiB0aGlzLmlzUHJvdG9jb2xSZWdpc3RlcmVkKHByb3RvY29sT3JJZGVudGlmaWVyLCBuZXR3b3JrLCBmYWxzZSlcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQcm90b2NvbChcbiAgICBwcm90b2NvbE9ySWRlbnRpZmllcjogSUNvaW5Qcm90b2NvbCB8IFByb3RvY29sU3ltYm9scyxcbiAgICBuZXR3b3JrPzogUHJvdG9jb2xOZXR3b3JrIHwgc3RyaW5nLFxuICAgIGFjdGl2ZU9ubHk6IGJvb2xlYW4gPSB0cnVlXG4gICk6IFByb21pc2U8SUNvaW5Qcm90b2NvbD4ge1xuICAgIGF3YWl0IHRoaXMud2FpdFJlYWR5KClcblxuICAgIGlmICh0eXBlb2YgcHJvdG9jb2xPcklkZW50aWZpZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgICBsZXQgcHJvdG9jb2w6IElDb2luUHJvdG9jb2wgfCB1bmRlZmluZWRcblxuICAgICAgaWYgKHRoaXMubWFpblByb3RvY29sU3RvcmUuaXNJZGVudGlmaWVyVmFsaWQocHJvdG9jb2xPcklkZW50aWZpZXIpKSB7XG4gICAgICAgIHByb3RvY29sID0gYXdhaXQgdGhpcy5tYWluUHJvdG9jb2xTdG9yZS5nZXRQcm90b2NvbEJ5SWRlbnRpZmllcihwcm90b2NvbE9ySWRlbnRpZmllciBhcyBNYWluUHJvdG9jb2xTeW1ib2xzLCBuZXR3b3JrLCBhY3RpdmVPbmx5KVxuICAgICAgfSBlbHNlIGlmICh0aGlzLnN1YlByb3RvY29sU3RvcmUuaXNJZGVudGlmaWVyVmFsaWQocHJvdG9jb2xPcklkZW50aWZpZXIpKSB7XG4gICAgICAgIHByb3RvY29sID0gYXdhaXQgdGhpcy5zdWJQcm90b2NvbFN0b3JlLmdldFByb3RvY29sQnlJZGVudGlmaWVyKHByb3RvY29sT3JJZGVudGlmaWVyIGFzIFN1YlByb3RvY29sU3ltYm9scywgbmV0d29yaywgYWN0aXZlT25seSlcbiAgICAgICAgaWYgKHByb3RvY29sID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb25zdCBtYWluUHJvdG9jb2xJZGVudGlmaWVyID0gZ2V0TWFpbklkZW50aWZpZXIocHJvdG9jb2xPcklkZW50aWZpZXIpXG5cbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRQcm90b2NvbChtYWluUHJvdG9jb2xJZGVudGlmaWVyLCBuZXR3b3JrLCBhY3RpdmVPbmx5KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm90b2NvbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvdG9jb2wgJHtwcm90b2NvbE9ySWRlbnRpZmllcn0gbm90IHN1cHBvcnRlZGApXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcm90b2NvbFxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcHJvdG9jb2xPcklkZW50aWZpZXJcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkQWN0aXZlUHJvdG9jb2xzKHByb3RvY29sT3JQcm90b2NvbHM6IElDb2luUHJvdG9jb2wgfCBJQ29pblByb3RvY29sW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwcm90b2NvbHM6IElDb2luUHJvdG9jb2xbXSA9IEFycmF5LmlzQXJyYXkocHJvdG9jb2xPclByb3RvY29scykgPyBwcm90b2NvbE9yUHJvdG9jb2xzIDogW3Byb3RvY29sT3JQcm90b2NvbHNdXG5cbiAgICBjb25zdCBmaWx0ZXJlZE1haW5Qcm90b2NvbHM6IChJQ29pblByb3RvY29sIHwgdW5kZWZpbmVkKVtdID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBwcm90b2NvbHMubWFwKGFzeW5jIChwcm90b2NvbDogSUNvaW5Qcm90b2NvbCkgPT4ge1xuICAgICAgICBjb25zdCBwcm90b2NvbElkZW50aWZpZXI6IFByb3RvY29sU3ltYm9scyA9IGF3YWl0IHByb3RvY29sLmdldElkZW50aWZpZXIoKVxuXG4gICAgICAgIHJldHVybiB0aGlzLm1haW5Qcm90b2NvbFN0b3JlLmlzSWRlbnRpZmllclZhbGlkKHByb3RvY29sSWRlbnRpZmllcikgPyBwcm90b2NvbCA6IHVuZGVmaW5lZFxuICAgICAgfSlcbiAgICApXG4gICAgY29uc3QgbWFpblByb3RvY29sczogSUNvaW5Qcm90b2NvbFtdID0gZmlsdGVyZWRNYWluUHJvdG9jb2xzLmZpbHRlcigocHJvdG9jb2w6IElDb2luUHJvdG9jb2wgfCB1bmRlZmluZWQpID0+IHByb3RvY29sICE9PSB1bmRlZmluZWQpXG5cbiAgICBjb25zdCBmaWx0ZXJlZFN1YlByb3RvY29sczogKElDb2luUHJvdG9jb2wgfCB1bmRlZmluZWQpW10gPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHByb3RvY29scy5tYXAoYXN5bmMgKHByb3RvY29sOiBJQ29pblByb3RvY29sKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb3RvY29sSWRlbnRpZmllcjogUHJvdG9jb2xTeW1ib2xzID0gYXdhaXQgcHJvdG9jb2wuZ2V0SWRlbnRpZmllcigpXG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc3ViUHJvdG9jb2xTdG9yZS5pc0lkZW50aWZpZXJWYWxpZChwcm90b2NvbElkZW50aWZpZXIpID8gcHJvdG9jb2wgOiB1bmRlZmluZWRcbiAgICAgIH0pXG4gICAgKVxuICAgIGNvbnN0IHN1YlByb3RvY29sczogSUNvaW5Qcm90b2NvbFtdID0gZmlsdGVyZWRTdWJQcm90b2NvbHMuZmlsdGVyKChwcm90b2NvbDogSUNvaW5Qcm90b2NvbCB8IHVuZGVmaW5lZCkgPT4gcHJvdG9jb2wgIT09IHVuZGVmaW5lZClcblxuICAgIGF3YWl0IFByb21pc2UuYWxsKFt0aGlzLmFkZEFjdGl2ZU1haW5Qcm90b2NvbHMobWFpblByb3RvY29scyksIHRoaXMuYWRkQWN0aXZlU3ViUHJvdG9jb2xzKHN1YlByb3RvY29scyldKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZEFjdGl2ZU1haW5Qcm90b2NvbHMocHJvdG9jb2xPclByb3RvY29sczogSUNvaW5Qcm90b2NvbCB8IElDb2luUHJvdG9jb2xbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMud2FpdFJlYWR5KClcblxuICAgIGNvbnN0IHByb3RvY29sczogSUNvaW5Qcm90b2NvbFtdID0gQXJyYXkuaXNBcnJheShwcm90b2NvbE9yUHJvdG9jb2xzKSA/IHByb3RvY29sT3JQcm90b2NvbHMgOiBbcHJvdG9jb2xPclByb3RvY29sc11cbiAgICBjb25zdCBmaWx0ZXJlZDogKElDb2luUHJvdG9jb2wgfCB1bmRlZmluZWQpW10gPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHByb3RvY29scy5tYXAoYXN5bmMgKHByb3RvY29sOiBJQ29pblByb3RvY29sKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb3RvY29sSWRlbnRpZmllcjogUHJvdG9jb2xTeW1ib2xzID0gYXdhaXQgcHJvdG9jb2wuZ2V0SWRlbnRpZmllcigpXG5cbiAgICAgICAgcmV0dXJuIHRoaXMubWFpblByb3RvY29sU3RvcmUuaXNJZGVudGlmaWVyVmFsaWQocHJvdG9jb2xJZGVudGlmaWVyKSA/IHByb3RvY29sIDogdW5kZWZpbmVkXG4gICAgICB9KVxuICAgIClcbiAgICBjb25zdCB2YWxpZFByb3RvY29sczogW3N0cmluZywgSUNvaW5Qcm90b2NvbF1bXSA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgZmlsdGVyZWRcbiAgICAgICAgLmZpbHRlcigocHJvdG9jb2w6IElDb2luUHJvdG9jb2wgfCB1bmRlZmluZWQpID0+IHByb3RvY29sICE9PSB1bmRlZmluZWQpXG4gICAgICAgIC5tYXAoYXN5bmMgKHByb3RvY29sOiBJQ29pblByb3RvY29sKSA9PiB7XG4gICAgICAgICAgY29uc3QgcHJvdG9jb2xBbmROZXR3b3JrSWRlbnRpZmllcjogc3RyaW5nID0gYXdhaXQgdGhpcy5tYWluUHJvdG9jb2xTdG9yZS5nZXRQcm90b2NvbEFuZE5ldHdvcmtJZGVudGlmaWVyKHByb3RvY29sKVxuXG4gICAgICAgICAgcmV0dXJuIFtwcm90b2NvbEFuZE5ldHdvcmtJZGVudGlmaWVyLCBwcm90b2NvbF0gYXMgW3N0cmluZywgSUNvaW5Qcm90b2NvbF1cbiAgICAgICAgfSlcbiAgICApXG5cbiAgICBhd2FpdCB0aGlzLm1haW5Qcm90b2NvbFN0b3JlLmFkZEFjdGl2ZVByb3RvY29scyhuZXcgTWFwKHZhbGlkUHJvdG9jb2xzKSlcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRBY3RpdmVTdWJQcm90b2NvbHMocHJvdG9jb2xPclByb3RvY29sczogSUNvaW5Qcm90b2NvbCB8IElDb2luUHJvdG9jb2xbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMud2FpdFJlYWR5KClcblxuICAgIGNvbnN0IHByb3RvY29sczogSUNvaW5Qcm90b2NvbFtdID0gQXJyYXkuaXNBcnJheShwcm90b2NvbE9yUHJvdG9jb2xzKSA/IHByb3RvY29sT3JQcm90b2NvbHMgOiBbcHJvdG9jb2xPclByb3RvY29sc11cbiAgICBjb25zdCBmaWx0ZXJlZDogKElDb2luUHJvdG9jb2wgfCB1bmRlZmluZWQpW10gPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHByb3RvY29scy5tYXAoYXN5bmMgKHByb3RvY29sOiBJQ29pblByb3RvY29sKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb3RvY29sSWRlbnRpZmllcjogUHJvdG9jb2xTeW1ib2xzID0gYXdhaXQgcHJvdG9jb2wuZ2V0SWRlbnRpZmllcigpXG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc3ViUHJvdG9jb2xTdG9yZS5pc0lkZW50aWZpZXJWYWxpZChwcm90b2NvbElkZW50aWZpZXIpID8gcHJvdG9jb2wgOiB1bmRlZmluZWRcbiAgICAgIH0pXG4gICAgKVxuICAgIGNvbnN0IHZhbGlkUHJvdG9jb2xzOiBJQ29pblByb3RvY29sW10gPSBmaWx0ZXJlZC5maWx0ZXIoKHByb3RvY29sOiBJQ29pblByb3RvY29sIHwgdW5kZWZpbmVkKSA9PiBwcm90b2NvbCAhPT0gdW5kZWZpbmVkKVxuICAgIGNvbnN0IG1hcHBlZDogW3N0cmluZywgW1Byb3RvY29sU3ltYm9scywgSUNvaW5Qcm90b2NvbF1dW10gPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHZhbGlkUHJvdG9jb2xzLm1hcChhc3luYyAocHJvdG9jb2w6IElDb2luUHJvdG9jb2wpID0+IHtcbiAgICAgICAgY29uc3QgcHJvdG9jb2xJZGVudGlmaWVyOiBQcm90b2NvbFN5bWJvbHMgPSBhd2FpdCBwcm90b2NvbC5nZXRJZGVudGlmaWVyKClcbiAgICAgICAgY29uc3QgcHJvdG9jb2xPcHRpb25zOiBQcm90b2NvbE9wdGlvbnMgPSBhd2FpdCBwcm90b2NvbC5nZXRPcHRpb25zKClcblxuICAgICAgICBjb25zdCBtYWluSWRlbnRpZmllcjogTWFpblByb3RvY29sU3ltYm9scyA9IGdldE1haW5JZGVudGlmaWVyKHByb3RvY29sSWRlbnRpZmllcilcbiAgICAgICAgY29uc3QgcHJvdG9jb2xBbmROZXR3b3JrSWRlbnRpZmllcjogc3RyaW5nID0gYXdhaXQgdGhpcy5zdWJQcm90b2NvbFN0b3JlLmdldFByb3RvY29sQW5kTmV0d29ya0lkZW50aWZpZXIoXG4gICAgICAgICAgbWFpbklkZW50aWZpZXIsXG4gICAgICAgICAgcHJvdG9jb2xPcHRpb25zLm5ldHdvcmtcbiAgICAgICAgKVxuXG4gICAgICAgIHJldHVybiBbcHJvdG9jb2xBbmROZXR3b3JrSWRlbnRpZmllciwgW3Byb3RvY29sSWRlbnRpZmllciwgcHJvdG9jb2xdXSBhcyBbc3RyaW5nLCBbUHJvdG9jb2xTeW1ib2xzLCBJQ29pblByb3RvY29sXV1cbiAgICAgIH0pXG4gICAgKVxuXG4gICAgYXdhaXQgdGhpcy5zdWJQcm90b2NvbFN0b3JlLmFkZEFjdGl2ZVByb3RvY29scyhcbiAgICAgIG1hcHBlZC5yZWR1Y2UoXG4gICAgICAgIChcbiAgICAgICAgICBvYmo6IFN1YlByb3RvY29sc01hcCxcbiAgICAgICAgICBbcHJvdG9jb2xBbmROZXR3b3JrSWRlbnRpZmllciwgW3Byb3RvY29sSWRlbnRpZmllciwgcHJvdG9jb2xdXTogW3N0cmluZywgW1Byb3RvY29sU3ltYm9scywgSUNvaW5Qcm90b2NvbF1dXG4gICAgICAgICkgPT5cbiAgICAgICAgICBPYmplY3QuYXNzaWduKG9iaiwge1xuICAgICAgICAgICAgW3Byb3RvY29sQW5kTmV0d29ya0lkZW50aWZpZXJdOiBPYmplY3QuYXNzaWduKG9ialtwcm90b2NvbEFuZE5ldHdvcmtJZGVudGlmaWVyXSA/PyB7fSwgeyBbcHJvdG9jb2xJZGVudGlmaWVyXTogcHJvdG9jb2wgfSlcbiAgICAgICAgICB9KSxcbiAgICAgICAge31cbiAgICAgIClcbiAgICApXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVtb3ZlUHJvdG9jb2xzKHByb3RvY29sSWRlbnRpZmllcnM6IFByb3RvY29sU3ltYm9sc1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgdGhpcy5tYWluUHJvdG9jb2xTdG9yZS5yZW1vdmVQcm90b2NvbHMocHJvdG9jb2xJZGVudGlmaWVycyBhcyBNYWluUHJvdG9jb2xTeW1ib2xzW10pLFxuICAgICAgdGhpcy5zdWJQcm90b2NvbFN0b3JlLnJlbW92ZVByb3RvY29scyhwcm90b2NvbElkZW50aWZpZXJzIGFzIFN1YlByb3RvY29sU3ltYm9sc1tdKVxuICAgIF0pXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaXNQcm90b2NvbEF2YWlsYWJsZShwcm90b2NvbElkZW50aWZpZXI6IFByb3RvY29sU3ltYm9scywgbmV0d29ya0lkZW50aWZpZXI6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGF3YWl0IHRoaXMud2FpdFJlYWR5KClcblxuICAgIGNvbnN0IHByb3RvY29sOiBJQ29pblByb3RvY29sIHwgdW5kZWZpbmVkID0gdGhpcy5tYWluUHJvdG9jb2xTdG9yZS5pc0lkZW50aWZpZXJWYWxpZChwcm90b2NvbElkZW50aWZpZXIpXG4gICAgICA/IGF3YWl0IHRoaXMubWFpblByb3RvY29sU3RvcmUuZ2V0UHJvdG9jb2xCeUlkZW50aWZpZXIocHJvdG9jb2xJZGVudGlmaWVyIGFzIE1haW5Qcm90b2NvbFN5bWJvbHMsIG5ldHdvcmtJZGVudGlmaWVyLCB0cnVlLCBmYWxzZSlcbiAgICAgIDogYXdhaXQgdGhpcy5zdWJQcm90b2NvbFN0b3JlLmdldFByb3RvY29sQnlJZGVudGlmaWVyKHByb3RvY29sSWRlbnRpZmllciBhcyBTdWJQcm90b2NvbFN5bWJvbHMsIG5ldHdvcmtJZGVudGlmaWVyLCB0cnVlLCBmYWxzZSlcblxuICAgIHJldHVybiBwcm90b2NvbCAhPT0gdW5kZWZpbmVkXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U3ViUHJvdG9jb2xzKFxuICAgIG1haW5Qcm90b2NvbDogSUNvaW5Qcm90b2NvbCB8IE1haW5Qcm90b2NvbFN5bWJvbHMsXG4gICAgbmV0d29yaz86IFByb3RvY29sTmV0d29yayB8IHN0cmluZyxcbiAgICBhY3RpdmVPbmx5OiBib29sZWFuID0gdHJ1ZVxuICApOiBQcm9taXNlPElDb2luU3ViUHJvdG9jb2xbXT4ge1xuICAgIGF3YWl0IHRoaXMud2FpdFJlYWR5KClcblxuICAgIGNvbnN0IG1haW5JZGVudGlmaWVyID0gdHlwZW9mIG1haW5Qcm90b2NvbCA9PT0gJ3N0cmluZycgPyBtYWluUHJvdG9jb2wgOiBhd2FpdCBtYWluUHJvdG9jb2wuZ2V0SWRlbnRpZmllcigpXG4gICAgY29uc3QgdGFyZ2V0TmV0d29yazogUHJvdG9jb2xOZXR3b3JrIHwgc3RyaW5nIHwgdW5kZWZpbmVkID0gYXdhaXQgdGhpcy5zdWJQcm90b2NvbFN0b3JlLmdldFRhcmdldE5ldHdvcmsobWFpbklkZW50aWZpZXIsIG5ldHdvcmspXG4gICAgY29uc3QgcHJvdG9jb2xBbmROZXR3b3JrSWRlbnRpZmllcjogc3RyaW5nID0gYXdhaXQgdGhpcy5zdWJQcm90b2NvbFN0b3JlLmdldFByb3RvY29sQW5kTmV0d29ya0lkZW50aWZpZXIobWFpbklkZW50aWZpZXIsIHRhcmdldE5ldHdvcmspXG4gICAgY29uc3Qgc3ViUHJvdG9jb2xzTWFwOiBTdWJQcm90b2NvbHNNYXAgPSBhd2FpdCAoYWN0aXZlT25seSA/IHRoaXMuZ2V0QWN0aXZlU3ViUHJvdG9jb2xzKCkgOiB0aGlzLmdldFN1cHBvcnRlZFN1YlByb3RvY29scygpKVxuXG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoc3ViUHJvdG9jb2xzTWFwW3Byb3RvY29sQW5kTmV0d29ya0lkZW50aWZpZXJdID8/IHt9KS5maWx0ZXIoXG4gICAgICAoc3ViUHJvdG9jb2w6IElDb2luU3ViUHJvdG9jb2wgfCB1bmRlZmluZWQpID0+IHN1YlByb3RvY29sICE9PSB1bmRlZmluZWRcbiAgICApXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QWxsU3ViUHJvdG9jb2xzKFxuICAgIG1haW5Qcm90b2NvbDogSUNvaW5Qcm90b2NvbCB8IE1haW5Qcm90b2NvbFN5bWJvbHMsXG4gICAgYWN0aXZlT25seTogYm9vbGVhbiA9IHRydWVcbiAgKTogUHJvbWlzZTxJQ29pblN1YlByb3RvY29sW10+IHtcbiAgICBhd2FpdCB0aGlzLndhaXRSZWFkeSgpXG5cbiAgICBjb25zdCBtYWluSWRlbnRpZmllciA9IHR5cGVvZiBtYWluUHJvdG9jb2wgPT09ICdzdHJpbmcnID8gbWFpblByb3RvY29sIDogYXdhaXQgbWFpblByb3RvY29sLmdldElkZW50aWZpZXIoKVxuICAgIGNvbnN0IHN1YlByb3RvY29sc01hcDogU3ViUHJvdG9jb2xzTWFwID0gYXdhaXQgKGFjdGl2ZU9ubHkgPyB0aGlzLmdldEFjdGl2ZVN1YlByb3RvY29scygpIDogdGhpcy5nZXRTdXBwb3J0ZWRTdWJQcm90b2NvbHMoKSlcblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhzdWJQcm90b2NvbHNNYXApXG4gICAgICAuZmlsdGVyKChrZXkpID0+IGtleS5zdGFydHNXaXRoKG1haW5JZGVudGlmaWVyKSlcbiAgICAgIC5tYXAoKGtleSkgPT4gT2JqZWN0LnZhbHVlcyhzdWJQcm90b2NvbHNNYXBba2V5XSA/PyB7fSkpXG4gICAgICAucmVkdWNlKChmbGF0dGVuLCBuZXh0KSA9PiBmbGF0dGVuLmNvbmNhdChuZXh0KSwgW10pXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0TmV0d29ya3NGb3JQcm90b2NvbChcbiAgICBwcm90b2NvbE9ySWRlbnRpZmllcjogSUNvaW5Qcm90b2NvbCB8IFByb3RvY29sU3ltYm9scyxcbiAgICBhY3RpdmVPbmx5OiBib29sZWFuID0gdHJ1ZVxuICApOiBQcm9taXNlPFByb3RvY29sTmV0d29ya1tdPiB7XG4gICAgYXdhaXQgdGhpcy53YWl0UmVhZHkoKVxuXG4gICAgY29uc3QgaWRlbnRpZmllcjogUHJvdG9jb2xTeW1ib2xzID1cbiAgICAgIHR5cGVvZiBwcm90b2NvbE9ySWRlbnRpZmllciA9PT0gJ3N0cmluZycgPyBwcm90b2NvbE9ySWRlbnRpZmllciA6IGF3YWl0IHByb3RvY29sT3JJZGVudGlmaWVyLmdldElkZW50aWZpZXIoKVxuXG4gICAgcmV0dXJuIHRoaXMubWFpblByb3RvY29sU3RvcmUuaXNJZGVudGlmaWVyVmFsaWQoaWRlbnRpZmllcilcbiAgICAgID8gdGhpcy5tYWluUHJvdG9jb2xTdG9yZS5nZXROZXR3b3Jrc0ZvclByb3RvY29sKGlkZW50aWZpZXIgYXMgTWFpblByb3RvY29sU3ltYm9scywgYWN0aXZlT25seSlcbiAgICAgIDogdGhpcy5zdWJQcm90b2NvbFN0b3JlLmdldE5ldHdvcmtzRm9yUHJvdG9jb2woaWRlbnRpZmllciBhcyBTdWJQcm90b2NvbFN5bWJvbHMsIGFjdGl2ZU9ubHkpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0TmV0d29ya0ZvclByb3RvY29sKFxuICAgIHByb3RvY29sT3JJZGVudGlmaWVyOiBJQ29pblByb3RvY29sIHwgUHJvdG9jb2xTeW1ib2xzLFxuICAgIG5ldHdvcmtJZGVudGlmaWVyOiBzdHJpbmcsXG4gICAgYWN0aXZlT25seTogYm9vbGVhbiA9IHRydWVcbiAgKTogUHJvbWlzZTxQcm90b2NvbE5ldHdvcmsgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBuZXR3b3JrcyA9IGF3YWl0IHRoaXMuZ2V0TmV0d29ya3NGb3JQcm90b2NvbChwcm90b2NvbE9ySWRlbnRpZmllciwgYWN0aXZlT25seSlcblxuICAgIHJldHVybiBuZXR3b3Jrcy5maW5kKChuZXR3b3JrOiBQcm90b2NvbE5ldHdvcmspID0+IG5ldHdvcmsuaWRlbnRpZmllciA9PT0gbmV0d29ya0lkZW50aWZpZXIpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaXNBZGRyZXNzT2ZQcm90b2NvbChwcm90b2NvbE9ySWRlbnRpZmllcjogSUNvaW5Qcm90b2NvbCB8IFByb3RvY29sU3ltYm9scywgYWRkcmVzczogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgYXdhaXQgdGhpcy53YWl0UmVhZHkoKVxuXG4gICAgY29uc3QgcHJvdG9jb2w6IElDb2luUHJvdG9jb2wgPVxuICAgICAgdHlwZW9mIHByb3RvY29sT3JJZGVudGlmaWVyID09PSAnc3RyaW5nJyA/IGF3YWl0IHRoaXMuZ2V0UHJvdG9jb2wocHJvdG9jb2xPcklkZW50aWZpZXIpIDogcHJvdG9jb2xPcklkZW50aWZpZXJcblxuICAgIHJldHVybiBhZGRyZXNzLm1hdGNoKGF3YWl0IHByb3RvY29sLmdldEFkZHJlc3NWYWxpZGF0aW9uUGF0dGVybigpKSAhPT0gbnVsbFxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFByb3RvY29sc0ZvckFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogUHJvbWlzZTxJQ29pblByb3RvY29sW10+IHtcbiAgICBhd2FpdCB0aGlzLndhaXRSZWFkeSgpXG5cbiAgICBjb25zdCBwcm90b2NvbHM6IElDb2luUHJvdG9jb2xbXSA9IGF3YWl0IHRoaXMuZ2V0U3VwcG9ydGVkUHJvdG9jb2xzKClcblxuICAgIHJldHVybiAoXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgcHJvdG9jb2xzLm1hcChhc3luYyAocHJvdG9jb2wpID0+IHtcbiAgICAgICAgICBjb25zdCBpc1Byb3RvY29sQWRkcmVzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMuaXNBZGRyZXNzT2ZQcm90b2NvbChwcm90b2NvbCwgYWRkcmVzcylcblxuICAgICAgICAgIHJldHVybiBpc1Byb3RvY29sQWRkcmVzcyA/IHByb3RvY29sIDogdW5kZWZpbmVkXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKS5maWx0ZXIoKHByb3RvY29sOiBJQ29pblByb3RvY29sIHwgdW5kZWZpbmVkKSA9PiBwcm90b2NvbCAhPT0gdW5kZWZpbmVkKVxuICB9XG5cbiAgcHVibGljIGlzS25vd25Qcm90b2NvbFN5bWJvbChzeW1ib2w6IFByb3RvY29sU3ltYm9scyk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmtub3duUHJvdG9jb2xTeW1ib2xzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMua25vd25Qcm90b2NvbFN5bWJvbHMgPSBuZXcgU2V0KFtcbiAgICAgICAgLi4uT2JqZWN0LnZhbHVlcyhNYWluUHJvdG9jb2xTeW1ib2xzKSxcbiAgICAgICAgLi4uT2JqZWN0LnZhbHVlcyhTdWJQcm90b2NvbFN5bWJvbHMpLFxuICAgICAgICAuLi5PYmplY3QudmFsdWVzKGVyYzIwVG9rZW5zKS5tYXAoKHRva2VuOiBUb2tlbikgPT4gdG9rZW4uaWRlbnRpZmllcilcbiAgICAgIF0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMua25vd25Qcm90b2NvbFN5bWJvbHM/LmhhcyhzeW1ib2wpID8/IGZhbHNlXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGlzUHJvdG9jb2xSZWdpc3RlcmVkKFxuICAgIHByb3RvY29sT3JJZGVudGlmaWVyOiBJQ29pblByb3RvY29sIHwgUHJvdG9jb2xTeW1ib2xzLFxuICAgIG5ldHdvcms/OiBQcm90b2NvbE5ldHdvcmssXG4gICAgY2hlY2tBY3RpdmVPbmx5OiBib29sZWFuID0gdHJ1ZVxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBpZGVudGlmaWVyID0gdHlwZW9mIHByb3RvY29sT3JJZGVudGlmaWVyID09PSAnc3RyaW5nJyA/IHByb3RvY29sT3JJZGVudGlmaWVyIDogYXdhaXQgcHJvdG9jb2xPcklkZW50aWZpZXIuZ2V0SWRlbnRpZmllcigpXG4gICAgY29uc3QgdGFyZ2V0TmV0d29yayA9IHRoaXMubWFpblByb3RvY29sU3RvcmUuaXNJZGVudGlmaWVyVmFsaWQoaWRlbnRpZmllcilcbiAgICAgID8gYXdhaXQgdGhpcy5tYWluUHJvdG9jb2xTdG9yZS5nZXRUYXJnZXROZXR3b3JrKGlkZW50aWZpZXIsIG5ldHdvcmspXG4gICAgICA6IGF3YWl0IHRoaXMuc3ViUHJvdG9jb2xTdG9yZS5nZXRUYXJnZXROZXR3b3JrKGlkZW50aWZpZXIsIG5ldHdvcmspXG4gICAgY29uc3QgdGFyZ2V0TmV0d29ya0lkZW50aWZpZXIgPSB0eXBlb2YgdGFyZ2V0TmV0d29yayA9PT0gJ3N0cmluZycgPyB0YXJnZXROZXR3b3JrIDogdGFyZ2V0TmV0d29yaz8uaWRlbnRpZmllclxuXG4gICAgcmV0dXJuIHRoaXMuZ2V0UHJvdG9jb2woaWRlbnRpZmllciwgdGFyZ2V0TmV0d29yaywgY2hlY2tBY3RpdmVPbmx5KVxuICAgICAgLnRoZW4oYXN5bmMgKHByb3RvY29sKSA9PiB7XG4gICAgICAgIGNvbnN0IGZvdW5kSWRlbnRpZmllciA9IGF3YWl0IHByb3RvY29sLmdldElkZW50aWZpZXIoKVxuICAgICAgICBjb25zdCBmb3VuZE5ldHdvcmtJZGVudGlmaWVyID0gdGFyZ2V0TmV0d29ya0lkZW50aWZpZXIgIT09IHVuZGVmaW5lZCA/IChhd2FpdCBwcm90b2NvbC5nZXRPcHRpb25zKCkpLm5ldHdvcmsuaWRlbnRpZmllciA6IHVuZGVmaW5lZFxuXG4gICAgICAgIHJldHVybiBmb3VuZElkZW50aWZpZXIgPT09IGlkZW50aWZpZXIgJiYgZm91bmROZXR3b3JrSWRlbnRpZmllciA9PT0gdGFyZ2V0TmV0d29ya0lkZW50aWZpZXJcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4gZmFsc2UpXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { RuntimeMode } from '../../../types/RuntimeMode';
|
|
3
|
+
import { createNotInitialized } from '../../../utils/not-initialized';
|
|
4
|
+
import { getProtocolAndNetworkIdentifier } from '../../../utils/protocol/protocol-network-identifier';
|
|
5
|
+
import { getProtocolOptionsByIdentifier } from '../../../utils/protocol/protocol-options';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../../environment/base-environment.service";
|
|
8
|
+
import * as i2 from "../../modules/controller/modules.controller";
|
|
9
|
+
export class BaseProtocolStoreService {
|
|
10
|
+
constructor(_tag = '_ProtocolService', environment, modulesController) {
|
|
11
|
+
this._tag = _tag;
|
|
12
|
+
this.environment = environment;
|
|
13
|
+
this.modulesController = modulesController;
|
|
14
|
+
this.notInitialized = createNotInitialized(this._tag, 'Call `init` first.');
|
|
15
|
+
}
|
|
16
|
+
get isInitialized() {
|
|
17
|
+
return this._passiveProtocols !== undefined && this._activeProtocols !== undefined;
|
|
18
|
+
}
|
|
19
|
+
get supportedProtocols() {
|
|
20
|
+
if (this._supportedProtocols === undefined) {
|
|
21
|
+
const passiveProtocols = this._passiveProtocols ?? this.notInitialized();
|
|
22
|
+
const activeProtocols = this._activeProtocols ?? this.notInitialized();
|
|
23
|
+
this._supportedProtocols = this.mergeProtocols(passiveProtocols, activeProtocols);
|
|
24
|
+
}
|
|
25
|
+
return this._supportedProtocols;
|
|
26
|
+
}
|
|
27
|
+
get passiveProtocols() {
|
|
28
|
+
return this._passiveProtocols ?? this.notInitialized();
|
|
29
|
+
}
|
|
30
|
+
get activeProtocols() {
|
|
31
|
+
return this._activeProtocols ?? this.notInitialized();
|
|
32
|
+
}
|
|
33
|
+
async addActiveProtocols(protocols) {
|
|
34
|
+
const activeProtocols = this._activeProtocols ?? this.notInitialized();
|
|
35
|
+
this._activeProtocols = await this.mergeProtocols(protocols, activeProtocols);
|
|
36
|
+
this._supportedProtocols = undefined;
|
|
37
|
+
}
|
|
38
|
+
async init(config) {
|
|
39
|
+
if (this.isInitialized) {
|
|
40
|
+
// eslint-disable-next-line no-console
|
|
41
|
+
console.log(`[${this._tag}] already initialized`);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const transformedConfig = await this.transformConfig(config);
|
|
45
|
+
this._passiveProtocols = transformedConfig.passiveProtocols;
|
|
46
|
+
this._activeProtocols = transformedConfig.activeProtocols;
|
|
47
|
+
await this.removeProtocolDuplicates();
|
|
48
|
+
}
|
|
49
|
+
async getProtocolAndNetworkIdentifier(protocolOrIdentifier, network) {
|
|
50
|
+
return getProtocolAndNetworkIdentifier(this.environment.mode, protocolOrIdentifier, network);
|
|
51
|
+
}
|
|
52
|
+
async getTargetNetwork(protocolIdentifier, network) {
|
|
53
|
+
return this.environment.mode === RuntimeMode.ONLINE
|
|
54
|
+
? network ?? (await getProtocolOptionsByIdentifier(this.modulesController, protocolIdentifier)).network
|
|
55
|
+
: undefined;
|
|
56
|
+
}
|
|
57
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseProtocolStoreService, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
58
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseProtocolStoreService }); }
|
|
59
|
+
}
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseProtocolStoreService, decorators: [{
|
|
61
|
+
type: Injectable
|
|
62
|
+
}], ctorParameters: () => [{ type: undefined }, { type: i1.BaseEnvironmentService }, { type: i2.ModulesController }] });
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wcm90b2NvbC1zdG9yZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9wcm90b2NvbC9zdG9yZS9iYXNlLXByb3RvY29sLXN0b3JlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDeEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUE7QUFDckUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0scURBQXFELENBQUE7QUFDckcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sMENBQTBDLENBQUE7Ozs7QUFVekYsTUFBTSxPQUFnQix3QkFBd0I7SUFhNUMsWUFDbUIsT0FBZSxrQkFBa0IsRUFDL0IsV0FBbUMsRUFDbkMsaUJBQW9DO1FBRnRDLFNBQUksR0FBSixJQUFJLENBQTZCO1FBQy9CLGdCQUFXLEdBQVgsV0FBVyxDQUF3QjtRQUNuQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBRXZELElBQUksQ0FBQyxjQUFjLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxDQUFBO0lBQzdFLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLENBQUE7SUFDcEYsQ0FBQztJQUVELElBQVcsa0JBQWtCO1FBQzNCLElBQUksSUFBSSxDQUFDLG1CQUFtQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sZ0JBQWdCLEdBQW1CLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUE7WUFDeEYsTUFBTSxlQUFlLEdBQW1CLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUE7WUFFdEYsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLENBQUE7UUFDbkYsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFBO0lBQ2pDLENBQUM7SUFFRCxJQUFXLGdCQUFnQjtRQUN6QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUE7SUFDeEQsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUE7SUFDdkQsQ0FBQztJQUVNLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxTQUF5QjtRQUN2RCxNQUFNLGVBQWUsR0FBbUIsSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQTtRQUN0RixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUMsQ0FBQTtRQUM3RSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFBO0lBQ3RDLENBQUM7SUFFTSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQWtCO1FBQ2xDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLHNDQUFzQztZQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksdUJBQXVCLENBQUMsQ0FBQTtZQUVqRCxPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0saUJBQWlCLEdBQTRDLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUVyRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUE7UUFDM0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGlCQUFpQixDQUFDLGVBQWUsQ0FBQTtRQUV6RCxNQUFNLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFBO0lBQ3ZDLENBQUM7SUFrQk0sS0FBSyxDQUFDLCtCQUErQixDQUMxQyxvQkFBcUQsRUFDckQsT0FBa0M7UUFFbEMsT0FBTywrQkFBK0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUM5RixDQUFDO0lBRU0sS0FBSyxDQUFDLGdCQUFnQixDQUMzQixrQkFBbUMsRUFDbkMsT0FBa0M7UUFFbEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsTUFBTTtZQUNqRCxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLE9BQU87WUFDdkcsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtJQUNmLENBQUM7K0dBaEdtQix3QkFBd0I7bUhBQXhCLHdCQUF3Qjs7NEZBQXhCLHdCQUF3QjtrQkFEN0MsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElDb2luUHJvdG9jb2wsIFByb3RvY29sTmV0d29yaywgUHJvdG9jb2xTeW1ib2xzIH0gZnJvbSAnQHdhbGxmcmVlLWRldi9jb2lubGliLWNvcmUnXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFJ1bnRpbWVNb2RlIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvUnVudGltZU1vZGUnXG5pbXBvcnQgeyBjcmVhdGVOb3RJbml0aWFsaXplZCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL25vdC1pbml0aWFsaXplZCdcbmltcG9ydCB7IGdldFByb3RvY29sQW5kTmV0d29ya0lkZW50aWZpZXIgfSBmcm9tICcuLi8uLi8uLi91dGlscy9wcm90b2NvbC9wcm90b2NvbC1uZXR3b3JrLWlkZW50aWZpZXInXG5pbXBvcnQgeyBnZXRQcm90b2NvbE9wdGlvbnNCeUlkZW50aWZpZXIgfSBmcm9tICcuLi8uLi8uLi91dGlscy9wcm90b2NvbC9wcm90b2NvbC1vcHRpb25zJ1xuaW1wb3J0IHsgQmFzZUVudmlyb25tZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L2Jhc2UtZW52aXJvbm1lbnQuc2VydmljZSdcbmltcG9ydCB7IE1vZHVsZXNDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vbW9kdWxlcy9jb250cm9sbGVyL21vZHVsZXMuY29udHJvbGxlcidcblxuZXhwb3J0IGludGVyZmFjZSBCYXNlUHJvdG9jb2xTdG9yZUNvbmZpZzxUPiB7XG4gIHBhc3NpdmVQcm90b2NvbHM6IFRcbiAgYWN0aXZlUHJvdG9jb2xzOiBUXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlUHJvdG9jb2xTdG9yZVNlcnZpY2U8XG4gIElDb2luVHlwZSA9IHVua25vd24sXG4gIFN5bWJvbFR5cGUgPSB1bmtub3duLFxuICBDb2xsZWN0aW9uVHlwZSA9IHVua25vd24sXG4gIENvbmZpZ1R5cGUgPSBCYXNlUHJvdG9jb2xTdG9yZUNvbmZpZzxDb2xsZWN0aW9uVHlwZT5cbj4ge1xuICBwcm90ZWN0ZWQgX3N1cHBvcnRlZFByb3RvY29sczogUHJvbWlzZTxDb2xsZWN0aW9uVHlwZSB8IHVuZGVmaW5lZD5cblxuICBwcm90ZWN0ZWQgX3Bhc3NpdmVQcm90b2NvbHM6IENvbGxlY3Rpb25UeXBlIHwgdW5kZWZpbmVkXG4gIHByb3RlY3RlZCBfYWN0aXZlUHJvdG9jb2xzOiBDb2xsZWN0aW9uVHlwZSB8IHVuZGVmaW5lZFxuXG4gIHByb3RlY3RlZCBub3RJbml0aWFsaXplZDogKCkgPT4gbmV2ZXJcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF90YWc6IHN0cmluZyA9ICdfUHJvdG9jb2xTZXJ2aWNlJyxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZW52aXJvbm1lbnQ6IEJhc2VFbnZpcm9ubWVudFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1vZHVsZXNDb250cm9sbGVyOiBNb2R1bGVzQ29udHJvbGxlclxuICApIHtcbiAgICB0aGlzLm5vdEluaXRpYWxpemVkID0gY3JlYXRlTm90SW5pdGlhbGl6ZWQodGhpcy5fdGFnLCAnQ2FsbCBgaW5pdGAgZmlyc3QuJylcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNJbml0aWFsaXplZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcGFzc2l2ZVByb3RvY29scyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuX2FjdGl2ZVByb3RvY29scyAhPT0gdW5kZWZpbmVkXG4gIH1cblxuICBwdWJsaWMgZ2V0IHN1cHBvcnRlZFByb3RvY29scygpOiBQcm9taXNlPENvbGxlY3Rpb25UeXBlPiB7XG4gICAgaWYgKHRoaXMuX3N1cHBvcnRlZFByb3RvY29scyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBwYXNzaXZlUHJvdG9jb2xzOiBDb2xsZWN0aW9uVHlwZSA9IHRoaXMuX3Bhc3NpdmVQcm90b2NvbHMgPz8gdGhpcy5ub3RJbml0aWFsaXplZCgpXG4gICAgICBjb25zdCBhY3RpdmVQcm90b2NvbHM6IENvbGxlY3Rpb25UeXBlID0gdGhpcy5fYWN0aXZlUHJvdG9jb2xzID8/IHRoaXMubm90SW5pdGlhbGl6ZWQoKVxuXG4gICAgICB0aGlzLl9zdXBwb3J0ZWRQcm90b2NvbHMgPSB0aGlzLm1lcmdlUHJvdG9jb2xzKHBhc3NpdmVQcm90b2NvbHMsIGFjdGl2ZVByb3RvY29scylcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc3VwcG9ydGVkUHJvdG9jb2xzXG4gIH1cblxuICBwdWJsaWMgZ2V0IHBhc3NpdmVQcm90b2NvbHMoKTogQ29sbGVjdGlvblR5cGUge1xuICAgIHJldHVybiB0aGlzLl9wYXNzaXZlUHJvdG9jb2xzID8/IHRoaXMubm90SW5pdGlhbGl6ZWQoKVxuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmVQcm90b2NvbHMoKTogQ29sbGVjdGlvblR5cGUge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVQcm90b2NvbHMgPz8gdGhpcy5ub3RJbml0aWFsaXplZCgpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkQWN0aXZlUHJvdG9jb2xzKHByb3RvY29sczogQ29sbGVjdGlvblR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBhY3RpdmVQcm90b2NvbHM6IENvbGxlY3Rpb25UeXBlID0gdGhpcy5fYWN0aXZlUHJvdG9jb2xzID8/IHRoaXMubm90SW5pdGlhbGl6ZWQoKVxuICAgIHRoaXMuX2FjdGl2ZVByb3RvY29scyA9IGF3YWl0IHRoaXMubWVyZ2VQcm90b2NvbHMocHJvdG9jb2xzLCBhY3RpdmVQcm90b2NvbHMpXG4gICAgdGhpcy5fc3VwcG9ydGVkUHJvdG9jb2xzID0gdW5kZWZpbmVkXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaW5pdChjb25maWc6IENvbmZpZ1R5cGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pc0luaXRpYWxpemVkKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS5sb2coYFske3RoaXMuX3RhZ31dIGFscmVhZHkgaW5pdGlhbGl6ZWRgKVxuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc2Zvcm1lZENvbmZpZzogQmFzZVByb3RvY29sU3RvcmVDb25maWc8Q29sbGVjdGlvblR5cGU+ID0gYXdhaXQgdGhpcy50cmFuc2Zvcm1Db25maWcoY29uZmlnKVxuXG4gICAgdGhpcy5fcGFzc2l2ZVByb3RvY29scyA9IHRyYW5zZm9ybWVkQ29uZmlnLnBhc3NpdmVQcm90b2NvbHNcbiAgICB0aGlzLl9hY3RpdmVQcm90b2NvbHMgPSB0cmFuc2Zvcm1lZENvbmZpZy5hY3RpdmVQcm90b2NvbHNcblxuICAgIGF3YWl0IHRoaXMucmVtb3ZlUHJvdG9jb2xEdXBsaWNhdGVzKClcbiAgfVxuXG4gIHB1YmxpYyBhYnN0cmFjdCByZW1vdmVQcm90b2NvbHMoaWRlbnRpZmllcnM6IFN5bWJvbFR5cGVbXSk6IFByb21pc2U8dm9pZD5cblxuICBwdWJsaWMgYWJzdHJhY3QgaXNJZGVudGlmaWVyVmFsaWQoaWRlbnRpZmllcjogc3RyaW5nKTogYm9vbGVhblxuXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRQcm90b2NvbEJ5SWRlbnRpZmllcihcbiAgICBpZGVudGlmaWVyOiBTeW1ib2xUeXBlLFxuICAgIG5ldHdvcms/OiBQcm90b2NvbE5ldHdvcmsgfCBzdHJpbmcsXG4gICAgYWN0aXZlT25seT86IGJvb2xlYW5cbiAgKTogUHJvbWlzZTxJQ29pblR5cGUgfCB1bmRlZmluZWQ+XG4gIHB1YmxpYyBhYnN0cmFjdCBnZXROZXR3b3Jrc0ZvclByb3RvY29sKGlkZW50aWZpZXI6IFN5bWJvbFR5cGUsIGFjdGl2ZU9ubHk/OiBib29sZWFuKTogUHJvbWlzZTxQcm90b2NvbE5ldHdvcmtbXT5cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgdHJhbnNmb3JtQ29uZmlnKGNvbmZpZzogQ29uZmlnVHlwZSk6IFByb21pc2U8QmFzZVByb3RvY29sU3RvcmVDb25maWc8Q29sbGVjdGlvblR5cGU+PlxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgbWVyZ2VQcm90b2NvbHMocHJvdG9jb2xzMTogQ29sbGVjdGlvblR5cGUsIHByb3RvY29sczI6IENvbGxlY3Rpb25UeXBlIHwgdW5kZWZpbmVkKTogUHJvbWlzZTxDb2xsZWN0aW9uVHlwZT5cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVtb3ZlUHJvdG9jb2xEdXBsaWNhdGVzKCk6IFByb21pc2U8dm9pZD5cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHJvdG9jb2xBbmROZXR3b3JrSWRlbnRpZmllcihcbiAgICBwcm90b2NvbE9ySWRlbnRpZmllcjogSUNvaW5Qcm90b2NvbCB8IFByb3RvY29sU3ltYm9scyxcbiAgICBuZXR3b3JrPzogUHJvdG9jb2xOZXR3b3JrIHwgc3RyaW5nXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGdldFByb3RvY29sQW5kTmV0d29ya0lkZW50aWZpZXIodGhpcy5lbnZpcm9ubWVudC5tb2RlLCBwcm90b2NvbE9ySWRlbnRpZmllciwgbmV0d29yaylcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUYXJnZXROZXR3b3JrKFxuICAgIHByb3RvY29sSWRlbnRpZmllcjogUHJvdG9jb2xTeW1ib2xzLFxuICAgIG5ldHdvcms/OiBQcm90b2NvbE5ldHdvcmsgfCBzdHJpbmdcbiAgKTogUHJvbWlzZTxQcm90b2NvbE5ldHdvcmsgfCBzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5lbnZpcm9ubWVudC5tb2RlID09PSBSdW50aW1lTW9kZS5PTkxJTkVcbiAgICAgID8gbmV0d29yayA/PyAoYXdhaXQgZ2V0UHJvdG9jb2xPcHRpb25zQnlJZGVudGlmaWVyKHRoaXMubW9kdWxlc0NvbnRyb2xsZXIsIHByb3RvY29sSWRlbnRpZmllcikpLm5ldHdvcmtcbiAgICAgIDogdW5kZWZpbmVkXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { MainProtocolSymbols } from '@wallfree-dev/coinlib-core';
|
|
3
|
+
import { splitProtocolNetworkIdentifier } from '../../../../utils/protocol/protocol-network-identifier';
|
|
4
|
+
import { BaseProtocolStoreService } from '../base-protocol-store.service';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../../environment/base-environment.service";
|
|
7
|
+
import * as i2 from "../../../modules/controller/modules.controller";
|
|
8
|
+
export class MainProtocolStoreService extends BaseProtocolStoreService {
|
|
9
|
+
constructor(environment, modulesController) {
|
|
10
|
+
super('MainProtocolService', environment, modulesController);
|
|
11
|
+
}
|
|
12
|
+
async removeProtocols(identifiers) {
|
|
13
|
+
const identifiersSet = new Set(identifiers);
|
|
14
|
+
const protocolKeys = Array.from((await this.supportedProtocols).keys()).filter((key) => {
|
|
15
|
+
const { protocol: protocolIdentifier } = splitProtocolNetworkIdentifier(key);
|
|
16
|
+
return identifiersSet.has(protocolIdentifier);
|
|
17
|
+
});
|
|
18
|
+
protocolKeys.forEach((key) => {
|
|
19
|
+
this._activeProtocols.delete(key);
|
|
20
|
+
this._passiveProtocols.delete(key);
|
|
21
|
+
});
|
|
22
|
+
// reset supported protocols
|
|
23
|
+
this._supportedProtocols = undefined;
|
|
24
|
+
}
|
|
25
|
+
isIdentifierValid(identifier) {
|
|
26
|
+
return Object.values(MainProtocolSymbols).includes(identifier) || !identifier.includes('-');
|
|
27
|
+
}
|
|
28
|
+
async getProtocolByIdentifier(identifier, network, activeOnly = true, retry = true) {
|
|
29
|
+
try {
|
|
30
|
+
const targetNetwork = await this.getTargetNetwork(identifier, network);
|
|
31
|
+
const protocolAndNetworkIdentifier = await this.getProtocolAndNetworkIdentifier(identifier, targetNetwork);
|
|
32
|
+
const protocols = activeOnly ? this.activeProtocols : await this.supportedProtocols;
|
|
33
|
+
const found = protocols.get(protocolAndNetworkIdentifier);
|
|
34
|
+
if (!found && retry) {
|
|
35
|
+
return this.getProtocolByIdentifier(identifier, undefined, activeOnly, false);
|
|
36
|
+
}
|
|
37
|
+
return found;
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
// eslint-disable-next-line no-console
|
|
41
|
+
console.warn('[MainProtocolStore:getProtocolByIdentifer]', error);
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async getNetworksForProtocol(identifier, activeOnly = true) {
|
|
46
|
+
const protocols = activeOnly ? this.activeProtocols : await this.supportedProtocols;
|
|
47
|
+
const keys = Array.from(protocols.keys()).filter((protocolAndNetworkIdentifier) => {
|
|
48
|
+
const { protocol: protocolIdentifier } = splitProtocolNetworkIdentifier(protocolAndNetworkIdentifier);
|
|
49
|
+
return protocolIdentifier === identifier;
|
|
50
|
+
});
|
|
51
|
+
return Promise.all(keys.map(async (key) => {
|
|
52
|
+
const protocol = protocols.get(key);
|
|
53
|
+
return (await protocol.getOptions()).network;
|
|
54
|
+
}));
|
|
55
|
+
}
|
|
56
|
+
async transformConfig(config) {
|
|
57
|
+
const [passiveProtocols, activeProtocols] = await Promise.all([
|
|
58
|
+
this.createProtocolMap(config.passiveProtocols),
|
|
59
|
+
this.createProtocolMap(config.activeProtocols)
|
|
60
|
+
]);
|
|
61
|
+
return { ...config, passiveProtocols, activeProtocols };
|
|
62
|
+
}
|
|
63
|
+
async mergeProtocols(protocols1, protocols2) {
|
|
64
|
+
const entries1 = Array.from(protocols1.entries());
|
|
65
|
+
const entries2 = protocols2 !== undefined ? Array.from(protocols2.entries()) : [];
|
|
66
|
+
return new Map(entries1.concat(entries2));
|
|
67
|
+
}
|
|
68
|
+
async removeProtocolDuplicates() {
|
|
69
|
+
// if a protocol has been set as passive and active, it's considered active
|
|
70
|
+
const activeIdentifiers = Array.from(this._activeProtocols.keys());
|
|
71
|
+
activeIdentifiers.forEach((identifier) => {
|
|
72
|
+
this._passiveProtocols.delete(identifier);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
async createProtocolMap(protocols) {
|
|
76
|
+
const protocolsWithIdentifiers = await Promise.all(protocols.map(async (protocol) => {
|
|
77
|
+
const protocolAndNetworkIdentifier = await this.getProtocolAndNetworkIdentifier(protocol);
|
|
78
|
+
return [protocolAndNetworkIdentifier, protocol];
|
|
79
|
+
}));
|
|
80
|
+
return new Map(protocolsWithIdentifiers);
|
|
81
|
+
}
|
|
82
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MainProtocolStoreService, deps: [{ token: i1.BaseEnvironmentService }, { token: i2.ModulesController }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
83
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MainProtocolStoreService, providedIn: 'root' }); }
|
|
84
|
+
}
|
|
85
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MainProtocolStoreService, decorators: [{
|
|
86
|
+
type: Injectable,
|
|
87
|
+
args: [{
|
|
88
|
+
providedIn: 'root'
|
|
89
|
+
}]
|
|
90
|
+
}], ctorParameters: () => [{ type: i1.BaseEnvironmentService }, { type: i2.ModulesController }] });
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1wcm90b2NvbC1zdG9yZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9wcm90b2NvbC9zdG9yZS9tYWluL21haW4tcHJvdG9jb2wtc3RvcmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBaUIsbUJBQW1CLEVBQW1CLE1BQU0sNEJBQTRCLENBQUE7QUFDaEcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sd0RBQXdELENBQUE7QUFDdkcsT0FBTyxFQUFFLHdCQUF3QixFQUEyQixNQUFNLGdDQUFnQyxDQUFBOzs7O0FBV2xHLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSx3QkFLN0M7SUFDQyxZQUFZLFdBQW1DLEVBQUUsaUJBQW9DO1FBQ25GLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLENBQUMsQ0FBQTtJQUM5RCxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxXQUFrQztRQUM3RCxNQUFNLGNBQWMsR0FBZ0IsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDeEQsTUFBTSxZQUFZLEdBQWEsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUN2RyxNQUFNLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLEdBQUcsOEJBQThCLENBQUMsR0FBRyxDQUFDLENBQUE7WUFFNUUsT0FBTyxjQUFjLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUE7UUFDL0MsQ0FBQyxDQUFDLENBQUE7UUFFRixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUU7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NEIsRUFBRSxRQUFRLENBQTRCLENBQUE7UUFDNUUsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtRQUVELE9BQU8sSUFBSSxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtJQUMxQyxDQUFDOytHQTNHVSx3QkFBd0I7bUhBQXhCLHdCQUF3QixjQUZ2QixNQUFNOzs0RkFFUCx3QkFBd0I7a0JBSHBDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBJQ29pblByb3RvY29sLCBNYWluUHJvdG9jb2xTeW1ib2xzLCBQcm90b2NvbE5ldHdvcmsgfSBmcm9tICdAd2FsbGZyZWUtZGV2L2NvaW5saWItY29yZSdcbmltcG9ydCB7IHNwbGl0UHJvdG9jb2xOZXR3b3JrSWRlbnRpZmllciB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL3Byb3RvY29sL3Byb3RvY29sLW5ldHdvcmstaWRlbnRpZmllcidcbmltcG9ydCB7IEJhc2VQcm90b2NvbFN0b3JlU2VydmljZSwgQmFzZVByb3RvY29sU3RvcmVDb25maWcgfSBmcm9tICcuLi9iYXNlLXByb3RvY29sLXN0b3JlLnNlcnZpY2UnXG5pbXBvcnQgeyBNb2R1bGVzQ29udHJvbGxlciB9IGZyb20gJy4uLy4uLy4uL21vZHVsZXMvY29udHJvbGxlci9tb2R1bGVzLmNvbnRyb2xsZXInXG5pbXBvcnQgeyBCYXNlRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZW52aXJvbm1lbnQvYmFzZS1lbnZpcm9ubWVudC5zZXJ2aWNlJ1xuXG5leHBvcnQgdHlwZSBQcm90b2NvbHNNYXAgPSBNYXA8c3RyaW5nLCBJQ29pblByb3RvY29sPlxuXG5leHBvcnQgdHlwZSBNYWluUHJvdG9jb2xTdG9yZUNvbmZpZyA9IEJhc2VQcm90b2NvbFN0b3JlQ29uZmlnPElDb2luUHJvdG9jb2xbXT5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTWFpblByb3RvY29sU3RvcmVTZXJ2aWNlIGV4dGVuZHMgQmFzZVByb3RvY29sU3RvcmVTZXJ2aWNlPFxuICBJQ29pblByb3RvY29sLFxuICBNYWluUHJvdG9jb2xTeW1ib2xzLFxuICBQcm90b2NvbHNNYXAsXG4gIE1haW5Qcm90b2NvbFN0b3JlQ29uZmlnXG4+IHtcbiAgY29uc3RydWN0b3IoZW52aXJvbm1lbnQ6IEJhc2VFbnZpcm9ubWVudFNlcnZpY2UsIG1vZHVsZXNDb250cm9sbGVyOiBNb2R1bGVzQ29udHJvbGxlcikge1xuICAgIHN1cGVyKCdNYWluUHJvdG9jb2xTZXJ2aWNlJywgZW52aXJvbm1lbnQsIG1vZHVsZXNDb250cm9sbGVyKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlbW92ZVByb3RvY29scyhpZGVudGlmaWVyczogTWFpblByb3RvY29sU3ltYm9sc1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaWRlbnRpZmllcnNTZXQ6IFNldDxzdHJpbmc+ID0gbmV3IFNldChpZGVudGlmaWVycylcbiAgICBjb25zdCBwcm90b2NvbEtleXM6IHN0cmluZ1tdID0gQXJyYXkuZnJvbSgoYXdhaXQgdGhpcy5zdXBwb3J0ZWRQcm90b2NvbHMpLmtleXMoKSkuZmlsdGVyKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgeyBwcm90b2NvbDogcHJvdG9jb2xJZGVudGlmaWVyIH0gPSBzcGxpdFByb3RvY29sTmV0d29ya0lkZW50aWZpZXIoa2V5KVxuXG4gICAgICByZXR1cm4gaWRlbnRpZmllcnNTZXQuaGFzKHByb3RvY29sSWRlbnRpZmllcilcbiAgICB9KVxuXG4gICAgcHJvdG9jb2xLZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICB0aGlzLl9hY3RpdmVQcm90b2NvbHMuZGVsZXRlKGtleSlcbiAgICAgIHRoaXMuX3Bhc3NpdmVQcm90b2NvbHMuZGVsZXRlKGtleSlcbiAgICB9KVxuXG4gICAgLy8gcmVzZXQgc3VwcG9ydGVkIHByb3RvY29sc1xuICAgIHRoaXMuX3N1cHBvcnRlZFByb3RvY29scyA9IHVuZGVmaW5lZFxuICB9XG5cbiAgcHVibGljIGlzSWRlbnRpZmllclZhbGlkKGlkZW50aWZpZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKE1haW5Qcm90b2NvbFN5bWJvbHMpLmluY2x1ZGVzKGlkZW50aWZpZXIgYXMgTWFpblByb3RvY29sU3ltYm9scykgfHwgIWlkZW50aWZpZXIuaW5jbHVkZXMoJy0nKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFByb3RvY29sQnlJZGVudGlmaWVyKFxuICAgIGlkZW50aWZpZXI6IE1haW5Qcm90b2NvbFN5bWJvbHMsXG4gICAgbmV0d29yaz86IFByb3RvY29sTmV0d29yayB8IHN0cmluZyxcbiAgICBhY3RpdmVPbmx5OiBib29sZWFuID0gdHJ1ZSxcbiAgICByZXRyeTogYm9vbGVhbiA9IHRydWVcbiAgKTogUHJvbWlzZTxJQ29pblByb3RvY29sIHwgdW5kZWZpbmVkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRhcmdldE5ldHdvcms6IFByb3RvY29sTmV0d29yayB8IHN0cmluZyB8IHVuZGVmaW5lZCA9IGF3YWl0IHRoaXMuZ2V0VGFyZ2V0TmV0d29yayhpZGVudGlmaWVyLCBuZXR3b3JrKVxuICAgICAgY29uc3QgcHJvdG9jb2xBbmROZXR3b3JrSWRlbnRpZmllcjogc3RyaW5nID0gYXdhaXQgdGhpcy5nZXRQcm90b2NvbEFuZE5ldHdvcmtJZGVudGlmaWVyKGlkZW50aWZpZXIsIHRhcmdldE5ldHdvcmspXG4gICAgICBjb25zdCBwcm90b2NvbHM6IFByb3RvY29sc01hcCA9IGFjdGl2ZU9ubHkgPyB0aGlzLmFjdGl2ZVByb3RvY29scyA6IGF3YWl0IHRoaXMuc3VwcG9ydGVkUHJvdG9jb2xzXG4gICAgICBjb25zdCBmb3VuZDogSUNvaW5Qcm90b2NvbCB8IHVuZGVmaW5lZCA9IHByb3RvY29scy5nZXQocHJvdG9jb2xBbmROZXR3b3JrSWRlbnRpZmllcilcblxuICAgICAgaWYgKCFmb3VuZCAmJiByZXRyeSkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRQcm90b2NvbEJ5SWRlbnRpZmllcihpZGVudGlmaWVyLCB1bmRlZmluZWQsIGFjdGl2ZU9ubHksIGZhbHNlKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm91bmRcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2FybignW01haW5Qcm90b2NvbFN0b3JlOmdldFByb3RvY29sQnlJZGVudGlmZXJdJywgZXJyb3IpXG5cbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0TmV0d29ya3NGb3JQcm90b2NvbChpZGVudGlmaWVyOiBNYWluUHJvdG9jb2xTeW1ib2xzLCBhY3RpdmVPbmx5OiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8UHJvdG9jb2xOZXR3b3JrW10+IHtcbiAgICBjb25zdCBwcm90b2NvbHM6IFByb3RvY29sc01hcCA9IGFjdGl2ZU9ubHkgPyB0aGlzLmFjdGl2ZVByb3RvY29scyA6IGF3YWl0IHRoaXMuc3VwcG9ydGVkUHJvdG9jb2xzXG4gICAgY29uc3Qga2V5czogc3RyaW5nW10gPSBBcnJheS5mcm9tKHByb3RvY29scy5rZXlzKCkpLmZpbHRlcigocHJvdG9jb2xBbmROZXR3b3JrSWRlbnRpZmllcjogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB7IHByb3RvY29sOiBwcm90b2NvbElkZW50aWZpZXIgfSA9IHNwbGl0UHJvdG9jb2xOZXR3b3JrSWRlbnRpZmllcihwcm90b2NvbEFuZE5ldHdvcmtJZGVudGlmaWVyKVxuXG4gICAgICByZXR1cm4gcHJvdG9jb2xJZGVudGlmaWVyID09PSBpZGVudGlmaWVyXG4gICAgfSlcblxuICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgIGtleXMubWFwKGFzeW5jIChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBwcm90b2NvbDogSUNvaW5Qcm90b2NvbCB8IHVuZGVmaW5lZCA9IHByb3RvY29scy5nZXQoa2V5KVxuXG4gICAgICAgIHJldHVybiAoYXdhaXQgcHJvdG9jb2wuZ2V0T3B0aW9ucygpKS5uZXR3b3JrXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyB0cmFuc2Zvcm1Db25maWcoY29uZmlnOiBNYWluUHJvdG9jb2xTdG9yZUNvbmZpZyk6IFByb21pc2U8QmFzZVByb3RvY29sU3RvcmVDb25maWc8UHJvdG9jb2xzTWFwPj4ge1xuICAgIGNvbnN0IFtwYXNzaXZlUHJvdG9jb2xzLCBhY3RpdmVQcm90b2NvbHNdOiBQcm90b2NvbHNNYXBbXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHRoaXMuY3JlYXRlUHJvdG9jb2xNYXAoY29uZmlnLnBhc3NpdmVQcm90b2NvbHMpLFxuICAgICAgdGhpcy5jcmVhdGVQcm90b2NvbE1hcChjb25maWcuYWN0aXZlUHJvdG9jb2xzKVxuICAgIF0pXG5cbiAgICByZXR1cm4geyAuLi5jb25maWcsIHBhc3NpdmVQcm90b2NvbHMsIGFjdGl2ZVByb3RvY29scyB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgbWVyZ2VQcm90b2NvbHMocHJvdG9jb2xzMTogUHJvdG9jb2xzTWFwLCBwcm90b2NvbHMyOiBQcm90b2NvbHNNYXAgfCB1bmRlZmluZWQpOiBQcm9taXNlPFByb3RvY29sc01hcD4ge1xuICAgIGNvbnN0IGVudHJpZXMxOiBbc3RyaW5nLCBJQ29pblByb3RvY29sXVtdID0gQXJyYXkuZnJvbShwcm90b2NvbHMxLmVudHJpZXMoKSlcbiAgICBjb25zdCBlbnRyaWVzMjogW3N0cmluZywgSUNvaW5Qcm90b2NvbF1bXSA9IHByb3RvY29sczIgIT09IHVuZGVmaW5lZCA/IEFycmF5LmZyb20ocHJvdG9jb2xzMi5lbnRyaWVzKCkpIDogW11cblxuICAgIHJldHVybiBuZXcgTWFwKGVudHJpZXMxLmNvbmNhdChlbnRyaWVzMikpXG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcmVtb3ZlUHJvdG9jb2xEdXBsaWNhdGVzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIGlmIGEgcHJvdG9jb2wgaGFzIGJlZW4gc2V0IGFzIHBhc3NpdmUgYW5kIGFjdGl2ZSwgaXQncyBjb25zaWRlcmVkIGFjdGl2ZVxuICAgIGNvbnN0IGFjdGl2ZUlkZW50aWZpZXJzOiBzdHJpbmdbXSA9IEFycmF5LmZyb20odGhpcy5fYWN0aXZlUHJvdG9jb2xzLmtleXMoKSlcbiAgICBhY3RpdmVJZGVudGlmaWVycy5mb3JFYWNoKChpZGVudGlmaWVyOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMuX3Bhc3NpdmVQcm90b2NvbHMuZGVsZXRlKGlkZW50aWZpZXIpXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY3JlYXRlUHJvdG9jb2xNYXAocHJvdG9jb2xzOiBJQ29pblByb3RvY29sW10pOiBQcm9taXNlPFByb3RvY29sc01hcD4ge1xuICAgIGNvbnN0IHByb3RvY29sc1dpdGhJZGVudGlmaWVyczogW3N0cmluZywgSUNvaW5Qcm90b2NvbF1bXSA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgcHJvdG9jb2xzLm1hcChhc3luYyAocHJvdG9jb2w6IElDb2luUHJvdG9jb2wpID0+IHtcbiAgICAgICAgY29uc3QgcHJvdG9jb2xBbmROZXR3b3JrSWRlbnRpZmllciA9IGF3YWl0IHRoaXMuZ2V0UHJvdG9jb2xBbmROZXR3b3JrSWRlbnRpZmllcihwcm90b2NvbClcblxuICAgICAgICByZXR1cm4gW3Byb3RvY29sQW5kTmV0d29ya0lkZW50aWZpZXIsIHByb3RvY29sXSBhcyBbc3RyaW5nLCBJQ29pblByb3RvY29sXVxuICAgICAgfSlcbiAgICApXG5cbiAgICByZXR1cm4gbmV3IE1hcChwcm90b2NvbHNXaXRoSWRlbnRpZmllcnMpXG4gIH1cbn1cbiJdfQ==
|