@ledgerhq/device-signer-kit-ethereum 0.0.0-try-to-fix-20250429171448 → 0.0.0-verify-safe-address-20251016105127
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 +112 -1
- package/lib/cjs/api/SignerEth.js +1 -1
- package/lib/cjs/api/SignerEth.js.map +1 -1
- package/lib/cjs/api/SignerEthBuilder.test.js +1 -1
- package/lib/cjs/api/SignerEthBuilder.test.js.map +2 -2
- package/lib/cjs/api/app-binder/SignDelegationAuthorizationTypes.js +2 -0
- package/lib/cjs/api/app-binder/SignDelegationAuthorizationTypes.js.map +7 -0
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
- package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js.map +2 -2
- package/lib/cjs/api/app-binder/VerifySafeAddressDeviceActionTypes.js +2 -0
- package/lib/cjs/api/app-binder/VerifySafeAddressDeviceActionTypes.js.map +7 -0
- package/lib/cjs/api/index.js +1 -1
- package/lib/cjs/api/index.js.map +3 -3
- package/lib/cjs/api/model/AddressOptions.js +1 -1
- package/lib/cjs/api/model/AddressOptions.js.map +1 -1
- package/lib/cjs/api/model/ClearSigningType.js +2 -0
- package/lib/cjs/api/model/ClearSigningType.js.map +7 -0
- package/lib/cjs/api/model/MessageOptions.js +2 -0
- package/lib/cjs/api/model/MessageOptions.js.map +7 -0
- package/lib/cjs/api/model/SafeAddressOptions.js +2 -0
- package/lib/cjs/api/model/SafeAddressOptions.js.map +7 -0
- package/lib/cjs/api/model/TransactionOptions.js +1 -1
- package/lib/cjs/api/model/TransactionOptions.js.map +1 -1
- package/lib/cjs/api/model/TypedDataOptions.js +2 -0
- package/lib/cjs/api/model/TypedDataOptions.js.map +7 -0
- package/lib/cjs/internal/DefaultSignerEth.js +1 -1
- package/lib/cjs/internal/DefaultSignerEth.js.map +3 -3
- package/lib/cjs/internal/DefaultSignerEth.test.js +1 -1
- package/lib/cjs/internal/DefaultSignerEth.test.js.map +3 -3
- package/lib/cjs/internal/address/di/addressModule.js +1 -1
- package/lib/cjs/internal/address/di/addressModule.js.map +3 -3
- package/lib/cjs/internal/address/di/addressModule.test.js +1 -1
- package/lib/cjs/internal/address/di/addressModule.test.js.map +2 -2
- package/lib/cjs/internal/address/use-case/GetAddressUseCase.js +1 -1
- package/lib/cjs/internal/address/use-case/GetAddressUseCase.js.map +2 -2
- package/lib/cjs/internal/address/use-case/GetAddressUseCase.test.js +1 -1
- package/lib/cjs/internal/address/use-case/GetAddressUseCase.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/EthAppBinder.js +1 -1
- package/lib/cjs/internal/app-binder/EthAppBinder.js.map +3 -3
- package/lib/cjs/internal/app-binder/EthAppBinder.test.js +1 -1
- package/lib/cjs/internal/app-binder/EthAppBinder.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js.map +7 -0
- package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js.map +7 -0
- package/lib/cjs/internal/app-binder/di/appBinderModule.js +1 -1
- package/lib/cjs/internal/app-binder/di/appBinderModule.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/BuildBaseContexts.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildBaseContexts.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildBaseContexts.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildBaseContexts.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ParseTransactionTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/ParseTransactionTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ParseTransactionTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/ParseTransactionTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ProvideContextTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/ProvideContextTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ProvideContextTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/ProvideContextTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/SignTypedDataLegacyTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/SignTypedDataLegacyTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/SignTypedDataLegacyTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/SignTypedDataLegacyTask.test.js.map +7 -0
- package/lib/cjs/internal/di.js +1 -1
- package/lib/cjs/internal/di.js.map +3 -3
- package/lib/cjs/internal/eip7702/di/eip7702Module.js +2 -0
- package/lib/cjs/internal/eip7702/di/eip7702Module.js.map +7 -0
- package/lib/cjs/internal/eip7702/di/eip7702Module.test.js +2 -0
- package/lib/cjs/internal/eip7702/di/eip7702Module.test.js.map +7 -0
- package/lib/cjs/internal/eip7702/di/eip7702Types.js +2 -0
- package/lib/cjs/internal/eip7702/di/eip7702Types.js.map +7 -0
- package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js +2 -0
- package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js.map +7 -0
- package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js +2 -0
- package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js.map +7 -0
- package/lib/cjs/internal/message/di/messageModule.js +1 -1
- package/lib/cjs/internal/message/di/messageModule.js.map +3 -3
- package/lib/cjs/internal/message/di/messageModule.test.js +1 -1
- package/lib/cjs/internal/message/di/messageModule.test.js.map +2 -2
- package/lib/cjs/internal/message/use-case/SignMessageUseCase.js +1 -1
- package/lib/cjs/internal/message/use-case/SignMessageUseCase.js.map +3 -3
- package/lib/cjs/internal/message/use-case/SignMessageUseCase.test.js +1 -1
- package/lib/cjs/internal/message/use-case/SignMessageUseCase.test.js.map +2 -2
- package/lib/cjs/internal/safe/di/safeModule.js +2 -0
- package/lib/cjs/internal/safe/di/safeModule.js.map +7 -0
- package/lib/cjs/internal/safe/di/safeModule.test.js +2 -0
- package/lib/cjs/internal/safe/di/safeModule.test.js.map +7 -0
- package/lib/cjs/internal/safe/di/safeTypes.js +2 -0
- package/lib/cjs/internal/safe/di/safeTypes.js.map +7 -0
- package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.js +2 -0
- package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.js.map +7 -0
- package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.test.js +2 -0
- package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.test.js.map +7 -0
- package/lib/cjs/internal/shared/utils/ApplicationChecker.js +1 -1
- package/lib/cjs/internal/shared/utils/ApplicationChecker.js.map +3 -3
- package/lib/cjs/internal/shared/utils/ApplicationChecker.test.js +1 -1
- package/lib/cjs/internal/shared/utils/ApplicationChecker.test.js.map +2 -2
- package/lib/cjs/internal/transaction/di/transactionModule.js +1 -1
- package/lib/cjs/internal/transaction/di/transactionModule.js.map +3 -3
- package/lib/cjs/internal/transaction/di/transactionModule.test.js +1 -1
- package/lib/cjs/internal/transaction/di/transactionModule.test.js.map +2 -2
- package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.js +2 -0
- package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.js.map +7 -0
- package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.test.js +2 -0
- package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.test.js.map +7 -0
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.js +1 -1
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.js.map +3 -3
- package/lib/cjs/internal/transaction/service/parser/TransactionParserService.js +1 -1
- package/lib/cjs/internal/transaction/service/parser/TransactionParserService.js.map +3 -3
- package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
- package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js.map +3 -3
- package/lib/cjs/internal/typed-data/di/typedDataModule.js +1 -1
- package/lib/cjs/internal/typed-data/di/typedDataModule.js.map +3 -3
- package/lib/cjs/internal/typed-data/di/typedDataModule.test.js +1 -1
- package/lib/cjs/internal/typed-data/di/typedDataModule.test.js.map +2 -2
- package/lib/cjs/internal/typed-data/service/DefaultTypedDataParserService.js +1 -1
- package/lib/cjs/internal/typed-data/service/DefaultTypedDataParserService.js.map +2 -2
- package/lib/cjs/internal/typed-data/service/TypedDataParser.js +1 -1
- package/lib/cjs/internal/typed-data/service/TypedDataParser.js.map +3 -3
- package/lib/cjs/internal/typed-data/service/TypedDataParser.test.js +1 -1
- package/lib/cjs/internal/typed-data/service/TypedDataParser.test.js.map +2 -2
- package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.js +1 -1
- package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.js.map +3 -3
- package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.test.js +1 -1
- package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.test.js.map +2 -2
- package/lib/cjs/package.json +13 -14
- package/lib/esm/api/SignerEthBuilder.test.js +1 -1
- package/lib/esm/api/SignerEthBuilder.test.js.map +2 -2
- package/lib/esm/api/app-binder/SignDelegationAuthorizationTypes.js +1 -0
- package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
- package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
- package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
- package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js.map +2 -2
- package/lib/esm/api/app-binder/VerifySafeAddressDeviceActionTypes.js +2 -0
- package/lib/esm/api/app-binder/VerifySafeAddressDeviceActionTypes.js.map +7 -0
- package/lib/esm/api/index.js +1 -1
- package/lib/esm/api/index.js.map +2 -2
- package/lib/esm/api/model/ClearSigningType.js +2 -0
- package/lib/esm/api/model/ClearSigningType.js.map +7 -0
- package/lib/esm/api/model/MessageOptions.js +1 -0
- package/lib/esm/api/model/MessageOptions.js.map +7 -0
- package/lib/esm/api/model/SafeAddressOptions.js +1 -0
- package/lib/esm/api/model/SafeAddressOptions.js.map +7 -0
- package/lib/esm/api/model/TypedDataOptions.js +1 -0
- package/lib/esm/api/model/TypedDataOptions.js.map +7 -0
- package/lib/esm/internal/DefaultSignerEth.js +1 -1
- package/lib/esm/internal/DefaultSignerEth.js.map +3 -3
- package/lib/esm/internal/DefaultSignerEth.test.js +1 -1
- package/lib/esm/internal/DefaultSignerEth.test.js.map +3 -3
- package/lib/esm/internal/address/di/addressModule.js +1 -1
- package/lib/esm/internal/address/di/addressModule.js.map +3 -3
- package/lib/esm/internal/address/di/addressModule.test.js +1 -1
- package/lib/esm/internal/address/di/addressModule.test.js.map +2 -2
- package/lib/esm/internal/address/use-case/GetAddressUseCase.js +1 -1
- package/lib/esm/internal/address/use-case/GetAddressUseCase.js.map +2 -2
- package/lib/esm/internal/address/use-case/GetAddressUseCase.test.js +1 -1
- package/lib/esm/internal/address/use-case/GetAddressUseCase.test.js.map +2 -2
- package/lib/esm/internal/app-binder/EthAppBinder.js +1 -1
- package/lib/esm/internal/app-binder/EthAppBinder.js.map +3 -3
- package/lib/esm/internal/app-binder/EthAppBinder.test.js +1 -1
- package/lib/esm/internal/app-binder/EthAppBinder.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js +2 -0
- package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js.map +7 -0
- package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js +2 -0
- package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js.map +7 -0
- package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
- package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js +2 -0
- package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js.map +7 -0
- package/lib/esm/internal/app-binder/di/appBinderModule.js +1 -1
- package/lib/esm/internal/app-binder/di/appBinderModule.js.map +3 -3
- package/lib/esm/internal/app-binder/task/BuildBaseContexts.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildBaseContexts.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildBaseContexts.test.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildBaseContexts.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/BuildFullContextsTask.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildFullContextsTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildFullContextsTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildFullContextsTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js +1 -1
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.js +2 -0
- package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ParseTransactionTask.js +2 -0
- package/lib/esm/internal/app-binder/task/ParseTransactionTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ParseTransactionTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/ParseTransactionTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ProvideContextTask.js +2 -0
- package/lib/esm/internal/app-binder/task/ProvideContextTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ProvideContextTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/ProvideContextTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.js +2 -0
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.js +1 -1
- package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.js +2 -0
- package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/SendSignTransactionTask.js +1 -1
- package/lib/esm/internal/app-binder/task/SendSignTransactionTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/SendSignTransactionTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/SendSignTransactionTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/SignTypedDataLegacyTask.js +2 -0
- package/lib/esm/internal/app-binder/task/SignTypedDataLegacyTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/SignTypedDataLegacyTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/SignTypedDataLegacyTask.test.js.map +7 -0
- package/lib/esm/internal/di.js +1 -1
- package/lib/esm/internal/di.js.map +3 -3
- package/lib/esm/internal/eip7702/di/eip7702Module.js +2 -0
- package/lib/esm/internal/eip7702/di/eip7702Module.js.map +7 -0
- package/lib/esm/internal/eip7702/di/eip7702Module.test.js +2 -0
- package/lib/esm/internal/eip7702/di/eip7702Module.test.js.map +7 -0
- package/lib/esm/internal/eip7702/di/eip7702Types.js +2 -0
- package/lib/esm/internal/eip7702/di/eip7702Types.js.map +7 -0
- package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js +2 -0
- package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js.map +7 -0
- package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js +2 -0
- package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js.map +7 -0
- package/lib/esm/internal/message/di/messageModule.js +1 -1
- package/lib/esm/internal/message/di/messageModule.js.map +3 -3
- package/lib/esm/internal/message/di/messageModule.test.js +1 -1
- package/lib/esm/internal/message/di/messageModule.test.js.map +2 -2
- package/lib/esm/internal/message/use-case/SignMessageUseCase.js +1 -1
- package/lib/esm/internal/message/use-case/SignMessageUseCase.js.map +3 -3
- package/lib/esm/internal/message/use-case/SignMessageUseCase.test.js +1 -1
- package/lib/esm/internal/message/use-case/SignMessageUseCase.test.js.map +2 -2
- package/lib/esm/internal/safe/di/safeModule.js +2 -0
- package/lib/esm/internal/safe/di/safeModule.js.map +7 -0
- package/lib/esm/internal/safe/di/safeModule.test.js +2 -0
- package/lib/esm/internal/safe/di/safeModule.test.js.map +7 -0
- package/lib/esm/internal/safe/di/safeTypes.js +2 -0
- package/lib/esm/internal/safe/di/safeTypes.js.map +7 -0
- package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.js +2 -0
- package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.js.map +7 -0
- package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.test.js +2 -0
- package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.test.js.map +7 -0
- package/lib/esm/internal/shared/utils/ApplicationChecker.js +1 -1
- package/lib/esm/internal/shared/utils/ApplicationChecker.js.map +3 -3
- package/lib/esm/internal/shared/utils/ApplicationChecker.test.js +1 -1
- package/lib/esm/internal/shared/utils/ApplicationChecker.test.js.map +2 -2
- package/lib/esm/internal/transaction/di/transactionModule.js +1 -1
- package/lib/esm/internal/transaction/di/transactionModule.js.map +3 -3
- package/lib/esm/internal/transaction/di/transactionModule.test.js +1 -1
- package/lib/esm/internal/transaction/di/transactionModule.test.js.map +2 -2
- package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.js +2 -0
- package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.js.map +7 -0
- package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.test.js +2 -0
- package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.test.js.map +7 -0
- package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.js +0 -1
- package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.js.map +4 -4
- package/lib/esm/internal/transaction/service/parser/TransactionParserService.js +1 -1
- package/lib/esm/internal/transaction/service/parser/TransactionParserService.js.map +3 -3
- package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
- package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js.map +3 -3
- package/lib/esm/internal/typed-data/di/typedDataModule.js +1 -1
- package/lib/esm/internal/typed-data/di/typedDataModule.js.map +3 -3
- package/lib/esm/internal/typed-data/di/typedDataModule.test.js +1 -1
- package/lib/esm/internal/typed-data/di/typedDataModule.test.js.map +2 -2
- package/lib/esm/internal/typed-data/service/DefaultTypedDataParserService.js +1 -1
- package/lib/esm/internal/typed-data/service/DefaultTypedDataParserService.js.map +2 -2
- package/lib/esm/internal/typed-data/service/TypedDataParser.js +1 -1
- package/lib/esm/internal/typed-data/service/TypedDataParser.js.map +3 -3
- package/lib/esm/internal/typed-data/service/TypedDataParser.test.js +1 -1
- package/lib/esm/internal/typed-data/service/TypedDataParser.test.js.map +2 -2
- package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.js +1 -1
- package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.js.map +3 -3
- package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.test.js +1 -1
- package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.test.js.map +2 -2
- package/lib/esm/package.json +13 -14
- package/lib/types/api/SignerEth.d.ts +11 -4
- package/lib/types/api/SignerEth.d.ts.map +1 -1
- package/lib/types/api/app-binder/SignDelegationAuthorizationTypes.d.ts +19 -0
- package/lib/types/api/app-binder/SignDelegationAuthorizationTypes.d.ts.map +1 -0
- package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +17 -12
- package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts +11 -1
- package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/app-binder/VerifySafeAddressDeviceActionTypes.d.ts +30 -0
- package/lib/types/api/app-binder/VerifySafeAddressDeviceActionTypes.d.ts.map +1 -0
- package/lib/types/api/index.d.ts +5 -4
- package/lib/types/api/index.d.ts.map +1 -1
- package/lib/types/api/model/AddressOptions.d.ts +1 -0
- package/lib/types/api/model/AddressOptions.d.ts.map +1 -1
- package/lib/types/api/model/ClearSigningType.d.ts +5 -0
- package/lib/types/api/model/ClearSigningType.d.ts.map +1 -0
- package/lib/types/api/model/MessageOptions.d.ts +4 -0
- package/lib/types/api/model/MessageOptions.d.ts.map +1 -0
- package/lib/types/api/model/SafeAddressOptions.d.ts +5 -0
- package/lib/types/api/model/SafeAddressOptions.d.ts.map +1 -0
- package/lib/types/api/model/TransactionOptions.d.ts +1 -0
- package/lib/types/api/model/TransactionOptions.d.ts.map +1 -1
- package/lib/types/api/model/TypedDataOptions.d.ts +4 -0
- package/lib/types/api/model/TypedDataOptions.d.ts.map +1 -0
- package/lib/types/internal/DefaultSignerEth.d.ts +10 -3
- package/lib/types/internal/DefaultSignerEth.d.ts.map +1 -1
- package/lib/types/internal/address/di/addressModule.d.ts.map +1 -1
- package/lib/types/internal/address/use-case/GetAddressUseCase.d.ts.map +1 -1
- package/lib/types/internal/app-binder/EthAppBinder.d.ts +19 -3
- package/lib/types/internal/app-binder/EthAppBinder.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.d.ts +28 -0
- package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.d.ts +20 -0
- package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.d.ts +34 -0
- package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts +29 -1
- package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.d.ts +29 -0
- package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/utils/ethAppErrors.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts +15 -36
- package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts +5 -2
- package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.d.ts +20 -0
- package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.d.ts.map +1 -0
- package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.d.ts +2 -0
- package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.d.ts +6 -0
- package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.d.ts.map +1 -0
- package/lib/types/internal/app-binder/di/appBinderModule.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/BuildBaseContexts.d.ts +51 -0
- package/lib/types/internal/app-binder/task/BuildBaseContexts.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildBaseContexts.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/BuildBaseContexts.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts +8 -1
- package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/BuildFullContextsTask.d.ts +39 -0
- package/lib/types/internal/app-binder/task/BuildFullContextsTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildFullContextsTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/BuildFullContextsTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.d.ts +19 -0
- package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildSubcontextsTask.d.ts +28 -0
- package/lib/types/internal/app-binder/task/BuildSubcontextsTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildSubcontextsTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/BuildSubcontextsTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts +2 -3
- package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.d.ts +21 -0
- package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ParseTransactionTask.d.ts +17 -0
- package/lib/types/internal/app-binder/task/ParseTransactionTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ParseTransactionTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/ParseTransactionTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ProvideContextTask.d.ts +22 -0
- package/lib/types/internal/app-binder/task/ProvideContextTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ProvideContextTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/ProvideContextTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts +14 -5
- package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.d.ts +36 -0
- package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/SendPayloadInChunksTask.d.ts +2 -2
- package/lib/types/internal/app-binder/task/SendPayloadInChunksTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.d.ts +18 -0
- package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/SendSignTransactionTask.d.ts +2 -1
- package/lib/types/internal/app-binder/task/SendSignTransactionTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/SignTypedDataLegacyTask.d.ts +12 -0
- package/lib/types/internal/app-binder/task/SignTypedDataLegacyTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/SignTypedDataLegacyTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/SignTypedDataLegacyTask.test.d.ts.map +1 -0
- package/lib/types/internal/di.d.ts.map +1 -1
- package/lib/types/internal/eip7702/di/eip7702Module.d.ts +3 -0
- package/lib/types/internal/eip7702/di/eip7702Module.d.ts.map +1 -0
- package/lib/types/internal/eip7702/di/eip7702Module.test.d.ts +2 -0
- package/lib/types/internal/eip7702/di/eip7702Module.test.d.ts.map +1 -0
- package/lib/types/internal/eip7702/di/eip7702Types.d.ts +4 -0
- package/lib/types/internal/eip7702/di/eip7702Types.d.ts.map +1 -0
- package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.d.ts +8 -0
- package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.d.ts.map +1 -0
- package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.d.ts +2 -0
- package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.d.ts.map +1 -0
- package/lib/types/internal/message/di/messageModule.d.ts.map +1 -1
- package/lib/types/internal/message/use-case/SignMessageUseCase.d.ts +2 -1
- package/lib/types/internal/message/use-case/SignMessageUseCase.d.ts.map +1 -1
- package/lib/types/internal/safe/di/safeModule.d.ts +3 -0
- package/lib/types/internal/safe/di/safeModule.d.ts.map +1 -0
- package/lib/types/internal/safe/di/safeModule.test.d.ts +2 -0
- package/lib/types/internal/safe/di/safeModule.test.d.ts.map +1 -0
- package/lib/types/internal/safe/di/safeTypes.d.ts +4 -0
- package/lib/types/internal/safe/di/safeTypes.d.ts.map +1 -0
- package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.d.ts +9 -0
- package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.d.ts.map +1 -0
- package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.test.d.ts +2 -0
- package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.test.d.ts.map +1 -0
- package/lib/types/internal/shared/utils/ApplicationChecker.d.ts.map +1 -1
- package/lib/types/internal/transaction/di/transactionModule.d.ts.map +1 -1
- package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.d.ts +8 -0
- package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.d.ts.map +1 -0
- package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.test.d.ts +2 -0
- package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.test.d.ts.map +1 -0
- package/lib/types/internal/transaction/service/mapper/TransactionMapperService.d.ts +4 -7
- package/lib/types/internal/transaction/service/mapper/TransactionMapperService.d.ts.map +1 -1
- package/lib/types/internal/transaction/service/parser/TransactionParserService.d.ts +2 -2
- package/lib/types/internal/transaction/service/parser/TransactionParserService.d.ts.map +1 -1
- package/lib/types/internal/typed-data/di/typedDataModule.d.ts.map +1 -1
- package/lib/types/internal/typed-data/service/TypedDataParser.d.ts +4 -2
- package/lib/types/internal/typed-data/service/TypedDataParser.d.ts.map +1 -1
- package/lib/types/internal/typed-data/use-case/SignTypedDataUseCase.d.ts +2 -1
- package/lib/types/internal/typed-data/use-case/SignTypedDataUseCase.d.ts.map +1 -1
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +19 -20
- package/lib/cjs/internal/app-binder/constant/plugins.js +0 -2
- package/lib/cjs/internal/app-binder/constant/plugins.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js +0 -2
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js +0 -2
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js.map +0 -7
- package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.js +0 -2
- package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.js.map +0 -7
- package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js +0 -2
- package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js.map +0 -7
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapper.js +0 -2
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapper.js.map +0 -7
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.test.js +0 -2
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.test.js.map +0 -7
- package/lib/esm/internal/app-binder/constant/plugins.js +0 -2
- package/lib/esm/internal/app-binder/constant/plugins.js.map +0 -7
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js +0 -2
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js.map +0 -7
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js +0 -2
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js.map +0 -7
- package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.js +0 -2
- package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.js.map +0 -7
- package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js +0 -2
- package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js.map +0 -7
- package/lib/esm/internal/transaction/service/mapper/TransactionMapper.js +0 -1
- package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.test.js +0 -2
- package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.test.js.map +0 -7
- package/lib/types/internal/app-binder/constant/plugins.d.ts +0 -2
- package/lib/types/internal/app-binder/constant/plugins.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts +0 -32
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.test.d.ts +0 -2
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.test.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts +0 -38
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.test.d.ts +0 -2
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.test.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.d.ts +0 -80
- package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.d.ts +0 -2
- package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.d.ts +0 -28
- package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.test.d.ts +0 -2
- package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.test.d.ts.map +0 -1
- package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.d.ts +0 -7
- package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.d.ts.map +0 -1
- package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.test.d.ts +0 -2
- package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.test.d.ts.map +0 -1
- package/lib/types/internal/transaction/service/mapper/TransactionMapper.d.ts +0 -6
- package/lib/types/internal/transaction/service/mapper/TransactionMapper.d.ts.map +0 -1
- package/lib/types/internal/transaction/service/mapper/TransactionMapperService.test.d.ts +0 -2
- package/lib/types/internal/transaction/service/mapper/TransactionMapperService.test.d.ts.map +0 -1
- /package/lib/esm/{internal/transaction/service/mapper/TransactionMapper.js.map → api/app-binder/SignDelegationAuthorizationTypes.js.map} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ClearSignContextType as
|
|
1
|
+
import{ClearSignContextType as c}from"@ledgerhq/context-module";import{bufferToHexaString as C,isSuccessCommandResult as d}from"@ledgerhq/device-management-kit";import{GetAddressCommand as l}from"../../app-binder/command/GetAddressCommand";class u{constructor(e,a){this.api=e;this.args=a}async run(){const e=await this.api.sendCommand(new l({derivationPath:this.args.derivationPath,checkOnDevice:!1,returnChainCode:!1}));if(!d(e))return{web3Check:null,error:e.error};const a=e.data.address,{deviceModelId:s}=this.api.getDeviceSessionState(),{contextModule:n}=this.args;let t;if(this.isRawTx(this.args)){const{subset:r,transaction:o}=this.args,i={deviceModelId:s,from:a,rawTx:C(o),chainId:r.chainId};t=await n.getWeb3Checks(i)}else{const r={deviceModelId:s,from:a,data:this.args.data};t=await n.getWeb3Checks(r)}return t===null||t?.type!==c.WEB3_CHECK?{web3Check:null}:{web3Check:t}}isRawTx(e){return"transaction"in e}}export{u as GetWeb3CheckTask};
|
|
2
2
|
//# sourceMappingURL=GetWeb3CheckTask.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/task/GetWeb3CheckTask.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type ClearSignContext,\n type ClearSignContextSuccess,\n ClearSignContextType,\n type ContextModule,\n type Web3CheckContext,\n} from \"@ledgerhq/context-module\";\nimport {\n bufferToHexaString,\n type DmkError,\n type InternalApi,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type TypedData } from \"@api/model/TypedData\";\nimport { GetAddressCommand } from \"@internal/app-binder/command/GetAddressCommand\";\
|
|
5
|
-
"mappings": "AAAA,OAGE,wBAAAA,
|
|
6
|
-
"names": ["ClearSignContextType", "bufferToHexaString", "isSuccessCommandResult", "GetAddressCommand", "GetWeb3CheckTask", "api", "args", "getAddressResult", "address", "deviceModelId", "contextModule", "web3CheckContext", "
|
|
4
|
+
"sourcesContent": ["import {\n type ClearSignContext,\n type ClearSignContextSuccess,\n ClearSignContextType,\n type ContextModule,\n type TransactionSubset,\n type Web3CheckContext,\n} from \"@ledgerhq/context-module\";\nimport {\n bufferToHexaString,\n type DmkError,\n type InternalApi,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type TypedData } from \"@api/model/TypedData\";\nimport { GetAddressCommand } from \"@internal/app-binder/command/GetAddressCommand\";\n\nexport type GetWeb3CheckTaskResult =\n | {\n readonly web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> | null;\n }\n | {\n readonly web3Check: null;\n error: DmkError;\n };\n\nexport type GetWeb3CheckTypedDataTaskArgs = {\n readonly contextModule: ContextModule;\n readonly derivationPath: string;\n readonly data: TypedData;\n};\nexport type GetWeb3CheckRawTxTaskArgs = {\n readonly contextModule: ContextModule;\n readonly derivationPath: string;\n readonly subset: TransactionSubset;\n readonly transaction: Uint8Array;\n};\nexport type GetWeb3CheckTaskArgs =\n | GetWeb3CheckTypedDataTaskArgs\n | GetWeb3CheckRawTxTaskArgs;\n\nexport class GetWeb3CheckTask {\n constructor(\n private readonly api: InternalApi,\n private readonly args: GetWeb3CheckTaskArgs,\n ) {}\n\n async run(): Promise<GetWeb3CheckTaskResult> {\n // Get sender address\n const getAddressResult = await this.api.sendCommand(\n new GetAddressCommand({\n derivationPath: this.args.derivationPath,\n checkOnDevice: false,\n returnChainCode: false,\n }),\n );\n if (!isSuccessCommandResult(getAddressResult)) {\n return {\n web3Check: null,\n error: getAddressResult.error,\n };\n }\n\n const address = getAddressResult.data.address;\n const { deviceModelId } = this.api.getDeviceSessionState();\n const { contextModule } = this.args;\n let web3CheckContext: ClearSignContext | null;\n\n if (this.isRawTx(this.args)) {\n // Transaction simulation\n const { subset, transaction } = this.args;\n const web3Params: Web3CheckContext = {\n deviceModelId,\n from: address,\n rawTx: bufferToHexaString(transaction),\n chainId: subset.chainId,\n };\n web3CheckContext = await contextModule.getWeb3Checks(web3Params);\n } else {\n // Typed data simulation\n const web3Params: Web3CheckContext = {\n deviceModelId,\n from: address,\n data: this.args.data,\n };\n web3CheckContext = await contextModule.getWeb3Checks(web3Params);\n }\n\n if (\n web3CheckContext === null ||\n web3CheckContext?.type !== ClearSignContextType.WEB3_CHECK\n ) {\n return {\n web3Check: null,\n };\n }\n\n return {\n web3Check: web3CheckContext,\n };\n }\n\n private isRawTx(\n args: GetWeb3CheckTaskArgs,\n ): args is GetWeb3CheckRawTxTaskArgs {\n return \"transaction\" in args;\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAGE,wBAAAA,MAIK,2BACP,OACE,sBAAAC,EAGA,0BAAAC,MACK,kCAGP,OAAS,qBAAAC,MAAyB,iDA0B3B,MAAMC,CAAiB,CAC5B,YACmBC,EACAC,EACjB,CAFiB,SAAAD,EACA,UAAAC,CAChB,CAEH,MAAM,KAAuC,CAE3C,MAAMC,EAAmB,MAAM,KAAK,IAAI,YACtC,IAAIJ,EAAkB,CACpB,eAAgB,KAAK,KAAK,eAC1B,cAAe,GACf,gBAAiB,EACnB,CAAC,CACH,EACA,GAAI,CAACD,EAAuBK,CAAgB,EAC1C,MAAO,CACL,UAAW,KACX,MAAOA,EAAiB,KAC1B,EAGF,MAAMC,EAAUD,EAAiB,KAAK,QAChC,CAAE,cAAAE,CAAc,EAAI,KAAK,IAAI,sBAAsB,EACnD,CAAE,cAAAC,CAAc,EAAI,KAAK,KAC/B,IAAIC,EAEJ,GAAI,KAAK,QAAQ,KAAK,IAAI,EAAG,CAE3B,KAAM,CAAE,OAAAC,EAAQ,YAAAC,CAAY,EAAI,KAAK,KAC/BC,EAA+B,CACnC,cAAAL,EACA,KAAMD,EACN,MAAOP,EAAmBY,CAAW,EACrC,QAASD,EAAO,OAClB,EACAD,EAAmB,MAAMD,EAAc,cAAcI,CAAU,CACjE,KAAO,CAEL,MAAMA,EAA+B,CACnC,cAAAL,EACA,KAAMD,EACN,KAAM,KAAK,KAAK,IAClB,EACAG,EAAmB,MAAMD,EAAc,cAAcI,CAAU,CACjE,CAEA,OACEH,IAAqB,MACrBA,GAAkB,OAASX,EAAqB,WAEzC,CACL,UAAW,IACb,EAGK,CACL,UAAWW,CACb,CACF,CAEQ,QACNL,EACmC,CACnC,MAAO,gBAAiBA,CAC1B,CACF",
|
|
6
|
+
"names": ["ClearSignContextType", "bufferToHexaString", "isSuccessCommandResult", "GetAddressCommand", "GetWeb3CheckTask", "api", "args", "getAddressResult", "address", "deviceModelId", "contextModule", "web3CheckContext", "subset", "transaction", "web3Params"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{CommandResultFactory as
|
|
1
|
+
import{CommandResultFactory as n,DeviceModelId as l,DeviceSessionStateType as i,DeviceStatus as k,InvalidStatusWordError as u}from"@ledgerhq/device-management-kit";import{makeDeviceActionInternalApiMock as m}from"../../app-binder/device-action/__test-utils__/makeInternalApi";import{GetWeb3CheckTask as a}from"../../app-binder/task/GetWeb3CheckTask";describe("GetWeb3CheckTask",()=>{const e=m(),t={getWeb3Checks:vi.fn()},d=new Uint8Array([1,2,3,4]),s="44'/60'/0'/0/0",c={chainId:15,to:"to",data:"0x060708090A",selector:"0x06070809",value:0n};describe("run",()=>{beforeEach(()=>{vi.clearAllMocks(),e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:i.ReadyWithoutSecureChannel,deviceStatus:k.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.16.0"},deviceModelId:l.FLEX,isSecureConnectionAllowed:!0})}),describe("errors",()=>{it("should return a context error if GetAddressCommand assert.fails",async()=>{e.sendCommand.mockResolvedValueOnce(n({error:new u("error")}));const o=await new a(e,{contextModule:t,subset:c,transaction:d,derivationPath:s}).run();expect(o).toEqual({web3Check:null,error:new u("error")})}),it("should return null if the type is not a ClearSignContextSuccess web3check",async()=>{e.sendCommand.mockResolvedValueOnce(n({data:{address:"address"}})),t.getWeb3Checks.mockResolvedValue({type:"invalid-type",id:1});const o=await new a(e,{contextModule:t,subset:c,transaction:d,derivationPath:s}).run();expect(o).toEqual({web3Check:null})})}),describe("success",()=>{it("should return null if the context module does not have a web3 check",async()=>{e.sendCommand.mockResolvedValueOnce(n({data:{address:"address"}})),t.getWeb3Checks.mockResolvedValue(null);const o=await new a(e,{contextModule:t,subset:c,transaction:d,derivationPath:s}).run();expect(o).toEqual({web3Check:null})}),it("should return a web3 check",async()=>{const o={type:"web3Check",id:1};e.sendCommand.mockResolvedValueOnce(n({data:{address:"address"}})),t.getWeb3Checks.mockResolvedValue(o);const r=await new a(e,{contextModule:t,subset:c,transaction:d,derivationPath:s}).run();expect(r).toEqual({web3Check:o})}),it("should return a web3 check for typed data",async()=>{const o={type:"web3Check",id:1};e.sendCommand.mockResolvedValueOnce(n({data:{address:"address"}})),t.getWeb3Checks.mockResolvedValue(o);const r=await new a(e,{contextModule:t,data:"typed data",derivationPath:s}).run();expect(r).toEqual({web3Check:o})}),it("should call the context module with the right parameters",async()=>{e.sendCommand.mockResolvedValueOnce(n({data:{address:"address"}})),t.getWeb3Checks.mockResolvedValue(null),await new a(e,{contextModule:t,subset:c,transaction:d,derivationPath:s}).run(),expect(t.getWeb3Checks).toHaveBeenCalledWith({deviceModelId:l.FLEX,from:"address",rawTx:"0x01020304",chainId:15})})})})});
|
|
2
2
|
//# sourceMappingURL=GetWeb3CheckTask.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/task/GetWeb3CheckTask.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n CommandResultFactory,\n DeviceModelId,\n DeviceSessionStateType,\n DeviceStatus,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\
|
|
5
|
-
"mappings": "AACA,OACE,wBAAAA,EACA,iBAAAC,EACA,0BAAAC,EACA,gBAAAC,EACA,0BAAAC,MACK,
|
|
6
|
-
"names": ["CommandResultFactory", "DeviceModelId", "DeviceSessionStateType", "DeviceStatus", "InvalidStatusWordError", "
|
|
4
|
+
"sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n CommandResultFactory,\n DeviceModelId,\n DeviceSessionStateType,\n DeviceStatus,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type TypedData } from \"@api/model/TypedData\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport { GetWeb3CheckTask } from \"@internal/app-binder/task/GetWeb3CheckTask\";\n\ndescribe(\"GetWeb3CheckTask\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const contextModuleMock = {\n getWeb3Checks: vi.fn(),\n };\n const transaction = new Uint8Array([0x01, 0x02, 0x03, 0x04]);\n const derivationPath = \"44'/60'/0'/0/0\";\n const defaultSubset = {\n chainId: 15,\n to: \"to\",\n data: \"0x060708090A\",\n selector: \"0x06070809\",\n value: 0n,\n };\n\n describe(\"run\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.16.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: true,\n });\n });\n\n describe(\"errors\", () => {\n it(\"should return a context error if GetAddressCommand assert.fails\", async () => {\n // GIVEN\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({ error: new InvalidStatusWordError(\"error\") }),\n );\n\n // WHEN\n const result = await new GetWeb3CheckTask(apiMock, {\n contextModule: contextModuleMock as unknown as ContextModule,\n subset: defaultSubset,\n transaction,\n derivationPath,\n }).run();\n\n // THEN\n expect(result).toEqual({\n web3Check: null,\n error: new InvalidStatusWordError(\"error\"),\n });\n });\n\n it(\"should return null if the type is not a ClearSignContextSuccess web3check\", async () => {\n // GIVEN\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({ data: { address: \"address\" } }),\n );\n contextModuleMock.getWeb3Checks.mockResolvedValue({\n type: \"invalid-type\",\n id: 1,\n });\n\n // WHEN\n const result = await new GetWeb3CheckTask(apiMock, {\n contextModule: contextModuleMock as unknown as ContextModule,\n subset: defaultSubset,\n transaction,\n derivationPath,\n }).run();\n\n // THEN\n expect(result).toEqual({\n web3Check: null,\n });\n });\n });\n\n describe(\"success\", () => {\n it(\"should return null if the context module does not have a web3 check\", async () => {\n // GIVEN\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({ data: { address: \"address\" } }),\n );\n contextModuleMock.getWeb3Checks.mockResolvedValue(null);\n\n // WHEN\n const result = await new GetWeb3CheckTask(apiMock, {\n contextModule: contextModuleMock as unknown as ContextModule,\n subset: defaultSubset,\n transaction,\n derivationPath,\n }).run();\n\n // THEN\n expect(result).toEqual({\n web3Check: null,\n });\n });\n\n it(\"should return a web3 check\", async () => {\n // GIVEN\n const web3Check = { type: \"web3Check\", id: 1 };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({ data: { address: \"address\" } }),\n );\n contextModuleMock.getWeb3Checks.mockResolvedValue(web3Check);\n\n // WHEN\n const result = await new GetWeb3CheckTask(apiMock, {\n contextModule: contextModuleMock as unknown as ContextModule,\n subset: defaultSubset,\n transaction,\n derivationPath,\n }).run();\n\n // THEN\n expect(result).toEqual({\n web3Check,\n });\n });\n\n it(\"should return a web3 check for typed data\", async () => {\n // GIVEN\n const web3Check = { type: \"web3Check\", id: 1 };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({ data: { address: \"address\" } }),\n );\n contextModuleMock.getWeb3Checks.mockResolvedValue(web3Check);\n\n // WHEN\n const result = await new GetWeb3CheckTask(apiMock, {\n contextModule: contextModuleMock as unknown as ContextModule,\n data: \"typed data\" as unknown as TypedData,\n derivationPath,\n }).run();\n\n // THEN\n expect(result).toEqual({\n web3Check,\n });\n });\n\n it(\"should call the context module with the right parameters\", async () => {\n // GIVEN\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({ data: { address: \"address\" } }),\n );\n contextModuleMock.getWeb3Checks.mockResolvedValue(null);\n\n // WHEN\n await new GetWeb3CheckTask(apiMock, {\n contextModule: contextModuleMock as unknown as ContextModule,\n subset: defaultSubset,\n transaction,\n derivationPath,\n }).run();\n\n // THEN\n expect(contextModuleMock.getWeb3Checks).toHaveBeenCalledWith({\n deviceModelId: DeviceModelId.FLEX,\n from: \"address\",\n rawTx: \"0x01020304\",\n chainId: 15,\n });\n });\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["CommandResultFactory", "DeviceModelId", "DeviceSessionStateType", "DeviceStatus", "InvalidStatusWordError", "makeDeviceActionInternalApiMock", "GetWeb3CheckTask", "apiMock", "contextModuleMock", "transaction", "derivationPath", "defaultSubset", "result", "web3Check"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{ClearSignContextReferenceType as S}from"@ledgerhq/context-module";import{bufferToHexaString as n}from"@ledgerhq/device-management-kit";const C=10;class g{constructor(a){this._args=a}run(){const{parser:a,subset:r,context:e}=this._args,c=[];if(!e.reference||e.reference.type!==S.CALLDATA||!e.reference.valuePath)throw new Error("Invalid reference for nested call data. Expected a reference with type CALLDATA and a value path.");const{valuePath:d}=e.reference,o=a.extractValue(r,d).unsafeCoerce(),l=a.extractValue(r,e.reference.callee).unsafeCoerce(),f=e.reference.selector?a.extractValue(r,e.reference.selector).orDefault([]):[],p=e.reference.chainId?a.extractValue(r,e.reference.chainId).orDefault([]):[];for(let t=0;t<o.length;t++){const s=o[t],i=p[t],u=l[t]?.slice(Math.max(0,l[t].length-20)),T=f[t],x={data:s?n(s):"0x",chainId:i?Number(i):r.chainId,to:u?n(u):r.to,selector:T?n(T):s?n(s).slice(0,C):"0x"};c.push(x)}return{subsets:c}}}export{g as ParseNestedTransactionTask};
|
|
2
|
+
//# sourceMappingURL=ParseNestedTransactionTask.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/app-binder/task/ParseNestedTransactionTask.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n ClearSignContextReferenceType,\n type ClearSignContextSuccess,\n type ClearSignContextType,\n type TransactionSubset,\n} from \"@ledgerhq/context-module\";\nimport { bufferToHexaString } from \"@ledgerhq/device-management-kit\";\n\nimport { type TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\n\nconst DEFAULT_SELECTOR_LENGTH = 10;\n\nexport type ParseNestedTransactionTaskResult = {\n readonly subsets: TransactionSubset[];\n};\n\nexport type ParseNestedTransactionTaskArgs = {\n readonly parser: TransactionParserService;\n readonly subset: TransactionSubset;\n readonly context: ClearSignContextSuccess<ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION>;\n};\n\n/**\n * This task is used to construct the nested call data subset list from the transaction subset.\n * It will extract values from the transaction subset using the value path.\n *\n */\nexport class ParseNestedTransactionTask {\n constructor(private readonly _args: ParseNestedTransactionTaskArgs) {}\n\n run(): ParseNestedTransactionTaskResult {\n const { parser, subset, context } = this._args;\n const nestedSubsets: TransactionSubset[] = [];\n\n if (\n !context.reference ||\n context.reference.type !== ClearSignContextReferenceType.CALLDATA ||\n !context.reference.valuePath\n ) {\n throw new Error(\n \"Invalid reference for nested call data. Expected a reference with type CALLDATA and a value path.\",\n );\n }\n\n const { valuePath } = context.reference;\n\n // values and callee are required\n const extractedValues = parser\n .extractValue(subset, valuePath)\n .unsafeCoerce();\n const extractedTo = parser\n .extractValue(subset, context.reference.callee)\n .unsafeCoerce();\n\n // selector and chainId are optional\n const extractedSelectors = context.reference.selector\n ? parser.extractValue(subset, context.reference.selector).orDefault([])\n : [];\n const extractedChainId = context.reference.chainId\n ? parser.extractValue(subset, context.reference.chainId).orDefault([])\n : [];\n\n for (let i = 0; i < extractedValues.length; i++) {\n const data = extractedValues[i];\n const chainId = extractedChainId[i];\n const to = extractedTo[i]?.slice(\n Math.max(0, extractedTo[i]!.length - 20),\n );\n const selector = extractedSelectors[i];\n\n const nestedSubset: TransactionSubset = {\n data: data ? bufferToHexaString(data) : \"0x\", // ASK: Should we use 0x or return an error?\n chainId: chainId ? Number(chainId) : subset.chainId,\n to: to ? bufferToHexaString(to) : subset.to,\n selector: selector\n ? bufferToHexaString(selector)\n : data\n ? bufferToHexaString(data).slice(0, DEFAULT_SELECTOR_LENGTH)\n : \"0x\",\n };\n\n nestedSubsets.push(nestedSubset);\n }\n\n return {\n subsets: nestedSubsets,\n };\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OACE,iCAAAA,MAIK,2BACP,OAAS,sBAAAC,MAA0B,kCAInC,MAAMC,EAA0B,GAiBzB,MAAMC,CAA2B,CACtC,YAA6BC,EAAuC,CAAvC,WAAAA,CAAwC,CAErE,KAAwC,CACtC,KAAM,CAAE,OAAAC,EAAQ,OAAAC,EAAQ,QAAAC,CAAQ,EAAI,KAAK,MACnCC,EAAqC,CAAC,EAE5C,GACE,CAACD,EAAQ,WACTA,EAAQ,UAAU,OAASP,EAA8B,UACzD,CAACO,EAAQ,UAAU,UAEnB,MAAM,IAAI,MACR,mGACF,EAGF,KAAM,CAAE,UAAAE,CAAU,EAAIF,EAAQ,UAGxBG,EAAkBL,EACrB,aAAaC,EAAQG,CAAS,EAC9B,aAAa,EACVE,EAAcN,EACjB,aAAaC,EAAQC,EAAQ,UAAU,MAAM,EAC7C,aAAa,EAGVK,EAAqBL,EAAQ,UAAU,SACzCF,EAAO,aAAaC,EAAQC,EAAQ,UAAU,QAAQ,EAAE,UAAU,CAAC,CAAC,EACpE,CAAC,EACCM,EAAmBN,EAAQ,UAAU,QACvCF,EAAO,aAAaC,EAAQC,EAAQ,UAAU,OAAO,EAAE,UAAU,CAAC,CAAC,EACnE,CAAC,EAEL,QAASO,EAAI,EAAGA,EAAIJ,EAAgB,OAAQI,IAAK,CAC/C,MAAMC,EAAOL,EAAgBI,CAAC,EACxBE,EAAUH,EAAiBC,CAAC,EAC5BG,EAAKN,EAAYG,CAAC,GAAG,MACzB,KAAK,IAAI,EAAGH,EAAYG,CAAC,EAAG,OAAS,EAAE,CACzC,EACMI,EAAWN,EAAmBE,CAAC,EAE/BK,EAAkC,CACtC,KAAMJ,EAAOd,EAAmBc,CAAI,EAAI,KACxC,QAASC,EAAU,OAAOA,CAAO,EAAIV,EAAO,QAC5C,GAAIW,EAAKhB,EAAmBgB,CAAE,EAAIX,EAAO,GACzC,SAAUY,EACNjB,EAAmBiB,CAAQ,EAC3BH,EACEd,EAAmBc,CAAI,EAAE,MAAM,EAAGb,CAAuB,EACzD,IACR,EAEAM,EAAc,KAAKW,CAAY,CACjC,CAEA,MAAO,CACL,QAASX,CACX,CACF,CACF",
|
|
6
|
+
"names": ["ClearSignContextReferenceType", "bufferToHexaString", "DEFAULT_SELECTOR_LENGTH", "ParseNestedTransactionTask", "_args", "parser", "subset", "context", "nestedSubsets", "valuePath", "extractedValues", "extractedTo", "extractedSelectors", "extractedChainId", "i", "data", "chainId", "to", "selector", "nestedSubset"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{ClearSignContextReferenceType as u,ClearSignContextType as l,DataPathElementType as i,DataPathLeafType as p}from"@ledgerhq/context-module";import{Left as T,Right as s}from"purify-ts";import{ParseNestedTransactionTask as o}from"./ParseNestedTransactionTask";describe("ParseNestedTransactionTask",()=>{const a={extractValue:vi.fn()},x={chainId:1,to:"0x1234567890123456789012345678901234567890",data:"0x060708090A",selector:"0x06070809",value:0n},e=[{type:i.TUPLE,offset:1},{type:i.TUPLE,offset:2},{type:i.LEAF,leafType:p.STATIC_LEAF}],d={type:l.TRANSACTION_FIELD_DESCRIPTION,payload:"test payload",reference:{type:u.CALLDATA,valuePath:e,selector:e,callee:e,amount:e}};let r;beforeEach(()=>{vi.resetAllMocks(),r={parser:a,subset:x,context:d}}),describe("run",()=>{describe("error cases",()=>{it("should throw error when context has no reference",()=>{const t={type:l.TRANSACTION_FIELD_DESCRIPTION,payload:"test payload"},n={...r,context:t};expect(()=>new o(n).run()).toThrow("Invalid reference for nested call data. Expected a reference with type CALLDATA and a value path.")}),it("should throw error when reference type is not CALLDATA",()=>{const t={type:l.TRANSACTION_FIELD_DESCRIPTION,payload:"test payload",reference:{type:u.TOKEN,valuePath:e}},n={...r,context:t};expect(()=>new o(n).run()).toThrow("Invalid reference for nested call data. Expected a reference with type CALLDATA and a value path.")}),it("should throw error when reference has no valuePath",()=>{const t={type:l.TRANSACTION_FIELD_DESCRIPTION,payload:"test payload",reference:{type:u.CALLDATA,valuePath:void 0,selector:void 0,callee:void 0,amount:void 0,spender:void 0,chainId:void 0}},n={...r,context:t};expect(()=>new o(n).run()).toThrow("Invalid reference for nested call data. Expected a reference with type CALLDATA and a value path.")}),it("should throw error when parser returns error",()=>{a.extractValue.mockReturnValue(T(new Error("Parser error")));const t={...r};expect(()=>new o(t).run()).toThrow("Parser error")})}),describe("success cases",()=>{it("should return new subset with extracted data when all fields are provided",()=>{a.extractValue.mockReturnValueOnce(s([new Uint8Array([1,2,3,4])])),a.extractValue.mockReturnValueOnce(s([new Uint8Array([2,3,4,5])])),a.extractValue.mockReturnValueOnce(s([new Uint8Array([3,4,5,6])]));const t={type:l.TRANSACTION_FIELD_DESCRIPTION,payload:"test payload",reference:{type:u.CALLDATA,valuePath:e,selector:e,callee:e,amount:e}},n={...r,context:t},c=new o(n).run();expect(a.extractValue).toHaveBeenCalledWith(x,e),expect(c).toEqual({subsets:[{data:"0x01020304",chainId:1,selector:"0x03040506",to:"0x02030405"}]})}),it("should use data.slice(0, 10) as selector when selector is not provided",()=>{a.extractValue.mockReturnValueOnce(s([new Uint8Array([1,2,3,4,5,6,7,8,9,10])])),a.extractValue.mockReturnValueOnce(s([new Uint8Array([2,3,4,5])])),a.extractValue.mockReturnValueOnce(T(new Error("Parser error"))),a.extractValue.mockReturnValueOnce(s([new Uint8Array([3,4,5,6])]));const t={type:l.TRANSACTION_FIELD_DESCRIPTION,payload:"test payload",reference:{type:u.CALLDATA,valuePath:e,callee:e,amount:e}},n={...r,context:t},c=new o(n).run();expect(c.subsets[0]).toEqual({data:"0x0102030405060708090a",chainId:1,selector:"0x01020304",to:"0x02030405"})}),it("should use defaults values when no value are returned from parser",()=>{a.extractValue.mockReturnValueOnce(s([new Uint8Array([1,2,3,4])])),a.extractValue.mockReturnValue(s([]));const t={type:l.TRANSACTION_FIELD_DESCRIPTION,payload:"test payload",reference:{type:u.CALLDATA,valuePath:e,selector:e,callee:e,amount:e}},n={...r,context:t},c=new o(n).run();expect(c.subsets[0]).toEqual({data:"0x01020304",chainId:1,selector:"0x01020304",to:"0x1234567890123456789012345678901234567890"})}),it("should preserve chainId from original subset",()=>{a.extractValue.mockReturnValue(s([new Uint8Array([1,2,3,4])]));const t={...x,chainId:137},n={...r,subset:t},c=new o(n).run();expect(c.subsets[0]?.chainId).toBe(137)})})})});
|
|
2
|
+
//# sourceMappingURL=ParseNestedTransactionTask.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/app-binder/task/ParseNestedTransactionTask.test.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n ClearSignContextReferenceType,\n type ClearSignContextSuccess,\n ClearSignContextType,\n type DataPathElement,\n DataPathElementType,\n DataPathLeafType,\n type GenericPath,\n type TransactionSubset,\n} from \"@ledgerhq/context-module\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { type TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\n\nimport {\n ParseNestedTransactionTask,\n type ParseNestedTransactionTaskArgs,\n} from \"./ParseNestedTransactionTask\";\n\ndescribe(\"ParseNestedTransactionTask\", () => {\n const transactionParserMock = {\n extractValue: vi.fn(),\n };\n\n const defaultSubset: TransactionSubset = {\n chainId: 1,\n to: \"0x1234567890123456789012345678901234567890\",\n data: \"0x060708090A\",\n selector: \"0x06070809\",\n value: 0n,\n };\n\n const mockValuePath: DataPathElement[] = [\n {\n type: DataPathElementType.TUPLE,\n offset: 1,\n },\n {\n type: DataPathElementType.TUPLE,\n offset: 2,\n },\n {\n type: DataPathElementType.LEAF,\n leafType: DataPathLeafType.STATIC_LEAF,\n },\n ];\n\n const defaultContext: ClearSignContextSuccess<ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION> =\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"test payload\",\n reference: {\n type: ClearSignContextReferenceType.CALLDATA,\n valuePath: mockValuePath,\n selector: mockValuePath,\n callee: mockValuePath,\n amount: mockValuePath,\n },\n };\n\n let defaultArgs: ParseNestedTransactionTaskArgs;\n\n beforeEach(() => {\n vi.resetAllMocks();\n defaultArgs = {\n parser: transactionParserMock as unknown as TransactionParserService,\n subset: defaultSubset,\n context: defaultContext,\n };\n });\n\n describe(\"run\", () => {\n describe(\"error cases\", () => {\n it(\"should throw error when context has no reference\", () => {\n // GIVEN\n const contextWithoutReference: ClearSignContextSuccess<ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION> =\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"test payload\",\n };\n const args = { ...defaultArgs, context: contextWithoutReference };\n\n // WHEN & THEN\n expect(() => new ParseNestedTransactionTask(args).run()).toThrow(\n \"Invalid reference for nested call data. Expected a reference with type CALLDATA and a value path.\",\n );\n });\n\n it(\"should throw error when reference type is not CALLDATA\", () => {\n // GIVEN\n const contextWithWrongType: ClearSignContextSuccess<ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION> =\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"test payload\",\n reference: {\n type: ClearSignContextReferenceType.TOKEN,\n valuePath: mockValuePath,\n },\n };\n const args = { ...defaultArgs, context: contextWithWrongType };\n\n // WHEN & THEN\n expect(() => new ParseNestedTransactionTask(args).run()).toThrow(\n \"Invalid reference for nested call data. Expected a reference with type CALLDATA and a value path.\",\n );\n });\n\n it(\"should throw error when reference has no valuePath\", () => {\n // GIVEN\n const contextWithoutValuePath: ClearSignContextSuccess<ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION> =\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"test payload\",\n reference: {\n type: ClearSignContextReferenceType.CALLDATA,\n valuePath: undefined as unknown as GenericPath,\n selector: undefined as unknown as GenericPath,\n callee: undefined as unknown as GenericPath,\n amount: undefined as unknown as GenericPath,\n spender: undefined as unknown as GenericPath,\n chainId: undefined as unknown as GenericPath,\n },\n };\n const args = { ...defaultArgs, context: contextWithoutValuePath };\n\n // WHEN & THEN\n expect(() => new ParseNestedTransactionTask(args).run()).toThrow(\n \"Invalid reference for nested call data. Expected a reference with type CALLDATA and a value path.\",\n );\n });\n\n it(\"should throw error when parser returns error\", () => {\n // GIVEN\n transactionParserMock.extractValue.mockReturnValue(\n Left(new Error(\"Parser error\")),\n );\n const args = { ...defaultArgs };\n\n // WHEN & THEN\n expect(() => new ParseNestedTransactionTask(args).run()).toThrow(\n \"Parser error\",\n );\n });\n });\n\n describe(\"success cases\", () => {\n it(\"should return new subset with extracted data when all fields are provided\", () => {\n // GIVEN\n transactionParserMock.extractValue.mockReturnValueOnce(\n Right([new Uint8Array([0x01, 0x02, 0x03, 0x04])]),\n );\n transactionParserMock.extractValue.mockReturnValueOnce(\n Right([new Uint8Array([0x02, 0x03, 0x04, 0x05])]),\n );\n transactionParserMock.extractValue.mockReturnValueOnce(\n Right([new Uint8Array([0x03, 0x04, 0x05, 0x06])]),\n );\n\n const context: ClearSignContextSuccess<ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION> =\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"test payload\",\n reference: {\n type: ClearSignContextReferenceType.CALLDATA,\n valuePath: mockValuePath,\n selector: mockValuePath,\n callee: mockValuePath,\n amount: mockValuePath,\n },\n };\n\n const args = { ...defaultArgs, context };\n\n // WHEN\n const result = new ParseNestedTransactionTask(args).run();\n\n // THEN\n expect(transactionParserMock.extractValue).toHaveBeenCalledWith(\n defaultSubset,\n mockValuePath,\n );\n expect(result).toEqual({\n subsets: [\n {\n data: \"0x01020304\",\n chainId: 1,\n selector: \"0x03040506\",\n to: \"0x02030405\",\n },\n ],\n });\n });\n\n it(\"should use data.slice(0, 10) as selector when selector is not provided\", () => {\n // GIVEN\n transactionParserMock.extractValue.mockReturnValueOnce(\n Right([\n new Uint8Array([\n 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,\n ]),\n ]),\n );\n transactionParserMock.extractValue.mockReturnValueOnce(\n Right([new Uint8Array([0x02, 0x03, 0x04, 0x05])]),\n );\n transactionParserMock.extractValue.mockReturnValueOnce(\n Left(new Error(\"Parser error\")),\n );\n transactionParserMock.extractValue.mockReturnValueOnce(\n Right([new Uint8Array([0x03, 0x04, 0x05, 0x06])]),\n );\n\n const context: ClearSignContextSuccess<ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION> =\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"test payload\",\n reference: {\n type: ClearSignContextReferenceType.CALLDATA,\n valuePath: mockValuePath,\n callee: mockValuePath,\n amount: mockValuePath,\n },\n };\n\n const args = { ...defaultArgs, context };\n\n // WHEN\n const result = new ParseNestedTransactionTask(args).run();\n\n // THEN\n expect(result.subsets[0]).toEqual({\n data: \"0x0102030405060708090a\",\n chainId: 1,\n selector: \"0x01020304\",\n to: \"0x02030405\",\n });\n });\n\n it(\"should use defaults values when no value are returned from parser\", () => {\n // GIVEN\n transactionParserMock.extractValue.mockReturnValueOnce(\n Right([new Uint8Array([0x01, 0x02, 0x03, 0x04])]),\n );\n transactionParserMock.extractValue.mockReturnValue(Right([]));\n\n const context: ClearSignContextSuccess<ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION> =\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"test payload\",\n reference: {\n type: ClearSignContextReferenceType.CALLDATA,\n valuePath: mockValuePath,\n selector: mockValuePath,\n callee: mockValuePath,\n amount: mockValuePath,\n },\n };\n\n const args = { ...defaultArgs, context };\n\n // WHEN\n const result = new ParseNestedTransactionTask(args).run();\n\n // THEN\n expect(result.subsets[0]).toEqual({\n data: \"0x01020304\",\n chainId: 1,\n selector: \"0x01020304\",\n to: \"0x1234567890123456789012345678901234567890\",\n });\n });\n\n it(\"should preserve chainId from original subset\", () => {\n // GIVEN\n transactionParserMock.extractValue.mockReturnValue(\n Right([new Uint8Array([0x01, 0x02, 0x03, 0x04])]),\n );\n\n const subsetWithDifferentChainId: TransactionSubset = {\n ...defaultSubset,\n chainId: 137, // Polygon\n };\n\n const args = { ...defaultArgs, subset: subsetWithDifferentChainId };\n\n // WHEN\n const result = new ParseNestedTransactionTask(args).run();\n\n // THEN\n expect(result.subsets[0]?.chainId).toBe(137);\n });\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["ClearSignContextReferenceType", "ClearSignContextType", "DataPathElementType", "DataPathLeafType", "Left", "Right", "ParseNestedTransactionTask", "transactionParserMock", "defaultSubset", "mockValuePath", "defaultContext", "defaultArgs", "contextWithoutReference", "args", "contextWithWrongType", "contextWithoutValuePath", "context", "result", "subsetWithDifferentChainId"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/app-binder/task/ParseTransactionTask.ts"],
|
|
4
|
+
"sourcesContent": ["import { type TransactionSubset } from \"@ledgerhq/context-module\";\n\nimport { type TransactionType } from \"@api/model/TransactionType\";\nimport { type TransactionMapperService } from \"@internal/transaction/service/mapper/TransactionMapperService\";\n\nexport type ParseTransactionTaskResult = {\n readonly subset: TransactionSubset;\n readonly type: TransactionType;\n};\n\nexport type ParseTransactionTaskArgs = {\n readonly mapper: TransactionMapperService;\n readonly transaction: Uint8Array;\n};\n\nexport class ParseTransactionTask {\n constructor(private readonly _args: ParseTransactionTaskArgs) {}\n\n run(): ParseTransactionTaskResult {\n const { mapper, transaction } = this._args;\n\n const { subset, type } = mapper\n .mapTransactionToSubset(transaction)\n .unsafeCoerce();\n return { subset, type };\n }\n}\n"],
|
|
5
|
+
"mappings": "AAeO,MAAMA,CAAqB,CAChC,YAA6BC,EAAiC,CAAjC,WAAAA,CAAkC,CAE/D,KAAkC,CAChC,KAAM,CAAE,OAAAC,EAAQ,YAAAC,CAAY,EAAI,KAAK,MAE/B,CAAE,OAAAC,EAAQ,KAAAC,CAAK,EAAIH,EACtB,uBAAuBC,CAAW,EAClC,aAAa,EAChB,MAAO,CAAE,OAAAC,EAAQ,KAAAC,CAAK,CACxB,CACF",
|
|
6
|
+
"names": ["ParseTransactionTask", "_args", "mapper", "transaction", "subset", "type"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Left as i,Right as o}from"purify-ts";import{ParseTransactionTask as s}from"./ParseTransactionTask";describe("ParseTransactionTask",()=>{const t={mapTransactionToSubset:vi.fn()};let a,c,r;beforeEach(()=>{vi.resetAllMocks(),c=new Uint8Array([1,2,3,4]),r={subset:{chainId:1,to:"0x1234567890123456789012345678901234567890",data:"0x1234567890",selector:"0x12345678",value:1000n},serializedTransaction:new Uint8Array([5,6,7,8]),type:2},a={mapper:t,transaction:c}}),describe("run",()=>{it("should successfully parse transaction and return subset and type",()=>{t.mapTransactionToSubset.mockReturnValue(o(r));const e=new s(a).run();expect(t.mapTransactionToSubset).toHaveBeenCalledWith(c),expect(e).toEqual({subset:r.subset,type:r.type})}),it("should pass through the transaction data to the mapper",()=>{const e=new Uint8Array([10,11,12,13,14]),n={...a,transaction:e};t.mapTransactionToSubset.mockReturnValue(o(r)),new s(n).run(),expect(t.mapTransactionToSubset).toHaveBeenCalledWith(e)}),it("should return correct subset structure",()=>{const e={chainId:42,to:"0xabcdefabcdefabcdefabcdefabcdefabcdefabcd",data:"0xdeadbeef",selector:"0xdeadbeef",value:2000n,from:"0x9876543210987654321098765432109876543210"},n={...r,subset:e,type:1};t.mapTransactionToSubset.mockReturnValue(o(n));const u=new s(a).run();expect(u.subset).toEqual(e),expect(u.type).toEqual(1)}),it("should throw when mapper returns Left (error)",()=>{const e=new Error("Invalid transaction format");t.mapTransactionToSubset.mockReturnValue(i(e)),expect(()=>new s(a).run()).toThrow()}),it("should throw when mapper returns Left with specific error message",()=>{const e=new Error("Pre-EIP-155 transactions are not supported");t.mapTransactionToSubset.mockReturnValue(i(e)),expect(()=>new s(a).run()).toThrow()})}),describe("constructor",()=>{it("should store args correctly",()=>{const e=new s(a);expect(e).toBeInstanceOf(s),t.mapTransactionToSubset.mockReturnValue(o(r));const n=e.run();expect(n).toBeDefined()})})});
|
|
2
|
+
//# sourceMappingURL=ParseTransactionTask.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/app-binder/task/ParseTransactionTask.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { type TransactionSubset } from \"@ledgerhq/context-module\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { type TransactionType } from \"@api/model/TransactionType\";\nimport { type TransactionMapperResult } from \"@internal/transaction/service/mapper/model/TransactionMapperResult\";\nimport { type TransactionMapperService } from \"@internal/transaction/service/mapper/TransactionMapperService\";\n\nimport {\n ParseTransactionTask,\n type ParseTransactionTaskArgs,\n} from \"./ParseTransactionTask\";\n\ndescribe(\"ParseTransactionTask\", () => {\n const mockMapper = {\n mapTransactionToSubset: vi.fn(),\n };\n\n let defaultArgs: ParseTransactionTaskArgs;\n let mockTransaction: Uint8Array;\n let mockMapperResult: TransactionMapperResult;\n\n beforeEach(() => {\n vi.resetAllMocks();\n\n mockTransaction = new Uint8Array([0x01, 0x02, 0x03, 0x04]);\n\n mockMapperResult = {\n subset: {\n chainId: 1,\n to: \"0x1234567890123456789012345678901234567890\",\n data: \"0x1234567890\",\n selector: \"0x12345678\",\n value: 1000n,\n },\n serializedTransaction: new Uint8Array([0x05, 0x06, 0x07, 0x08]),\n type: 2 as TransactionType,\n };\n\n defaultArgs = {\n mapper: mockMapper as unknown as TransactionMapperService,\n transaction: mockTransaction,\n };\n });\n\n describe(\"run\", () => {\n it(\"should successfully parse transaction and return subset and type\", () => {\n // GIVEN\n mockMapper.mapTransactionToSubset.mockReturnValue(\n Right(mockMapperResult),\n );\n\n // WHEN\n const result = new ParseTransactionTask(defaultArgs).run();\n\n // THEN\n expect(mockMapper.mapTransactionToSubset).toHaveBeenCalledWith(\n mockTransaction,\n );\n expect(result).toEqual({\n subset: mockMapperResult.subset,\n type: mockMapperResult.type,\n });\n });\n\n it(\"should pass through the transaction data to the mapper\", () => {\n // GIVEN\n const customTransaction = new Uint8Array([0x0a, 0x0b, 0x0c, 0x0d, 0x0e]);\n const customArgs = {\n ...defaultArgs,\n transaction: customTransaction,\n };\n mockMapper.mapTransactionToSubset.mockReturnValue(\n Right(mockMapperResult),\n );\n\n // WHEN\n new ParseTransactionTask(customArgs).run();\n\n // THEN\n expect(mockMapper.mapTransactionToSubset).toHaveBeenCalledWith(\n customTransaction,\n );\n });\n\n it(\"should return correct subset structure\", () => {\n // GIVEN\n const customSubset: TransactionSubset = {\n chainId: 42,\n to: \"0xabcdefabcdefabcdefabcdefabcdefabcdefabcd\",\n data: \"0xdeadbeef\",\n selector: \"0xdeadbeef\",\n value: 2000n,\n from: \"0x9876543210987654321098765432109876543210\",\n };\n const customMapperResult: TransactionMapperResult = {\n ...mockMapperResult,\n subset: customSubset,\n type: 1 as TransactionType,\n };\n mockMapper.mapTransactionToSubset.mockReturnValue(\n Right(customMapperResult),\n );\n\n // WHEN\n const result = new ParseTransactionTask(defaultArgs).run();\n\n // THEN\n expect(result.subset).toEqual(customSubset);\n expect(result.type).toEqual(1);\n });\n\n it(\"should throw when mapper returns Left (error)\", () => {\n // GIVEN\n const mappingError = new Error(\"Invalid transaction format\");\n mockMapper.mapTransactionToSubset.mockReturnValue(Left(mappingError));\n\n // WHEN / THEN\n expect(() => new ParseTransactionTask(defaultArgs).run()).toThrow();\n });\n\n it(\"should throw when mapper returns Left with specific error message\", () => {\n // GIVEN\n const specificError = new Error(\n \"Pre-EIP-155 transactions are not supported\",\n );\n mockMapper.mapTransactionToSubset.mockReturnValue(Left(specificError));\n\n // WHEN / THEN\n expect(() => new ParseTransactionTask(defaultArgs).run()).toThrow();\n });\n });\n\n describe(\"constructor\", () => {\n it(\"should store args correctly\", () => {\n // GIVEN / WHEN\n const task = new ParseTransactionTask(defaultArgs);\n\n // THEN\n expect(task).toBeInstanceOf(ParseTransactionTask);\n // We can't directly test private properties, but we can verify behavior\n mockMapper.mapTransactionToSubset.mockReturnValue(\n Right(mockMapperResult),\n );\n const result = task.run();\n expect(result).toBeDefined();\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "AACA,OAAS,QAAAA,EAAM,SAAAC,MAAa,YAM5B,OACE,wBAAAC,MAEK,yBAEP,SAAS,uBAAwB,IAAM,CACrC,MAAMC,EAAa,CACjB,uBAAwB,GAAG,GAAG,CAChC,EAEA,IAAIC,EACAC,EACAC,EAEJ,WAAW,IAAM,CACf,GAAG,cAAc,EAEjBD,EAAkB,IAAI,WAAW,CAAC,EAAM,EAAM,EAAM,CAAI,CAAC,EAEzDC,EAAmB,CACjB,OAAQ,CACN,QAAS,EACT,GAAI,6CACJ,KAAM,eACN,SAAU,aACV,MAAO,KACT,EACA,sBAAuB,IAAI,WAAW,CAAC,EAAM,EAAM,EAAM,CAAI,CAAC,EAC9D,KAAM,CACR,EAEAF,EAAc,CACZ,OAAQD,EACR,YAAaE,CACf,CACF,CAAC,EAED,SAAS,MAAO,IAAM,CACpB,GAAG,mEAAoE,IAAM,CAE3EF,EAAW,uBAAuB,gBAChCF,EAAMK,CAAgB,CACxB,EAGA,MAAMC,EAAS,IAAIL,EAAqBE,CAAW,EAAE,IAAI,EAGzD,OAAOD,EAAW,sBAAsB,EAAE,qBACxCE,CACF,EACA,OAAOE,CAAM,EAAE,QAAQ,CACrB,OAAQD,EAAiB,OACzB,KAAMA,EAAiB,IACzB,CAAC,CACH,CAAC,EAED,GAAG,yDAA0D,IAAM,CAEjE,MAAME,EAAoB,IAAI,WAAW,CAAC,GAAM,GAAM,GAAM,GAAM,EAAI,CAAC,EACjEC,EAAa,CACjB,GAAGL,EACH,YAAaI,CACf,EACAL,EAAW,uBAAuB,gBAChCF,EAAMK,CAAgB,CACxB,EAGA,IAAIJ,EAAqBO,CAAU,EAAE,IAAI,EAGzC,OAAON,EAAW,sBAAsB,EAAE,qBACxCK,CACF,CACF,CAAC,EAED,GAAG,yCAA0C,IAAM,CAEjD,MAAME,EAAkC,CACtC,QAAS,GACT,GAAI,6CACJ,KAAM,aACN,SAAU,aACV,MAAO,MACP,KAAM,4CACR,EACMC,EAA8C,CAClD,GAAGL,EACH,OAAQI,EACR,KAAM,CACR,EACAP,EAAW,uBAAuB,gBAChCF,EAAMU,CAAkB,CAC1B,EAGA,MAAMJ,EAAS,IAAIL,EAAqBE,CAAW,EAAE,IAAI,EAGzD,OAAOG,EAAO,MAAM,EAAE,QAAQG,CAAY,EAC1C,OAAOH,EAAO,IAAI,EAAE,QAAQ,CAAC,CAC/B,CAAC,EAED,GAAG,gDAAiD,IAAM,CAExD,MAAMK,EAAe,IAAI,MAAM,4BAA4B,EAC3DT,EAAW,uBAAuB,gBAAgBH,EAAKY,CAAY,CAAC,EAGpE,OAAO,IAAM,IAAIV,EAAqBE,CAAW,EAAE,IAAI,CAAC,EAAE,QAAQ,CACpE,CAAC,EAED,GAAG,oEAAqE,IAAM,CAE5E,MAAMS,EAAgB,IAAI,MACxB,4CACF,EACAV,EAAW,uBAAuB,gBAAgBH,EAAKa,CAAa,CAAC,EAGrE,OAAO,IAAM,IAAIX,EAAqBE,CAAW,EAAE,IAAI,CAAC,EAAE,QAAQ,CACpE,CAAC,CACH,CAAC,EAED,SAAS,cAAe,IAAM,CAC5B,GAAG,8BAA+B,IAAM,CAEtC,MAAMU,EAAO,IAAIZ,EAAqBE,CAAW,EAGjD,OAAOU,CAAI,EAAE,eAAeZ,CAAoB,EAEhDC,EAAW,uBAAuB,gBAChCF,EAAMK,CAAgB,CACxB,EACA,MAAMC,EAASO,EAAK,IAAI,EACxB,OAAOP,CAAM,EAAE,YAAY,CAC7B,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["Left", "Right", "ParseTransactionTask", "mockMapper", "defaultArgs", "mockTransaction", "mockMapperResult", "result", "customTransaction", "customArgs", "customSubset", "customMapperResult", "mappingError", "specificError", "task"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{ClearSignContextType as t}from"@ledgerhq/context-module";import{CommandResultFactory as u,InvalidStatusWordError as c,LoadCertificateCommand as C}from"@ledgerhq/device-management-kit";import{ProvideEnumCommand as h}from"../../app-binder/command/ProvideEnumCommand";import{NetworkConfigurationType as i,ProvideNetworkConfigurationCommand as s}from"../../app-binder/command/ProvideNetworkConfigurationCommand";import{ProvideNFTInformationCommand as k}from"../../app-binder/command/ProvideNFTInformationCommand";import{ProvideProxyInfoCommand as p}from"../../app-binder/command/ProvideProxyInfoCommand";import{ProvideSafeAccountCommand as d,ProvideSafeAccountCommandType as m}from"../../app-binder/command/ProvideSafeAccountCommand";import{ProvideTokenInformationCommand as y}from"../../app-binder/command/ProvideTokenInformationCommand";import{ProvideTransactionFieldDescriptionCommand as F}from"../../app-binder/command/ProvideTransactionFieldDescriptionCommand";import{ProvideTransactionInformationCommand as T}from"../../app-binder/command/ProvideTransactionInformationCommand";import{ProvideTrustedNameCommand as I}from"../../app-binder/command/ProvideTrustedNameCommand";import{ProvideWeb3CheckCommand as P}from"../../app-binder/command/ProvideWeb3CheckCommand";import{SetExternalPluginCommand as _}from"../../app-binder/command/SetExternalPluginCommand";import{SetPluginCommand as l}from"../../app-binder/command/SetPluginCommand";import{SendPayloadInChunksTask as f}from"./SendPayloadInChunksTask";class M{constructor(r,n,o=(a,e)=>new f(a,e)){this._api=r;this._args=n;this._sendPayloadInChunksTaskFactory=o}async run(){const{type:r,payload:n,certificate:o}=this._args.context;switch(o&&await this._api.sendCommand(new C({keyUsage:o.keyUsageNumber,certificate:o.payload})),r){case t.PLUGIN:return await this._api.sendCommand(new l({payload:n}));case t.EXTERNAL_PLUGIN:return await this._api.sendCommand(new _({payload:n}));case t.NFT:return await this._api.sendCommand(new k({payload:n}));case t.TOKEN:return await this._api.sendCommand(new y({payload:n}));case t.TRANSACTION_INFO:return await this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:e=>new T({data:e.chunkedData,isFirstChunk:e.isFirstChunk})}).run();case t.TRUSTED_NAME:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:a=>new I({data:a.chunkedData,isFirstChunk:a.isFirstChunk})}).run();case t.ENUM:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:a=>new h({data:a.chunkedData,isFirstChunk:a.isFirstChunk})}).run();case t.TRANSACTION_FIELD_DESCRIPTION:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:a=>new F({data:a.chunkedData,isFirstChunk:a.isFirstChunk})}).run();case t.WEB3_CHECK:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:a=>new P({payload:a.chunkedData,isFirstChunk:a.isFirstChunk})}).run();case t.PROXY_INFO:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:a=>new p({data:a.chunkedData,isFirstChunk:a.isFirstChunk})}).run();case t.DYNAMIC_NETWORK:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:a=>new s({data:a.chunkedData,isFirstChunk:a.isFirstChunk,configurationType:i.CONFIGURATION})}).run();case t.DYNAMIC_NETWORK_ICON:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:a=>new s({data:a.chunkedData,isFirstChunk:a.isFirstChunk,configurationType:i.ICON}),withPayloadLength:!1}).run();case t.SAFE:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:a=>new d({data:a.chunkedData,isFirstChunk:a.isFirstChunk,type:m.SAFE_DESCRIPTOR})}).run();case t.SIGNER:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:a=>new d({data:a.chunkedData,isFirstChunk:a.isFirstChunk,type:m.SIGNER_DESCRIPTOR})}).run();default:{const a=r;return u({error:new c(`The context type [${a}] is not covered`)})}}}}export{M as ProvideContextTask};
|
|
2
|
+
//# sourceMappingURL=ProvideContextTask.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/app-binder/task/ProvideContextTask.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n type ClearSignContextSuccess,\n ClearSignContextType,\n} from \"@ledgerhq/context-module\";\nimport {\n type CommandResult,\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n LoadCertificateCommand,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { ProvideEnumCommand } from \"@internal/app-binder/command/ProvideEnumCommand\";\nimport {\n NetworkConfigurationType,\n ProvideNetworkConfigurationCommand,\n} from \"@internal/app-binder/command/ProvideNetworkConfigurationCommand\";\nimport { ProvideNFTInformationCommand } from \"@internal/app-binder/command/ProvideNFTInformationCommand\";\nimport { ProvideProxyInfoCommand } from \"@internal/app-binder/command/ProvideProxyInfoCommand\";\nimport {\n ProvideSafeAccountCommand,\n ProvideSafeAccountCommandType,\n} from \"@internal/app-binder/command/ProvideSafeAccountCommand\";\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\nimport { ProvideTransactionFieldDescriptionCommand } from \"@internal/app-binder/command/ProvideTransactionFieldDescriptionCommand\";\nimport { ProvideTransactionInformationCommand } from \"@internal/app-binder/command/ProvideTransactionInformationCommand\";\nimport { ProvideTrustedNameCommand } from \"@internal/app-binder/command/ProvideTrustedNameCommand\";\nimport { ProvideWeb3CheckCommand } from \"@internal/app-binder/command/ProvideWeb3CheckCommand\";\nimport { SetExternalPluginCommand } from \"@internal/app-binder/command/SetExternalPluginCommand\";\nimport { SetPluginCommand } from \"@internal/app-binder/command/SetPluginCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\n\nimport {\n SendPayloadInChunksTask,\n type SendPayloadInChunksTaskArgs,\n} from \"./SendPayloadInChunksTask\";\n\nexport type ProvideContextTaskArgs = {\n /**\n * The clear sign context to provide.\n */\n context: ClearSignContextSuccess;\n};\n\nexport type ProvideContextTaskResult = CommandResult<unknown, EthErrorCodes>;\n\n/**\n * This task is responsible for providing a single context to the device.\n */\nexport class ProvideContextTask {\n constructor(\n private _api: InternalApi,\n private _args: ProvideContextTaskArgs,\n private _sendPayloadInChunksTaskFactory = (\n api: InternalApi,\n args: SendPayloadInChunksTaskArgs<unknown>,\n ) => new SendPayloadInChunksTask(api, args),\n ) {}\n\n async run(): Promise<ProvideContextTaskResult> {\n const { type, payload, certificate } = this._args.context;\n\n // if a certificate is provided, we load it before sending the command\n if (certificate) {\n await this._api.sendCommand(\n new LoadCertificateCommand({\n keyUsage: certificate.keyUsageNumber,\n certificate: certificate.payload,\n }),\n );\n }\n\n switch (type) {\n case ClearSignContextType.PLUGIN: {\n return await this._api.sendCommand(new SetPluginCommand({ payload }));\n }\n case ClearSignContextType.EXTERNAL_PLUGIN: {\n return await this._api.sendCommand(\n new SetExternalPluginCommand({ payload }),\n );\n }\n case ClearSignContextType.NFT: {\n return await this._api.sendCommand(\n new ProvideNFTInformationCommand({ payload }),\n );\n }\n case ClearSignContextType.TOKEN: {\n return await this._api.sendCommand(\n new ProvideTokenInformationCommand({ payload }),\n );\n }\n case ClearSignContextType.TRANSACTION_INFO: {\n const transactionInfoResult =\n await this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideTransactionInformationCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n\n return transactionInfoResult;\n }\n case ClearSignContextType.TRUSTED_NAME: {\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideTrustedNameCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n }\n case ClearSignContextType.ENUM:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideEnumCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideTransactionFieldDescriptionCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.WEB3_CHECK:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideWeb3CheckCommand({\n payload: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.PROXY_INFO:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideProxyInfoCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.DYNAMIC_NETWORK:\n // Dynamic network configuration uses the existing ProvideNetworkConfiguration command\n // but is provided as part of the context flow\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideNetworkConfigurationCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n configurationType: NetworkConfigurationType.CONFIGURATION,\n }),\n }).run();\n case ClearSignContextType.DYNAMIC_NETWORK_ICON: {\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideNetworkConfigurationCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n configurationType: NetworkConfigurationType.ICON,\n }),\n withPayloadLength: false,\n }).run();\n }\n case ClearSignContextType.SAFE:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideSafeAccountCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n type: ProvideSafeAccountCommandType.SAFE_DESCRIPTOR,\n }),\n }).run();\n case ClearSignContextType.SIGNER:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideSafeAccountCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n type: ProvideSafeAccountCommandType.SIGNER_DESCRIPTOR,\n }),\n }).run();\n default: {\n const uncoveredType: never = type;\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n `The context type [${uncoveredType}] is not covered`,\n ),\n });\n }\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["ClearSignContextType", "CommandResultFactory", "InvalidStatusWordError", "LoadCertificateCommand", "ProvideEnumCommand", "NetworkConfigurationType", "ProvideNetworkConfigurationCommand", "ProvideNFTInformationCommand", "ProvideProxyInfoCommand", "ProvideSafeAccountCommand", "ProvideSafeAccountCommandType", "ProvideTokenInformationCommand", "ProvideTransactionFieldDescriptionCommand", "ProvideTransactionInformationCommand", "ProvideTrustedNameCommand", "ProvideWeb3CheckCommand", "SetExternalPluginCommand", "SetPluginCommand", "SendPayloadInChunksTask", "ProvideContextTask", "_api", "_args", "_sendPayloadInChunksTaskFactory", "api", "args", "type", "payload", "certificate", "uncoveredType"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{ClearSignContextType as a}from"@ledgerhq/context-module";import{CommandResultFactory as u,InvalidStatusWordError as E,LoadCertificateCommand as k}from"@ledgerhq/device-management-kit";import{ProvideEnumCommand as A}from"../../app-binder/command/ProvideEnumCommand";import{NetworkConfigurationType as x,ProvideNetworkConfigurationCommand as T}from"../../app-binder/command/ProvideNetworkConfigurationCommand";import{ProvideNFTInformationCommand as I}from"../../app-binder/command/ProvideNFTInformationCommand";import{ProvideProxyInfoCommand as P}from"../../app-binder/command/ProvideProxyInfoCommand";import{ProvideSafeAccountCommand as h,ProvideSafeAccountCommandType as f}from"../../app-binder/command/ProvideSafeAccountCommand";import{ProvideTokenInformationCommand as C}from"../../app-binder/command/ProvideTokenInformationCommand";import{ProvideTransactionFieldDescriptionCommand as N}from"../../app-binder/command/ProvideTransactionFieldDescriptionCommand";import{ProvideTransactionInformationCommand as v}from"../../app-binder/command/ProvideTransactionInformationCommand";import{ProvideTrustedNameCommand as F}from"../../app-binder/command/ProvideTrustedNameCommand";import{ProvideWeb3CheckCommand as R}from"../../app-binder/command/ProvideWeb3CheckCommand";import{SetExternalPluginCommand as O}from"../../app-binder/command/SetExternalPluginCommand";import{SetPluginCommand as B}from"../../app-binder/command/SetPluginCommand";import{makeDeviceActionInternalApiMock as S}from"../../app-binder/device-action/__test-utils__/makeInternalApi";import{ProvideContextTask as l}from"./ProvideContextTask";import{SendPayloadInChunksTask as D}from"./SendPayloadInChunksTask";describe("ProvideContextTask",()=>{const e=S(),n=u({data:void 0}),y=u({data:void 0,error:{}});beforeEach(()=>{vi.resetAllMocks()}),describe("run",()=>{const r=vi.fn(),s=vi.fn();beforeEach(()=>{vi.clearAllMocks(),s.mockImplementation((t,c)=>({run:()=>r(t,c)}))}),describe("contexts with sendCommand",()=>{it.each([[a.PLUGIN,B],[a.EXTERNAL_PLUGIN,O],[a.NFT,I],[a.TOKEN,C]])("should provide context by calling sendCommand for a %s context",async(t,c)=>{const o={context:{type:t,payload:"payload"}};e.sendCommand.mockResolvedValue(n);const i=await new l(e,o,s).run();expect(i).toEqual(n),expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(e.sendCommand).toHaveBeenCalledWith(expect.any(c))})}),describe("contexts with sendPayloadInChunksTask",()=>{it.each([[a.TRANSACTION_INFO,v],[a.TRUSTED_NAME,F],[a.ENUM,A],[a.TRANSACTION_FIELD_DESCRIPTION,N],[a.WEB3_CHECK,R],[a.PROXY_INFO,P]])("should provide context by calling sendPayloadInChunksTask for a %s context",async(t,c)=>{const o={context:{type:t,payload:"payload"}};r.mockResolvedValue(n);const i=await new l(e,o,s).run();expect(i).toEqual(n),expect(r).toHaveBeenCalledTimes(1),expect(r).toHaveBeenCalledWith(e,{payload:"payload",commandFactory:expect.any(Function)});const d=s.mock.calls[0][1].commandFactory,g={chunkedData:new Uint8Array([1,2,3]),isFirstChunk:!0},w=d(g);expect(w).toBeInstanceOf(c)}),it("should provide context for DYNAMIC_NETWORK with correct configuration type",async()=>{const t={context:{type:a.DYNAMIC_NETWORK,payload:"payload"}};r.mockResolvedValue(n);const o=await new l(e,t,s).run();expect(o).toEqual(n),expect(r).toHaveBeenCalledTimes(1);const i=s.mock.calls[0][1].commandFactory,m={chunkedData:new Uint8Array([1,2,3]),isFirstChunk:!0},d=i(m);expect(d).toBeInstanceOf(T),expect(d.args.configurationType).toBe(x.CONFIGURATION)}),it("should provide context for DYNAMIC_NETWORK_ICON with correct configuration type and withPayloadLength",async()=>{const t={context:{type:a.DYNAMIC_NETWORK_ICON,payload:"payload"}};r.mockResolvedValue(n);const o=await new l(e,t,s).run();expect(o).toEqual(n),expect(r).toHaveBeenCalledTimes(1),expect(r).toHaveBeenCalledWith(e,{payload:"payload",commandFactory:expect.any(Function),withPayloadLength:!1});const i=s.mock.calls[0][1].commandFactory,m={chunkedData:new Uint8Array([1,2,3]),isFirstChunk:!0},d=i(m);expect(d).toBeInstanceOf(T),expect(d.args.configurationType).toBe(x.ICON)}),it("should provide context for SAFE with correct type",async()=>{const t={context:{type:a.SAFE,payload:"payload"}};r.mockResolvedValue(n);const o=await new l(e,t,s).run();expect(o).toEqual(n),expect(r).toHaveBeenCalledTimes(1);const i=s.mock.calls[0][1].commandFactory,m={chunkedData:new Uint8Array([1,2,3]),isFirstChunk:!0},d=i(m);expect(d).toBeInstanceOf(h),expect(d.args.type).toBe(f.SAFE_DESCRIPTOR)}),it("should provide context for SIGNER with correct type",async()=>{const t={context:{type:a.SIGNER,payload:"payload"}};r.mockResolvedValue(n);const o=await new l(e,t,s).run();expect(o).toEqual(n),expect(r).toHaveBeenCalledTimes(1);const i=s.mock.calls[0][1].commandFactory,m={chunkedData:new Uint8Array([1,2,3]),isFirstChunk:!0},d=i(m);expect(d).toBeInstanceOf(h),expect(d.args.type).toBe(f.SIGNER_DESCRIPTOR)})}),describe("with certificate",()=>{it("should load certificate before providing context when certificate is present",async()=>{const t={context:{type:a.TOKEN,payload:"payload",certificate:{keyUsageNumber:1,payload:new Uint8Array([1,2,3])}}};e.sendCommand.mockResolvedValue(n);const o=await new l(e,t,s).run();expect(o).toEqual(n),expect(e.sendCommand).toHaveBeenCalledTimes(2),expect(e.sendCommand).toHaveBeenNthCalledWith(1,expect.any(k)),expect(e.sendCommand).toHaveBeenNthCalledWith(2,expect.any(C))}),it("should load certificate with sendPayloadInChunksTask context",async()=>{const t={context:{type:a.TRANSACTION_INFO,payload:"payload",certificate:{keyUsageNumber:2,payload:new Uint8Array([4,5,6])}}};e.sendCommand.mockResolvedValue(n),r.mockResolvedValue(n);const o=await new l(e,t,s).run();expect(o).toEqual(n),expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(e.sendCommand).toHaveBeenCalledWith(expect.any(k)),expect(r).toHaveBeenCalledTimes(1)}),it("should not load certificate when not present",async()=>{const t={context:{type:a.TOKEN,payload:"payload"}};e.sendCommand.mockResolvedValue(n);const o=await new l(e,t,s).run();expect(o).toEqual(n),expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(e.sendCommand).toHaveBeenCalledWith(expect.any(C))})}),describe("error handling",()=>{it("should return error when sendCommand fails",async()=>{const t={context:{type:a.NFT,payload:"payload"}};e.sendCommand.mockResolvedValue(y);const o=await new l(e,t,s).run();expect(o).toEqual(y)}),it("should return error when sendPayloadInChunksTask fails",async()=>{const t={context:{type:a.TRUSTED_NAME,payload:"payload"}};r.mockResolvedValue(y);const o=await new l(e,t,s).run();expect(o).toEqual(y)}),it("should return error for unsupported context type",async()=>{const t={context:{type:"unsupported",payload:"payload"}},o=await new l(e,t,s).run();expect(o).toEqual(u({error:new E("The context type [unsupported] is not covered")}))})}),describe("factory",()=>{it("should have a default sendPayloadInChunksTaskFactory",()=>{const t={context:{type:a.TOKEN,payload:"payload"}},c=new l(e,t);expect(c._sendPayloadInChunksTaskFactory).toBeDefined();const o=c._sendPayloadInChunksTaskFactory(e,{payload:"payload",commandFactory:()=>new v({data:new Uint8Array,isFirstChunk:!0})});expect(o).toBeInstanceOf(D)})})})});
|
|
2
|
+
//# sourceMappingURL=ProvideContextTask.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/app-binder/task/ProvideContextTask.test.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n type ClearSignContextSuccess,\n ClearSignContextType,\n} from \"@ledgerhq/context-module\";\nimport {\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n LoadCertificateCommand,\n type UnknownDeviceExchangeError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { ProvideEnumCommand } from \"@internal/app-binder/command/ProvideEnumCommand\";\nimport {\n NetworkConfigurationType,\n ProvideNetworkConfigurationCommand,\n} from \"@internal/app-binder/command/ProvideNetworkConfigurationCommand\";\nimport { ProvideNFTInformationCommand } from \"@internal/app-binder/command/ProvideNFTInformationCommand\";\nimport { ProvideProxyInfoCommand } from \"@internal/app-binder/command/ProvideProxyInfoCommand\";\nimport {\n ProvideSafeAccountCommand,\n ProvideSafeAccountCommandType,\n} from \"@internal/app-binder/command/ProvideSafeAccountCommand\";\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\nimport { ProvideTransactionFieldDescriptionCommand } from \"@internal/app-binder/command/ProvideTransactionFieldDescriptionCommand\";\nimport { ProvideTransactionInformationCommand } from \"@internal/app-binder/command/ProvideTransactionInformationCommand\";\nimport { ProvideTrustedNameCommand } from \"@internal/app-binder/command/ProvideTrustedNameCommand\";\nimport { ProvideWeb3CheckCommand } from \"@internal/app-binder/command/ProvideWeb3CheckCommand\";\nimport { SetExternalPluginCommand } from \"@internal/app-binder/command/SetExternalPluginCommand\";\nimport { SetPluginCommand } from \"@internal/app-binder/command/SetPluginCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\n\nimport {\n ProvideContextTask,\n type ProvideContextTaskArgs,\n} from \"./ProvideContextTask\";\nimport {\n SendPayloadInChunksTask,\n type SendPayloadInChunksTaskArgs,\n} from \"./SendPayloadInChunksTask\";\n\ndescribe(\"ProvideContextTask\", () => {\n const api = makeDeviceActionInternalApiMock();\n const successResult = CommandResultFactory<void, EthErrorCodes>({\n data: undefined,\n });\n const errorResult = CommandResultFactory<void, EthErrorCodes>({\n data: undefined,\n error: {} as UnknownDeviceExchangeError,\n });\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"run\", () => {\n const sendPayloadInChunksRunMock = vi.fn();\n const sendPayloadInChunksTaskMockFactory = vi.fn();\n\n beforeEach(() => {\n vi.clearAllMocks();\n sendPayloadInChunksTaskMockFactory.mockImplementation(\n (a: InternalApi, args: SendPayloadInChunksTaskArgs<unknown>) =>\n ({\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n run: () => sendPayloadInChunksRunMock(a, args),\n }) as unknown as SendPayloadInChunksTask<unknown>,\n );\n });\n\n describe(\"contexts with sendCommand\", () => {\n it.each([\n [ClearSignContextType.PLUGIN, SetPluginCommand],\n [ClearSignContextType.EXTERNAL_PLUGIN, SetExternalPluginCommand],\n [ClearSignContextType.NFT, ProvideNFTInformationCommand],\n [ClearSignContextType.TOKEN, ProvideTokenInformationCommand],\n ] as const)(\n \"should provide context by calling sendCommand for a %s context\",\n async (contextType, commandClass) => {\n // GIVEN\n const args: ProvideContextTaskArgs = {\n context: {\n type: contextType,\n payload: \"payload\",\n },\n };\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(successResult);\n expect(api.sendCommand).toHaveBeenCalledTimes(1);\n expect(api.sendCommand).toHaveBeenCalledWith(\n expect.any(commandClass),\n );\n },\n );\n });\n\n describe(\"contexts with sendPayloadInChunksTask\", () => {\n it.each([\n [\n ClearSignContextType.TRANSACTION_INFO,\n ProvideTransactionInformationCommand,\n ],\n [ClearSignContextType.TRUSTED_NAME, ProvideTrustedNameCommand],\n [ClearSignContextType.ENUM, ProvideEnumCommand],\n [\n ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n ProvideTransactionFieldDescriptionCommand,\n ],\n [ClearSignContextType.WEB3_CHECK, ProvideWeb3CheckCommand],\n [ClearSignContextType.PROXY_INFO, ProvideProxyInfoCommand],\n ] as const)(\n \"should provide context by calling sendPayloadInChunksTask for a %s context\",\n async (contextType, commandClass) => {\n // GIVEN\n const args: ProvideContextTaskArgs = {\n context: {\n type: contextType,\n payload: \"payload\",\n } as ClearSignContextSuccess<typeof contextType>,\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(successResult);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n\n // Test that the commandFactory returns the correct command class\n const factoryCall = sendPayloadInChunksTaskMockFactory.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory = factoryCall[1].commandFactory;\n const mockArgs = {\n chunkedData: new Uint8Array([1, 2, 3]),\n isFirstChunk: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command = commandFactory(mockArgs);\n expect(command).toBeInstanceOf(commandClass);\n },\n );\n\n it(\"should provide context for DYNAMIC_NETWORK with correct configuration type\", async () => {\n // GIVEN\n const args: ProvideContextTaskArgs = {\n context: {\n type: ClearSignContextType.DYNAMIC_NETWORK,\n payload: \"payload\",\n },\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(successResult);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n\n // Test that the commandFactory returns ProvideNetworkConfigurationCommand with CONFIGURATION type\n const factoryCall = sendPayloadInChunksTaskMockFactory.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory = factoryCall[1].commandFactory;\n const mockArgs = {\n chunkedData: new Uint8Array([1, 2, 3]),\n isFirstChunk: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command = commandFactory(mockArgs);\n expect(command).toBeInstanceOf(ProvideNetworkConfigurationCommand);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n expect(command.args.configurationType).toBe(\n NetworkConfigurationType.CONFIGURATION,\n );\n });\n\n it(\"should provide context for DYNAMIC_NETWORK_ICON with correct configuration type and withPayloadLength\", async () => {\n // GIVEN\n const args: ProvideContextTaskArgs = {\n context: {\n type: ClearSignContextType.DYNAMIC_NETWORK_ICON,\n payload: \"payload\",\n },\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(successResult);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n withPayloadLength: false,\n });\n\n // Test that the commandFactory returns ProvideNetworkConfigurationCommand with ICON type\n const factoryCall = sendPayloadInChunksTaskMockFactory.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory = factoryCall[1].commandFactory;\n const mockArgs = {\n chunkedData: new Uint8Array([1, 2, 3]),\n isFirstChunk: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command = commandFactory(mockArgs);\n expect(command).toBeInstanceOf(ProvideNetworkConfigurationCommand);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n expect(command.args.configurationType).toBe(\n NetworkConfigurationType.ICON,\n );\n });\n\n it(\"should provide context for SAFE with correct type\", async () => {\n // GIVEN\n const args: ProvideContextTaskArgs = {\n context: {\n type: ClearSignContextType.SAFE,\n payload: \"payload\",\n },\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(successResult);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n\n // Test that the commandFactory returns ProvideSafeAccountCommand with SAFE_DESCRIPTOR type\n const factoryCall = sendPayloadInChunksTaskMockFactory.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory = factoryCall[1].commandFactory;\n const mockArgs = {\n chunkedData: new Uint8Array([1, 2, 3]),\n isFirstChunk: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command = commandFactory(mockArgs);\n expect(command).toBeInstanceOf(ProvideSafeAccountCommand);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n expect(command.args.type).toBe(\n ProvideSafeAccountCommandType.SAFE_DESCRIPTOR,\n );\n });\n\n it(\"should provide context for SIGNER with correct type\", async () => {\n // GIVEN\n const args: ProvideContextTaskArgs = {\n context: {\n type: ClearSignContextType.SIGNER,\n payload: \"payload\",\n },\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(successResult);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n\n // Test that the commandFactory returns ProvideSafeAccountCommand with SIGNER_DESCRIPTOR type\n const factoryCall = sendPayloadInChunksTaskMockFactory.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory = factoryCall[1].commandFactory;\n const mockArgs = {\n chunkedData: new Uint8Array([1, 2, 3]),\n isFirstChunk: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command = commandFactory(mockArgs);\n expect(command).toBeInstanceOf(ProvideSafeAccountCommand);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n expect(command.args.type).toBe(\n ProvideSafeAccountCommandType.SIGNER_DESCRIPTOR,\n );\n });\n });\n\n describe(\"with certificate\", () => {\n it(\"should load certificate before providing context when certificate is present\", async () => {\n // GIVEN\n const args: ProvideContextTaskArgs = {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n certificate: {\n keyUsageNumber: 1,\n payload: new Uint8Array([1, 2, 3]),\n },\n },\n };\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(successResult);\n expect(api.sendCommand).toHaveBeenCalledTimes(2);\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 1,\n expect.any(LoadCertificateCommand),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 2,\n expect.any(ProvideTokenInformationCommand),\n );\n });\n\n it(\"should load certificate with sendPayloadInChunksTask context\", async () => {\n // GIVEN\n const args: ProvideContextTaskArgs = {\n context: {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload\",\n certificate: {\n keyUsageNumber: 2,\n payload: new Uint8Array([4, 5, 6]),\n },\n },\n };\n api.sendCommand.mockResolvedValue(successResult);\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(successResult);\n expect(api.sendCommand).toHaveBeenCalledTimes(1);\n expect(api.sendCommand).toHaveBeenCalledWith(\n expect.any(LoadCertificateCommand),\n );\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n });\n\n it(\"should not load certificate when not present\", async () => {\n // GIVEN\n const args: ProvideContextTaskArgs = {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n };\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(successResult);\n expect(api.sendCommand).toHaveBeenCalledTimes(1);\n expect(api.sendCommand).toHaveBeenCalledWith(\n expect.any(ProvideTokenInformationCommand),\n );\n });\n });\n\n describe(\"error handling\", () => {\n it(\"should return error when sendCommand fails\", async () => {\n // GIVEN\n const args: ProvideContextTaskArgs = {\n context: {\n type: ClearSignContextType.NFT,\n payload: \"payload\",\n },\n };\n api.sendCommand.mockResolvedValue(errorResult);\n\n // WHEN\n const task = new ProvideContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(errorResult);\n });\n\n it(\"should return error when sendPayloadInChunksTask fails\", async () => {\n // GIVEN\n const args: ProvideContextTaskArgs = {\n context: {\n type: ClearSignContextType.TRUSTED_NAME,\n payload: \"payload\",\n },\n };\n sendPayloadInChunksRunMock.mockResolvedValue(errorResult);\n\n // WHEN\n const task = new ProvideContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(errorResult);\n });\n\n it(\"should return error for unsupported context type\", async () => {\n // GIVEN\n const args: ProvideContextTaskArgs = {\n context: {\n type: \"unsupported\" as unknown as ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n };\n\n // WHEN\n const task = new ProvideContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\n `The context type [unsupported] is not covered`,\n ),\n }),\n );\n });\n });\n\n describe(\"factory\", () => {\n it(\"should have a default sendPayloadInChunksTaskFactory\", () => {\n // GIVEN\n const args: ProvideContextTaskArgs = {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n };\n\n // WHEN\n const task = new ProvideContextTask(api, args);\n\n // THEN\n expect(task[\"_sendPayloadInChunksTaskFactory\"]).toBeDefined();\n const sendPayloadInChunksTask = task[\"_sendPayloadInChunksTaskFactory\"](\n api,\n {\n payload: \"payload\",\n commandFactory: () =>\n new ProvideTransactionInformationCommand({\n data: new Uint8Array(),\n isFirstChunk: true,\n }),\n },\n );\n expect(sendPayloadInChunksTask).toBeInstanceOf(SendPayloadInChunksTask);\n });\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["ClearSignContextType", "CommandResultFactory", "InvalidStatusWordError", "LoadCertificateCommand", "ProvideEnumCommand", "NetworkConfigurationType", "ProvideNetworkConfigurationCommand", "ProvideNFTInformationCommand", "ProvideProxyInfoCommand", "ProvideSafeAccountCommand", "ProvideSafeAccountCommandType", "ProvideTokenInformationCommand", "ProvideTransactionFieldDescriptionCommand", "ProvideTransactionInformationCommand", "ProvideTrustedNameCommand", "ProvideWeb3CheckCommand", "SetExternalPluginCommand", "SetPluginCommand", "makeDeviceActionInternalApiMock", "ProvideContextTask", "SendPayloadInChunksTask", "api", "successResult", "errorResult", "sendPayloadInChunksRunMock", "sendPayloadInChunksTaskMockFactory", "a", "args", "contextType", "commandClass", "result", "commandFactory", "mockArgs", "command", "task", "sendPayloadInChunksTask"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{VERIFYING_CONTRACT_TOKEN_INDEX as x}from"@ledgerhq/context-module";import{ClearSignContextType as T}from"@ledgerhq/context-module";import{bufferToHexaString as D,CommandResultFactory as I,InvalidStatusWordError as b,isSuccessCommandResult as o,LoadCertificateCommand as k}from"@ledgerhq/device-management-kit";import{Just as y,Maybe as S,Nothing as p}from"purify-ts";import{GetChallengeCommand as P}from"../../app-binder/command/GetChallengeCommand";import{ProvideTokenInformationCommand as F}from"../../app-binder/command/ProvideTokenInformationCommand";import{ProvideTrustedNameCommand as M}from"../../app-binder/command/ProvideTrustedNameCommand";import{ProvideWeb3CheckCommand as V}from"../../app-binder/command/ProvideWeb3CheckCommand";import{Eip712FilterType as m,SendEIP712FilteringCommand as c}from"../../app-binder/command/SendEIP712FilteringCommand";import{SendEIP712StructDefinitionCommand as w,StructDefinitionCommand as E}from"../../app-binder/command/SendEIP712StructDefinitionCommand";import{StructImplemType as f}from"../../app-binder/command/SendEIP712StructImplemCommand";import{SendEIP712StructImplemTask as h}from"../../app-binder/task/SendEIP712StructImplemTask";import{TypedDataValueField as J}from"../../typed-data/model/Types";import{TypedDataValueArray as v,TypedDataValueRoot as _}from"../../typed-data/model/Types";import{SendPayloadInChunksTask as N}from"./SendPayloadInChunksTask";const R=5;class te{constructor(t,n,a){this.api=t;this.contextModule=n;this.args=a;for(const e of this.args.domain)if(e.path==="chainId"&&e.value instanceof J){const s=BigInt(D(e.value.data));s<=Number.MAX_SAFE_INTEGER&&(this.chainId=y(Number(s)));break}}chainId=p;async run(){this.args.web3Check&&(this.args.web3Check.certificate&&await this.api.sendCommand(new k({keyUsage:this.args.web3Check.certificate.keyUsageNumber,certificate:this.args.web3Check.certificate.payload})),await new N(this.api,{payload:this.args.web3Check.payload,commandFactory:e=>new V({payload:e.chunkedData,isFirstChunk:e.isFirstChunk})}).run());const t=I({data:void 0}),n=Object.entries(this.args.types).sort(([e],[s])=>e.localeCompare(s));for(const[e,s]of n){const i=await this.api.sendCommand(new w({command:E.Name,name:e}));if(!o(i))return i;for(const[r,d]of Object.entries(s)){const l=await this.api.sendCommand(new w({command:E.Field,name:r,type:d}));if(!o(l))return l}}if(this.args.clearSignContext.isJust()){const e=await this.api.sendCommand(new c({type:m.Activation}));if(!o(e))return e}for(const e of this.args.domain){const i=await this.getImplementationTask(e).run();if(!o(i))return i}if(this.args.clearSignContext.isJust()){const e=this.args.clearSignContext.extract(),s=await this.api.sendCommand(new c({type:m.MessageInfo,displayName:e.messageInfo.displayName,filtersCount:e.messageInfo.filtersCount,signature:e.messageInfo.signature}));if(!o(s))return s}const a={indexes:{},nextIndex:0};for(const e of this.args.message){const s=await this.provideTokenInformation(e,a);if(s.isJust())return s.extract();const i=await this.provideTrustedName(e);if(i.isJust())return i.extract();const r=await this.filterValue(e,a);if(r.isJust()&&!o(r.extract()))return r.extract();const l=await this.getImplementationTask(e).run();if(!o(l))return l;if(this.args.clearSignContext.isJust()&&e.value instanceof v&&e.value.length===0){const A=Object.entries(this.args.clearSignContext.extract().filters).filter(([u])=>u.startsWith(`${e.path}.[]`)).map(([,u])=>u);for(const u of A){const C=await this.api.sendCommand(new c({type:m.DiscardedPath,path:u.path}));if(!o(C))return C;const g=await this.provideFiltering(u,a,!0);if(!o(g))return g}}}return t}getImplementationTask(t){return t.value instanceof _?new h(this.api,{type:f.ROOT,value:t.value.root}):t.value instanceof v?new h(this.api,{type:f.ARRAY,value:t.value.length}):new h(this.api,{type:f.FIELD,value:t.value.data})}async provideTokenInformation(t,n){if(this.args.clearSignContext.isJust()){const a=this.args.clearSignContext.extract().filters[t.path];if(a!==void 0&&(a.type==="amount"||a.type==="token")&&n.indexes[a.tokenIndex]===void 0){const e=a.tokenIndex,i=this.args.clearSignContext.extract().tokens[e];if(i===void 0)return p;const r=await this.api.sendCommand(new F({payload:i}));if(!o(r))return S.of(r);let{tokenIndex:d}=r.data;n.nextIndex=(d+1)%R,Number(e)===x&&(d=x),n.indexes[Number(e)]=d}}return p}async provideTrustedName(t){if(this.args.clearSignContext.isJust()&&this.chainId.isJust()){const n=this.args.clearSignContext.extract(),a=n.filters[t.path],e=n.trustedNamesAddresses[t.path];if(a!==void 0&&a.type==="trusted-name"&&e!==void 0){const s=await this.api.sendCommand(new P);if(!o(s))return y(s);const i=await this.contextModule.getContext({type:T.TRUSTED_NAME,chainId:this.chainId.extract(),address:e,challenge:s.data.challenge,types:a.types,sources:a.sources});if(i.type===T.TRUSTED_NAME){i.certificate&&await this.api.sendCommand(new k({keyUsage:i.certificate.keyUsageNumber,certificate:i.certificate.payload}));const r=await new N(this.api,{payload:i.payload,commandFactory:d=>new M({data:d.chunkedData,isFirstChunk:d.isFirstChunk})}).run();if(!o(r))return y(r)}}}return p}async filterValue(t,n){if(this.args.clearSignContext.isJust()){const a=this.args.clearSignContext.extract().filters[t.path];if(a===void 0)return p;const e=await this.provideFiltering(a,n,!1);return S.of(e)}return p}async provideFiltering(t,n,a){switch(t.type){case"trusted-name":return await this.api.sendCommand(new c({type:m.TrustedName,discarded:a,displayName:t.displayName,typesAndSourcesPayload:t.typesAndSourcesPayload,signature:t.signature}));case"datetime":return await this.api.sendCommand(new c({type:m.Datetime,discarded:a,displayName:t.displayName,signature:t.signature}));case"raw":return await this.api.sendCommand(new c({type:m.Raw,discarded:a,displayName:t.displayName,signature:t.signature}));case"token":return this.sanitizeDeviceIndex(t.tokenIndex,n),await this.api.sendCommand(new c({type:m.Token,discarded:a,tokenIndex:n.indexes[t.tokenIndex],signature:t.signature}));case"amount":return this.sanitizeDeviceIndex(t.tokenIndex,n),await this.api.sendCommand(new c({type:m.Amount,discarded:a,displayName:t.displayName,tokenIndex:n.indexes[t.tokenIndex],signature:t.signature}));default:return I({error:new b("ProvideEIP712ContextTask/provideFiltering - Unhandled filter type")})}}sanitizeDeviceIndex(t,n){n.indexes[t]===void 0&&(n.indexes[t]=n.nextIndex,n.nextIndex=(n.nextIndex+1)%R)}}export{te as ProvideEIP712ContextTask};
|
|
1
|
+
import{TypedDataCalldataParamPresence as h,VERIFYING_CONTRACT_TOKEN_INDEX as S}from"@ledgerhq/context-module";import{ClearSignContextType as r}from"@ledgerhq/context-module";import{bufferToHexaString as R,CommandResultFactory as A,isSuccessCommandResult as c,LoadCertificateCommand as E}from"@ledgerhq/device-management-kit";import{Just as y,Maybe as g,Nothing as u}from"purify-ts";import{GetChallengeCommand as b}from"../../app-binder/command/GetChallengeCommand";import{ProvideProxyInfoCommand as M}from"../../app-binder/command/ProvideProxyInfoCommand";import{ProvideTokenInformationCommand as _}from"../../app-binder/command/ProvideTokenInformationCommand";import{ProvideTrustedNameCommand as V}from"../../app-binder/command/ProvideTrustedNameCommand";import{ProvideWeb3CheckCommand as O}from"../../app-binder/command/ProvideWeb3CheckCommand";import{CalldataParamPresence as f,Eip712FilterType as o,SendEIP712FilteringCommand as d}from"../../app-binder/command/SendEIP712FilteringCommand";import{SendEIP712StructDefinitionCommand as k,StructDefinitionCommand as F}from"../../app-binder/command/SendEIP712StructDefinitionCommand";import{StructImplemType as x}from"../../app-binder/command/SendEIP712StructImplemCommand";import{SendEIP712StructImplemTask as I}from"../../app-binder/task/SendEIP712StructImplemTask";import{TypedDataValueField as J}from"../../typed-data/model/Types";import{TypedDataValueArray as P,TypedDataValueRoot as U}from"../../typed-data/model/Types";import{ProvideTransactionContextsTask as W}from"./ProvideTransactionContextsTask";import{SendPayloadInChunksTask as T}from"./SendPayloadInChunksTask";const N=5;class re{constructor(e,t,n,a=s=>new W(this.api,s)){this.api=e;this.contextModule=t;this.args=n;this.provideContextFactory=a;for(const s of this.args.domain)if(s.path==="chainId"&&s.value instanceof J){const i=BigInt(R(s.value.data));i<=Number.MAX_SAFE_INTEGER&&(this.chainId=y(Number(i)));break}}chainId=u;calldataMetadatas={};async run(){this.args.web3Check&&await this.provideContext(this.args.web3Check),await this.args.clearSignContext.ifJust(async a=>{a.proxy!==void 0&&await this.provideContext(a.proxy)});const e=A({data:void 0}),t=Object.entries(this.args.types).sort(([a],[s])=>a.localeCompare(s));for(const[a,s]of t){const i=await this.api.sendCommand(new k({command:F.Name,name:a}));if(!c(i))return i;for(const[l,m]of Object.entries(s)){const C=await this.api.sendCommand(new k({command:F.Field,name:l,type:m}));if(!c(C))return C}}if(this.args.clearSignContext.isJust()){const a=await this.api.sendCommand(new d({type:o.Activation}));if(!c(a))return a}for(const a of this.args.domain){const i=await this.getImplementationTask(a).run();if(!c(i))return i}if(this.args.clearSignContext.isJust()){const a=this.args.clearSignContext.extract(),s=await this.api.sendCommand(new d({type:o.MessageInfo,displayName:a.messageInfo.displayName,filtersCount:a.messageInfo.filtersCount,signature:a.messageInfo.signature}));if(!c(s))return s}const n={indexes:{},nextIndex:0};for(const a of this.args.message){const s=await this.provideTokenInformation(a,n);if(s.isJust())return s.extract();const i=await this.provideTrustedName(a);if(i.isJust())return i.extract();const l=await this.filterValue(a,n);if(l.isJust()&&!c(l.extract()))return l.extract();const C=await this.getImplementationTask(a).run();if(!c(C))return C;if(await this.tryProvideTransactionContext(),this.args.clearSignContext.isJust()&&a.value instanceof P&&a.value.length===0){const D=Object.entries(this.args.clearSignContext.extract().filters).filter(([p])=>p.startsWith(`${a.path}.[]`)).map(([,p])=>p);for(const p of D){const w=await this.api.sendCommand(new d({type:o.DiscardedPath,path:p.path}));if(!c(w))return w;const v=await this.provideFiltering(p,n,!0);if(!c(v))return v}}}return e}async provideContext({type:e,payload:t,certificate:n}){switch(n&&await this.api.sendCommand(new E({keyUsage:n.keyUsageNumber,certificate:n.payload})),e){case r.WEB3_CHECK:await new T(this.api,{payload:t,commandFactory:a=>new O({payload:a.chunkedData,isFirstChunk:a.isFirstChunk})}).run();break;case r.PROXY_INFO:await new T(this.api,{payload:t,commandFactory:a=>new M({data:a.chunkedData,isFirstChunk:a.isFirstChunk})}).run();break;case r.TOKEN:case r.NFT:case r.TRUSTED_NAME:case r.PLUGIN:case r.EXTERNAL_PLUGIN:case r.ENUM:case r.TRANSACTION_INFO:case r.TRANSACTION_FIELD_DESCRIPTION:case r.DYNAMIC_NETWORK:case r.DYNAMIC_NETWORK_ICON:case r.SAFE:case r.SIGNER:throw new Error(`Context type ${e} not supported in EIP712 messages`);default:{const a=e;throw new Error(`Unhandled context type ${a}`)}}}getImplementationTask(e){return e.value instanceof U?new I(this.api,{type:x.ROOT,value:e.value.root}):e.value instanceof P?new I(this.api,{type:x.ARRAY,value:e.value.length}):new I(this.api,{type:x.FIELD,value:e.value.data})}async provideTokenInformation(e,t){if(this.args.clearSignContext.isJust()){const n=this.args.clearSignContext.extract().filters[e.path];if(n!==void 0&&(n.type==="amount"||n.type==="token")&&t.indexes[n.tokenIndex]===void 0){const a=n.tokenIndex,i=this.args.clearSignContext.extract().tokens[a];if(i===void 0)return u;const l=await this.api.sendCommand(new _({payload:i}));if(!c(l))return g.of(l);let{tokenIndex:m}=l.data;t.nextIndex=(m+1)%N,Number(a)===S&&(m=S),t.indexes[Number(a)]=m}}return u}async provideTrustedName(e){if(this.args.clearSignContext.isJust()&&this.chainId.isJust()){const t=this.args.clearSignContext.extract(),n=t.filters[e.path],a=t.trustedNamesAddresses[e.path];if(n!==void 0&&n.type==="trusted-name"&&a!==void 0){const s=await this.api.sendCommand(new b);if(!c(s))return y(s);const i=await this.contextModule.getFieldContext({chainId:this.chainId.extract(),address:a,challenge:s.data.challenge,types:n.types,sources:n.sources,deviceModelId:this.args.deviceModelId},r.TRUSTED_NAME);if(i.type===r.TRUSTED_NAME){i.certificate&&await this.api.sendCommand(new E({keyUsage:i.certificate.keyUsageNumber,certificate:i.certificate.payload}));const l=await new T(this.api,{payload:i.payload,commandFactory:m=>new V({data:m.chunkedData,isFirstChunk:m.isFirstChunk})}).run();if(!c(l))return y(l)}}}return u}async filterValue(e,t){if(this.args.clearSignContext.isJust()){const n=this.args.clearSignContext.extract().filters[e.path];if(n===void 0)return u;const a=await this.provideFiltering(n,t,!1);return g.of(a)}return u}async provideFiltering(e,t,n){switch(e.type){case"trusted-name":return await this.api.sendCommand(new d({type:o.TrustedName,discarded:n,displayName:e.displayName,typesAndSourcesPayload:e.typesAndSourcesPayload,signature:e.signature}));case"datetime":return await this.api.sendCommand(new d({type:o.Datetime,discarded:n,displayName:e.displayName,signature:e.signature}));case"raw":return await this.api.sendCommand(new d({type:o.Raw,discarded:n,displayName:e.displayName,signature:e.signature}));case"token":return this.sanitizeDeviceIndex(e.tokenIndex,t),await this.api.sendCommand(new d({type:o.Token,discarded:n,tokenIndex:t.indexes[e.tokenIndex],signature:e.signature}));case"amount":return this.sanitizeDeviceIndex(e.tokenIndex,t),await this.api.sendCommand(new d({type:o.Amount,discarded:n,displayName:e.displayName,tokenIndex:t.indexes[e.tokenIndex],signature:e.signature}));case"calldata-value":return await this.provideCalldataInfos(e.calldataIndex),await this.api.sendCommand(new d({type:o.CalldataValue,discarded:n,calldataIndex:e.calldataIndex,signature:e.signature}));case"calldata-callee":return await this.provideCalldataInfos(e.calldataIndex),await this.api.sendCommand(new d({type:o.CalldataCallee,discarded:n,calldataIndex:e.calldataIndex,signature:e.signature}));case"calldata-spender":return await this.provideCalldataInfos(e.calldataIndex),await this.api.sendCommand(new d({type:o.CalldataSpender,discarded:n,calldataIndex:e.calldataIndex,signature:e.signature}));case"calldata-chain-id":return await this.provideCalldataInfos(e.calldataIndex),await this.api.sendCommand(new d({type:o.CalldataChainId,discarded:n,calldataIndex:e.calldataIndex,signature:e.signature}));case"calldata-selector":return await this.provideCalldataInfos(e.calldataIndex),await this.api.sendCommand(new d({type:o.CalldataSelector,discarded:n,calldataIndex:e.calldataIndex,signature:e.signature}));case"calldata-amount":return await this.provideCalldataInfos(e.calldataIndex),await this.api.sendCommand(new d({type:o.CalldataAmount,discarded:n,calldataIndex:e.calldataIndex,signature:e.signature}));default:{const a=e;throw new Error(`ProvideEIP712ContextTask/provideFiltering - Unhandled filter ${a}`)}}}async provideCalldataInfos(e){if(this.args.clearSignContext.isJust()){if(this.calldataMetadatas[e]!==void 0)return this.calldataMetadatas[e].remainingFilters--,u;const t=this.args.clearSignContext.extract().calldatas[e];if(t===void 0)return u;const a=[t.filter.valueFlag,t.filter.calleeFlag===h.Present,t.filter.chainIdFlag,t.filter.selectorFlag,t.filter.amountFlag,t.filter.spenderFlag===h.Present].filter(s=>s).length;return this.calldataMetadatas[e]={remainingFilters:a-1,contexts:this.args.calldatasContexts[e]},g.of(await this.api.sendCommand(new d({type:o.CalldataInfo,discarded:!1,calldataIndex:e,valueFlag:t.filter.valueFlag,calleeFlag:this.mapCalldataPresence(t.filter.calleeFlag),chainIdFlag:t.filter.chainIdFlag,selectorFlag:t.filter.selectorFlag,amountFlag:t.filter.amountFlag,spenderFlag:this.mapCalldataPresence(t.filter.spenderFlag),signature:t.filter.signature})))}return u}async tryProvideTransactionContext(){for(const e in this.calldataMetadatas){const t=this.calldataMetadatas[e];t.remainingFilters===0&&(t.contexts!==void 0&&await this.provideContextFactory({contexts:t.contexts,derivationPath:this.args.derivationPath}).run(),delete this.calldataMetadatas[e])}}mapCalldataPresence(e){switch(e){case h.None:return f.None;case h.Present:return f.Present;case h.VerifyingContract:return f.VerifyingContract;default:{const t=e;throw new Error(`Unhandled presence ${t}`)}}}sanitizeDeviceIndex(e,t){t.indexes[e]===void 0&&(t.indexes[e]=t.nextIndex,t.nextIndex=(t.nextIndex+1)%N)}}export{re as ProvideEIP712ContextTask};
|
|
2
2
|
//# sourceMappingURL=ProvideEIP712ContextTask.js.map
|