@ledgerhq/device-signer-kit-ethereum 1.1.0 → 1.2.0
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 +162 -371
- 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 +1 -1
- package/lib/cjs/api/app-binder/GetAddressDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/GetAddressDeviceActionTypes.js.map +1 -1
- package/lib/cjs/api/app-binder/SignPersonalMessageDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/SignPersonalMessageDeviceActionTypes.js.map +1 -1
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +1 -1
- package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js.map +1 -1
- package/lib/cjs/api/index.js +1 -1
- package/lib/cjs/api/index.js.map +2 -2
- package/lib/cjs/api/model/TransactionType.js +2 -0
- package/lib/cjs/api/model/TransactionType.js.map +7 -0
- package/lib/cjs/internal/DefaultSignerEth.js +1 -1
- package/lib/cjs/internal/DefaultSignerEth.js.map +2 -2
- package/lib/cjs/internal/DefaultSignerEth.test.js +1 -1
- package/lib/cjs/internal/DefaultSignerEth.test.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/GetAddressCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/GetAddressCommand.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/GetAddressCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/GetAddressCommand.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/GetChallengeCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/GetChallengeCommand.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/GetChallengeCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/GetChallengeCommand.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/ProvideEnumCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideEnumCommand.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/ProvideEnumCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideEnumCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/ProvideNFTInformationCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideNFTInformationCommand.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/ProvideTokenInformationCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideTokenInformationCommand.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/ProvideTransactionInformationCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideTransactionInformationCommand.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/ProvideTransactionInformationCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideTransactionInformationCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.js.map +3 -3
- 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/SendEIP712StructDefinitionCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/SendEIP712StructDefinitionCommand.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/SendEIP712StructImplemCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/SendEIP712StructImplemCommand.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SetExternalPluginCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/SetExternalPluginCommand.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SetExternalPluginCommand.test.js +2 -2
- package/lib/cjs/internal/app-binder/command/SetExternalPluginCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SetPluginCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/SetPluginCommand.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SetPluginCommand.test.js +2 -2
- package/lib/cjs/internal/app-binder/command/SetPluginCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SignEIP712Command.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignEIP712Command.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SignEIP712Command.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignEIP712Command.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/SignPersonalMessageCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignPersonalMessageCommand.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SignTransactionCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignTransactionCommand.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/StartTransactionCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/StartTransactionCommand.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/StartTransactionCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/StartTransactionCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/StoreTransactionCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/StoreTransactionCommand.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/StoreTransactionCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/StoreTransactionCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/utils/ethAppErrors.js +2 -0
- package/lib/cjs/internal/app-binder/command/utils/ethAppErrors.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/utils/ethAppErrors.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/utils/ethAppErrors.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/constant/plugins.js +2 -0
- package/lib/cjs/internal/app-binder/constant/plugins.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/__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__/setupOpenAppDAMock.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js.map +2 -2
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map +3 -3
- 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/BuildTransactionContextTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js.map +3 -3
- 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 +2 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/SendCommandInChunksTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendCommandInChunksTask.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/SendEIP712StructImplemTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendEIP712StructImplemTask.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/SendEIP712StructImplemTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendEIP712StructImplemTask.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/SendSignPersonalMessageTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendSignPersonalMessageTask.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/SendSignPersonalMessageTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendSignPersonalMessageTask.test.js.map +2 -2
- 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/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/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/EthersRawTransactionMapper.js +2 -0
- package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.js.map +7 -0
- package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js +2 -0
- package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js.map +7 -0
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapper.js +1 -1
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapper.js.map +1 -1
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.js +1 -1
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.js.map +2 -2
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.test.js +1 -1
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.test.js.map +2 -2
- package/lib/cjs/internal/transaction/service/mapper/model/TransactionMapperResult.js +1 -1
- package/lib/cjs/internal/transaction/service/mapper/model/TransactionMapperResult.js.map +1 -1
- 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/transaction/use-case/SignTransactionUseCase.js +1 -1
- package/lib/cjs/internal/transaction/use-case/SignTransactionUseCase.js.map +2 -2
- package/lib/cjs/internal/transaction/use-case/SignTransactionUseCase.test.js +1 -1
- package/lib/cjs/internal/transaction/use-case/SignTransactionUseCase.test.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 +12 -12
- package/lib/esm/api/SignerEthBuilder.test.js +1 -1
- package/lib/esm/api/SignerEthBuilder.test.js.map +1 -1
- package/lib/esm/api/index.js +1 -1
- package/lib/esm/api/index.js.map +2 -2
- package/lib/esm/api/model/TransactionType.js +2 -0
- package/lib/esm/api/model/TransactionType.js.map +7 -0
- package/lib/esm/internal/DefaultSignerEth.js.map +2 -2
- package/lib/esm/internal/DefaultSignerEth.test.js +1 -1
- package/lib/esm/internal/DefaultSignerEth.test.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/GetAddressCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/GetAddressCommand.js.map +3 -3
- package/lib/esm/internal/app-binder/command/GetAddressCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/GetAddressCommand.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/GetChallengeCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/GetChallengeCommand.js.map +3 -3
- package/lib/esm/internal/app-binder/command/GetChallengeCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/GetChallengeCommand.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/ProvideEnumCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideEnumCommand.js.map +3 -3
- package/lib/esm/internal/app-binder/command/ProvideEnumCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideEnumCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/ProvideNFTInformationCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideNFTInformationCommand.js.map +3 -3
- package/lib/esm/internal/app-binder/command/ProvideTokenInformationCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideTokenInformationCommand.js.map +3 -3
- package/lib/esm/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js.map +3 -3
- package/lib/esm/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/ProvideTransactionInformationCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideTransactionInformationCommand.js.map +3 -3
- package/lib/esm/internal/app-binder/command/ProvideTransactionInformationCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideTransactionInformationCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.js.map +3 -3
- 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/SendEIP712StructDefinitionCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/SendEIP712StructDefinitionCommand.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/SendEIP712StructImplemCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/SendEIP712StructImplemCommand.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SetExternalPluginCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/SetExternalPluginCommand.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SetExternalPluginCommand.test.js +2 -2
- package/lib/esm/internal/app-binder/command/SetExternalPluginCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SetPluginCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/SetPluginCommand.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SetPluginCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SetPluginCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SignEIP712Command.js +1 -1
- package/lib/esm/internal/app-binder/command/SignEIP712Command.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SignEIP712Command.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SignEIP712Command.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/SignPersonalMessageCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/SignPersonalMessageCommand.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SignTransactionCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/SignTransactionCommand.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/StartTransactionCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/StartTransactionCommand.js.map +3 -3
- package/lib/esm/internal/app-binder/command/StartTransactionCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/StartTransactionCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/StoreTransactionCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/StoreTransactionCommand.js.map +3 -3
- package/lib/esm/internal/app-binder/command/StoreTransactionCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/StoreTransactionCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/utils/ethAppErrors.js +2 -0
- package/lib/esm/internal/app-binder/command/utils/ethAppErrors.js.map +7 -0
- package/lib/esm/internal/app-binder/command/utils/ethAppErrors.test.js +2 -0
- package/lib/esm/internal/app-binder/command/utils/ethAppErrors.test.js.map +7 -0
- package/lib/esm/internal/app-binder/constant/plugins.js +2 -0
- package/lib/esm/internal/app-binder/constant/plugins.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/__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__/setupOpenAppDAMock.js +1 -1
- package/lib/esm/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js.map +2 -2
- package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js +1 -1
- package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map +3 -3
- 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/BuildTransactionContextTask.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js.map +3 -3
- 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 +2 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js.map +2 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +2 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/SendCommandInChunksTask.js +1 -1
- package/lib/esm/internal/app-binder/task/SendCommandInChunksTask.js.map +2 -2
- package/lib/esm/internal/app-binder/task/SendEIP712StructImplemTask.js +1 -1
- package/lib/esm/internal/app-binder/task/SendEIP712StructImplemTask.js.map +2 -2
- package/lib/esm/internal/app-binder/task/SendEIP712StructImplemTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/SendEIP712StructImplemTask.test.js.map +2 -2
- package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.js +1 -1
- package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.js.map +2 -2
- package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.test.js.map +2 -2
- package/lib/esm/internal/app-binder/task/SendSignPersonalMessageTask.js +1 -1
- package/lib/esm/internal/app-binder/task/SendSignPersonalMessageTask.js.map +2 -2
- package/lib/esm/internal/app-binder/task/SendSignPersonalMessageTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/SendSignPersonalMessageTask.test.js.map +2 -2
- 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 +2 -2
- 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/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/EthersRawTransactionMapper.js +2 -0
- package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.js.map +7 -0
- package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js +2 -0
- package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js.map +7 -0
- package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.js +1 -1
- package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.js.map +2 -2
- package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.test.js +1 -1
- package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.test.js.map +2 -2
- package/lib/esm/internal/transaction/service/parser/TransactionParserService.js +1 -1
- package/lib/esm/internal/transaction/service/parser/TransactionParserService.js.map +2 -2
- package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
- package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js.map +2 -2
- package/lib/esm/internal/transaction/use-case/SignTransactionUseCase.js +1 -1
- package/lib/esm/internal/transaction/use-case/SignTransactionUseCase.js.map +2 -2
- package/lib/esm/internal/transaction/use-case/SignTransactionUseCase.test.js +1 -1
- package/lib/esm/internal/transaction/use-case/SignTransactionUseCase.test.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 +12 -12
- package/lib/types/api/SignerEth.d.ts +1 -2
- package/lib/types/api/SignerEth.d.ts.map +1 -1
- package/lib/types/api/app-binder/GetAddressDeviceActionTypes.d.ts +3 -2
- package/lib/types/api/app-binder/GetAddressDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/app-binder/SignPersonalMessageDeviceActionTypes.d.ts +3 -11
- package/lib/types/api/app-binder/SignPersonalMessageDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +4 -4
- package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts +3 -2
- package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/index.d.ts +2 -2
- package/lib/types/api/index.d.ts.map +1 -1
- package/lib/types/api/model/{Transaction.d.ts → TransactionType.d.ts} +1 -4
- package/lib/types/api/model/TransactionType.d.ts.map +1 -0
- package/lib/types/internal/DefaultSignerEth.d.ts +1 -2
- package/lib/types/internal/DefaultSignerEth.d.ts.map +1 -1
- package/lib/types/internal/app-binder/EthAppBinder.d.ts +1 -2
- package/lib/types/internal/app-binder/EthAppBinder.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/GetAddressCommand.d.ts +5 -3
- package/lib/types/internal/app-binder/command/GetAddressCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/GetChallengeCommand.d.ts +4 -2
- package/lib/types/internal/app-binder/command/GetChallengeCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideEnumCommand.d.ts +4 -2
- package/lib/types/internal/app-binder/command/ProvideEnumCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideNFTInformationCommand.d.ts +4 -3
- package/lib/types/internal/app-binder/command/ProvideNFTInformationCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideTokenInformationCommand.d.ts +4 -2
- package/lib/types/internal/app-binder/command/ProvideTokenInformationCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.d.ts +4 -2
- package/lib/types/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideTransactionInformationCommand.d.ts +4 -2
- package/lib/types/internal/app-binder/command/ProvideTransactionInformationCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideTrustedNameCommand.d.ts +4 -2
- package/lib/types/internal/app-binder/command/ProvideTrustedNameCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts +4 -2
- package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SendEIP712StructDefinitionCommand.d.ts +4 -2
- package/lib/types/internal/app-binder/command/SendEIP712StructDefinitionCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SendEIP712StructImplemCommand.d.ts +4 -2
- package/lib/types/internal/app-binder/command/SendEIP712StructImplemCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SetExternalPluginCommand.d.ts +5 -7
- package/lib/types/internal/app-binder/command/SetExternalPluginCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SetPluginCommand.d.ts +5 -7
- package/lib/types/internal/app-binder/command/SetPluginCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SignEIP712Command.d.ts +5 -3
- package/lib/types/internal/app-binder/command/SignEIP712Command.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SignPersonalMessageCommand.d.ts +5 -3
- package/lib/types/internal/app-binder/command/SignPersonalMessageCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SignTransactionCommand.d.ts +5 -3
- package/lib/types/internal/app-binder/command/SignTransactionCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/StartTransactionCommand.d.ts +4 -2
- package/lib/types/internal/app-binder/command/StartTransactionCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/StoreTransactionCommand.d.ts +4 -2
- package/lib/types/internal/app-binder/command/StoreTransactionCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/utils/ethAppErrors.d.ts +8 -0
- package/lib/types/internal/app-binder/command/utils/ethAppErrors.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/utils/ethAppErrors.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/utils/ethAppErrors.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/constant/plugins.d.ts +2 -0
- package/lib/types/internal/app-binder/constant/plugins.d.ts.map +1 -0
- package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts +9 -9
- 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 +11 -3
- package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts +2 -1
- 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__/testDeviceActionStates.d.ts +5 -2
- package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts +3 -3
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts +12 -5
- package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts +3 -6
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.d.ts +54 -12
- package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.d.ts +6 -6
- package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/SendCommandInChunksTask.d.ts +3 -2
- package/lib/types/internal/app-binder/task/SendCommandInChunksTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/SendEIP712StructImplemTask.d.ts +2 -1
- package/lib/types/internal/app-binder/task/SendEIP712StructImplemTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/SendPayloadInChunksTask.d.ts +2 -1
- package/lib/types/internal/app-binder/task/SendPayloadInChunksTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/SendSignPersonalMessageTask.d.ts +2 -1
- package/lib/types/internal/app-binder/task/SendSignPersonalMessageTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/SendSignTransactionTask.d.ts +3 -2
- package/lib/types/internal/app-binder/task/SendSignTransactionTask.d.ts.map +1 -1
- package/lib/types/internal/transaction/di/transactionModule.d.ts.map +1 -1
- package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.d.ts +7 -0
- package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.d.ts.map +1 -0
- package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.test.d.ts +2 -0
- package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.test.d.ts.map +1 -0
- package/lib/types/internal/transaction/service/mapper/TransactionMapper.d.ts +1 -2
- package/lib/types/internal/transaction/service/mapper/TransactionMapper.d.ts.map +1 -1
- package/lib/types/internal/transaction/service/mapper/TransactionMapperService.d.ts +1 -2
- package/lib/types/internal/transaction/service/mapper/TransactionMapperService.d.ts.map +1 -1
- package/lib/types/internal/transaction/service/mapper/model/TransactionMapperResult.d.ts +1 -1
- package/lib/types/internal/transaction/service/mapper/model/TransactionMapperResult.d.ts.map +1 -1
- package/lib/types/internal/transaction/service/parser/TransactionParserService.d.ts.map +1 -1
- package/lib/types/internal/transaction/use-case/SignTransactionUseCase.d.ts +1 -2
- package/lib/types/internal/transaction/use-case/SignTransactionUseCase.d.ts.map +1 -1
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +14 -14
- package/lib/cjs/api/model/Transaction.js +0 -2
- package/lib/cjs/api/model/Transaction.js.map +0 -7
- package/lib/cjs/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.js +0 -2
- package/lib/cjs/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.js.map +0 -7
- package/lib/cjs/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.test.js +0 -2
- package/lib/cjs/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.test.js.map +0 -7
- package/lib/cjs/internal/transaction/service/mapper/EthersV5TransactionMapper.js +0 -2
- package/lib/cjs/internal/transaction/service/mapper/EthersV5TransactionMapper.js.map +0 -7
- package/lib/cjs/internal/transaction/service/mapper/EthersV5TransactionMapper.test.js +0 -2
- package/lib/cjs/internal/transaction/service/mapper/EthersV5TransactionMapper.test.js.map +0 -7
- package/lib/cjs/internal/transaction/service/mapper/EthersV6TransactionMapper.js +0 -2
- package/lib/cjs/internal/transaction/service/mapper/EthersV6TransactionMapper.js.map +0 -7
- package/lib/cjs/internal/transaction/service/mapper/EthersV6TransactionMapper.test.js +0 -2
- package/lib/cjs/internal/transaction/service/mapper/EthersV6TransactionMapper.test.js.map +0 -7
- package/lib/esm/api/model/Transaction.js +0 -2
- package/lib/esm/api/model/Transaction.js.map +0 -7
- package/lib/esm/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.js +0 -2
- package/lib/esm/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.js.map +0 -7
- package/lib/esm/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.test.js +0 -2
- package/lib/esm/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.test.js.map +0 -7
- package/lib/esm/internal/transaction/service/mapper/EthersV5TransactionMapper.js +0 -2
- package/lib/esm/internal/transaction/service/mapper/EthersV5TransactionMapper.js.map +0 -7
- package/lib/esm/internal/transaction/service/mapper/EthersV5TransactionMapper.test.js +0 -2
- package/lib/esm/internal/transaction/service/mapper/EthersV5TransactionMapper.test.js.map +0 -7
- package/lib/esm/internal/transaction/service/mapper/EthersV6TransactionMapper.js +0 -2
- package/lib/esm/internal/transaction/service/mapper/EthersV6TransactionMapper.js.map +0 -7
- package/lib/esm/internal/transaction/service/mapper/EthersV6TransactionMapper.test.js +0 -2
- package/lib/esm/internal/transaction/service/mapper/EthersV6TransactionMapper.test.js.map +0 -7
- package/lib/types/api/model/Transaction.d.ts.map +0 -1
- package/lib/types/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.d.ts +0 -17
- package/lib/types/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.d.ts.map +0 -1
- package/lib/types/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.test.d.ts +0 -2
- package/lib/types/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.test.d.ts.map +0 -1
- package/lib/types/internal/transaction/service/mapper/EthersV5TransactionMapper.d.ts +0 -10
- package/lib/types/internal/transaction/service/mapper/EthersV5TransactionMapper.d.ts.map +0 -1
- package/lib/types/internal/transaction/service/mapper/EthersV5TransactionMapper.test.d.ts +0 -2
- package/lib/types/internal/transaction/service/mapper/EthersV5TransactionMapper.test.d.ts.map +0 -1
- package/lib/types/internal/transaction/service/mapper/EthersV6TransactionMapper.d.ts +0 -9
- package/lib/types/internal/transaction/service/mapper/EthersV6TransactionMapper.d.ts.map +0 -1
- package/lib/types/internal/transaction/service/mapper/EthersV6TransactionMapper.test.d.ts +0 -2
- package/lib/types/internal/transaction/service/mapper/EthersV6TransactionMapper.test.d.ts.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/task/SendSignPersonalMessageTask.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n ByteArrayBuilder,\n type CommandResult,\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\nimport { DerivationPathUtils } from \"@ledgerhq/signer-utils\";\n\nimport { type Signature } from \"@api/model/Signature\";\nimport {\n SignPersonalMessageCommand,\n type SignPersonalMessageCommandResponse,\n} from \"@internal/app-binder/command/SignPersonalMessageCommand\";\n\nimport { SendCommandInChunksTask } from \"./SendCommandInChunksTask\";\n\nconst PATH_SIZE = 4;\n\ntype SendSignPersonalMessageTaskArgs = {\n derivationPath: string;\n message: string | Uint8Array;\n};\n\nexport class SendSignPersonalMessageTask {\n constructor(\n private api: InternalApi,\n private args: SendSignPersonalMessageTaskArgs,\n ) {}\n\n async run(): Promise<CommandResult<Signature,
|
|
5
|
-
"mappings": "AAAA,OACE,oBAAAA,EAEA,wBAAAC,EAEA,0BAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,uBAAAC,MAA2B,yBAGpC,OACE,8BAAAC,MAEK,
|
|
4
|
+
"sourcesContent": ["import {\n ByteArrayBuilder,\n type CommandResult,\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\nimport { DerivationPathUtils } from \"@ledgerhq/signer-utils\";\n\nimport { type Signature } from \"@api/model/Signature\";\nimport {\n SignPersonalMessageCommand,\n type SignPersonalMessageCommandResponse,\n} from \"@internal/app-binder/command/SignPersonalMessageCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\n\nimport { SendCommandInChunksTask } from \"./SendCommandInChunksTask\";\n\nconst PATH_SIZE = 4;\n\ntype SendSignPersonalMessageTaskArgs = {\n derivationPath: string;\n message: string | Uint8Array;\n};\n\nexport class SendSignPersonalMessageTask {\n constructor(\n private api: InternalApi,\n private args: SendSignPersonalMessageTaskArgs,\n ) {}\n\n async run(): Promise<CommandResult<Signature, EthErrorCodes>> {\n const { derivationPath, message } = this.args;\n const paths = DerivationPathUtils.splitPath(derivationPath);\n\n const builder = new ByteArrayBuilder(\n message.length + 1 + (paths.length + 1) * PATH_SIZE,\n );\n // add the derivation paths length\n builder.add8BitUIntToData(paths.length);\n // add every derivation path\n paths.forEach((path) => {\n builder.add32BitUIntToData(path);\n });\n // add message length\n builder.add32BitUIntToData(message.length);\n // add the message\n if (typeof message === \"string\") {\n builder.addAsciiStringToData(message);\n } else {\n builder.addBufferToData(message);\n }\n\n const buffer = builder.build();\n\n const result =\n await new SendCommandInChunksTask<SignPersonalMessageCommandResponse>(\n this.api,\n {\n data: buffer,\n commandFactory: (args) =>\n new SignPersonalMessageCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n },\n ).run();\n\n if (!isSuccessCommandResult(result)) {\n return result;\n }\n\n return result.data.mapOrDefault(\n (data) => CommandResultFactory({ data }),\n CommandResultFactory({\n error: new InvalidStatusWordError(\"no signature returned\"),\n }),\n );\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OACE,oBAAAA,EAEA,wBAAAC,EAEA,0BAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,uBAAAC,MAA2B,yBAGpC,OACE,8BAAAC,MAEK,0DAGP,OAAS,2BAAAC,MAA+B,4BAExC,MAAMC,EAAY,EAOX,MAAMC,CAA4B,CACvC,YACUC,EACAC,EACR,CAFQ,SAAAD,EACA,UAAAC,CACP,CAEH,MAAM,KAAwD,CAC5D,KAAM,CAAE,eAAAC,EAAgB,QAAAC,CAAQ,EAAI,KAAK,KACnCC,EAAQT,EAAoB,UAAUO,CAAc,EAEpDG,EAAU,IAAId,EAClBY,EAAQ,OAAS,GAAKC,EAAM,OAAS,GAAKN,CAC5C,EAEAO,EAAQ,kBAAkBD,EAAM,MAAM,EAEtCA,EAAM,QAASE,GAAS,CACtBD,EAAQ,mBAAmBC,CAAI,CACjC,CAAC,EAEDD,EAAQ,mBAAmBF,EAAQ,MAAM,EAErC,OAAOA,GAAY,SACrBE,EAAQ,qBAAqBF,CAAO,EAEpCE,EAAQ,gBAAgBF,CAAO,EAGjC,MAAMI,EAASF,EAAQ,MAAM,EAEvBG,EACJ,MAAM,IAAIX,EACR,KAAK,IACL,CACE,KAAMU,EACN,eAAiBN,GACf,IAAIL,EAA2B,CAC7B,KAAMK,EAAK,YACX,aAAcA,EAAK,YACrB,CAAC,CACL,CACF,EAAE,IAAI,EAER,OAAKP,EAAuBc,CAAM,EAI3BA,EAAO,KAAK,aAChBC,GAASjB,EAAqB,CAAE,KAAAiB,CAAK,CAAC,EACvCjB,EAAqB,CACnB,MAAO,IAAIC,EAAuB,uBAAuB,CAC3D,CAAC,CACH,EARSe,CASX,CACF",
|
|
6
6
|
"names": ["ByteArrayBuilder", "CommandResultFactory", "InvalidStatusWordError", "isSuccessCommandResult", "DerivationPathUtils", "SignPersonalMessageCommand", "SendCommandInChunksTask", "PATH_SIZE", "SendSignPersonalMessageTask", "api", "args", "derivationPath", "message", "paths", "builder", "path", "buffer", "result", "data"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{CommandResultFactory as t}from"@ledgerhq/device-management-kit";import{InvalidStatusWordError as d}from"@ledgerhq/device-management-kit";import{Just as u,Nothing as f}from"purify-ts";import{SignPersonalMessageCommand as
|
|
1
|
+
import{CommandResultFactory as t}from"@ledgerhq/device-management-kit";import{InvalidStatusWordError as d}from"@ledgerhq/device-management-kit";import{Just as u,Nothing as f}from"purify-ts";import{SignPersonalMessageCommand as s}from"../../app-binder/command/SignPersonalMessageCommand";import{makeDeviceActionInternalApiMock as p}from"../../app-binder/device-action/__test-utils__/makeInternalApi";import{SendSignPersonalMessageTask as n}from"./SendSignPersonalMessageTask";const i="Hello, World!",g=new Uint8Array([72,101,108,108,111,44,32,87,111,114,108,100,33]),m=new Uint8Array([5,128,0,0,44,128,0,0,60,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,72,101,108,108,111,44,32,87,111,114,108,100,33]),E="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",l=new Uint8Array([5,128,0,0,44,128,0,0,60,128,0,0,0,0,0,0,0,0,0,0,0,0,0,1,189,76,111,114,101,109,32,105,112,115,117,109,32,100,111,108,111,114,32,115,105,116,32,97,109,101,116,44,32,99,111,110,115,101,99,116,101,116,117,114,32,97,100,105,112,105,115,99,105,110,103,32,101,108,105,116,44,32,115,101,100,32,100,111,32,101,105,117,115,109,111,100,32,116,101,109,112,111,114,32,105,110,99,105,100,105,100,117,110,116,32,117,116,32,108,97,98,111,114,101,32,101,116,32,100,111,108,111,114,101,32,109,97,103,110,97,32,97,108,105,113,117,97,46,32,85,116,32,101,110,105,109,32,97,100,32,109,105,110,105,109,32,118,101,110,105,97,109,44,32,113,117,105,115,32,110,111,115,116,114,117,100,32,101,120,101,114,99,105,116,97,116,105,111,110,32,117,108,108,97,109,99,111,32,108,97,98,111,114,105,115,32,110,105,115,105,32,117,116,32,97,108,105,113,117,105,112,32,101,120,32,101,97,32,99,111,109,109,111,100,111,32,99,111,110,115,101,113,117,97,116,46,32,68,117,105,115,32,97,117,116,101,32,105,114,117,114,101,32,100,111,108,111,114,32,105,110,32,114,101,112,114,101,104,101,110,100,101,114,105,116,32,105,110,32,118,111,108,117,112,116,97,116,101,32,118,101,108,105,116,32,101,115,115,101,32,99,105,108,108,117,109,32,100,111,108,111,114,101,32,101,117,32,102,117,103,105,97,116,32,110,117,108,108,97,32,112,97,114,105,97,116,117,114,46,32,69,120,99,101,112,116,101,117,114,32,115,105,110,116,32,111,99,99,97,101,99,97,116,32,99,117,112,105,100,97,116,97,116,32,110,111,110,32,112,114,111,105,100,101,110,116,44,32,115,117,110,116,32,105,110,32,99,117,108,112,97,32,113,117,105,32,111,102,102,105,99,105,97,32,100,101,115,101,114,117,110,116,32,109,111,108,108,105,116,32,97,110,105,109,32,105,100,32,101,115,116,32,108,97,98,111,114,117,109,46]);describe("SendSignPersonalMessageTask",()=>{const x=p(),c={v:27,r:"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",s:"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"},r=t({data:u(c)}),o=t({data:f});beforeEach(()=>{vi.resetAllMocks()}),describe("run",()=>{it("should send the message in chunks",async()=>{const e={derivationPath:"44'/60'/0'/0/0",message:i};x.sendCommand.mockResolvedValueOnce(r),x.sendCommand.mockResolvedValueOnce(o);const a=await new n(x,e).run();expect(x.sendCommand.mock.calls).toHaveLength(1),expect(x.sendCommand.mock.calls[0][0]).toStrictEqual(new s({data:new Uint8Array(m),isFirstChunk:!0})),expect(a.data).toStrictEqual(c)}),it("should send the message as byte arrays",async()=>{const e={derivationPath:"44'/60'/0'/0/0",message:g};x.sendCommand.mockResolvedValueOnce(r),x.sendCommand.mockResolvedValueOnce(o);const a=await new n(x,e).run();expect(x.sendCommand.mock.calls).toHaveLength(1),expect(x.sendCommand.mock.calls[0][0]).toStrictEqual(new s({data:new Uint8Array(m),isFirstChunk:!0})),expect(a.data).toStrictEqual(c)}),it("should send the long message in chunks",async()=>{const e={derivationPath:"44'/60'/0'/0/0",message:E};x.sendCommand.mockResolvedValueOnce(o),x.sendCommand.mockResolvedValueOnce(r);const a=await new n(x,e).run();expect(x.sendCommand.mock.calls).toHaveLength(2),expect(x.sendCommand.mock.calls[0][0]).toStrictEqual(new s({data:l.slice(0,255),isFirstChunk:!0})),expect(x.sendCommand.mock.calls[1][0]).toStrictEqual(new s({data:l.slice(255,510),isFirstChunk:!1})),expect(a.data).toStrictEqual(c)}),it("should return an error if the command fails",async()=>{const e={derivationPath:"44'/60'/0'/0/0",message:i};x.sendCommand.mockResolvedValueOnce(t({error:new d("An error")}));const a=await new n(x,e).run();expect(a).toStrictEqual(t({error:new d("An error")}))}),it("should return an error if the command returns no data",async()=>{const e={derivationPath:"44'/60'/0'/0/0",message:i};x.sendCommand.mockResolvedValueOnce(o);const a=await new n(x,e).run();expect(a).toStrictEqual(t({error:new d("no signature returned")}))})})});
|
|
2
2
|
//# sourceMappingURL=SendSignPersonalMessageTask.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/task/SendSignPersonalMessageTask.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { CommandResultFactory } from \"@ledgerhq/device-management-kit\";\nimport { InvalidStatusWordError } from \"@ledgerhq/device-management-kit\";\nimport { Just, Nothing } from \"purify-ts\";\n\nimport { SignPersonalMessageCommand } from \"@internal/app-binder/command/SignPersonalMessageCommand\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\n\nimport { SendSignPersonalMessageTask } from \"./SendSignPersonalMessageTask\";\n\nconst SEND_MESSAGE_HELLO_WORLD = \"Hello, World!\";\nconst SEND_MESSAGE_HELLO_WORLD_BYTES = new Uint8Array([\n 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x2c, 0x20, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x21,\n]);\nconst SEND_MESSAGE_HELLO_WORLD_DATA = new Uint8Array([\n 0x05, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x00, 0x3c, 0x80, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x48,\n 0x65, 0x6c, 0x6c, 0x6f, 0x2c, 0x20, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x21,\n]);\n\nconst MESSAGE_LONG =\n \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\";\nconst MESSAGE_LONG_DATA = new Uint8Array([\n 0x05, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x00, 0x3c, 0x80, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xbd, 0x4c,\n 0x6f, 0x72, 0x65, 0x6d, 0x20, 0x69, 0x70, 0x73, 0x75, 0x6d, 0x20, 0x64, 0x6f,\n 0x6c, 0x6f, 0x72, 0x20, 0x73, 0x69, 0x74, 0x20, 0x61, 0x6d, 0x65, 0x74, 0x2c,\n 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x74, 0x65, 0x74, 0x75, 0x72, 0x20,\n 0x61, 0x64, 0x69, 0x70, 0x69, 0x73, 0x63, 0x69, 0x6e, 0x67, 0x20, 0x65, 0x6c,\n 0x69, 0x74, 0x2c, 0x20, 0x73, 0x65, 0x64, 0x20, 0x64, 0x6f, 0x20, 0x65, 0x69,\n 0x75, 0x73, 0x6d, 0x6f, 0x64, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x20,\n 0x69, 0x6e, 0x63, 0x69, 0x64, 0x69, 0x64, 0x75, 0x6e, 0x74, 0x20, 0x75, 0x74,\n 0x20, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x65, 0x20, 0x65, 0x74, 0x20, 0x64, 0x6f,\n 0x6c, 0x6f, 0x72, 0x65, 0x20, 0x6d, 0x61, 0x67, 0x6e, 0x61, 0x20, 0x61, 0x6c,\n 0x69, 0x71, 0x75, 0x61, 0x2e, 0x20, 0x55, 0x74, 0x20, 0x65, 0x6e, 0x69, 0x6d,\n 0x20, 0x61, 0x64, 0x20, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x20, 0x76, 0x65, 0x6e,\n 0x69, 0x61, 0x6d, 0x2c, 0x20, 0x71, 0x75, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x73,\n 0x74, 0x72, 0x75, 0x64, 0x20, 0x65, 0x78, 0x65, 0x72, 0x63, 0x69, 0x74, 0x61,\n 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x75, 0x6c, 0x6c, 0x61, 0x6d, 0x63, 0x6f, 0x20,\n 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x69, 0x73, 0x20, 0x6e, 0x69, 0x73, 0x69, 0x20,\n 0x75, 0x74, 0x20, 0x61, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x70, 0x20, 0x65, 0x78,\n 0x20, 0x65, 0x61, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x64, 0x6f, 0x20, 0x63,\n 0x6f, 0x6e, 0x73, 0x65, 0x71, 0x75, 0x61, 0x74, 0x2e, 0x20, 0x44, 0x75, 0x69,\n 0x73, 0x20, 0x61, 0x75, 0x74, 0x65, 0x20, 0x69, 0x72, 0x75, 0x72, 0x65, 0x20,\n 0x64, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x69, 0x6e, 0x20, 0x72, 0x65, 0x70, 0x72,\n 0x65, 0x68, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x69, 0x74, 0x20, 0x69, 0x6e, 0x20,\n 0x76, 0x6f, 0x6c, 0x75, 0x70, 0x74, 0x61, 0x74, 0x65, 0x20, 0x76, 0x65, 0x6c,\n 0x69, 0x74, 0x20, 0x65, 0x73, 0x73, 0x65, 0x20, 0x63, 0x69, 0x6c, 0x6c, 0x75,\n 0x6d, 0x20, 0x64, 0x6f, 0x6c, 0x6f, 0x72, 0x65, 0x20, 0x65, 0x75, 0x20, 0x66,\n 0x75, 0x67, 0x69, 0x61, 0x74, 0x20, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x20, 0x70,\n 0x61, 0x72, 0x69, 0x61, 0x74, 0x75, 0x72, 0x2e, 0x20, 0x45, 0x78, 0x63, 0x65,\n 0x70, 0x74, 0x65, 0x75, 0x72, 0x20, 0x73, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x63,\n 0x63, 0x61, 0x65, 0x63, 0x61, 0x74, 0x20, 0x63, 0x75, 0x70, 0x69, 0x64, 0x61,\n 0x74, 0x61, 0x74, 0x20, 0x6e, 0x6f, 0x6e, 0x20, 0x70, 0x72, 0x6f, 0x69, 0x64,\n 0x65, 0x6e, 0x74, 0x2c, 0x20, 0x73, 0x75, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x20,\n 0x63, 0x75, 0x6c, 0x70, 0x61, 0x20, 0x71, 0x75, 0x69, 0x20, 0x6f, 0x66, 0x66,\n 0x69, 0x63, 0x69, 0x61, 0x20, 0x64, 0x65, 0x73, 0x65, 0x72, 0x75, 0x6e, 0x74,\n 0x20, 0x6d, 0x6f, 0x6c, 0x6c, 0x69, 0x74, 0x20, 0x61, 0x6e, 0x69, 0x6d, 0x20,\n 0x69, 0x64, 0x20, 0x65, 0x73, 0x74, 0x20, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x75,\n 0x6d, 0x2e,\n]);\n\ndescribe(\"SendSignPersonalMessageTask\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const signature = {\n v: 27,\n r: \"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\",\n s: \"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\",\n };\n const resultOk = CommandResultFactory({\n data: Just(signature),\n });\n const resultNothing = CommandResultFactory({ data: Nothing });\n\n beforeEach(() => {\n
|
|
5
|
-
"mappings": "AAAA,OAAS,wBAAAA,MAA4B,kCACrC,OAAS,0BAAAC,MAA8B,kCACvC,OAAS,QAAAC,EAAM,WAAAC,MAAe,YAE9B,OAAS,8BAAAC,MAAkC,0DAC3C,OAAS,mCAAAC,MAAuC,oEAEhD,OAAS,+BAAAC,MAAmC,gCAE5C,MAAMC,EAA2B,gBAC3BC,EAAiC,IAAI,WAAW,CACpD,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,EAC1E,CAAC,EACKC,EAAgC,IAAI,WAAW,CACnD,EAAM,IAAM,EAAM,EAAM,GAAM,IAAM,EAAM,EAAM,GAAM,IAAM,EAAM,EAAM,EACxE,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,GAAM,GACxE,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,EACpE,CAAC,EAEKC,EACJ,gcACIC,EAAoB,IAAI,WAAW,CACvC,EAAM,IAAM,EAAM,EAAM,GAAM,IAAM,EAAM,EAAM,GAAM,IAAM,EAAM,EAAM,EACxE,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,IAAM,GACxE,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IACxE,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GACxE,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GACxE,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IACxE,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IACxE,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GACxE,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IACxE,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IACxE,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IACxE,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IACxE,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IACxE,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IACxE,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GACxE,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GACxE,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GACxE,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IACxE,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GACxE,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IACxE,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GACxE,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IACxE,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GACxE,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IACxE,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IACxE,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IACxE,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IACxE,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IACxE,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GACxE,GAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GACxE,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IACxE,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GACxE,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IACxE,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IACxE,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GACxE,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IACxE,IAAM,EACR,CAAC,EAED,SAAS,8BAA+B,IAAM,CAC5C,MAAMC,EAAUP,EAAgC,EAC1CQ,EAAY,CAChB,EAAG,GACH,EAAG,qEACH,EAAG,oEACL,EACMC,EAAWd,EAAqB,CACpC,KAAME,EAAKW,CAAS,CACtB,CAAC,EACKE,EAAgBf,EAAqB,CAAE,KAAMG,CAAQ,CAAC,EAE5D,WAAW,IAAM,CACf,
|
|
4
|
+
"sourcesContent": ["import { CommandResultFactory } from \"@ledgerhq/device-management-kit\";\nimport { InvalidStatusWordError } from \"@ledgerhq/device-management-kit\";\nimport { Just, Nothing } from \"purify-ts\";\n\nimport { SignPersonalMessageCommand } from \"@internal/app-binder/command/SignPersonalMessageCommand\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\n\nimport { SendSignPersonalMessageTask } from \"./SendSignPersonalMessageTask\";\n\nconst SEND_MESSAGE_HELLO_WORLD = \"Hello, World!\";\nconst SEND_MESSAGE_HELLO_WORLD_BYTES = new Uint8Array([\n 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x2c, 0x20, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x21,\n]);\nconst SEND_MESSAGE_HELLO_WORLD_DATA = new Uint8Array([\n 0x05, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x00, 0x3c, 0x80, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x48,\n 0x65, 0x6c, 0x6c, 0x6f, 0x2c, 0x20, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x21,\n]);\n\nconst MESSAGE_LONG =\n \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\";\nconst MESSAGE_LONG_DATA = new Uint8Array([\n 0x05, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x00, 0x3c, 0x80, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xbd, 0x4c,\n 0x6f, 0x72, 0x65, 0x6d, 0x20, 0x69, 0x70, 0x73, 0x75, 0x6d, 0x20, 0x64, 0x6f,\n 0x6c, 0x6f, 0x72, 0x20, 0x73, 0x69, 0x74, 0x20, 0x61, 0x6d, 0x65, 0x74, 0x2c,\n 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x63, 0x74, 0x65, 0x74, 0x75, 0x72, 0x20,\n 0x61, 0x64, 0x69, 0x70, 0x69, 0x73, 0x63, 0x69, 0x6e, 0x67, 0x20, 0x65, 0x6c,\n 0x69, 0x74, 0x2c, 0x20, 0x73, 0x65, 0x64, 0x20, 0x64, 0x6f, 0x20, 0x65, 0x69,\n 0x75, 0x73, 0x6d, 0x6f, 0x64, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x20,\n 0x69, 0x6e, 0x63, 0x69, 0x64, 0x69, 0x64, 0x75, 0x6e, 0x74, 0x20, 0x75, 0x74,\n 0x20, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x65, 0x20, 0x65, 0x74, 0x20, 0x64, 0x6f,\n 0x6c, 0x6f, 0x72, 0x65, 0x20, 0x6d, 0x61, 0x67, 0x6e, 0x61, 0x20, 0x61, 0x6c,\n 0x69, 0x71, 0x75, 0x61, 0x2e, 0x20, 0x55, 0x74, 0x20, 0x65, 0x6e, 0x69, 0x6d,\n 0x20, 0x61, 0x64, 0x20, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x20, 0x76, 0x65, 0x6e,\n 0x69, 0x61, 0x6d, 0x2c, 0x20, 0x71, 0x75, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x73,\n 0x74, 0x72, 0x75, 0x64, 0x20, 0x65, 0x78, 0x65, 0x72, 0x63, 0x69, 0x74, 0x61,\n 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x75, 0x6c, 0x6c, 0x61, 0x6d, 0x63, 0x6f, 0x20,\n 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x69, 0x73, 0x20, 0x6e, 0x69, 0x73, 0x69, 0x20,\n 0x75, 0x74, 0x20, 0x61, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x70, 0x20, 0x65, 0x78,\n 0x20, 0x65, 0x61, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x64, 0x6f, 0x20, 0x63,\n 0x6f, 0x6e, 0x73, 0x65, 0x71, 0x75, 0x61, 0x74, 0x2e, 0x20, 0x44, 0x75, 0x69,\n 0x73, 0x20, 0x61, 0x75, 0x74, 0x65, 0x20, 0x69, 0x72, 0x75, 0x72, 0x65, 0x20,\n 0x64, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x69, 0x6e, 0x20, 0x72, 0x65, 0x70, 0x72,\n 0x65, 0x68, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x69, 0x74, 0x20, 0x69, 0x6e, 0x20,\n 0x76, 0x6f, 0x6c, 0x75, 0x70, 0x74, 0x61, 0x74, 0x65, 0x20, 0x76, 0x65, 0x6c,\n 0x69, 0x74, 0x20, 0x65, 0x73, 0x73, 0x65, 0x20, 0x63, 0x69, 0x6c, 0x6c, 0x75,\n 0x6d, 0x20, 0x64, 0x6f, 0x6c, 0x6f, 0x72, 0x65, 0x20, 0x65, 0x75, 0x20, 0x66,\n 0x75, 0x67, 0x69, 0x61, 0x74, 0x20, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x20, 0x70,\n 0x61, 0x72, 0x69, 0x61, 0x74, 0x75, 0x72, 0x2e, 0x20, 0x45, 0x78, 0x63, 0x65,\n 0x70, 0x74, 0x65, 0x75, 0x72, 0x20, 0x73, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x63,\n 0x63, 0x61, 0x65, 0x63, 0x61, 0x74, 0x20, 0x63, 0x75, 0x70, 0x69, 0x64, 0x61,\n 0x74, 0x61, 0x74, 0x20, 0x6e, 0x6f, 0x6e, 0x20, 0x70, 0x72, 0x6f, 0x69, 0x64,\n 0x65, 0x6e, 0x74, 0x2c, 0x20, 0x73, 0x75, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x20,\n 0x63, 0x75, 0x6c, 0x70, 0x61, 0x20, 0x71, 0x75, 0x69, 0x20, 0x6f, 0x66, 0x66,\n 0x69, 0x63, 0x69, 0x61, 0x20, 0x64, 0x65, 0x73, 0x65, 0x72, 0x75, 0x6e, 0x74,\n 0x20, 0x6d, 0x6f, 0x6c, 0x6c, 0x69, 0x74, 0x20, 0x61, 0x6e, 0x69, 0x6d, 0x20,\n 0x69, 0x64, 0x20, 0x65, 0x73, 0x74, 0x20, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x75,\n 0x6d, 0x2e,\n]);\n\ndescribe(\"SendSignPersonalMessageTask\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const signature = {\n v: 27,\n r: \"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\",\n s: \"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\",\n };\n const resultOk = CommandResultFactory({\n data: Just(signature),\n });\n const resultNothing = CommandResultFactory({ data: Nothing });\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"run\", () => {\n it(\"should send the message in chunks\", async () => {\n // GIVEN\n const args = {\n derivationPath: \"44'/60'/0'/0/0\",\n message: SEND_MESSAGE_HELLO_WORLD,\n };\n apiMock.sendCommand.mockResolvedValueOnce(resultOk);\n apiMock.sendCommand.mockResolvedValueOnce(resultNothing);\n\n // WHEN\n const result = await new SendSignPersonalMessageTask(apiMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand.mock.calls).toHaveLength(1);\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n new SignPersonalMessageCommand({\n data: new Uint8Array(SEND_MESSAGE_HELLO_WORLD_DATA),\n isFirstChunk: true,\n }),\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expect((result as any).data).toStrictEqual(signature);\n });\n\n it(\"should send the message as byte arrays\", async () => {\n // GIVEN\n const args = {\n derivationPath: \"44'/60'/0'/0/0\",\n message: SEND_MESSAGE_HELLO_WORLD_BYTES,\n };\n apiMock.sendCommand.mockResolvedValueOnce(resultOk);\n apiMock.sendCommand.mockResolvedValueOnce(resultNothing);\n\n // WHEN\n const result = await new SendSignPersonalMessageTask(apiMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand.mock.calls).toHaveLength(1);\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n new SignPersonalMessageCommand({\n data: new Uint8Array(SEND_MESSAGE_HELLO_WORLD_DATA),\n isFirstChunk: true,\n }),\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expect((result as any).data).toStrictEqual(signature);\n });\n\n it(\"should send the long message in chunks\", async () => {\n // GIVEN\n const args = {\n derivationPath: \"44'/60'/0'/0/0\",\n message: MESSAGE_LONG,\n };\n apiMock.sendCommand.mockResolvedValueOnce(resultNothing);\n apiMock.sendCommand.mockResolvedValueOnce(resultOk);\n\n // WHEN\n const result = await new SendSignPersonalMessageTask(apiMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand.mock.calls).toHaveLength(2);\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n new SignPersonalMessageCommand({\n data: MESSAGE_LONG_DATA.slice(0, 255),\n isFirstChunk: true,\n }),\n );\n expect(apiMock.sendCommand.mock.calls[1]![0]).toStrictEqual(\n new SignPersonalMessageCommand({\n data: MESSAGE_LONG_DATA.slice(255, 510),\n isFirstChunk: false,\n }),\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expect((result as any).data).toStrictEqual(signature);\n });\n\n it(\"should return an error if the command fails\", async () => {\n // GIVEN\n const args = {\n derivationPath: \"44'/60'/0'/0/0\",\n message: SEND_MESSAGE_HELLO_WORLD,\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"An error\"),\n }),\n );\n\n // WHEN\n const result = await new SendSignPersonalMessageTask(apiMock, args).run();\n\n // THEN\n expect(result).toStrictEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"An error\"),\n }),\n );\n });\n\n it(\"should return an error if the command returns no data\", async () => {\n // GIVEN\n const args = {\n derivationPath: \"44'/60'/0'/0/0\",\n message: SEND_MESSAGE_HELLO_WORLD,\n };\n apiMock.sendCommand.mockResolvedValueOnce(resultNothing);\n\n // WHEN\n const result = await new SendSignPersonalMessageTask(apiMock, args).run();\n\n // THEN\n expect(result).toStrictEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"no signature returned\"),\n }),\n );\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,wBAAAA,MAA4B,kCACrC,OAAS,0BAAAC,MAA8B,kCACvC,OAAS,QAAAC,EAAM,WAAAC,MAAe,YAE9B,OAAS,8BAAAC,MAAkC,0DAC3C,OAAS,mCAAAC,MAAuC,oEAEhD,OAAS,+BAAAC,MAAmC,gCAE5C,MAAMC,EAA2B,gBAC3BC,EAAiC,IAAI,WAAW,CACpD,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,EAC1E,CAAC,EACKC,EAAgC,IAAI,WAAW,CACnD,EAAM,IAAM,EAAM,EAAM,GAAM,IAAM,EAAM,EAAM,GAAM,IAAM,EAAM,EAAM,EACxE,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,GAAM,GACxE,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,EACpE,CAAC,EAEKC,EACJ,gcACIC,EAAoB,IAAI,WAAW,CACvC,EAAM,IAAM,EAAM,EAAM,GAAM,IAAM,EAAM,EAAM,GAAM,IAAM,EAAM,EAAM,EACxE,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,IAAM,GACxE,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IACxE,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GACxE,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GACxE,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IACxE,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IACxE,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GACxE,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IACxE,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IACxE,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IACxE,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IACxE,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IACxE,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IACxE,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GACxE,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GACxE,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GACxE,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IACxE,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GACxE,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IACxE,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GACxE,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IACxE,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GACxE,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IACxE,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IACxE,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IACxE,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IACxE,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IACxE,IAAM,IAAM,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",
|
|
6
6
|
"names": ["CommandResultFactory", "InvalidStatusWordError", "Just", "Nothing", "SignPersonalMessageCommand", "makeDeviceActionInternalApiMock", "SendSignPersonalMessageTask", "SEND_MESSAGE_HELLO_WORLD", "SEND_MESSAGE_HELLO_WORLD_BYTES", "SEND_MESSAGE_HELLO_WORLD_DATA", "MESSAGE_LONG", "MESSAGE_LONG_DATA", "apiMock", "signature", "resultOk", "resultNothing", "args", "result"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{APDU_MAX_PAYLOAD as u,ByteArrayBuilder as g,CommandResultFactory as d,hexaStringToBuffer as y,InvalidStatusWordError as h,isSuccessCommandResult as p}from"@ledgerhq/device-management-kit";import{DerivationPathUtils as T}from"@ledgerhq/signer-utils";import{decodeRlp as A,encodeRlp as S}from"ethers
|
|
1
|
+
import{APDU_MAX_PAYLOAD as u,ByteArrayBuilder as g,CommandResultFactory as d,hexaStringToBuffer as y,InvalidStatusWordError as h,isSuccessCommandResult as p}from"@ledgerhq/device-management-kit";import{DerivationPathUtils as T}from"@ledgerhq/signer-utils";import{decodeRlp as A,encodeRlp as S}from"ethers";import{Nothing as C}from"purify-ts";import{TransactionType as f}from"../../../api/model/TransactionType";import{SignTransactionCommand as I}from"../../app-binder/command/SignTransactionCommand";import{StartTransactionCommand as U}from"../../app-binder/command/StartTransactionCommand";const v=4;class B{constructor(o,e){this.api=o;this.args=e}async run(){if(!this.args.isLegacy){const t=await this.api.sendCommand(new U);return p(t)?this.recoverSignature(t.data).mapOrDefault(s=>d({data:s}),d({error:new h("no signature returned")})):t}const{derivationPath:o,serializedTransaction:e}=this.args,n=T.splitPath(o),r=new g(e.length+1+n.length*v);r.add8BitUIntToData(n.length),n.forEach(t=>{r.add32BitUIntToData(t)});const i=r.build(),a=this.getChunks(i,e);let c=C;for(let t=0;t<a.length;t++){const s=await this.api.sendCommand(new I({serializedTransaction:a[t],isFirstChunk:t===0}));if(!p(s))return s;c=s.data}return this.recoverSignature(c).mapOrDefault(t=>d({data:t}),d({error:new h("no signature returned")}))}getChunks(o,e){const n=Uint8Array.from([...o,...e]);let r=u;if(n.length<=r)return[n];if(this.args.transactionType===f.LEGACY)try{const c=A(e);if(Array.isArray(c)){const t=c.slice(-3),s=S(t),m=y(s).subarray(1);for(r=u;r>o.length;r--){const l=n.length%r;if(l===0||l>m.length)break}}}catch{r=u}let i=0;const a=[];for(;i<n.length;)a.push(n.slice(i,i+r)),i+=r;return a}recoverSignature(o){return o.map(({v:e,r:n,s:r})=>{if(this.args.transactionType!==f.LEGACY)return{v:e,r:n,s:r};const i=4294967295;let a=this.args.chainId;for(;a>i;)a=a>>8;const t=a*2+35&255;return{v:(e==t?0:1)+this.args.chainId*2+35,r:n,s:r}})}}export{B as SendSignTransactionTask};
|
|
2
2
|
//# sourceMappingURL=SendSignTransactionTask.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/task/SendSignTransactionTask.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n APDU_MAX_PAYLOAD,\n ByteArrayBuilder,\n type CommandResult,\n CommandResultFactory,\n hexaStringToBuffer,\n type InternalApi,\n InvalidStatusWordError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\nimport { DerivationPathUtils } from \"@ledgerhq/signer-utils\";\nimport { decodeRlp, encodeRlp } from \"ethers
|
|
5
|
-
"mappings": "AAAA,OACE,oBAAAA,EACA,oBAAAC,EAEA,wBAAAC,EACA,sBAAAC,EAEA,0BAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,uBAAAC,MAA2B,yBACpC,OAAS,aAAAC,EAAW,aAAAC,MAAiB,
|
|
6
|
-
"names": ["APDU_MAX_PAYLOAD", "ByteArrayBuilder", "CommandResultFactory", "hexaStringToBuffer", "InvalidStatusWordError", "isSuccessCommandResult", "DerivationPathUtils", "decodeRlp", "encodeRlp", "Nothing", "TransactionType", "SignTransactionCommand", "StartTransactionCommand", "PATH_SIZE", "SendSignTransactionTask", "api", "args", "signature", "data", "derivationPath", "serializedTransaction", "paths", "builder", "path", "derivations", "chunks", "resultData", "i", "result", "buffer", "chunkSize", "decodedRlp", "decodedVrs", "encodedVrs", "encodedVrsBuff", "lastChunkSize", "offset", "v", "s", "MAX_UINT32", "truncatedChainId", "v0"]
|
|
4
|
+
"sourcesContent": ["import {\n APDU_MAX_PAYLOAD,\n ByteArrayBuilder,\n type CommandResult,\n CommandResultFactory,\n hexaStringToBuffer,\n type InternalApi,\n InvalidStatusWordError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\nimport { DerivationPathUtils } from \"@ledgerhq/signer-utils\";\nimport { decodeRlp, encodeRlp } from \"ethers\";\nimport { Nothing } from \"purify-ts\";\n\nimport { type Signature } from \"@api/index\";\nimport { TransactionType } from \"@api/model/TransactionType\";\nimport {\n SignTransactionCommand,\n type SignTransactionCommandResponse,\n} from \"@internal/app-binder/command/SignTransactionCommand\";\nimport { StartTransactionCommand } from \"@internal/app-binder/command/StartTransactionCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\n\nconst PATH_SIZE = 4;\n\ntype SendSignTransactionTaskArgs = {\n derivationPath: string;\n serializedTransaction: Uint8Array;\n chainId: number;\n transactionType: TransactionType;\n isLegacy: boolean;\n};\n\nexport class SendSignTransactionTask {\n constructor(\n private api: InternalApi,\n private args: SendSignTransactionTaskArgs,\n ) {}\n\n async run(): Promise<CommandResult<Signature, EthErrorCodes>> {\n // For generic-parser transactions, the derivation path and transaction were previously sent\n if (!this.args.isLegacy) {\n const signature = await this.api.sendCommand(\n new StartTransactionCommand(),\n );\n if (!isSuccessCommandResult(signature)) {\n return signature;\n }\n return this.recoverSignature(signature.data).mapOrDefault(\n (data) => CommandResultFactory({ data }),\n CommandResultFactory({\n error: new InvalidStatusWordError(\"no signature returned\"),\n }),\n );\n }\n\n // For other transactions, add derivation path and transaction to the payload\n const { derivationPath, serializedTransaction } = this.args;\n const paths = DerivationPathUtils.splitPath(derivationPath);\n const builder = new ByteArrayBuilder(\n serializedTransaction.length + 1 + paths.length * PATH_SIZE,\n );\n // add the derivation paths length\n builder.add8BitUIntToData(paths.length);\n // add every derivation path\n paths.forEach((path) => {\n builder.add32BitUIntToData(path);\n });\n const derivations = builder.build();\n\n // Send chunks\n const chunks = this.getChunks(derivations, serializedTransaction);\n let resultData: SignTransactionCommandResponse = Nothing;\n for (let i = 0; i < chunks.length; i++) {\n const result = await this.api.sendCommand(\n new SignTransactionCommand({\n serializedTransaction: chunks[i]!,\n isFirstChunk: i === 0,\n }),\n );\n if (!isSuccessCommandResult(result)) {\n return result;\n }\n resultData = result.data;\n }\n\n return this.recoverSignature(resultData).mapOrDefault(\n (data) => CommandResultFactory({ data }),\n CommandResultFactory({\n error: new InvalidStatusWordError(\"no signature returned\"),\n }),\n );\n }\n\n private getChunks(\n derivations: Uint8Array,\n serializedTransaction: Uint8Array,\n ): Uint8Array[] {\n const buffer = Uint8Array.from([...derivations, ...serializedTransaction]);\n\n // No chunking for small transactions\n let chunkSize = APDU_MAX_PAYLOAD;\n if (buffer.length <= chunkSize) {\n return [buffer];\n }\n\n // Since EIP-155, legacy transactions signature encode the chainId in V parity and\n // it has to be part of the hashed transaction:\n // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-155.md\n //\n // A known issue is present in ethereum app for those transactions:\n // if the last chunk start at the EIP-155 marker (the chainId), then the app\n // will confuse it with a pre-eip155 transaction, and compute an invalid signature\n // before receiving the last chunk...\n // It cannot be fixed without breaking APDU backward compatibility.\n //\n // Therefore the client has to make sure the last chunk don't start on that marker.\n if (this.args.transactionType === TransactionType.LEGACY) {\n try {\n // Decode the RLP of the transaction and keep only the last 3 elements (v, r, s)\n const decodedRlp = decodeRlp(serializedTransaction);\n if (Array.isArray(decodedRlp)) {\n const decodedVrs = decodedRlp.slice(-3);\n // Encode those values back to RLP in order to get the length of this serialized list\n // Result should be something like [0xc0 + list payload length, list.map(rlp)]\n // since only v can be used to store the chainId in legacy transactions\n const encodedVrs = encodeRlp(decodedVrs);\n // Since chainIds are uint256, the list payload length can be 1B (v rlp description) + 32B (v) + 1B (r) + 1B (s) = 35B max (< 55B)\n // Therefore, the RLP of this vrs list should be prefixed by a value between [0xc1, 0xe3] (0xc0 + 35B = 0xe3 max)\n // @see https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp/\n // `encodedVrs` is then everything but the first byte of this serialization\n const encodedVrsBuff = hexaStringToBuffer(encodedVrs)!.subarray(1);\n\n // Now we search for the biggest chunk value that won't chunk just before the v,r,s values.\n for (\n chunkSize = APDU_MAX_PAYLOAD;\n chunkSize > derivations.length;\n chunkSize--\n ) {\n const lastChunkSize = buffer.length % chunkSize;\n if (lastChunkSize === 0 || lastChunkSize > encodedVrsBuff.length) {\n break;\n }\n }\n }\n } catch (_error) {\n // fallback to \"standard\" APDU chunk size if the transaction cannot be decoded\n chunkSize = APDU_MAX_PAYLOAD;\n }\n }\n\n // Finally we can chunk the buffer\n let offset = 0;\n const chunks: Uint8Array[] = [];\n while (offset < buffer.length) {\n chunks.push(buffer.slice(offset, offset + chunkSize));\n offset += chunkSize;\n }\n return chunks;\n }\n\n private recoverSignature(\n data: SignTransactionCommandResponse,\n ): SignTransactionCommandResponse {\n return data.map(({ v, r, s }) => {\n if (this.args.transactionType !== TransactionType.LEGACY) {\n return { v, r, s };\n }\n\n // Legacy transactions after EIP-155 has a signature parity formatted as:\n // V = CHAIN_ID * 2 + 35 + {0,1}\n // where {0,1} is the parity\n // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-155.md\n //\n // A known issue is present in ethereum app:\n // - chainId is encoded on 32 bits\n // - V is encoded on 8 bits\n // It means both can overflow for big chain IDs.\n //\n // That's why the client has to reconstruct it, to keep APDU backward compatibility\n // for main chain IDs.\n //\n // For more infos:\n // https://github.com/LedgerHQ/app-ethereum/blob/1.12.2/src_features/signTx/ui_common_signTx.c#L36\n // https://github.com/LedgerHQ/app-ethereum/blob/1.12.2/client/src/ledger_app_clients/ethereum/utils.py#L35\n\n // First truncate the chainId\n const MAX_UINT32 = 0xffffffff;\n let truncatedChainId = this.args.chainId;\n while (truncatedChainId > MAX_UINT32) {\n truncatedChainId = truncatedChainId >> 8;\n }\n\n // Then truncate the parity encoding\n const MAX_UINT8 = 0xff;\n const v0 = (truncatedChainId * 2 + 35) & MAX_UINT8;\n\n // Now reconstruct the full V\n const parity = v == v0 ? 0 : 1;\n const fullV = parity + this.args.chainId * 2 + 35;\n return { v: fullV, r, s };\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["APDU_MAX_PAYLOAD", "ByteArrayBuilder", "CommandResultFactory", "hexaStringToBuffer", "InvalidStatusWordError", "isSuccessCommandResult", "DerivationPathUtils", "decodeRlp", "encodeRlp", "Nothing", "TransactionType", "SignTransactionCommand", "StartTransactionCommand", "PATH_SIZE", "SendSignTransactionTask", "api", "args", "signature", "data", "derivationPath", "serializedTransaction", "paths", "builder", "path", "derivations", "chunks", "resultData", "i", "result", "buffer", "chunkSize", "decodedRlp", "decodedVrs", "encodedVrs", "encodedVrsBuff", "lastChunkSize", "offset", "v", "r", "s", "MAX_UINT32", "truncatedChainId", "v0"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{APDU_MAX_PAYLOAD as d,CommandResultFactory as i,hexaStringToBuffer as v,InvalidStatusWordError as y}from"@ledgerhq/device-management-kit";import{Transaction as k}from"ethers
|
|
1
|
+
import{APDU_MAX_PAYLOAD as d,CommandResultFactory as i,hexaStringToBuffer as v,InvalidStatusWordError as y}from"@ledgerhq/device-management-kit";import{Transaction as k}from"ethers";import{Just as m,Nothing as C}from"purify-ts";import{SignTransactionCommand as s}from"../../app-binder/command/SignTransactionCommand";import{StartTransactionCommand as w}from"../../app-binder/command/StartTransactionCommand";import{makeDeviceActionInternalApiMock as T}from"../../app-binder/device-action/__test-utils__/makeInternalApi";import{SendSignTransactionTask as n}from"./SendSignTransactionTask";const r=new Uint8Array([5,128,0,0,44,128,0,0,60,128,0,0,0,0,0,0,0,0,0,0,0]),t=new Uint8Array([5,128,0,0,44,128,0,0,60,128,0,0,0,0,0,0,0,0,0,0,0,248,107,130,6,126,132,87,25,19,31,131,1,16,104,148,218,193,127,149,141,46,229,35,162,32,98,6,153,69,151,193,61,131,30,199,128,184,68,169,5,156,187,0,0]),l=new Uint8Array([249,8,175,38,133,1,178,61,148,131,131,5,193,252,148,222,241,192,222,217,190,199,241,161,103,8,25,131,50,64,240,39,178,94,255,128,185,8,136,65,85,101,176,0,0,0,0,0,0,0,0,0,0,0,0,31,152,64,168,93,90,245,191,29,23,98,249,37,189,173,220,66,1,249,132,0,0,0,0,0,0,0,0,0,0,0,0,160,184,105,145,198,33,139,54,193,209,157,74,46,158,176,206,54,6,235,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,233,51,89,83,149,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,51,239,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,96,0,0,0,0,0,0,0,0,0]);describe("SendSignTransactionTask",()=>{const x=T(),u={v:27,r:"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",s:"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"},f=i({data:m(u)}),o=i({data:C});beforeEach(()=>{vi.resetAllMocks()}),describe("run",()=>{it("should send the transaction in one command",async()=>{const e={derivationPath:"44'/60'/0'/0/0",serializedTransaction:t,chainId:1,transactionType:1,isLegacy:!0};x.sendCommand.mockResolvedValueOnce(f);const a=await new n(x,e).run();expect(x.sendCommand.mock.calls).toHaveLength(1),expect(x.sendCommand.mock.calls[0][0]).toStrictEqual(new s({serializedTransaction:new Uint8Array([...r,...t]),isFirstChunk:!0})),expect(a.data).toStrictEqual(u)}),it("Generic-parser transaction should be signed without payload",async()=>{const e={derivationPath:"44'/60'/0'/0/0",serializedTransaction:t,chainId:1,transactionType:1,isLegacy:!1};x.sendCommand.mockResolvedValueOnce(f);const a=await new n(x,e).run();expect(x.sendCommand.mock.calls).toHaveLength(1),expect(x.sendCommand.mock.calls[0][0]).toStrictEqual(new w),expect(a.data).toStrictEqual(u)}),it("should send the transaction in chunks",async()=>{const e={derivationPath:"44'/60'/0'/0/0",serializedTransaction:l,chainId:1,transactionType:1,isLegacy:!0};x.sendCommand.mockResolvedValueOnce(o),x.sendCommand.mockResolvedValueOnce(f);const a=await new n(x,e).run();expect(x.sendCommand.mock.calls).toHaveLength(2),expect(x.sendCommand.mock.calls[0][0]).toStrictEqual(new s({serializedTransaction:new Uint8Array([...r,...l]).slice(0,d),isFirstChunk:!0})),expect(x.sendCommand.mock.calls[1][0]).toStrictEqual(new s({serializedTransaction:new Uint8Array([...r,...l]).slice(d,d*2),isFirstChunk:!1})),expect(a.data).toStrictEqual(u)}),it.each([[458,127,254],[458,0x818181818181,254],[452,0x818181818181,251]])("should prevent chunking legacy transactions just before the [r,s,v] for dataSize %i, chainId %i",async(e,a,h)=>{const c=new k;c.to="0x0123456789abcdef0123456789abcdef01234567",c.nonce=0,c.value=0n,c.gasLimit=1n,c.gasPrice=2n,c.data="0x"+new Array(e).fill("00").join(""),c.chainId=a,c.type=0;const p=v(c.unsignedSerialized),g={derivationPath:"44'/60'/0'/0/0",serializedTransaction:p,chainId:a,transactionType:0,isLegacy:!0};x.sendCommand.mockResolvedValueOnce(o),x.sendCommand.mockResolvedValueOnce(o),x.sendCommand.mockResolvedValue(f),await new n(x,g).run();const b=Uint8Array.from([...r,...p]);expect(x.sendCommand.mock.calls).toHaveLength(3),expect(x.sendCommand.mock.calls[0][0]).toStrictEqual(new s({serializedTransaction:b.slice(0,h),isFirstChunk:!0})),expect(x.sendCommand.mock.calls[1][0]).toStrictEqual(new s({serializedTransaction:b.slice(h,h*2),isFirstChunk:!1})),expect(x.sendCommand.mock.calls[2][0]).toStrictEqual(new s({serializedTransaction:b.slice(h*2),isFirstChunk:!1}))}),it("should return an error if the command fails",async()=>{const e={derivationPath:"44'/60'/0'/0/0",serializedTransaction:t,chainId:1,transactionType:1,isLegacy:!0};x.sendCommand.mockResolvedValueOnce(o);const a=await new n(x,e).run();expect(x.sendCommand.mock.calls).toHaveLength(1),expect(x.sendCommand.mock.calls[0][0]).toStrictEqual(new s({serializedTransaction:new Uint8Array([...r,...t]),isFirstChunk:!0})),expect(a.error).toStrictEqual(new y("no signature returned"))}),it("should return an error if the generic-parser command fails",async()=>{const e={derivationPath:"44'/60'/0'/0/0",serializedTransaction:t,chainId:1,transactionType:1,isLegacy:!1};x.sendCommand.mockResolvedValueOnce(o);const a=await new n(x,e).run();expect(x.sendCommand.mock.calls).toHaveLength(1),expect(x.sendCommand.mock.calls[0][0]).toStrictEqual(new w),expect(a.error).toStrictEqual(new y("no signature returned"))}),it("should return an error if the command fails in the middle of the transaction",async()=>{const e={derivationPath:"44'/60'/0'/0/0",serializedTransaction:l,chainId:1,transactionType:1,isLegacy:!0};x.sendCommand.mockResolvedValueOnce(o),x.sendCommand.mockResolvedValueOnce(i({error:new y("An error")}));const a=await new n(x,e).run();expect(x.sendCommand.mock.calls).toHaveLength(2),expect(x.sendCommand.mock.calls[0][0]).toStrictEqual(new s({serializedTransaction:new Uint8Array([...r,...l]).slice(0,d),isFirstChunk:!0})),expect(x.sendCommand.mock.calls[1][0]).toStrictEqual(new s({serializedTransaction:new Uint8Array([...r,...l]).slice(d,d*2),isFirstChunk:!1})),expect(a.error).toStrictEqual(new y("An error"))}),it("legacy transaction with small chainId",async()=>{const e={derivationPath:"44'/60'/0'/0/0",serializedTransaction:t,chainId:56,transactionType:0,isLegacy:!0};x.sendCommand.mockResolvedValueOnce(i({data:m({v:147,r:"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",s:"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"})}));const a=await new n(x,e).run();expect(a.data.v).toStrictEqual(147)}),it("legacy transaction with small chainId with positive parity",async()=>{const e={derivationPath:"44'/60'/0'/0/0",serializedTransaction:t,chainId:56,transactionType:0,isLegacy:!0};x.sendCommand.mockResolvedValueOnce(i({data:m({v:148,r:"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",s:"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"})}));const a=await new n(x,e).run();expect(a.data.v).toStrictEqual(148)}),it("legacy transaction with big chainId",async()=>{const e={derivationPath:"44'/60'/0'/0/0",serializedTransaction:t,chainId:11297108109,transactionType:0,isLegacy:!0};x.sendCommand.mockResolvedValueOnce(i({data:m({v:131,r:"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",s:"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"})}));const a=await new n(x,e).run();expect(a.data.v).toStrictEqual(22594216253)}),it("legacy transaction with big chainId with positive parity",async()=>{const e={derivationPath:"44'/60'/0'/0/0",serializedTransaction:t,chainId:11297108109,transactionType:0,isLegacy:!0};x.sendCommand.mockResolvedValueOnce(i({data:m({v:132,r:"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",s:"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"})}));const a=await new n(x,e).run();expect(a.data.v).toStrictEqual(22594216254)})})});
|
|
2
2
|
//# sourceMappingURL=SendSignTransactionTask.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/task/SendSignTransactionTask.test.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n APDU_MAX_PAYLOAD,\n CommandResultFactory,\n hexaStringToBuffer,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { Transaction } from \"ethers-v6\";\nimport { Just, Nothing } from \"purify-ts\";\n\nimport { SignTransactionCommand } from \"@internal/app-binder/command/SignTransactionCommand\";\nimport { StartTransactionCommand } from \"@internal/app-binder/command/StartTransactionCommand\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\n\nimport { SendSignTransactionTask } from \"./SendSignTransactionTask\";\n\nconst PATH = new Uint8Array([\n 0x05, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x00, 0x3c, 0x80, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n]);\n\nconst SIMPLE_TRANSACTION = new Uint8Array([\n 0x05, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x00, 0x3c, 0x80, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x6b, 0x82, 0x06, 0x7e,\n 0x84, 0x57, 0x19, 0x13, 0x1f, 0x83, 0x01, 0x10, 0x68, 0x94, 0xda, 0xc1, 0x7f,\n 0x95, 0x8d, 0x2e, 0xe5, 0x23, 0xa2, 0x20, 0x62, 0x06, 0x99, 0x45, 0x97, 0xc1,\n 0x3d, 0x83, 0x1e, 0xc7, 0x80, 0xb8, 0x44, 0xa9, 0x05, 0x9c, 0xbb, 0x00, 0x00,\n]);\n\nconst BIG_TRANSACTION = new Uint8Array([\n 0xf9, 0x08, 0xaf, 0x26, 0x85, 0x01, 0xb2, 0x3d, 0x94, 0x83, 0x83, 0x05, 0xc1,\n 0xfc, 0x94, 0xde, 0xf1, 0xc0, 0xde, 0xd9, 0xbe, 0xc7, 0xf1, 0xa1, 0x67, 0x08,\n 0x19, 0x83, 0x32, 0x40, 0xf0, 0x27, 0xb2, 0x5e, 0xff, 0x80, 0xb9, 0x08, 0x88,\n 0x41, 0x55, 0x65, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x1f, 0x98, 0x40, 0xa8, 0x5d, 0x5a, 0xf5, 0xbf, 0x1d, 0x17,\n 0x62, 0xf9, 0x25, 0xbd, 0xad, 0xdc, 0x42, 0x01, 0xf9, 0x84, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xb8, 0x69, 0x91,\n 0xc6, 0x21, 0x8b, 0x36, 0xc1, 0xd1, 0x9d, 0x4a, 0x2e, 0x9e, 0xb0, 0xce, 0x36,\n 0x06, 0xeb, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x61, 0xe9, 0x33, 0x59, 0x53, 0x95, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x33,\n 0xef, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x05, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n]);\n\ndescribe(\"SendSignTransactionTask\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const signature = {\n v: 27,\n r: \"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\",\n s: \"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\",\n };\n const resultOk = CommandResultFactory({\n data: Just(signature),\n });\n const resultNothing = CommandResultFactory({ data: Nothing });\n\n beforeEach(() => {\n jest.resetAllMocks();\n });\n\n describe(\"run\", () => {\n it(\"should send the transaction in one command\", async () => {\n // GIVEN\n const args = {\n derivationPath: \"44'/60'/0'/0/0\",\n serializedTransaction: SIMPLE_TRANSACTION,\n chainId: 1,\n transactionType: 1,\n isLegacy: true,\n };\n apiMock.sendCommand.mockResolvedValueOnce(resultOk);\n\n // WHEN\n const result = await new SendSignTransactionTask(apiMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand.mock.calls).toHaveLength(1);\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n new SignTransactionCommand({\n serializedTransaction: new Uint8Array([\n ...PATH,\n ...SIMPLE_TRANSACTION,\n ]),\n isFirstChunk: true,\n }),\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expect((result as any).data).toStrictEqual(signature);\n });\n\n it(\"Generic-parser transaction should be signed without payload\", async () => {\n // GIVEN\n const args = {\n derivationPath: \"44'/60'/0'/0/0\",\n serializedTransaction: SIMPLE_TRANSACTION,\n chainId: 1,\n transactionType: 1,\n isLegacy: false,\n };\n apiMock.sendCommand.mockResolvedValueOnce(resultOk);\n\n // WHEN\n const result = await new SendSignTransactionTask(apiMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand.mock.calls).toHaveLength(1);\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n new StartTransactionCommand(),\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expect((result as any).data).toStrictEqual(signature);\n });\n\n it(\"should send the transaction in chunks\", async () => {\n // GIVEN\n const args = {\n derivationPath: \"44'/60'/0'/0/0\",\n serializedTransaction: BIG_TRANSACTION,\n chainId: 1,\n transactionType: 1,\n isLegacy: true,\n };\n apiMock.sendCommand.mockResolvedValueOnce(resultNothing);\n apiMock.sendCommand.mockResolvedValueOnce(resultOk);\n\n // WHEN\n const result = await new SendSignTransactionTask(apiMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand.mock.calls).toHaveLength(2);\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n new SignTransactionCommand({\n serializedTransaction: new Uint8Array([\n ...PATH,\n ...BIG_TRANSACTION,\n ]).slice(0, APDU_MAX_PAYLOAD),\n isFirstChunk: true,\n }),\n );\n expect(apiMock.sendCommand.mock.calls[1]![0]).toStrictEqual(\n new SignTransactionCommand({\n serializedTransaction: new Uint8Array([\n ...PATH,\n ...BIG_TRANSACTION,\n ]).slice(APDU_MAX_PAYLOAD, APDU_MAX_PAYLOAD * 2),\n isFirstChunk: false,\n }),\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expect((result as any).data).toStrictEqual(signature);\n });\n\n it.each([\n [458, 127, 254],\n [458, 0x818181818181, 254],\n [452, 0x818181818181, 251],\n ])(\n \"should prevent chunking legacy transactions just before the [r,s,v] for dataSize %i, chainId %i\",\n async (dataSize, chainId, chunkSize) => {\n // GIVEN\n const transaction = new Transaction();\n transaction.to = \"0x0123456789abcdef0123456789abcdef01234567\";\n transaction.nonce = 0;\n transaction.value = 0n;\n transaction.gasLimit = 1n;\n transaction.gasPrice = 2n;\n transaction.data = \"0x\" + new Array(dataSize).fill(\"00\").join(\"\");\n transaction.chainId = chainId;\n transaction.type = 0;\n const serialized = hexaStringToBuffer(transaction.unsignedSerialized)!;\n const args = {\n derivationPath: \"44'/60'/0'/0/0\",\n serializedTransaction: serialized,\n chainId,\n transactionType: 0,\n isLegacy: true,\n };\n apiMock.sendCommand.mockResolvedValueOnce(resultNothing);\n apiMock.sendCommand.mockResolvedValueOnce(resultNothing);\n apiMock.sendCommand.mockResolvedValue(resultOk);\n\n // WHEN\n await new SendSignTransactionTask(apiMock, args).run();\n\n // THEN\n const payload = Uint8Array.from([...PATH, ...serialized]);\n expect(apiMock.sendCommand.mock.calls).toHaveLength(3);\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n new SignTransactionCommand({\n serializedTransaction: payload.slice(0, chunkSize),\n isFirstChunk: true,\n }),\n );\n expect(apiMock.sendCommand.mock.calls[1]![0]).toStrictEqual(\n new SignTransactionCommand({\n serializedTransaction: payload.slice(chunkSize, chunkSize * 2),\n isFirstChunk: false,\n }),\n );\n expect(apiMock.sendCommand.mock.calls[2]![0]).toStrictEqual(\n new SignTransactionCommand({\n serializedTransaction: payload.slice(chunkSize * 2),\n isFirstChunk: false,\n }),\n );\n },\n );\n\n it(\"should return an error if the command fails\", async () => {\n // GIVEN\n const args = {\n derivationPath: \"44'/60'/0'/0/0\",\n serializedTransaction: SIMPLE_TRANSACTION,\n chainId: 1,\n transactionType: 1,\n isLegacy: true,\n };\n apiMock.sendCommand.mockResolvedValueOnce(resultNothing);\n\n // WHEN\n const result = await new SendSignTransactionTask(apiMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand.mock.calls).toHaveLength(1);\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n new SignTransactionCommand({\n serializedTransaction: new Uint8Array([\n ...PATH,\n ...SIMPLE_TRANSACTION,\n ]),\n isFirstChunk: true,\n }),\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expect((result as any).error).toStrictEqual(\n new InvalidStatusWordError(\"no signature returned\"),\n );\n });\n\n it(\"should return an error if the generic-parser command fails\", async () => {\n // GIVEN\n const args = {\n derivationPath: \"44'/60'/0'/0/0\",\n serializedTransaction: SIMPLE_TRANSACTION,\n chainId: 1,\n transactionType: 1,\n isLegacy: false,\n };\n apiMock.sendCommand.mockResolvedValueOnce(resultNothing);\n\n // WHEN\n const result = await new SendSignTransactionTask(apiMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand.mock.calls).toHaveLength(1);\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n new StartTransactionCommand(),\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expect((result as any).error).toStrictEqual(\n new InvalidStatusWordError(\"no signature returned\"),\n );\n });\n\n it(\"should return an error if the command fails in the middle of the transaction\", async () => {\n // GIVEN\n const args = {\n derivationPath: \"44'/60'/0'/0/0\",\n serializedTransaction: BIG_TRANSACTION,\n chainId: 1,\n transactionType: 1,\n isLegacy: true,\n };\n apiMock.sendCommand.mockResolvedValueOnce(resultNothing);\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"An error\"),\n }),\n );\n\n // WHEN\n const result = await new SendSignTransactionTask(apiMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand.mock.calls).toHaveLength(2);\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n new SignTransactionCommand({\n serializedTransaction: new Uint8Array([\n ...PATH,\n ...BIG_TRANSACTION,\n ]).slice(0, APDU_MAX_PAYLOAD),\n isFirstChunk: true,\n }),\n );\n expect(apiMock.sendCommand.mock.calls[1]![0]).toStrictEqual(\n new SignTransactionCommand({\n serializedTransaction: new Uint8Array([\n ...PATH,\n ...BIG_TRANSACTION,\n ]).slice(APDU_MAX_PAYLOAD, APDU_MAX_PAYLOAD * 2),\n isFirstChunk: false,\n }),\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expect((result as any).error).toStrictEqual(\n new InvalidStatusWordError(\"An error\"),\n );\n });\n\n it(\"legacy transaction with small chainId\", async () => {\n // GIVEN\n const args = {\n derivationPath: \"44'/60'/0'/0/0\",\n serializedTransaction: SIMPLE_TRANSACTION,\n chainId: 56,\n transactionType: 0,\n isLegacy: true,\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n data: Just({\n v: 147,\n r: \"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\",\n s: \"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\",\n }),\n }),\n );\n\n // WHEN\n const result = await new SendSignTransactionTask(apiMock, args).run();\n\n // THEN\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expect((result as any).data.v).toStrictEqual(147);\n });\n\n it(\"legacy transaction with small chainId with positive parity\", async () => {\n // GIVEN\n const args = {\n derivationPath: \"44'/60'/0'/0/0\",\n serializedTransaction: SIMPLE_TRANSACTION,\n chainId: 56,\n transactionType: 0,\n isLegacy: true,\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n data: Just({\n v: 148,\n r: \"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\",\n s: \"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\",\n }),\n }),\n );\n\n // WHEN\n const result = await new SendSignTransactionTask(apiMock, args).run();\n\n // THEN\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expect((result as any).data.v).toStrictEqual(148);\n });\n\n it(\"legacy transaction with big chainId\", async () => {\n // GIVEN\n const args = {\n derivationPath: \"44'/60'/0'/0/0\",\n serializedTransaction: SIMPLE_TRANSACTION,\n chainId: 11297108109,\n transactionType: 0,\n isLegacy: true,\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n data: Just({\n v: 131,\n r: \"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\",\n s: \"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\",\n }),\n }),\n );\n\n // WHEN\n const result = await new SendSignTransactionTask(apiMock, args).run();\n\n // THEN\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expect((result as any).data.v).toStrictEqual(22594216253);\n });\n\n it(\"legacy transaction with big chainId with positive parity\", async () => {\n // GIVEN\n const args = {\n derivationPath: \"44'/60'/0'/0/0\",\n serializedTransaction: SIMPLE_TRANSACTION,\n chainId: 11297108109,\n transactionType: 0,\n isLegacy: true,\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n data: Just({\n v: 132,\n r: \"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\",\n s: \"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\",\n }),\n }),\n );\n\n // WHEN\n const result = await new SendSignTransactionTask(apiMock, args).run();\n\n // THEN\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expect((result as any).data.v).toStrictEqual(22594216254);\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,OACE,oBAAAA,EACA,wBAAAC,EACA,sBAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,eAAAC,MAAmB,
|
|
4
|
+
"sourcesContent": ["import {\n APDU_MAX_PAYLOAD,\n CommandResultFactory,\n hexaStringToBuffer,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { Transaction } from \"ethers\";\nimport { Just, Nothing } from \"purify-ts\";\n\nimport { SignTransactionCommand } from \"@internal/app-binder/command/SignTransactionCommand\";\nimport { StartTransactionCommand } from \"@internal/app-binder/command/StartTransactionCommand\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\n\nimport { SendSignTransactionTask } from \"./SendSignTransactionTask\";\n\nconst PATH = new Uint8Array([\n 0x05, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x00, 0x3c, 0x80, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n]);\n\nconst SIMPLE_TRANSACTION = new Uint8Array([\n 0x05, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x00, 0x3c, 0x80, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x6b, 0x82, 0x06, 0x7e,\n 0x84, 0x57, 0x19, 0x13, 0x1f, 0x83, 0x01, 0x10, 0x68, 0x94, 0xda, 0xc1, 0x7f,\n 0x95, 0x8d, 0x2e, 0xe5, 0x23, 0xa2, 0x20, 0x62, 0x06, 0x99, 0x45, 0x97, 0xc1,\n 0x3d, 0x83, 0x1e, 0xc7, 0x80, 0xb8, 0x44, 0xa9, 0x05, 0x9c, 0xbb, 0x00, 0x00,\n]);\n\nconst BIG_TRANSACTION = new Uint8Array([\n 0xf9, 0x08, 0xaf, 0x26, 0x85, 0x01, 0xb2, 0x3d, 0x94, 0x83, 0x83, 0x05, 0xc1,\n 0xfc, 0x94, 0xde, 0xf1, 0xc0, 0xde, 0xd9, 0xbe, 0xc7, 0xf1, 0xa1, 0x67, 0x08,\n 0x19, 0x83, 0x32, 0x40, 0xf0, 0x27, 0xb2, 0x5e, 0xff, 0x80, 0xb9, 0x08, 0x88,\n 0x41, 0x55, 0x65, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x1f, 0x98, 0x40, 0xa8, 0x5d, 0x5a, 0xf5, 0xbf, 0x1d, 0x17,\n 0x62, 0xf9, 0x25, 0xbd, 0xad, 0xdc, 0x42, 0x01, 0xf9, 0x84, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xb8, 0x69, 0x91,\n 0xc6, 0x21, 0x8b, 0x36, 0xc1, 0xd1, 0x9d, 0x4a, 0x2e, 0x9e, 0xb0, 0xce, 0x36,\n 0x06, 0xeb, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x61, 0xe9, 0x33, 0x59, 0x53, 0x95, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x33,\n 0xef, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x05, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n]);\n\ndescribe(\"SendSignTransactionTask\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const signature = {\n v: 27,\n r: \"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\",\n s: \"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\",\n };\n const resultOk = CommandResultFactory({\n data: Just(signature),\n });\n const resultNothing = CommandResultFactory({ data: Nothing });\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"run\", () => {\n it(\"should send the transaction in one command\", async () => {\n // GIVEN\n const args = {\n derivationPath: \"44'/60'/0'/0/0\",\n serializedTransaction: SIMPLE_TRANSACTION,\n chainId: 1,\n transactionType: 1,\n isLegacy: true,\n };\n apiMock.sendCommand.mockResolvedValueOnce(resultOk);\n\n // WHEN\n const result = await new SendSignTransactionTask(apiMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand.mock.calls).toHaveLength(1);\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n new SignTransactionCommand({\n serializedTransaction: new Uint8Array([\n ...PATH,\n ...SIMPLE_TRANSACTION,\n ]),\n isFirstChunk: true,\n }),\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expect((result as any).data).toStrictEqual(signature);\n });\n\n it(\"Generic-parser transaction should be signed without payload\", async () => {\n // GIVEN\n const args = {\n derivationPath: \"44'/60'/0'/0/0\",\n serializedTransaction: SIMPLE_TRANSACTION,\n chainId: 1,\n transactionType: 1,\n isLegacy: false,\n };\n apiMock.sendCommand.mockResolvedValueOnce(resultOk);\n\n // WHEN\n const result = await new SendSignTransactionTask(apiMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand.mock.calls).toHaveLength(1);\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n new StartTransactionCommand(),\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expect((result as any).data).toStrictEqual(signature);\n });\n\n it(\"should send the transaction in chunks\", async () => {\n // GIVEN\n const args = {\n derivationPath: \"44'/60'/0'/0/0\",\n serializedTransaction: BIG_TRANSACTION,\n chainId: 1,\n transactionType: 1,\n isLegacy: true,\n };\n apiMock.sendCommand.mockResolvedValueOnce(resultNothing);\n apiMock.sendCommand.mockResolvedValueOnce(resultOk);\n\n // WHEN\n const result = await new SendSignTransactionTask(apiMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand.mock.calls).toHaveLength(2);\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n new SignTransactionCommand({\n serializedTransaction: new Uint8Array([\n ...PATH,\n ...BIG_TRANSACTION,\n ]).slice(0, APDU_MAX_PAYLOAD),\n isFirstChunk: true,\n }),\n );\n expect(apiMock.sendCommand.mock.calls[1]![0]).toStrictEqual(\n new SignTransactionCommand({\n serializedTransaction: new Uint8Array([\n ...PATH,\n ...BIG_TRANSACTION,\n ]).slice(APDU_MAX_PAYLOAD, APDU_MAX_PAYLOAD * 2),\n isFirstChunk: false,\n }),\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expect((result as any).data).toStrictEqual(signature);\n });\n\n it.each([\n [458, 127, 254],\n [458, 0x818181818181, 254],\n [452, 0x818181818181, 251],\n ])(\n \"should prevent chunking legacy transactions just before the [r,s,v] for dataSize %i, chainId %i\",\n async (dataSize, chainId, chunkSize) => {\n // GIVEN\n const transaction = new Transaction();\n transaction.to = \"0x0123456789abcdef0123456789abcdef01234567\";\n transaction.nonce = 0;\n transaction.value = 0n;\n transaction.gasLimit = 1n;\n transaction.gasPrice = 2n;\n transaction.data = \"0x\" + new Array(dataSize).fill(\"00\").join(\"\");\n transaction.chainId = chainId;\n transaction.type = 0;\n const serialized = hexaStringToBuffer(transaction.unsignedSerialized)!;\n const args = {\n derivationPath: \"44'/60'/0'/0/0\",\n serializedTransaction: serialized,\n chainId,\n transactionType: 0,\n isLegacy: true,\n };\n apiMock.sendCommand.mockResolvedValueOnce(resultNothing);\n apiMock.sendCommand.mockResolvedValueOnce(resultNothing);\n apiMock.sendCommand.mockResolvedValue(resultOk);\n\n // WHEN\n await new SendSignTransactionTask(apiMock, args).run();\n\n // THEN\n const payload = Uint8Array.from([...PATH, ...serialized]);\n expect(apiMock.sendCommand.mock.calls).toHaveLength(3);\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n new SignTransactionCommand({\n serializedTransaction: payload.slice(0, chunkSize),\n isFirstChunk: true,\n }),\n );\n expect(apiMock.sendCommand.mock.calls[1]![0]).toStrictEqual(\n new SignTransactionCommand({\n serializedTransaction: payload.slice(chunkSize, chunkSize * 2),\n isFirstChunk: false,\n }),\n );\n expect(apiMock.sendCommand.mock.calls[2]![0]).toStrictEqual(\n new SignTransactionCommand({\n serializedTransaction: payload.slice(chunkSize * 2),\n isFirstChunk: false,\n }),\n );\n },\n );\n\n it(\"should return an error if the command fails\", async () => {\n // GIVEN\n const args = {\n derivationPath: \"44'/60'/0'/0/0\",\n serializedTransaction: SIMPLE_TRANSACTION,\n chainId: 1,\n transactionType: 1,\n isLegacy: true,\n };\n apiMock.sendCommand.mockResolvedValueOnce(resultNothing);\n\n // WHEN\n const result = await new SendSignTransactionTask(apiMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand.mock.calls).toHaveLength(1);\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n new SignTransactionCommand({\n serializedTransaction: new Uint8Array([\n ...PATH,\n ...SIMPLE_TRANSACTION,\n ]),\n isFirstChunk: true,\n }),\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expect((result as any).error).toStrictEqual(\n new InvalidStatusWordError(\"no signature returned\"),\n );\n });\n\n it(\"should return an error if the generic-parser command fails\", async () => {\n // GIVEN\n const args = {\n derivationPath: \"44'/60'/0'/0/0\",\n serializedTransaction: SIMPLE_TRANSACTION,\n chainId: 1,\n transactionType: 1,\n isLegacy: false,\n };\n apiMock.sendCommand.mockResolvedValueOnce(resultNothing);\n\n // WHEN\n const result = await new SendSignTransactionTask(apiMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand.mock.calls).toHaveLength(1);\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n new StartTransactionCommand(),\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expect((result as any).error).toStrictEqual(\n new InvalidStatusWordError(\"no signature returned\"),\n );\n });\n\n it(\"should return an error if the command fails in the middle of the transaction\", async () => {\n // GIVEN\n const args = {\n derivationPath: \"44'/60'/0'/0/0\",\n serializedTransaction: BIG_TRANSACTION,\n chainId: 1,\n transactionType: 1,\n isLegacy: true,\n };\n apiMock.sendCommand.mockResolvedValueOnce(resultNothing);\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"An error\"),\n }),\n );\n\n // WHEN\n const result = await new SendSignTransactionTask(apiMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand.mock.calls).toHaveLength(2);\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n new SignTransactionCommand({\n serializedTransaction: new Uint8Array([\n ...PATH,\n ...BIG_TRANSACTION,\n ]).slice(0, APDU_MAX_PAYLOAD),\n isFirstChunk: true,\n }),\n );\n expect(apiMock.sendCommand.mock.calls[1]![0]).toStrictEqual(\n new SignTransactionCommand({\n serializedTransaction: new Uint8Array([\n ...PATH,\n ...BIG_TRANSACTION,\n ]).slice(APDU_MAX_PAYLOAD, APDU_MAX_PAYLOAD * 2),\n isFirstChunk: false,\n }),\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expect((result as any).error).toStrictEqual(\n new InvalidStatusWordError(\"An error\"),\n );\n });\n\n it(\"legacy transaction with small chainId\", async () => {\n // GIVEN\n const args = {\n derivationPath: \"44'/60'/0'/0/0\",\n serializedTransaction: SIMPLE_TRANSACTION,\n chainId: 56,\n transactionType: 0,\n isLegacy: true,\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n data: Just({\n v: 147,\n r: \"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\",\n s: \"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\",\n }),\n }),\n );\n\n // WHEN\n const result = await new SendSignTransactionTask(apiMock, args).run();\n\n // THEN\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expect((result as any).data.v).toStrictEqual(147);\n });\n\n it(\"legacy transaction with small chainId with positive parity\", async () => {\n // GIVEN\n const args = {\n derivationPath: \"44'/60'/0'/0/0\",\n serializedTransaction: SIMPLE_TRANSACTION,\n chainId: 56,\n transactionType: 0,\n isLegacy: true,\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n data: Just({\n v: 148,\n r: \"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\",\n s: \"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\",\n }),\n }),\n );\n\n // WHEN\n const result = await new SendSignTransactionTask(apiMock, args).run();\n\n // THEN\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expect((result as any).data.v).toStrictEqual(148);\n });\n\n it(\"legacy transaction with big chainId\", async () => {\n // GIVEN\n const args = {\n derivationPath: \"44'/60'/0'/0/0\",\n serializedTransaction: SIMPLE_TRANSACTION,\n chainId: 11297108109,\n transactionType: 0,\n isLegacy: true,\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n data: Just({\n v: 131,\n r: \"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\",\n s: \"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\",\n }),\n }),\n );\n\n // WHEN\n const result = await new SendSignTransactionTask(apiMock, args).run();\n\n // THEN\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expect((result as any).data.v).toStrictEqual(22594216253);\n });\n\n it(\"legacy transaction with big chainId with positive parity\", async () => {\n // GIVEN\n const args = {\n derivationPath: \"44'/60'/0'/0/0\",\n serializedTransaction: SIMPLE_TRANSACTION,\n chainId: 11297108109,\n transactionType: 0,\n isLegacy: true,\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n data: Just({\n v: 132,\n r: \"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\",\n s: \"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\",\n }),\n }),\n );\n\n // WHEN\n const result = await new SendSignTransactionTask(apiMock, args).run();\n\n // THEN\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expect((result as any).data.v).toStrictEqual(22594216254);\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "AAAA,OACE,oBAAAA,EACA,wBAAAC,EACA,sBAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,eAAAC,MAAmB,SAC5B,OAAS,QAAAC,EAAM,WAAAC,MAAe,YAE9B,OAAS,0BAAAC,MAA8B,sDACvC,OAAS,2BAAAC,MAA+B,uDACxC,OAAS,mCAAAC,MAAuC,oEAEhD,OAAS,2BAAAC,MAA+B,4BAExC,MAAMC,EAAO,IAAI,WAAW,CAC1B,EAAM,IAAM,EAAM,EAAM,GAAM,IAAM,EAAM,EAAM,GAAM,IAAM,EAAM,EAAM,EACxE,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,CAC5C,CAAC,EAEKC,EAAqB,IAAI,WAAW,CACxC,EAAM,IAAM,EAAM,EAAM,GAAM,IAAM,EAAM,EAAM,GAAM,IAAM,EAAM,EAAM,EACxE,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,IAAM,IAAM,IAAM,EAAM,IACxE,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,EAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IACxE,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,EAAM,IAAM,GAAM,IAAM,IACxE,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,IAAM,EAAM,CAC1E,CAAC,EAEKC,EAAkB,IAAI,WAAW,CACrC,IAAM,EAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,IAAM,IAAM,EAAM,IACxE,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EACxE,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,EAAM,IACxE,GAAM,GAAM,IAAM,IAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EACxE,EAAM,EAAM,EAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GACxE,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,EAAM,IAAM,IAAM,EAAM,EAAM,EACxE,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,IAAM,IAAM,IAAM,IACxE,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GACxE,EAAM,IAAM,GAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EACxE,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EACxE,EAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,EAAM,EAAM,EAAM,EAAM,EACxE,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EACxE,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,GACxE,IAAM,GAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EACxE,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EACxE,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,IAAM,EAAM,EAAM,EAAM,EAAM,EACxE,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EACxE,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EACxE,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EACxE,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EACxE,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,IAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EACxE,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EACxE,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,GACxE,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EACxE,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EACxE,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",
|
|
6
6
|
"names": ["APDU_MAX_PAYLOAD", "CommandResultFactory", "hexaStringToBuffer", "InvalidStatusWordError", "Transaction", "Just", "Nothing", "SignTransactionCommand", "StartTransactionCommand", "makeDeviceActionInternalApiMock", "SendSignTransactionTask", "PATH", "SIMPLE_TRANSACTION", "BIG_TRANSACTION", "apiMock", "signature", "resultOk", "resultNothing", "args", "result", "dataSize", "chainId", "chunkSize", "transaction", "serialized", "payload"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{SignMessageUseCase as a}from"./SignMessageUseCase";describe("SignMessageUseCase",()=>{it("should call signPersonalMessage on appBinder with the correct arguments",()=>{const e="44'/501'/0'/0'",s="Hello world",n={signPersonalMessage:
|
|
1
|
+
import{SignMessageUseCase as a}from"./SignMessageUseCase";describe("SignMessageUseCase",()=>{it("should call signPersonalMessage on appBinder with the correct arguments",()=>{const e="44'/501'/0'/0'",s="Hello world",n={signPersonalMessage:vi.fn()};new a(n).execute(e,s),expect(n.signPersonalMessage).toHaveBeenCalledWith({derivationPath:e,message:s})})});
|
|
2
2
|
//# sourceMappingURL=SignMessageUseCase.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/message/use-case/SignMessageUseCase.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { type EthAppBinder } from \"@internal/app-binder/EthAppBinder\";\n\nimport { SignMessageUseCase } from \"./SignMessageUseCase\";\n\ndescribe(\"SignMessageUseCase\", () => {\n it(\"should call signPersonalMessage on appBinder with the correct arguments\", () => {\n // Given\n const derivationPath = \"44'/501'/0'/0'\";\n const message = \"Hello world\";\n const appBinder = {\n signPersonalMessage:
|
|
5
|
-
"mappings": "AAEA,OAAS,sBAAAA,MAA0B,uBAEnC,SAAS,qBAAsB,IAAM,CACnC,GAAG,0EAA2E,IAAM,CAElF,MAAMC,EAAiB,iBACjBC,EAAU,cACVC,EAAY,CAChB,oBAAqB,
|
|
4
|
+
"sourcesContent": ["import { type EthAppBinder } from \"@internal/app-binder/EthAppBinder\";\n\nimport { SignMessageUseCase } from \"./SignMessageUseCase\";\n\ndescribe(\"SignMessageUseCase\", () => {\n it(\"should call signPersonalMessage on appBinder with the correct arguments\", () => {\n // Given\n const derivationPath = \"44'/501'/0'/0'\";\n const message = \"Hello world\";\n const appBinder = {\n signPersonalMessage: vi.fn(),\n };\n const signMessageUseCase = new SignMessageUseCase(\n appBinder as unknown as EthAppBinder,\n );\n\n // When\n signMessageUseCase.execute(derivationPath, message);\n\n // Then\n expect(appBinder.signPersonalMessage).toHaveBeenCalledWith({\n derivationPath,\n message,\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "AAEA,OAAS,sBAAAA,MAA0B,uBAEnC,SAAS,qBAAsB,IAAM,CACnC,GAAG,0EAA2E,IAAM,CAElF,MAAMC,EAAiB,iBACjBC,EAAU,cACVC,EAAY,CAChB,oBAAqB,GAAG,GAAG,CAC7B,EAC2B,IAAIH,EAC7BG,CACF,EAGmB,QAAQF,EAAgBC,CAAO,EAGlD,OAAOC,EAAU,mBAAmB,EAAE,qBAAqB,CACzD,eAAAF,EACA,QAAAC,CACF,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
6
|
"names": ["SignMessageUseCase", "derivationPath", "message", "appBinder"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ContainerModule as a}from"inversify";import{transactionTypes as o}from"../../transaction/di/transactionTypes";import{
|
|
1
|
+
import{ContainerModule as a}from"inversify";import{transactionTypes as o}from"../../transaction/di/transactionTypes";import{EthersRawTransactionMapper as n}from"../../transaction/service/mapper/EthersRawTransactionMapper";import{TransactionMapperService as t}from"../../transaction/service/mapper/TransactionMapperService";import{TransactionParserService as i}from"../../transaction/service/parser/TransactionParserService";import{SignTransactionUseCase as e}from"../../transaction/use-case/SignTransactionUseCase";const y=()=>new a((r,s,c,p,m,T,f)=>{r(o.SignTransactionUseCase).to(e),r(o.TransactionMapperService).to(t),r(o.TransactionParserService).to(i),r(o.TransactionMappers).to(n)});export{y as transactionModuleFactory};
|
|
2
2
|
//# sourceMappingURL=transactionModule.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/transaction/di/transactionModule.ts"],
|
|
4
|
-
"sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { transactionTypes } from \"@internal/transaction/di/transactionTypes\";\nimport {
|
|
5
|
-
"mappings": "AAAA,OAAS,mBAAAA,MAAuB,YAEhC,OAAS,oBAAAC,MAAwB,4CACjC,OAAS,
|
|
6
|
-
"names": ["ContainerModule", "transactionTypes", "
|
|
4
|
+
"sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { transactionTypes } from \"@internal/transaction/di/transactionTypes\";\nimport { EthersRawTransactionMapper } from \"@internal/transaction/service/mapper/EthersRawTransactionMapper\";\nimport { TransactionMapperService } from \"@internal/transaction/service/mapper/TransactionMapperService\";\nimport { TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\nimport { SignTransactionUseCase } from \"@internal/transaction/use-case/SignTransactionUseCase\";\n\nexport const transactionModuleFactory = () =>\n new ContainerModule(\n (\n bind,\n _unbind,\n _isBound,\n _rebind,\n _unbindAsync,\n _onActivation,\n _onDeactivation,\n ) => {\n bind(transactionTypes.SignTransactionUseCase).to(SignTransactionUseCase);\n bind(transactionTypes.TransactionMapperService).to(\n TransactionMapperService,\n );\n bind(transactionTypes.TransactionParserService).to(\n TransactionParserService,\n );\n bind(transactionTypes.TransactionMappers).to(EthersRawTransactionMapper);\n },\n );\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,mBAAAA,MAAuB,YAEhC,OAAS,oBAAAC,MAAwB,4CACjC,OAAS,8BAAAC,MAAkC,kEAC3C,OAAS,4BAAAC,MAAgC,gEACzC,OAAS,4BAAAC,MAAgC,gEACzC,OAAS,0BAAAC,MAA8B,wDAEhC,MAAMC,EAA2B,IACtC,IAAIN,EACF,CACEO,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,IACG,CACHN,EAAKN,EAAiB,sBAAsB,EAAE,GAAGI,CAAsB,EACvEE,EAAKN,EAAiB,wBAAwB,EAAE,GAC9CE,CACF,EACAI,EAAKN,EAAiB,wBAAwB,EAAE,GAC9CG,CACF,EACAG,EAAKN,EAAiB,kBAAkB,EAAE,GAAGC,CAA0B,CACzE,CACF",
|
|
6
|
+
"names": ["ContainerModule", "transactionTypes", "EthersRawTransactionMapper", "TransactionMapperService", "TransactionParserService", "SignTransactionUseCase", "transactionModuleFactory", "bind", "_unbind", "_isBound", "_rebind", "_unbindAsync", "_onActivation", "_onDeactivation"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Container as o}from"inversify";import{transactionModuleFactory as a}from"./transactionModule";import{transactionTypes as r}from"./transactionTypes";describe("transactionModuleFactory",()=>{describe("Default",()=>{let t,e;beforeEach(()=>{e=a(),t=new o,t.load(e)}),it("should return the transaction module",()=>{expect(e).toBeDefined()}),it("should bind a
|
|
1
|
+
import{Container as o}from"inversify";import{transactionModuleFactory as a}from"./transactionModule";import{transactionTypes as r}from"./transactionTypes";describe("transactionModuleFactory",()=>{describe("Default",()=>{let t,e;beforeEach(()=>{e=a(),t=new o,t.load(e)}),it("should return the transaction module",()=>{expect(e).toBeDefined()}),it("should bind a transaction mapper",()=>{expect(t.getAll(r.TransactionMappers)).toHaveLength(1)})})});
|
|
2
2
|
//# sourceMappingURL=transactionModule.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/transaction/di/transactionModule.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { Container } from \"inversify\";\n\nimport { transactionModuleFactory } from \"./transactionModule\";\nimport { transactionTypes } from \"./transactionTypes\";\n\ndescribe(\"transactionModuleFactory\", () => {\n describe(\"Default\", () => {\n let container: Container;\n let mod: ReturnType<typeof transactionModuleFactory>;\n beforeEach(() => {\n mod = transactionModuleFactory();\n container = new Container();\n container.load(mod);\n });\n\n it(\"should return the transaction module\", () => {\n expect(mod).toBeDefined();\n });\n\n it(\"should bind a
|
|
5
|
-
"mappings": "AAAA,OAAS,aAAAA,MAAiB,YAE1B,OAAS,4BAAAC,MAAgC,sBACzC,OAAS,oBAAAC,MAAwB,qBAEjC,SAAS,2BAA4B,IAAM,CACzC,SAAS,UAAW,IAAM,CACxB,IAAIC,EACAC,EACJ,WAAW,IAAM,CACfA,EAAMH,EAAyB,EAC/BE,EAAY,IAAIH,EAChBG,EAAU,KAAKC,CAAG,CACpB,CAAC,EAED,GAAG,uCAAwC,IAAM,CAC/C,OAAOA,CAAG,EAAE,YAAY,CAC1B,CAAC,EAED,GAAG,
|
|
4
|
+
"sourcesContent": ["import { Container } from \"inversify\";\n\nimport { transactionModuleFactory } from \"./transactionModule\";\nimport { transactionTypes } from \"./transactionTypes\";\n\ndescribe(\"transactionModuleFactory\", () => {\n describe(\"Default\", () => {\n let container: Container;\n let mod: ReturnType<typeof transactionModuleFactory>;\n beforeEach(() => {\n mod = transactionModuleFactory();\n container = new Container();\n container.load(mod);\n });\n\n it(\"should return the transaction module\", () => {\n expect(mod).toBeDefined();\n });\n\n it(\"should bind a transaction mapper\", () => {\n expect(\n container.getAll(transactionTypes.TransactionMappers),\n ).toHaveLength(1);\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,aAAAA,MAAiB,YAE1B,OAAS,4BAAAC,MAAgC,sBACzC,OAAS,oBAAAC,MAAwB,qBAEjC,SAAS,2BAA4B,IAAM,CACzC,SAAS,UAAW,IAAM,CACxB,IAAIC,EACAC,EACJ,WAAW,IAAM,CACfA,EAAMH,EAAyB,EAC/BE,EAAY,IAAIH,EAChBG,EAAU,KAAKC,CAAG,CACpB,CAAC,EAED,GAAG,uCAAwC,IAAM,CAC/C,OAAOA,CAAG,EAAE,YAAY,CAC1B,CAAC,EAED,GAAG,mCAAoC,IAAM,CAC3C,OACED,EAAU,OAAOD,EAAiB,kBAAkB,CACtD,EAAE,aAAa,CAAC,CAClB,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
6
|
"names": ["Container", "transactionModuleFactory", "transactionTypes", "container", "mod"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var s=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var p=(n,e,t,o)=>{for(var r=o>1?void 0:o?c(e,t):e,a=n.length-1,m;a>=0;a--)(m=n[a])&&(r=(o?m(e,t,r):m(r))||r);return o&&r&&s(e,t,r),r};import{bufferToHexaString as f}from"@ledgerhq/device-management-kit";import{ethers as u,getBytes as d}from"ethers";import{injectable as l}from"inversify";import{Just as y,Nothing as b}from"purify-ts";let i=class{map(e){try{const t=u.Transaction.from(f(e));return y({subset:{chainId:Number(t.chainId.toString()),to:t.to??void 0,data:t.data},serializedTransaction:d(t.unsignedSerialized),type:t.type||0})}catch{return b}}};i=p([l()],i);export{i as EthersRawTransactionMapper};
|
|
2
|
+
//# sourceMappingURL=EthersRawTransactionMapper.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/internal/transaction/service/mapper/EthersRawTransactionMapper.ts"],
|
|
4
|
+
"sourcesContent": ["import { bufferToHexaString } from \"@ledgerhq/device-management-kit\";\nimport { ethers, getBytes } from \"ethers\";\nimport { injectable } from \"inversify\";\nimport { Just, Maybe, Nothing } from \"purify-ts\";\n\nimport { TransactionMapperResult } from \"./model/TransactionMapperResult\";\nimport { TransactionMapper } from \"./TransactionMapper\";\n\n@injectable()\nexport class EthersRawTransactionMapper implements TransactionMapper {\n map(transaction: Uint8Array): Maybe<TransactionMapperResult> {\n try {\n const tx = ethers.Transaction.from(bufferToHexaString(transaction));\n return Just({\n subset: {\n chainId: Number(tx.chainId.toString()),\n to: tx.to ?? undefined,\n data: tx.data,\n },\n serializedTransaction: getBytes(tx.unsignedSerialized),\n type: tx.type || 0,\n });\n } catch (_error) {\n return Nothing;\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "wMAAA,OAAS,sBAAAA,MAA0B,kCACnC,OAAS,UAAAC,EAAQ,YAAAC,MAAgB,SACjC,OAAS,cAAAC,MAAkB,YAC3B,OAAS,QAAAC,EAAa,WAAAC,MAAe,YAM9B,IAAMC,EAAN,KAA8D,CACnE,IAAIC,EAAyD,CAC3D,GAAI,CACF,MAAMC,EAAKC,EAAO,YAAY,KAAKC,EAAmBH,CAAW,CAAC,EAClE,OAAOI,EAAK,CACV,OAAQ,CACN,QAAS,OAAOH,EAAG,QAAQ,SAAS,CAAC,EACrC,GAAIA,EAAG,IAAM,OACb,KAAMA,EAAG,IACX,EACA,sBAAuBI,EAASJ,EAAG,kBAAkB,EACrD,KAAMA,EAAG,MAAQ,CACnB,CAAC,CACH,MAAiB,CACf,OAAOK,CACT,CACF,CACF,EAjBaP,EAANQ,EAAA,CADNC,EAAW,GACCT",
|
|
6
|
+
"names": ["bufferToHexaString", "ethers", "getBytes", "injectable", "Just", "Nothing", "EthersRawTransactionMapper", "transaction", "tx", "ethers", "bufferToHexaString", "Just", "getBytes", "Nothing", "__decorateClass", "injectable"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{hexaStringToBuffer as n}from"@ledgerhq/device-management-kit";import{getBytes as r,Transaction as o}from"ethers";import{EthersRawTransactionMapper as s}from"./EthersRawTransactionMapper";describe("RawTransactionMapper",()=>{const a=new s;it("should return Nothing when empty raw transaction",()=>{const e=new Uint8Array(0),t=a.map(e);expect(t.isNothing()).toBeTruthy()}),it("should return Nothing when invalid raw transaction",()=>{const e=new Uint8Array(1),t=a.map(e);expect(t.isNothing()).toBeTruthy()}),it("should return a TransactionMapperResult",()=>{const e=n(o.from({chainId:1,to:"0x1234567890123456789012345678901234567890",data:"0x123456"}).unsignedSerialized),t=a.map(e);expect(t.isJust()).toBeTruthy(),expect(t.extract()?.serializedTransaction).toEqual(r(e)),expect(t.extract()?.subset).toEqual({chainId:1,to:"0x1234567890123456789012345678901234567890",data:"0x123456"}),expect(t.extract()?.type).toEqual(2)}),it("should return a TransactionMapperResult with undefined to",()=>{const e=n(o.from({chainId:1,data:"0x123456"}).unsignedSerialized),t=a.map(e);expect(t.isJust()).toBeTruthy(),expect(t.extract()?.serializedTransaction).toEqual(r(e)),expect(t.extract()?.subset).toEqual({chainId:1,to:void 0,data:"0x123456"}),expect(t.extract()?.type).toEqual(2)}),it("should return a TransactionMapperResult with empty data",()=>{const e=n(o.from({chainId:1,to:"0x1234567890123456789012345678901234567890"}).unsignedSerialized),t=a.map(e);expect(t.isJust()).toBeTruthy(),expect(t.extract()?.serializedTransaction).toEqual(r(e)),expect(t.extract()?.subset).toEqual({chainId:1,to:"0x1234567890123456789012345678901234567890",data:"0x"}),expect(t.extract()?.type).toEqual(2)}),it("should return a TransactionMapperResult with a custom type",()=>{const e=n(o.from({chainId:1,to:"0x1234567890123456789012345678901234567890",data:"0x123456",type:1}).unsignedSerialized),t=a.map(e);expect(t.isJust()).toBeTruthy(),expect(t.extract()?.serializedTransaction).toEqual(r(e)),expect(t.extract()?.subset).toEqual({chainId:1,to:"0x1234567890123456789012345678901234567890",data:"0x123456"}),expect(t.extract()?.type).toEqual(1)})});
|
|
2
|
+
//# sourceMappingURL=EthersRawTransactionMapper.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/internal/transaction/service/mapper/EthersRawTransactionMapper.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { hexaStringToBuffer } from \"@ledgerhq/device-management-kit\";\nimport { getBytes, Transaction } from \"ethers\";\n\nimport { EthersRawTransactionMapper } from \"./EthersRawTransactionMapper\";\n\ndescribe(\"RawTransactionMapper\", () => {\n const mapper = new EthersRawTransactionMapper();\n\n it(\"should return Nothing when empty raw transaction\", () => {\n // GIVEN\n const transaction = new Uint8Array(0);\n\n // WHEN\n const result = mapper.map(transaction);\n\n // THEN\n expect(result.isNothing()).toBeTruthy();\n });\n\n it(\"should return Nothing when invalid raw transaction\", () => {\n // GIVEN\n const transaction = new Uint8Array(1);\n\n // WHEN\n const result = mapper.map(transaction);\n\n // THEN\n expect(result.isNothing()).toBeTruthy();\n });\n\n it(\"should return a TransactionMapperResult\", () => {\n // GIVEN\n const transaction = hexaStringToBuffer(\n Transaction.from({\n chainId: 1,\n to: \"0x1234567890123456789012345678901234567890\",\n data: \"0x123456\",\n }).unsignedSerialized,\n )!;\n\n // WHEN\n const result = mapper.map(transaction);\n\n // THEN\n expect(result.isJust()).toBeTruthy();\n expect(result.extract()?.serializedTransaction).toEqual(\n getBytes(transaction),\n );\n expect(result.extract()?.subset).toEqual({\n chainId: 1,\n to: \"0x1234567890123456789012345678901234567890\",\n data: \"0x123456\",\n });\n expect(result.extract()?.type).toEqual(2);\n });\n\n it(\"should return a TransactionMapperResult with undefined to\", () => {\n // GIVEN\n const transaction = hexaStringToBuffer(\n Transaction.from({\n chainId: 1,\n data: \"0x123456\",\n }).unsignedSerialized,\n )!;\n\n // WHEN\n const result = mapper.map(transaction);\n\n // THEN\n expect(result.isJust()).toBeTruthy();\n expect(result.extract()?.serializedTransaction).toEqual(\n getBytes(transaction),\n );\n expect(result.extract()?.subset).toEqual({\n chainId: 1,\n to: undefined,\n data: \"0x123456\",\n });\n expect(result.extract()?.type).toEqual(2);\n });\n\n it(\"should return a TransactionMapperResult with empty data\", () => {\n // GIVEN\n const transaction = hexaStringToBuffer(\n Transaction.from({\n chainId: 1,\n to: \"0x1234567890123456789012345678901234567890\",\n }).unsignedSerialized,\n )!;\n\n // WHEN\n const result = mapper.map(transaction);\n\n // THEN\n expect(result.isJust()).toBeTruthy();\n expect(result.extract()?.serializedTransaction).toEqual(\n getBytes(transaction),\n );\n expect(result.extract()?.subset).toEqual({\n chainId: 1,\n to: \"0x1234567890123456789012345678901234567890\",\n data: \"0x\",\n });\n expect(result.extract()?.type).toEqual(2);\n });\n\n it(\"should return a TransactionMapperResult with a custom type\", () => {\n // GIVEN\n const transaction = hexaStringToBuffer(\n Transaction.from({\n chainId: 1,\n to: \"0x1234567890123456789012345678901234567890\",\n data: \"0x123456\",\n type: 1,\n }).unsignedSerialized,\n )!;\n\n // WHEN\n const result = mapper.map(transaction);\n\n // THEN\n expect(result.isJust()).toBeTruthy();\n expect(result.extract()?.serializedTransaction).toEqual(\n getBytes(transaction),\n );\n expect(result.extract()?.subset).toEqual({\n chainId: 1,\n to: \"0x1234567890123456789012345678901234567890\",\n data: \"0x123456\",\n });\n expect(result.extract()?.type).toEqual(1);\n });\n});\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,sBAAAA,MAA0B,kCACnC,OAAS,YAAAC,EAAU,eAAAC,MAAmB,SAEtC,OAAS,8BAAAC,MAAkC,+BAE3C,SAAS,uBAAwB,IAAM,CACrC,MAAMC,EAAS,IAAID,EAEnB,GAAG,mDAAoD,IAAM,CAE3D,MAAME,EAAc,IAAI,WAAW,CAAC,EAG9BC,EAASF,EAAO,IAAIC,CAAW,EAGrC,OAAOC,EAAO,UAAU,CAAC,EAAE,WAAW,CACxC,CAAC,EAED,GAAG,qDAAsD,IAAM,CAE7D,MAAMD,EAAc,IAAI,WAAW,CAAC,EAG9BC,EAASF,EAAO,IAAIC,CAAW,EAGrC,OAAOC,EAAO,UAAU,CAAC,EAAE,WAAW,CACxC,CAAC,EAED,GAAG,0CAA2C,IAAM,CAElD,MAAMD,EAAcL,EAClBE,EAAY,KAAK,CACf,QAAS,EACT,GAAI,6CACJ,KAAM,UACR,CAAC,EAAE,kBACL,EAGMI,EAASF,EAAO,IAAIC,CAAW,EAGrC,OAAOC,EAAO,OAAO,CAAC,EAAE,WAAW,EACnC,OAAOA,EAAO,QAAQ,GAAG,qBAAqB,EAAE,QAC9CL,EAASI,CAAW,CACtB,EACA,OAAOC,EAAO,QAAQ,GAAG,MAAM,EAAE,QAAQ,CACvC,QAAS,EACT,GAAI,6CACJ,KAAM,UACR,CAAC,EACD,OAAOA,EAAO,QAAQ,GAAG,IAAI,EAAE,QAAQ,CAAC,CAC1C,CAAC,EAED,GAAG,4DAA6D,IAAM,CAEpE,MAAMD,EAAcL,EAClBE,EAAY,KAAK,CACf,QAAS,EACT,KAAM,UACR,CAAC,EAAE,kBACL,EAGMI,EAASF,EAAO,IAAIC,CAAW,EAGrC,OAAOC,EAAO,OAAO,CAAC,EAAE,WAAW,EACnC,OAAOA,EAAO,QAAQ,GAAG,qBAAqB,EAAE,QAC9CL,EAASI,CAAW,CACtB,EACA,OAAOC,EAAO,QAAQ,GAAG,MAAM,EAAE,QAAQ,CACvC,QAAS,EACT,GAAI,OACJ,KAAM,UACR,CAAC,EACD,OAAOA,EAAO,QAAQ,GAAG,IAAI,EAAE,QAAQ,CAAC,CAC1C,CAAC,EAED,GAAG,0DAA2D,IAAM,CAElE,MAAMD,EAAcL,EAClBE,EAAY,KAAK,CACf,QAAS,EACT,GAAI,4CACN,CAAC,EAAE,kBACL,EAGMI,EAASF,EAAO,IAAIC,CAAW,EAGrC,OAAOC,EAAO,OAAO,CAAC,EAAE,WAAW,EACnC,OAAOA,EAAO,QAAQ,GAAG,qBAAqB,EAAE,QAC9CL,EAASI,CAAW,CACtB,EACA,OAAOC,EAAO,QAAQ,GAAG,MAAM,EAAE,QAAQ,CACvC,QAAS,EACT,GAAI,6CACJ,KAAM,IACR,CAAC,EACD,OAAOA,EAAO,QAAQ,GAAG,IAAI,EAAE,QAAQ,CAAC,CAC1C,CAAC,EAED,GAAG,6DAA8D,IAAM,CAErE,MAAMD,EAAcL,EAClBE,EAAY,KAAK,CACf,QAAS,EACT,GAAI,6CACJ,KAAM,WACN,KAAM,CACR,CAAC,EAAE,kBACL,EAGMI,EAASF,EAAO,IAAIC,CAAW,EAGrC,OAAOC,EAAO,OAAO,CAAC,EAAE,WAAW,EACnC,OAAOA,EAAO,QAAQ,GAAG,qBAAqB,EAAE,QAC9CL,EAASI,CAAW,CACtB,EACA,OAAOC,EAAO,QAAQ,GAAG,MAAM,EAAE,QAAQ,CACvC,QAAS,EACT,GAAI,6CACJ,KAAM,UACR,CAAC,EACD,OAAOA,EAAO,QAAQ,GAAG,IAAI,EAAE,QAAQ,CAAC,CAC1C,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["hexaStringToBuffer", "getBytes", "Transaction", "EthersRawTransactionMapper", "mapper", "transaction", "result"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var c=Object.defineProperty;var
|
|
1
|
+
var c=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var i=(a,r,o,t)=>{for(var p=t>1?void 0:t?u(r,o):r,n=a.length-1,e;n>=0;n--)(e=a[n])&&(p=(t?e(r,o,p):e(p))||p);return t&&p&&c(r,o,p),p},m=(a,r)=>(o,t)=>r(o,t,a);import{injectable as f,multiInject as l}from"inversify";import{Left as T,Right as h}from"purify-ts";import{transactionTypes as E}from"../../../transaction/di/transactionTypes";let s=class{_mappers;constructor(r){this._mappers=r}mapTransactionToSubset(r){for(const o of this._mappers){const t=o.map(r);if(t.isJust())return h(t.extract())}return T(new Error("Unsupported transaction type"))}};s=i([f(),m(0,l(E.TransactionMappers))],s);export{s as TransactionMapperService};
|
|
2
2
|
//# sourceMappingURL=TransactionMapperService.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/internal/transaction/service/mapper/TransactionMapperService.ts"],
|
|
4
|
-
"sourcesContent": ["import { injectable, multiInject } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport {
|
|
5
|
-
"mappings": "iOAAA,OAAS,cAAAA,EAAY,eAAAC,MAAmB,YACxC,OAAiB,QAAAC,EAAM,SAAAC,MAAa,
|
|
4
|
+
"sourcesContent": ["import { injectable, multiInject } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { transactionTypes } from \"@internal/transaction/di/transactionTypes\";\n\nimport { TransactionMapperResult } from \"./model/TransactionMapperResult\";\nimport { TransactionMapper } from \"./TransactionMapper\";\n\n@injectable()\nexport class TransactionMapperService {\n private _mappers: TransactionMapper[];\n\n constructor(\n @multiInject(transactionTypes.TransactionMappers)\n mappers: TransactionMapper[],\n ) {\n this._mappers = mappers;\n }\n\n mapTransactionToSubset(\n transaction: Uint8Array,\n ): Either<Error, TransactionMapperResult> {\n for (const mapper of this._mappers) {\n const result = mapper.map(transaction);\n if (result.isJust()) {\n return Right(result.extract());\n }\n }\n\n // TODO: handle correctly with the future error type\n return Left(new Error(\"Unsupported transaction type\"));\n }\n}\n"],
|
|
5
|
+
"mappings": "iOAAA,OAAS,cAAAA,EAAY,eAAAC,MAAmB,YACxC,OAAiB,QAAAC,EAAM,SAAAC,MAAa,YAEpC,OAAS,oBAAAC,MAAwB,4CAM1B,IAAMC,EAAN,KAA+B,CAC5B,SAER,YAEEC,EACA,CACA,KAAK,SAAWA,CAClB,CAEA,uBACEC,EACwC,CACxC,UAAWC,KAAU,KAAK,SAAU,CAClC,MAAMC,EAASD,EAAO,IAAID,CAAW,EACrC,GAAIE,EAAO,OAAO,EAChB,OAAOC,EAAMD,EAAO,QAAQ,CAAC,CAEjC,CAGA,OAAOE,EAAK,IAAI,MAAM,8BAA8B,CAAC,CACvD,CACF,EAvBaN,EAANO,EAAA,CADNC,EAAW,EAKPC,EAAA,EAAAC,EAAYC,EAAiB,kBAAkB,IAJvCX",
|
|
6
6
|
"names": ["injectable", "multiInject", "Left", "Right", "transactionTypes", "TransactionMapperService", "mappers", "transaction", "mapper", "result", "Right", "Left", "__decorateClass", "injectable", "__decorateParam", "multiInject", "transactionTypes"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Just as s,Nothing as r,Right as
|
|
1
|
+
import{Just as s,Nothing as r,Right as p}from"purify-ts";import{TransactionMapperService as o}from"./TransactionMapperService";const t=a=>({map:vi.fn().mockReturnValue(a)});describe("TransactionMapperService",()=>{let a;beforeEach(()=>{vi.clearAllMocks()}),it("should return a TransactionSubset",()=>{const e=[t(s({data:"data"})),t(r)];a=new o(e);const n=a.mapTransactionToSubset(new Uint8Array(0));expect(e[0].map).toHaveBeenCalled(),expect(e[1].map).not.toHaveBeenCalled(),expect(n).toEqual(p({data:"data"}))}),it("should return a TransactionSubset for the second mapper",()=>{const e=[t(r),t(s({data:"data-2"}))];a=new o(e);const n=a.mapTransactionToSubset(new Uint8Array(0));expect(e[0].map).toHaveBeenCalled(),expect(e[1].map).toHaveBeenCalled(),expect(n).toEqual(p({data:"data-2"}))}),it("should return an error",()=>{const e=[t(r),t(r)];a=new o(e);const n=a.mapTransactionToSubset(new Uint8Array(0));expect(e[0].map).toHaveBeenCalled(),expect(e[1].map).toHaveBeenCalled(),expect(n.isLeft()).toBeTruthy()})});
|
|
2
2
|
//# sourceMappingURL=TransactionMapperService.test.js.map
|