@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,16 @@
|
|
|
1
|
+
import { RemoteDataFactory } from '@wallfree-dev/coinlib-core/utils/remote-data/RemoteDataFactory';
|
|
2
|
+
export class ImageDirectFetcher {
|
|
3
|
+
constructor(uriService) {
|
|
4
|
+
this.uriService = uriService;
|
|
5
|
+
this.remoteDataFactory = new RemoteDataFactory();
|
|
6
|
+
}
|
|
7
|
+
async fetch(uri) {
|
|
8
|
+
const remoteData = this.remoteDataFactory.create(uri, {});
|
|
9
|
+
const rawData = await remoteData?.getRaw();
|
|
10
|
+
if (!rawData) {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
return this.uriService.data(rawData.bytes.toString('base64'), rawData.contentType, true);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtZGlyZWN0LmZldGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ltYWdlL2ZldGNoZXIvaW1hZ2UtZGlyZWN0LmZldGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0VBQWdFLENBQUE7QUFJbEcsTUFBTSxPQUFPLGtCQUFrQjtJQUc3QixZQUE2QixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ2pELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUE7SUFDbEQsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBVztRQUM1QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUN6RCxNQUFNLE9BQU8sR0FBd0IsTUFBTSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUE7UUFDL0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxTQUFTLENBQUE7UUFDbEIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUMxRixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSYXdEYXRhIH0gZnJvbSAnQHdhbGxmcmVlLWRldi9jb2lubGliLWNvcmUvdXRpbHMvcmVtb3RlLWRhdGEvUmVtb3RlRGF0YSdcbmltcG9ydCB7IFJlbW90ZURhdGFGYWN0b3J5IH0gZnJvbSAnQHdhbGxmcmVlLWRldi9jb2lubGliLWNvcmUvdXRpbHMvcmVtb3RlLWRhdGEvUmVtb3RlRGF0YUZhY3RvcnknXG5pbXBvcnQgeyBVcmlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXJpL3VyaS5zZXJ2aWNlJ1xuaW1wb3J0IHsgSW1hZ2VGZXRjaGVyIH0gZnJvbSAnLi4vaW1hZ2Uuc2VydmljZSdcblxuZXhwb3J0IGNsYXNzIEltYWdlRGlyZWN0RmV0Y2hlciBpbXBsZW1lbnRzIEltYWdlRmV0Y2hlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVtb3RlRGF0YUZhY3Rvcnk6IFJlbW90ZURhdGFGYWN0b3J5XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB1cmlTZXJ2aWNlOiBVcmlTZXJ2aWNlKSB7XG4gICAgdGhpcy5yZW1vdGVEYXRhRmFjdG9yeSA9IG5ldyBSZW1vdGVEYXRhRmFjdG9yeSgpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZmV0Y2godXJpOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHJlbW90ZURhdGEgPSB0aGlzLnJlbW90ZURhdGFGYWN0b3J5LmNyZWF0ZSh1cmksIHt9KVxuICAgIGNvbnN0IHJhd0RhdGE6IFJhd0RhdGEgfCB1bmRlZmluZWQgPSBhd2FpdCByZW1vdGVEYXRhPy5nZXRSYXcoKVxuICAgIGlmICghcmF3RGF0YSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnVyaVNlcnZpY2UuZGF0YShyYXdEYXRhLmJ5dGVzLnRvU3RyaW5nKCdiYXNlNjQnKSwgcmF3RGF0YS5jb250ZW50VHlwZSwgdHJ1ZSlcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
function isApiResponseSuccess(response) {
|
|
3
|
+
return response.result !== undefined;
|
|
4
|
+
}
|
|
5
|
+
function isApiResponseError(response) {
|
|
6
|
+
return response.error !== undefined;
|
|
7
|
+
}
|
|
8
|
+
const API_URL = 'https://imgproxy-prod.cryptonomic-infra.tech';
|
|
9
|
+
const API_KEY = ''; // TODO: set apikey
|
|
10
|
+
export class ImageProxyFetcher {
|
|
11
|
+
constructor(apiUrl = API_URL, apiKey = API_KEY) {
|
|
12
|
+
this.apiUrl = apiUrl;
|
|
13
|
+
this.apiKey = apiKey;
|
|
14
|
+
}
|
|
15
|
+
async fetch(uri) {
|
|
16
|
+
const result = await this.send('img_proxy_fetch', {
|
|
17
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
18
|
+
response_type: 'Raw',
|
|
19
|
+
url: uri,
|
|
20
|
+
force: false
|
|
21
|
+
});
|
|
22
|
+
return result.data;
|
|
23
|
+
}
|
|
24
|
+
async send(method, params) {
|
|
25
|
+
const response = await axios.post(this.apiUrl, {
|
|
26
|
+
jsonrpc: '1.0.0',
|
|
27
|
+
method,
|
|
28
|
+
params
|
|
29
|
+
}, {
|
|
30
|
+
headers: {
|
|
31
|
+
apikey: this.apiKey,
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
33
|
+
'Content-Type': 'application/json'
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
if (isApiResponseError(response.data)) {
|
|
37
|
+
throw response.data.error;
|
|
38
|
+
}
|
|
39
|
+
if (isApiResponseSuccess(response.data)) {
|
|
40
|
+
return response.data.result;
|
|
41
|
+
}
|
|
42
|
+
throw new Error('Unknown error');
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcHJveHkuZmV0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvaW1hZ2UvZmV0Y2hlci9pbWFnZS1wcm94eS5mZXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBd0IsTUFBTSxPQUFPLENBQUE7QUFjNUMsU0FBUyxvQkFBb0IsQ0FBSSxRQUF3QjtJQUN2RCxPQUFRLFFBQTJDLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQTtBQUMxRSxDQUFDO0FBV0QsU0FBUyxrQkFBa0IsQ0FBSSxRQUF3QjtJQUNyRCxPQUFRLFFBQXNDLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQTtBQUNwRSxDQUFDO0FBdUJELE1BQU0sT0FBTyxHQUFHLDhDQUE4QyxDQUFBO0FBQzlELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQSxDQUFDLG1CQUFtQjtBQUV0QyxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFlBQTZCLFNBQWlCLE9BQU8sRUFBbUIsU0FBaUIsT0FBTztRQUFuRSxXQUFNLEdBQU4sTUFBTSxDQUFrQjtRQUFtQixXQUFNLEdBQU4sTUFBTSxDQUFrQjtJQUFHLENBQUM7SUFFN0YsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFXO1FBQzVCLE1BQU0sTUFBTSxHQUF3QixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDckUsZ0VBQWdFO1lBQ2hFLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLEdBQUcsRUFBRSxHQUFHO1lBQ1IsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLENBQUE7UUFFRixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUE7SUFDcEIsQ0FBQztJQUVPLEtBQUssQ0FBQyxJQUFJLENBQXNCLE1BQVMsRUFBRSxNQUFvQjtRQUNyRSxNQUFNLFFBQVEsR0FBNkMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUN6RSxJQUFJLENBQUMsTUFBTSxFQUNYO1lBQ0UsT0FBTyxFQUFFLE9BQU87WUFDaEIsTUFBTTtZQUNOLE1BQU07U0FDUCxFQUNEO1lBQ0UsT0FBTyxFQUFFO2dCQUNQLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsZ0VBQWdFO2dCQUNoRSxjQUFjLEVBQUUsa0JBQWtCO2FBQ25DO1NBQ0YsQ0FDRixDQUFBO1FBRUQsSUFBSSxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN0QyxNQUFNLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFBO1FBQzNCLENBQUM7UUFFRCxJQUFJLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUE7UUFDN0IsQ0FBQztRQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUE7SUFDbEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGF4aW9zLCB7IEF4aW9zUmVzcG9uc2UgfSBmcm9tICdheGlvcydcbmltcG9ydCB7IEltYWdlRmV0Y2hlciB9IGZyb20gJy4uL2ltYWdlLnNlcnZpY2UnXG5cbmludGVyZmFjZSBBcGlSZXNwb25zZUJhc2Uge1xuICBqc29ucnBjOiBzdHJpbmdcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICBycGNfc3RhdHVzOiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIEFwaVJlc3BvbnNlU3VjY2VzczxUPiBleHRlbmRzIEFwaVJlc3BvbnNlQmFzZSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpZC1ibGFja2xpc3RcbiAgcmVzdWx0OiBUXG59XG5cbmZ1bmN0aW9uIGlzQXBpUmVzcG9uc2VTdWNjZXNzPFQ+KHJlc3BvbnNlOiBBcGlSZXNwb25zZTxUPik6IHJlc3BvbnNlIGlzIEFwaVJlc3BvbnNlU3VjY2VzczxUPiB7XG4gIHJldHVybiAocmVzcG9uc2UgYXMgUGFydGlhbDxBcGlSZXNwb25zZVN1Y2Nlc3M8VD4+KS5yZXN1bHQgIT09IHVuZGVmaW5lZFxufVxuXG5pbnRlcmZhY2UgQXBpUmVzcG9uc2VFcnJvciBleHRlbmRzIEFwaVJlc3BvbnNlQmFzZSB7XG4gIGVycm9yOiB7XG4gICAgY29kZTogbnVtYmVyXG4gICAgcmVhc29uOiBzdHJpbmdcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgcmVxdWVzdF9pZDogc3RyaW5nXG4gIH1cbn1cblxuZnVuY3Rpb24gaXNBcGlSZXNwb25zZUVycm9yPFQ+KHJlc3BvbnNlOiBBcGlSZXNwb25zZTxUPik6IHJlc3BvbnNlIGlzIEFwaVJlc3BvbnNlRXJyb3Ige1xuICByZXR1cm4gKHJlc3BvbnNlIGFzIFBhcnRpYWw8QXBpUmVzcG9uc2VFcnJvcj4pLmVycm9yICE9PSB1bmRlZmluZWRcbn1cblxudHlwZSBBcGlSZXNwb25zZTxUPiA9IEFwaVJlc3BvbnNlU3VjY2VzczxUPiB8IEFwaVJlc3BvbnNlRXJyb3JcblxuaW50ZXJmYWNlIEltZ1Byb3h5RmV0Y2hQYXJhbXMge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gIHJlc3BvbnNlX3R5cGU6ICdSYXcnIHwgJ0pzb24nXG4gIHVybDogc3RyaW5nXG4gIGZvcmNlOiBib29sZWFuXG59XG5cbmludGVyZmFjZSBJbWdQcm94eUZldGNoUmVzdWx0IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICBtb2RlcmF0aW9uX3N0YXR1czogc3RyaW5nXG4gIGNhdGVnb3JpZXM6IHN0cmluZ1tdXG4gIGRhdGE6IHN0cmluZ1xufVxuXG50eXBlIEFwaU1ldGhvZCA9ICdpbWdfcHJveHlfZmV0Y2gnXG5cbnR5cGUgQXBpUGFyYW1zPFQgZXh0ZW5kcyBBcGlNZXRob2Q+ID0gVCBleHRlbmRzICdpbWdfcHJveHlfZmV0Y2gnID8gSW1nUHJveHlGZXRjaFBhcmFtcyA6IG5ldmVyXG50eXBlIEFwaVJlc3VsdDxUIGV4dGVuZHMgQXBpTWV0aG9kPiA9IFQgZXh0ZW5kcyAnaW1nX3Byb3h5X2ZldGNoJyA/IEltZ1Byb3h5RmV0Y2hSZXN1bHQgOiBuZXZlclxuXG5jb25zdCBBUElfVVJMID0gJ2h0dHBzOi8vaW1ncHJveHktcHJvZC5jcnlwdG9ub21pYy1pbmZyYS50ZWNoJ1xuY29uc3QgQVBJX0tFWSA9ICcnIC8vIFRPRE86IHNldCBhcGlrZXlcblxuZXhwb3J0IGNsYXNzIEltYWdlUHJveHlGZXRjaGVyIGltcGxlbWVudHMgSW1hZ2VGZXRjaGVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBhcGlVcmw6IHN0cmluZyA9IEFQSV9VUkwsIHByaXZhdGUgcmVhZG9ubHkgYXBpS2V5OiBzdHJpbmcgPSBBUElfS0VZKSB7fVxuXG4gIHB1YmxpYyBhc3luYyBmZXRjaCh1cmk6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcmVzdWx0OiBJbWdQcm94eUZldGNoUmVzdWx0ID0gYXdhaXQgdGhpcy5zZW5kKCdpbWdfcHJveHlfZmV0Y2gnLCB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgICByZXNwb25zZV90eXBlOiAnUmF3JyxcbiAgICAgIHVybDogdXJpLFxuICAgICAgZm9yY2U6IGZhbHNlXG4gICAgfSlcblxuICAgIHJldHVybiByZXN1bHQuZGF0YVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kPFQgZXh0ZW5kcyBBcGlNZXRob2Q+KG1ldGhvZDogVCwgcGFyYW1zOiBBcGlQYXJhbXM8VD4pOiBQcm9taXNlPEFwaVJlc3VsdDxUPj4ge1xuICAgIGNvbnN0IHJlc3BvbnNlOiBBeGlvc1Jlc3BvbnNlPEFwaVJlc3BvbnNlPEFwaVJlc3VsdDxUPj4+ID0gYXdhaXQgYXhpb3MucG9zdChcbiAgICAgIHRoaXMuYXBpVXJsLFxuICAgICAge1xuICAgICAgICBqc29ucnBjOiAnMS4wLjAnLFxuICAgICAgICBtZXRob2QsXG4gICAgICAgIHBhcmFtc1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIGFwaWtleTogdGhpcy5hcGlLZXksXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgfVxuICAgICAgfVxuICAgIClcblxuICAgIGlmIChpc0FwaVJlc3BvbnNlRXJyb3IocmVzcG9uc2UuZGF0YSkpIHtcbiAgICAgIHRocm93IHJlc3BvbnNlLmRhdGEuZXJyb3JcbiAgICB9XG5cbiAgICBpZiAoaXNBcGlSZXNwb25zZVN1Y2Nlc3MocmVzcG9uc2UuZGF0YSkpIHtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLnJlc3VsdFxuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBlcnJvcicpXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { ImageDirectFetcher } from './fetcher/image-direct.fetcher';
|
|
3
|
+
import { ImageProxyFetcher } from './fetcher/image-proxy.fetcher';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../uri/uri.service";
|
|
6
|
+
const DEFAULT_FETCH_OPTIONS = {
|
|
7
|
+
useProxy: false
|
|
8
|
+
};
|
|
9
|
+
export class ImageService {
|
|
10
|
+
constructor(uriService) {
|
|
11
|
+
this.uriService = uriService;
|
|
12
|
+
}
|
|
13
|
+
async fetch(uri, options = DEFAULT_FETCH_OPTIONS) {
|
|
14
|
+
return this.getFetcher(options).fetch(uri);
|
|
15
|
+
}
|
|
16
|
+
getFetcher(options) {
|
|
17
|
+
if (options.useProxy) {
|
|
18
|
+
const proxyFetcher = this.proxyFetcher ?? new ImageProxyFetcher();
|
|
19
|
+
if (!this.proxyFetcher) {
|
|
20
|
+
this.proxyFetcher = proxyFetcher;
|
|
21
|
+
}
|
|
22
|
+
return proxyFetcher;
|
|
23
|
+
}
|
|
24
|
+
const directFetcher = this.directFetcher ?? new ImageDirectFetcher(this.uriService);
|
|
25
|
+
if (!this.directFetcher) {
|
|
26
|
+
this.directFetcher = directFetcher;
|
|
27
|
+
}
|
|
28
|
+
return directFetcher;
|
|
29
|
+
}
|
|
30
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImageService, deps: [{ token: i1.UriService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
31
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImageService, providedIn: 'root' }); }
|
|
32
|
+
}
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImageService, decorators: [{
|
|
34
|
+
type: Injectable,
|
|
35
|
+
args: [{
|
|
36
|
+
providedIn: 'root'
|
|
37
|
+
}]
|
|
38
|
+
}], ctorParameters: () => [{ type: i1.UriService }] });
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvaW1hZ2UvaW1hZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRTFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBQ25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFBOzs7QUFVakUsTUFBTSxxQkFBcUIsR0FBaUI7SUFDMUMsUUFBUSxFQUFFLEtBQUs7Q0FDaEIsQ0FBQTtBQUtELE1BQU0sT0FBTyxZQUFZO0lBSXZCLFlBQTZCLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7SUFBRyxDQUFDO0lBRWhELEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBVyxFQUFFLFVBQXdCLHFCQUFxQjtRQUMzRSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzVDLENBQUM7SUFFTyxVQUFVLENBQUMsT0FBcUI7UUFDdEMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDckIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLGlCQUFpQixFQUFFLENBQUE7WUFDakUsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUE7WUFDbEMsQ0FBQztZQUVELE9BQU8sWUFBWSxDQUFBO1FBQ3JCLENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ25GLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUE7UUFDcEMsQ0FBQztRQUVELE9BQU8sYUFBYSxDQUFBO0lBQ3RCLENBQUM7K0dBMUJVLFlBQVk7bUhBQVosWUFBWSxjQUZYLE1BQU07OzRGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBVcmlTZXJ2aWNlIH0gZnJvbSAnLi4vdXJpL3VyaS5zZXJ2aWNlJ1xuaW1wb3J0IHsgSW1hZ2VEaXJlY3RGZXRjaGVyIH0gZnJvbSAnLi9mZXRjaGVyL2ltYWdlLWRpcmVjdC5mZXRjaGVyJ1xuaW1wb3J0IHsgSW1hZ2VQcm94eUZldGNoZXIgfSBmcm9tICcuL2ZldGNoZXIvaW1hZ2UtcHJveHkuZmV0Y2hlcidcblxuZXhwb3J0IGludGVyZmFjZSBJbWFnZUZldGNoZXIge1xuICBmZXRjaCh1cmk6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPlxufVxuXG5pbnRlcmZhY2UgRmV0Y2hPcHRpb25zIHtcbiAgdXNlUHJveHk6IGJvb2xlYW5cbn1cblxuY29uc3QgREVGQVVMVF9GRVRDSF9PUFRJT05TOiBGZXRjaE9wdGlvbnMgPSB7XG4gIHVzZVByb3h5OiBmYWxzZVxufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBJbWFnZVNlcnZpY2Uge1xuICBwcml2YXRlIGRpcmVjdEZldGNoZXI6IEltYWdlRGlyZWN0RmV0Y2hlciB8IHVuZGVmaW5lZFxuICBwcml2YXRlIHByb3h5RmV0Y2hlcjogSW1hZ2VQcm94eUZldGNoZXIgfCB1bmRlZmluZWRcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHVyaVNlcnZpY2U6IFVyaVNlcnZpY2UpIHt9XG5cbiAgcHVibGljIGFzeW5jIGZldGNoKHVyaTogc3RyaW5nLCBvcHRpb25zOiBGZXRjaE9wdGlvbnMgPSBERUZBVUxUX0ZFVENIX09QVElPTlMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmdldEZldGNoZXIob3B0aW9ucykuZmV0Y2godXJpKVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRGZXRjaGVyKG9wdGlvbnM6IEZldGNoT3B0aW9ucyk6IEltYWdlRmV0Y2hlciB7XG4gICAgaWYgKG9wdGlvbnMudXNlUHJveHkpIHtcbiAgICAgIGNvbnN0IHByb3h5RmV0Y2hlciA9IHRoaXMucHJveHlGZXRjaGVyID8/IG5ldyBJbWFnZVByb3h5RmV0Y2hlcigpXG4gICAgICBpZiAoIXRoaXMucHJveHlGZXRjaGVyKSB7XG4gICAgICAgIHRoaXMucHJveHlGZXRjaGVyID0gcHJveHlGZXRjaGVyXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcm94eUZldGNoZXJcbiAgICB9XG5cbiAgICBjb25zdCBkaXJlY3RGZXRjaGVyID0gdGhpcy5kaXJlY3RGZXRjaGVyID8/IG5ldyBJbWFnZURpcmVjdEZldGNoZXIodGhpcy51cmlTZXJ2aWNlKVxuICAgIGlmICghdGhpcy5kaXJlY3RGZXRjaGVyKSB7XG4gICAgICB0aGlzLmRpcmVjdEZldGNoZXIgPSBkaXJlY3RGZXRjaGVyXG4gICAgfVxuXG4gICAgcmV0dXJuIGRpcmVjdEZldGNoZXJcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { MainProtocolSymbols } from '@wallfree-dev/coinlib-core';
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { ICoinProtocolAdapter } from '../../protocol/adapter/protocol-v0-adapter';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class KeyPairService {
|
|
6
|
+
async signWithWallet(wallet, unsigned, mnemonic, password) {
|
|
7
|
+
return this.signWithProtocol(wallet.protocol, unsigned, mnemonic, password, wallet.isExtendedPublicKey, wallet.derivationPath);
|
|
8
|
+
}
|
|
9
|
+
async signWithProtocol(protocol, unsigned, mnemonic, password, withExtendedPrivateKey = false, optionalDerivationPath, childDerivationPath) {
|
|
10
|
+
const derivationPath = optionalDerivationPath ?? (await protocol.getStandardDerivationPath());
|
|
11
|
+
if (!(await this.checkPassword(protocol, unsigned, mnemonic, withExtendedPrivateKey, derivationPath, password))) {
|
|
12
|
+
throw new Error('Invalid BIP-39 passphrase');
|
|
13
|
+
}
|
|
14
|
+
if (withExtendedPrivateKey) {
|
|
15
|
+
const extendedPrivateKey = await protocol.getExtendedPrivateKeyFromMnemonic(mnemonic, derivationPath, password);
|
|
16
|
+
if (this.isUnsignedTransaction(unsigned)) {
|
|
17
|
+
return protocol.signWithExtendedPrivateKey(extendedPrivateKey, unsigned.transaction, childDerivationPath);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
const privateKey = (await protocol.getIdentifier()).startsWith(MainProtocolSymbols.ETH)
|
|
21
|
+
? protocol instanceof ICoinProtocolAdapter
|
|
22
|
+
? await protocol.getPrivateKeyFromExtendedPrivateKey(extendedPrivateKey, childDerivationPath)
|
|
23
|
+
: await protocol.getPrivateKeyFromExtendedPrivateKey(extendedPrivateKey, childDerivationPath) // This only exists on ETH
|
|
24
|
+
: extendedPrivateKey;
|
|
25
|
+
return protocol.signMessage(unsigned.message, { privateKey });
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
const privateKey = await protocol.getPrivateKeyFromMnemonic(mnemonic, derivationPath, password);
|
|
30
|
+
return this.isUnsignedTransaction(unsigned)
|
|
31
|
+
? protocol.signWithPrivateKey(privateKey, unsigned.transaction)
|
|
32
|
+
: protocol.signMessage(unsigned.message, { privateKey });
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
async checkPassword(protocol, unsigned, mnemonic, withExtendedPrivateKey = false, derivationPath, password) {
|
|
36
|
+
if (unsigned.publicKey.length === 0) {
|
|
37
|
+
// the password can't be verified
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
const publicKey = withExtendedPrivateKey && (await protocol.getSupportsHD())
|
|
41
|
+
? await protocol.getExtendedPublicKeyFromMnemonic(mnemonic, derivationPath, password)
|
|
42
|
+
: await protocol.getPublicKeyFromMnemonic(mnemonic, derivationPath, password);
|
|
43
|
+
return publicKey === unsigned.publicKey;
|
|
44
|
+
}
|
|
45
|
+
isUnsignedTransaction(unsigned) {
|
|
46
|
+
return 'transaction' in unsigned;
|
|
47
|
+
}
|
|
48
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KeyPairService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
49
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KeyPairService, providedIn: 'root' }); }
|
|
50
|
+
}
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KeyPairService, decorators: [{
|
|
52
|
+
type: Injectable,
|
|
53
|
+
args: [{
|
|
54
|
+
providedIn: 'root'
|
|
55
|
+
}]
|
|
56
|
+
}] });
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LXBhaXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMva2V5LXBhaXIva2V5LXBhaXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQStCLG1CQUFtQixFQUF1QixNQUFNLDRCQUE0QixDQUFBO0FBRWxILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNENBQTRDLENBQUE7O0FBT2pGLE1BQU0sT0FBTyxjQUFjO0lBQ2xCLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBb0IsRUFBRSxRQUFrQixFQUFFLFFBQWdCLEVBQUUsUUFBZ0I7UUFDdEcsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ2hJLENBQUM7SUFFTSxLQUFLLENBQUMsZ0JBQWdCLENBQzNCLFFBQXVCLEVBQ3ZCLFFBQWtCLEVBQ2xCLFFBQWdCLEVBQ2hCLFFBQWdCLEVBQ2hCLHlCQUFrQyxLQUFLLEVBQ3ZDLHNCQUErQixFQUMvQixtQkFBNEI7UUFFNUIsTUFBTSxjQUFjLEdBQVcsc0JBQXNCLElBQUksQ0FBQyxNQUFNLFFBQVEsQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUE7UUFDckcsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLGNBQWMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDaEgsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFBO1FBQzlDLENBQUM7UUFFRCxJQUFJLHNCQUFzQixFQUFFLENBQUM7WUFDM0IsTUFBTSxrQkFBa0IsR0FBVyxNQUFNLFFBQVEsQ0FBQyxpQ0FBaUMsQ0FBQyxRQUFRLEVBQUUsY0FBYyxFQUFFLFFBQVEsQ0FBQyxDQUFBO1lBRXZILElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pDLE9BQU8sUUFBUSxDQUFDLDBCQUEwQixDQUFDLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxXQUFXLEVBQUUsbUJBQW1CLENBQUMsQ0FBQTtZQUMzRyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxVQUFVLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUM7b0JBQ3JGLENBQUMsQ0FBQyxRQUFRLFlBQVksb0JBQW9CO3dCQUN4QyxDQUFDLENBQUMsTUFBTSxRQUFRLENBQUMsbUNBQW1DLENBQUMsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUM7d0JBQzdGLENBQUMsQ0FBQyxNQUFPLFFBQWdCLENBQUMsbUNBQW1DLENBQUMsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUMsQ0FBQywwQkFBMEI7b0JBQ25JLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQTtnQkFFdEIsT0FBTyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFBO1lBQy9ELENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sVUFBVSxHQUFXLE1BQU0sUUFBUSxDQUFDLHlCQUF5QixDQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUE7WUFFdkcsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDO2dCQUN6QyxDQUFDLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDO2dCQUMvRCxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQTtRQUM1RCxDQUFDO0lBQ0gsQ0FBQztJQUVNLEtBQUssQ0FBQyxhQUFhLENBQ3hCLFFBQXVCLEVBQ3ZCLFFBQWtCLEVBQ2xCLFFBQWdCLEVBQ2hCLHlCQUFrQyxLQUFLLEVBQ3ZDLGNBQXNCLEVBQ3RCLFFBQWdCO1FBRWhCLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDcEMsaUNBQWlDO1lBQ2pDLE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUNiLHNCQUFzQixJQUFJLENBQUMsTUFBTSxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDeEQsQ0FBQyxDQUFDLE1BQU0sUUFBUSxDQUFDLGdDQUFnQyxDQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUUsUUFBUSxDQUFDO1lBQ3JGLENBQUMsQ0FBQyxNQUFNLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsY0FBYyxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBRWpGLE9BQU8sU0FBUyxLQUFLLFFBQVEsQ0FBQyxTQUFTLENBQUE7SUFDekMsQ0FBQztJQUVPLHFCQUFxQixDQUFDLFFBQWtCO1FBQzlDLE9BQU8sYUFBYSxJQUFJLFFBQVEsQ0FBQTtJQUNsQyxDQUFDOytHQWpFVSxjQUFjO21IQUFkLGNBQWMsY0FGYixNQUFNOzs0RkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFpckdhcFdhbGxldCwgSUNvaW5Qcm90b2NvbCwgTWFpblByb3RvY29sU3ltYm9scywgVW5zaWduZWRUcmFuc2FjdGlvbiB9IGZyb20gJ0B3YWxsZnJlZS1kZXYvY29pbmxpYi1jb3JlJ1xuaW1wb3J0IHsgTWVzc2FnZVNpZ25SZXF1ZXN0IH0gZnJvbSAnQHdhbGxmcmVlLWRldi9zZXJpYWxpemVyJ1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBJQ29pblByb3RvY29sQWRhcHRlciB9IGZyb20gJy4uLy4uL3Byb3RvY29sL2FkYXB0ZXIvcHJvdG9jb2wtdjAtYWRhcHRlcidcblxudHlwZSBVbnNpZ25lZCA9IFVuc2lnbmVkVHJhbnNhY3Rpb24gfCBNZXNzYWdlU2lnblJlcXVlc3RcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgS2V5UGFpclNlcnZpY2Uge1xuICBwdWJsaWMgYXN5bmMgc2lnbldpdGhXYWxsZXQod2FsbGV0OiBBaXJHYXBXYWxsZXQsIHVuc2lnbmVkOiBVbnNpZ25lZCwgbW5lbW9uaWM6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuc2lnbldpdGhQcm90b2NvbCh3YWxsZXQucHJvdG9jb2wsIHVuc2lnbmVkLCBtbmVtb25pYywgcGFzc3dvcmQsIHdhbGxldC5pc0V4dGVuZGVkUHVibGljS2V5LCB3YWxsZXQuZGVyaXZhdGlvblBhdGgpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2lnbldpdGhQcm90b2NvbChcbiAgICBwcm90b2NvbDogSUNvaW5Qcm90b2NvbCxcbiAgICB1bnNpZ25lZDogVW5zaWduZWQsXG4gICAgbW5lbW9uaWM6IHN0cmluZyxcbiAgICBwYXNzd29yZDogc3RyaW5nLFxuICAgIHdpdGhFeHRlbmRlZFByaXZhdGVLZXk6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICBvcHRpb25hbERlcml2YXRpb25QYXRoPzogc3RyaW5nLFxuICAgIGNoaWxkRGVyaXZhdGlvblBhdGg/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBkZXJpdmF0aW9uUGF0aDogc3RyaW5nID0gb3B0aW9uYWxEZXJpdmF0aW9uUGF0aCA/PyAoYXdhaXQgcHJvdG9jb2wuZ2V0U3RhbmRhcmREZXJpdmF0aW9uUGF0aCgpKVxuICAgIGlmICghKGF3YWl0IHRoaXMuY2hlY2tQYXNzd29yZChwcm90b2NvbCwgdW5zaWduZWQsIG1uZW1vbmljLCB3aXRoRXh0ZW5kZWRQcml2YXRlS2V5LCBkZXJpdmF0aW9uUGF0aCwgcGFzc3dvcmQpKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEJJUC0zOSBwYXNzcGhyYXNlJylcbiAgICB9XG5cbiAgICBpZiAod2l0aEV4dGVuZGVkUHJpdmF0ZUtleSkge1xuICAgICAgY29uc3QgZXh0ZW5kZWRQcml2YXRlS2V5OiBzdHJpbmcgPSBhd2FpdCBwcm90b2NvbC5nZXRFeHRlbmRlZFByaXZhdGVLZXlGcm9tTW5lbW9uaWMobW5lbW9uaWMsIGRlcml2YXRpb25QYXRoLCBwYXNzd29yZClcblxuICAgICAgaWYgKHRoaXMuaXNVbnNpZ25lZFRyYW5zYWN0aW9uKHVuc2lnbmVkKSkge1xuICAgICAgICByZXR1cm4gcHJvdG9jb2wuc2lnbldpdGhFeHRlbmRlZFByaXZhdGVLZXkoZXh0ZW5kZWRQcml2YXRlS2V5LCB1bnNpZ25lZC50cmFuc2FjdGlvbiwgY2hpbGREZXJpdmF0aW9uUGF0aClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHByaXZhdGVLZXkgPSAoYXdhaXQgcHJvdG9jb2wuZ2V0SWRlbnRpZmllcigpKS5zdGFydHNXaXRoKE1haW5Qcm90b2NvbFN5bWJvbHMuRVRIKVxuICAgICAgICAgID8gcHJvdG9jb2wgaW5zdGFuY2VvZiBJQ29pblByb3RvY29sQWRhcHRlclxuICAgICAgICAgICAgPyBhd2FpdCBwcm90b2NvbC5nZXRQcml2YXRlS2V5RnJvbUV4dGVuZGVkUHJpdmF0ZUtleShleHRlbmRlZFByaXZhdGVLZXksIGNoaWxkRGVyaXZhdGlvblBhdGgpXG4gICAgICAgICAgICA6IGF3YWl0IChwcm90b2NvbCBhcyBhbnkpLmdldFByaXZhdGVLZXlGcm9tRXh0ZW5kZWRQcml2YXRlS2V5KGV4dGVuZGVkUHJpdmF0ZUtleSwgY2hpbGREZXJpdmF0aW9uUGF0aCkgLy8gVGhpcyBvbmx5IGV4aXN0cyBvbiBFVEhcbiAgICAgICAgICA6IGV4dGVuZGVkUHJpdmF0ZUtleVxuXG4gICAgICAgIHJldHVybiBwcm90b2NvbC5zaWduTWVzc2FnZSh1bnNpZ25lZC5tZXNzYWdlLCB7IHByaXZhdGVLZXkgfSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcHJpdmF0ZUtleTogc3RyaW5nID0gYXdhaXQgcHJvdG9jb2wuZ2V0UHJpdmF0ZUtleUZyb21NbmVtb25pYyhtbmVtb25pYywgZGVyaXZhdGlvblBhdGgsIHBhc3N3b3JkKVxuXG4gICAgICByZXR1cm4gdGhpcy5pc1Vuc2lnbmVkVHJhbnNhY3Rpb24odW5zaWduZWQpXG4gICAgICAgID8gcHJvdG9jb2wuc2lnbldpdGhQcml2YXRlS2V5KHByaXZhdGVLZXksIHVuc2lnbmVkLnRyYW5zYWN0aW9uKVxuICAgICAgICA6IHByb3RvY29sLnNpZ25NZXNzYWdlKHVuc2lnbmVkLm1lc3NhZ2UsIHsgcHJpdmF0ZUtleSB9KVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGVja1Bhc3N3b3JkKFxuICAgIHByb3RvY29sOiBJQ29pblByb3RvY29sLFxuICAgIHVuc2lnbmVkOiBVbnNpZ25lZCxcbiAgICBtbmVtb25pYzogc3RyaW5nLFxuICAgIHdpdGhFeHRlbmRlZFByaXZhdGVLZXk6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICBkZXJpdmF0aW9uUGF0aDogc3RyaW5nLFxuICAgIHBhc3N3b3JkOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHVuc2lnbmVkLnB1YmxpY0tleS5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIHRoZSBwYXNzd29yZCBjYW4ndCBiZSB2ZXJpZmllZFxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBjb25zdCBwdWJsaWNLZXk6IHN0cmluZyA9XG4gICAgICB3aXRoRXh0ZW5kZWRQcml2YXRlS2V5ICYmIChhd2FpdCBwcm90b2NvbC5nZXRTdXBwb3J0c0hEKCkpXG4gICAgICAgID8gYXdhaXQgcHJvdG9jb2wuZ2V0RXh0ZW5kZWRQdWJsaWNLZXlGcm9tTW5lbW9uaWMobW5lbW9uaWMsIGRlcml2YXRpb25QYXRoLCBwYXNzd29yZClcbiAgICAgICAgOiBhd2FpdCBwcm90b2NvbC5nZXRQdWJsaWNLZXlGcm9tTW5lbW9uaWMobW5lbW9uaWMsIGRlcml2YXRpb25QYXRoLCBwYXNzd29yZClcblxuICAgIHJldHVybiBwdWJsaWNLZXkgPT09IHVuc2lnbmVkLnB1YmxpY0tleVxuICB9XG5cbiAgcHJpdmF0ZSBpc1Vuc2lnbmVkVHJhbnNhY3Rpb24odW5zaWduZWQ6IFVuc2lnbmVkKTogdW5zaWduZWQgaXMgVW5zaWduZWRUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuICd0cmFuc2FjdGlvbicgaW4gdW5zaWduZWRcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@ngx-translate/core";
|
|
4
|
+
export class LanguageService {
|
|
5
|
+
static { this.defaultLanguage = 'en'; }
|
|
6
|
+
get supportedLanguages() {
|
|
7
|
+
return this.translateService.getLangs();
|
|
8
|
+
}
|
|
9
|
+
constructor(translateService) {
|
|
10
|
+
this.translateService = translateService;
|
|
11
|
+
}
|
|
12
|
+
async init(config = {
|
|
13
|
+
supportedLanguages: [LanguageService.defaultLanguage],
|
|
14
|
+
defaultLanguage: LanguageService.defaultLanguage,
|
|
15
|
+
useBrowserLanguage: true
|
|
16
|
+
}) {
|
|
17
|
+
const supportedLanguages = config.supportedLanguages;
|
|
18
|
+
const defaultLanguage = config.defaultLanguage;
|
|
19
|
+
const useBrowserLanguage = config.useBrowserLanguage ?? true;
|
|
20
|
+
if (supportedLanguages.find((supported) => supported === defaultLanguage) === undefined) {
|
|
21
|
+
supportedLanguages.push(defaultLanguage);
|
|
22
|
+
}
|
|
23
|
+
this.translateService.addLangs(supportedLanguages);
|
|
24
|
+
this.translateService.setDefaultLang(defaultLanguage);
|
|
25
|
+
const language = useBrowserLanguage ? this.translateService.getBrowserLang().toLowerCase() : defaultLanguage;
|
|
26
|
+
return this.changeLanguage(language);
|
|
27
|
+
}
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
|
|
29
|
+
loadTranslation(language, translation, merge = true) {
|
|
30
|
+
this.translateService.setTranslation(language, translation, merge);
|
|
31
|
+
}
|
|
32
|
+
async changeLanguage(language) {
|
|
33
|
+
return this.translateService.use(language).toPromise();
|
|
34
|
+
}
|
|
35
|
+
isLanguageSupported(language) {
|
|
36
|
+
return this.supportedLanguages.find((supported) => supported === language) !== undefined;
|
|
37
|
+
}
|
|
38
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LanguageService, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
39
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LanguageService, providedIn: 'root' }); }
|
|
40
|
+
}
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LanguageService, decorators: [{
|
|
42
|
+
type: Injectable,
|
|
43
|
+
args: [{
|
|
44
|
+
providedIn: 'root'
|
|
45
|
+
}]
|
|
46
|
+
}], ctorParameters: () => [{ type: i1.TranslateService }] });
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvbGFuZ3VhZ2UvbGFuZ3VhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBOzs7QUFhMUMsTUFBTSxPQUFPLGVBQWU7YUFDRixvQkFBZSxHQUFzQixJQUFJLEFBQTFCLENBQTBCO0lBRWpFLElBQVcsa0JBQWtCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ3pDLENBQUM7SUFFRCxZQUE2QixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUFHLENBQUM7SUFFNUQsS0FBSyxDQUFDLElBQUksQ0FDZixTQUFnQztRQUM5QixrQkFBa0IsRUFBRSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUM7UUFDckQsZUFBZSxFQUFFLGVBQWUsQ0FBQyxlQUFlO1FBQ2hELGtCQUFrQixFQUFFLElBQUk7S0FDekI7UUFFRCxNQUFNLGtCQUFrQixHQUF3QixNQUFNLENBQUMsa0JBQWtCLENBQUE7UUFDekUsTUFBTSxlQUFlLEdBQXNCLE1BQU0sQ0FBQyxlQUFlLENBQUE7UUFDakUsTUFBTSxrQkFBa0IsR0FBWSxNQUFNLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFBO1FBRXJFLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBNEIsRUFBRSxFQUFFLENBQUMsU0FBUyxLQUFLLGVBQWUsQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzNHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUMxQyxDQUFDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO1FBQ2xELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLENBQUE7UUFFckQsTUFBTSxRQUFRLEdBQVcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFBO1FBRXBILE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0lBRUQsaUhBQWlIO0lBQzFHLGVBQWUsQ0FBQyxRQUFnQixFQUFFLFdBQWdCLEVBQUUsUUFBaUIsSUFBSTtRQUM5RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDcEUsQ0FBQztJQUVNLEtBQUssQ0FBQyxjQUFjLENBQUMsUUFBZ0I7UUFDMUMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFBO0lBQ3hELENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxRQUFnQjtRQUN6QyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFpQixFQUFFLEVBQUUsQ0FBQyxTQUFTLEtBQUssUUFBUSxDQUFDLEtBQUssU0FBUyxDQUFBO0lBQ2xHLENBQUM7K0dBM0NVLGVBQWU7bUhBQWYsZUFBZSxjQUZkLE1BQU07OzRGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IFN1cHBvcnRlZExhbmd1YWdlIH0gZnJvbSAnLi4vLi4vdHlwZXMvU3VwcG9ydGVkTGFuZ3VhZ2UnXG5cbmV4cG9ydCBpbnRlcmZhY2UgTGFuZ3VhZ2VTZXJ2aWNlQ29uZmlnIHtcbiAgc3VwcG9ydGVkTGFuZ3VhZ2VzOiBTdXBwb3J0ZWRMYW5ndWFnZVtdXG4gIGRlZmF1bHRMYW5ndWFnZTogU3VwcG9ydGVkTGFuZ3VhZ2VcbiAgdXNlQnJvd3Nlckxhbmd1YWdlPzogYm9vbGVhblxufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBMYW5ndWFnZVNlcnZpY2Uge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBkZWZhdWx0TGFuZ3VhZ2U6IFN1cHBvcnRlZExhbmd1YWdlID0gJ2VuJ1xuXG4gIHB1YmxpYyBnZXQgc3VwcG9ydGVkTGFuZ3VhZ2VzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldExhbmdzKClcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSkge31cblxuICBwdWJsaWMgYXN5bmMgaW5pdChcbiAgICBjb25maWc6IExhbmd1YWdlU2VydmljZUNvbmZpZyA9IHtcbiAgICAgIHN1cHBvcnRlZExhbmd1YWdlczogW0xhbmd1YWdlU2VydmljZS5kZWZhdWx0TGFuZ3VhZ2VdLFxuICAgICAgZGVmYXVsdExhbmd1YWdlOiBMYW5ndWFnZVNlcnZpY2UuZGVmYXVsdExhbmd1YWdlLFxuICAgICAgdXNlQnJvd3Nlckxhbmd1YWdlOiB0cnVlXG4gICAgfVxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzdXBwb3J0ZWRMYW5ndWFnZXM6IFN1cHBvcnRlZExhbmd1YWdlW10gPSBjb25maWcuc3VwcG9ydGVkTGFuZ3VhZ2VzXG4gICAgY29uc3QgZGVmYXVsdExhbmd1YWdlOiBTdXBwb3J0ZWRMYW5ndWFnZSA9IGNvbmZpZy5kZWZhdWx0TGFuZ3VhZ2VcbiAgICBjb25zdCB1c2VCcm93c2VyTGFuZ3VhZ2U6IGJvb2xlYW4gPSBjb25maWcudXNlQnJvd3Nlckxhbmd1YWdlID8/IHRydWVcblxuICAgIGlmIChzdXBwb3J0ZWRMYW5ndWFnZXMuZmluZCgoc3VwcG9ydGVkOiBTdXBwb3J0ZWRMYW5ndWFnZSkgPT4gc3VwcG9ydGVkID09PSBkZWZhdWx0TGFuZ3VhZ2UpID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHN1cHBvcnRlZExhbmd1YWdlcy5wdXNoKGRlZmF1bHRMYW5ndWFnZSlcbiAgICB9XG5cbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuYWRkTGFuZ3Moc3VwcG9ydGVkTGFuZ3VhZ2VzKVxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zZXREZWZhdWx0TGFuZyhkZWZhdWx0TGFuZ3VhZ2UpXG5cbiAgICBjb25zdCBsYW5ndWFnZTogc3RyaW5nID0gdXNlQnJvd3Nlckxhbmd1YWdlID8gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldEJyb3dzZXJMYW5nKCkudG9Mb3dlckNhc2UoKSA6IGRlZmF1bHRMYW5ndWFnZVxuXG4gICAgcmV0dXJuIHRoaXMuY2hhbmdlTGFuZ3VhZ2UobGFuZ3VhZ2UpXG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSwgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1vZHVsZS1ib3VuZGFyeS10eXBlc1xuICBwdWJsaWMgbG9hZFRyYW5zbGF0aW9uKGxhbmd1YWdlOiBzdHJpbmcsIHRyYW5zbGF0aW9uOiBhbnksIG1lcmdlOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zZXRUcmFuc2xhdGlvbihsYW5ndWFnZSwgdHJhbnNsYXRpb24sIG1lcmdlKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUxhbmd1YWdlKGxhbmd1YWdlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnVzZShsYW5ndWFnZSkudG9Qcm9taXNlKClcbiAgfVxuXG4gIHB1YmxpYyBpc0xhbmd1YWdlU3VwcG9ydGVkKGxhbmd1YWdlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdXBwb3J0ZWRMYW5ndWFnZXMuZmluZCgoc3VwcG9ydGVkOiBzdHJpbmcpID0+IHN1cHBvcnRlZCA9PT0gbGFuZ3VhZ2UpICE9PSB1bmRlZmluZWRcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { isOnlineProtocol, isSubProtocol, protocolNetworkIdentifier } from '@wallfree-dev/module-kit';
|
|
2
|
+
import { SerializerV3 } from '@wallfree-dev/serializer';
|
|
3
|
+
import { Injectable } from '@angular/core';
|
|
4
|
+
import { createICoinProtocolAdapter, createICoinSubProtocolAdapter, TransactionValidatorAdapter } from '../../protocol/adapter/protocol-v0-adapter';
|
|
5
|
+
import { flattened } from '../../utils/array';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "./controller/modules.controller";
|
|
8
|
+
import * as i2 from "../protocol/protocol.service";
|
|
9
|
+
export class BaseModulesService {
|
|
10
|
+
get isInitialized() {
|
|
11
|
+
return this.modulesController.isInitialized;
|
|
12
|
+
}
|
|
13
|
+
constructor(modulesController, protocolService) {
|
|
14
|
+
this.modulesController = modulesController;
|
|
15
|
+
this.protocolService = protocolService;
|
|
16
|
+
}
|
|
17
|
+
init(integralModules = []) {
|
|
18
|
+
if (this.isInitialized) {
|
|
19
|
+
// eslint-disable-next-line no-console
|
|
20
|
+
console.log('[ModulesService] already initialized');
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
this.modulesController.init(integralModules);
|
|
24
|
+
}
|
|
25
|
+
async loadProtocols(type, ignore = []) {
|
|
26
|
+
const modules = await this.modulesController.loadModules(type, ignore);
|
|
27
|
+
const adaptedProtocols = await this.adaptProtocols(modules, type);
|
|
28
|
+
return this.processAdaptedProtocols(adaptedProtocols);
|
|
29
|
+
}
|
|
30
|
+
async deriveAddresses(walletOrWallets, amount = 50) {
|
|
31
|
+
const wallets = Array.isArray(walletOrWallets) ? walletOrWallets : [walletOrWallets];
|
|
32
|
+
return this.modulesController.deriveAddresses(wallets, amount);
|
|
33
|
+
}
|
|
34
|
+
async getModulesMetadata() {
|
|
35
|
+
return this.modulesController.getModulesMetadata();
|
|
36
|
+
}
|
|
37
|
+
async readModuleMetadata(name, path) {
|
|
38
|
+
return this.modulesController.readModuleMetadata(name, path);
|
|
39
|
+
}
|
|
40
|
+
async installModule(metadata) {
|
|
41
|
+
const loadedModule = await this.modulesController.installModule(metadata);
|
|
42
|
+
const adaptedProtocols = await this.adaptProtocols([loadedModule]);
|
|
43
|
+
const protocols = this.processAdaptedProtocols(adaptedProtocols);
|
|
44
|
+
await this.protocolService.addActiveMainProtocols(protocols.activeProtocols);
|
|
45
|
+
await this.protocolService.addActiveSubProtocols(protocols.activeSubProtocols.map(([_, protocol]) => protocol));
|
|
46
|
+
}
|
|
47
|
+
async removeInstalledModules(identifiers) {
|
|
48
|
+
const removedIdentifiers = await this.modulesController.removeInstalledModules(identifiers);
|
|
49
|
+
await this.protocolService.removeProtocols(removedIdentifiers);
|
|
50
|
+
}
|
|
51
|
+
async removeAllInstalledModules() {
|
|
52
|
+
const removedIdentifiers = await this.modulesController.removeAllInstalledModules();
|
|
53
|
+
await this.protocolService.removeProtocols(removedIdentifiers);
|
|
54
|
+
}
|
|
55
|
+
async adaptProtocols(modules, type) {
|
|
56
|
+
const adaptedProtocols = await Promise.all(modules.map(async (module) => {
|
|
57
|
+
this.loadSerializerCompanion(module.v3SerializerCompanion);
|
|
58
|
+
const activeProtocols = {};
|
|
59
|
+
const activeSubProtocols = [];
|
|
60
|
+
const groupedProtocols = await Promise.all(module.protocols.map(async (protocol) => [await this.getProtocolKey(protocol.protocol, type), protocol])).then((pairs) => {
|
|
61
|
+
return pairs.reduce((obj, next) => Object.assign(obj, { [next[0]]: next[1] }), {});
|
|
62
|
+
});
|
|
63
|
+
for (const { protocol, blockExplorer } of Object.values(groupedProtocols)) {
|
|
64
|
+
if (isSubProtocol(protocol)) {
|
|
65
|
+
const adapter = await createICoinSubProtocolAdapter(protocol, blockExplorer, module.v3SerializerCompanion, { type });
|
|
66
|
+
const mainKey = await this.getProtocolKey(await adapter.protocolV1.mainProtocol(), isOnlineProtocol(adapter.protocolV1) && (type === 'online' || type === 'full')
|
|
67
|
+
? await adapter.protocolV1.getNetwork()
|
|
68
|
+
: undefined);
|
|
69
|
+
if (!(mainKey in activeProtocols)) {
|
|
70
|
+
const mainAdapter = await createICoinProtocolAdapter(groupedProtocols[mainKey].protocol, groupedProtocols[mainKey].blockExplorer, module.v3SerializerCompanion, { type });
|
|
71
|
+
activeProtocols[mainKey] = mainAdapter;
|
|
72
|
+
}
|
|
73
|
+
activeSubProtocols.push([activeProtocols[mainKey], adapter]);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
const key = await this.getProtocolKey(protocol, type);
|
|
77
|
+
if (activeProtocols[key] !== undefined) {
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
const adapter = await createICoinProtocolAdapter(protocol, blockExplorer, module.v3SerializerCompanion, {
|
|
81
|
+
type
|
|
82
|
+
});
|
|
83
|
+
activeProtocols[key] = adapter;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const adaptedMainProtocols = Object.values(activeProtocols).map((protocol) => ({
|
|
87
|
+
type: 'main',
|
|
88
|
+
status: 'active',
|
|
89
|
+
value: protocol
|
|
90
|
+
}));
|
|
91
|
+
const adaptedSubProtocols = activeSubProtocols.map((protocol) => ({
|
|
92
|
+
type: 'sub',
|
|
93
|
+
status: 'active',
|
|
94
|
+
value: protocol
|
|
95
|
+
}));
|
|
96
|
+
return adaptedMainProtocols.concat(adaptedSubProtocols);
|
|
97
|
+
}));
|
|
98
|
+
return flattened(adaptedProtocols);
|
|
99
|
+
}
|
|
100
|
+
loadSerializerCompanion(v3SerializerCompanion) {
|
|
101
|
+
v3SerializerCompanion.schemas.forEach((configuration) => {
|
|
102
|
+
SerializerV3.addSchema(configuration.type, configuration.schema, configuration.protocolIdentifier);
|
|
103
|
+
if (configuration.protocolIdentifier) {
|
|
104
|
+
SerializerV3.addValidator(configuration.protocolIdentifier, {
|
|
105
|
+
create() {
|
|
106
|
+
return new TransactionValidatorAdapter(configuration.protocolIdentifier, v3SerializerCompanion);
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
processAdaptedProtocols(protocols) {
|
|
113
|
+
const activeProtocols = [];
|
|
114
|
+
const passiveProtocols = [];
|
|
115
|
+
const activeSubProtocols = [];
|
|
116
|
+
const passiveSubProtocols = [];
|
|
117
|
+
for (const protocol of protocols) {
|
|
118
|
+
if (protocol.type === 'main' && protocol.status === 'active') {
|
|
119
|
+
activeProtocols.push(protocol.value);
|
|
120
|
+
}
|
|
121
|
+
if (protocol.type === 'main' && protocol.status === 'passive') {
|
|
122
|
+
passiveProtocols.push(protocol.value);
|
|
123
|
+
}
|
|
124
|
+
if (protocol.type === 'sub' && protocol.status === 'active') {
|
|
125
|
+
activeSubProtocols.push(protocol.value);
|
|
126
|
+
}
|
|
127
|
+
if (protocol.type === 'sub' && protocol.status === 'passive') {
|
|
128
|
+
passiveSubProtocols.push(protocol.value);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
activeProtocols,
|
|
133
|
+
passiveProtocols,
|
|
134
|
+
activeSubProtocols,
|
|
135
|
+
passiveSubProtocols
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
async getProtocolKey(protocolOrIdentifier, networkOrTypeOrUndefined) {
|
|
139
|
+
const protocolIdentifier = typeof protocolOrIdentifier === 'string' ? protocolOrIdentifier : (await protocolOrIdentifier.getMetadata()).identifier;
|
|
140
|
+
const type = typeof networkOrTypeOrUndefined === 'string' ? networkOrTypeOrUndefined : undefined;
|
|
141
|
+
const network = isOnlineProtocol(protocolOrIdentifier) && (type === 'online' || type === 'full')
|
|
142
|
+
? await protocolOrIdentifier.getNetwork()
|
|
143
|
+
: typeof networkOrTypeOrUndefined === 'object'
|
|
144
|
+
? networkOrTypeOrUndefined
|
|
145
|
+
: undefined;
|
|
146
|
+
if (!network) {
|
|
147
|
+
return protocolIdentifier;
|
|
148
|
+
}
|
|
149
|
+
return `${protocolIdentifier}_${protocolNetworkIdentifier(network)}`;
|
|
150
|
+
}
|
|
151
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseModulesService, deps: [{ token: i1.ModulesController }, { token: i2.ProtocolService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
152
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseModulesService }); }
|
|
153
|
+
}
|
|
154
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseModulesService, decorators: [{
|
|
155
|
+
type: Injectable
|
|
156
|
+
}], ctorParameters: () => [{ type: i1.ModulesController }, { type: i2.ProtocolService }] });
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1tb2R1bGVzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL21vZHVsZXMvYmFzZS1tb2R1bGVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUlMLGdCQUFnQixFQUNoQixhQUFhLEVBR2IseUJBQXlCLEVBRTFCLE1BQU0sMEJBQTBCLENBQUE7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBd0IsTUFBTSwwQkFBMEIsQ0FBQTtBQUM3RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFDTCwwQkFBMEIsRUFDMUIsNkJBQTZCLEVBRzdCLDJCQUEyQixFQUM1QixNQUFNLDRDQUE0QyxDQUFBO0FBRW5ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTs7OztBQTZCN0MsTUFBTSxPQUFnQixrQkFBa0I7SUFDdEMsSUFBWSxhQUFhO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQTtJQUM3QyxDQUFDO0lBRUQsWUFBK0IsaUJBQW9DLEVBQXFCLGVBQWdDO1FBQXpGLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFBcUIsb0JBQWUsR0FBZixlQUFlLENBQWlCO0lBQUcsQ0FBQztJQUVySCxJQUFJLENBQUMsa0JBQWtDLEVBQUU7UUFDOUMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsc0NBQXNDO1lBQ3RDLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0NBQXNDLENBQUMsQ0FBQTtZQUVuRCxPQUFNO1FBQ1IsQ0FBQztRQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUE7SUFDOUMsQ0FBQztJQUVNLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBb0MsRUFBRSxTQUFtQixFQUFFO1FBQ3BGLE1BQU0sT0FBTyxHQUFt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TUFBTSxDQUFDO1lBQzlFLENBQUMsQ0FBQyxNQUFNLG9CQUFvQixDQUFDLFVBQVUsRUFBRTtZQUN6QyxDQUFDLENBQUMsT0FBTyx3QkFBd0IsS0FBSyxRQUFRO2dCQUM5QyxDQUFDLENBQUMsd0JBQXdCO2dCQUMxQixDQUFDLENBQUMsU0FBUyxDQUFBO1FBRWYsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxrQkFBa0IsQ0FBQTtRQUMzQixDQUFDO1FBRUQsT0FBTyxHQUFHLGtCQUFrQixJQUFJLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUE7SUFDdEUsQ0FBQzsrR0FqTm1CLGtCQUFrQjttSEFBbEIsa0JBQWtCOzs0RkFBbEIsa0JBQWtCO2tCQUR2QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWlyR2FwV2FsbGV0LCBJQ29pblByb3RvY29sLCBJQ29pblN1YlByb3RvY29sLCBQcm90b2NvbFN5bWJvbHMgfSBmcm9tICdAd2FsbGZyZWUtZGV2L2NvaW5saWItY29yZSdcbmltcG9ydCB7XG4gIEFpckdhcEFueVByb3RvY29sLFxuICBBaXJHYXBNb2R1bGUsXG4gIEFpckdhcFYzU2VyaWFsaXplckNvbXBhbmlvbixcbiAgaXNPbmxpbmVQcm90b2NvbCxcbiAgaXNTdWJQcm90b2NvbCxcbiAgUHJvdG9jb2xDb25maWd1cmF0aW9uLFxuICBQcm90b2NvbE5ldHdvcmssXG4gIHByb3RvY29sTmV0d29ya0lkZW50aWZpZXIsXG4gIFYzU2NoZW1hQ29uZmlndXJhdGlvblxufSBmcm9tICdAd2FsbGZyZWUtZGV2L21vZHVsZS1raXQnXG5pbXBvcnQgeyBTZXJpYWxpemVyVjMsIFRyYW5zYWN0aW9uVmFsaWRhdG9yIH0gZnJvbSAnQHdhbGxmcmVlLWRldi9zZXJpYWxpemVyJ1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBjcmVhdGVJQ29pblByb3RvY29sQWRhcHRlcixcbiAgY3JlYXRlSUNvaW5TdWJQcm90b2NvbEFkYXB0ZXIsXG4gIElDb2luUHJvdG9jb2xBZGFwdGVyLFxuICBJQ29pblN1YlByb3RvY29sQWRhcHRlcixcbiAgVHJhbnNhY3Rpb25WYWxpZGF0b3JBZGFwdGVyXG59IGZyb20gJy4uLy4uL3Byb3RvY29sL2FkYXB0ZXIvcHJvdG9jb2wtdjAtYWRhcHRlcidcbmltcG9ydCB7IElzb2xhdGVkTW9kdWxlTWV0YWRhdGEsIElzb2xhdGVkTW9kdWxlUHJldmlld01ldGFkYXRhIH0gZnJvbSAnLi4vLi4vdHlwZXMvaXNvbGF0ZWQtbW9kdWxlcy9Jc29sYXRlZE1vZHVsZU1ldGFkYXRhJ1xuaW1wb3J0IHsgZmxhdHRlbmVkIH0gZnJvbSAnLi4vLi4vdXRpbHMvYXJyYXknXG5pbXBvcnQgeyBQcm90b2NvbFNlcnZpY2UgfSBmcm9tICcuLi9wcm90b2NvbC9wcm90b2NvbC5zZXJ2aWNlJ1xuaW1wb3J0IHsgTG9hZGVkTW9kdWxlLCBMb2FkZWRQcm90b2NvbCB9IGZyb20gJy4vY29udHJvbGxlci9iYXNlLW1vZHVsZXMuY29udHJvbGxlcidcbmltcG9ydCB7IE1vZHVsZXNDb250cm9sbGVyIH0gZnJvbSAnLi9jb250cm9sbGVyL21vZHVsZXMuY29udHJvbGxlcidcblxudHlwZSBBZGFwdGVkUHJvdG9jb2xTdGF0dXMgPSAnYWN0aXZlJyB8ICdwYXNzaXZlJ1xuXG5pbnRlcmZhY2UgQWRhcHRlZE1haW5Qcm90b2NvbCB7XG4gIHR5cGU6ICdtYWluJ1xuICBzdGF0dXM6IEFkYXB0ZWRQcm90b2NvbFN0YXR1c1xuICB2YWx1ZTogSUNvaW5Qcm90b2NvbEFkYXB0ZXJcbn1cblxuaW50ZXJmYWNlIEFkYXB0ZWRTdWJQcm90b2NvbCB7XG4gIHR5cGU6ICdzdWInXG4gIHN0YXR1czogQWRhcHRlZFByb3RvY29sU3RhdHVzXG4gIHZhbHVlOiBbSUNvaW5Qcm90b2NvbEFkYXB0ZXIsIElDb2luU3ViUHJvdG9jb2xBZGFwdGVyXVxufVxuXG50eXBlIEFkYXB0ZWRQcm90b2NvbCA9IEFkYXB0ZWRNYWluUHJvdG9jb2wgfCBBZGFwdGVkU3ViUHJvdG9jb2xcblxuaW50ZXJmYWNlIFByb3RvY29scyB7XG4gIGFjdGl2ZVByb3RvY29sczogSUNvaW5Qcm90b2NvbFtdXG4gIHBhc3NpdmVQcm90b2NvbHM6IElDb2luUHJvdG9jb2xbXVxuICBhY3RpdmVTdWJQcm90b2NvbHM6IFtJQ29pblByb3RvY29sLCBJQ29pblN1YlByb3RvY29sXVtdXG4gIHBhc3NpdmVTdWJQcm90b2NvbHM6IFtJQ29pblByb3RvY29sLCBJQ29pblN1YlByb3RvY29sXVtdXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlTW9kdWxlc1NlcnZpY2Uge1xuICBwcml2YXRlIGdldCBpc0luaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZHVsZXNDb250cm9sbGVyLmlzSW5pdGlhbGl6ZWRcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWFkb25seSBtb2R1bGVzQ29udHJvbGxlcjogTW9kdWxlc0NvbnRyb2xsZXIsIHByb3RlY3RlZCByZWFkb25seSBwcm90b2NvbFNlcnZpY2U6IFByb3RvY29sU2VydmljZSkge31cblxuICBwdWJsaWMgaW5pdChpbnRlZ3JhbE1vZHVsZXM6IEFpckdhcE1vZHVsZVtdID0gW10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0luaXRpYWxpemVkKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS5sb2coJ1tNb2R1bGVzU2VydmljZV0gYWxyZWFkeSBpbml0aWFsaXplZCcpXG5cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMubW9kdWxlc0NvbnRyb2xsZXIuaW5pdChpbnRlZ3JhbE1vZHVsZXMpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9hZFByb3RvY29scyh0eXBlPzogUHJvdG9jb2xDb25maWd1cmF0aW9uWyd0eXBlJ10sIGlnbm9yZTogc3RyaW5nW10gPSBbXSk6IFByb21pc2U8UHJvdG9jb2xzPiB7XG4gICAgY29uc3QgbW9kdWxlczogTG9hZGVkTW9kdWxlW10gPSBhd2FpdCB0aGlzLm1vZHVsZXNDb250cm9sbGVyLmxvYWRNb2R1bGVzKHR5cGUsIGlnbm9yZSlcbiAgICBjb25zdCBhZGFwdGVkUHJvdG9jb2xzOiBBZGFwdGVkUHJvdG9jb2xbXSA9IGF3YWl0IHRoaXMuYWRhcHRQcm90b2NvbHMobW9kdWxlcywgdHlwZSlcblxuICAgIHJldHVybiB0aGlzLnByb2Nlc3NBZGFwdGVkUHJvdG9jb2xzKGFkYXB0ZWRQcm90b2NvbHMpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVyaXZlQWRkcmVzc2VzKHdhbGxldE9yV2FsbGV0czogQWlyR2FwV2FsbGV0IHwgQWlyR2FwV2FsbGV0W10sIGFtb3VudDogbnVtYmVyID0gNTApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPj4ge1xuICAgIGNvbnN0IHdhbGxldHM6IEFpckdhcFdhbGxldFtdID0gQXJyYXkuaXNBcnJheSh3YWxsZXRPcldhbGxldHMpID8gd2FsbGV0T3JXYWxsZXRzIDogW3dhbGxldE9yV2FsbGV0c11cblxuICAgIHJldHVybiB0aGlzLm1vZHVsZXNDb250cm9sbGVyLmRlcml2ZUFkZHJlc3Nlcyh3YWxsZXRzLCBhbW91bnQpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0TW9kdWxlc01ldGFkYXRhKCk6IFByb21pc2U8SXNvbGF0ZWRNb2R1bGVNZXRhZGF0YVtdPiB7XG4gICAgcmV0dXJuIHRoaXMubW9kdWxlc0NvbnRyb2xsZXIuZ2V0TW9kdWxlc01ldGFkYXRhKClcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZWFkTW9kdWxlTWV0YWRhdGEobmFtZTogc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBQcm9taXNlPElzb2xhdGVkTW9kdWxlUHJldmlld01ldGFkYXRhPiB7XG4gICAgcmV0dXJuIHRoaXMubW9kdWxlc0NvbnRyb2xsZXIucmVhZE1vZHVsZU1ldGFkYXRhKG5hbWUsIHBhdGgpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaW5zdGFsbE1vZHVsZShtZXRhZGF0YTogSXNvbGF0ZWRNb2R1bGVQcmV2aWV3TWV0YWRhdGEpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBsb2FkZWRNb2R1bGU6IExvYWRlZE1vZHVsZSA9IGF3YWl0IHRoaXMubW9kdWxlc0NvbnRyb2xsZXIuaW5zdGFsbE1vZHVsZShtZXRhZGF0YSlcbiAgICBjb25zdCBhZGFwdGVkUHJvdG9jb2xzOiBBZGFwdGVkUHJvdG9jb2xbXSA9IGF3YWl0IHRoaXMuYWRhcHRQcm90b2NvbHMoW2xvYWRlZE1vZHVsZV0pXG4gICAgY29uc3QgcHJvdG9jb2xzOiBQcm90b2NvbHMgPSB0aGlzLnByb2Nlc3NBZGFwdGVkUHJvdG9jb2xzKGFkYXB0ZWRQcm90b2NvbHMpXG5cbiAgICBhd2FpdCB0aGlzLnByb3RvY29sU2VydmljZS5hZGRBY3RpdmVNYWluUHJvdG9jb2xzKHByb3RvY29scy5hY3RpdmVQcm90b2NvbHMpXG4gICAgYXdhaXQgdGhpcy5wcm90b2NvbFNlcnZpY2UuYWRkQWN0aXZlU3ViUHJvdG9jb2xzKHByb3RvY29scy5hY3RpdmVTdWJQcm90b2NvbHMubWFwKChbXywgcHJvdG9jb2xdKSA9PiBwcm90b2NvbCkpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVtb3ZlSW5zdGFsbGVkTW9kdWxlcyhpZGVudGlmaWVyczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCByZW1vdmVkSWRlbnRpZmllcnM6IHN0cmluZ1tdID0gYXdhaXQgdGhpcy5tb2R1bGVzQ29udHJvbGxlci5yZW1vdmVJbnN0YWxsZWRNb2R1bGVzKGlkZW50aWZpZXJzKVxuICAgIGF3YWl0IHRoaXMucHJvdG9jb2xTZXJ2aWNlLnJlbW92ZVByb3RvY29scyhyZW1vdmVkSWRlbnRpZmllcnMgYXMgUHJvdG9jb2xTeW1ib2xzW10pXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVtb3ZlQWxsSW5zdGFsbGVkTW9kdWxlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCByZW1vdmVkSWRlbnRpZmllcnM6IHN0cmluZ1tdID0gYXdhaXQgdGhpcy5tb2R1bGVzQ29udHJvbGxlci5yZW1vdmVBbGxJbnN0YWxsZWRNb2R1bGVzKClcbiAgICBhd2FpdCB0aGlzLnByb3RvY29sU2VydmljZS5yZW1vdmVQcm90b2NvbHMocmVtb3ZlZElkZW50aWZpZXJzIGFzIFByb3RvY29sU3ltYm9sc1tdKVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhZGFwdFByb3RvY29scyhtb2R1bGVzOiBMb2FkZWRNb2R1bGVbXSwgdHlwZT86IFByb3RvY29sQ29uZmlndXJhdGlvblsndHlwZSddKTogUHJvbWlzZTxBZGFwdGVkUHJvdG9jb2xbXT4ge1xuICAgIGNvbnN0IGFkYXB0ZWRQcm90b2NvbHM6IEFkYXB0ZWRQcm90b2NvbFtdW10gPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIG1vZHVsZXMubWFwKGFzeW5jIChtb2R1bGU6IExvYWRlZE1vZHVsZSkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRTZXJpYWxpemVyQ29tcGFuaW9uKG1vZHVsZS52M1NlcmlhbGl6ZXJDb21wYW5pb24pXG5cbiAgICAgICAgY29uc3QgYWN0aXZlUHJvdG9jb2xzOiBSZWNvcmQ8c3RyaW5nLCBJQ29pblByb3RvY29sQWRhcHRlcj4gPSB7fVxuICAgICAgICBjb25zdCBhY3RpdmVTdWJQcm90b2NvbHM6IFtJQ29pblByb3RvY29sQWRhcHRlciwgSUNvaW5TdWJQcm90b2NvbEFkYXB0ZXJdW10gPSBbXVxuXG4gICAgICAgIGNvbnN0IGdyb3VwZWRQcm90b2NvbHM6IFJlY29yZDxzdHJpbmcsIExvYWRlZFByb3RvY29sPiA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgIG1vZHVsZS5wcm90b2NvbHMubWFwKGFzeW5jIChwcm90b2NvbDogTG9hZGVkUHJvdG9jb2wpID0+IFthd2FpdCB0aGlzLmdldFByb3RvY29sS2V5KHByb3RvY29sLnByb3RvY29sLCB0eXBlKSwgcHJvdG9jb2xdKVxuICAgICAgICApLnRoZW4oKHBhaXJzOiBbc3RyaW5nLCBMb2FkZWRQcm90b2NvbF1bXSkgPT4ge1xuICAgICAgICAgIHJldHVybiBwYWlycy5yZWR1Y2UoXG4gICAgICAgICAgICAob2JqOiBSZWNvcmQ8c3RyaW5nLCBMb2FkZWRQcm90b2NvbD4sIG5leHQ6IFtzdHJpbmcsIExvYWRlZFByb3RvY29sXSkgPT4gT2JqZWN0LmFzc2lnbihvYmosIHsgW25leHRbMF1dOiBuZXh0WzFdIH0pLFxuICAgICAgICAgICAge31cbiAgICAgICAgICApXG4gICAgICAgIH0pXG5cbiAgICAgICAgZm9yIChjb25zdCB7IHByb3RvY29sLCBibG9ja0V4cGxvcmVyIH0gb2YgT2JqZWN0LnZhbHVlcyhncm91cGVkUHJvdG9jb2xzKSkge1xuICAgICAgICAgIGlmIChpc1N1YlByb3RvY29sKHByb3RvY29sKSkge1xuICAgICAgICAgICAgY29uc3QgYWRhcHRlcjogSUNvaW5TdWJQcm90b2NvbEFkYXB0ZXIgPSBhd2FpdCBjcmVhdGVJQ29pblN1YlByb3RvY29sQWRhcHRlcihcbiAgICAgICAgICAgICAgcHJvdG9jb2wsXG4gICAgICAgICAgICAgIGJsb2NrRXhwbG9yZXIsXG4gICAgICAgICAgICAgIG1vZHVsZS52M1NlcmlhbGl6ZXJDb21wYW5pb24sXG4gICAgICAgICAgICAgIHsgdHlwZSB9XG4gICAgICAgICAgICApXG5cbiAgICAgICAgICAgIGNvbnN0IG1haW5LZXk6IHN0cmluZyA9IGF3YWl0IHRoaXMuZ2V0UHJvdG9jb2xLZXkoXG4gICAgICAgICAgICAgIGF3YWl0IGFkYXB0ZXIucHJvdG9jb2xWMS5tYWluUHJvdG9jb2woKSxcbiAgICAgICAgICAgICAgaXNPbmxpbmVQcm90b2NvbChhZGFwdGVyLnByb3RvY29sVjEpICYmICh0eXBlID09PSAnb25saW5lJyB8fCB0eXBlID09PSAnZnVsbCcpXG4gICAgICAgICAgICAgICAgPyBhd2FpdCBhZGFwdGVyLnByb3RvY29sVjEuZ2V0TmV0d29yaygpXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIClcblxuICAgICAgICAgICAgaWYgKCEobWFpbktleSBpbiBhY3RpdmVQcm90b2NvbHMpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG1haW5BZGFwdGVyOiBJQ29pblByb3RvY29sQWRhcHRlciA9IGF3YWl0IGNyZWF0ZUlDb2luUHJvdG9jb2xBZGFwdGVyKFxuICAgICAgICAgICAgICAgIGdyb3VwZWRQcm90b2NvbHNbbWFpbktleV0ucHJvdG9jb2wsXG4gICAgICAgICAgICAgICAgZ3JvdXBlZFByb3RvY29sc1ttYWluS2V5XS5ibG9ja0V4cGxvcmVyLFxuICAgICAgICAgICAgICAgIG1vZHVsZS52M1NlcmlhbGl6ZXJDb21wYW5pb24sXG4gICAgICAgICAgICAgICAgeyB0eXBlIH1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBhY3RpdmVQcm90b2NvbHNbbWFpbktleV0gPSBtYWluQWRhcHRlclxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhY3RpdmVTdWJQcm90b2NvbHMucHVzaChbYWN0aXZlUHJvdG9jb2xzW21haW5LZXldLCBhZGFwdGVyXSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qga2V5OiBzdHJpbmcgPSBhd2FpdCB0aGlzLmdldFByb3RvY29sS2V5KHByb3RvY29sLCB0eXBlKVxuICAgICAgICAgICAgaWYgKGFjdGl2ZVByb3RvY29sc1trZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgYWRhcHRlcjogSUNvaW5Qcm90b2NvbEFkYXB0ZXIgPSBhd2FpdCBjcmVhdGVJQ29pblByb3RvY29sQWRhcHRlcihwcm90b2NvbCwgYmxvY2tFeHBsb3JlciwgbW9kdWxlLnYzU2VyaWFsaXplckNvbXBhbmlvbiwge1xuICAgICAgICAgICAgICB0eXBlXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgYWN0aXZlUHJvdG9jb2xzW2tleV0gPSBhZGFwdGVyXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWRhcHRlZE1haW5Qcm90b2NvbHM6IEFkYXB0ZWRQcm90b2NvbFtdID0gT2JqZWN0LnZhbHVlcyhhY3RpdmVQcm90b2NvbHMpLm1hcChcbiAgICAgICAgICAocHJvdG9jb2wpOiBBZGFwdGVkTWFpblByb3RvY29sID0+ICh7XG4gICAgICAgICAgICB0eXBlOiAnbWFpbicsXG4gICAgICAgICAgICBzdGF0dXM6ICdhY3RpdmUnLFxuICAgICAgICAgICAgdmFsdWU6IHByb3RvY29sXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuXG4gICAgICAgIGNvbnN0IGFkYXB0ZWRTdWJQcm90b2NvbHM6IEFkYXB0ZWRQcm90b2NvbFtdID0gYWN0aXZlU3ViUHJvdG9jb2xzLm1hcChcbiAgICAgICAgICAocHJvdG9jb2wpOiBBZGFwdGVkU3ViUHJvdG9jb2wgPT4gKHtcbiAgICAgICAgICAgIHR5cGU6ICdzdWInLFxuICAgICAgICAgICAgc3RhdHVzOiAnYWN0aXZlJyxcbiAgICAgICAgICAgIHZhbHVlOiBwcm90b2NvbFxuICAgICAgICAgIH0pXG4gICAgICAgIClcblxuICAgICAgICByZXR1cm4gYWRhcHRlZE1haW5Qcm90b2NvbHMuY29uY2F0KGFkYXB0ZWRTdWJQcm90b2NvbHMpXG4gICAgICB9KVxuICAgIClcblxuICAgIHJldHVybiBmbGF0dGVuZWQoYWRhcHRlZFByb3RvY29scylcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFNlcmlhbGl6ZXJDb21wYW5pb24odjNTZXJpYWxpemVyQ29tcGFuaW9uOiBBaXJHYXBWM1NlcmlhbGl6ZXJDb21wYW5pb24pIHtcbiAgICB2M1NlcmlhbGl6ZXJDb21wYW5pb24uc2NoZW1hcy5mb3JFYWNoKChjb25maWd1cmF0aW9uOiBWM1NjaGVtYUNvbmZpZ3VyYXRpb24pID0+IHtcbiAgICAgIFNlcmlhbGl6ZXJWMy5hZGRTY2hlbWEoY29uZmlndXJhdGlvbi50eXBlLCBjb25maWd1cmF0aW9uLnNjaGVtYSwgY29uZmlndXJhdGlvbi5wcm90b2NvbElkZW50aWZpZXIgYXMgUHJvdG9jb2xTeW1ib2xzKVxuXG4gICAgICBpZiAoY29uZmlndXJhdGlvbi5wcm90b2NvbElkZW50aWZpZXIpIHtcbiAgICAgICAgU2VyaWFsaXplclYzLmFkZFZhbGlkYXRvcihjb25maWd1cmF0aW9uLnByb3RvY29sSWRlbnRpZmllciBhcyBQcm90b2NvbFN5bWJvbHMsIHtcbiAgICAgICAgICBjcmVhdGUoKTogVHJhbnNhY3Rpb25WYWxpZGF0b3Ige1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBUcmFuc2FjdGlvblZhbGlkYXRvckFkYXB0ZXIoY29uZmlndXJhdGlvbi5wcm90b2NvbElkZW50aWZpZXIsIHYzU2VyaWFsaXplckNvbXBhbmlvbilcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc0FkYXB0ZWRQcm90b2NvbHMocHJvdG9jb2xzOiBBZGFwdGVkUHJvdG9jb2xbXSk6IFByb3RvY29scyB7XG4gICAgY29uc3QgYWN0aXZlUHJvdG9jb2xzOiBJQ29pblByb3RvY29sW10gPSBbXVxuICAgIGNvbnN0IHBhc3NpdmVQcm90b2NvbHM6IElDb2luUHJvdG9jb2xbXSA9IFtdXG5cbiAgICBjb25zdCBhY3RpdmVTdWJQcm90b2NvbHM6IFtJQ29pblByb3RvY29sLCBJQ29pblN1YlByb3RvY29sXVtdID0gW11cbiAgICBjb25zdCBwYXNzaXZlU3ViUHJvdG9jb2xzOiBbSUNvaW5Qcm90b2NvbCwgSUNvaW5TdWJQcm90b2NvbF1bXSA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IHByb3RvY29sIG9mIHByb3RvY29scykge1xuICAgICAgaWYgKHByb3RvY29sLnR5cGUgPT09ICdtYWluJyAmJiBwcm90b2NvbC5zdGF0dXMgPT09ICdhY3RpdmUnKSB7XG4gICAgICAgIGFjdGl2ZVByb3RvY29scy5wdXNoKHByb3RvY29sLnZhbHVlKVxuICAgICAgfVxuXG4gICAgICBpZiAocHJvdG9jb2wudHlwZSA9PT0gJ21haW4nICYmIHByb3RvY29sLnN0YXR1cyA9PT0gJ3Bhc3NpdmUnKSB7XG4gICAgICAgIHBhc3NpdmVQcm90b2NvbHMucHVzaChwcm90b2NvbC52YWx1ZSlcbiAgICAgIH1cblxuICAgICAgaWYgKHByb3RvY29sLnR5cGUgPT09ICdzdWInICYmIHByb3RvY29sLnN0YXR1cyA9PT0gJ2FjdGl2ZScpIHtcbiAgICAgICAgYWN0aXZlU3ViUHJvdG9jb2xzLnB1c2gocHJvdG9jb2wudmFsdWUpXG4gICAgICB9XG5cbiAgICAgIGlmIChwcm90b2NvbC50eXBlID09PSAnc3ViJyAmJiBwcm90b2NvbC5zdGF0dXMgPT09ICdwYXNzaXZlJykge1xuICAgICAgICBwYXNzaXZlU3ViUHJvdG9jb2xzLnB1c2gocHJvdG9jb2wudmFsdWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGl2ZVByb3RvY29scyxcbiAgICAgIHBhc3NpdmVQcm90b2NvbHMsXG4gICAgICBhY3RpdmVTdWJQcm90b2NvbHMsXG4gICAgICBwYXNzaXZlU3ViUHJvdG9jb2xzXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRQcm90b2NvbEtleShwcm90b2NvbDogQWlyR2FwQW55UHJvdG9jb2wsIHR5cGU/OiBQcm90b2NvbENvbmZpZ3VyYXRpb25bJ3R5cGUnXSk6IFByb21pc2U8c3RyaW5nPlxuICBwcml2YXRlIGFzeW5jIGdldFByb3RvY29sS2V5KHByb3RvY29sSWRlbnRpZmllcjogc3RyaW5nLCBuZXR3b3JrOiBQcm90b2NvbE5ldHdvcmsgfCB1bmRlZmluZWQpOiBQcm9taXNlPHN0cmluZz5cbiAgcHJpdmF0ZSBhc3luYyBnZXRQcm90b2NvbEtleShcbiAgICBwcm90b2NvbE9ySWRlbnRpZmllcjogQWlyR2FwQW55UHJvdG9jb2wgfCBzdHJpbmcsXG4gICAgbmV0d29ya09yVHlwZU9yVW5kZWZpbmVkPzogUHJvdG9jb2xOZXR3b3JrIHwgUHJvdG9jb2xDb25maWd1cmF0aW9uWyd0eXBlJ10gfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBwcm90b2NvbElkZW50aWZpZXI6IHN0cmluZyA9XG4gICAgICB0eXBlb2YgcHJvdG9jb2xPcklkZW50aWZpZXIgPT09ICdzdHJpbmcnID8gcHJvdG9jb2xPcklkZW50aWZpZXIgOiAoYXdhaXQgcHJvdG9jb2xPcklkZW50aWZpZXIuZ2V0TWV0YWRhdGEoKSkuaWRlbnRpZmllclxuXG4gICAgY29uc3QgdHlwZTogUHJvdG9jb2xDb25maWd1cmF0aW9uWyd0eXBlJ10gfCB1bmRlZmluZWQgPVxuICAgICAgdHlwZW9mIG5ldHdvcmtPclR5cGVPclVuZGVmaW5lZCA9PT0gJ3N0cmluZycgPyBuZXR3b3JrT3JUeXBlT3JVbmRlZmluZWQgOiB1bmRlZmluZWRcblxuICAgIGNvbnN0IG5ldHdvcms6IFByb3RvY29sTmV0d29yayB8IHVuZGVmaW5lZCA9XG4gICAgICBpc09ubGluZVByb3RvY29sKHByb3RvY29sT3JJZGVudGlmaWVyKSAmJiAodHlwZSA9PT0gJ29ubGluZScgfHwgdHlwZSA9PT0gJ2Z1bGwnKVxuICAgICAgICA/IGF3YWl0IHByb3RvY29sT3JJZGVudGlmaWVyLmdldE5ldHdvcmsoKVxuICAgICAgICA6IHR5cGVvZiBuZXR3b3JrT3JUeXBlT3JVbmRlZmluZWQgPT09ICdvYmplY3QnXG4gICAgICAgID8gbmV0d29ya09yVHlwZU9yVW5kZWZpbmVkXG4gICAgICAgIDogdW5kZWZpbmVkXG5cbiAgICBpZiAoIW5ldHdvcmspIHtcbiAgICAgIHJldHVybiBwcm90b2NvbElkZW50aWZpZXJcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7cHJvdG9jb2xJZGVudGlmaWVyfV8ke3Byb3RvY29sTmV0d29ya0lkZW50aWZpZXIobmV0d29yayl9YFxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1tb2R1bGVzLmNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL21vZHVsZXMvY29udHJvbGxlci9iYXNlLW1vZHVsZXMuY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWlyR2FwV2FsbGV0IH0gZnJvbSAnQHdhbGxmcmVlLWRldi9jb2lubGliLWNvcmUnXG5pbXBvcnQge1xuICBBaXJHYXBBbnlQcm90b2NvbCxcbiAgQWlyR2FwQmxvY2tFeHBsb3JlcixcbiAgQWlyR2FwVjNTZXJpYWxpemVyQ29tcGFuaW9uLFxuICBQcm90b2NvbENvbmZpZ3VyYXRpb24sXG4gIFByb3RvY29sTmV0d29ya1xufSBmcm9tICdAd2FsbGZyZWUtZGV2L21vZHVsZS1raXQnXG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGVkTW9kdWxlIHtcbiAgcHJvdG9jb2xzOiBMb2FkZWRQcm90b2NvbFtdXG4gIHYzU2VyaWFsaXplckNvbXBhbmlvbjogQWlyR2FwVjNTZXJpYWxpemVyQ29tcGFuaW9uXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGVkUHJvdG9jb2wge1xuICBpZGVudGlmaWVyOiBzdHJpbmdcbiAgcHJvdG9jb2w6IEFpckdhcEFueVByb3RvY29sXG4gIGJsb2NrRXhwbG9yZXI/OiBBaXJHYXBCbG9ja0V4cGxvcmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZU1vZHVsZXNDb250cm9sbGVyIHtcbiAgbG9hZE1vZHVsZXMocHJvdG9jb2xUeXBlPzogUHJvdG9jb2xDb25maWd1cmF0aW9uWyd0eXBlJ10sIGlnbm9yZVByb3RvY29scz86IHN0cmluZ1tdKTogUHJvbWlzZTxMb2FkZWRNb2R1bGVbXT5cbiAgaXNQcm90b2NvbFN1cHBvcnRlZChpZGVudGlmaWVyOiBzdHJpbmcpOiBib29sZWFuXG5cbiAgZ2V0UHJvdG9jb2xOZXR3b3JrKHByb3RvY29sSWRlbnRpZmllcjogc3RyaW5nLCBuZXR3b3JrSWQ/OiBzdHJpbmcpOiBQcm9taXNlPFByb3RvY29sTmV0d29yayB8IHVuZGVmaW5lZD5cbiAgZ2V0UHJvdG9jb2xCbG9ja0V4cGxvcmVyKHByb3RvY29sSWRlbnRpZmllcjogc3RyaW5nLCBuZXR3b3JrOiBzdHJpbmcgfCBQcm90b2NvbE5ldHdvcmspOiBQcm9taXNlPEFpckdhcEJsb2NrRXhwbG9yZXIgfCB1bmRlZmluZWQ+XG5cbiAgZGVyaXZlQWRkcmVzc2VzKHdhbGxldHM6IEFpckdhcFdhbGxldFtdLCBhbW91bnQ/OiBudW1iZXIpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPj5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { flattened } from '../../../../utils/array';
|
|
3
|
+
import { getOfflineProtocolConfiguration, getOnlineProtocolConfiguration } from '../../../../utils/modules/load-protocol';
|
|
4
|
+
import { deriveAddressesAsync } from '../../../../utils/worker';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class IntegralModulesController {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.isInitialized = false;
|
|
9
|
+
this.modules = [];
|
|
10
|
+
this.supportedProtocols = new Set();
|
|
11
|
+
}
|
|
12
|
+
init(modules) {
|
|
13
|
+
this.isInitialized = true;
|
|
14
|
+
this.modules = modules;
|
|
15
|
+
}
|
|
16
|
+
async loadModules(protocolType, ignoreProtocols = []) {
|
|
17
|
+
return Promise.all(this.modules.map((module) => this.loadModule(module, protocolType, new Set(ignoreProtocols))));
|
|
18
|
+
}
|
|
19
|
+
async loadModule(module, protocolType, ignoreProtocols) {
|
|
20
|
+
const v3SerializerCompanion = await module.createV3SerializerCompanion();
|
|
21
|
+
const protocols = flattened(await Promise.all(Object.entries(module.supportedProtocols)
|
|
22
|
+
.filter(([identifier, _]) => !ignoreProtocols.has(identifier))
|
|
23
|
+
.map(([identifier, configuration]) => this.loadModuleProtocols(module, identifier, configuration, protocolType))));
|
|
24
|
+
protocols.forEach((protocol) => {
|
|
25
|
+
this.supportedProtocols.add(protocol.identifier);
|
|
26
|
+
});
|
|
27
|
+
return { protocols, v3SerializerCompanion };
|
|
28
|
+
}
|
|
29
|
+
async loadModuleProtocols(module, identifier, configuration, protocolType) {
|
|
30
|
+
const offlineConfiguration = getOfflineProtocolConfiguration(configuration, protocolType);
|
|
31
|
+
const onlineConfiguration = getOnlineProtocolConfiguration(configuration, protocolType);
|
|
32
|
+
const [offlineProtocols, onlineProtocols] = await Promise.all([
|
|
33
|
+
offlineConfiguration ? this.loadOfflineProtocols(module, identifier, offlineConfiguration) : Promise.resolve([]),
|
|
34
|
+
onlineConfiguration ? this.loadOnlineProtocols(module, identifier, onlineConfiguration) : Promise.resolve([])
|
|
35
|
+
]);
|
|
36
|
+
return offlineProtocols.concat(onlineProtocols);
|
|
37
|
+
}
|
|
38
|
+
async loadOfflineProtocols(module, identifier, _configuration) {
|
|
39
|
+
const protocol = await module.createOfflineProtocol(identifier);
|
|
40
|
+
if (protocol === undefined) {
|
|
41
|
+
return [];
|
|
42
|
+
}
|
|
43
|
+
return [{ identifier, protocol }];
|
|
44
|
+
}
|
|
45
|
+
async loadOnlineProtocols(module, identifier, configuration) {
|
|
46
|
+
const protocols = await Promise.all(Object.entries(configuration.networks).map(async ([networkId, _]) => {
|
|
47
|
+
const [protocol, blockExplorer] = await Promise.all([
|
|
48
|
+
module.createOnlineProtocol(identifier, networkId),
|
|
49
|
+
module.createBlockExplorer(identifier, networkId)
|
|
50
|
+
]);
|
|
51
|
+
if (protocol === undefined) {
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
return { identifier, protocol, blockExplorer };
|
|
55
|
+
}));
|
|
56
|
+
return protocols.filter((protocol) => protocol !== undefined);
|
|
57
|
+
}
|
|
58
|
+
isProtocolSupported(identifier) {
|
|
59
|
+
return this.supportedProtocols.has(identifier);
|
|
60
|
+
}
|
|
61
|
+
async getProtocolNetwork(protocolIdentifier, networkId) {
|
|
62
|
+
const targetModule = this.modules.find((module) => module.supportedProtocols[protocolIdentifier] !== undefined);
|
|
63
|
+
if (targetModule === undefined) {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
const onlineProtocol = await targetModule.createOnlineProtocol(protocolIdentifier, networkId);
|
|
67
|
+
if (onlineProtocol === undefined) {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
return onlineProtocol.getNetwork();
|
|
71
|
+
}
|
|
72
|
+
async getProtocolBlockExplorer(protocolIdentifier, network) {
|
|
73
|
+
const targetModule = this.modules.find((module) => module.supportedProtocols[protocolIdentifier] !== undefined);
|
|
74
|
+
if (targetModule === undefined) {
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
return targetModule.createBlockExplorer(protocolIdentifier, network);
|
|
78
|
+
}
|
|
79
|
+
async deriveAddresses(wallets, amount) {
|
|
80
|
+
return deriveAddressesAsync(wallets, amount);
|
|
81
|
+
}
|
|
82
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IntegralModulesController, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
83
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IntegralModulesController, providedIn: 'root' }); }
|
|
84
|
+
}
|
|
85
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IntegralModulesController, decorators: [{
|
|
86
|
+
type: Injectable,
|
|
87
|
+
args: [{
|
|
88
|
+
providedIn: 'root'
|
|
89
|
+
}]
|
|
90
|
+
}] });
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYWwtbW9kdWxlcy5jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9tb2R1bGVzL2NvbnRyb2xsZXIvaW50ZWdyYWwvaW50ZWdyYWwtbW9kdWxlcy5jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ25ELE9BQU8sRUFBRSwrQkFBK0IsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBQ3pILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFBOztBQU0vRCxNQUFNLE9BQU8seUJBQXlCO0lBSHRDO1FBSVMsa0JBQWEsR0FBWSxLQUFLLENBQUE7UUFFN0IsWUFBTyxHQUFtQixFQUFFLENBQUE7UUFFbkIsdUJBQWtCLEdBQWdCLElBQUksR0FBRyxFQUFFLENBQUE7S0EySDdEO0lBekhRLElBQUksQ0FBQyxPQUF1QjtRQUNqQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQTtRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtJQUN4QixDQUFDO0lBRU0sS0FBSyxDQUFDLFdBQVcsQ0FBQyxZQUE0QyxFQUFFLGtCQUE0QixFQUFFO1FBQ25HLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQW9CLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNqSSxDQUFDO0lBRU8sS0FBSyxDQUFDLFVBQVUsQ0FDdEIsTUFBb0IsRUFDcEIsWUFBdUQsRUFD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LEVBQUUsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLENBQUMsS0FBSyxTQUFTLENBQ3RGLENBQUE7UUFDRCxJQUFJLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMvQixPQUFPLFNBQVMsQ0FBQTtRQUNsQixDQUFDO1FBRUQsT0FBTyxZQUFZLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDdEUsQ0FBQztJQUVNLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBdUIsRUFBRSxNQUFlO1FBQ25FLE9BQU8sb0JBQW9CLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQzlDLENBQUM7K0dBL0hVLHlCQUF5QjttSEFBekIseUJBQXlCLGNBRnhCLE1BQU07OzRGQUVQLHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBaXJHYXBXYWxsZXQgfSBmcm9tICdAd2FsbGZyZWUtZGV2L2NvaW5saWItY29yZSdcbmltcG9ydCB7XG4gIEFpckdhcEJsb2NrRXhwbG9yZXIsXG4gIEFpckdhcE1vZHVsZSxcbiAgQWlyR2FwT2ZmbGluZVByb3RvY29sLFxuICBBaXJHYXBPbmxpbmVQcm90b2NvbCxcbiAgQWlyR2FwVjNTZXJpYWxpemVyQ29tcGFuaW9uLFxuICBPZmZsaW5lUHJvdG9jb2xDb25maWd1cmF0aW9uLFxuICBPbmxpbmVQcm90b2NvbENvbmZpZ3VyYXRpb24sXG4gIFByb3RvY29sQ29uZmlndXJhdGlvbixcbiAgUHJvdG9jb2xOZXR3b3JrXG59IGZyb20gJ0B3YWxsZnJlZS1kZXYvbW9kdWxlLWtpdCdcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgZmxhdHRlbmVkIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvYXJyYXknXG5pbXBvcnQgeyBnZXRPZmZsaW5lUHJvdG9jb2xDb25maWd1cmF0aW9uLCBnZXRPbmxpbmVQcm90b2NvbENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9tb2R1bGVzL2xvYWQtcHJvdG9jb2wnXG5pbXBvcnQgeyBkZXJpdmVBZGRyZXNzZXNBc3luYyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL3dvcmtlcidcbmltcG9ydCB7IEJhc2VNb2R1bGVzQ29udHJvbGxlciwgTG9hZGVkTW9kdWxlLCBMb2FkZWRQcm90b2NvbCB9IGZyb20gJy4uL2Jhc2UtbW9kdWxlcy5jb250cm9sbGVyJ1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBJbnRlZ3JhbE1vZHVsZXNDb250cm9sbGVyIGltcGxlbWVudHMgQmFzZU1vZHVsZXNDb250cm9sbGVyIHtcbiAgcHVibGljIGlzSW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgbW9kdWxlczogQWlyR2FwTW9kdWxlW10gPSBbXVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgc3VwcG9ydGVkUHJvdG9jb2xzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKVxuXG4gIHB1YmxpYyBpbml0KG1vZHVsZXM6IEFpckdhcE1vZHVsZVtdKTogdm9pZCB7XG4gICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZVxuICAgIHRoaXMubW9kdWxlcyA9IG1vZHVsZXNcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2FkTW9kdWxlcyhwcm90b2NvbFR5cGU/OiBQcm90b2NvbENvbmZpZ3VyYXRpb25bJ3R5cGUnXSwgaWdub3JlUHJvdG9jb2xzOiBzdHJpbmdbXSA9IFtdKTogUHJvbWlzZTxMb2FkZWRNb2R1bGVbXT4ge1xuICAgIHJldHVybiBQcm9taXNlLmFsbCh0aGlzLm1vZHVsZXMubWFwKChtb2R1bGU6IEFpckdhcE1vZHVsZSkgPT4gdGhpcy5sb2FkTW9kdWxlKG1vZHVsZSwgcHJvdG9jb2xUeXBlLCBuZXcgU2V0KGlnbm9yZVByb3RvY29scykpKSlcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZE1vZHVsZShcbiAgICBtb2R1bGU6IEFpckdhcE1vZHVsZSxcbiAgICBwcm90b2NvbFR5cGU6IFByb3RvY29sQ29uZmlndXJhdGlvblsndHlwZSddIHwgdW5kZWZpbmVkLFxuICAgIGlnbm9yZVByb3RvY29sczogU2V0PHN0cmluZz5cbiAgKTogUHJvbWlzZTxMb2FkZWRNb2R1bGU+IHtcbiAgICBjb25zdCB2M1NlcmlhbGl6ZXJDb21wYW5pb246IEFpckdhcFYzU2VyaWFsaXplckNvbXBhbmlvbiA9IGF3YWl0IG1vZHVsZS5jcmVhdGVWM1NlcmlhbGl6ZXJDb21wYW5pb24oKVxuICAgIGNvbnN0IHByb3RvY29sczogTG9hZGVkUHJvdG9jb2xbXSA9IGZsYXR0ZW5lZChcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBPYmplY3QuZW50cmllcyhtb2R1bGUuc3VwcG9ydGVkUHJvdG9jb2xzKVxuICAgICAgICAgIC5maWx0ZXIoKFtpZGVudGlmaWVyLCBfXSkgPT4gIWlnbm9yZVByb3RvY29scy5oYXMoaWRlbnRpZmllcikpXG4gICAgICAgICAgLm1hcCgoW2lkZW50aWZpZXIsIGNvbmZpZ3VyYXRpb25dOiBbc3RyaW5nLCBQcm90b2NvbENvbmZpZ3VyYXRpb25dKSA9PlxuICAgICAgICAgICAgdGhpcy5sb2FkTW9kdWxlUHJvdG9jb2xzKG1vZHVsZSwgaWRlbnRpZmllciwgY29uZmlndXJhdGlvbiwgcHJvdG9jb2xUeXBlKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG5cbiAgICBwcm90b2NvbHMuZm9yRWFjaCgocHJvdG9jb2w6IExvYWRlZFByb3RvY29sKSA9PiB7XG4gICAgICB0aGlzLnN1cHBvcnRlZFByb3RvY29scy5hZGQocHJvdG9jb2wuaWRlbnRpZmllcilcbiAgICB9KVxuXG4gICAgcmV0dXJuIHsgcHJvdG9jb2xzLCB2M1NlcmlhbGl6ZXJDb21wYW5pb24gfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkTW9kdWxlUHJvdG9jb2xzKFxuICAgIG1vZHVsZTogQWlyR2FwTW9kdWxlLFxuICAgIGlkZW50aWZpZXI6IHN0cmluZyxcbiAgICBjb25maWd1cmF0aW9uOiBQcm90b2NvbENvbmZpZ3VyYXRpb24sXG4gICAgcHJvdG9jb2xUeXBlPzogUHJvdG9jb2xDb25maWd1cmF0aW9uWyd0eXBlJ11cbiAgKTogUHJvbWlzZTxMb2FkZWRQcm90b2NvbFtdPiB7XG4gICAgY29uc3Qgb2ZmbGluZUNvbmZpZ3VyYXRpb246IE9mZmxpbmVQcm90b2NvbENvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQgPSBnZXRPZmZsaW5lUHJvdG9jb2xDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIHByb3RvY29sVHlwZSlcbiAgICBjb25zdCBvbmxpbmVDb25maWd1cmF0aW9uOiBPbmxpbmVQcm90b2NvbENvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQgPSBnZXRPbmxpbmVQcm90b2NvbENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwgcHJvdG9jb2xUeXBlKVxuXG4gICAgY29uc3QgW29mZmxpbmVQcm90b2NvbHMsIG9ubGluZVByb3RvY29sc106IFtMb2FkZWRQcm90b2NvbFtdLCBMb2FkZWRQcm90b2NvbFtdXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIG9mZmxpbmVDb25maWd1cmF0aW9uID8gdGhpcy5sb2FkT2ZmbGluZVByb3RvY29scyhtb2R1bGUsIGlkZW50aWZpZXIsIG9mZmxpbmVDb25maWd1cmF0aW9uKSA6IFByb21pc2UucmVzb2x2ZShbXSksXG4gICAgICBvbmxpbmVDb25maWd1cmF0aW9uID8gdGhpcy5sb2FkT25saW5lUHJvdG9jb2xzKG1vZHVsZSwgaWRlbnRpZmllciwgb25saW5lQ29uZmlndXJhdGlvbikgOiBQcm9taXNlLnJlc29sdmUoW10pXG4gICAgXSlcblxuICAgIHJldHVybiBvZmZsaW5lUHJvdG9jb2xzLmNvbmNhdChvbmxpbmVQcm90b2NvbHMpXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRPZmZsaW5lUHJvdG9jb2xzKFxuICAgIG1vZHVsZTogQWlyR2FwTW9kdWxlLFxuICAgIGlkZW50aWZpZXI6IHN0cmluZyxcbiAgICBfY29uZmlndXJhdGlvbjogT2ZmbGluZVByb3RvY29sQ29uZmlndXJhdGlvblxuICApOiBQcm9taXNlPExvYWRlZFByb3RvY29sW10+IHtcbiAgICBjb25zdCBwcm90b2NvbDogQWlyR2FwT2ZmbGluZVByb3RvY29sIHwgdW5kZWZpbmVkID0gYXdhaXQgbW9kdWxlLmNyZWF0ZU9mZmxpbmVQcm90b2NvbChpZGVudGlmaWVyKVxuICAgIGlmIChwcm90b2NvbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gW11cbiAgICB9XG5cbiAgICByZXR1cm4gW3sgaWRlbnRpZmllciwgcHJvdG9jb2wgfV1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZE9ubGluZVByb3RvY29scyhcbiAgICBtb2R1bGU6IEFpckdhcE1vZHVsZSxcbiAgICBpZGVudGlmaWVyOiBzdHJpbmcsXG4gICAgY29uZmlndXJhdGlvbjogT25saW5lUHJvdG9jb2xDb25maWd1cmF0aW9uXG4gICk6IFByb21pc2U8TG9hZGVkUHJvdG9jb2xbXT4ge1xuICAgIGNvbnN0IHByb3RvY29sczogKExvYWRlZFByb3RvY29sIHwgdW5kZWZpbmVkKVtdID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBPYmplY3QuZW50cmllcyhjb25maWd1cmF0aW9uLm5ldHdvcmtzKS5tYXAoYXN5bmMgKFtuZXR3b3JrSWQsIF9dOiBbc3RyaW5nLCBQcm90b2NvbE5ldHdvcmtdKSA9PiB7XG4gICAgICAgIGNvbnN0IFtwcm90b2NvbCwgYmxvY2tFeHBsb3Jlcl06IFtBaXJHYXBPbmxpbmVQcm90b2NvbCB8IHVuZGVmaW5lZCwgQWlyR2FwQmxvY2tFeHBsb3JlciB8IHVuZGVmaW5lZF0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgbW9kdWxlLmNyZWF0ZU9ubGluZVByb3RvY29sKGlkZW50aWZpZXIsIG5ldHdvcmtJZCksXG4gICAgICAgICAgbW9kdWxlLmNyZWF0ZUJsb2NrRXhwbG9yZXIoaWRlbnRpZmllciwgbmV0d29ya0lkKVxuICAgICAgICBdKVxuICAgICAgICBpZiAocHJvdG9jb2wgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IGlkZW50aWZpZXIsIHByb3RvY29sLCBibG9ja0V4cGxvcmVyIH1cbiAgICAgIH0pXG4gICAgKVxuXG4gICAgcmV0dXJuIHByb3RvY29scy5maWx0ZXIoKHByb3RvY29sOiBMb2FkZWRQcm90b2NvbCB8IHVuZGVmaW5lZCkgPT4gcHJvdG9jb2wgIT09IHVuZGVmaW5lZClcbiAgfVxuXG4gIHB1YmxpYyBpc1Byb3RvY29sU3VwcG9ydGVkKGlkZW50aWZpZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN1cHBvcnRlZFByb3RvY29scy5oYXMoaWRlbnRpZmllcilcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQcm90b2NvbE5ldHdvcmsocHJvdG9jb2xJZGVudGlmaWVyOiBzdHJpbmcsIG5ldHdvcmtJZD86IHN0cmluZyk6IFByb21pc2U8UHJvdG9jb2xOZXR3b3JrIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgdGFyZ2V0TW9kdWxlOiBBaXJHYXBNb2R1bGUgfCB1bmRlZmluZWQgPSB0aGlzLm1vZHVsZXMuZmluZChcbiAgICAgIChtb2R1bGU6IEFpckdhcE1vZHVsZSkgPT4gbW9kdWxlLnN1cHBvcnRlZFByb3RvY29sc1twcm90b2NvbElkZW50aWZpZXJdICE9PSB1bmRlZmluZWRcbiAgICApXG4gICAgaWYgKHRhcmdldE1vZHVsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3Qgb25saW5lUHJvdG9jb2w6IEFpckdhcE9ubGluZVByb3RvY29sIHwgdW5kZWZpbmVkID0gYXdhaXQgdGFyZ2V0TW9kdWxlLmNyZWF0ZU9ubGluZVByb3RvY29sKHByb3RvY29sSWRlbnRpZmllciwgbmV0d29ya0lkKVxuICAgIGlmIChvbmxpbmVQcm90b2NvbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgcmV0dXJuIG9ubGluZVByb3RvY29sLmdldE5ldHdvcmsoKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFByb3RvY29sQmxvY2tFeHBsb3JlcihcbiAgICBwcm90b2NvbElkZW50aWZpZXI6IHN0cmluZyxcbiAgICBuZXR3b3JrOiBzdHJpbmcgfCBQcm90b2NvbE5ldHdvcmtcbiAgKTogUHJvbWlzZTxBaXJHYXBCbG9ja0V4cGxvcmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgdGFyZ2V0TW9kdWxlOiBBaXJHYXBNb2R1bGUgfCB1bmRlZmluZWQgPSB0aGlzLm1vZHVsZXMuZmluZChcbiAgICAgIChtb2R1bGU6IEFpckdhcE1vZHVsZSkgPT4gbW9kdWxlLnN1cHBvcnRlZFByb3RvY29sc1twcm90b2NvbElkZW50aWZpZXJdICE9PSB1bmRlZmluZWRcbiAgICApXG4gICAgaWYgKHRhcmdldE1vZHVsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldE1vZHVsZS5jcmVhdGVCbG9ja0V4cGxvcmVyKHByb3RvY29sSWRlbnRpZmllciwgbmV0d29yaylcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZXJpdmVBZGRyZXNzZXMod2FsbGV0czogQWlyR2FwV2FsbGV0W10sIGFtb3VudD86IG51bWJlcik6IFByb21pc2U8UmVjb3JkPHN0cmluZywgc3RyaW5nW10+PiB7XG4gICAgcmV0dXJuIGRlcml2ZUFkZHJlc3Nlc0FzeW5jKHdhbGxldHMsIGFtb3VudClcbiAgfVxufVxuIl19
|