@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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ledgerhq/device-signer-kit-ethereum",
|
|
3
|
-
"version": "0.0.0-
|
|
3
|
+
"version": "0.0.0-verify-safe-address-20251016105127",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"exports": {
|
|
@@ -19,36 +19,35 @@
|
|
|
19
19
|
"./lib"
|
|
20
20
|
],
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"ethers": "6.
|
|
23
|
-
"inversify": "
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"@ledgerhq/signer-utils": "0.0.0-try-to-fix-20250429171448"
|
|
22
|
+
"ethers": "6.14.1",
|
|
23
|
+
"inversify": "7.5.1",
|
|
24
|
+
"purify-ts": "2.1.0",
|
|
25
|
+
"reflect-metadata": "0.2.2",
|
|
26
|
+
"semver": "7.7.2",
|
|
27
|
+
"xstate": "5.19.2",
|
|
28
|
+
"@ledgerhq/signer-utils": "0.0.0-verify-safe-address-20251016105127"
|
|
30
29
|
},
|
|
31
30
|
"devDependencies": {
|
|
32
|
-
"@types/semver": "
|
|
33
|
-
"rxjs": "
|
|
34
|
-
"ts-node": "
|
|
35
|
-
"@ledgerhq/context-module": "0.0.0-
|
|
36
|
-
"@ledgerhq/
|
|
37
|
-
"@ledgerhq/
|
|
38
|
-
"@ledgerhq/eslint-config-dsdk": "0.0.2",
|
|
31
|
+
"@types/semver": "7.7.0",
|
|
32
|
+
"rxjs": "7.8.2",
|
|
33
|
+
"ts-node": "10.9.2",
|
|
34
|
+
"@ledgerhq/context-module": "0.0.0-verify-safe-address-20251016105127",
|
|
35
|
+
"@ledgerhq/ldmk-tool": "0.0.1",
|
|
36
|
+
"@ledgerhq/device-management-kit": "0.0.0-verify-safe-address-20251016105127",
|
|
39
37
|
"@ledgerhq/prettier-config-dsdk": "0.0.2",
|
|
38
|
+
"@ledgerhq/eslint-config-dsdk": "0.0.2",
|
|
40
39
|
"@ledgerhq/tsconfig-dsdk": "1.0.1",
|
|
41
40
|
"@ledgerhq/vitest-config-dmk": "0.0.0"
|
|
42
41
|
},
|
|
43
42
|
"peerDependencies": {
|
|
44
|
-
"@ledgerhq/context-module": "0.0.0-
|
|
45
|
-
"@ledgerhq/device-management-kit": "0.0.0-
|
|
43
|
+
"@ledgerhq/context-module": "0.0.0-verify-safe-address-20251016105127",
|
|
44
|
+
"@ledgerhq/device-management-kit": "0.0.0-verify-safe-address-20251016105127"
|
|
46
45
|
},
|
|
47
46
|
"scripts": {
|
|
48
47
|
"prebuild": "rimraf lib",
|
|
49
|
-
"build": "pnpm
|
|
48
|
+
"build": "pnpm ldmk-tool build --entryPoints src/index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
|
|
50
49
|
"dev": "concurrently \"pnpm watch:builds\" \"pnpm watch:types\"",
|
|
51
|
-
"watch:builds": "pnpm
|
|
50
|
+
"watch:builds": "pnpm ldmk-tool watch --entryPoints src/index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
|
|
52
51
|
"watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\"",
|
|
53
52
|
"lint": "eslint",
|
|
54
53
|
"lint:fix": "pnpm lint --fix",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var n=Object.defineProperty;var t=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(a,e)=>{for(var o in e)n(a,o,{get:e[o],enumerable:!0})},p=(a,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of s(e))!l.call(a,i)&&i!==o&&n(a,i,{get:()=>e[i],enumerable:!(r=t(e,i))||r.enumerable});return a};var S=a=>p(n({},"__esModule",{value:!0}),a);var A={};c(A,{ETHEREUM_PLUGINS:()=>k});module.exports=S(A);const k=["1inch","Aave","Alkemi","Angle","APWine","ArtBlocks","Brick Towers","capsa","cBridge","ChorusOne","CIAN","Coinbase","Cometh","Compound","DODO","EigenLayer","ENS","Figment","Harvest","Kelp","Kiln","Lens","libertify","Lido","[ L ] Market","Midas","Morpho","Nested","OKX Web3","OpenSea","P2P.org","Paraswap","POAP","QuickSwap","Rarible","Ribbon","Ricochet","Rocket Pool","Spool","Squid","Staderlabs","StakeDAO","StakeKit","Swell","Thales","Yearn","Uniswap","Exchange"];0&&(module.exports={ETHEREUM_PLUGINS});
|
|
2
|
-
//# sourceMappingURL=plugins.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../src/internal/app-binder/constant/plugins.ts"],
|
|
4
|
-
"sourcesContent": ["export const ETHEREUM_PLUGINS: string[] = [\n \"1inch\",\n \"Aave\",\n \"Alkemi\",\n \"Angle\",\n \"APWine\",\n \"ArtBlocks\",\n \"Brick Towers\",\n \"capsa\",\n \"cBridge\",\n \"ChorusOne\",\n \"CIAN\",\n \"Coinbase\",\n \"Cometh\",\n \"Compound\",\n \"DODO\",\n \"EigenLayer\",\n \"ENS\",\n \"Figment\",\n \"Harvest\",\n \"Kelp\",\n \"Kiln\",\n \"Lens\",\n \"libertify\",\n \"Lido\",\n \"[ L ] Market\",\n \"Midas\",\n \"Morpho\",\n \"Nested\",\n \"OKX Web3\",\n \"OpenSea\",\n \"P2P.org\",\n \"Paraswap\",\n \"POAP\",\n \"QuickSwap\",\n \"Rarible\",\n \"Ribbon\",\n \"Ricochet\",\n \"Rocket Pool\",\n \"Spool\",\n \"Squid\",\n \"Staderlabs\",\n \"StakeDAO\",\n \"StakeKit\",\n \"Swell\",\n \"Thales\",\n \"Yearn\",\n \"Uniswap\",\n \"Exchange\", // Not a plugin, but a compatible app during exchange flows\n];\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,IAAA,eAAAC,EAAAH,GAAO,MAAME,EAA6B,CACxC,QACA,OACA,SACA,QACA,SACA,YACA,eACA,QACA,UACA,YACA,OACA,WACA,SACA,WACA,OACA,aACA,MACA,UACA,UACA,OACA,OACA,OACA,YACA,OACA,eACA,QACA,SACA,SACA,WACA,UACA,UACA,WACA,OACA,YACA,UACA,SACA,WACA,cACA,QACA,QACA,aACA,WACA,WACA,QACA,SACA,QACA,UACA,UACF",
|
|
6
|
-
"names": ["plugins_exports", "__export", "ETHEREUM_PLUGINS", "__toCommonJS"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var d=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var M=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var w=(i,e)=>{for(var n in e)d(i,n,{get:e[n],enumerable:!0})},G=(i,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of M(e))!b.call(i,a)&&a!==n&&d(i,a,{get:()=>e[a],enumerable:!(r=R(e,a))||r.enumerable});return i};var O=i=>G(d({},"__esModule",{value:!0}),i);var _={};w(_,{BuildTransactionContextTask:()=>D});module.exports=O(_);var o=require("@ledgerhq/context-module"),l=require("@ledgerhq/device-management-kit"),x=require("../../app-binder/command/GetChallengeCommand"),h=require("../../app-binder/task/GetWeb3CheckTask"),I=require("../../shared/utils/ApplicationChecker");class D{constructor(e,n,r=(a,c)=>new h.GetWeb3CheckTask(a,c)){this.api=e;this.args=n;this.getWeb3ChecksFactory=r}async run(){const{contextModule:e,mapper:n,transaction:r,options:a,appConfig:c,derivationPath:k}=this.args,y=this.api.getDeviceSessionState(),S=n.mapTransactionToSubset(r);S.ifLeft(t=>{throw t});const{subset:T,serializedTransaction:A,type:E}=S.unsafeCoerce();let u=null;c.web3ChecksEnabled&&(u=(await this.getWeb3ChecksFactory(this.api,{contextModule:e,derivationPath:k,mapper:n,transaction:r}).run()).web3Check);let g;const m=await this.api.sendCommand(new x.GetChallengeCommand);(0,l.isSuccessCommandResult)(m)&&(g=m.data.challenge);const f=await e.getContexts({challenge:g,domain:a.domain,deviceModelId:y.deviceModelId,...T}),p=f.filter(t=>t.type!==o.ClearSignContextType.ERROR&&t.type!==o.ClearSignContextType.ENUM),N=f.filter(t=>t.type===o.ClearSignContextType.ENUM);let C=[];const s=p.find(t=>t.type===o.ClearSignContextType.TRANSACTION_INFO);if(s&&!s.certificate)throw new Error("Transaction info certificate is missing");if(!this.supportsGenericParser(y,c)||s===void 0)C=p.filter(t=>t.type!==o.ClearSignContextType.TRANSACTION_INFO&&t.type!==o.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION);else{const t=p.filter(v=>v.type===o.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION);C={transactionInfo:s.payload,transactionInfoCertificate:s.certificate,transactionFields:t,transactionEnums:N}}return{clearSignContexts:C,serializedTransaction:A,chainId:T.chainId,transactionType:E,web3Check:u}}supportsGenericParser(e,n){return new I.ApplicationChecker(e,n).withMinVersionExclusive("1.14.0").excludeDeviceModel(l.DeviceModelId.NANO_S).check()}}0&&(module.exports={BuildTransactionContextTask});
|
|
2
|
-
//# sourceMappingURL=BuildTransactionContextTask.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../src/internal/app-binder/task/BuildTransactionContextTask.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type ClearSignContextSuccess,\n type ClearSignContextSuccessType,\n ClearSignContextType,\n type ContextModule,\n} from \"@ledgerhq/context-module\";\nimport {\n DeviceModelId,\n type DeviceSessionState,\n type InternalApi,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type GetConfigCommandResponse } from \"@api/app-binder/GetConfigCommandTypes\";\nimport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nimport { type TransactionType } from \"@api/model/TransactionType\";\nimport { GetChallengeCommand } from \"@internal/app-binder/command/GetChallengeCommand\";\nimport {\n GetWeb3CheckTask,\n type GetWeb3CheckTaskArgs,\n} from \"@internal/app-binder/task/GetWeb3CheckTask\";\nimport { ApplicationChecker } from \"@internal/shared/utils/ApplicationChecker\";\nimport { type TransactionMapperService } from \"@internal/transaction/service/mapper/TransactionMapperService\";\n\nimport { type GenericContext } from \"./ProvideTransactionGenericContextTask\";\n\nexport type BuildTransactionTaskResult = {\n readonly clearSignContexts: ClearSignContextSuccess[] | GenericContext;\n readonly serializedTransaction: Uint8Array;\n readonly chainId: number;\n readonly transactionType: TransactionType;\n readonly web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> | null;\n};\n\nexport type BuildTransactionContextTaskArgs = {\n readonly contextModule: ContextModule;\n readonly mapper: TransactionMapperService;\n readonly transaction: Uint8Array;\n readonly options: TransactionOptions;\n readonly appConfig: GetConfigCommandResponse;\n readonly derivationPath: string;\n};\n\nexport class BuildTransactionContextTask {\n constructor(\n private readonly api: InternalApi,\n private readonly args: BuildTransactionContextTaskArgs,\n private readonly getWeb3ChecksFactory = (\n api: InternalApi,\n args: GetWeb3CheckTaskArgs,\n ) => new GetWeb3CheckTask(api, args),\n ) {}\n\n async run(): Promise<BuildTransactionTaskResult> {\n const {\n contextModule,\n mapper,\n transaction,\n options,\n appConfig,\n derivationPath,\n } = this.args;\n const deviceState = this.api.getDeviceSessionState();\n\n // Parse transaction\n const parsed = mapper.mapTransactionToSubset(transaction);\n parsed.ifLeft((err) => {\n throw err;\n });\n const { subset, serializedTransaction, type } = parsed.unsafeCoerce();\n\n // Run the web3checks if needed\n let web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> | null =\n null;\n if (appConfig.web3ChecksEnabled) {\n web3Check = (\n await this.getWeb3ChecksFactory(this.api, {\n contextModule,\n derivationPath,\n mapper,\n transaction,\n }).run()\n ).web3Check;\n }\n\n // Get challenge\n let challenge: string | undefined = undefined;\n const challengeRes = await this.api.sendCommand(new GetChallengeCommand());\n if (isSuccessCommandResult(challengeRes)) {\n challenge = challengeRes.data.challenge;\n }\n\n // Get the clear sign contexts\n const clearSignContexts = await contextModule.getContexts({\n challenge: challenge,\n domain: options.domain,\n deviceModelId: deviceState.deviceModelId,\n ...subset,\n });\n\n // NOTE: we need to filter out the ENUM and ERROR types\n // ENUM are handled differently\n // ERROR are not handled at all for now\n const clearSignContextsSuccess: ClearSignContextSuccess<\n Exclude<ClearSignContextSuccessType, ClearSignContextType.ENUM>\n >[] = clearSignContexts.filter(\n (context) =>\n context.type !== ClearSignContextType.ERROR &&\n context.type !== ClearSignContextType.ENUM,\n );\n\n // Retrieve all ENUM contexts\n const transactionEnums: ClearSignContextSuccess<ClearSignContextType.ENUM>[] =\n clearSignContexts.filter(\n (context) => context.type === ClearSignContextType.ENUM,\n );\n\n let filteredContexts: ClearSignContextSuccess[] | GenericContext = [];\n const transactionInfo = clearSignContextsSuccess.find(\n (ctx) => ctx.type === ClearSignContextType.TRANSACTION_INFO,\n );\n\n if (transactionInfo && !transactionInfo.certificate) {\n throw new Error(\"Transaction info certificate is missing\");\n }\n\n // If the device does not support the generic parser,\n // we need to filter out the transaction info and transaction field description\n // as they are not supported by the device\n if (\n !this.supportsGenericParser(deviceState, appConfig) ||\n transactionInfo === undefined\n ) {\n filteredContexts = clearSignContextsSuccess.filter(\n (ctx) =>\n ctx.type !== ClearSignContextType.TRANSACTION_INFO &&\n ctx.type !== ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n );\n } else {\n const transactionFields = clearSignContextsSuccess.filter(\n (ctx) =>\n ctx.type === ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n );\n filteredContexts = {\n transactionInfo: transactionInfo.payload,\n transactionInfoCertificate: transactionInfo.certificate!,\n transactionFields,\n transactionEnums,\n };\n }\n\n return {\n clearSignContexts: filteredContexts,\n serializedTransaction,\n chainId: subset.chainId,\n transactionType: type,\n web3Check,\n };\n }\n\n private supportsGenericParser(\n deviceState: DeviceSessionState,\n appConfig: GetConfigCommandResponse,\n ): boolean {\n return new ApplicationChecker(deviceState, appConfig)\n .withMinVersionExclusive(\"1.14.0\")\n .excludeDeviceModel(DeviceModelId.NANO_S)\n .check();\n }\n}\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAKO,oCACPC,EAKO,2CAKPC,EAAoC,4DACpCC,EAGO,sDACPC,EAAmC,qDAsB5B,MAAMN,CAA4B,CACvC,YACmBO,EACAC,EACAC,EAAuB,CACtCF,EACAC,IACG,IAAI,mBAAiBD,EAAKC,CAAI,EACnC,CANiB,SAAAD,EACA,UAAAC,EACA,0BAAAC,CAIhB,CAEH,MAAM,KAA2C,CAC/C,KAAM,CACJ,cAAAC,EACA,OAAAC,EACA,YAAAC,EACA,QAAAC,EACA,UAAAC,EACA,eAAAC,CACF,EAAI,KAAK,KACHC,EAAc,KAAK,IAAI,sBAAsB,EAG7CC,EAASN,EAAO,uBAAuBC,CAAW,EACxDK,EAAO,OAAQC,GAAQ,CACrB,MAAMA,CACR,CAAC,EACD,KAAM,CAAE,OAAAC,EAAQ,sBAAAC,EAAuB,KAAAC,CAAK,EAAIJ,EAAO,aAAa,EAGpE,IAAIK,EACF,KACER,EAAU,oBACZQ,GACE,MAAM,KAAK,qBAAqB,KAAK,IAAK,CACxC,cAAAZ,EACA,eAAAK,EACA,OAAAJ,EACA,YAAAC,CACF,CAAC,EAAE,IAAI,GACP,WAIJ,IAAIW,EACJ,MAAMC,EAAe,MAAM,KAAK,IAAI,YAAY,IAAI,qBAAqB,KACrE,0BAAuBA,CAAY,IACrCD,EAAYC,EAAa,KAAK,WAIhC,MAAMC,EAAoB,MAAMf,EAAc,YAAY,CACxD,UAAWa,EACX,OAAQV,EAAQ,OAChB,cAAeG,EAAY,cAC3B,GAAGG,CACL,CAAC,EAKKO,EAEAD,EAAkB,OACrBE,GACCA,EAAQ,OAAS,uBAAqB,OACtCA,EAAQ,OAAS,uBAAqB,IAC1C,EAGMC,EACJH,EAAkB,OACfE,GAAYA,EAAQ,OAAS,uBAAqB,IACrD,EAEF,IAAIE,EAA+D,CAAC,EACpE,MAAMC,EAAkBJ,EAAyB,KAC9CK,GAAQA,EAAI,OAAS,uBAAqB,gBAC7C,EAEA,GAAID,GAAmB,CAACA,EAAgB,YACtC,MAAM,IAAI,MAAM,yCAAyC,EAM3D,GACE,CAAC,KAAK,sBAAsBd,EAAaF,CAAS,GAClDgB,IAAoB,OAEpBD,EAAmBH,EAAyB,OACzCK,GACCA,EAAI,OAAS,uBAAqB,kBAClCA,EAAI,OAAS,uBAAqB,6BACtC,MACK,CACL,MAAMC,EAAoBN,EAAyB,OAChDK,GACCA,EAAI,OAAS,uBAAqB,6BACtC,EACAF,EAAmB,CACjB,gBAAiBC,EAAgB,QACjC,2BAA4BA,EAAgB,YAC5C,kBAAAE,EACA,iBAAAJ,CACF,CACF,CAEA,MAAO,CACL,kBAAmBC,EACnB,sBAAAT,EACA,QAASD,EAAO,QAChB,gBAAiBE,EACjB,UAAAC,CACF,CACF,CAEQ,sBACNN,EACAF,EACS,CACT,OAAO,IAAI,qBAAmBE,EAAaF,CAAS,EACjD,wBAAwB,QAAQ,EAChC,mBAAmB,gBAAc,MAAM,EACvC,MAAM,CACX,CACF",
|
|
6
|
-
"names": ["BuildTransactionContextTask_exports", "__export", "BuildTransactionContextTask", "__toCommonJS", "import_context_module", "import_device_management_kit", "import_GetChallengeCommand", "import_GetWeb3CheckTask", "import_ApplicationChecker", "api", "args", "getWeb3ChecksFactory", "contextModule", "mapper", "transaction", "options", "appConfig", "derivationPath", "deviceState", "parsed", "err", "subset", "serializedTransaction", "type", "web3Check", "challenge", "challengeRes", "clearSignContexts", "clearSignContextsSuccess", "context", "transactionEnums", "filteredContexts", "transactionInfo", "ctx", "transactionFields"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var a=require("@ledgerhq/context-module"),e=require("@ledgerhq/device-management-kit"),x=require("ethers"),u=require("purify-ts"),m=require("../../app-binder/device-action/__test-utils__/makeInternalApi"),p=require("./BuildTransactionContextTask");describe("BuildTransactionContextTask",()=>{const r={getContext:vi.fn(),getContexts:vi.fn(),getTypedDataFilters:vi.fn(),getWeb3Checks:vi.fn()},l={mapTransactionToSubset:vi.fn()},h={domain:"domain-name.eth"},S=(0,e.hexaStringToBuffer)(x.Transaction.from({chainId:1n,nonce:0,data:"0x"}).unsignedSerialized),C={keyUsageNumber:1,payload:new Uint8Array([1,2,3])};let d;const o=(0,m.makeDeviceActionInternalApiMock)(),i=vi.fn();function y(n){return{blindSigningEnabled:!1,web3ChecksEnabled:n,web3ChecksOptIn:!1,version:"1.13.0"}}beforeEach(()=>{vi.resetAllMocks(),o.sendCommand.mockResolvedValue((0,e.CommandResultFactory)({data:{challenge:"challenge"}})),i.mockReturnValue({run:async()=>({web3Check:null})}),d={contextModule:r,mapper:l,transaction:S,options:h,appConfig:y(!1),derivationPath:"44'/60'/0'/0/0"}}),it("should build the transaction context without clear sign contexts",async()=>{const n=new Uint8Array([1,2,3]),t=[],s={subset:{chainId:1,to:void 0,data:"0x"},serializedTransaction:n,type:0};l.mapTransactionToSubset.mockReturnValueOnce((0,u.Right)(s)),r.getContexts.mockResolvedValueOnce(t),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:e.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const c=await new p.BuildTransactionContextTask(o,{...d,appConfig:y(!0)},i).run();expect(c).toEqual({clearSignContexts:t,serializedTransaction:n,chainId:1,transactionType:0,web3Check:null})}),it("should build the transaction context with web3checks",async()=>{const n=new Uint8Array([1,2,3]),t=[],s={subset:{chainId:1,to:void 0,data:"0x"},serializedTransaction:n,type:0},c="web3Check";i.mockReturnValueOnce({run:async()=>({web3Check:c})}),l.mapTransactionToSubset.mockReturnValueOnce((0,u.Right)(s)),r.getContexts.mockResolvedValueOnce(t),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:e.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const T=await new p.BuildTransactionContextTask(o,{...d,appConfig:y(!0)},i).run();expect(T).toEqual({clearSignContexts:t,serializedTransaction:n,chainId:1,transactionType:0,web3Check:c})}),it("should build the transaction context with clear sign contexts",async()=>{const n=new Uint8Array([1,2,3]),t=[{type:a.ClearSignContextType.TOKEN,payload:"payload-1"},{type:a.ClearSignContextType.NFT,payload:"payload-2"}],s={subset:{chainId:1,to:void 0,data:"0x"},serializedTransaction:n,type:2},c="web3Check";i.mockReturnValueOnce({run:async()=>({web3Check:c})}),l.mapTransactionToSubset.mockReturnValueOnce((0,u.Right)(s)),r.getContexts.mockResolvedValueOnce(t),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:e.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const T=await new p.BuildTransactionContextTask(o,d,i).run();expect(T).toEqual({clearSignContexts:t,serializedTransaction:n,chainId:1,transactionType:2,web3Check:null})}),it("should build the transaction context with generic-parser context",async()=>{const n=new Uint8Array([1,2,3]),t=[{type:a.ClearSignContextType.TRANSACTION_INFO,payload:"payload-1",certificate:C},{type:a.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-2"},{type:a.ClearSignContextType.ENUM,payload:"payload-3",id:1,value:2,certificate:C},{type:a.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-4"}],s={subset:{chainId:1,to:void 0,data:"0x"},serializedTransaction:n,type:2};l.mapTransactionToSubset.mockReturnValueOnce((0,u.Right)(s)),r.getContexts.mockResolvedValueOnce(t),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.15.0"},deviceModelId:e.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const c=await new p.BuildTransactionContextTask(o,d,i).run();expect(c).toEqual({clearSignContexts:{transactionInfo:"payload-1",transactionInfoCertificate:C,transactionFields:[t[1],t[3]],transactionEnums:[t[2]]},serializedTransaction:n,chainId:1,transactionType:2,web3Check:null})}),it("should call the mapper with the transaction",async()=>{const n=new Uint8Array([1,2,3]),t=[],s={subset:{chainId:1,to:void 0,data:"0x"},serializedTransaction:n,type:0};l.mapTransactionToSubset.mockReturnValueOnce((0,u.Right)(s)),r.getContexts.mockResolvedValueOnce(t),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:e.DeviceModelId.FLEX,isSecureConnectionAllowed:!1}),await new p.BuildTransactionContextTask(o,d,i).run(),expect(l.mapTransactionToSubset).toHaveBeenCalledWith(S)}),it("should call the web3checks factory with correct parameters",async()=>{const n=new Uint8Array([1,2,3]),t=[],s={subset:{chainId:1,to:void 0,data:"0x"},serializedTransaction:n,type:0};l.mapTransactionToSubset.mockReturnValueOnce((0,u.Right)(s)),r.getContexts.mockResolvedValueOnce(t),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:e.DeviceModelId.FLEX,isSecureConnectionAllowed:!1}),await new p.BuildTransactionContextTask(o,{...d,appConfig:y(!0)},i).run(),expect(i).toHaveBeenCalledWith(o,{contextModule:r,derivationPath:"44'/60'/0'/0/0",mapper:l,transaction:S})}),it("should call the context module with the correct parameters",async()=>{const n=new Uint8Array([1,2,3]),t=[],s={subset:{chainId:1,to:void 0,data:"0x"},serializedTransaction:n,type:0};l.mapTransactionToSubset.mockReturnValueOnce((0,u.Right)(s)),r.getContexts.mockResolvedValueOnce(t),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:e.DeviceModelId.FLEX,isSecureConnectionAllowed:!1}),await new p.BuildTransactionContextTask(o,d,i).run(),expect(r.getContexts).toHaveBeenCalledWith({deviceModelId:e.DeviceModelId.FLEX,challenge:"challenge",domain:"domain-name.eth",...s.subset})}),it("should call the context module without context on error",async()=>{const n=new Uint8Array([1,2,3]),t=[],s={subset:{chainId:1,to:void 0,data:"0x"},serializedTransaction:n,type:0};l.mapTransactionToSubset.mockReturnValueOnce((0,u.Right)(s)),r.getContexts.mockResolvedValueOnce(t),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:e.DeviceModelId.FLEX,isSecureConnectionAllowed:!1}),o.sendCommand.mockResolvedValueOnce((0,e.CommandResultFactory)({error:new e.UnknownDeviceExchangeError})),await new p.BuildTransactionContextTask(o,d,i).run(),expect(r.getContexts).toHaveBeenCalledWith({deviceModelId:e.DeviceModelId.FLEX,challenge:void 0,domain:"domain-name.eth",...s.subset})}),it("should throw an error if the mapper returns an error",async()=>{const n=new Error("error");l.mapTransactionToSubset.mockReturnValueOnce((0,u.Left)(n)),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:e.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const t=new p.BuildTransactionContextTask(o,d,i);await expect(t.run()).rejects.toThrow(n)}),it("should exclude error contexts from the result",async()=>{const n=new Uint8Array([1,2,3]),t=[{type:a.ClearSignContextType.ERROR,error:new Error("error")},{type:a.ClearSignContextType.TOKEN,payload:"payload-1"},{type:a.ClearSignContextType.ERROR,error:new Error("error")},{type:a.ClearSignContextType.NFT,payload:"payload-2"}],s={subset:{chainId:1,to:void 0,data:"0x"},serializedTransaction:n,type:0};l.mapTransactionToSubset.mockReturnValueOnce((0,u.Right)(s)),r.getContexts.mockResolvedValueOnce(t),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:e.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const c=await new p.BuildTransactionContextTask(o,d,i).run();expect(c).toEqual({clearSignContexts:[t[1],t[3]],serializedTransaction:n,chainId:1,transactionType:0,web3Check:null})}),it("should exclude generic-parser contexts from the result on old apps",async()=>{const n=new Uint8Array([1,2,3]),t=[{type:a.ClearSignContextType.TRANSACTION_INFO,payload:"transaction_info",certificate:C},{type:a.ClearSignContextType.TOKEN,payload:"payload-1"},{type:a.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"transaction_field"},{type:a.ClearSignContextType.NFT,payload:"payload-2"},{type:a.ClearSignContextType.ENUM,payload:"enum",id:1,value:2,certificate:C}],s={subset:{chainId:1,to:void 0,data:"0x"},serializedTransaction:n,type:0};l.mapTransactionToSubset.mockReturnValueOnce((0,u.Right)(s)),r.getContexts.mockResolvedValueOnce(t),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:e.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const c=await new p.BuildTransactionContextTask(o,d,i).run();expect(c).toEqual({clearSignContexts:[t[1],t[3]],serializedTransaction:n,chainId:1,transactionType:0,web3Check:null})}),it("should exclude generic-parser contexts from the result if no transaction_info was found",async()=>{const n=new Uint8Array([1,2,3]),t=[{type:a.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"transaction_field"},{type:a.ClearSignContextType.TOKEN,payload:"payload-1"},{type:a.ClearSignContextType.ENUM,payload:"enum",id:1,value:2},{type:a.ClearSignContextType.NFT,payload:"payload-2"}],s={subset:{chainId:1,to:void 0,data:"0x"},serializedTransaction:n,type:0};l.mapTransactionToSubset.mockReturnValueOnce((0,u.Right)(s)),r.getContexts.mockResolvedValueOnce(t),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.14.0"},deviceModelId:e.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const c=await new p.BuildTransactionContextTask(o,d,i).run();expect(c).toEqual({clearSignContexts:[t[1],t[3]],serializedTransaction:n,chainId:1,transactionType:0,web3Check:null})}),it("should exclude legacy contexts from the result for generic-parser transactions",async()=>{const n=new Uint8Array([1,2,3]),t=[{type:a.ClearSignContextType.TOKEN,payload:"payload-1"},{type:a.ClearSignContextType.TRANSACTION_INFO,payload:"payload-2",certificate:C},{type:a.ClearSignContextType.EXTERNAL_PLUGIN,payload:"payload-3"},{type:a.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-4"},{type:a.ClearSignContextType.ENUM,payload:"payload-5",id:1,value:2,certificate:C}],s={subset:{chainId:1,to:void 0,data:"0x"},serializedTransaction:n,type:2};l.mapTransactionToSubset.mockReturnValueOnce((0,u.Right)(s)),r.getContexts.mockResolvedValueOnce(t),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.15.0"},deviceModelId:e.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const c=await new p.BuildTransactionContextTask(o,d,i).run();expect(c).toEqual({clearSignContexts:{transactionInfo:"payload-2",transactionInfoCertificate:C,transactionFields:[t[3]],transactionEnums:[t[4]]},serializedTransaction:n,chainId:1,transactionType:2,web3Check:null})}),it("should exclude generic-parser contexts with a nano s device",async()=>{const n=new Uint8Array([1,2,3]),t=[{type:a.ClearSignContextType.TOKEN,payload:"payload-1"},{type:a.ClearSignContextType.TRANSACTION_INFO,payload:"payload-2",certificate:C},{type:a.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-3"},{type:a.ClearSignContextType.ENUM,payload:"payload-4",id:1,value:2,certificate:C}],s={subset:{chainId:1,to:void 0,data:"0x"},serializedTransaction:n,type:2};l.mapTransactionToSubset.mockReturnValueOnce((0,u.Right)(s)),r.getContexts.mockResolvedValueOnce(t),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.14.0"},deviceModelId:e.DeviceModelId.NANO_S,isSecureConnectionAllowed:!1});const c=await new p.BuildTransactionContextTask(o,d,i).run();expect(c).toEqual({clearSignContexts:[t[0]],serializedTransaction:n,chainId:1,transactionType:2,web3Check:null})}),it("should exclude generic-parser contexts with an old app version",async()=>{const n=new Uint8Array([1,2,3]),t=[{type:a.ClearSignContextType.TOKEN,payload:"payload-1"},{type:a.ClearSignContextType.TRANSACTION_INFO,payload:"payload-2",certificate:C},{type:a.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-3"},{type:a.ClearSignContextType.ENUM,payload:"payload-4",id:1,value:2,certificate:C}],s={subset:{chainId:1,to:void 0,data:"0x"},serializedTransaction:n,type:2};l.mapTransactionToSubset.mockReturnValueOnce((0,u.Right)(s)),r.getContexts.mockResolvedValueOnce(t),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:e.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const c=await new p.BuildTransactionContextTask(o,d,i).run();expect(c).toEqual({clearSignContexts:[t[0]],serializedTransaction:n,chainId:1,transactionType:2,web3Check:null})}),it("should exclude generic-parser contexts with a non ready device",async()=>{const n=new Uint8Array([1,2,3]),t=[{type:a.ClearSignContextType.TOKEN,payload:"payload-1"},{type:a.ClearSignContextType.TRANSACTION_INFO,payload:"payload-2",certificate:C},{type:a.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-3"},{type:a.ClearSignContextType.ENUM,payload:"payload-4",id:1,value:2,certificate:C}],s={subset:{chainId:1,to:void 0,data:"0x"},serializedTransaction:n,type:2};l.mapTransactionToSubset.mockReturnValueOnce((0,u.Right)(s)),r.getContexts.mockResolvedValueOnce(t),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.Connected,deviceStatus:e.DeviceStatus.NOT_CONNECTED,deviceModelId:e.DeviceModelId.FLEX});const c=await new p.BuildTransactionContextTask(o,d,i).run();expect(c).toEqual({clearSignContexts:[t[0]],serializedTransaction:n,chainId:1,transactionType:2,web3Check:null})}),it("should return an error if the transaction info certificate is missing",async()=>{const n=new Uint8Array([1,2,3]),t=[{type:a.ClearSignContextType.TRANSACTION_INFO,payload:"payload-1"},{type:a.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-2"},{type:a.ClearSignContextType.ENUM,payload:"payload-3",id:1,value:2}],s={subset:{chainId:1,to:void 0,data:"0x"},serializedTransaction:n,type:2};l.mapTransactionToSubset.mockReturnValueOnce((0,u.Right)(s)),r.getContexts.mockResolvedValueOnce(t),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.14.0"},deviceModelId:e.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const c=new p.BuildTransactionContextTask(o,d,i);await expect(c.run()).rejects.toThrow("Transaction info certificate is missing")})});
|
|
2
|
-
//# sourceMappingURL=BuildTransactionContextTask.test.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../src/internal/app-binder/task/BuildTransactionContextTask.test.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type ClearSignContext,\n type ClearSignContextSuccess,\n ClearSignContextType,\n type PkiCertificate,\n} from \"@ledgerhq/context-module\";\nimport {\n CommandResultFactory,\n DeviceModelId,\n DeviceSessionStateType,\n DeviceStatus,\n hexaStringToBuffer,\n UnknownDeviceExchangeError,\n} from \"@ledgerhq/device-management-kit\";\nimport { Transaction } from \"ethers\";\nimport { Left, Right } from \"purify-ts\";\n\nimport type { GetConfigCommandResponse } from \"@api/app-binder/GetConfigCommandTypes\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport { type TransactionMapperResult } from \"@internal/transaction/service/mapper/model/TransactionMapperResult\";\nimport { type TransactionMapperService } from \"@internal/transaction/service/mapper/TransactionMapperService\";\n\nimport {\n BuildTransactionContextTask,\n type BuildTransactionContextTaskArgs,\n} from \"./BuildTransactionContextTask\";\n\ndescribe(\"BuildTransactionContextTask\", () => {\n const contextModuleMock = {\n getContext: vi.fn(),\n getContexts: vi.fn(),\n getTypedDataFilters: vi.fn(),\n getWeb3Checks: vi.fn(),\n };\n const mapperMock = {\n mapTransactionToSubset: vi.fn(),\n };\n const defaultOptions = {\n domain: \"domain-name.eth\",\n };\n const defaultTransaction: Uint8Array = hexaStringToBuffer(\n Transaction.from({\n chainId: 1n,\n nonce: 0,\n data: \"0x\",\n }).unsignedSerialized,\n )!;\n const defaultCertificate: PkiCertificate = {\n keyUsageNumber: 1,\n payload: new Uint8Array([0x01, 0x02, 0x03]),\n };\n\n let defaultArgs: BuildTransactionContextTaskArgs;\n const apiMock = makeDeviceActionInternalApiMock();\n const getWeb3ChecksFactoryMock = vi.fn();\n\n function createAppConfig(\n web3ChecksEnabled: boolean,\n ): GetConfigCommandResponse {\n return {\n blindSigningEnabled: false,\n web3ChecksEnabled,\n web3ChecksOptIn: false,\n version: \"1.13.0\",\n };\n }\n\n beforeEach(() => {\n vi.resetAllMocks();\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: { challenge: \"challenge\" } }),\n );\n getWeb3ChecksFactoryMock.mockReturnValue({\n run: async () => ({ web3Check: null }),\n });\n\n defaultArgs = {\n contextModule: contextModuleMock,\n mapper: mapperMock as unknown as TransactionMapperService,\n transaction: defaultTransaction,\n options: defaultOptions,\n appConfig: createAppConfig(false),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n });\n\n it(\"should build the transaction context without clear sign contexts\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\n const clearSignContexts: ClearSignContext[] = [];\n const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 0,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildTransactionContextTask(\n apiMock,\n { ...defaultArgs, appConfig: createAppConfig(true) },\n getWeb3ChecksFactoryMock,\n ).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts,\n serializedTransaction,\n chainId: 1,\n transactionType: 0,\n web3Check: null,\n });\n });\n\n it(\"should build the transaction context with web3checks\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\n const clearSignContexts: ClearSignContext[] = [];\n const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 0,\n };\n const expectedWeb3Check =\n \"web3Check\" as unknown as ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK>;\n getWeb3ChecksFactoryMock.mockReturnValueOnce({\n run: async () => ({ web3Check: expectedWeb3Check }),\n });\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildTransactionContextTask(\n apiMock,\n { ...defaultArgs, appConfig: createAppConfig(true) },\n getWeb3ChecksFactoryMock,\n ).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts,\n serializedTransaction,\n chainId: 1,\n transactionType: 0,\n web3Check: expectedWeb3Check,\n });\n });\n\n it(\"should build the transaction context with clear sign contexts\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.NFT,\n payload: \"payload-2\",\n },\n ];\n const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 2,\n };\n const expectedWeb3Check =\n \"web3Check\" as unknown as ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK>;\n getWeb3ChecksFactoryMock.mockReturnValueOnce({\n run: async () => ({ web3Check: expectedWeb3Check }),\n });\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n getWeb3ChecksFactoryMock,\n ).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts,\n serializedTransaction,\n chainId: 1,\n transactionType: 2,\n web3Check: null,\n });\n });\n\n it(\"should build the transaction context with generic-parser context\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-1\",\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-2\",\n },\n {\n type: ClearSignContextType.ENUM,\n payload: \"payload-3\",\n id: 1,\n value: 2,\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-4\",\n },\n ];\n const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 2,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.15.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n getWeb3ChecksFactoryMock,\n ).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: {\n transactionInfo: \"payload-1\",\n transactionInfoCertificate: defaultCertificate,\n transactionFields: [clearSignContexts[1], clearSignContexts[3]],\n transactionEnums: [clearSignContexts[2]],\n },\n serializedTransaction,\n chainId: 1,\n transactionType: 2,\n web3Check: null,\n });\n });\n\n it(\"should call the mapper with the transaction\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\n const clearSignContexts: ClearSignContext[] = [];\n const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 0,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n await new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n getWeb3ChecksFactoryMock,\n ).run();\n\n // THEN\n expect(mapperMock.mapTransactionToSubset).toHaveBeenCalledWith(\n defaultTransaction,\n );\n });\n\n it(\"should call the web3checks factory with correct parameters\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\n const clearSignContexts: ClearSignContext[] = [];\n const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 0,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n await new BuildTransactionContextTask(\n apiMock,\n { ...defaultArgs, appConfig: createAppConfig(true) },\n getWeb3ChecksFactoryMock,\n ).run();\n\n // THEN\n expect(getWeb3ChecksFactoryMock).toHaveBeenCalledWith(apiMock, {\n contextModule: contextModuleMock,\n derivationPath: \"44'/60'/0'/0/0\",\n mapper: mapperMock,\n transaction: defaultTransaction,\n });\n });\n\n it(\"should call the context module with the correct parameters\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\n const clearSignContexts: ClearSignContext[] = [];\n const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 0,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n await new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n getWeb3ChecksFactoryMock,\n ).run();\n\n // THEN\n expect(contextModuleMock.getContexts).toHaveBeenCalledWith({\n deviceModelId: DeviceModelId.FLEX,\n challenge: \"challenge\",\n domain: \"domain-name.eth\",\n ...mapperResult.subset,\n });\n });\n\n it(\"should call the context module without context on error\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\n const clearSignContexts: ClearSignContext[] = [];\n const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 0,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({ error: new UnknownDeviceExchangeError() }),\n );\n\n // WHEN\n await new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n getWeb3ChecksFactoryMock,\n ).run();\n\n // THEN\n expect(contextModuleMock.getContexts).toHaveBeenCalledWith({\n deviceModelId: DeviceModelId.FLEX,\n challenge: undefined,\n domain: \"domain-name.eth\",\n ...mapperResult.subset,\n });\n });\n\n it(\"should throw an error if the mapper returns an error\", async () => {\n // GIVEN\n const error = new Error(\"error\");\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Left(error));\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const task = new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n getWeb3ChecksFactoryMock,\n );\n\n // THEN\n await expect(task.run()).rejects.toThrow(error);\n });\n\n it(\"should exclude error contexts from the result\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.ERROR,\n error: new Error(\"error\"),\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.ERROR,\n error: new Error(\"error\"),\n },\n {\n type: ClearSignContextType.NFT,\n payload: \"payload-2\",\n },\n ];\n const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 0,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n getWeb3ChecksFactoryMock,\n ).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[1], clearSignContexts[3]],\n serializedTransaction,\n chainId: 1,\n transactionType: 0,\n web3Check: null,\n });\n });\n\n it(\"should exclude generic-parser contexts from the result on old apps\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"transaction_info\",\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"transaction_field\",\n },\n {\n type: ClearSignContextType.NFT,\n payload: \"payload-2\",\n },\n {\n type: ClearSignContextType.ENUM,\n payload: \"enum\",\n id: 1,\n value: 2,\n certificate: defaultCertificate,\n },\n ];\n const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 0,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n getWeb3ChecksFactoryMock,\n ).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[1], clearSignContexts[3]],\n serializedTransaction,\n chainId: 1,\n transactionType: 0,\n web3Check: null,\n });\n });\n\n it(\"should exclude generic-parser contexts from the result if no transaction_info was found\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"transaction_field\",\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.ENUM,\n payload: \"enum\",\n id: 1,\n value: 2,\n },\n {\n type: ClearSignContextType.NFT,\n payload: \"payload-2\",\n },\n ];\n const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 0,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.14.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n getWeb3ChecksFactoryMock,\n ).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[1], clearSignContexts[3]],\n serializedTransaction,\n chainId: 1,\n transactionType: 0,\n web3Check: null,\n });\n });\n\n it(\"should exclude legacy contexts from the result for generic-parser transactions\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-2\",\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload: \"payload-3\",\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-4\",\n },\n {\n type: ClearSignContextType.ENUM,\n payload: \"payload-5\",\n id: 1,\n value: 2,\n certificate: defaultCertificate,\n },\n ];\n const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 2,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.15.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n getWeb3ChecksFactoryMock,\n ).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: {\n transactionInfo: \"payload-2\",\n transactionInfoCertificate: defaultCertificate,\n transactionFields: [clearSignContexts[3]],\n transactionEnums: [clearSignContexts[4]],\n },\n serializedTransaction,\n chainId: 1,\n transactionType: 2,\n web3Check: null,\n });\n });\n\n it(\"should exclude generic-parser contexts with a nano s device\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-2\",\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-3\",\n },\n {\n type: ClearSignContextType.ENUM,\n payload: \"payload-4\",\n id: 1,\n value: 2,\n certificate: defaultCertificate,\n },\n ];\n const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 2,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.14.0\" },\n deviceModelId: DeviceModelId.NANO_S,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n getWeb3ChecksFactoryMock,\n ).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[0]],\n serializedTransaction,\n chainId: 1,\n transactionType: 2,\n web3Check: null,\n });\n });\n\n it(\"should exclude generic-parser contexts with an old app version\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-2\",\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-3\",\n },\n {\n type: ClearSignContextType.ENUM,\n payload: \"payload-4\",\n id: 1,\n value: 2,\n certificate: defaultCertificate,\n },\n ];\n const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 2,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n getWeb3ChecksFactoryMock,\n ).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[0]],\n serializedTransaction,\n chainId: 1,\n transactionType: 2,\n web3Check: null,\n });\n });\n\n it(\"should exclude generic-parser contexts with a non ready device\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-2\",\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-3\",\n },\n {\n type: ClearSignContextType.ENUM,\n payload: \"payload-4\",\n id: 1,\n value: 2,\n certificate: defaultCertificate,\n },\n ];\n const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 2,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.NOT_CONNECTED,\n deviceModelId: DeviceModelId.FLEX,\n });\n\n // WHEN\n const result = await new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n getWeb3ChecksFactoryMock,\n ).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[0]],\n serializedTransaction,\n chainId: 1,\n transactionType: 2,\n web3Check: null,\n });\n });\n\n it(\"should return an error if the transaction info certificate is missing\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-2\",\n },\n {\n type: ClearSignContextType.ENUM,\n payload: \"payload-3\",\n id: 1,\n value: 2,\n },\n ];\n const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 2,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.14.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const task = new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n getWeb3ChecksFactoryMock,\n );\n\n // THEN\n await expect(task.run()).rejects.toThrow(\n \"Transaction info certificate is missing\",\n );\n });\n});\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["import_context_module", "import_device_management_kit", "import_ethers", "import_purify_ts", "import_makeInternalApi", "import_BuildTransactionContextTask", "contextModuleMock", "mapperMock", "defaultOptions", "defaultTransaction", "defaultCertificate", "defaultArgs", "apiMock", "getWeb3ChecksFactoryMock", "createAppConfig", "web3ChecksEnabled", "serializedTransaction", "clearSignContexts", "mapperResult", "result", "expectedWeb3Check", "error", "task"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var m=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var w=(a,e)=>{for(var t in e)m(a,t,{get:e[t],enumerable:!0})},S=(a,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of l(e))!f.call(a,r)&&r!==t&&m(a,r,{get:()=>e[r],enumerable:!(i=E(e,r))||i.enumerable});return a};var k=a=>S(m({},"__esModule",{value:!0}),a);var x={};w(x,{ProvideTransactionContextTask:()=>v});module.exports=k(x);var o=require("@ledgerhq/context-module"),n=require("@ledgerhq/device-management-kit"),s=require("purify-ts"),d=require("../../app-binder/command/ProvideNFTInformationCommand"),c=require("../../app-binder/command/ProvideTokenInformationCommand"),u=require("../../app-binder/command/ProvideTrustedNameCommand"),p=require("../../app-binder/command/ProvideWeb3CheckCommand"),h=require("../../app-binder/command/SetExternalPluginCommand"),T=require("../../app-binder/command/SetPluginCommand"),C=require("./SendPayloadInChunksTask");class v{constructor(e,t){this.api=e;this.args=t}async run(){if(this.args.web3Check){const e=await this.provideContext(this.args.web3Check);if(!(0,n.isSuccessCommandResult)(e))return(0,s.Just)(e)}for(const e of this.args.clearSignContexts){const t=await this.provideContext(e);if(!(0,n.isSuccessCommandResult)(t))return(0,s.Just)(t)}return s.Nothing}async provideContext({type:e,payload:t,certificate:i}){switch(i&&await this.api.sendCommand(new n.LoadCertificateCommand({keyUsage:i.keyUsageNumber,certificate:i.payload})),e){case o.ClearSignContextType.PLUGIN:return await this.api.sendCommand(new T.SetPluginCommand({payload:t}));case o.ClearSignContextType.EXTERNAL_PLUGIN:return await this.api.sendCommand(new h.SetExternalPluginCommand({payload:t}));case o.ClearSignContextType.NFT:return await this.api.sendCommand(new d.ProvideNFTInformationCommand({payload:t}));case o.ClearSignContextType.TOKEN:return await this.api.sendCommand(new c.ProvideTokenInformationCommand({payload:t}));case o.ClearSignContextType.TRUSTED_NAME:return new C.SendPayloadInChunksTask(this.api,{payload:t,commandFactory:r=>new u.ProvideTrustedNameCommand({data:r.chunkedData,isFirstChunk:r.isFirstChunk})}).run();case o.ClearSignContextType.ENUM:case o.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION:case o.ClearSignContextType.TRANSACTION_INFO:return(0,n.CommandResultFactory)({error:new n.InvalidStatusWordError("The context type [EXTERNAL_PLUGIN] is not valid here")});case o.ClearSignContextType.WEB3_CHECK:return new C.SendPayloadInChunksTask(this.api,{payload:t,commandFactory:r=>new p.ProvideWeb3CheckCommand({payload:r.chunkedData,isFirstChunk:r.isFirstChunk})}).run();default:{const r=e;return(0,n.CommandResultFactory)({error:new n.InvalidStatusWordError(`The context type [${r}] is not covered`)})}}}}0&&(module.exports={ProvideTransactionContextTask});
|
|
2
|
-
//# sourceMappingURL=ProvideTransactionContextTask.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../src/internal/app-binder/task/ProvideTransactionContextTask.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type ClearSignContextSuccess,\n ClearSignContextType,\n} from \"@ledgerhq/context-module\";\nimport {\n type CommandErrorResult,\n type CommandResult,\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n isSuccessCommandResult,\n LoadCertificateCommand,\n} from \"@ledgerhq/device-management-kit\";\nimport { Just, type Maybe, Nothing } from \"purify-ts\";\n\nimport { ProvideNFTInformationCommand } from \"@internal/app-binder/command/ProvideNFTInformationCommand\";\nimport {\n ProvideTokenInformationCommand,\n type ProvideTokenInformationCommandResponse,\n} from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\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 { SendPayloadInChunksTask } from \"./SendPayloadInChunksTask\";\n\nexport type ProvideTransactionContextTaskArgs = {\n /**\n * The valid clear sign contexts offerred by the `BuildTrancationContextTask`.\n */\n clearSignContexts: ClearSignContextSuccess[];\n web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> | null;\n};\n\n/**\n * This task is responsible for providing the transaction context to the device.\n * It will send the 5 necessary commands:\n * - `SetPluginCommand` (single command)\n * - `SetExternalPluginCommand` (single command)\n * - `ProvideNFTInformationCommand` (single command)\n * - `ProvideTokenInformationCommand` (single command)\n * - `ProvideTrustedNameCommand` (__mulpitle commands__)\n *\n * The method `provideTrustedNameTask` is dedicated to send the multiple `ProvideTrustedNameCommand`.\n */\nexport class ProvideTransactionContextTask {\n constructor(\n private api: InternalApi,\n private args: ProvideTransactionContextTaskArgs,\n ) {}\n\n async run(): Promise<Maybe<CommandErrorResult<EthErrorCodes>>> {\n if (this.args.web3Check) {\n const res = await this.provideContext(this.args.web3Check);\n if (!isSuccessCommandResult(res)) {\n return Just(res);\n }\n }\n for (const context of this.args.clearSignContexts) {\n const res = await this.provideContext(context);\n if (!isSuccessCommandResult(res)) {\n return Just(res);\n }\n }\n return Nothing;\n }\n\n /**\n * This method will send a command according to the clear sign context type and return the command result if only one command\n * is sent, otherwise it will return the result of the `provideTrustedNameTask`.\n *\n * @param context The clear sign context to provide.\n * @returns A promise that resolves when the command is sent or result of the `provideTrustedNameTask`.\n */\n async provideContext({\n type,\n payload,\n certificate,\n }: ClearSignContextSuccess): Promise<\n CommandResult<void | ProvideTokenInformationCommandResponse, EthErrorCodes>\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.TRUSTED_NAME: {\n return new SendPayloadInChunksTask(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 case ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION:\n case ClearSignContextType.TRANSACTION_INFO: {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n \"The context type [EXTERNAL_PLUGIN] is not valid here\",\n ),\n });\n }\n case ClearSignContextType.WEB3_CHECK:\n return new SendPayloadInChunksTask(this.api, {\n payload,\n commandFactory: (args) =>\n new ProvideWeb3CheckCommand({\n payload: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\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": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAGO,oCACPC,EAQO,2CACPC,EAA0C,qBAE1CC,EAA6C,qEAC7CC,EAGO,uEACPC,EAA0C,kEAC1CC,EAAwC,gEACxCC,EAAyC,iEACzCC,EAAiC,yDAGjCC,EAAwC,qCAqBjC,MAAMX,CAA8B,CACzC,YACUY,EACAC,EACR,CAFQ,SAAAD,EACA,UAAAC,CACP,CAEH,MAAM,KAAyD,CAC7D,GAAI,KAAK,KAAK,UAAW,CACvB,MAAMC,EAAM,MAAM,KAAK,eAAe,KAAK,KAAK,SAAS,EACzD,GAAI,IAAC,0BAAuBA,CAAG,EAC7B,SAAO,QAAKA,CAAG,CAEnB,CACA,UAAWC,KAAW,KAAK,KAAK,kBAAmB,CACjD,MAAMD,EAAM,MAAM,KAAK,eAAeC,CAAO,EAC7C,GAAI,IAAC,0BAAuBD,CAAG,EAC7B,SAAO,QAAKA,CAAG,CAEnB,CACA,OAAO,SACT,CASA,MAAM,eAAe,CACnB,KAAAE,EACA,QAAAC,EACA,YAAAC,CACF,EAEE,CAWA,OATIA,GACF,MAAM,KAAK,IAAI,YACb,IAAI,yBAAuB,CACzB,SAAUA,EAAY,eACtB,YAAaA,EAAY,OAC3B,CAAC,CACH,EAGMF,EAAM,CACZ,KAAK,uBAAqB,OACxB,OAAO,MAAM,KAAK,IAAI,YAAY,IAAI,mBAAiB,CAAE,QAAAC,CAAQ,CAAC,CAAC,EAErE,KAAK,uBAAqB,gBACxB,OAAO,MAAM,KAAK,IAAI,YACpB,IAAI,2BAAyB,CAAE,QAAAA,CAAQ,CAAC,CAC1C,EAEF,KAAK,uBAAqB,IACxB,OAAO,MAAM,KAAK,IAAI,YACpB,IAAI,+BAA6B,CAAE,QAAAA,CAAQ,CAAC,CAC9C,EAEF,KAAK,uBAAqB,MACxB,OAAO,MAAM,KAAK,IAAI,YACpB,IAAI,iCAA+B,CAAE,QAAAA,CAAQ,CAAC,CAChD,EAEF,KAAK,uBAAqB,aACxB,OAAO,IAAI,0BAAwB,KAAK,IAAK,CAC3C,QAAAA,EACA,eAAiBJ,GACf,IAAI,4BAA0B,CAC5B,KAAMA,EAAK,YACX,aAAcA,EAAK,YACrB,CAAC,CACL,CAAC,EAAE,IAAI,EAET,KAAK,uBAAqB,KAC1B,KAAK,uBAAqB,8BAC1B,KAAK,uBAAqB,iBACxB,SAAO,wBAAqB,CAC1B,MAAO,IAAI,yBACT,sDACF,CACF,CAAC,EAEH,KAAK,uBAAqB,WACxB,OAAO,IAAI,0BAAwB,KAAK,IAAK,CAC3C,QAAAI,EACA,eAAiBJ,GACf,IAAI,0BAAwB,CAC1B,QAASA,EAAK,YACd,aAAcA,EAAK,YACrB,CAAC,CACL,CAAC,EAAE,IAAI,EACT,QAAS,CACP,MAAMM,EAAuBH,EAC7B,SAAO,wBAAqB,CAC1B,MAAO,IAAI,yBACT,qBAAqBG,CAAa,kBACpC,CACF,CAAC,CACH,CACF,CACF,CACF",
|
|
6
|
-
"names": ["ProvideTransactionContextTask_exports", "__export", "ProvideTransactionContextTask", "__toCommonJS", "import_context_module", "import_device_management_kit", "import_purify_ts", "import_ProvideNFTInformationCommand", "import_ProvideTokenInformationCommand", "import_ProvideTrustedNameCommand", "import_ProvideWeb3CheckCommand", "import_SetExternalPluginCommand", "import_SetPluginCommand", "import_SendPayloadInChunksTask", "api", "args", "res", "context", "type", "payload", "certificate", "uncoveredType"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var n=require("@ledgerhq/context-module"),a=require("@ledgerhq/device-management-kit"),c=require("../../app-binder/command/ProvideNFTInformationCommand"),m=require("../../app-binder/command/ProvideTokenInformationCommand"),l=require("../../app-binder/command/ProvideWeb3CheckCommand"),C=require("../../app-binder/command/SetExternalPluginCommand"),p=require("../../app-binder/command/SetPluginCommand"),x=require("../../app-binder/device-action/__test-utils__/makeInternalApi"),r=require("./ProvideTransactionContextTask");describe("ProvideTransactionContextTask",()=>{const e=(0,x.makeDeviceActionInternalApiMock)(),i=(0,a.CommandResultFactory)({data:void 0}),d=(0,a.CommandResultFactory)({data:void 0,error:{}});beforeEach(()=>{vi.resetAllMocks()}),describe("run",()=>{const o={clearSignContexts:[{type:n.ClearSignContextType.PLUGIN,payload:"706c7567696e"},{type:n.ClearSignContextType.EXTERNAL_PLUGIN,payload:"65787465726e616c506c7567696e"},{type:n.ClearSignContextType.NFT,payload:"6e6674"},{type:n.ClearSignContextType.TOKEN,payload:"746f6b656e"}],web3Check:null};beforeEach(()=>{vi.resetAllMocks()}),it("should send relative commands when receiving ClearSignContexts of type not trustedName",async()=>{e.sendCommand.mockResolvedValue(i),await new r.ProvideTransactionContextTask(e,o).run(),expect(e.sendCommand).toHaveBeenCalledTimes(4),expect(e.sendCommand).toHaveBeenNthCalledWith(o.clearSignContexts.findIndex(t=>t.type===n.ClearSignContextType.PLUGIN)+1,expect.objectContaining(new p.SetPluginCommand({payload:"706c7567696e"}))),expect(e.sendCommand).toHaveBeenNthCalledWith(o.clearSignContexts.findIndex(t=>t.type===n.ClearSignContextType.EXTERNAL_PLUGIN)+1,expect.objectContaining(new C.SetExternalPluginCommand({payload:"65787465726e616c506c7567696e"}))),expect(e.sendCommand).toHaveBeenNthCalledWith(o.clearSignContexts.findIndex(t=>t.type===n.ClearSignContextType.NFT)+1,expect.objectContaining(new c.ProvideNFTInformationCommand({payload:"6e6674"}))),expect(e.sendCommand).toHaveBeenNthCalledWith(o.clearSignContexts.findIndex(t=>t.type===n.ClearSignContextType.TOKEN)+1,expect.objectContaining(new m.ProvideTokenInformationCommand({payload:"746f6b656e"})))}),it("should return the command error result and stop when the command fails",async()=>{e.sendCommand.mockResolvedValueOnce(d);const t=await new r.ProvideTransactionContextTask(e,o).run();expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(t.isJust()).toBe(!0),expect(t.extract()).toStrictEqual(d)}),it("should send the web3Check command when it is provided",async()=>{e.sendCommand.mockResolvedValue(i);const t=await new r.ProvideTransactionContextTask(e,{...o,web3Check:{type:n.ClearSignContextType.WEB3_CHECK,payload:"0x01020304",certificate:{payload:new Uint8Array,keyUsageNumber:1}}}).run();expect(e.sendCommand).toHaveBeenCalledTimes(6),expect(e.sendCommand).toHaveBeenNthCalledWith(1,expect.objectContaining(new a.LoadCertificateCommand({certificate:new Uint8Array,keyUsage:1}))),expect(e.sendCommand).toHaveBeenNthCalledWith(2,expect.objectContaining(new l.ProvideWeb3CheckCommand({payload:(0,a.hexaStringToBuffer)("0x000401020304"),isFirstChunk:!0}))),expect(t.isJust()).toBe(!1)})})});
|
|
2
|
-
//# sourceMappingURL=ProvideTransactionContextTask.test.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../src/internal/app-binder/task/ProvideTransactionContextTask.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { ClearSignContextType } from \"@ledgerhq/context-module\";\nimport {\n CommandResultFactory,\n hexaStringToBuffer,\n LoadCertificateCommand,\n type UnknownDeviceExchangeError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { ProvideNFTInformationCommand } from \"@internal/app-binder/command/ProvideNFTInformationCommand\";\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\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 ProvideTransactionContextTask,\n type ProvideTransactionContextTaskArgs,\n} from \"./ProvideTransactionContextTask\";\n\ndescribe(\"ProvideTransactionContextTask\", () => {\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 args: ProvideTransactionContextTaskArgs = {\n clearSignContexts: [\n {\n type: ClearSignContextType.PLUGIN,\n payload: \"706c7567696e\", // \"plugin\"\n },\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload: \"65787465726e616c506c7567696e\", // \"externalPlugin\"\n },\n {\n type: ClearSignContextType.NFT,\n payload: \"6e6674\", // \"nft\"\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"746f6b656e\", // \"token\"\n },\n ],\n web3Check: null,\n };\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"should send relative commands when receiving ClearSignContexts of type not trustedName\", async () => {\n api.sendCommand.mockResolvedValue(successResult);\n // GIVEN\n const task = new ProvideTransactionContextTask(api, args);\n // WHEN\n await task.run();\n // THEN\n expect(api.sendCommand).toHaveBeenCalledTimes(4);\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n args.clearSignContexts.findIndex(\n (c) => c.type === ClearSignContextType.PLUGIN,\n ) + 1,\n expect.objectContaining(\n new SetPluginCommand({ payload: \"706c7567696e\" }),\n ),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n args.clearSignContexts.findIndex(\n (c) => c.type === ClearSignContextType.EXTERNAL_PLUGIN,\n ) + 1,\n expect.objectContaining(\n new SetExternalPluginCommand({\n payload: \"65787465726e616c506c7567696e\",\n }),\n ),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n args.clearSignContexts.findIndex(\n (c) => c.type === ClearSignContextType.NFT,\n ) + 1,\n expect.objectContaining(\n new ProvideNFTInformationCommand({ payload: \"6e6674\" }),\n ),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n args.clearSignContexts.findIndex(\n (c) => c.type === ClearSignContextType.TOKEN,\n ) + 1,\n expect.objectContaining(\n new ProvideTokenInformationCommand({ payload: \"746f6b656e\" }),\n ),\n );\n });\n\n it(\"should return the command error result and stop when the command fails\", async () => {\n api.sendCommand.mockResolvedValueOnce(errorResult);\n // GIVEN\n const task = new ProvideTransactionContextTask(api, args);\n // WHEN\n const result = await task.run();\n // THEN\n expect(api.sendCommand).toHaveBeenCalledTimes(1);\n expect(result.isJust()).toBe(true);\n expect(result.extract()).toStrictEqual(errorResult);\n });\n\n it(\"should send the web3Check command when it is provided\", async () => {\n api.sendCommand.mockResolvedValue(successResult);\n // GIVEN\n const task = new ProvideTransactionContextTask(api, {\n ...args,\n web3Check: {\n type: ClearSignContextType.WEB3_CHECK,\n payload: \"0x01020304\",\n certificate: {\n payload: new Uint8Array(),\n keyUsageNumber: 1,\n },\n },\n });\n // WHEN\n const result = await task.run();\n // THEN\n expect(api.sendCommand).toHaveBeenCalledTimes(6);\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 1,\n expect.objectContaining(\n new LoadCertificateCommand({\n certificate: new Uint8Array(),\n keyUsage: 1,\n }),\n ),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 2,\n expect.objectContaining(\n new ProvideWeb3CheckCommand({\n payload: hexaStringToBuffer(\"0x000401020304\")!,\n isFirstChunk: true,\n }),\n ),\n );\n expect(result.isJust()).toBe(false);\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["import_context_module", "import_device_management_kit", "import_ProvideNFTInformationCommand", "import_ProvideTokenInformationCommand", "import_ProvideWeb3CheckCommand", "import_SetExternalPluginCommand", "import_SetPluginCommand", "import_makeInternalApi", "import_ProvideTransactionContextTask", "api", "successResult", "errorResult", "args", "c", "result"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var C=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var E=(s,e)=>{for(var r in e)C(s,r,{get:e[r],enumerable:!0})},P=(s,e,r,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of y(e))!x.call(s,o)&&o!==r&&C(s,o,{get:()=>e[o],enumerable:!(t=v(e,o))||t.enumerable});return s};var g=s=>P(C({},"__esModule",{value:!0}),s);var S={};E(S,{ProvideTransactionFieldDescriptionTask:()=>R});module.exports=g(S);var i=require("@ledgerhq/context-module"),n=require("@ledgerhq/device-management-kit"),a=require("purify-ts"),m=require("../../app-binder/command/GetChallengeCommand"),u=require("../../app-binder/command/ProvideEnumCommand"),p=require("../../app-binder/command/ProvideNFTInformationCommand"),l=require("../../app-binder/command/ProvideTokenInformationCommand"),f=require("../../app-binder/command/ProvideTransactionFieldDescriptionCommand"),h=require("../../app-binder/command/ProvideTrustedNameCommand"),T=require("../../app-binder/command/ProvideWeb3CheckCommand"),c=require("./SendPayloadInChunksTask");class R{constructor(e,r){this.api=e;this.args=r}async run(){const{field:e}=this.args;if(await this.loadCertificate(e.certificate),e.reference!==void 0&&"value"in e.reference&&e.reference.value!==void 0&&await this.getAndProvideContext({type:e.reference.type,chainId:this.args.chainId,address:e.reference.value}),e.reference!==void 0&&e.reference.valuePath!==void 0){const t=this.args.transactionParser.extractValue(this.args.serializedTransaction,e.reference.valuePath);if(t.isRight())for(const o of t.extract()){const d=await this.provideContextReference(e.reference,o);if(d.isJust())return d}}const r=await this.provideContext({...e});return(0,n.isSuccessCommandResult)(r)?a.Nothing:(0,a.Just)(r)}async loadCertificate(e){e&&await this.api.sendCommand(new n.LoadCertificateCommand({keyUsage:e.keyUsageNumber,certificate:e.payload}))}async provideContextReference(e,r){if(e.type===i.ClearSignContextType.ENUM)return this.provideEnumContextReference(e,r);const t=(0,n.bufferToHexaString)(r.slice(Math.max(0,r.length-20)));return e.type===i.ClearSignContextType.TRUSTED_NAME?this.provideTustedNameContextReference(e,t):this.getAndProvideContext({type:e.type,chainId:this.args.chainId,address:t})}async provideEnumContextReference(e,r){const t=r[r.length-1];if(!t)return a.Nothing;const o=this.args.transactionEnums.find(d=>d.value===t&&d.id===e.id);if(o){await this.loadCertificate(o.certificate);const d=await this.provideContext(o);if(!(0,n.isSuccessCommandResult)(d))return(0,a.Just)(d)}return a.Nothing}async provideTustedNameContextReference(e,r){const t=await this.api.sendCommand(new m.GetChallengeCommand);return(0,n.isSuccessCommandResult)(t)?this.getAndProvideContext({type:e.type,chainId:this.args.chainId,address:r,challenge:t.data.challenge,types:e.types,sources:e.sources}):(0,a.Just)(t)}async getAndProvideContext(e){const r=await this.args.contextModule.getContext(e);if(r.type!==i.ClearSignContextType.ERROR){const t=await this.provideContext(r);if(!(0,n.isSuccessCommandResult)(t))return(0,a.Just)(t)}return a.Nothing}async provideContext({type:e,payload:r}){switch(e){case i.ClearSignContextType.NFT:return await this.api.sendCommand(new p.ProvideNFTInformationCommand({payload:r}));case i.ClearSignContextType.TOKEN:return await this.api.sendCommand(new l.ProvideTokenInformationCommand({payload:r}));case i.ClearSignContextType.TRUSTED_NAME:return new c.SendPayloadInChunksTask(this.api,{payload:r,commandFactory:t=>new h.ProvideTrustedNameCommand({data:t.chunkedData,isFirstChunk:t.isFirstChunk})}).run();case i.ClearSignContextType.ENUM:return new c.SendPayloadInChunksTask(this.api,{payload:r,commandFactory:t=>new u.ProvideEnumCommand({data:t.chunkedData,isFirstChunk:t.isFirstChunk})}).run();case i.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION:return new c.SendPayloadInChunksTask(this.api,{payload:r,commandFactory:t=>new f.ProvideTransactionFieldDescriptionCommand({data:t.chunkedData,isFirstChunk:t.isFirstChunk})}).run();case i.ClearSignContextType.TRANSACTION_INFO:case i.ClearSignContextType.PLUGIN:case i.ClearSignContextType.EXTERNAL_PLUGIN:return(0,n.CommandResultFactory)({error:new n.InvalidStatusWordError(`The context type [${e}] is not valid as a transaction field or metadata`)});case i.ClearSignContextType.WEB3_CHECK:return new c.SendPayloadInChunksTask(this.api,{payload:r,commandFactory:t=>new T.ProvideWeb3CheckCommand({payload:t.chunkedData,isFirstChunk:t.isFirstChunk})}).run();default:{const t=e;return(0,n.CommandResultFactory)({error:new n.InvalidStatusWordError(`The context type [${t}] is not covered`)})}}}}0&&(module.exports={ProvideTransactionFieldDescriptionTask});
|
|
2
|
-
//# sourceMappingURL=ProvideTransactionFieldDescriptionTask.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../src/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type ClearSignContextReference,\n type ClearSignContextSuccess,\n type ClearSignContextSuccessType,\n ClearSignContextType,\n type ContextModule,\n type PkiCertificate,\n type TransactionFieldContext,\n} from \"@ledgerhq/context-module\";\nimport {\n bufferToHexaString,\n type CommandErrorResult,\n type CommandResult,\n CommandResultFactory,\n type HexaString,\n type InternalApi,\n InvalidStatusWordError,\n isSuccessCommandResult,\n LoadCertificateCommand,\n} from \"@ledgerhq/device-management-kit\";\nimport { Just, type Maybe, Nothing } from \"purify-ts\";\n\nimport { GetChallengeCommand } from \"@internal/app-binder/command/GetChallengeCommand\";\nimport { ProvideEnumCommand } from \"@internal/app-binder/command/ProvideEnumCommand\";\nimport { ProvideNFTInformationCommand } from \"@internal/app-binder/command/ProvideNFTInformationCommand\";\nimport {\n ProvideTokenInformationCommand,\n type ProvideTokenInformationCommandResponse,\n} from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\nimport { ProvideTransactionFieldDescriptionCommand } from \"@internal/app-binder/command/ProvideTransactionFieldDescriptionCommand\";\nimport { ProvideTrustedNameCommand } from \"@internal/app-binder/command/ProvideTrustedNameCommand\";\nimport { ProvideWeb3CheckCommand } from \"@internal/app-binder/command/ProvideWeb3CheckCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport { type TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\n\nimport { type ProvideTransactionGenericContextTaskErrorCodes } from \"./ProvideTransactionGenericContextTask\";\nimport { SendPayloadInChunksTask } from \"./SendPayloadInChunksTask\";\n\nexport type ProvideTransactionFieldDescriptionTaskArgs = {\n field: ClearSignContextSuccess<\n Exclude<ClearSignContextSuccessType, ClearSignContextType.ENUM>\n >;\n serializedTransaction: Uint8Array;\n chainId: number;\n transactionParser: TransactionParserService;\n contextModule: ContextModule;\n transactionEnums: ClearSignContextSuccess<ClearSignContextType.ENUM>[];\n};\n\nexport type ProvideTransactionFieldDescriptionTaskErrorCodes =\n void | EthErrorCodes;\n\n/**\n * This task is responsible for providing the transaction context to the device.\n *\n */\nexport class ProvideTransactionFieldDescriptionTask {\n constructor(\n private api: InternalApi,\n private args: ProvideTransactionFieldDescriptionTaskArgs,\n ) {}\n\n async run(): Promise<\n Maybe<\n CommandErrorResult<\n ProvideTransactionFieldDescriptionTaskErrorCodes | EthErrorCodes\n >\n >\n > {\n const { field } = this.args;\n\n // If a certificate is provided, start by loading it to the device\n await this.loadCertificate(field.certificate);\n\n // if the reference is a string, it means it is a direct address\n // and we don't need to extract the value from the transaction\n // as it is already provided in the reference\n if (\n field.reference !== undefined &&\n \"value\" in field.reference &&\n field.reference.value !== undefined\n ) {\n await this.getAndProvideContext({\n type: field.reference.type,\n chainId: this.args.chainId,\n address: field.reference.value,\n });\n }\n\n // if the reference is a path, it means we need to extract the value\n // from the transaction and provide it to the device\n if (\n field.reference !== undefined &&\n field.reference.valuePath !== undefined\n ) {\n // iterate on each reference and provide the context\n const referenceValues = this.args.transactionParser.extractValue(\n this.args.serializedTransaction,\n field.reference.valuePath,\n );\n\n if (referenceValues.isRight()) {\n for (const value of referenceValues.extract()) {\n const provideReferenceResult = await this.provideContextReference(\n field.reference,\n value,\n );\n if (provideReferenceResult.isJust()) {\n return provideReferenceResult;\n }\n }\n }\n }\n\n const transactionFieldResult = await this.provideContext({ ...field });\n if (!isSuccessCommandResult(transactionFieldResult)) {\n return Just(transactionFieldResult);\n }\n\n return Nothing;\n }\n\n /**\n * This method will load the certificate to the device if it is provided.\n *\n * @param {PkiCertificate | undefined} certificate The certificate to load to the device.\n * @returns A promise that resolves when the certificate is loaded.\n */\n private async loadCertificate(\n certificate: PkiCertificate | undefined,\n ): Promise<void> {\n if (!certificate) return;\n\n await this.api.sendCommand(\n new LoadCertificateCommand({\n keyUsage: certificate.keyUsageNumber,\n certificate: certificate.payload,\n }),\n );\n }\n\n /**\n * This method will provide the context reference to the device.\n *\n * @param {ClearSignContextReference} reference The reference to provide.\n * @param {Uint8Array} value The value of the reference.\n * @returns A promise that resolves when the context is provided.\n */\n private async provideContextReference(\n reference: ClearSignContextReference,\n value: Uint8Array,\n ): Promise<\n Maybe<\n CommandErrorResult<\n ProvideTransactionGenericContextTaskErrorCodes | EthErrorCodes\n >\n >\n > {\n if (reference.type === ClearSignContextType.ENUM) {\n return this.provideEnumContextReference(reference, value);\n }\n\n const address = bufferToHexaString(\n value.slice(Math.max(0, value.length - 20)),\n );\n\n if (reference.type === ClearSignContextType.TRUSTED_NAME) {\n return this.provideTustedNameContextReference(reference, address);\n }\n\n return this.getAndProvideContext({\n type: reference.type,\n chainId: this.args.chainId,\n address,\n });\n }\n\n /**\n * This method will provide the enum context reference to the device\n * if the enum value is found in the transaction enums mapping.\n *\n * Note: We do not need to call the context module to get the enum context\n * as it is already provided with transactionEnums mapping.\n *\n * @param {ClearSignContextReference<ClearSignContextType.ENUM>} reference The enum reference to provide.\n * @param {Uint8Array} value The value of the enum.\n * @returns A promise that resolves when the context is provided.\n */\n private async provideEnumContextReference(\n reference: ClearSignContextReference<ClearSignContextType.ENUM>,\n value: Uint8Array,\n ): Promise<\n Maybe<CommandErrorResult<ProvideTransactionGenericContextTaskErrorCodes>>\n > {\n const enumValue = value[value.length - 1];\n if (!enumValue) return Nothing;\n\n const enumDescriptor = this.args.transactionEnums.find(\n (enumContext) =>\n enumContext.value === enumValue && enumContext.id === reference.id,\n );\n if (enumDescriptor) {\n await this.loadCertificate(enumDescriptor.certificate);\n\n const provideEnumResult = await this.provideContext(enumDescriptor);\n if (!isSuccessCommandResult(provideEnumResult)) {\n return Just(provideEnumResult);\n }\n }\n return Nothing;\n }\n\n /**\n * This method will provide the trusted name context reference to the device.\n *\n * Note: We need to call the context module to get the trusted name context\n * with a challenge to ensure the trusted name is valid.\n *\n * @param {ClearSignContextReference<ClearSignContextType.TRUSTED_NAME>} reference The trusted name reference to provide.\n * @param {HexaString} address The address of the trusted name.\n * @returns A promise that resolves when the context is provided.\n */\n private async provideTustedNameContextReference(\n reference: ClearSignContextReference<ClearSignContextType.TRUSTED_NAME>,\n address: HexaString,\n ): Promise<\n Maybe<\n CommandErrorResult<\n ProvideTransactionGenericContextTaskErrorCodes | EthErrorCodes\n >\n >\n > {\n const getChallengeResult = await this.api.sendCommand(\n new GetChallengeCommand(),\n );\n if (!isSuccessCommandResult(getChallengeResult)) {\n return Just(getChallengeResult);\n }\n\n return this.getAndProvideContext({\n type: reference.type,\n chainId: this.args.chainId,\n address,\n challenge: getChallengeResult.data.challenge,\n types: reference.types,\n sources: reference.sources,\n });\n }\n\n /**\n * This method will get the context from the context module\n * and provide it to the device.\n *\n * @param {TransactionFieldContext} field The field to provide.\n * @returns A promise that resolves when the context is provided.\n */\n private async getAndProvideContext(\n field: TransactionFieldContext,\n ): Promise<\n Maybe<CommandErrorResult<ProvideTransactionGenericContextTaskErrorCodes>>\n > {\n const context = await this.args.contextModule.getContext(field);\n if (context.type !== ClearSignContextType.ERROR) {\n const provideReferenceResult = await this.provideContext(context);\n if (!isSuccessCommandResult(provideReferenceResult)) {\n return Just(provideReferenceResult);\n }\n }\n return Nothing;\n }\n\n /**\n * This method will send a command according to the clear sign context type\n * and return the command result if only one command is sent,\n * otherwise it will return the result of the command.\n *\n * @param {ClearSignContextSuccess} context The clear sign context to provide.\n * @returns A promise that resolves when the command return a command response.\n */\n private async provideContext({\n type,\n payload,\n }: ClearSignContextSuccess): Promise<\n CommandResult<\n void | ProvideTokenInformationCommandResponse,\n ProvideTransactionGenericContextTaskErrorCodes\n >\n > {\n switch (type) {\n case ClearSignContextType.NFT:\n return await this.api.sendCommand(\n new ProvideNFTInformationCommand({ payload }),\n );\n case ClearSignContextType.TOKEN:\n return await this.api.sendCommand(\n new ProvideTokenInformationCommand({ payload }),\n );\n case ClearSignContextType.TRUSTED_NAME:\n return new SendPayloadInChunksTask(this.api, {\n payload,\n commandFactory: (args) =>\n new ProvideTrustedNameCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.ENUM:\n return new SendPayloadInChunksTask(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 new SendPayloadInChunksTask(this.api, {\n payload,\n commandFactory: (args) =>\n new ProvideTransactionFieldDescriptionCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.TRANSACTION_INFO:\n case ClearSignContextType.PLUGIN:\n case ClearSignContextType.EXTERNAL_PLUGIN:\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n `The context type [${type}] is not valid as a transaction field or metadata`,\n ),\n });\n case ClearSignContextType.WEB3_CHECK:\n return new SendPayloadInChunksTask(this.api, {\n payload,\n commandFactory: (args) =>\n new ProvideWeb3CheckCommand({\n payload: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\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": ["ProvideTransactionFieldDescriptionTask_exports", "__export", "ProvideTransactionFieldDescriptionTask", "__toCommonJS", "import_context_module", "import_device_management_kit", "import_purify_ts", "import_GetChallengeCommand", "import_ProvideEnumCommand", "import_ProvideNFTInformationCommand", "import_ProvideTokenInformationCommand", "import_ProvideTransactionFieldDescriptionCommand", "import_ProvideTrustedNameCommand", "import_ProvideWeb3CheckCommand", "import_SendPayloadInChunksTask", "api", "args", "field", "referenceValues", "value", "provideReferenceResult", "transactionFieldResult", "certificate", "reference", "address", "enumValue", "enumDescriptor", "enumContext", "provideEnumResult", "getChallengeResult", "context", "type", "payload", "uncoveredType"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("@ledgerhq/context-module"),t=require("@ledgerhq/device-management-kit"),l=require("purify-ts"),m=require("../../app-binder/command/GetChallengeCommand"),y=require("../../app-binder/command/ProvideEnumCommand"),C=require("../../app-binder/command/ProvideNFTInformationCommand"),T=require("../../app-binder/command/ProvideTokenInformationCommand"),x=require("../../app-binder/command/ProvideTransactionFieldDescriptionCommand"),u=require("../../app-binder/command/ProvideTrustedNameCommand"),d=require("./ProvideTransactionFieldDescriptionTask");describe("ProvideTransactionFieldDescriptionTask",()=>{const s={extractValue:vi.fn()},a={getContext:vi.fn()},n={sendCommand:vi.fn()};beforeEach(()=>{vi.clearAllMocks()}),describe("should call the right provide command",()=>{it.each([{type:e.ClearSignContextType.NFT,commandInstanceType:C.ProvideNFTInformationCommand},{type:e.ClearSignContextType.TOKEN,commandInstanceType:T.ProvideTokenInformationCommand},{type:e.ClearSignContextType.TRUSTED_NAME,commandInstanceType:u.ProvideTrustedNameCommand},{type:e.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,commandInstanceType:x.ProvideTransactionFieldDescriptionCommand}])("when type is $type",async({type:c,commandInstanceType:o})=>{const r=vi.spyOn(n,"sendCommand").mockResolvedValueOnce((0,t.CommandResultFactory)({data:"ok"})),p={type:c,payload:"0x01020304"};await new d.ProvideTransactionFieldDescriptionTask(n,{field:p,serializedTransaction:new Uint8Array,chainId:1,transactionParser:s,contextModule:a,transactionEnums:[]}).run(),expect(r.mock.calls[0][0]).toBeInstanceOf(o),expect(n.sendCommand).toHaveBeenCalledTimes(1)}),it("when type is transactionFieldDescription with a enum reference",async()=>{const c=vi.spyOn(n,"sendCommand").mockResolvedValueOnce((0,t.CommandResultFactory)({data:"ok"})).mockResolvedValueOnce((0,t.CommandResultFactory)({data:"ok"}));vi.spyOn(s,"extractValue").mockReturnValueOnce((0,l.Right)([new Uint8Array([1,2,3,4])]));const r={type:e.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"0x01020304",reference:{type:e.ClearSignContextType.ENUM,valuePath:e.ContainerPath.VALUE,id:66}};await new d.ProvideTransactionFieldDescriptionTask(n,{field:r,serializedTransaction:new Uint8Array,chainId:1,transactionParser:s,contextModule:a,transactionEnums:[{id:66,value:1,type:e.ClearSignContextType.ENUM,payload:"0x060708"},{id:66,value:4,type:e.ClearSignContextType.ENUM,payload:"0x080706"}]}).run(),expect(n.sendCommand).toHaveBeenCalledTimes(2),expect(c.mock.calls[0][0]).toBeInstanceOf(y.ProvideEnumCommand),expect(c.mock.calls[0][0].args.data).toEqual(new Uint8Array([0,3,8,7,6])),expect(c.mock.calls[1][0]).toBeInstanceOf(x.ProvideTransactionFieldDescriptionCommand)})}),describe("should return nothing",()=>{it.each([e.ClearSignContextType.NFT,e.ClearSignContextType.TOKEN,e.ClearSignContextType.TRUSTED_NAME,e.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION])("when type is %s with no reference",async c=>{const r={type:c,payload:"0x01020304"};vi.spyOn(n,"sendCommand").mockResolvedValueOnce((0,t.CommandResultFactory)({data:"ok"}));const p=await new d.ProvideTransactionFieldDescriptionTask(n,{field:r,serializedTransaction:new Uint8Array,chainId:1,transactionParser:s,contextModule:a,transactionEnums:[]}).run();expect(p).toEqual(l.Nothing)})}),describe("should provide a reference context",()=>{it.each([e.ClearSignContextType.NFT,e.ClearSignContextType.TOKEN])("when type is %s with a reference",async c=>{const o="0x01020304",r={type:c,payload:o,reference:{type:e.ClearSignContextType.TOKEN,valuePath:e.ContainerPath.VALUE}};vi.spyOn(n,"sendCommand").mockResolvedValueOnce((0,t.CommandResultFactory)({data:"ok"})),vi.spyOn(n,"sendCommand").mockResolvedValueOnce((0,t.CommandResultFactory)({data:"ok"})),vi.spyOn(s,"extractValue").mockReturnValueOnce((0,l.Right)([new Uint8Array([1,2,3,4])])),vi.spyOn(a,"getContext").mockResolvedValueOnce({type:c,payload:o});const p=await new d.ProvideTransactionFieldDescriptionTask(n,{field:r,serializedTransaction:new Uint8Array,chainId:1,transactionParser:s,contextModule:a,transactionEnums:[]}).run();expect(a.getContext).toHaveBeenCalledTimes(1),expect(a.getContext).toHaveBeenCalledWith({type:e.ClearSignContextType.TOKEN,chainId:1,address:"0x01020304"}),expect(p).toEqual(l.Nothing),expect(n.sendCommand).toHaveBeenCalledTimes(2)}),it("when type is trustes-name with a reference",async()=>{const c="0x01020304",o="0x05060708",r=new Uint8Array([17,34,51,68]),i="0x11223344",p={type:e.ClearSignContextType.TRUSTED_NAME,payload:c,reference:{type:e.ClearSignContextType.TRUSTED_NAME,valuePath:e.ContainerPath.VALUE,types:["type"],sources:["source"]}};vi.spyOn(n,"sendCommand").mockResolvedValueOnce((0,t.CommandResultFactory)({data:{challenge:66}})).mockResolvedValueOnce((0,t.CommandResultFactory)({data:"ok"})).mockResolvedValueOnce((0,t.CommandResultFactory)({data:"ok"})),vi.spyOn(s,"extractValue").mockReturnValueOnce((0,l.Right)([r])),vi.spyOn(a,"getContext").mockResolvedValueOnce({type:e.ClearSignContextType.TRUSTED_NAME,payload:o});const v=await new d.ProvideTransactionFieldDescriptionTask(n,{field:p,serializedTransaction:new Uint8Array,chainId:1,transactionParser:s,contextModule:a,transactionEnums:[]}).run();expect(a.getContext).toHaveBeenCalledTimes(1),expect(a.getContext).toHaveBeenCalledWith({type:e.ClearSignContextType.TRUSTED_NAME,chainId:1,address:i,types:["type"],sources:["source"],challenge:66}),expect(v).toEqual(l.Nothing),expect(n.sendCommand).toHaveBeenCalledTimes(3),expect(n.sendCommand).toHaveBeenNthCalledWith(1,new m.GetChallengeCommand),expect(n.sendCommand).toHaveBeenNthCalledWith(2,new u.ProvideTrustedNameCommand({data:new Uint8Array([0,4,5,6,7,8]),isFirstChunk:!0})),expect(n.sendCommand).toHaveBeenNthCalledWith(3,new u.ProvideTrustedNameCommand({data:new Uint8Array([0,4,1,2,3,4]),isFirstChunk:!0}))}),it("when type is token with a constant reference",async()=>{const o={type:e.ClearSignContextType.TOKEN,payload:"0x01020304",reference:{type:e.ClearSignContextType.TOKEN,value:"0x09080706"}};vi.spyOn(n,"sendCommand").mockResolvedValueOnce((0,t.CommandResultFactory)({data:"ok"})).mockResolvedValueOnce((0,t.CommandResultFactory)({data:"ok"})),vi.spyOn(a,"getContext").mockResolvedValueOnce({type:e.ClearSignContextType.TOKEN,payload:"0x05060708"});const i=await new d.ProvideTransactionFieldDescriptionTask(n,{field:o,serializedTransaction:new Uint8Array,chainId:1,transactionParser:s,contextModule:a,transactionEnums:[]}).run();expect(s.extractValue).not.toHaveBeenCalled(),expect(a.getContext).toHaveBeenCalledTimes(1),expect(a.getContext).toHaveBeenCalledWith({type:e.ClearSignContextType.TOKEN,chainId:1,address:"0x09080706"}),expect(i).toEqual(l.Nothing),expect(n.sendCommand).toHaveBeenCalledTimes(2)}),it("when type is a ntf with a constant reference",async()=>{const o={type:e.ClearSignContextType.NFT,payload:"0x01020304",reference:{type:e.ClearSignContextType.NFT,value:"0x09080706"}};vi.spyOn(n,"sendCommand").mockResolvedValueOnce((0,t.CommandResultFactory)({data:"ok"})),vi.spyOn(n,"sendCommand").mockResolvedValueOnce((0,t.CommandResultFactory)({data:"ok"})),vi.spyOn(a,"getContext").mockResolvedValueOnce({type:e.ClearSignContextType.NFT,payload:"0x05060708"});const i=await new d.ProvideTransactionFieldDescriptionTask(n,{field:o,serializedTransaction:new Uint8Array,chainId:1,transactionParser:s,contextModule:a,transactionEnums:[]}).run();expect(s.extractValue).not.toHaveBeenCalled(),expect(a.getContext).toHaveBeenCalledTimes(1),expect(a.getContext).toHaveBeenCalledWith({type:e.ClearSignContextType.NFT,chainId:1,address:"0x09080706"}),expect(i).toEqual(l.Nothing),expect(n.sendCommand).toHaveBeenCalledTimes(2)})}),describe("should not provide a reference context",()=>{it("when the path is not found in transaction payload",async()=>{const o={type:e.ClearSignContextType.TRUSTED_NAME,payload:"0x01020304",reference:{type:e.ClearSignContextType.TRUSTED_NAME,valuePath:e.ContainerPath.VALUE,types:["type"],sources:["source"]}};vi.spyOn(n,"sendCommand").mockResolvedValueOnce((0,t.CommandResultFactory)({data:"ok"})),vi.spyOn(s,"extractValue").mockReturnValueOnce((0,l.Left)(new Error("path not found")));const i=await new d.ProvideTransactionFieldDescriptionTask(n,{field:o,serializedTransaction:new Uint8Array,chainId:1,transactionParser:s,contextModule:a,transactionEnums:[]}).run();expect(i).toEqual(l.Nothing),expect(n.sendCommand).toHaveBeenCalledTimes(1),expect(a.getContext).not.toHaveBeenCalled()}),it("when getContext return a type error",async()=>{const o={type:e.ClearSignContextType.TRUSTED_NAME,payload:"0x01020304",reference:{type:e.ClearSignContextType.TRUSTED_NAME,valuePath:e.ContainerPath.VALUE,types:["type"],sources:["source"]}};vi.spyOn(s,"extractValue").mockReturnValueOnce((0,l.Right)([new Uint8Array([17,34,51,68])])),vi.spyOn(a,"getContext").mockResolvedValueOnce({type:e.ClearSignContextType.ERROR,error:new Error("getContext error")}),vi.spyOn(n,"sendCommand").mockResolvedValueOnce((0,t.CommandResultFactory)({data:{challenge:66}})),vi.spyOn(n,"sendCommand").mockResolvedValueOnce((0,t.CommandResultFactory)({data:"ok"}));const i=await new d.ProvideTransactionFieldDescriptionTask(n,{field:o,serializedTransaction:new Uint8Array,chainId:1,transactionParser:s,contextModule:a,transactionEnums:[]}).run();expect(i).toEqual(l.Nothing),expect(n.sendCommand).toHaveBeenCalledTimes(2),expect(a.getContext).toHaveBeenCalledTimes(1)}),it("when no enum descriptor is found",async()=>{const o={type:e.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"0x01020304",reference:{type:e.ClearSignContextType.ENUM,valuePath:e.ContainerPath.VALUE,id:66}};vi.spyOn(s,"extractValue").mockReturnValueOnce((0,l.Right)([new Uint8Array([1,2,3,4])]));const r=vi.spyOn(n,"sendCommand").mockResolvedValueOnce((0,t.CommandResultFactory)({data:"ok"})),p=await new d.ProvideTransactionFieldDescriptionTask(n,{field:o,serializedTransaction:new Uint8Array,chainId:1,transactionParser:s,contextModule:a,transactionEnums:[]}).run();expect(p).toEqual(l.Nothing),expect(n.sendCommand).toHaveBeenCalledTimes(1),expect(r.mock.calls[0][0]).toBeInstanceOf(x.ProvideTransactionFieldDescriptionCommand)}),it("when the enum reference path value is empty",async()=>{const o={type:e.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"0x01020304",reference:{type:e.ClearSignContextType.ENUM,valuePath:e.ContainerPath.VALUE,id:66}};vi.spyOn(s,"extractValue").mockReturnValueOnce((0,l.Right)([new Uint8Array([])]));const r=vi.spyOn(n,"sendCommand").mockResolvedValueOnce((0,t.CommandResultFactory)({data:"ok"})),p=await new d.ProvideTransactionFieldDescriptionTask(n,{field:o,serializedTransaction:new Uint8Array,chainId:1,transactionParser:s,contextModule:a,transactionEnums:[{id:66,value:1,type:e.ClearSignContextType.ENUM,payload:"0x060708"},{id:66,value:4,type:e.ClearSignContextType.ENUM,payload:"0x080706"}]}).run();expect(p).toEqual(l.Nothing),expect(n.sendCommand).toHaveBeenCalledTimes(1),expect(r.mock.calls[0][0]).toBeInstanceOf(x.ProvideTransactionFieldDescriptionCommand)})}),describe("should return an error",()=>{it.each([e.ClearSignContextType.TRANSACTION_INFO,e.ClearSignContextType.PLUGIN,e.ClearSignContextType.EXTERNAL_PLUGIN])("when type is %s",async c=>{const o=`payload-${c}`,r={type:c,payload:o},p=await new d.ProvideTransactionFieldDescriptionTask(n,{field:r,serializedTransaction:new Uint8Array,chainId:1,transactionParser:s,contextModule:a,transactionEnums:[]}).run();expect(p.extract()).toEqual((0,t.CommandResultFactory)({error:new t.InvalidStatusWordError(`The context type [${c}] is not valid as a transaction field or metadata`)}))}),it("when type is unknown",async()=>{const o={type:"unknown",payload:"payload-unknown"},i=await new d.ProvideTransactionFieldDescriptionTask(n,{field:o,serializedTransaction:new Uint8Array,chainId:1,transactionParser:s,contextModule:a,transactionEnums:[]}).run();expect(i.extract()).toEqual((0,t.CommandResultFactory)({error:new t.InvalidStatusWordError("The context type [unknown] is not covered")}))}),it("when getChallenge fails",async()=>{const o={type:e.ClearSignContextType.TRUSTED_NAME,payload:"0x01020304",reference:{type:e.ClearSignContextType.TRUSTED_NAME,valuePath:e.ContainerPath.VALUE,types:["type"],sources:["source"]}};vi.spyOn(n,"sendCommand").mockResolvedValueOnce((0,t.CommandResultFactory)({error:new t.InvalidStatusWordError("getChallenge error")})),vi.spyOn(s,"extractValue").mockReturnValueOnce((0,l.Right)([new Uint8Array([17,34,51,68])]));const i=await new d.ProvideTransactionFieldDescriptionTask(n,{field:o,serializedTransaction:new Uint8Array,chainId:1,transactionParser:s,contextModule:a,transactionEnums:[]}).run();expect(i.extract()).toEqual((0,t.CommandResultFactory)({error:new t.InvalidStatusWordError("getChallenge error")}))}),it("when provide reference with a token fails",async()=>{const o={type:e.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"0x01020304",reference:{type:e.ClearSignContextType.TOKEN,valuePath:e.ContainerPath.VALUE}};vi.spyOn(n,"sendCommand").mockResolvedValueOnce((0,t.CommandResultFactory)({error:new t.InvalidStatusWordError("provide reference error")})),vi.spyOn(n,"sendCommand").mockResolvedValueOnce((0,t.CommandResultFactory)({data:"ok"})),vi.spyOn(s,"extractValue").mockReturnValueOnce((0,l.Right)([new Uint8Array([17,34,51,68])])),vi.spyOn(a,"getContext").mockResolvedValueOnce({type:e.ClearSignContextType.TOKEN,payload:"0x05060708"});const i=await new d.ProvideTransactionFieldDescriptionTask(n,{field:o,serializedTransaction:new Uint8Array,chainId:1,transactionParser:s,contextModule:a,transactionEnums:[]}).run();expect(i.extract()).toEqual((0,t.CommandResultFactory)({error:new t.InvalidStatusWordError("provide reference error")}))}),it("when provide reference with a trusted name fails",async()=>{const o={type:e.ClearSignContextType.TRUSTED_NAME,payload:"0x01020304",reference:{type:e.ClearSignContextType.TRUSTED_NAME,valuePath:e.ContainerPath.VALUE,types:["type"],sources:["source"]}};vi.spyOn(n,"sendCommand").mockResolvedValueOnce((0,t.CommandResultFactory)({data:"ok"})),vi.spyOn(n,"sendCommand").mockResolvedValueOnce((0,t.CommandResultFactory)({error:new t.InvalidStatusWordError("provide reference error")})),vi.spyOn(s,"extractValue").mockReturnValueOnce((0,l.Right)([new Uint8Array([17,34,51,68])])),vi.spyOn(a,"getContext").mockResolvedValueOnce({type:e.ClearSignContextType.TRUSTED_NAME,payload:"0x05060708"});const i=await new d.ProvideTransactionFieldDescriptionTask(n,{field:o,serializedTransaction:new Uint8Array,chainId:1,transactionParser:s,contextModule:a,transactionEnums:[]}).run();expect(i.extract()).toEqual((0,t.CommandResultFactory)({error:new t.InvalidStatusWordError("provide reference error")}))}),it("when provide reference with a enum reference fails",async()=>{const o={type:e.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"0x01020304",reference:{type:e.ClearSignContextType.ENUM,valuePath:e.ContainerPath.VALUE,id:66}};vi.spyOn(s,"extractValue").mockReturnValueOnce((0,l.Right)([new Uint8Array([1,2,3,4])]));const r=vi.spyOn(n,"sendCommand").mockResolvedValueOnce((0,t.CommandResultFactory)({error:new t.InvalidStatusWordError("provide reference error")})).mockResolvedValueOnce((0,t.CommandResultFactory)({data:"ok"})),p=await new d.ProvideTransactionFieldDescriptionTask(n,{field:o,serializedTransaction:new Uint8Array,chainId:1,transactionParser:s,contextModule:a,transactionEnums:[{id:66,value:4,type:e.ClearSignContextType.ENUM,payload:"0x080706"}]}).run();expect(p.extract()).toEqual((0,t.CommandResultFactory)({error:new t.InvalidStatusWordError("provide reference error")})),expect(n.sendCommand).toHaveBeenCalledTimes(1),expect(r.mock.calls[0][0]).toBeInstanceOf(y.ProvideEnumCommand)})})});
|
|
2
|
-
//# sourceMappingURL=ProvideTransactionFieldDescriptionTask.test.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../src/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type ClearSignContextSuccess,\n type ClearSignContextSuccessType,\n ClearSignContextType,\n ContainerPath,\n type ContextModule,\n} from \"@ledgerhq/context-module\";\nimport {\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Nothing, Right } from \"purify-ts\";\n\nimport { GetChallengeCommand } from \"@internal/app-binder/command/GetChallengeCommand\";\nimport { ProvideEnumCommand } from \"@internal/app-binder/command/ProvideEnumCommand\";\nimport { ProvideNFTInformationCommand } from \"@internal/app-binder/command/ProvideNFTInformationCommand\";\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\nimport { ProvideTransactionFieldDescriptionCommand } from \"@internal/app-binder/command/ProvideTransactionFieldDescriptionCommand\";\nimport { ProvideTrustedNameCommand } from \"@internal/app-binder/command/ProvideTrustedNameCommand\";\nimport { type TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\n\nimport { ProvideTransactionFieldDescriptionTask } from \"./ProvideTransactionFieldDescriptionTask\";\n\ndescribe(\"ProvideTransactionFieldDescriptionTask\", () => {\n const transactionParserMock = {\n extractValue: vi.fn(),\n } as unknown as TransactionParserService;\n const contextModuleMock = {\n getContext: vi.fn(),\n } as unknown as ContextModule;\n const apiMock: InternalApi = {\n sendCommand: vi.fn(),\n } as unknown as InternalApi;\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n describe(\"should call the right provide command\", () => {\n it.each<{\n type: ClearSignContextSuccess<\n Exclude<ClearSignContextSuccessType, ClearSignContextType.ENUM>\n >[\"type\"];\n commandInstanceType: unknown;\n }>([\n {\n type: ClearSignContextType.NFT,\n commandInstanceType: ProvideNFTInformationCommand,\n },\n {\n type: ClearSignContextType.TOKEN,\n commandInstanceType: ProvideTokenInformationCommand,\n },\n {\n type: ClearSignContextType.TRUSTED_NAME,\n commandInstanceType: ProvideTrustedNameCommand,\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n commandInstanceType: ProvideTransactionFieldDescriptionCommand,\n },\n ])(\"when type is $type\", async ({ type, commandInstanceType }) => {\n // GIVEN\n const spy = vi\n .spyOn(apiMock, \"sendCommand\")\n .mockResolvedValueOnce(CommandResultFactory({ data: \"ok\" }));\n const payload = `0x01020304`;\n const field: ClearSignContextSuccess = {\n type,\n payload,\n };\n\n // WHEN\n await new ProvideTransactionFieldDescriptionTask(apiMock, {\n field,\n serializedTransaction: new Uint8Array(),\n chainId: 1,\n transactionParser: transactionParserMock,\n contextModule: contextModuleMock,\n transactionEnums: [],\n }).run();\n\n // THEN\n expect(spy.mock.calls[0]![0]).toBeInstanceOf(commandInstanceType);\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(1);\n });\n\n it(\"when type is transactionFieldDescription with a enum reference\", async () => {\n // GIVEN\n const spy = vi\n .spyOn(apiMock, \"sendCommand\")\n .mockResolvedValueOnce(CommandResultFactory({ data: \"ok\" }))\n .mockResolvedValueOnce(CommandResultFactory({ data: \"ok\" }));\n\n vi.spyOn(transactionParserMock, \"extractValue\").mockReturnValueOnce(\n Right([new Uint8Array([0x01, 0x02, 0x03, 0x04])]),\n );\n\n const payload = `0x01020304`;\n const field: ClearSignContextSuccess = {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload,\n reference: {\n type: ClearSignContextType.ENUM,\n valuePath: ContainerPath.VALUE,\n id: 0x42,\n },\n };\n\n // WHEN\n await new ProvideTransactionFieldDescriptionTask(apiMock, {\n field,\n serializedTransaction: new Uint8Array(),\n chainId: 1,\n transactionParser: transactionParserMock,\n contextModule: contextModuleMock,\n transactionEnums: [\n {\n id: 0x42,\n value: 0x01,\n type: ClearSignContextType.ENUM,\n payload: \"0x060708\",\n },\n {\n id: 0x42,\n value: 0x04,\n type: ClearSignContextType.ENUM,\n payload: \"0x080706\",\n },\n ],\n }).run();\n\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(2);\n expect(spy.mock.calls[0]![0]).toBeInstanceOf(ProvideEnumCommand);\n // @ts-expect-error args exists\n expect(spy.mock.calls[0]![0].args.data).toEqual(\n new Uint8Array([0x00, 0x03, 0x08, 0x07, 0x06]),\n ); // length + value of the enum with id 0x42 and value 0x04\n expect(spy.mock.calls[1]![0]).toBeInstanceOf(\n ProvideTransactionFieldDescriptionCommand,\n );\n });\n });\n\n describe(\"should return nothing\", () => {\n it.each<\n ClearSignContextSuccess<\n Exclude<ClearSignContextSuccessType, ClearSignContextType.ENUM>\n >[\"type\"]\n >([\n ClearSignContextType.NFT,\n ClearSignContextType.TOKEN,\n ClearSignContextType.TRUSTED_NAME,\n ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n ])(\"when type is %s with no reference\", async (type) => {\n // GIVEN\n const payload = `0x01020304`;\n const field: ClearSignContextSuccess = {\n type,\n payload,\n };\n vi.spyOn(apiMock, \"sendCommand\").mockResolvedValueOnce(\n CommandResultFactory({ data: \"ok\" }),\n );\n\n // WHEN\n const task = new ProvideTransactionFieldDescriptionTask(apiMock, {\n field,\n serializedTransaction: new Uint8Array(),\n chainId: 1,\n transactionParser: transactionParserMock,\n contextModule: contextModuleMock,\n transactionEnums: [],\n });\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Nothing);\n });\n });\n\n describe(\"should provide a reference context\", () => {\n it.each<\n ClearSignContextSuccess<\n Exclude<ClearSignContextSuccessType, ClearSignContextType.ENUM>\n >[\"type\"]\n >([ClearSignContextType.NFT, ClearSignContextType.TOKEN])(\n \"when type is %s with a reference\",\n async (type) => {\n // GIVEN\n const payload = `0x01020304`;\n const field: ClearSignContextSuccess = {\n type,\n payload,\n reference: {\n type: ClearSignContextType.TOKEN,\n valuePath: ContainerPath.VALUE,\n },\n };\n // provide reference context\n vi.spyOn(apiMock, \"sendCommand\").mockResolvedValueOnce(\n CommandResultFactory({ data: \"ok\" }),\n );\n // provide context\n vi.spyOn(apiMock, \"sendCommand\").mockResolvedValueOnce(\n CommandResultFactory({ data: \"ok\" }),\n );\n vi.spyOn(transactionParserMock, \"extractValue\").mockReturnValueOnce(\n Right([new Uint8Array([0x01, 0x02, 0x03, 0x04])]),\n );\n vi.spyOn(contextModuleMock, \"getContext\").mockResolvedValueOnce({\n type,\n payload,\n });\n\n // WHEN\n const task = new ProvideTransactionFieldDescriptionTask(apiMock, {\n field,\n serializedTransaction: new Uint8Array(),\n chainId: 1,\n transactionParser: transactionParserMock,\n contextModule: contextModuleMock,\n transactionEnums: [],\n });\n const result = await task.run();\n\n // THEN\n expect(contextModuleMock.getContext).toHaveBeenCalledTimes(1);\n expect(contextModuleMock.getContext).toHaveBeenCalledWith({\n type: ClearSignContextType.TOKEN,\n chainId: 1,\n address: \"0x01020304\",\n });\n expect(result).toEqual(Nothing);\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(2);\n },\n );\n\n it(\"when type is trustes-name with a reference\", async () => {\n // GIVEN\n const payload1 = `0x01020304`;\n const payload2 = `0x05060708`;\n const extractedValue = new Uint8Array([0x11, 0x22, 0x33, 0x44]);\n const extractedValueAddress = \"0x11223344\";\n const field: ClearSignContextSuccess<\n Exclude<ClearSignContextSuccessType, ClearSignContextType.ENUM>\n > = {\n type: ClearSignContextType.TRUSTED_NAME,\n payload: payload1,\n reference: {\n type: ClearSignContextType.TRUSTED_NAME,\n valuePath: ContainerPath.VALUE,\n types: [\"type\"],\n sources: [\"source\"],\n },\n };\n\n vi.spyOn(apiMock, \"sendCommand\")\n // getChallenge\n .mockResolvedValueOnce(\n CommandResultFactory({ data: { challenge: 0x42 } }),\n )\n // provide reference context\n .mockResolvedValueOnce(CommandResultFactory({ data: \"ok\" }))\n // provide context\n .mockResolvedValueOnce(CommandResultFactory({ data: \"ok\" }));\n\n vi.spyOn(transactionParserMock, \"extractValue\").mockReturnValueOnce(\n Right([extractedValue]),\n );\n\n vi.spyOn(contextModuleMock, \"getContext\").mockResolvedValueOnce({\n type: ClearSignContextType.TRUSTED_NAME,\n payload: payload2,\n });\n\n // WHEN\n const task = new ProvideTransactionFieldDescriptionTask(apiMock, {\n field,\n serializedTransaction: new Uint8Array(),\n chainId: 1,\n transactionParser: transactionParserMock,\n contextModule: contextModuleMock,\n transactionEnums: [],\n });\n const result = await task.run();\n\n // THEN\n expect(contextModuleMock.getContext).toHaveBeenCalledTimes(1);\n // getContext for the extracted value address\n expect(contextModuleMock.getContext).toHaveBeenCalledWith({\n type: ClearSignContextType.TRUSTED_NAME,\n chainId: 1,\n address: extractedValueAddress,\n types: [\"type\"],\n sources: [\"source\"],\n challenge: 0x42,\n });\n expect(result).toEqual(Nothing);\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(3);\n expect(apiMock.sendCommand).toHaveBeenNthCalledWith(\n 1,\n new GetChallengeCommand(),\n );\n expect(apiMock.sendCommand).toHaveBeenNthCalledWith(\n 2,\n new ProvideTrustedNameCommand({\n data: new Uint8Array([0x00, 0x04, 0x05, 0x06, 0x07, 0x08]),\n isFirstChunk: true,\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenNthCalledWith(\n 3,\n new ProvideTrustedNameCommand({\n data: new Uint8Array([0x00, 0x04, 0x01, 0x02, 0x03, 0x04]),\n isFirstChunk: true,\n }),\n );\n });\n\n it(\"when type is token with a constant reference\", async () => {\n // GIVEN\n const payload = `0x01020304`;\n const field: ClearSignContextSuccess = {\n type: ClearSignContextType.TOKEN,\n payload,\n reference: {\n type: ClearSignContextType.TOKEN,\n value: \"0x09080706\",\n },\n };\n vi.spyOn(apiMock, \"sendCommand\")\n // provide reference context\n .mockResolvedValueOnce(CommandResultFactory({ data: \"ok\" }))\n // provide context\n .mockResolvedValueOnce(CommandResultFactory({ data: \"ok\" }));\n\n vi.spyOn(contextModuleMock, \"getContext\").mockResolvedValueOnce({\n type: ClearSignContextType.TOKEN,\n payload: \"0x05060708\",\n });\n\n // WHEN\n const task = new ProvideTransactionFieldDescriptionTask(apiMock, {\n field,\n serializedTransaction: new Uint8Array(),\n chainId: 1,\n transactionParser: transactionParserMock,\n contextModule: contextModuleMock,\n transactionEnums: [],\n });\n const result = await task.run();\n\n // THEN\n expect(transactionParserMock.extractValue).not.toHaveBeenCalled();\n expect(contextModuleMock.getContext).toHaveBeenCalledTimes(1);\n expect(contextModuleMock.getContext).toHaveBeenCalledWith({\n type: ClearSignContextType.TOKEN,\n chainId: 1,\n address: \"0x09080706\",\n });\n expect(result).toEqual(Nothing);\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(2);\n });\n\n it(\"when type is a ntf with a constant reference\", async () => {\n // GIVEN\n const payload = `0x01020304`;\n const field: ClearSignContextSuccess = {\n type: ClearSignContextType.NFT,\n payload,\n reference: {\n type: ClearSignContextType.NFT,\n value: \"0x09080706\",\n },\n };\n // provide reference context\n vi.spyOn(apiMock, \"sendCommand\").mockResolvedValueOnce(\n CommandResultFactory({ data: \"ok\" }),\n );\n // provide context\n vi.spyOn(apiMock, \"sendCommand\").mockResolvedValueOnce(\n CommandResultFactory({ data: \"ok\" }),\n );\n vi.spyOn(contextModuleMock, \"getContext\").mockResolvedValueOnce({\n type: ClearSignContextType.NFT,\n payload: \"0x05060708\",\n });\n\n // WHEN\n const task = new ProvideTransactionFieldDescriptionTask(apiMock, {\n field,\n serializedTransaction: new Uint8Array(),\n chainId: 1,\n transactionParser: transactionParserMock,\n contextModule: contextModuleMock,\n transactionEnums: [],\n });\n const result = await task.run();\n\n // THEN\n expect(transactionParserMock.extractValue).not.toHaveBeenCalled();\n expect(contextModuleMock.getContext).toHaveBeenCalledTimes(1);\n expect(contextModuleMock.getContext).toHaveBeenCalledWith({\n type: ClearSignContextType.NFT,\n chainId: 1,\n address: \"0x09080706\",\n });\n expect(result).toEqual(Nothing);\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(2);\n });\n });\n\n describe(\"should not provide a reference context\", () => {\n it(\"when the path is not found in transaction payload\", async () => {\n // GIVEN\n const payload = `0x01020304`;\n const field: ClearSignContextSuccess<\n Exclude<ClearSignContextSuccessType, ClearSignContextType.ENUM>\n > = {\n type: ClearSignContextType.TRUSTED_NAME,\n payload,\n reference: {\n type: ClearSignContextType.TRUSTED_NAME,\n valuePath: ContainerPath.VALUE,\n types: [\"type\"],\n sources: [\"source\"],\n },\n };\n // provide context\n vi.spyOn(apiMock, \"sendCommand\").mockResolvedValueOnce(\n CommandResultFactory({ data: \"ok\" }),\n );\n\n vi.spyOn(transactionParserMock, \"extractValue\").mockReturnValueOnce(\n Left(new Error(\"path not found\")),\n );\n\n // WHEN\n const task = new ProvideTransactionFieldDescriptionTask(apiMock, {\n field,\n serializedTransaction: new Uint8Array(),\n chainId: 1,\n transactionParser: transactionParserMock,\n contextModule: contextModuleMock,\n transactionEnums: [],\n });\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Nothing);\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(1);\n expect(contextModuleMock.getContext).not.toHaveBeenCalled();\n });\n\n it(\"when getContext return a type error\", async () => {\n // GIVEN\n const payload = `0x01020304`;\n const field: ClearSignContextSuccess<\n Exclude<ClearSignContextSuccessType, ClearSignContextType.ENUM>\n > = {\n type: ClearSignContextType.TRUSTED_NAME,\n payload,\n reference: {\n type: ClearSignContextType.TRUSTED_NAME,\n valuePath: ContainerPath.VALUE,\n types: [\"type\"],\n sources: [\"source\"],\n },\n };\n vi.spyOn(transactionParserMock, \"extractValue\").mockReturnValueOnce(\n Right([new Uint8Array([0x11, 0x22, 0x33, 0x44])]),\n );\n vi.spyOn(contextModuleMock, \"getContext\").mockResolvedValueOnce({\n type: ClearSignContextType.ERROR,\n error: new Error(\"getContext error\"),\n });\n // getChallenge\n vi.spyOn(apiMock, \"sendCommand\").mockResolvedValueOnce(\n CommandResultFactory({ data: { challenge: 0x42 } }),\n );\n // provide context\n vi.spyOn(apiMock, \"sendCommand\").mockResolvedValueOnce(\n CommandResultFactory({ data: \"ok\" }),\n );\n\n // WHEN\n const task = new ProvideTransactionFieldDescriptionTask(apiMock, {\n field,\n serializedTransaction: new Uint8Array(),\n chainId: 1,\n transactionParser: transactionParserMock,\n contextModule: contextModuleMock,\n transactionEnums: [],\n });\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Nothing);\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(2);\n expect(contextModuleMock.getContext).toHaveBeenCalledTimes(1);\n });\n\n it(\"when no enum descriptor is found\", async () => {\n // GIVEN\n const payload = `0x01020304`;\n const field: ClearSignContextSuccess = {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload,\n reference: {\n type: ClearSignContextType.ENUM,\n valuePath: ContainerPath.VALUE,\n id: 0x42,\n },\n };\n\n vi.spyOn(transactionParserMock, \"extractValue\").mockReturnValueOnce(\n Right([new Uint8Array([0x01, 0x02, 0x03, 0x04])]),\n );\n\n const spy = vi\n .spyOn(apiMock, \"sendCommand\")\n .mockResolvedValueOnce(CommandResultFactory({ data: \"ok\" }));\n\n // WHEN\n const task = new ProvideTransactionFieldDescriptionTask(apiMock, {\n field,\n serializedTransaction: new Uint8Array(),\n chainId: 1,\n transactionParser: transactionParserMock,\n contextModule: contextModuleMock,\n transactionEnums: [],\n });\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Nothing);\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(1);\n expect(spy.mock.calls[0]![0]).toBeInstanceOf(\n ProvideTransactionFieldDescriptionCommand,\n );\n });\n\n it(\"when the enum reference path value is empty\", async () => {\n // GIVEN\n const payload = `0x01020304`;\n const field: ClearSignContextSuccess = {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload,\n reference: {\n type: ClearSignContextType.ENUM,\n valuePath: ContainerPath.VALUE,\n id: 0x42,\n },\n };\n\n vi.spyOn(transactionParserMock, \"extractValue\").mockReturnValueOnce(\n Right([new Uint8Array([])]),\n ); // empty value\n\n const spy = vi\n .spyOn(apiMock, \"sendCommand\")\n .mockResolvedValueOnce(CommandResultFactory({ data: \"ok\" }));\n\n // WHEN\n const task = new ProvideTransactionFieldDescriptionTask(apiMock, {\n field,\n serializedTransaction: new Uint8Array(),\n chainId: 1,\n transactionParser: transactionParserMock,\n contextModule: contextModuleMock,\n transactionEnums: [\n {\n id: 0x42,\n value: 0x01,\n type: ClearSignContextType.ENUM,\n payload: \"0x060708\",\n },\n {\n id: 0x42,\n value: 0x04,\n type: ClearSignContextType.ENUM,\n payload: \"0x080706\",\n },\n ],\n });\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Nothing);\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(1);\n expect(spy.mock.calls[0]![0]).toBeInstanceOf(\n ProvideTransactionFieldDescriptionCommand,\n );\n });\n });\n\n describe(\"should return an error\", () => {\n it.each<\n ClearSignContextSuccess<\n Exclude<ClearSignContextSuccessType, ClearSignContextType.ENUM>\n >[\"type\"]\n >([\n ClearSignContextType.TRANSACTION_INFO,\n ClearSignContextType.PLUGIN,\n ClearSignContextType.EXTERNAL_PLUGIN,\n ])(\"when type is %s\", async (type) => {\n // GIVEN\n const payload = `payload-${type}`;\n const field: ClearSignContextSuccess<\n Exclude<ClearSignContextSuccessType, ClearSignContextType.ENUM>\n > = {\n type,\n payload,\n };\n\n // WHEN\n const task = new ProvideTransactionFieldDescriptionTask(apiMock, {\n field,\n serializedTransaction: new Uint8Array(),\n chainId: 1,\n transactionParser: transactionParserMock,\n contextModule: contextModuleMock,\n transactionEnums: [],\n });\n const result = await task.run();\n\n // THEN\n expect(result.extract()).toEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\n `The context type [${type}] is not valid as a transaction field or metadata`,\n ),\n }),\n );\n });\n\n it(\"when type is unknown\", async () => {\n // GIVEN\n const payload = `payload-unknown`;\n const field = {\n type: \"unknown\" as ClearSignContextType,\n payload,\n } as ClearSignContextSuccess<\n Exclude<ClearSignContextSuccessType, ClearSignContextType.ENUM>\n >;\n\n // WHEN\n const task = new ProvideTransactionFieldDescriptionTask(apiMock, {\n field,\n serializedTransaction: new Uint8Array(),\n chainId: 1,\n transactionParser: transactionParserMock,\n contextModule: contextModuleMock,\n transactionEnums: [],\n });\n const result = await task.run();\n\n // THEN\n expect(result.extract()).toEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\n `The context type [unknown] is not covered`,\n ),\n }),\n );\n });\n\n it(\"when getChallenge fails\", async () => {\n // GIVEN\n const payload = `0x01020304`;\n const field: ClearSignContextSuccess<\n Exclude<ClearSignContextSuccessType, ClearSignContextType.ENUM>\n > = {\n type: ClearSignContextType.TRUSTED_NAME,\n payload,\n reference: {\n type: ClearSignContextType.TRUSTED_NAME,\n valuePath: ContainerPath.VALUE,\n types: [\"type\"],\n sources: [\"source\"],\n },\n };\n vi.spyOn(apiMock, \"sendCommand\").mockResolvedValueOnce(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"getChallenge error\"),\n }),\n );\n vi.spyOn(transactionParserMock, \"extractValue\").mockReturnValueOnce(\n Right([new Uint8Array([0x11, 0x22, 0x33, 0x44])]),\n );\n\n // WHEN\n const task = new ProvideTransactionFieldDescriptionTask(apiMock, {\n field,\n serializedTransaction: new Uint8Array(),\n chainId: 1,\n transactionParser: transactionParserMock,\n contextModule: contextModuleMock,\n transactionEnums: [],\n });\n const result = await task.run();\n\n // THEN\n expect(result.extract()).toEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"getChallenge error\"),\n }),\n );\n });\n\n it(\"when provide reference with a token fails\", async () => {\n // GIVEN\n const payload = `0x01020304`;\n const field: ClearSignContextSuccess<\n Exclude<ClearSignContextSuccessType, ClearSignContextType.ENUM>\n > = {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload,\n reference: {\n type: ClearSignContextType.TOKEN,\n valuePath: ContainerPath.VALUE,\n },\n };\n // provide reference context\n vi.spyOn(apiMock, \"sendCommand\").mockResolvedValueOnce(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"provide reference error\"),\n }),\n );\n // provide field\n vi.spyOn(apiMock, \"sendCommand\").mockResolvedValueOnce(\n CommandResultFactory({ data: \"ok\" }),\n );\n vi.spyOn(transactionParserMock, \"extractValue\").mockReturnValueOnce(\n Right([new Uint8Array([0x11, 0x22, 0x33, 0x44])]),\n );\n vi.spyOn(contextModuleMock, \"getContext\").mockResolvedValueOnce({\n type: ClearSignContextType.TOKEN,\n payload: \"0x05060708\",\n });\n\n // WHEN\n const task = new ProvideTransactionFieldDescriptionTask(apiMock, {\n field,\n serializedTransaction: new Uint8Array(),\n chainId: 1,\n transactionParser: transactionParserMock,\n contextModule: contextModuleMock,\n transactionEnums: [],\n });\n const result = await task.run();\n\n // THEN\n expect(result.extract()).toEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"provide reference error\"),\n }),\n );\n });\n\n it(\"when provide reference with a trusted name fails\", async () => {\n // GIVEN\n const payload = `0x01020304`;\n const field: ClearSignContextSuccess<\n Exclude<ClearSignContextSuccessType, ClearSignContextType.ENUM>\n > = {\n type: ClearSignContextType.TRUSTED_NAME,\n payload,\n reference: {\n type: ClearSignContextType.TRUSTED_NAME,\n valuePath: ContainerPath.VALUE,\n types: [\"type\"],\n sources: [\"source\"],\n },\n };\n // getChallenge\n vi.spyOn(apiMock, \"sendCommand\").mockResolvedValueOnce(\n CommandResultFactory({ data: \"ok\" }),\n );\n // provide reference context\n vi.spyOn(apiMock, \"sendCommand\").mockResolvedValueOnce(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"provide reference error\"),\n }),\n );\n vi.spyOn(transactionParserMock, \"extractValue\").mockReturnValueOnce(\n Right([new Uint8Array([0x11, 0x22, 0x33, 0x44])]),\n );\n vi.spyOn(contextModuleMock, \"getContext\").mockResolvedValueOnce({\n type: ClearSignContextType.TRUSTED_NAME,\n payload: \"0x05060708\",\n });\n\n // WHEN\n const task = new ProvideTransactionFieldDescriptionTask(apiMock, {\n field,\n serializedTransaction: new Uint8Array(),\n chainId: 1,\n transactionParser: transactionParserMock,\n contextModule: contextModuleMock,\n transactionEnums: [],\n });\n const result = await task.run();\n\n // THEN\n expect(result.extract()).toEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"provide reference error\"),\n }),\n );\n });\n\n it(\"when provide reference with a enum reference fails\", async () => {\n // GIVEN\n const payload = `0x01020304`;\n const field: ClearSignContextSuccess = {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload,\n reference: {\n type: ClearSignContextType.ENUM,\n valuePath: ContainerPath.VALUE,\n id: 0x42,\n },\n };\n\n vi.spyOn(transactionParserMock, \"extractValue\").mockReturnValueOnce(\n Right([new Uint8Array([0x01, 0x02, 0x03, 0x04])]),\n );\n\n const spy = vi\n .spyOn(apiMock, \"sendCommand\")\n .mockResolvedValueOnce(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"provide reference error\"),\n }),\n )\n .mockResolvedValueOnce(\n CommandResultFactory({\n data: \"ok\",\n }),\n );\n\n // WHEN\n const task = new ProvideTransactionFieldDescriptionTask(apiMock, {\n field,\n serializedTransaction: new Uint8Array(),\n chainId: 1,\n transactionParser: transactionParserMock,\n contextModule: contextModuleMock,\n transactionEnums: [\n {\n id: 0x42,\n value: 0x04,\n type: ClearSignContextType.ENUM,\n payload: \"0x080706\",\n },\n ],\n });\n const result = await task.run();\n\n // THEN\n expect(result.extract()).toEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"provide reference error\"),\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(1);\n expect(spy.mock.calls[0]![0]).toBeInstanceOf(ProvideEnumCommand);\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["import_context_module", "import_device_management_kit", "import_purify_ts", "import_GetChallengeCommand", "import_ProvideEnumCommand", "import_ProvideNFTInformationCommand", "import_ProvideTokenInformationCommand", "import_ProvideTransactionFieldDescriptionCommand", "import_ProvideTrustedNameCommand", "import_ProvideTransactionFieldDescriptionTask", "transactionParserMock", "contextModuleMock", "apiMock", "type", "commandInstanceType", "spy", "field", "result", "payload", "payload1", "payload2", "extractedValue", "extractedValueAddress"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var d=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var g=(a,t)=>{for(var n in t)d(a,n,{get:t[n],enumerable:!0})},k=(a,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of x(t))!T.call(a,r)&&r!==n&&d(a,r,{get:()=>t[r],enumerable:!(o=f(t,r))||o.enumerable});return a};var S=a=>k(d({},"__esModule",{value:!0}),a);var E={};g(E,{ProvideTransactionGenericContextTask:()=>P});module.exports=S(E);var i=require("@ledgerhq/device-management-kit"),l=require("@ledgerhq/signer-utils"),s=require("purify-ts"),C=require("../../app-binder/command/ProvideTransactionInformationCommand"),m=require("../../app-binder/command/StoreTransactionCommand"),p=require("./ProvideTransactionFieldDescriptionTask"),u=require("./SendCommandInChunksTask"),y=require("./SendPayloadInChunksTask");class P{constructor(t,n){this.api=t;this.args=n}async run(){const t=l.DerivationPathUtils.splitPath(this.args.derivationPath),n=new i.ByteArrayBuilder;n.add8BitUIntToData(t.length),t.forEach(e=>{n.add32BitUIntToData(e)}),n.addBufferToData(this.args.serializedTransaction);const o=await new u.SendCommandInChunksTask(this.api,{data:n.build(),commandFactory:e=>new m.StoreTransactionCommand({serializedTransaction:e.chunkedData,isFirstChunk:e.isFirstChunk})}).run();if(!(0,i.isSuccessCommandResult)(o))return(0,s.Just)(o);if(this.args.context.transactionInfoCertificate){const{keyUsageNumber:e,payload:c}=this.args.context.transactionInfoCertificate;await this.api.sendCommand(new i.LoadCertificateCommand({keyUsage:e,certificate:c}))}const r=await new y.SendPayloadInChunksTask(this.api,{payload:this.args.context.transactionInfo,commandFactory:e=>new C.ProvideTransactionInformationCommand({data:e.chunkedData,isFirstChunk:e.isFirstChunk})}).run();if(!(0,i.isSuccessCommandResult)(r))return(0,s.Just)(r);const h=this.args.web3Check?[...this.args.context.transactionFields,this.args.web3Check]:this.args.context.transactionFields;for(const e of h){const c=await new p.ProvideTransactionFieldDescriptionTask(this.api,{field:e,serializedTransaction:this.args.serializedTransaction,chainId:this.args.chainId,transactionParser:this.args.transactionParser,contextModule:this.args.contextModule,transactionEnums:this.args.context.transactionEnums}).run();if(c.isJust())return c}return s.Nothing}}0&&(module.exports={ProvideTransactionGenericContextTask});
|
|
2
|
-
//# sourceMappingURL=ProvideTransactionGenericContextTask.js.map
|