@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,45 @@
|
|
|
1
|
+
import * as bs58check from '@wallfree-dev/coinlib-core/dependencies/src/bs58check-2.1.2/index';
|
|
2
|
+
import { SerializerV3 } from '@wallfree-dev/serializer';
|
|
3
|
+
import { UR, UREncoder } from '@ngraveio/bc-ur';
|
|
4
|
+
import { IACQrGenerator } from '../../iac/qr-generator';
|
|
5
|
+
export class SerializerV3Generator extends IACQrGenerator {
|
|
6
|
+
constructor() {
|
|
7
|
+
super();
|
|
8
|
+
}
|
|
9
|
+
async create(data, multiFragmentLength, singleFragmentLength) {
|
|
10
|
+
const serializer = SerializerV3.getInstance();
|
|
11
|
+
const serialized = await serializer.serialize(data);
|
|
12
|
+
const buffer = bs58check.decode(serialized);
|
|
13
|
+
this.ur = UR.fromBuffer(buffer);
|
|
14
|
+
// We first try to create a larger "single chunk" fragment
|
|
15
|
+
this.encoder = new UREncoder(this.ur, singleFragmentLength);
|
|
16
|
+
// If this is not possible, we use the multiFragmentLength
|
|
17
|
+
if (this.encoder.fragmentsLength !== 1) {
|
|
18
|
+
this.encoder = new UREncoder(this.ur, multiFragmentLength);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
async nextPart() {
|
|
22
|
+
if (this.encoder) {
|
|
23
|
+
return this.encoder.nextPart().toUpperCase();
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
return '';
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async getSingle(prefix) {
|
|
30
|
+
if (this.ur) {
|
|
31
|
+
const part = new UREncoder(this.ur, Number.MAX_SAFE_INTEGER).nextPart();
|
|
32
|
+
const regex = /([^/]+$)/g;
|
|
33
|
+
const match = part.match(regex);
|
|
34
|
+
const data = match && match[0] ? match[0] : part;
|
|
35
|
+
return this.prefixSingle(data.toUpperCase(), prefix, 'ur');
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
return '';
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
async getNumberOfParts() {
|
|
42
|
+
return this.encoder?.fragmentsLength ?? 0;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplci12My1nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3FyL3FyLWdlbmVyYXRvcnMvc2VyaWFsaXplci12My1nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLFNBQVMsTUFBTSxtRUFBbUUsQ0FBQTtBQUM5RixPQUFPLEVBQWdDLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ3JGLE9BQU8sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBRXZELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxjQUFjO0lBS3ZEO1FBQ0UsS0FBSyxFQUFFLENBQUE7SUFDVCxDQUFDO0lBRU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFvQyxFQUFFLG1CQUEyQixFQUFFLG9CQUE0QjtRQUNqSCxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDN0MsTUFBTSxVQUFVLEdBQUcsTUFBTSxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ25ELE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDM0MsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBRS9CLDBEQUEwRDtRQUMxRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsb0JBQW9CLENBQUMsQ0FBQTtRQUUzRCwwREFBMEQ7UUFDMUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsbUJBQW1CLENBQUMsQ0FBQTtRQUM1RCxDQUFDO0lBQ0gsQ0FBQztJQUVNLEtBQUssQ0FBQyxRQUFRO1FBQ25CLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUM5QyxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sRUFBRSxDQUFBO1FBQ1gsQ0FBQztJQUNILENBQUM7SUFFTSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQWM7UUFDbkMsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDWixNQUFNLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFBO1lBQ3ZFLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQTtZQUN6QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQy9CLE1BQU0sSUFBSSxHQUFHLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO1lBRWhELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQzVELENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxFQUFFLENBQUE7UUFDWCxDQUFDO0lBQ0gsQ0FBQztJQUVNLEtBQUssQ0FBQyxnQkFBZ0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLGVBQWUsSUFBSSxDQUFDLENBQUE7SUFDM0MsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYnM1OGNoZWNrIGZyb20gJ0B3YWxsZnJlZS1kZXYvY29pbmxpYi1jb3JlL2RlcGVuZGVuY2llcy9zcmMvYnM1OGNoZWNrLTIuMS4yL2luZGV4J1xuaW1wb3J0IHsgSUFDTWVzc2FnZURlZmluaXRpb25PYmplY3RWMywgU2VyaWFsaXplclYzIH0gZnJvbSAnQHdhbGxmcmVlLWRldi9zZXJpYWxpemVyJ1xuaW1wb3J0IHsgVVIsIFVSRW5jb2RlciB9IGZyb20gJ0BuZ3JhdmVpby9iYy11cidcblxuaW1wb3J0IHsgSUFDUXJHZW5lcmF0b3IgfSBmcm9tICcuLi8uLi9pYWMvcXItZ2VuZXJhdG9yJ1xuXG5leHBvcnQgY2xhc3MgU2VyaWFsaXplclYzR2VuZXJhdG9yIGV4dGVuZHMgSUFDUXJHZW5lcmF0b3Ige1xuICBwcml2YXRlIGVuY29kZXI6IFVSRW5jb2RlciB8IHVuZGVmaW5lZFxuXG4gIHByaXZhdGUgdXI6IFVSIHwgdW5kZWZpbmVkXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZShkYXRhOiBJQUNNZXNzYWdlRGVmaW5pdGlvbk9iamVjdFYzW10sIG11bHRpRnJhZ21lbnRMZW5ndGg6IG51bWJlciwgc2luZ2xlRnJhZ21lbnRMZW5ndGg6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHNlcmlhbGl6ZXIgPSBTZXJpYWxpemVyVjMuZ2V0SW5zdGFuY2UoKVxuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBhd2FpdCBzZXJpYWxpemVyLnNlcmlhbGl6ZShkYXRhKVxuICAgIGNvbnN0IGJ1ZmZlciA9IGJzNThjaGVjay5kZWNvZGUoc2VyaWFsaXplZClcbiAgICB0aGlzLnVyID0gVVIuZnJvbUJ1ZmZlcihidWZmZXIpXG5cbiAgICAvLyBXZSBmaXJzdCB0cnkgdG8gY3JlYXRlIGEgbGFyZ2VyIFwic2luZ2xlIGNodW5rXCIgZnJhZ21lbnRcbiAgICB0aGlzLmVuY29kZXIgPSBuZXcgVVJFbmNvZGVyKHRoaXMudXIsIHNpbmdsZUZyYWdtZW50TGVuZ3RoKVxuXG4gICAgLy8gSWYgdGhpcyBpcyBub3QgcG9zc2libGUsIHdlIHVzZSB0aGUgbXVsdGlGcmFnbWVudExlbmd0aFxuICAgIGlmICh0aGlzLmVuY29kZXIuZnJhZ21lbnRzTGVuZ3RoICE9PSAxKSB7XG4gICAgICB0aGlzLmVuY29kZXIgPSBuZXcgVVJFbmNvZGVyKHRoaXMudXIsIG11bHRpRnJhZ21lbnRMZW5ndGgpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIG5leHRQYXJ0KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKHRoaXMuZW5jb2Rlcikge1xuICAgICAgcmV0dXJuIHRoaXMuZW5jb2Rlci5uZXh0UGFydCgpLnRvVXBwZXJDYXNlKClcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFNpbmdsZShwcmVmaXg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKHRoaXMudXIpIHtcbiAgICAgIGNvbnN0IHBhcnQgPSBuZXcgVVJFbmNvZGVyKHRoaXMudXIsIE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKS5uZXh0UGFydCgpXG4gICAgICBjb25zdCByZWdleCA9IC8oW14vXSskKS9nXG4gICAgICBjb25zdCBtYXRjaCA9IHBhcnQubWF0Y2gocmVnZXgpXG4gICAgICBjb25zdCBkYXRhID0gbWF0Y2ggJiYgbWF0Y2hbMF0gPyBtYXRjaFswXSA6IHBhcnRcblxuICAgICAgcmV0dXJuIHRoaXMucHJlZml4U2luZ2xlKGRhdGEudG9VcHBlckNhc2UoKSwgcHJlZml4LCAndXInKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJydcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0TnVtYmVyT2ZQYXJ0cygpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLmVuY29kZXI/LmZyYWdtZW50c0xlbmd0aCA/PyAwXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { MainProtocolSymbols } from '@wallfree-dev/coinlib-core';
|
|
2
|
+
import { IACMessageType } from '@wallfree-dev/serializer';
|
|
3
|
+
import { IACQrGenerator } from '../../iac/qr-generator';
|
|
4
|
+
export class XPubGenerator extends IACQrGenerator {
|
|
5
|
+
constructor() {
|
|
6
|
+
super();
|
|
7
|
+
}
|
|
8
|
+
async create(data, _multiFragmentLength, _singleFragmentLength) {
|
|
9
|
+
if (!(await XPubGenerator.canHandle(data))) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
const element = data[0];
|
|
13
|
+
if (element.type === IACMessageType.AccountShareResponse) {
|
|
14
|
+
this.data = element.payload.publicKey;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
throw new Error('Not Supported');
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
static async canHandle(data) {
|
|
21
|
+
if (data.length === 1) {
|
|
22
|
+
const element = data[0];
|
|
23
|
+
return ((element.protocol === MainProtocolSymbols.BTC_SEGWIT || element.protocol === MainProtocolSymbols.BTC_TAPROOT) &&
|
|
24
|
+
[IACMessageType.AccountShareResponse].includes(element.type));
|
|
25
|
+
}
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
async nextPart() {
|
|
29
|
+
return this.data ?? '';
|
|
30
|
+
}
|
|
31
|
+
async getSingle() {
|
|
32
|
+
return this.data ?? '';
|
|
33
|
+
}
|
|
34
|
+
async getNumberOfParts() {
|
|
35
|
+
return this.data ? 1 : 0;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHB1Yi1nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3FyL3FyLWdlbmVyYXRvcnMveHB1Yi1nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDaEUsT0FBTyxFQUFzRCxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUU3RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFFdkQsTUFBTSxPQUFPLGFBQWMsU0FBUSxjQUFjO0lBRy9DO1FBQ0UsS0FBSyxFQUFFLENBQUE7SUFDVCxDQUFDO0lBRU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFvQyxFQUFFLG9CQUE0QixFQUFFLHFCQUE2QjtRQUNuSCxJQUFJLENBQUMsQ0FBQyxNQUFNLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzNDLE9BQU07UUFDUixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRXZCLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUN6RCxJQUFJLENBQUMsSUFBSSxHQUFJLE9BQU8sQ0FBQyxPQUFnQyxDQUFDLFNBQVMsQ0FBQTtRQUNqRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUE7UUFDbEMsQ0FBQztJQUNILENBQUM7SUFFTSxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFvQztRQUNoRSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBRXZCLE9BQU8sQ0FDTCxDQUFDLE9BQU8sQ0FBQyxRQUFRLEtBQUssbUJBQW1CLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssbUJBQW1CLENBQUMsV0FBVyxDQUFDO2dCQUM3RyxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQzdELENBQUE7UUFDSCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0lBRU0sS0FBSyxDQUFDLFFBQVE7UUFDbkIsT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQTtJQUN4QixDQUFDO0lBRU0sS0FBSyxDQUFDLFNBQVM7UUFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQTtJQUN4QixDQUFDO0lBRU0sS0FBSyxDQUFDLGdCQUFnQjtRQUMzQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzFCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1haW5Qcm90b2NvbFN5bWJvbHMgfSBmcm9tICdAd2FsbGZyZWUtZGV2L2NvaW5saWItY29yZSdcbmltcG9ydCB7IEFjY291bnRTaGFyZVJlc3BvbnNlLCBJQUNNZXNzYWdlRGVmaW5pdGlvbk9iamVjdFYzLCBJQUNNZXNzYWdlVHlwZSB9IGZyb20gJ0B3YWxsZnJlZS1kZXYvc2VyaWFsaXplcidcblxuaW1wb3J0IHsgSUFDUXJHZW5lcmF0b3IgfSBmcm9tICcuLi8uLi9pYWMvcXItZ2VuZXJhdG9yJ1xuXG5leHBvcnQgY2xhc3MgWFB1YkdlbmVyYXRvciBleHRlbmRzIElBQ1FyR2VuZXJhdG9yIHtcbiAgcHJpdmF0ZSBkYXRhOiBzdHJpbmcgfCB1bmRlZmluZWRcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlKGRhdGE6IElBQ01lc3NhZ2VEZWZpbml0aW9uT2JqZWN0VjNbXSwgX211bHRpRnJhZ21lbnRMZW5ndGg6IG51bWJlciwgX3NpbmdsZUZyYWdtZW50TGVuZ3RoOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIShhd2FpdCBYUHViR2VuZXJhdG9yLmNhbkhhbmRsZShkYXRhKSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBkYXRhWzBdXG5cbiAgICBpZiAoZWxlbWVudC50eXBlID09PSBJQUNNZXNzYWdlVHlwZS5BY2NvdW50U2hhcmVSZXNwb25zZSkge1xuICAgICAgdGhpcy5kYXRhID0gKGVsZW1lbnQucGF5bG9hZCBhcyBBY2NvdW50U2hhcmVSZXNwb25zZSkucHVibGljS2V5XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm90IFN1cHBvcnRlZCcpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhc3luYyBjYW5IYW5kbGUoZGF0YTogSUFDTWVzc2FnZURlZmluaXRpb25PYmplY3RWM1tdKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKGRhdGEubGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gZGF0YVswXVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICAoZWxlbWVudC5wcm90b2NvbCA9PT0gTWFpblByb3RvY29sU3ltYm9scy5CVENfU0VHV0lUIHx8IGVsZW1lbnQucHJvdG9jb2wgPT09IE1haW5Qcm90b2NvbFN5bWJvbHMuQlRDX1RBUFJPT1QpICYmXG4gICAgICAgIFtJQUNNZXNzYWdlVHlwZS5BY2NvdW50U2hhcmVSZXNwb25zZV0uaW5jbHVkZXMoZWxlbWVudC50eXBlKVxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcHVibGljIGFzeW5jIG5leHRQYXJ0KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YSA/PyAnJ1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFNpbmdsZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmRhdGEgPz8gJydcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXROdW1iZXJPZlBhcnRzKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YSA/IDEgOiAwXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Serializer } from '@wallfree-dev/serializer';
|
|
2
|
+
import { IACHandlerStatus } from '../../iac/message-handler';
|
|
3
|
+
import { convertV2ToV3 } from '../../serializer/serializer.service';
|
|
4
|
+
export class SerializerV2Handler {
|
|
5
|
+
constructor(callback = () => undefined) {
|
|
6
|
+
this.name = 'SerializerV2Handler';
|
|
7
|
+
this.callback = () => undefined;
|
|
8
|
+
this.progress = 0;
|
|
9
|
+
this.parts = new Set();
|
|
10
|
+
this.serializer = Serializer.getInstance();
|
|
11
|
+
this.callback = callback;
|
|
12
|
+
}
|
|
13
|
+
async canHandle(_part) {
|
|
14
|
+
const part = this.getParsedData(_part);
|
|
15
|
+
try {
|
|
16
|
+
await this.serializer.deserialize([part]);
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
try {
|
|
21
|
+
await this.serializer.deserialize(part.split(','));
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
if (error.availablePages && error.totalPages) {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
getParsedData(data) {
|
|
35
|
+
if (!data.includes('://')) {
|
|
36
|
+
return data;
|
|
37
|
+
}
|
|
38
|
+
let parsedData = data;
|
|
39
|
+
try {
|
|
40
|
+
const url = new URL(data);
|
|
41
|
+
parsedData = url.searchParams.get('d');
|
|
42
|
+
}
|
|
43
|
+
catch (e) { }
|
|
44
|
+
return parsedData ?? '';
|
|
45
|
+
}
|
|
46
|
+
async receive(data) {
|
|
47
|
+
const parsedData = await this.getParsedData(data);
|
|
48
|
+
if (!parsedData) {
|
|
49
|
+
return IACHandlerStatus.UNSUPPORTED;
|
|
50
|
+
}
|
|
51
|
+
// Handle multiple parts
|
|
52
|
+
const splits = parsedData.split(',');
|
|
53
|
+
if (splits.length > 1) {
|
|
54
|
+
for (const split of splits) {
|
|
55
|
+
if (this.parts.has(split)) {
|
|
56
|
+
return IACHandlerStatus.PARTIAL;
|
|
57
|
+
}
|
|
58
|
+
const valid = await this.canHandle(split);
|
|
59
|
+
if (valid) {
|
|
60
|
+
this.parts.add(split);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
return IACHandlerStatus.UNSUPPORTED;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// End multiple parts
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
const canHandle = await this.canHandle(parsedData);
|
|
70
|
+
if (!canHandle) {
|
|
71
|
+
return IACHandlerStatus.UNSUPPORTED;
|
|
72
|
+
}
|
|
73
|
+
this.parts.add(parsedData);
|
|
74
|
+
}
|
|
75
|
+
try {
|
|
76
|
+
const deserialized = await this.serializer.deserialize(Array.from(this.parts));
|
|
77
|
+
if (deserialized) {
|
|
78
|
+
this.completeDeserialized = deserialized;
|
|
79
|
+
return IACHandlerStatus.SUCCESS;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
if (error.availablePages && error.totalPages) {
|
|
84
|
+
this.progress = error.availablePages.length / error.totalPages;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return IACHandlerStatus.PARTIAL;
|
|
88
|
+
}
|
|
89
|
+
async getProgress() {
|
|
90
|
+
return Number(this.progress.toFixed(2));
|
|
91
|
+
}
|
|
92
|
+
async handleComplete() {
|
|
93
|
+
const result = await this.getResult();
|
|
94
|
+
if (!result) {
|
|
95
|
+
throw new Error('Data not complete!');
|
|
96
|
+
}
|
|
97
|
+
this.callback(result);
|
|
98
|
+
return result;
|
|
99
|
+
}
|
|
100
|
+
async getDataSingle() {
|
|
101
|
+
return Array.from(this.parts.values()).join(','); // Serializer V2 used commas to separate parts
|
|
102
|
+
}
|
|
103
|
+
async getResult() {
|
|
104
|
+
return this.completeDeserialized
|
|
105
|
+
? { result: await convertV2ToV3(this.completeDeserialized), data: await this.getDataSingle() }
|
|
106
|
+
: undefined;
|
|
107
|
+
}
|
|
108
|
+
async reset() {
|
|
109
|
+
this.parts = new Set();
|
|
110
|
+
this.progress = 0;
|
|
111
|
+
this.completeDeserialized = undefined;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplci12Mi1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9xci9xci1oYW5kbGVyL3NlcmlhbGl6ZXItdjItaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTRELFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQy9HLE9BQU8sRUFBRSxnQkFBZ0IsRUFBd0MsTUFBTSwyQkFBMkIsQ0FBQTtBQUNsRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUE7QUFFbkUsTUFBTSxPQUFPLG1CQUFtQjtJQVU5QixZQUFZLFdBQThFLEdBQVMsRUFBRSxDQUFDLFNBQVM7UUFUL0YsU0FBSSxHQUFXLHFCQUFxQixDQUFBO1FBR25DLGFBQVEsR0FBc0UsR0FBUyxFQUFFLENBQUMsU0FBUyxDQUFBO1FBRTVHLGFBQVEsR0FBVyxDQUFDLENBQUE7UUFDcEIsVUFBSyxHQUFnQixJQUFJLEdBQUcsRUFBVSxDQUFBO1FBSTVDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO0lBQzFCLENBQUM7SUFFTSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQWE7UUFDbEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN0QyxJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtZQUV6QyxPQUFPLElBQUksQ0FBQTtRQUNiLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDO2dCQUNILE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFH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Q0FBQyxvQkFBb0IsR0FBRyxTQUFTLENBQUE7SUFDdkMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUFDTWVzc2FnZURlZmluaXRpb25PYmplY3RWMywgSUFDTWVzc2FnZURlZmluaXRpb25PYmplY3QsIFNlcmlhbGl6ZXIgfSBmcm9tICdAd2FsbGZyZWUtZGV2L3NlcmlhbGl6ZXInXG5pbXBvcnQgeyBJQUNIYW5kbGVyU3RhdHVzLCBJQUNNZXNzYWdlSGFuZGxlciwgSUFDTWVzc2FnZVdyYXBwZXIgfSBmcm9tICcuLi8uLi9pYWMvbWVzc2FnZS1oYW5kbGVyJ1xuaW1wb3J0IHsgY29udmVydFYyVG9WMyB9IGZyb20gJy4uLy4uL3NlcmlhbGl6ZXIvc2VyaWFsaXplci5zZXJ2aWNlJ1xuXG5leHBvcnQgY2xhc3MgU2VyaWFsaXplclYySGFuZGxlciBpbXBsZW1lbnRzIElBQ01lc3NhZ2VIYW5kbGVyPElBQ01lc3NhZ2VEZWZpbml0aW9uT2JqZWN0VjNbXT4ge1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nID0gJ1NlcmlhbGl6ZXJWMkhhbmRsZXInXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VyaWFsaXplcjogU2VyaWFsaXplclxuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2FsbGJhY2s6IChkYXRhOiBJQUNNZXNzYWdlV3JhcHBlcjxJQUNNZXNzYWdlRGVmaW5pdGlvbk9iamVjdFYzW10+KSA9PiB2b2lkID0gKCk6IHZvaWQgPT4gdW5kZWZpbmVkXG5cbiAgcHJpdmF0ZSBwcm9ncmVzczogbnVtYmVyID0gMFxuICBwcml2YXRlIHBhcnRzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gIHByaXZhdGUgY29tcGxldGVEZXNlcmlhbGl6ZWQ6IElBQ01lc3NhZ2VEZWZpbml0aW9uT2JqZWN0W10gfCB1bmRlZmluZWRcblxuICBjb25zdHJ1Y3RvcihjYWxsYmFjazogKGRhdGE6IElBQ01lc3NhZ2VXcmFwcGVyPElBQ01lc3NhZ2VEZWZpbml0aW9uT2JqZWN0VjNbXT4pID0+IHZvaWQgPSAoKTogdm9pZCA9PiB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnNlcmlhbGl6ZXIgPSBTZXJpYWxpemVyLmdldEluc3RhbmNlKClcbiAgICB0aGlzLmNhbGxiYWNrID0gY2FsbGJhY2tcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjYW5IYW5kbGUoX3BhcnQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHBhcnQgPSB0aGlzLmdldFBhcnNlZERhdGEoX3BhcnQpXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuc2VyaWFsaXplci5kZXNlcmlhbGl6ZShbcGFydF0pXG5cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2VyaWFsaXplci5kZXNlcmlhbGl6ZShwYXJ0LnNwbGl0KCcsJykpXG5cbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvci5hdmFpbGFibGVQYWdlcyAmJiBlcnJvci50b3RhbFBhZ2VzKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRQYXJzZWREYXRhKGRhdGE6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFkYXRhLmluY2x1ZGVzKCc6Ly8nKSkge1xuICAgICAgcmV0dXJuIGRhdGFcbiAgICB9XG4gICAgbGV0IHBhcnNlZERhdGE6IHN0cmluZyB8IG51bGwgPSBkYXRhXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwoZGF0YSlcbiAgICAgIHBhcnNlZERhdGEgPSB1cmwuc2VhcmNoUGFyYW1zLmdldCgnZCcpXG4gICAgfSBjYXRjaCAoZSkge31cblxuICAgIHJldHVybiBwYXJzZWREYXRhID8/ICcnXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVjZWl2ZShkYXRhOiBzdHJpbmcpOiBQcm9taXNlPElBQ0hhbmRsZXJTdGF0dXM+IHtcbiAgICBjb25zdCBwYXJzZWREYXRhID0gYXdhaXQgdGhpcy5nZXRQYXJzZWREYXRhKGRhdGEpXG4gICAgaWYgKCFwYXJzZWREYXRhKSB7XG4gICAgICByZXR1cm4gSUFDSGFuZGxlclN0YXR1cy5VTlNVUFBPUlRFRFxuICAgIH1cblxuICAgIC8vIEhhbmRsZSBtdWx0aXBsZSBwYXJ0c1xuICAgIGNvbnN0IHNwbGl0cyA9IHBhcnNlZERhdGEuc3BsaXQoJywnKVxuICAgIGlmIChzcGxpdHMubGVuZ3RoID4gMSkge1xuICAgICAgZm9yIChjb25zdCBzcGxpdCBvZiBzcGxpdHMpIHtcbiAgICAgICAgaWYgKHRoaXMucGFydHMuaGFzKHNwbGl0KSkge1xuICAgICAgICAgIHJldHVybiBJQUNIYW5kbGVyU3RhdHVzLlBBUlRJQUxcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbGlkID0gYXdhaXQgdGhpcy5jYW5IYW5kbGUoc3BsaXQpXG5cbiAgICAgICAgaWYgKHZhbGlkKSB7XG4gICAgICAgICAgdGhpcy5wYXJ0cy5hZGQoc3BsaXQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIElBQ0hhbmRsZXJTdGF0dXMuVU5TVVBQT1JURURcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gRW5kIG11bHRpcGxlIHBhcnRzXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNhbkhhbmRsZSA9IGF3YWl0IHRoaXMuY2FuSGFuZGxlKHBhcnNlZERhdGEpXG4gICAgICBpZiAoIWNhbkhhbmRsZSkge1xuICAgICAgICByZXR1cm4gSUFDSGFuZGxlclN0YXR1cy5VTlNVUFBPUlRFRFxuICAgICAgfVxuICAgICAgdGhpcy5wYXJ0cy5hZGQocGFyc2VkRGF0YSlcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVzZXJpYWxpemVkID0gYXdhaXQgdGhpcy5zZXJpYWxpemVyLmRlc2VyaWFsaXplKEFycmF5LmZyb20odGhpcy5wYXJ0cykpXG4gICAgICBpZiAoZGVzZXJpYWxpemVkKSB7XG4gICAgICAgIHRoaXMuY29tcGxldGVEZXNlcmlhbGl6ZWQgPSBkZXNlcmlhbGl6ZWRcblxuICAgICAgICByZXR1cm4gSUFDSGFuZGxlclN0YXR1cy5TVUNDRVNTXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvci5hdmFpbGFibGVQYWdlcyAmJiBlcnJvci50b3RhbFBhZ2VzKSB7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3MgPSBlcnJvci5hdmFpbGFibGVQYWdlcy5sZW5ndGggLyBlcnJvci50b3RhbFBhZ2VzXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIElBQ0hhbmRsZXJTdGF0dXMuUEFSVElBTFxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFByb2dyZXNzKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIE51bWJlcih0aGlzLnByb2dyZXNzLnRvRml4ZWQoMikpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaGFuZGxlQ29tcGxldGUoKTogUHJvbWlzZTxJQUNNZXNzYWdlV3JhcHBlcjxJQUNNZXNzYWdlRGVmaW5pdGlvbk9iamVjdFYzW10+PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5nZXRSZXN1bHQoKVxuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RhdGEgbm90IGNvbXBsZXRlIScpXG4gICAgfVxuICAgIHRoaXMuY2FsbGJhY2socmVzdWx0KVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERhdGFTaW5nbGUoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnBhcnRzLnZhbHVlcygpKS5qb2luKCcsJykgLy8gU2VyaWFsaXplciBWMiB1c2VkIGNvbW1hcyB0byBzZXBhcmF0ZSBwYXJ0c1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFJlc3VsdCgpOiBQcm9taXNlPElBQ01lc3NhZ2VXcmFwcGVyPElBQ01lc3NhZ2VEZWZpbml0aW9uT2JqZWN0VjNbXT4gfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5jb21wbGV0ZURlc2VyaWFsaXplZFxuICAgICAgPyB7IHJlc3VsdDogYXdhaXQgY29udmVydFYyVG9WMyh0aGlzLmNvbXBsZXRlRGVzZXJpYWxpemVkKSwgZGF0YTogYXdhaXQgdGhpcy5nZXREYXRhU2luZ2xlKCkgfVxuICAgICAgOiB1bmRlZmluZWRcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZXNldCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnBhcnRzID0gbmV3IFNldCgpXG4gICAgdGhpcy5wcm9ncmVzcyA9IDBcbiAgICB0aGlzLmNvbXBsZXRlRGVzZXJpYWxpemVkID0gdW5kZWZpbmVkXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
import { UR, URDecoder, UREncoder } from '@ngraveio/bc-ur';
|
|
2
|
+
import * as bs58check from '@wallfree-dev/coinlib-core/dependencies/src/bs58check-2.1.2/index';
|
|
3
|
+
import { CryptoPSBT } from '@keystonehq/bc-ur-registry';
|
|
4
|
+
import { EthSignRequest, DataType } from '@keystonehq/bc-ur-registry-eth';
|
|
5
|
+
import * as rlp from '@ethereumjs/rlp';
|
|
6
|
+
import { TransactionFactory } from '@ethereumjs/tx';
|
|
7
|
+
import { MainProtocolSymbols } from '@wallfree-dev/coinlib-core';
|
|
8
|
+
import { SerializerV3, generateId, IACMessageType } from '@wallfree-dev/serializer';
|
|
9
|
+
import { IACHandlerStatus } from '../../iac/message-handler';
|
|
10
|
+
import { QRType } from '../../../../public-api';
|
|
11
|
+
import { TEMP_BTC_REQUEST_IDS, TEMP_MM_REQUEST_IDS } from '../../../utils/utils';
|
|
12
|
+
import * as bitcoinJS from 'bitcoinjs-lib';
|
|
13
|
+
export class SerializerV3Handler {
|
|
14
|
+
constructor(callback = () => undefined) {
|
|
15
|
+
this.name = 'SerializerV3Handler';
|
|
16
|
+
this.decoder = new URDecoder();
|
|
17
|
+
this.callback = () => undefined;
|
|
18
|
+
this.parts = new Set();
|
|
19
|
+
this.serializer = SerializerV3.getInstance();
|
|
20
|
+
this.callback = callback;
|
|
21
|
+
// completion callback
|
|
22
|
+
}
|
|
23
|
+
async canHandle(data) {
|
|
24
|
+
if (data.toUpperCase().startsWith('UR:')) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
try {
|
|
29
|
+
const ur = this.getParsedData(data);
|
|
30
|
+
return ur && ur.length > 0 ? true : false;
|
|
31
|
+
}
|
|
32
|
+
catch (e) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
getParsedData(data) {
|
|
38
|
+
if (data.toUpperCase().startsWith('UR:')) {
|
|
39
|
+
return data;
|
|
40
|
+
}
|
|
41
|
+
let ur = data;
|
|
42
|
+
try {
|
|
43
|
+
const url = new URL(data);
|
|
44
|
+
ur = `UR:BYTES/${url.searchParams.get('ur')}`;
|
|
45
|
+
}
|
|
46
|
+
catch (e) { }
|
|
47
|
+
return ur ?? '';
|
|
48
|
+
}
|
|
49
|
+
async receive(_data) {
|
|
50
|
+
const data = this.getParsedData(_data);
|
|
51
|
+
if (this.parts.has(data)) {
|
|
52
|
+
return IACHandlerStatus.PARTIAL;
|
|
53
|
+
}
|
|
54
|
+
this.parts.add(data);
|
|
55
|
+
const canHandle = await this.canHandle(data);
|
|
56
|
+
if (!canHandle) {
|
|
57
|
+
return IACHandlerStatus.UNSUPPORTED;
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
const res = this.decoder.receivePart(data);
|
|
61
|
+
if (!res) {
|
|
62
|
+
// If we already have progress, but the scanner scans a "new set of QRs", it should reset itself and handle the part.
|
|
63
|
+
this.reset();
|
|
64
|
+
return this.receive(_data);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch (e) {
|
|
68
|
+
return IACHandlerStatus.UNSUPPORTED;
|
|
69
|
+
}
|
|
70
|
+
if (this.decoder.isComplete() && this.decoder.isSuccess()) {
|
|
71
|
+
return IACHandlerStatus.SUCCESS;
|
|
72
|
+
}
|
|
73
|
+
return IACHandlerStatus.PARTIAL;
|
|
74
|
+
}
|
|
75
|
+
async handleComplete() {
|
|
76
|
+
const result = await this.getResult();
|
|
77
|
+
if (!result) {
|
|
78
|
+
throw new Error('Data not complete!');
|
|
79
|
+
}
|
|
80
|
+
this.callback(result);
|
|
81
|
+
return result;
|
|
82
|
+
}
|
|
83
|
+
async getProgress() {
|
|
84
|
+
return Number(this.decoder.estimatedPercentComplete().toFixed(2));
|
|
85
|
+
}
|
|
86
|
+
async getResult() {
|
|
87
|
+
if (this.resultCache) {
|
|
88
|
+
return this.resultCache;
|
|
89
|
+
}
|
|
90
|
+
if (this.decoder.isComplete() && this.decoder.isSuccess()) {
|
|
91
|
+
const decoded = this.decoder.resultUR();
|
|
92
|
+
this.combinedData = decoded.decodeCBOR();
|
|
93
|
+
if (decoded.type === 'crypto-psbt') {
|
|
94
|
+
const cryptoPsbt = CryptoPSBT.fromCBOR(decoded.cbor);
|
|
95
|
+
const psbt = cryptoPsbt.getPSBT().toString('hex');
|
|
96
|
+
return this.convertPSBT(psbt);
|
|
97
|
+
}
|
|
98
|
+
if (decoded.type === 'eth-sign-request') {
|
|
99
|
+
const signRequest = EthSignRequest.fromCBOR(decoded.cbor);
|
|
100
|
+
return this.convertMetaMaskSignRequest(signRequest);
|
|
101
|
+
}
|
|
102
|
+
const resultUr = bs58check.encode(this.combinedData);
|
|
103
|
+
return { result: await this.serializer.deserialize(resultUr), data: await this.getDataSingle() };
|
|
104
|
+
}
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
/*
|
|
108
|
+
* If we scan an animated QR, but the result is not a serializer message we get the result back
|
|
109
|
+
*/
|
|
110
|
+
async getDataSingle() {
|
|
111
|
+
if (!this.combinedData) {
|
|
112
|
+
return undefined;
|
|
113
|
+
}
|
|
114
|
+
const ur = UR.fromBuffer(this.combinedData);
|
|
115
|
+
const part = new UREncoder(ur, Number.MAX_SAFE_INTEGER).nextPart();
|
|
116
|
+
return part.toUpperCase();
|
|
117
|
+
}
|
|
118
|
+
async reset() {
|
|
119
|
+
this.decoder = new URDecoder();
|
|
120
|
+
this.parts = new Set();
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
async convertPSBT(psbt) {
|
|
124
|
+
const decodedPSBT = bitcoinJS.Psbt.fromHex(psbt);
|
|
125
|
+
const isTaproot = decodedPSBT.data.inputs.some((input) => input.tapBip32Derivation);
|
|
126
|
+
const payload = {
|
|
127
|
+
transaction: { psbt },
|
|
128
|
+
publicKey: ''
|
|
129
|
+
};
|
|
130
|
+
if (isTaproot) {
|
|
131
|
+
payload;
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
payload;
|
|
135
|
+
}
|
|
136
|
+
const ownRequestId = generateId(8);
|
|
137
|
+
const IDs = JSON.parse(localStorage.getItem(TEMP_BTC_REQUEST_IDS) ?? '{}');
|
|
138
|
+
IDs[ownRequestId] = { qrType: QRType.BC_UR };
|
|
139
|
+
localStorage.setItem(TEMP_BTC_REQUEST_IDS, JSON.stringify(IDs));
|
|
140
|
+
return {
|
|
141
|
+
result: [
|
|
142
|
+
{
|
|
143
|
+
id: ownRequestId,
|
|
144
|
+
protocol: isTaproot ? MainProtocolSymbols.BTC_TAPROOT : MainProtocolSymbols.BTC_SEGWIT,
|
|
145
|
+
type: IACMessageType.TransactionSignRequest,
|
|
146
|
+
payload
|
|
147
|
+
}
|
|
148
|
+
],
|
|
149
|
+
data: await this.getDataSingle()
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
async convertMetaMaskSignRequest(request) {
|
|
153
|
+
const signData = request.getSignData();
|
|
154
|
+
const sourceFingerprint = request.derivationPath.getSourceFingerprint().toString('hex');
|
|
155
|
+
const ownRequestId = generateId(8);
|
|
156
|
+
const metamaskRequestId = request.getRequestId().toString('hex');
|
|
157
|
+
// TODO: This should be moved to a higher level, probably the "iac.service", and properly store context for any kind of request.
|
|
158
|
+
const IDs = JSON.parse(localStorage.getItem(TEMP_MM_REQUEST_IDS) ?? '{}');
|
|
159
|
+
IDs[ownRequestId] = metamaskRequestId;
|
|
160
|
+
localStorage.setItem(TEMP_MM_REQUEST_IDS, JSON.stringify(IDs));
|
|
161
|
+
const context = { requestId: metamaskRequestId, derivationPath: request.getDerivationPath(), sourceFingerprint };
|
|
162
|
+
const chainId = request.getChainId();
|
|
163
|
+
const protocol = chainId === 10 /* Optimism Mainnet */ || chainId === 420 /* Optimism Goerli */
|
|
164
|
+
? MainProtocolSymbols.OPTIMISM
|
|
165
|
+
: MainProtocolSymbols.ETH;
|
|
166
|
+
switch (request.getDataType()) {
|
|
167
|
+
case DataType.transaction: {
|
|
168
|
+
// Metamask uses `Transaction#getMessageToSign` to get the transaction bytes which will be later encoded with RLP.
|
|
169
|
+
// This method returns data that is already prepared to be hashed and signed,
|
|
170
|
+
// for EIP-155 compliant transactions it means there's `chainId` put where the `v` component is usually placed.
|
|
171
|
+
// However, the data prepared in that way is not meant to be used to recreate the `Transaction` object.
|
|
172
|
+
// To construct the `Transaction` object on our side we have to use the transaction data to replicate the
|
|
173
|
+
// output we would get with `Transaction#serialized`. This means that we first have to decode the data,
|
|
174
|
+
// drop the EIP-155 compliant parts and finally encode the reduced array of bytes again.
|
|
175
|
+
const rawTx = rlp.decode(signData);
|
|
176
|
+
const [nonce, gasPrice, gasLimit, to, value, data] = rawTx;
|
|
177
|
+
const serializedTx = rlp.encode([
|
|
178
|
+
nonce,
|
|
179
|
+
gasPrice,
|
|
180
|
+
gasLimit,
|
|
181
|
+
to,
|
|
182
|
+
value,
|
|
183
|
+
data,
|
|
184
|
+
Buffer.from([]) /* v */,
|
|
185
|
+
Buffer.from([]) /* r */,
|
|
186
|
+
Buffer.from([]) /* s */
|
|
187
|
+
]);
|
|
188
|
+
const ethTx = TransactionFactory.fromSerializedData(Buffer.from(serializedTx));
|
|
189
|
+
const tx = ethTx;
|
|
190
|
+
return {
|
|
191
|
+
result: [
|
|
192
|
+
{
|
|
193
|
+
id: ownRequestId,
|
|
194
|
+
protocol,
|
|
195
|
+
type: IACMessageType.TransactionSignRequest,
|
|
196
|
+
payload: {
|
|
197
|
+
transaction: {
|
|
198
|
+
nonce: `0x${tx.nonce.toString(16)}`,
|
|
199
|
+
gasPrice: `0x${tx.gasPrice.toString(16)}`,
|
|
200
|
+
gasLimit: `0x${tx.gasLimit.toString(16)}`,
|
|
201
|
+
to: tx.to.toString(),
|
|
202
|
+
value: `0x${tx.value.toString(16)}`,
|
|
203
|
+
chainId: request.getChainId(),
|
|
204
|
+
data: `0x${tx.data.toString('hex')}`
|
|
205
|
+
},
|
|
206
|
+
publicKey: ''
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
],
|
|
210
|
+
data: await this.getDataSingle(),
|
|
211
|
+
context
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
case DataType.typedData:
|
|
215
|
+
const typedDataSignRequest = {
|
|
216
|
+
message: signData.toString(),
|
|
217
|
+
publicKey: ''
|
|
218
|
+
};
|
|
219
|
+
return {
|
|
220
|
+
result: [
|
|
221
|
+
{
|
|
222
|
+
id: ownRequestId,
|
|
223
|
+
protocol,
|
|
224
|
+
type: IACMessageType.MessageSignRequest,
|
|
225
|
+
payload: typedDataSignRequest
|
|
226
|
+
}
|
|
227
|
+
],
|
|
228
|
+
data: await this.getDataSingle(),
|
|
229
|
+
context
|
|
230
|
+
};
|
|
231
|
+
case DataType.personalMessage:
|
|
232
|
+
const signRequest = {
|
|
233
|
+
message: `0x${signData.toString('hex')}`,
|
|
234
|
+
publicKey: ''
|
|
235
|
+
};
|
|
236
|
+
return {
|
|
237
|
+
result: [
|
|
238
|
+
{
|
|
239
|
+
id: ownRequestId,
|
|
240
|
+
protocol,
|
|
241
|
+
type: IACMessageType.MessageSignRequest,
|
|
242
|
+
payload: signRequest
|
|
243
|
+
}
|
|
244
|
+
],
|
|
245
|
+
data: await this.getDataSingle(),
|
|
246
|
+
context
|
|
247
|
+
};
|
|
248
|
+
case DataType.typedTransaction: {
|
|
249
|
+
return {
|
|
250
|
+
result: [
|
|
251
|
+
{
|
|
252
|
+
id: ownRequestId,
|
|
253
|
+
protocol,
|
|
254
|
+
type: IACMessageType.TransactionSignRequest,
|
|
255
|
+
payload: {
|
|
256
|
+
transaction: {
|
|
257
|
+
serialized: signData.toString('hex'),
|
|
258
|
+
derivationPath: request.getDerivationPath(),
|
|
259
|
+
masterFingerprint: sourceFingerprint
|
|
260
|
+
},
|
|
261
|
+
publicKey: ''
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
],
|
|
265
|
+
data: await this.getDataSingle(),
|
|
266
|
+
context
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
default:
|
|
270
|
+
throw new Error(`Unable to handle data type "${request.getDataType()}"`);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplci12My1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9xci9xci1oYW5kbGVyL3NlcmlhbGl6ZXItdjMtaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMxRCxPQUFPLEtBQUssU0FBUyxNQUFNLG1FQUFtRSxDQUFBO0FBQzlGLE9BQU8sRUFBaUIsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUN6RSxPQUFPLEtBQUssR0FBRyxNQUFNLGlCQUFpQixDQUFBO0FBQ3RDLE9BQU8sRUFBZSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRWhFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQ2hFLE9BQU8sRUFBZ0MsWUFBWSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQXNCLE1BQU0sMEJBQTBCLENBQUE7QUFDckksT0FBTyxFQUFFLGdCQUFnQixFQUF3QyxNQUFNLDJCQUEyQixDQUFBO0FBQ2xHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNoRixPQUFPLEtBQUssU0FBUyxNQUFNLGVBQWUsQ0FBQTtBQUUxQyxNQUFNLE9BQU8sbUJBQW1CO0lBYTlCLFlBQVksV0FBOEUsR0FBUyxFQUFFLENBQUMsU0FBUztRQVovRixTQUFJLEdBQVcscUJBQXFCLENBQUE7UUFFNUMsWUFBTyxHQUFjLElBQUksU0FBUyxFQUFFLENBQUE7UUFFM0IsYUFBUSxHQUFzRSxHQUFTLEVBQUUsQ0FB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RSxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUU7b0JBQ2hDLE9BQU87aUJBQ1IsQ0FBQTtZQUVILEtBQUssUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztnQkFDL0IsT0FBTztvQkFDTCxNQUFNLEVBQUU7d0JBQ047NEJBQ0UsRUFBRSxFQUFFLFlBQVk7NEJBQ2hCLFFBQVE7NEJBQ1IsSUFBSSxFQUFFLGNBQWMsQ0FBQyxzQkFBc0I7NEJBQzNDLE9BQU8sRUFBRTtnQ0FDUCxXQUFXLEVBQUU7b0NBQ1gsVUFBVSxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO29DQUNwQyxjQUFjLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixFQUFFO29DQUMzQyxpQkFBaUIsRUFBRSxpQkFBaUI7aUNBQ3JDO2dDQUNELFNBQVMsRUFBRSxFQUFFOzZCQUNkO3lCQUNGO3FCQUNGO29CQUNELElBQUksRUFBRSxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUU7b0JBQ2hDLE9BQU87aUJBQ1IsQ0FBQTtZQUNILENBQUM7WUFFRDtnQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixPQUFPLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBQzVFLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVUiwgVVJEZWNvZGVyLCBVUkVuY29kZXIgfSBmcm9tICdAbmdyYXZlaW8vYmMtdXInXG5pbXBvcnQgKiBhcyBiczU4Y2hlY2sgZnJvbSAnQHdhbGxmcmVlLWRldi9jb2lubGliLWNvcmUvZGVwZW5kZW5jaWVzL3NyYy9iczU4Y2hlY2stMi4xLjIvaW5kZXgnXG5pbXBvcnQgeyBDcnlwdG9LZXlwYXRoLCBDcnlwdG9QU0JUIH0gZnJvbSAnQGtleXN0b25laHEvYmMtdXItcmVnaXN0cnknXG5pbXBvcnQgeyBFdGhTaWduUmVxdWVzdCwgRGF0YVR5cGUgfSBmcm9tICdAa2V5c3RvbmVocS9iYy11ci1yZWdpc3RyeS1ldGgnXG5pbXBvcnQgKiBhcyBybHAgZnJvbSAnQGV0aGVyZXVtanMvcmxwJ1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uRmFjdG9yeSB9IGZyb20gJ0BldGhlcmV1bWpzL3R4J1xuaW1wb3J0IHsgQml0Y29pblNlZ3dpdFRyYW5zYWN0aW9uU2lnblJlcXVlc3QsIEJpdGNvaW5UYXByb290VHJhbnNhY3Rpb25TaWduUmVxdWVzdCB9IGZyb20gJ0B3YWxsZnJlZS1kZXYvYml0Y29pbidcbmltcG9ydCB7IE1haW5Qcm90b2NvbFN5bWJvbHMgfSBmcm9tICdAd2FsbGZyZWUtZGV2L2NvaW5saWItY29yZSdcbmltcG9ydCB7IElBQ01lc3NhZ2VEZWZpbml0aW9uT2JqZWN0VjMsIFNlcmlhbGl6ZXJWMywgZ2VuZXJhdGVJZCwgSUFDTWVzc2FnZVR5cGUsIE1lc3NhZ2VTaWduUmVxdWVzdCB9IGZyb20gJ0B3YWxsZnJlZS1kZXYvc2VyaWFsaXplcidcbmltcG9ydCB7IElBQ0hhbmRsZXJTdGF0dXMsIElBQ01lc3NhZ2VIYW5kbGVyLCBJQUNNZXNzYWdlV3JhcHBlciB9IGZyb20gJy4uLy4uL2lhYy9tZXNzYWdlLWhhbmRsZXInXG5pbXBvcnQgeyBRUlR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9wdWJsaWMtYXBpJ1xuaW1wb3J0IHsgVEVNUF9CVENfUkVRVUVTVF9JRFMsIFRFTVBfTU1fUkVRVUVTVF9JRFMgfSBmcm9tICcuLi8uLi8uLi91dGlscy91dGlscydcbmltcG9ydCAqIGFzIGJpdGNvaW5KUyBmcm9tICdiaXRjb2luanMtbGliJ1xuXG5leHBvcnQgY2xhc3MgU2VyaWFsaXplclYzSGFuZGxlciBpbXBsZW1lbnRzIElBQ01lc3NhZ2VIYW5kbGVyPElBQ01lc3NhZ2VEZWZpbml0aW9uT2JqZWN0VjNbXT4ge1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nID0gJ1NlcmlhbGl6ZXJWM0hhbmRsZXInXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VyaWFsaXplcjogU2VyaWFsaXplclYzXG4gIHByaXZhdGUgZGVjb2RlcjogVVJEZWNvZGVyID0gbmV3IFVSRGVjb2RlcigpXG5cbiAgcHJpdmF0ZSByZWFkb25seSBjYWxsYmFjazogKGRhdGE6IElBQ01lc3NhZ2VXcmFwcGVyPElBQ01lc3NhZ2VEZWZpbml0aW9uT2JqZWN0VjNbXT4pID0+IHZvaWQgPSAoKTogdm9pZCA9PiB1bmRlZmluZWRcblxuICBwcml2YXRlIHBhcnRzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKVxuXG4gIHByaXZhdGUgY29tYmluZWREYXRhOiBCdWZmZXIgfCB1bmRlZmluZWRcblxuICBwcml2YXRlIHJlc3VsdENhY2hlOiBJQUNNZXNzYWdlV3JhcHBlcjxJQUNNZXNzYWdlRGVmaW5pdGlvbk9iamVjdFYzW10+IHwgdW5kZWZpbmVkXG5cbiAgY29uc3RydWN0b3IoY2FsbGJhY2s6IChkYXRhOiBJQUNNZXNzYWdlV3JhcHBlcjxJQUNNZXNzYWdlRGVmaW5pdGlvbk9iamVjdFYzW10+KSA9PiB2b2lkID0gKCk6IHZvaWQgPT4gdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5zZXJpYWxpemVyID0gU2VyaWFsaXplclYzLmdldEluc3RhbmNlKClcbiAgICB0aGlzLmNhbGxiYWNrID0gY2FsbGJhY2tcbiAgICAvLyBjb21wbGV0aW9uIGNhbGxiYWNrXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2FuSGFuZGxlKGRhdGE6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmIChkYXRhLnRvVXBwZXJDYXNlKCkuc3RhcnRzV2l0aCgnVVI6JykpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBlbHNlIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHVyID0gdGhpcy5nZXRQYXJzZWREYXRhKGRhdGEpXG5cbiAgICAgICAgcmV0dXJuIHVyICYmIHVyLmxlbmd0aCA+IDAgPyB0cnVlIDogZmFsc2VcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFBhcnNlZERhdGEoZGF0YTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoZGF0YS50b1VwcGVyQ2FzZSgpLnN0YXJ0c1dpdGgoJ1VSOicpKSB7XG4gICAgICByZXR1cm4gZGF0YVxuICAgIH1cbiAgICBsZXQgdXI6IHN0cmluZyB8IG51bGwgPSBkYXRhXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwoZGF0YSlcbiAgICAgIHVyID0gYFVSOkJZVEVTLyR7dXJsLnNlYXJjaFBhcmFtcy5nZXQoJ3VyJyl9YFxuICAgIH0gY2F0Y2ggKGUpIHt9XG5cbiAgICByZXR1cm4gdXIgPz8gJydcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZWNlaXZlKF9kYXRhOiBzdHJpbmcpOiBQcm9taXNlPElBQ0hhbmRsZXJTdGF0dXM+IHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRQYXJzZWREYXRhKF9kYXRhKVxuICAgIGlmICh0aGlzLnBhcnRzLmhhcyhkYXRhKSkge1xuICAgICAgcmV0dXJuIElBQ0hhbmRsZXJTdGF0dXMuUEFSVElBTFxuICAgIH1cbiAgICB0aGlzLnBhcnRzLmFkZChkYXRhKVxuICAgIGNvbnN0IGNhbkhhbmRsZSA9IGF3YWl0IHRoaXMuY2FuSGFuZGxlKGRhdGEpXG4gICAgaWYgKCFjYW5IYW5kbGUpIHtcbiAgICAgIHJldHVybiBJQUNIYW5kbGVyU3RhdHVzLlVOU1VQUE9SVEVEXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcyA9IHRoaXMuZGVjb2Rlci5yZWNlaXZlUGFydChkYXRhKVxuICAgICAgaWYgKCFyZXMpIHtcbiAgICAgICAgLy8gSWYgd2UgYWxyZWFkeSBoYXZlIHByb2dyZXNzLCBidXQgdGhlIHNjYW5uZXIgc2NhbnMgYSBcIm5ldyBzZXQgb2YgUVJzXCIsIGl0IHNob3VsZCByZXNldCBpdHNlbGYgYW5kIGhhbmRsZSB0aGUgcGFydC5cbiAgICAgICAgdGhpcy5yZXNldCgpXG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVjZWl2ZShfZGF0YSlcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gSUFDSGFuZGxlclN0YXR1cy5VTlNVUFBPUlRFRFxuICAgIH1cblxuICAgIGlmICh0aGlzLmRlY29kZXIuaXNDb21wbGV0ZSgpICYmIHRoaXMuZGVjb2Rlci5pc1N1Y2Nlc3MoKSkge1xuICAgICAgcmV0dXJuIElBQ0hhbmRsZXJTdGF0dXMuU1VDQ0VTU1xuICAgIH1cblxuICAgIHJldHVybiBJQUNIYW5kbGVyU3RhdHVzLlBBUlRJQUxcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVDb21wbGV0ZSgpOiBQcm9taXNlPElBQ01lc3NhZ2VXcmFwcGVyPElBQ01lc3NhZ2VEZWZpbml0aW9uT2JqZWN0VjNbXT4+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmdldFJlc3VsdCgpXG4gICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGF0YSBub3QgY29tcGxldGUhJylcbiAgICB9XG4gICAgdGhpcy5jYWxsYmFjayhyZXN1bHQpXG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHJvZ3Jlc3MoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMuZGVjb2Rlci5lc3RpbWF0ZWRQZXJjZW50Q29tcGxldGUoKS50b0ZpeGVkKDIpKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFJlc3VsdCgpOiBQcm9taXNlPElBQ01lc3NhZ2VXcmFwcGVyPElBQ01lc3NhZ2VEZWZpbml0aW9uT2JqZWN0VjNbXT4gfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAodGhpcy5yZXN1bHRDYWNoZSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVzdWx0Q2FjaGVcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kZWNvZGVyLmlzQ29tcGxldGUoKSAmJiB0aGlzLmRlY29kZXIuaXNTdWNjZXNzKCkpIHtcbiAgICAgIGNvbnN0IGRlY29kZWQgPSB0aGlzLmRlY29kZXIucmVzdWx0VVIoKVxuICAgICAgdGhpcy5jb21iaW5lZERhdGEgPSBkZWNvZGVkLmRlY29kZUNCT1IoKVxuXG4gICAgICBpZiAoZGVjb2RlZC50eXBlID09PSAnY3J5cHRvLXBzYnQnKSB7XG4gICAgICAgIGNvbnN0IGNyeXB0b1BzYnQgPSBDcnlwdG9QU0JULmZyb21DQk9SKGRlY29kZWQuY2JvcilcbiAgICAgICAgY29uc3QgcHNidCA9IGNyeXB0b1BzYnQuZ2V0UFNCVCgpLnRvU3RyaW5nKCdoZXgnKVxuXG4gICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRQU0JUKHBzYnQpXG4gICAgICB9XG5cbiAgICAgIGlmIChkZWNvZGVkLnR5cGUgPT09ICdldGgtc2lnbi1yZXF1ZXN0Jykge1xuICAgICAgICBjb25zdCBzaWduUmVxdWVzdCA9IEV0aFNpZ25SZXF1ZXN0LmZyb21DQk9SKGRlY29kZWQuY2JvcilcblxuICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0TWV0YU1hc2tTaWduUmVxdWVzdChzaWduUmVxdWVzdClcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzdWx0VXIgPSBiczU4Y2hlY2suZW5jb2RlKHRoaXMuY29tYmluZWREYXRhKVxuXG4gICAgICByZXR1cm4geyByZXN1bHQ6IGF3YWl0IHRoaXMuc2VyaWFsaXplci5kZXNlcmlhbGl6ZShyZXN1bHRVciksIGRhdGE6IGF3YWl0IHRoaXMuZ2V0RGF0YVNpbmdsZSgpIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICAvKlxuICAgKiBJZiB3ZSBzY2FuIGFuIGFuaW1hdGVkIFFSLCBidXQgdGhlIHJlc3VsdCBpcyBub3QgYSBzZXJpYWxpemVyIG1lc3NhZ2Ugd2UgZ2V0IHRoZSByZXN1bHQgYmFja1xuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldERhdGFTaW5nbGUoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAoIXRoaXMuY29tYmluZWREYXRhKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIGNvbnN0IHVyID0gVVIuZnJvbUJ1ZmZlcih0aGlzLmNvbWJpbmVkRGF0YSlcbiAgICBjb25zdCBwYXJ0ID0gbmV3IFVSRW5jb2Rlcih1ciwgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpLm5leHRQYXJ0KClcblxuICAgIHJldHVybiBwYXJ0LnRvVXBwZXJDYXNlKClcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZXNldCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmRlY29kZXIgPSBuZXcgVVJEZWNvZGVyKClcbiAgICB0aGlzLnBhcnRzID0gbmV3IFNldCgpXG5cbiAgICByZXR1cm5cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydFBTQlQocHNidDogc3RyaW5nKTogUHJvbWlzZTxJQUNNZXNzYWdlV3JhcHBlcjxJQUNNZXNzYWdlRGVmaW5pdGlvbk9iamVjdFYzW10+PiB7XG4gICAgY29uc3QgZGVjb2RlZFBTQlQgPSBiaXRjb2luSlMuUHNidC5mcm9tSGV4KHBzYnQpXG4gICAgY29uc3QgaXNUYXByb290ID0gZGVjb2RlZFBTQlQuZGF0YS5pbnB1dHMuc29tZSgoaW5wdXQpID0+IGlucHV0LnRhcEJpcDMyRGVyaXZhdGlvbilcblxuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICB0cmFuc2FjdGlvbjogeyBwc2J0IH0sXG4gICAgICBwdWJsaWNLZXk6ICcnXG4gICAgfVxuXG4gICAgaWYgKGlzVGFwcm9vdCkge1xuICAgICAgcGF5bG9hZCBhcyBCaXRjb2luVGFwcm9vdFRyYW5zYWN0aW9uU2lnblJlcXVlc3RcbiAgICB9IGVsc2Uge1xuICAgICAgcGF5bG9hZCBhcyBCaXRjb2luU2Vnd2l0VHJhbnNhY3Rpb25TaWduUmVxdWVzdFxuICAgIH1cblxuICAgIGNvbnN0IG93blJlcXVlc3RJZDogbnVtYmVyID0gZ2VuZXJhdGVJZCg4KVxuICAgIGNvbnN0IElEcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oVEVNUF9CVENfUkVRVUVTVF9JRFMpID8/ICd7fScpXG4gICAgSURzW293blJlcXVlc3RJZF0gPSB7IHFyVHlwZTogUVJUeXBlLkJDX1VSIH1cbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShURU1QX0JUQ19SRVFVRVNUX0lEUywgSlNPTi5zdHJpbmdpZnkoSURzKSlcblxuICAgIHJldHVybiB7XG4gICAgICByZXN1bHQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiBvd25SZXF1ZXN0SWQsXG4gICAgICAgICAgcHJvdG9jb2w6IGlzVGFwcm9vdCA/IE1haW5Qcm90b2NvbFN5bWJvbHMuQlRDX1RBUFJPT1QgOiBNYWluUHJvdG9jb2xTeW1ib2xzLkJUQ19TRUdXSVQsXG4gICAgICAgICAgdHlwZTogSUFDTWVzc2FnZVR5cGUuVHJhbnNhY3Rpb25TaWduUmVxdWVzdCxcbiAgICAgICAgICBwYXlsb2FkXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBkYXRhOiBhd2FpdCB0aGlzLmdldERhdGFTaW5nbGUoKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydE1ldGFNYXNrU2lnblJlcXVlc3QocmVxdWVzdDogRXRoU2lnblJlcXVlc3QpOiBQcm9taXNlPElBQ01lc3NhZ2VXcmFwcGVyPElBQ01lc3NhZ2VEZWZpbml0aW9uT2JqZWN0VjNbXT4+IHtcbiAgICBjb25zdCBzaWduRGF0YSA9IHJlcXVlc3QuZ2V0U2lnbkRhdGEoKVxuXG4gICAgY29uc3Qgc291cmNlRmluZ2VycHJpbnQgPSAoKHJlcXVlc3QgYXMgYW55KS5kZXJpdmF0aW9uUGF0aCBhcyBDcnlwdG9LZXlwYXRoKS5nZXRTb3VyY2VGaW5nZXJwcmludCgpLnRvU3RyaW5nKCdoZXgnKVxuXG4gICAgY29uc3Qgb3duUmVxdWVzdElkOiBudW1iZXIgPSBnZW5lcmF0ZUlkKDgpXG5cbiAgICBjb25zdCBtZXRhbWFza1JlcXVlc3RJZDogc3RyaW5nID0gcmVxdWVzdC5nZXRSZXF1ZXN0SWQoKS50b1N0cmluZygnaGV4JylcblxuICAgIC8vIFRPRE86IFRoaXMgc2hvdWxkIGJlIG1vdmVkIHRvIGEgaGlnaGVyIGxldmVsLCBwcm9iYWJseSB0aGUgXCJpYWMuc2VydmljZVwiLCBhbmQgcHJvcGVybHkgc3RvcmUgY29udGV4dCBmb3IgYW55IGtpbmQgb2YgcmVxdWVzdC5cbiAgICBjb25zdCBJRHMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFRFTVBfTU1fUkVRVUVTVF9JRFMpID8/ICd7fScpXG4gICAgSURzW293blJlcXVlc3RJZF0gPSBtZXRhbWFza1JlcXVlc3RJZFxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFRFTVBfTU1fUkVRVUVTVF9JRFMsIEpTT04uc3RyaW5naWZ5KElEcykpXG5cbiAgICBjb25zdCBjb250ZXh0ID0geyByZXF1ZXN0SWQ6IG1ldGFtYXNrUmVxdWVzdElkLCBkZXJpdmF0aW9uUGF0aDogcmVxdWVzdC5nZXREZXJpdmF0aW9uUGF0aCgpLCBzb3VyY2VGaW5nZXJwcmludCB9XG5cbiAgICBjb25zdCBjaGFpbklkID0gcmVxdWVzdC5nZXRDaGFpbklkKClcblxuICAgIGNvbnN0IHByb3RvY29sID1cbiAgICAgIGNoYWluSWQgPT09IDEwIC8qIE9wdGltaXNtIE1haW5uZXQgKi8gfHwgY2hhaW5JZCA9PT0gNDIwIC8qIE9wdGltaXNtIEdvZXJsaSAqL1xuICAgICAgICA/IE1haW5Qcm90b2NvbFN5bWJvbHMuT1BUSU1JU01cbiAgICAgICAgOiBNYWluUHJvdG9jb2xTeW1ib2xzLkVUSFxuXG4gICAgc3dpdGNoIChyZXF1ZXN0LmdldERhdGFUeXBlKCkpIHtcbiAgICAgIGNhc2UgRGF0YVR5cGUudHJhbnNhY3Rpb246IHtcbiAgICAgICAgLy8gTWV0YW1hc2sgdXNlcyBgVHJhbnNhY3Rpb24jZ2V0TWVzc2FnZVRvU2lnbmAgdG8gZ2V0IHRoZSB0cmFuc2FjdGlvbiBieXRlcyB3aGljaCB3aWxsIGJlIGxhdGVyIGVuY29kZWQgd2l0aCBSTFAuXG4gICAgICAgIC8vIFRoaXMgbWV0aG9kIHJldHVybnMgZGF0YSB0aGF0IGlzIGFscmVhZHkgcHJlcGFyZWQgdG8gYmUgaGFzaGVkIGFuZCBzaWduZWQsXG4gICAgICAgIC8vIGZvciBFSVAtMTU1IGNvbXBsaWFudCB0cmFuc2FjdGlvbnMgaXQgbWVhbnMgdGhlcmUncyBgY2hhaW5JZGAgcHV0IHdoZXJlIHRoZSBgdmAgY29tcG9uZW50IGlzIHVzdWFsbHkgcGxhY2VkLlxuICAgICAgICAvLyBIb3dldmVyLCB0aGUgZGF0YSBwcmVwYXJlZCBpbiB0aGF0IHdheSBpcyBub3QgbWVhbnQgdG8gYmUgdXNlZCB0byByZWNyZWF0ZSB0aGUgYFRyYW5zYWN0aW9uYCBvYmplY3QuXG4gICAgICAgIC8vIFRvIGNvbnN0cnVjdCB0aGUgYFRyYW5zYWN0aW9uYCBvYmplY3Qgb24gb3VyIHNpZGUgd2UgaGF2ZSB0byB1c2UgdGhlIHRyYW5zYWN0aW9uIGRhdGEgdG8gcmVwbGljYXRlIHRoZVxuICAgICAgICAvLyBvdXRwdXQgd2Ugd291bGQgZ2V0IHdpdGggYFRyYW5zYWN0aW9uI3NlcmlhbGl6ZWRgLiBUaGlzIG1lYW5zIHRoYXQgd2UgZmlyc3QgaGF2ZSB0byBkZWNvZGUgdGhlIGRhdGEsXG4gICAgICAgIC8vIGRyb3AgdGhlIEVJUC0xNTUgY29tcGxpYW50IHBhcnRzIGFuZCBmaW5hbGx5IGVuY29kZSB0aGUgcmVkdWNlZCBhcnJheSBvZiBieXRlcyBhZ2Fpbi5cbiAgICAgICAgY29uc3QgcmF3VHggPSBybHAuZGVjb2RlKHNpZ25EYXRhKVxuICAgICAgICBjb25zdCBbbm9uY2UsIGdhc1ByaWNlLCBnYXNMaW1pdCwgdG8sIHZhbHVlLCBkYXRhXSA9IHJhd1R4XG4gICAgICAgIGNvbnN0IHNlcmlhbGl6ZWRUeCA9IHJscC5lbmNvZGUoW1xuICAgICAgICAgIG5vbmNlLFxuICAgICAgICAgIGdhc1ByaWNlLFxuICAgICAgICAgIGdhc0xpbWl0LFxuICAgICAgICAgIHRvLFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgQnVmZmVyLmZyb20oW10pIC8qIHYgKi8sXG4gICAgICAgICAgQnVmZmVyLmZyb20oW10pIC8qIHIgKi8sXG4gICAgICAgICAgQnVmZmVyLmZyb20oW10pIC8qIHMgKi9cbiAgICAgICAgXSlcblxuICAgICAgICBjb25zdCBldGhUeCA9IFRyYW5zYWN0aW9uRmFjdG9yeS5mcm9tU2VyaWFsaXplZERhdGEoQnVmZmVyLmZyb20oc2VyaWFsaXplZFR4KSlcbiAgICAgICAgY29uc3QgdHg6IFRyYW5zYWN0aW9uID0gZXRoVHggYXMgVHJhbnNhY3Rpb25cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc3VsdDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogb3duUmVxdWVzdElkLFxuICAgICAgICAgICAgICBwcm90b2NvbCxcbiAgICAgICAgICAgICAgdHlwZTogSUFDTWVzc2FnZVR5cGUuVHJhbnNhY3Rpb25TaWduUmVxdWVzdCxcbiAgICAgICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uOiB7XG4gICAgICAgICAgICAgICAgICBub25jZTogYDB4JHt0eC5ub25jZS50b1N0cmluZygxNil9YCxcbiAgICAgICAgICAgICAgICAgIGdhc1ByaWNlOiBgMHgke3R4Lmdhc1ByaWNlLnRvU3RyaW5nKDE2KX1gLFxuICAgICAgICAgICAgICAgICAgZ2FzTGltaXQ6IGAweCR7dHguZ2FzTGltaXQudG9TdHJpbmcoMTYpfWAsXG4gICAgICAgICAgICAgICAgICB0bzogdHgudG8udG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBgMHgke3R4LnZhbHVlLnRvU3RyaW5nKDE2KX1gLFxuICAgICAgICAgICAgICAgICAgY2hhaW5JZDogcmVxdWVzdC5nZXRDaGFpbklkKCksXG4gICAgICAgICAgICAgICAgICBkYXRhOiBgMHgke3R4LmRhdGEudG9TdHJpbmcoJ2hleCcpfWBcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHB1YmxpY0tleTogJydcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgZGF0YTogYXdhaXQgdGhpcy5nZXREYXRhU2luZ2xlKCksXG4gICAgICAgICAgY29udGV4dFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNhc2UgRGF0YVR5cGUudHlwZWREYXRhOlxuICAgICAgICBjb25zdCB0eXBlZERhdGFTaWduUmVxdWVzdDogTWVzc2FnZVNpZ25SZXF1ZXN0ID0ge1xuICAgICAgICAgIG1lc3NhZ2U6IHNpZ25EYXRhLnRvU3RyaW5nKCksXG4gICAgICAgICAgcHVibGljS2V5OiAnJ1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXN1bHQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6IG93blJlcXVlc3RJZCxcbiAgICAgICAgICAgICAgcHJvdG9jb2wsXG4gICAgICAgICAgICAgIHR5cGU6IElBQ01lc3NhZ2VUeXBlLk1lc3NhZ2VTaWduUmVxdWVzdCxcbiAgICAgICAgICAgICAgcGF5bG9hZDogdHlwZWREYXRhU2lnblJlcXVlc3RcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIGRhdGE6IGF3YWl0IHRoaXMuZ2V0RGF0YVNpbmdsZSgpLFxuICAgICAgICAgIGNvbnRleHRcbiAgICAgICAgfVxuICAgICAgY2FzZSBEYXRhVHlwZS5wZXJzb25hbE1lc3NhZ2U6XG4gICAgICAgIGNvbnN0IHNpZ25SZXF1ZXN0OiBNZXNzYWdlU2lnblJlcXVlc3QgPSB7XG4gICAgICAgICAgbWVzc2FnZTogYDB4JHtzaWduRGF0YS50b1N0cmluZygnaGV4Jyl9YCxcbiAgICAgICAgICBwdWJsaWNLZXk6ICcnXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc3VsdDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogb3duUmVxdWVzdElkLFxuICAgICAgICAgICAgICBwcm90b2NvbCxcbiAgICAgICAgICAgICAgdHlwZTogSUFDTWVzc2FnZVR5cGUuTWVzc2FnZVNpZ25SZXF1ZXN0LFxuICAgICAgICAgICAgICBwYXlsb2FkOiBzaWduUmVxdWVzdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgZGF0YTogYXdhaXQgdGhpcy5nZXREYXRhU2luZ2xlKCksXG4gICAgICAgICAgY29udGV4dFxuICAgICAgICB9XG5cbiAgICAgIGNhc2UgRGF0YVR5cGUudHlwZWRUcmFuc2FjdGlvbjoge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc3VsdDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogb3duUmVxdWVzdElkLFxuICAgICAgICAgICAgICBwcm90b2NvbCxcbiAgICAgICAgICAgICAgdHlwZTogSUFDTWVzc2FnZVR5cGUuVHJhbnNhY3Rpb25TaWduUmVxdWVzdCxcbiAgICAgICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uOiB7XG4gICAgICAgICAgICAgICAgICBzZXJpYWxpemVkOiBzaWduRGF0YS50b1N0cmluZygnaGV4JyksXG4gICAgICAgICAgICAgICAgICBkZXJpdmF0aW9uUGF0aDogcmVxdWVzdC5nZXREZXJpdmF0aW9uUGF0aCgpLFxuICAgICAgICAgICAgICAgICAgbWFzdGVyRmluZ2VycHJpbnQ6IHNvdXJjZUZpbmdlcnByaW50XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwdWJsaWNLZXk6ICcnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIGRhdGE6IGF3YWl0IHRoaXMuZ2V0RGF0YVNpbmdsZSgpLFxuICAgICAgICAgIGNvbnRleHRcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBoYW5kbGUgZGF0YSB0eXBlIFwiJHtyZXF1ZXN0LmdldERhdGFUeXBlKCl9XCJgKVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@ionic/angular";
|
|
4
|
+
export class QrScannerService {
|
|
5
|
+
constructor(platform) {
|
|
6
|
+
this.platform = platform;
|
|
7
|
+
/**
|
|
8
|
+
* Shows if the scanner is currently active (scanning) or not
|
|
9
|
+
*/
|
|
10
|
+
this.isActive = false;
|
|
11
|
+
this.isMobile = this.platform.is('hybrid');
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Start the QR scanner. It will make the background of the page transparent and scan until a QR is detected.
|
|
15
|
+
*
|
|
16
|
+
* @param successCallback
|
|
17
|
+
* @param errorCallback
|
|
18
|
+
*/
|
|
19
|
+
scan(successCallback, errorCallback = null) {
|
|
20
|
+
this.show();
|
|
21
|
+
const scanCallback = (scanError, text) => {
|
|
22
|
+
if (scanError) {
|
|
23
|
+
// eslint-disable-next-line no-console
|
|
24
|
+
console.error('Scanner scan error', scanError);
|
|
25
|
+
if (errorCallback) {
|
|
26
|
+
// TODO: Check type
|
|
27
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
28
|
+
errorCallback(scanError);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
// eslint-disable-next-line no-console
|
|
32
|
+
console.log('Scanner scan success', text);
|
|
33
|
+
successCallback(text);
|
|
34
|
+
};
|
|
35
|
+
QRScanner.scan(scanCallback);
|
|
36
|
+
}
|
|
37
|
+
destroy() {
|
|
38
|
+
if (this.isMobile) {
|
|
39
|
+
this.isActive = false;
|
|
40
|
+
QRScanner.destroy();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
show() {
|
|
44
|
+
if (this.isMobile) {
|
|
45
|
+
if (this.isActive) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
this.isActive = true;
|
|
49
|
+
QRScanner.show();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: QrScannerService, deps: [{ token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
53
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: QrScannerService, providedIn: 'root' }); }
|
|
54
|
+
}
|
|
55
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: QrScannerService, decorators: [{
|
|
56
|
+
type: Injectable,
|
|
57
|
+
args: [{
|
|
58
|
+
providedIn: 'root'
|
|
59
|
+
}]
|
|
60
|
+
}], ctorParameters: () => [{ type: i1.Platform }] });
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXItc2Nhbm5lci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9xci1zY2FubmVyL3FyLXNjYW5uZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBOzs7QUFPMUMsTUFBTSxPQUFPLGdCQUFnQjtJQVEzQixZQUE2QixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBUC9DOztXQUVHO1FBQ0ksYUFBUSxHQUFZLEtBQUssQ0FBQTtRQUs5QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzVDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLElBQUksQ0FBQyxlQUF1QyxFQUFFLGdCQUFpRCxJQUFJO1FBQ3hHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUNYLE1BQU0sWUFBWSxHQUFHLENBQUMsU0FBZ0IsRUFBRSxJQUFZLEVBQUUsRUFBRTtZQUN0RCxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLHNDQUFzQztnQkFDdEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxTQUFTLENBQUMsQ0FBQTtnQkFDOUMsSUFBSSxhQUFhLEVBQUUsQ0FBQztvQkFDbEIsbUJBQW1CO29CQUNuQiw4REFBOEQ7b0JBQzlELGFBQWEsQ0FBQyxTQUFnQixDQUFDLENBQUE7Z0JBQ2pDLENBQUM7WUFDSCxDQUFDO1lBRUQsc0NBQXNDO1lBQ3RDLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDekMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3ZCLENBQUMsQ0FBQTtRQUVELFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDOUIsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQTtZQUNyQixTQUFTLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDckIsQ0FBQztJQUNILENBQUM7SUFFTyxJQUFJO1FBQ1YsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLE9BQU07WUFDUixDQUFDO1lBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUE7WUFDcEIsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ2xCLENBQUM7SUFDSCxDQUFDOytHQXREVSxnQkFBZ0I7bUhBQWhCLGdCQUFnQixjQUZmLE1BQU07OzRGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInXG5cbmRlY2xhcmUgbGV0IFFSU2Nhbm5lcjogYW55XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBRclNjYW5uZXJTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIFNob3dzIGlmIHRoZSBzY2FubmVyIGlzIGN1cnJlbnRseSBhY3RpdmUgKHNjYW5uaW5nKSBvciBub3RcbiAgICovXG4gIHB1YmxpYyBpc0FjdGl2ZTogYm9vbGVhbiA9IGZhbHNlXG5cbiAgcHJpdmF0ZSByZWFkb25seSBpc01vYmlsZTogYm9vbGVhblxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm06IFBsYXRmb3JtKSB7XG4gICAgdGhpcy5pc01vYmlsZSA9IHRoaXMucGxhdGZvcm0uaXMoJ2h5YnJpZCcpXG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgdGhlIFFSIHNjYW5uZXIuIEl0IHdpbGwgbWFrZSB0aGUgYmFja2dyb3VuZCBvZiB0aGUgcGFnZSB0cmFuc3BhcmVudCBhbmQgc2NhbiB1bnRpbCBhIFFSIGlzIGRldGVjdGVkLlxuICAgKlxuICAgKiBAcGFyYW0gc3VjY2Vzc0NhbGxiYWNrXG4gICAqIEBwYXJhbSBlcnJvckNhbGxiYWNrXG4gICAqL1xuICBwdWJsaWMgc2NhbihzdWNjZXNzQ2FsbGJhY2s6ICh0ZXh0OiBzdHJpbmcpID0+IHZvaWQsIGVycm9yQ2FsbGJhY2s6ICgodGV4dDogc3RyaW5nKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5zaG93KClcbiAgICBjb25zdCBzY2FuQ2FsbGJhY2sgPSAoc2NhbkVycm9yOiBFcnJvciwgdGV4dDogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoc2NhbkVycm9yKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1NjYW5uZXIgc2NhbiBlcnJvcicsIHNjYW5FcnJvcilcbiAgICAgICAgaWYgKGVycm9yQ2FsbGJhY2spIHtcbiAgICAgICAgICAvLyBUT0RPOiBDaGVjayB0eXBlXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICBlcnJvckNhbGxiYWNrKHNjYW5FcnJvciBhcyBhbnkpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUubG9nKCdTY2FubmVyIHNjYW4gc3VjY2VzcycsIHRleHQpXG4gICAgICBzdWNjZXNzQ2FsbGJhY2sodGV4dClcbiAgICB9XG5cbiAgICBRUlNjYW5uZXIuc2NhbihzY2FuQ2FsbGJhY2spXG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc01vYmlsZSkge1xuICAgICAgdGhpcy5pc0FjdGl2ZSA9IGZhbHNlXG4gICAgICBRUlNjYW5uZXIuZGVzdHJveSgpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG93KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzTW9iaWxlKSB7XG4gICAgICBpZiAodGhpcy5pc0FjdGl2ZSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHRoaXMuaXNBY3RpdmUgPSB0cnVlXG4gICAgICBRUlNjYW5uZXIuc2hvdygpXG4gICAgfVxuICB9XG59XG4iXX0=
|