@ledgerhq/device-signer-kit-ethereum 0.0.0-transactionInspector-resolutionObj-20250916113438 → 0.0.0-trusted-names-native-transfer-1-20260121120757
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 +61 -3
- package/lib/cjs/api/SignerEth.js +1 -1
- package/lib/cjs/api/SignerEth.js.map +1 -1
- package/lib/cjs/api/SignerEthBuilder.test.js +1 -1
- package/lib/cjs/api/SignerEthBuilder.test.js.map +2 -2
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
- package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js.map +2 -2
- package/lib/cjs/api/app-binder/VerifySafeAddressDeviceActionTypes.js +2 -0
- package/lib/cjs/api/app-binder/VerifySafeAddressDeviceActionTypes.js.map +7 -0
- package/lib/cjs/api/model/SafeAddressOptions.js +2 -0
- package/lib/cjs/api/model/SafeAddressOptions.js.map +7 -0
- package/lib/cjs/api/model/TransactionOptions.js +1 -1
- package/lib/cjs/api/model/TransactionOptions.js.map +1 -1
- package/lib/cjs/internal/DefaultSignerEth.js +1 -1
- package/lib/cjs/internal/DefaultSignerEth.js.map +3 -3
- 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 +2 -2
- package/lib/cjs/internal/app-binder/command/GetAddressCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/GetAddressCommand.js.map +2 -2
- 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/GetAppConfigurationCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.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 +2 -2
- 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 +2 -2
- 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 +2 -2
- package/lib/cjs/internal/app-binder/command/ProvideNFTInformationCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideNFTInformationCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideTokenInformationCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideTokenInformationCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/ProvideTokenInformationCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideTokenInformationCommand.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js.map +2 -2
- 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 +2 -2
- 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 +2 -2
- package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.test.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/SendEIP712FilteringCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SendEIP712StructDefinitionCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/SendEIP712StructDefinitionCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SendEIP712StructImplemCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/SendEIP712StructImplemCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/SendEIP712StructImplemCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SendEIP712StructImplemCommand.test.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 +2 -2
- 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 +2 -2
- 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/SignAuthorizationDelegationCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.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 +2 -2
- package/lib/cjs/internal/app-binder/command/SignPersonalMessageCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignPersonalMessageCommand.test.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 +2 -2
- package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/StartTransactionCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/StartTransactionCommand.js.map +2 -2
- 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 +2 -2
- 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/Web3CheckOptInCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/Web3CheckOptInCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/Web3CheckOptInCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/Web3CheckOptInCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js.map +7 -0
- package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildBaseContexts.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildBaseContexts.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildBaseContexts.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildBaseContexts.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ParseTransactionTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/ParseTransactionTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ParseTransactionTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/ParseTransactionTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ProvideContextTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/ProvideContextTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ProvideContextTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/ProvideContextTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.test.js.map +7 -0
- package/lib/cjs/internal/di.js +1 -1
- package/lib/cjs/internal/di.js.map +3 -3
- package/lib/cjs/internal/safe/di/safeModule.js +2 -0
- package/lib/cjs/internal/safe/di/safeModule.js.map +7 -0
- package/lib/cjs/internal/safe/di/safeModule.test.js +2 -0
- package/lib/cjs/internal/safe/di/safeModule.test.js.map +7 -0
- package/lib/cjs/internal/safe/di/safeTypes.js +2 -0
- package/lib/cjs/internal/safe/di/safeTypes.js.map +7 -0
- package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.js +2 -0
- package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.js.map +7 -0
- package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.test.js +2 -0
- package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.test.js.map +7 -0
- package/lib/cjs/internal/transaction/service/parser/TransactionParserService.js +1 -1
- package/lib/cjs/internal/transaction/service/parser/TransactionParserService.js.map +2 -2
- package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
- package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js.map +2 -2
- package/lib/cjs/package.json +41 -37
- package/lib/esm/api/SignerEthBuilder.test.js +1 -1
- package/lib/esm/api/SignerEthBuilder.test.js.map +2 -2
- package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
- package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
- package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
- package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js.map +2 -2
- package/lib/esm/api/app-binder/VerifySafeAddressDeviceActionTypes.js +2 -0
- package/lib/esm/api/app-binder/VerifySafeAddressDeviceActionTypes.js.map +7 -0
- package/lib/esm/api/model/SafeAddressOptions.js +1 -0
- package/lib/esm/api/model/SafeAddressOptions.js.map +7 -0
- package/lib/esm/internal/DefaultSignerEth.js +1 -1
- package/lib/esm/internal/DefaultSignerEth.js.map +3 -3
- package/lib/esm/internal/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 +2 -2
- package/lib/esm/internal/app-binder/command/GetAddressCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/GetAddressCommand.js.map +2 -2
- 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/GetAppConfigurationCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.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 +2 -2
- 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 +2 -2
- 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 +2 -2
- package/lib/esm/internal/app-binder/command/ProvideNFTInformationCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideNFTInformationCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideTokenInformationCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideTokenInformationCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/ProvideTokenInformationCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideTokenInformationCommand.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js.map +2 -2
- 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 +2 -2
- 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 +2 -2
- package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.test.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/SendEIP712FilteringCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SendEIP712StructDefinitionCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/SendEIP712StructDefinitionCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SendEIP712StructImplemCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/SendEIP712StructImplemCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/SendEIP712StructImplemCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SendEIP712StructImplemCommand.test.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 +2 -2
- 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 +2 -2
- package/lib/esm/internal/app-binder/command/SetPluginCommand.test.js +2 -2
- package/lib/esm/internal/app-binder/command/SetPluginCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.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 +2 -2
- 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 +2 -2
- package/lib/esm/internal/app-binder/command/SignPersonalMessageCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SignPersonalMessageCommand.test.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 +2 -2
- package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/StartTransactionCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/StartTransactionCommand.js.map +2 -2
- 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 +2 -2
- 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/Web3CheckOptInCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/Web3CheckOptInCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/Web3CheckOptInCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/Web3CheckOptInCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js +2 -0
- package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js.map +7 -0
- package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js +2 -0
- package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js.map +7 -0
- package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js +2 -0
- package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildBaseContexts.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildBaseContexts.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildBaseContexts.test.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildBaseContexts.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/BuildFullContextsTask.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildFullContextsTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildFullContextsTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildFullContextsTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.js +2 -0
- package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ParseTransactionTask.js +2 -0
- package/lib/esm/internal/app-binder/task/ParseTransactionTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ParseTransactionTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/ParseTransactionTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ProvideContextTask.js +2 -0
- package/lib/esm/internal/app-binder/task/ProvideContextTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ProvideContextTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/ProvideContextTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.js +2 -0
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.test.js.map +7 -0
- package/lib/esm/internal/di.js +1 -1
- package/lib/esm/internal/di.js.map +3 -3
- package/lib/esm/internal/safe/di/safeModule.js +2 -0
- package/lib/esm/internal/safe/di/safeModule.js.map +7 -0
- package/lib/esm/internal/safe/di/safeModule.test.js +2 -0
- package/lib/esm/internal/safe/di/safeModule.test.js.map +7 -0
- package/lib/esm/internal/safe/di/safeTypes.js +2 -0
- package/lib/esm/internal/safe/di/safeTypes.js.map +7 -0
- package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.js +2 -0
- package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.js.map +7 -0
- package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.test.js +2 -0
- package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.test.js.map +7 -0
- package/lib/esm/internal/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/package.json +41 -37
- package/lib/types/api/SignerEth.d.ts +3 -0
- package/lib/types/api/SignerEth.d.ts.map +1 -1
- package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +10 -8
- package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts +6 -0
- package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/app-binder/VerifySafeAddressDeviceActionTypes.d.ts +30 -0
- package/lib/types/api/app-binder/VerifySafeAddressDeviceActionTypes.d.ts.map +1 -0
- package/lib/types/api/model/SafeAddressOptions.d.ts +5 -0
- package/lib/types/api/model/SafeAddressOptions.d.ts.map +1 -0
- package/lib/types/api/model/TransactionOptions.d.ts +0 -1
- package/lib/types/api/model/TransactionOptions.d.ts.map +1 -1
- package/lib/types/internal/DefaultSignerEth.d.ts +3 -0
- package/lib/types/internal/DefaultSignerEth.d.ts.map +1 -1
- package/lib/types/internal/app-binder/EthAppBinder.d.ts +6 -0
- package/lib/types/internal/app-binder/EthAppBinder.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/GetAddressCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/GetAddressCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/GetChallengeCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/GetChallengeCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideEnumCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/ProvideEnumCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideNFTInformationCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/ProvideNFTInformationCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.d.ts +35 -0
- package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideTokenInformationCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/ProvideTokenInformationCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideTransactionInformationCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/ProvideTransactionInformationCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideTrustedNameCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/ProvideTrustedNameCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideWeb3CheckCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/ProvideWeb3CheckCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts +30 -1
- package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SendEIP712StructDefinitionCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/SendEIP712StructDefinitionCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SendEIP712StructImplemCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/SendEIP712StructImplemCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SetExternalPluginCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/SetExternalPluginCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SetPluginCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/SetPluginCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SignEIP712Command.d.ts +1 -0
- package/lib/types/internal/app-binder/command/SignEIP712Command.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SignPersonalMessageCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/SignPersonalMessageCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SignTransactionCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/SignTransactionCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/StartTransactionCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/StartTransactionCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/StoreTransactionCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/StoreTransactionCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/Web3CheckOptInCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/Web3CheckOptInCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts +18 -18
- 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 +9 -0
- package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.d.ts +20 -0
- package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.d.ts.map +1 -0
- package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.d.ts +2 -0
- package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.d.ts +6 -0
- package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildBaseContexts.d.ts +47 -0
- package/lib/types/internal/app-binder/task/BuildBaseContexts.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildBaseContexts.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/BuildBaseContexts.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts +10 -3
- package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/BuildFullContextsTask.d.ts +39 -0
- package/lib/types/internal/app-binder/task/BuildFullContextsTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildFullContextsTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/BuildFullContextsTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.d.ts +19 -0
- package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildSubcontextsTask.d.ts +28 -0
- package/lib/types/internal/app-binder/task/BuildSubcontextsTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildSubcontextsTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/BuildSubcontextsTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.d.ts +21 -0
- package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/{PreBuildContextTask.d.ts → ParseTransactionTask.d.ts} +6 -6
- package/lib/types/internal/app-binder/task/ParseTransactionTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ParseTransactionTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/ParseTransactionTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ProvideContextTask.d.ts +22 -0
- package/lib/types/internal/app-binder/task/ProvideContextTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ProvideContextTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/ProvideContextTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts +16 -5
- package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.d.ts +36 -0
- package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.test.d.ts.map +1 -0
- package/lib/types/internal/di.d.ts.map +1 -1
- package/lib/types/internal/safe/di/safeModule.d.ts +3 -0
- package/lib/types/internal/safe/di/safeModule.d.ts.map +1 -0
- package/lib/types/internal/safe/di/safeModule.test.d.ts +2 -0
- package/lib/types/internal/safe/di/safeModule.test.d.ts.map +1 -0
- package/lib/types/internal/safe/di/safeTypes.d.ts +4 -0
- package/lib/types/internal/safe/di/safeTypes.d.ts.map +1 -0
- package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.d.ts +9 -0
- package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.d.ts.map +1 -0
- package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.test.d.ts +2 -0
- package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.test.d.ts.map +1 -0
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +36 -32
- package/lib/cjs/internal/app-binder/task/BuildSubContextTask.js +0 -2
- package/lib/cjs/internal/app-binder/task/BuildSubContextTask.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/BuildSubContextTask.test.js +0 -2
- package/lib/cjs/internal/app-binder/task/BuildSubContextTask.test.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js +0 -2
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js +0 -2
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js +0 -2
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js +0 -2
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/PreBuildContextTask.js +0 -2
- package/lib/cjs/internal/app-binder/task/PreBuildContextTask.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +0 -7
- package/lib/esm/internal/app-binder/task/BuildSubContextTask.js +0 -2
- package/lib/esm/internal/app-binder/task/BuildSubContextTask.js.map +0 -7
- package/lib/esm/internal/app-binder/task/BuildSubContextTask.test.js +0 -2
- package/lib/esm/internal/app-binder/task/BuildSubContextTask.test.js.map +0 -7
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js +0 -2
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js.map +0 -7
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js +0 -2
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js.map +0 -7
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js +0 -2
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js.map +0 -7
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js +0 -2
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js.map +0 -7
- package/lib/esm/internal/app-binder/task/PreBuildContextTask.js +0 -2
- package/lib/esm/internal/app-binder/task/PreBuildContextTask.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +0 -7
- package/lib/types/internal/app-binder/task/BuildSubContextTask.d.ts +0 -20
- package/lib/types/internal/app-binder/task/BuildSubContextTask.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/BuildSubContextTask.test.d.ts +0 -2
- package/lib/types/internal/app-binder/task/BuildSubContextTask.test.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts +0 -28
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.test.d.ts +0 -2
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.test.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts +0 -29
- package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/GetWeb3CheckTask.test.d.ts +0 -2
- package/lib/types/internal/app-binder/task/GetWeb3CheckTask.test.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/PreBuildContextTask.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts +0 -44
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.test.d.ts +0 -2
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.test.d.ts.map +0 -1
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.ts"],
|
|
4
|
+
"sourcesContent": ["import { type ClearSignContextSuccess } from \"@ledgerhq/context-module\";\nimport {\n type DeviceActionStateMachine,\n type InternalApi,\n isSuccessCommandResult,\n OpenAppDeviceAction,\n type StateMachineTypes,\n UserInteractionRequired,\n XStateDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Either, Left, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport {\n type VerifySafeAddressDAError,\n type VerifySafeAddressDAInput,\n type VerifySafeAddressDAIntermediateValue,\n type VerifySafeAddressDAInternalState,\n type VerifySafeAddressDAOutput,\n VerifySafeAddressDAStep,\n} from \"@api/app-binder/VerifySafeAddressDeviceActionTypes\";\nimport {\n BuildSafeAddressContextTask,\n type BuildSafeAddressContextTaskArgs,\n type BuildSafeAddressContextTaskResult,\n} from \"@internal/app-binder/task/BuildSafeAddressContextTask\";\nimport { ProvideContextTask } from \"@internal/app-binder/task/ProvideContextTask\";\n\nexport type MachineDependencies = {\n readonly buildSafeAddressContexts: (arg0: {\n input: BuildSafeAddressContextTaskArgs;\n }) => Promise<BuildSafeAddressContextTaskResult>;\n readonly provideContexts: (arg0: {\n input: {\n contexts: ClearSignContextSuccess[];\n };\n }) => Promise<Either<VerifySafeAddressDAError, void>>;\n};\n\nexport class VerifySafeAddressDeviceAction extends XStateDeviceAction<\n VerifySafeAddressDAOutput,\n VerifySafeAddressDAInput,\n VerifySafeAddressDAError,\n VerifySafeAddressDAIntermediateValue,\n VerifySafeAddressDAInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n VerifySafeAddressDAOutput,\n VerifySafeAddressDAInput,\n VerifySafeAddressDAError,\n VerifySafeAddressDAIntermediateValue,\n VerifySafeAddressDAInternalState\n > {\n type types = StateMachineTypes<\n VerifySafeAddressDAOutput,\n VerifySafeAddressDAInput,\n VerifySafeAddressDAError,\n VerifySafeAddressDAIntermediateValue,\n VerifySafeAddressDAInternalState\n >;\n\n const { buildSafeAddressContexts, provideContexts } =\n this.extractDependencies(internalApi);\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n actors: {\n openAppStateMachine: new OpenAppDeviceAction({\n input: { appName: \"Ethereum\" },\n }).makeStateMachine(internalApi),\n buildSafeAddressContexts: fromPromise(buildSafeAddressContexts),\n provideContexts: fromPromise(provideContexts),\n },\n guards: {\n noInternalError: ({ context }) => context._internalState.error === null,\n skipOpenApp: ({ context }) => !!context.input.options.skipOpenApp,\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"], // NOTE: it should never happen, the error is not typed anymore here\n }),\n }),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QGUCWUB2AVATgQw1jwGMAXVAewwBEwA3VYsAQTMowDoBJDVcvADbJSeUmADEAbQAMAXUSgADhVh92CkAA9EARgDsAZg4AOACzGAnAFYDNgGxXpF6ToA0IAJ67TOgEwcDHTsLCz9pQN9bAF8o9zRMXAIiNipaBiZWcipuXn4hETEpHXkkEGVVLIwNbQR9IzNLG3tHZzdPXV87aQ5I5ztfSON+zpi49Gx8QhJKtMYWFM4AeUUwDGZFRVmMhfEIKjAOVAw6CgBrA4oVtY3hUTAAWRIACyOwGRKlFTUqasQ9RxMVjMdgcdj0xnBvncXlqkTsHAsQxcnVMvmM4TsoxA8QmSWm7C280qHAAwk8wMRTstVutNvQ5pl2AAlOAAVwEpCkcg05W+VVKNR0gW6IOsoWMfgMdmhHRBHActisFnMMqCmNi2PGiSmC0JjOyZIpVKutINCxZsHZnMkxR5X0qv1qwsVwRVOglcJlcoQEo4ns9pmkQL00mCFgMWJxuuSM3p22JAHEwKRaSSqAAzdC7faHY5nA4wNMbDMYbNQd4OirqAW6CVWDhWPR2fR2Yy+Fu+UwGX1C4zGHoGcPSDuGCx6HTRnWTOMEhNE9gcFMlxRliviMA4HAUHAcRQCUSZ3cAWw4xfTWfQVdKvKdddqDabLbbY/6Pb7IQ4I+sPdR1n+KMtRjWd8VSBdDU4FdL3LdArRtY1KS5D4ykdWtQBqAYO2-MFwyBHRTEjNoYT8Lpv3CKwrG7Zt0VMPRpwSUD9QghZl1TGCK3gjlENOIoULvdCtEQLD-HDMMHAlQjAj7VEdADENg1MYNhQMUwGNxPV43SRdsmg0srygLjSB4qRfH4tCfgfEScPE-CpOIxBVO6HQiLbVUQR8dTYzAmgWOJAB1MAACMDB42BllIHhcwwA4jhOc4OAAd2C0LyUpCKeBvT4a0sjDhKGfxmxDXwMT0KIDF7dpYUono9B7YxbAI4xHGMLymK0hlWMCkKwoyjBN23Xd90PUhjxwM9kp6tLTUijAstQnL+TyhA0X6Z9itK8rKphUwgW-MrfFCXpKJcejgJnPFmO0yCOG61KTXCxRZqM8RNFgAoDjwTMxBwAAKaQAEpxBAy6OsTJc7t6p6eCM+aBNyoSEAqgjFVIz0LE6CxWz0PtOz0Dg9HBMquh8LowTa0H52u1iAAU8BwWAwG8nY9hi-N4oORR6cZ5nKjhiylsRgxwQsJtCOlIIdFHaQWz7AwJ2-FyCMGEMMbOsZGMp8DqeJOmGaZ9r2AGnc9wPI9T33bmDa1ubuVvAXnWFywxax0mpfRWWqpVUWSqUgYw2F5xWvOzXNKpzriQAIVZVABAgMsxE0UhYGi2KCwSoKY7jhOwCT2B+cW50e09RUSshJwQ0nGSdEbKx-1bUI7IsCmw+1iOl2j2P46oRPk+NoazdGi3M67nO84Lvki8CQd+hljsK+bByEDq7oKocbtI3BOurBbuc2-B7IaZ3BgIDAMe+9ZtOOf3Y-UFP8-87t7LJ4fcwyqbbGezq-orFlKqCLIs4XwVFgjSFOr-XePkLS61vvfHuuc+5bhNsNc240b4UBPmfeB48n4LRfstN+hVP7CxlMAv+MIBxyRlAVSck5xSQKuu3bIINW79UvuzQsHBVChz3rbcyhcHx1xKhwVEwwQgV0nFYGSv8EQDCFD4GuehVQ7xDhpXh0ClwsN4f3U2I0xpnm4WonyE97zLSEd0URAxxHOEkX2aQAxFRgLKqqVWDYGFgx0pwLRPkjImRMYJGoQJnBNiFIdCSIJwgySGE2SwZVwgr1DO48OB8vEXVYb46afFqz4MRkE7oVhQlYyBBE7augDC+DkgUiUZgqnlLqkk-eniOCRwEEcCA3iFgADFBACCCiQXi7C4qcKCq0jA7S0m8O6QIXp-T-EIxqNKFs35VQSlVDKQmpg5aohESqAcnQQT1NUbzZJTSWltI6ZUKZMykJIIHno4eozxk8J8lcvplI5mCwWeYRsEkWzNXbJ2YwfY-D42kKieJHY2zNgab5HWHdHkXPYK8-pGSTTIWyaYxGk5IjPmsHXfQeEoT-1UqLfowpKIdlWUBDWRjGEpOaQiiZLyelvNOKipCdp+E5JqNiowzY8U+FskSkiw5TAmGlCEQioR_j6BiFqDAFBT7wFKIixpkEMUBMQAAWnIdqxsIQQiE3BGClx0QjmGzVaxHgahBC3DEBq-ZiBUQyXCE2YWSjJxgOFtC81NsNHZGpNcOkcKEbw0-Y5OuJg1ZDCUSqQFuNgHfmDN2AOYCnBTl9aw_1nAeKBvNH5ZkbIOQOvDQgA1AQxy2BbKdWwuNmwmDqo4cwjRykwuzWxVc650AludDXMBPRmoGAlP8cwTg5aRs6GGGu-g0RgJUTS45lrkzsX0rBQyRbjLTR7VZex-g0QuU6HXIdE5Sm1GDKLHQSsgkShDMLNtBbsiQ2mo9Wa27lrANdWYP2_QPKdikf_ORAQpZKLBUKds96Q2cCfQ9PqRk31Cxlvjaw7YKIQk9iRYB_hKUFJogU4BEGmGcD1jzC1gsw2Ox7EYYWql5aqS6MUuWdgjAhjrpQ7GSiCP0s7tnbByd4M1GDK6hwlEpRbyBcS_0_LURlTqiEMwnGmlHwwXfLBGBe7KufpigTVFGzlKVJ6cMX65YQnkljaVUo_DdgUzdVVZGHaCNHP4Fy2KP32OCDJBx1gzCIkIuiexzdM3qIfak55loN08X44gX-nYAzlOA_oKio4ZKExMFLFUQJ4mnWs6xM5YzbPIspJFhAXR0QBkOkKLGdUOybIA4YAIwDDCehVCCfDgWoHBYZecplXSWUovC1u-2AjlpgiYyIicl6St4SXvI7oX7RzWCDFhbLxJkCsmIEwWAGm8Fab-EdiqtFfT_HxgOd0TsQMdjlVEIAA */\n id: \"VerifySafeAddressDeviceAction\",\n initial: \"InitialState\",\n context: ({ input }) => {\n return {\n input,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: VerifySafeAddressDAStep.OPEN_APP,\n },\n _internalState: {\n error: null,\n contexts: [],\n },\n };\n },\n states: {\n InitialState: {\n always: [\n {\n target: \"BuildSafeAddressContexts\",\n guard: \"skipOpenApp\",\n },\n \"OpenAppDeviceAction\",\n ],\n },\n OpenAppDeviceAction: {\n invoke: {\n id: \"openAppStateMachine\",\n input: {\n appName: \"Ethereum\",\n },\n src: \"openAppStateMachine\",\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.event.snapshot.context.intermediateValue,\n step: VerifySafeAddressDAStep.OPEN_APP,\n }),\n }),\n },\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<VerifySafeAddressDAInternalState>(\n {\n Right: () => _.context._internalState,\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n },\n );\n },\n }),\n target: \"CheckOpenAppDeviceActionResult\",\n },\n },\n },\n CheckOpenAppDeviceActionResult: {\n always: [\n {\n target: \"BuildSafeAddressContexts\",\n guard: \"noInternalError\",\n },\n \"Error\",\n ],\n },\n BuildSafeAddressContexts: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: VerifySafeAddressDAStep.BUILD_CONTEXTS,\n },\n }),\n invoke: {\n id: \"buildSafeAddressContexts\",\n src: \"buildSafeAddressContexts\",\n input: ({ context }) => ({\n contextModule: context.input.contextModule,\n safeContractAddress: context.input.safeContractAddress,\n options: context.input.options,\n deviceModelId: internalApi.getDeviceModel().id,\n }),\n onDone: {\n target: \"ProvideContexts\",\n actions: [\n assign({\n _internalState: ({ event, context }) => ({\n ...context._internalState,\n contexts: event.output.clearSignContexts,\n }),\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n ProvideContexts: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: VerifySafeAddressDAStep.VERIFY_SAFE_ADDRESS,\n },\n }),\n invoke: {\n id: \"provideContexts\",\n src: \"provideContexts\",\n input: ({ context }) => ({\n contexts: context._internalState\n .contexts as ClearSignContextSuccess[],\n }),\n onDone: {\n target: \"ProvideContextsResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (event.output.isLeft()) {\n return {\n ...context._internalState,\n error: event.output.extract(),\n };\n }\n\n return {\n ...context._internalState,\n error: null,\n };\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n ProvideContextsResultCheck: {\n always: [\n { guard: \"noInternalError\", target: \"Success\" },\n { target: \"Error\" },\n ],\n },\n Success: {\n type: \"final\",\n },\n Error: {\n type: \"final\",\n },\n },\n output: ({ context }) =>\n context._internalState.error\n ? Left(context._internalState.error)\n : Right(void 0),\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n const buildSafeAddressContexts = async (arg0: {\n input: BuildSafeAddressContextTaskArgs;\n }) => new BuildSafeAddressContextTask(internalApi, arg0.input).run();\n\n const provideContexts = async (arg0: {\n input: {\n contexts: ClearSignContextSuccess[];\n };\n }) => {\n for (const context of arg0.input.contexts) {\n const res = await new ProvideContextTask(internalApi, {\n context,\n }).run();\n\n if (!isSuccessCommandResult(res)) {\n return Left(res.error);\n }\n }\n return Right(void 0);\n };\n\n return {\n provideContexts,\n buildSafeAddressContexts,\n };\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["VerifySafeAddress_exports", "__export", "VerifySafeAddressDeviceAction", "__toCommonJS", "import_device_management_kit", "import_purify_ts", "import_xstate", "import_VerifySafeAddressDeviceActionTypes", "import_BuildSafeAddressContextTask", "import_ProvideContextTask", "internalApi", "buildSafeAddressContexts", "provideContexts", "context", "_", "input", "error", "event", "arg0", "res"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var S=require("@ledgerhq/context-module"),t=require("@ledgerhq/device-management-kit"),A=require("purify-ts"),v=require("rxjs"),E=require("../../../../api/app-binder/VerifySafeAddressDeviceActionTypes"),w=require("../../../app-binder/device-action/__test-utils__/makeInternalApi"),d=require("../../../app-binder/device-action/__test-utils__/setupOpenAppDAMock"),C=require("../../../app-binder/device-action/__test-utils__/testDeviceActionUntilStep"),l=require("./VerifySafeAddress");vi.mock("@ledgerhq/device-management-kit",async o=>({...await o(),OpenAppDeviceAction:vi.fn(()=>({makeStateMachine:vi.fn()}))}));describe("VerifySafeAddressDeviceAction",()=>{let o;const s={getContexts:vi.fn()},r=vi.fn(),x=vi.fn();function u(){return{buildSafeAddressContexts:r,provideContexts:x}}const a=(0,w.makeDeviceActionInternalApiMock)(),c="0x1234567890123456789012345678901234567890",i=1,m={type:S.ClearSignContextType.SAFE,payload:"safe_payload"},y={type:S.ClearSignContextType.SIGNER,payload:"signer_payload"};function p(e){a.getDeviceModel.mockReturnValue({id:e}),a.getDeviceSessionState.mockReturnValue({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.15.0"},deviceModelId:e,isSecureConnectionAllowed:!1})}const k=(e,n)=>{if(e[n]?.status!==t.DeviceActionStatus.Pending)throw new Error(`Step ${n} is not pending: ${JSON.stringify(e[n])}`);return e[n]};describe("Happy path",()=>{describe("should verify safe address",()=>{beforeEach(()=>{vi.resetAllMocks(),(0,d.setupOpenAppDAMock)(),p(t.DeviceModelId.FLEX),r.mockResolvedValueOnce({clearSignContexts:[m,y]}),x.mockResolvedValueOnce((0,A.Right)(void 0));const e=new l.VerifySafeAddressDeviceAction({input:{safeContractAddress:c,options:{chainId:i},contextModule:s}});vi.spyOn(e,"extractDependencies").mockReturnValue(u()),o=e._execute(a).observable}),it("should open the app",async()=>{const{steps:e}=await(0,C.executeUntilStep)(0,o);expect(k(e,0).intermediateValue.step).toBe(E.VerifySafeAddressDAStep.OPEN_APP)}),it("should confirm open app",async()=>{const{steps:e}=await(0,C.executeUntilStep)(1,o);expect(k(e,1).intermediateValue.requiredUserInteraction).toBe(t.UserInteractionRequired.ConfirmOpenApp)}),it("should build safe address contexts",async()=>{const{steps:e}=await(0,C.executeUntilStep)(2,o);expect(k(e,2).intermediateValue.step).toBe(E.VerifySafeAddressDAStep.BUILD_CONTEXTS),expect(r).toHaveBeenCalledWith(expect.objectContaining({input:{contextModule:s,safeContractAddress:c,options:{chainId:i},deviceModelId:t.DeviceModelId.FLEX}}))}),it("should provide contexts (verify safe address)",async()=>{const{steps:e}=await(0,C.executeUntilStep)(3,o);expect(k(e,3).intermediateValue.step).toBe(E.VerifySafeAddressDAStep.VERIFY_SAFE_ADDRESS),expect(x).toHaveBeenCalledWith(expect.objectContaining({input:{contexts:[m,y]}}))}),it("should complete successfully",async()=>{const e=await(0,v.lastValueFrom)(o);expect(e).toEqual({status:t.DeviceActionStatus.Completed,output:void 0})})}),describe("should skip open app",()=>{beforeEach(()=>{vi.resetAllMocks(),(0,d.setupOpenAppDAMock)(),p(t.DeviceModelId.FLEX);const e=new l.VerifySafeAddressDeviceAction({input:{safeContractAddress:c,options:{chainId:i,skipOpenApp:!0},contextModule:s}});r.mockResolvedValueOnce({clearSignContexts:[m,y]}),x.mockResolvedValueOnce((0,A.Right)(void 0)),vi.spyOn(e,"extractDependencies").mockReturnValue(u()),o=e._execute(a).observable}),it("should skip open app and build contexts directly",async()=>{const{steps:e}=await(0,C.executeUntilStep)(0,o);expect(k(e,0).intermediateValue.step).toBe(E.VerifySafeAddressDAStep.BUILD_CONTEXTS)})}),describe("should work with different device models",()=>{it.each([[t.DeviceModelId.NANO_S,"Nano S"],[t.DeviceModelId.NANO_SP,"Nano S Plus"],[t.DeviceModelId.NANO_X,"Nano X"],[t.DeviceModelId.FLEX,"Flex"],[t.DeviceModelId.STAX,"Stax"]])("should verify safe address on %s device",async(e,n)=>{vi.resetAllMocks(),(0,d.setupOpenAppDAMock)(),p(e),r.mockResolvedValueOnce({clearSignContexts:[m,y]}),x.mockResolvedValueOnce((0,A.Right)(void 0));const f=new l.VerifySafeAddressDeviceAction({input:{safeContractAddress:c,options:{chainId:i,skipOpenApp:!0},contextModule:s}});vi.spyOn(f,"extractDependencies").mockReturnValue(u()),o=f._execute(a).observable;const h=await(0,v.lastValueFrom)(o);expect(h).toEqual({status:t.DeviceActionStatus.Completed,output:void 0}),expect(r).toHaveBeenCalledWith(expect.objectContaining({input:expect.objectContaining({deviceModelId:e})}))})}),describe("should work with contexts with certificates",()=>{beforeEach(()=>{vi.resetAllMocks(),(0,d.setupOpenAppDAMock)(),p(t.DeviceModelId.FLEX);const e={type:S.ClearSignContextType.SAFE,payload:"safe_payload",certificate:{keyUsageNumber:1,payload:new Uint8Array([1,2,3])}},n={type:S.ClearSignContextType.SIGNER,payload:"signer_payload",certificate:{keyUsageNumber:2,payload:new Uint8Array([4,5,6])}};r.mockResolvedValueOnce({clearSignContexts:[e,n]}),x.mockResolvedValueOnce((0,A.Right)(void 0));const f=new l.VerifySafeAddressDeviceAction({input:{safeContractAddress:c,options:{chainId:i,skipOpenApp:!0},contextModule:s}});vi.spyOn(f,"extractDependencies").mockReturnValue(u()),o=f._execute(a).observable}),it("should handle contexts with certificates",async()=>{const e=await(0,v.lastValueFrom)(o);expect(e).toEqual({status:t.DeviceActionStatus.Completed,output:void 0})})})}),describe("Error cases",()=>{beforeEach(()=>{vi.resetAllMocks()}),it("should return an error if the open app throws an error",async()=>{(0,d.setupOpenAppDAMock)(new Error("Open app failed")),p(t.DeviceModelId.FLEX);const e=new l.VerifySafeAddressDeviceAction({input:{safeContractAddress:c,options:{chainId:i},contextModule:s}});vi.spyOn(e,"extractDependencies").mockReturnValue(u()),o=e._execute(a).observable;const n=await(0,v.lastValueFrom)(o);expect(n).toEqual({status:t.DeviceActionStatus.Error,error:new Error("Open app failed")})}),it("should return an error if buildSafeAddressContexts throws an error",async()=>{(0,d.setupOpenAppDAMock)(),p(t.DeviceModelId.FLEX),r.mockRejectedValueOnce(new Error("Failed to build contexts"));const e=new l.VerifySafeAddressDeviceAction({input:{safeContractAddress:c,options:{chainId:i},contextModule:s}});vi.spyOn(e,"extractDependencies").mockReturnValue(u()),o=e._execute(a).observable;const n=await(0,v.lastValueFrom)(o);expect(n).toEqual({status:t.DeviceActionStatus.Error,error:new Error("Failed to build contexts")})}),it("should return an error if provideContexts returns Left (error)",async()=>{(0,d.setupOpenAppDAMock)(),p(t.DeviceModelId.FLEX),r.mockResolvedValueOnce({clearSignContexts:[m,y]});const e=new t.InvalidStatusWordError("Failed to provide context");x.mockResolvedValueOnce((0,A.Left)(e));const n=new l.VerifySafeAddressDeviceAction({input:{safeContractAddress:c,options:{chainId:i},contextModule:s}});vi.spyOn(n,"extractDependencies").mockReturnValue(u()),o=n._execute(a).observable;const f=await(0,v.lastValueFrom)(o);expect(f).toEqual({status:t.DeviceActionStatus.Error,error:e})}),it("should return an error if provideContexts throws an error",async()=>{(0,d.setupOpenAppDAMock)(),p(t.DeviceModelId.FLEX),r.mockResolvedValueOnce({clearSignContexts:[m,y]}),x.mockRejectedValueOnce(new Error("Provide contexts failed"));const e=new l.VerifySafeAddressDeviceAction({input:{safeContractAddress:c,options:{chainId:i},contextModule:s}});vi.spyOn(e,"extractDependencies").mockReturnValue(u()),o=e._execute(a).observable;const n=await(0,v.lastValueFrom)(o);expect(n).toEqual({status:t.DeviceActionStatus.Error,error:new Error("Provide contexts failed")})}),it("should return an error when buildSafeAddressContexts returns invalid data",async()=>{(0,d.setupOpenAppDAMock)(),p(t.DeviceModelId.FLEX),r.mockRejectedValueOnce(new Error("Invalid safe address contexts"));const e=new l.VerifySafeAddressDeviceAction({input:{safeContractAddress:c,options:{chainId:i},contextModule:s}});vi.spyOn(e,"extractDependencies").mockReturnValue(u()),o=e._execute(a).observable;const n=await(0,v.lastValueFrom)(o);expect(n).toEqual({status:t.DeviceActionStatus.Error,error:new Error("Invalid safe address contexts")})}),it("should handle user rejection during provide contexts",async()=>{(0,d.setupOpenAppDAMock)(),p(t.DeviceModelId.FLEX),r.mockResolvedValueOnce({clearSignContexts:[m,y]});const e=new t.InvalidStatusWordError("User rejected");e.errorCode="6985",x.mockResolvedValueOnce((0,A.Left)(e));const n=new l.VerifySafeAddressDeviceAction({input:{safeContractAddress:c,options:{chainId:i},contextModule:s}});vi.spyOn(n,"extractDependencies").mockReturnValue(u()),o=n._execute(a).observable;const f=await(0,v.lastValueFrom)(o);expect(f).toEqual({status:t.DeviceActionStatus.Error,error:e})})})});
|
|
2
|
+
//# sourceMappingURL=VerifySafeAddress.test.js.map
|
package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.ts"],
|
|
4
|
+
"sourcesContent": ["/* eslint @typescript-eslint/consistent-type-imports: 0 */\nimport {\n ClearSignContextType,\n type ContextModule,\n} from \"@ledgerhq/context-module\";\nimport {\n DeviceActionState,\n DeviceActionStatus,\n DeviceModelId,\n DeviceSessionStateType,\n DeviceStatus,\n InvalidStatusWordError,\n TransportDeviceModel,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { lastValueFrom, Observable } from \"rxjs\";\n\nimport {\n VerifySafeAddressDAError,\n VerifySafeAddressDAIntermediateValue,\n type VerifySafeAddressDAState,\n VerifySafeAddressDAStep,\n} from \"@api/app-binder/VerifySafeAddressDeviceActionTypes\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport { setupOpenAppDAMock } from \"@internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock\";\nimport { executeUntilStep } from \"@internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep\";\n\nimport { VerifySafeAddressDeviceAction } from \"./VerifySafeAddress\";\n\nvi.mock(\"@ledgerhq/device-management-kit\", async (importOriginal) => {\n const original =\n await importOriginal<typeof import(\"@ledgerhq/device-management-kit\")>();\n return {\n ...original,\n OpenAppDeviceAction: vi.fn(() => ({\n makeStateMachine: vi.fn(),\n })),\n };\n});\n\ndescribe(\"VerifySafeAddressDeviceAction\", () => {\n let observable: Observable<\n DeviceActionState<\n void,\n VerifySafeAddressDAError,\n VerifySafeAddressDAIntermediateValue\n >\n >;\n const contextModuleMock = {\n getContexts: vi.fn(),\n };\n const buildSafeAddressContextsMock = vi.fn();\n const provideContextsMock = vi.fn();\n\n function extractDependenciesMock() {\n return {\n buildSafeAddressContexts: buildSafeAddressContextsMock,\n provideContexts: provideContextsMock,\n };\n }\n\n const apiMock = makeDeviceActionInternalApiMock();\n const TEST_SAFE_ADDRESS = \"0x1234567890123456789012345678901234567890\";\n const TEST_CHAIN_ID = 1;\n\n const validSafeContext = {\n type: ClearSignContextType.SAFE,\n payload: \"safe_payload\",\n };\n\n const validSignerContext = {\n type: ClearSignContextType.SIGNER,\n payload: \"signer_payload\",\n };\n\n function setupDeviceModel(deviceModelId: DeviceModelId) {\n apiMock.getDeviceModel.mockReturnValue({\n id: deviceModelId,\n } as unknown as TransportDeviceModel);\n apiMock.getDeviceSessionState.mockReturnValue({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.15.0\" },\n deviceModelId,\n isSecureConnectionAllowed: false,\n });\n }\n\n const getStep = (s: Array<VerifySafeAddressDAState>, index: number) => {\n if (s[index]?.status !== DeviceActionStatus.Pending) {\n throw new Error(\n `Step ${index} is not pending: ${JSON.stringify(s[index])}`,\n );\n }\n return s[index];\n };\n\n describe(\"Happy path\", () => {\n describe(\"should verify safe address\", () => {\n beforeEach(() => {\n vi.resetAllMocks();\n setupOpenAppDAMock();\n setupDeviceModel(DeviceModelId.FLEX);\n\n // Mock the dependencies to return some sample data\n buildSafeAddressContextsMock.mockResolvedValueOnce({\n clearSignContexts: [validSafeContext, validSignerContext],\n });\n provideContextsMock.mockResolvedValueOnce(Right(void 0));\n\n const deviceAction = new VerifySafeAddressDeviceAction({\n input: {\n safeContractAddress: TEST_SAFE_ADDRESS,\n options: { chainId: TEST_CHAIN_ID },\n contextModule: contextModuleMock as unknown as ContextModule,\n },\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n observable = deviceAction._execute(apiMock).observable;\n });\n\n it(\"should open the app\", async () => {\n const { steps } = await executeUntilStep(0, observable);\n expect(getStep(steps, 0).intermediateValue.step).toBe(\n VerifySafeAddressDAStep.OPEN_APP,\n );\n });\n\n it(\"should confirm open app\", async () => {\n const { steps } = await executeUntilStep(1, observable);\n expect(\n getStep(steps, 1).intermediateValue.requiredUserInteraction,\n ).toBe(UserInteractionRequired.ConfirmOpenApp);\n });\n\n it(\"should build safe address contexts\", async () => {\n const { steps } = await executeUntilStep(2, observable);\n expect(getStep(steps, 2).intermediateValue.step).toBe(\n VerifySafeAddressDAStep.BUILD_CONTEXTS,\n );\n expect(buildSafeAddressContextsMock).toHaveBeenCalledWith(\n expect.objectContaining({\n input: {\n contextModule: contextModuleMock as unknown as ContextModule,\n safeContractAddress: TEST_SAFE_ADDRESS,\n options: { chainId: TEST_CHAIN_ID },\n deviceModelId: DeviceModelId.FLEX,\n },\n }),\n );\n });\n\n it(\"should provide contexts (verify safe address)\", async () => {\n const { steps } = await executeUntilStep(3, observable);\n expect(getStep(steps, 3).intermediateValue.step).toBe(\n VerifySafeAddressDAStep.VERIFY_SAFE_ADDRESS,\n );\n expect(provideContextsMock).toHaveBeenCalledWith(\n expect.objectContaining({\n input: {\n contexts: [validSafeContext, validSignerContext],\n },\n }),\n );\n });\n\n it(\"should complete successfully\", async () => {\n const result = await lastValueFrom(observable);\n expect(result).toEqual({\n status: DeviceActionStatus.Completed,\n output: void 0,\n });\n });\n });\n\n describe(\"should skip open app\", () => {\n beforeEach(() => {\n vi.resetAllMocks();\n setupOpenAppDAMock();\n setupDeviceModel(DeviceModelId.FLEX);\n\n const deviceAction = new VerifySafeAddressDeviceAction({\n input: {\n safeContractAddress: TEST_SAFE_ADDRESS,\n options: { chainId: TEST_CHAIN_ID, skipOpenApp: true },\n contextModule: contextModuleMock as unknown as ContextModule,\n },\n });\n buildSafeAddressContextsMock.mockResolvedValueOnce({\n clearSignContexts: [validSafeContext, validSignerContext],\n });\n provideContextsMock.mockResolvedValueOnce(Right(void 0));\n\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n observable = deviceAction._execute(apiMock).observable;\n });\n\n it(\"should skip open app and build contexts directly\", async () => {\n const { steps } = await executeUntilStep(0, observable);\n\n expect(getStep(steps, 0).intermediateValue.step).toBe(\n VerifySafeAddressDAStep.BUILD_CONTEXTS,\n );\n });\n });\n\n describe(\"should work with different device models\", () => {\n it.each([\n [DeviceModelId.NANO_S, \"Nano S\"],\n [DeviceModelId.NANO_SP, \"Nano S Plus\"],\n [DeviceModelId.NANO_X, \"Nano X\"],\n [DeviceModelId.FLEX, \"Flex\"],\n [DeviceModelId.STAX, \"Stax\"],\n ])(\n \"should verify safe address on %s device\",\n async (deviceModelId, _deviceName) => {\n // GIVEN\n vi.resetAllMocks();\n setupOpenAppDAMock();\n setupDeviceModel(deviceModelId);\n\n buildSafeAddressContextsMock.mockResolvedValueOnce({\n clearSignContexts: [validSafeContext, validSignerContext],\n });\n provideContextsMock.mockResolvedValueOnce(Right(void 0));\n\n const deviceAction = new VerifySafeAddressDeviceAction({\n input: {\n safeContractAddress: TEST_SAFE_ADDRESS,\n options: { chainId: TEST_CHAIN_ID, skipOpenApp: true },\n contextModule: contextModuleMock as unknown as ContextModule,\n },\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n observable = deviceAction._execute(apiMock).observable;\n\n // WHEN\n const result = await lastValueFrom(observable);\n\n // THEN\n expect(result).toEqual({\n status: DeviceActionStatus.Completed,\n output: void 0,\n });\n expect(buildSafeAddressContextsMock).toHaveBeenCalledWith(\n expect.objectContaining({\n input: expect.objectContaining({\n deviceModelId,\n }),\n }),\n );\n },\n );\n });\n\n describe(\"should work with contexts with certificates\", () => {\n beforeEach(() => {\n vi.resetAllMocks();\n setupOpenAppDAMock();\n setupDeviceModel(DeviceModelId.FLEX);\n\n const safeContextWithCert = {\n type: ClearSignContextType.SAFE,\n payload: \"safe_payload\",\n certificate: {\n keyUsageNumber: 1,\n payload: new Uint8Array([1, 2, 3]),\n },\n };\n\n const signerContextWithCert = {\n type: ClearSignContextType.SIGNER,\n payload: \"signer_payload\",\n certificate: {\n keyUsageNumber: 2,\n payload: new Uint8Array([4, 5, 6]),\n },\n };\n\n buildSafeAddressContextsMock.mockResolvedValueOnce({\n clearSignContexts: [safeContextWithCert, signerContextWithCert],\n });\n provideContextsMock.mockResolvedValueOnce(Right(void 0));\n\n const deviceAction = new VerifySafeAddressDeviceAction({\n input: {\n safeContractAddress: TEST_SAFE_ADDRESS,\n options: { chainId: TEST_CHAIN_ID, skipOpenApp: true },\n contextModule: contextModuleMock as unknown as ContextModule,\n },\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n observable = deviceAction._execute(apiMock).observable;\n });\n\n it(\"should handle contexts with certificates\", async () => {\n const result = await lastValueFrom(observable);\n expect(result).toEqual({\n status: DeviceActionStatus.Completed,\n output: void 0,\n });\n });\n });\n });\n\n describe(\"Error cases\", () => {\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"should return an error if the open app throws an error\", async () => {\n // GIVEN\n setupOpenAppDAMock(new Error(\"Open app failed\"));\n setupDeviceModel(DeviceModelId.FLEX);\n const deviceAction = new VerifySafeAddressDeviceAction({\n input: {\n safeContractAddress: TEST_SAFE_ADDRESS,\n options: { chainId: TEST_CHAIN_ID },\n contextModule: contextModuleMock as unknown as ContextModule,\n },\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n observable = deviceAction._execute(apiMock).observable;\n\n // WHEN\n const result = await lastValueFrom(observable);\n\n // THEN\n expect(result).toEqual({\n status: DeviceActionStatus.Error,\n error: new Error(\"Open app failed\"),\n });\n });\n\n it(\"should return an error if buildSafeAddressContexts throws an error\", async () => {\n // GIVEN\n setupOpenAppDAMock();\n setupDeviceModel(DeviceModelId.FLEX);\n buildSafeAddressContextsMock.mockRejectedValueOnce(\n new Error(\"Failed to build contexts\"),\n );\n const deviceAction = new VerifySafeAddressDeviceAction({\n input: {\n safeContractAddress: TEST_SAFE_ADDRESS,\n options: { chainId: TEST_CHAIN_ID },\n contextModule: contextModuleMock as unknown as ContextModule,\n },\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n observable = deviceAction._execute(apiMock).observable;\n\n // WHEN\n const result = await lastValueFrom(observable);\n\n // THEN\n expect(result).toEqual({\n status: DeviceActionStatus.Error,\n error: new Error(\"Failed to build contexts\"),\n });\n });\n\n it(\"should return an error if provideContexts returns Left (error)\", async () => {\n // GIVEN\n setupOpenAppDAMock();\n setupDeviceModel(DeviceModelId.FLEX);\n buildSafeAddressContextsMock.mockResolvedValueOnce({\n clearSignContexts: [validSafeContext, validSignerContext],\n });\n const provideError = new InvalidStatusWordError(\n \"Failed to provide context\",\n );\n provideContextsMock.mockResolvedValueOnce(Left(provideError));\n const deviceAction = new VerifySafeAddressDeviceAction({\n input: {\n safeContractAddress: TEST_SAFE_ADDRESS,\n options: { chainId: TEST_CHAIN_ID },\n contextModule: contextModuleMock as unknown as ContextModule,\n },\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n observable = deviceAction._execute(apiMock).observable;\n\n // WHEN\n const result = await lastValueFrom(observable);\n\n // THEN\n expect(result).toEqual({\n status: DeviceActionStatus.Error,\n error: provideError,\n });\n });\n\n it(\"should return an error if provideContexts throws an error\", async () => {\n // GIVEN\n setupOpenAppDAMock();\n setupDeviceModel(DeviceModelId.FLEX);\n buildSafeAddressContextsMock.mockResolvedValueOnce({\n clearSignContexts: [validSafeContext, validSignerContext],\n });\n provideContextsMock.mockRejectedValueOnce(\n new Error(\"Provide contexts failed\"),\n );\n const deviceAction = new VerifySafeAddressDeviceAction({\n input: {\n safeContractAddress: TEST_SAFE_ADDRESS,\n options: { chainId: TEST_CHAIN_ID },\n contextModule: contextModuleMock as unknown as ContextModule,\n },\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n observable = deviceAction._execute(apiMock).observable;\n\n // WHEN\n const result = await lastValueFrom(observable);\n\n // THEN\n expect(result).toEqual({\n status: DeviceActionStatus.Error,\n error: new Error(\"Provide contexts failed\"),\n });\n });\n\n it(\"should return an error when buildSafeAddressContexts returns invalid data\", async () => {\n // GIVEN\n setupOpenAppDAMock();\n setupDeviceModel(DeviceModelId.FLEX);\n buildSafeAddressContextsMock.mockRejectedValueOnce(\n new Error(\"Invalid safe address contexts\"),\n );\n const deviceAction = new VerifySafeAddressDeviceAction({\n input: {\n safeContractAddress: TEST_SAFE_ADDRESS,\n options: { chainId: TEST_CHAIN_ID },\n contextModule: contextModuleMock as unknown as ContextModule,\n },\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n observable = deviceAction._execute(apiMock).observable;\n\n // WHEN\n const result = await lastValueFrom(observable);\n\n // THEN\n expect(result).toEqual({\n status: DeviceActionStatus.Error,\n error: new Error(\"Invalid safe address contexts\"),\n });\n });\n\n it(\"should handle user rejection during provide contexts\", async () => {\n // GIVEN\n setupOpenAppDAMock();\n setupDeviceModel(DeviceModelId.FLEX);\n buildSafeAddressContextsMock.mockResolvedValueOnce({\n clearSignContexts: [validSafeContext, validSignerContext],\n });\n const userRejectionError = new InvalidStatusWordError(\"User rejected\");\n (\n userRejectionError as InvalidStatusWordError & { errorCode: string }\n ).errorCode = \"6985\";\n provideContextsMock.mockResolvedValueOnce(Left(userRejectionError));\n const deviceAction = new VerifySafeAddressDeviceAction({\n input: {\n safeContractAddress: TEST_SAFE_ADDRESS,\n options: { chainId: TEST_CHAIN_ID },\n contextModule: contextModuleMock as unknown as ContextModule,\n },\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n observable = deviceAction._execute(apiMock).observable;\n\n // WHEN\n const result = await lastValueFrom(observable);\n\n // THEN\n expect(result).toEqual({\n status: DeviceActionStatus.Error,\n error: userRejectionError,\n });\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_context_module", "import_device_management_kit", "import_purify_ts", "import_rxjs", "import_VerifySafeAddressDeviceActionTypes", "import_makeInternalApi", "import_setupOpenAppDAMock", "import_testDeviceActionUntilStep", "import_VerifySafeAddress", "importOriginal", "observable", "contextModuleMock", "buildSafeAddressContextsMock", "provideContextsMock", "extractDependenciesMock", "apiMock", "TEST_SAFE_ADDRESS", "TEST_CHAIN_ID", "validSafeContext", "validSignerContext", "setupDeviceModel", "deviceModelId", "getStep", "s", "index", "deviceAction", "steps", "result", "_deviceName", "safeContextWithCert", "signerContextWithCert", "provideError", "userRejectionError"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var o=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var m=(s,e)=>{for(var t in e)o(s,t,{get:e[t],enumerable:!0})},d=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of c(e))!a.call(s,r)&&r!==t&&o(s,r,{get:()=>e[r],enumerable:!(i=u(e,r))||i.enumerable});return s};var l=s=>d(o({},"__esModule",{value:!0}),s);var x={};m(x,{executeUntilStep:()=>f});module.exports=l(x);const f=async(s,e)=>await new Promise((t,i)=>{const r=[];let b=0,p;p=e.subscribe({next:n=>{r.push(n),b++,b>s&&(p?.unsubscribe(),t({steps:r}))},error:n=>{i({steps:r,error:n})},complete:()=>{t({steps:r})}})});0&&(module.exports={executeUntilStep});
|
|
2
|
+
//# sourceMappingURL=testDeviceActionUntilStep.js.map
|
package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.ts"],
|
|
4
|
+
"sourcesContent": ["import { type Observable, type Subscription } from \"rxjs\";\n\nexport const executeUntilStep = async <T>(\n targetStep: number,\n o: Observable<T>,\n): Promise<{ steps: T[]; error?: Error }> =>\n await new Promise((resolve, reject) => {\n const steps: T[] = [];\n let index = 0;\n let subscription: Subscription | undefined = undefined;\n\n subscription = o.subscribe({\n next: (state) => {\n steps.push(state);\n index++;\n\n if (index > targetStep) {\n subscription?.unsubscribe();\n resolve({ steps });\n }\n },\n error: (error) => {\n reject({ steps, error: error as Error });\n },\n complete: () => {\n resolve({ steps });\n },\n });\n });\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,IAAA,eAAAC,EAAAH,GAEO,MAAME,EAAmB,MAC9BE,EACAC,IAEA,MAAM,IAAI,QAAQ,CAACC,EAASC,IAAW,CACrC,MAAMC,EAAa,CAAC,EACpB,IAAIC,EAAQ,EACRC,EAEJA,EAAeL,EAAE,UAAU,CACzB,KAAOM,GAAU,CACfH,EAAM,KAAKG,CAAK,EAChBF,IAEIA,EAAQL,IACVM,GAAc,YAAY,EAC1BJ,EAAQ,CAAE,MAAAE,CAAM,CAAC,EAErB,EACA,MAAQI,GAAU,CAChBL,EAAO,CAAE,MAAAC,EAAO,MAAOI,CAAe,CAAC,CACzC,EACA,SAAU,IAAM,CACdN,EAAQ,CAAE,MAAAE,CAAM,CAAC,CACnB,CACF,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["testDeviceActionUntilStep_exports", "__export", "executeUntilStep", "__toCommonJS", "targetStep", "o", "resolve", "reject", "steps", "index", "subscription", "state", "error"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var l=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var A=(r,t)=>{for(var n in t)l(r,n,{get:t[n],enumerable:!0})},O=(r,t,n,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of u(t))!x.call(r,s)&&s!==n&&l(r,s,{get:()=>t[s],enumerable:!(a=p(t,s))||a.enumerable});return r};var R=r=>O(l({},"__esModule",{value:!0}),r);var f={};A(f,{BASE_CONTEXT_TYPES_FILTER:()=>g,BuildBaseContexts:()=>y,NESTED_CALLDATA_CONTEXT_TYPES_FILTER:()=>_});module.exports=R(f);var e=require("@ledgerhq/context-module"),o=require("@ledgerhq/device-management-kit"),S=require("../../../api/model/ClearSigningType"),d=require("../../app-binder/command/GetChallengeCommand"),I=require("../../shared/utils/ApplicationChecker");const _=[e.ClearSignContextType.TRANSACTION_INFO,e.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,e.ClearSignContextType.ENUM,e.ClearSignContextType.PROXY_INFO],g=[e.ClearSignContextType.TRANSACTION_INFO,e.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,e.ClearSignContextType.PROXY_INFO,e.ClearSignContextType.TRANSACTION_CHECK,e.ClearSignContextType.DYNAMIC_NETWORK,e.ClearSignContextType.DYNAMIC_NETWORK_ICON,e.ClearSignContextType.ENUM,e.ClearSignContextType.TRUSTED_NAME,e.ClearSignContextType.TOKEN,e.ClearSignContextType.NFT,e.ClearSignContextType.PLUGIN,e.ClearSignContextType.EXTERNAL_PLUGIN];class y{constructor(t,n){this._api=t;this._args=n}async run(){const{contextModule:t,appConfig:n,transaction:a,subset:s}=this._args,i=a===void 0,E=!i&&n.web3ChecksEnabled,C=this._api.getDeviceSessionState();let T;if(C.deviceModelId!==o.DeviceModelId.NANO_S){const c=await this._api.sendCommand(new d.GetChallengeCommand);(0,o.isSuccessCommandResult)(c)&&(T=c.data.challenge)}const N=(await t.getContexts({challenge:T,deviceModelId:C.deviceModelId,transaction:E?a:void 0,...s},i?_:g)).filter(c=>c.type!==e.ClearSignContextType.ERROR);return this._supportsGenericParser(C,n)&&this._hasValidTransactionInfo(N)?this._getERC7730Contexts(N):this._getBasicContexts(N)}_getERC7730Contexts(t){const n=t.filter(s=>this._isContextNeededForERC7730ClearSigning(s)).sort((s,i)=>this._getContextPriority(s)-this._getContextPriority(i)),a=t.filter(s=>s.type===e.ClearSignContextType.ENUM);return{clearSignContexts:n,clearSignContextsOptional:a,clearSigningType:S.ClearSigningType.EIP7730}}_getBasicContexts(t){return{clearSignContexts:t.filter(a=>this._isContextNeededForBasicClearSigning(a)).sort((a,s)=>this._getContextPriority(a)-this._getContextPriority(s)),clearSignContextsOptional:[],clearSigningType:S.ClearSigningType.BASIC}}_isContextNeededForBasicClearSigning({type:t}){switch(t){case e.ClearSignContextType.TRANSACTION_CHECK:case e.ClearSignContextType.PLUGIN:case e.ClearSignContextType.EXTERNAL_PLUGIN:case e.ClearSignContextType.DYNAMIC_NETWORK:case e.ClearSignContextType.DYNAMIC_NETWORK_ICON:case e.ClearSignContextType.TRUSTED_NAME:case e.ClearSignContextType.TOKEN:case e.ClearSignContextType.NFT:return!0;case e.ClearSignContextType.TRANSACTION_INFO:case e.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION:case e.ClearSignContextType.ENUM:case e.ClearSignContextType.PROXY_INFO:case e.ClearSignContextType.SAFE:case e.ClearSignContextType.SIGNER:return!1;default:{const n=t;throw new Error(`Unhandled context type ${String(n)}`)}}}_isContextNeededForERC7730ClearSigning({type:t}){switch(t){case e.ClearSignContextType.TRANSACTION_INFO:case e.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION:case e.ClearSignContextType.PROXY_INFO:case e.ClearSignContextType.DYNAMIC_NETWORK:case e.ClearSignContextType.DYNAMIC_NETWORK_ICON:case e.ClearSignContextType.TRANSACTION_CHECK:return!0;case e.ClearSignContextType.ENUM:case e.ClearSignContextType.TRUSTED_NAME:case e.ClearSignContextType.TOKEN:case e.ClearSignContextType.NFT:case e.ClearSignContextType.PLUGIN:case e.ClearSignContextType.EXTERNAL_PLUGIN:case e.ClearSignContextType.SAFE:case e.ClearSignContextType.SIGNER:return!1;default:{const n=t;throw new Error(`Unhandled context type ${String(n)}`)}}}_hasValidTransactionInfo(t){return t.find(n=>n.type===e.ClearSignContextType.TRANSACTION_INFO)?.certificate!==void 0}_supportsGenericParser(t,n){return new I.ApplicationChecker(t,n).withMinVersionExclusive("1.14.0").excludeDeviceModel(o.DeviceModelId.NANO_S).check()}_getContextPriority({type:t}){switch(t){case e.ClearSignContextType.TRANSACTION_CHECK:return 10;case e.ClearSignContextType.DYNAMIC_NETWORK:case e.ClearSignContextType.DYNAMIC_NETWORK_ICON:case e.ClearSignContextType.PROXY_INFO:return 30;case e.ClearSignContextType.TRANSACTION_INFO:return 50;case e.ClearSignContextType.PLUGIN:case e.ClearSignContextType.EXTERNAL_PLUGIN:case e.ClearSignContextType.TOKEN:case e.ClearSignContextType.NFT:case e.ClearSignContextType.TRUSTED_NAME:case e.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION:case e.ClearSignContextType.ENUM:return 70;case e.ClearSignContextType.SAFE:case e.ClearSignContextType.SIGNER:return 90;default:{const n=t;throw new Error(`Unhandled context type for priority: ${String(n)}`)}}}}0&&(module.exports={BASE_CONTEXT_TYPES_FILTER,BuildBaseContexts,NESTED_CALLDATA_CONTEXT_TYPES_FILTER});
|
|
2
|
+
//# sourceMappingURL=BuildBaseContexts.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/app-binder/task/BuildBaseContexts.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n type ClearSignContext,\n type ClearSignContextSuccess,\n ClearSignContextType,\n type ContextModule,\n type TransactionSubset,\n} from \"@ledgerhq/context-module\";\nimport {\n DeviceModelId,\n type DeviceSessionState,\n type InternalApi,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type GetConfigCommandResponse } from \"@api/app-binder/GetConfigCommandTypes\";\nimport { ClearSigningType } from \"@api/model/ClearSigningType\";\nimport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nimport { GetChallengeCommand } from \"@internal/app-binder/command/GetChallengeCommand\";\nimport { ApplicationChecker } from \"@internal/shared/utils/ApplicationChecker\";\n\nexport const NESTED_CALLDATA_CONTEXT_TYPES_FILTER: ClearSignContextType[] = [\n ClearSignContextType.TRANSACTION_INFO,\n ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n ClearSignContextType.ENUM,\n ClearSignContextType.PROXY_INFO,\n];\n\nexport const BASE_CONTEXT_TYPES_FILTER: ClearSignContextType[] = [\n ClearSignContextType.TRANSACTION_INFO,\n ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n ClearSignContextType.PROXY_INFO,\n ClearSignContextType.TRANSACTION_CHECK,\n ClearSignContextType.DYNAMIC_NETWORK,\n ClearSignContextType.DYNAMIC_NETWORK_ICON,\n ClearSignContextType.ENUM,\n ClearSignContextType.TRUSTED_NAME,\n ClearSignContextType.TOKEN,\n ClearSignContextType.NFT,\n ClearSignContextType.PLUGIN,\n ClearSignContextType.EXTERNAL_PLUGIN,\n];\n\nexport type BuildBaseContextsResult = {\n readonly clearSignContexts: ClearSignContextSuccess[];\n readonly clearSignContextsOptional: ClearSignContextSuccess[];\n readonly clearSigningType: ClearSigningType;\n};\n\nexport type BuildBaseContextsArgs = {\n readonly contextModule: ContextModule;\n readonly options: TransactionOptions;\n readonly appConfig: GetConfigCommandResponse;\n readonly subset: TransactionSubset;\n readonly transaction?: Uint8Array;\n};\n\n/**\n * Builds the base contexts for a transaction\n * @param api - The internal API\n * @param args - The arguments for the build\n *\n * returns the base contexts for a transaction, without subcontexts or nested call data contexts\n */\nexport class BuildBaseContexts {\n constructor(\n private readonly _api: InternalApi,\n private readonly _args: BuildBaseContextsArgs,\n ) {}\n\n async run(): Promise<BuildBaseContextsResult> {\n const { contextModule, appConfig, transaction, subset } = this._args;\n const isNestedCallData = transaction === undefined;\n // As only transaction checks needs the transaction, we don't need to send it if it's not needed\n const needTransaction = !isNestedCallData && appConfig.web3ChecksEnabled;\n\n const deviceState = this._api.getDeviceSessionState();\n\n // Get challenge (not supported on Nano S)\n let challenge: string | undefined = undefined;\n if (deviceState.deviceModelId !== DeviceModelId.NANO_S) {\n const challengeRes = await this._api.sendCommand(\n new GetChallengeCommand(),\n );\n if (isSuccessCommandResult(challengeRes)) {\n challenge = challengeRes.data.challenge;\n }\n }\n\n // Get the clear sign contexts\n const clearSignContexts: ClearSignContext[] =\n await contextModule.getContexts(\n {\n challenge: challenge,\n deviceModelId: deviceState.deviceModelId,\n transaction: needTransaction ? transaction : undefined,\n ...subset,\n },\n isNestedCallData\n ? NESTED_CALLDATA_CONTEXT_TYPES_FILTER\n : BASE_CONTEXT_TYPES_FILTER,\n );\n\n // filter out the error contexts\n const contextsSuccess: ClearSignContextSuccess[] = clearSignContexts.filter(\n (context) => context.type !== ClearSignContextType.ERROR,\n );\n\n if (\n this._supportsGenericParser(deviceState, appConfig) &&\n this._hasValidTransactionInfo(contextsSuccess)\n ) {\n return this._getERC7730Contexts(contextsSuccess);\n } else {\n return this._getBasicContexts(contextsSuccess);\n }\n }\n\n private _getERC7730Contexts(\n contexts: ClearSignContextSuccess[],\n ): BuildBaseContextsResult {\n const clearSignContexts: ClearSignContextSuccess[] = contexts\n .filter((context) => this._isContextNeededForERC7730ClearSigning(context))\n .sort(\n (a, b) => this._getContextPriority(a) - this._getContextPriority(b),\n );\n\n const clearSignContextsOptional: ClearSignContextSuccess[] =\n contexts.filter((context) => context.type === ClearSignContextType.ENUM);\n\n return {\n clearSignContexts,\n clearSignContextsOptional,\n clearSigningType: ClearSigningType.EIP7730,\n };\n }\n\n private _getBasicContexts(\n contexts: ClearSignContextSuccess[],\n ): BuildBaseContextsResult {\n const clearSignContexts: ClearSignContextSuccess[] = contexts\n .filter((context) => this._isContextNeededForBasicClearSigning(context))\n .sort(\n (a, b) => this._getContextPriority(a) - this._getContextPriority(b),\n );\n\n return {\n clearSignContexts,\n clearSignContextsOptional: [],\n clearSigningType: ClearSigningType.BASIC,\n };\n }\n\n private _isContextNeededForBasicClearSigning({\n type,\n }: ClearSignContextSuccess): boolean {\n switch (type) {\n case ClearSignContextType.TRANSACTION_CHECK:\n case ClearSignContextType.PLUGIN:\n case ClearSignContextType.EXTERNAL_PLUGIN:\n case ClearSignContextType.DYNAMIC_NETWORK:\n case ClearSignContextType.DYNAMIC_NETWORK_ICON:\n case ClearSignContextType.TRUSTED_NAME:\n case ClearSignContextType.TOKEN:\n case ClearSignContextType.NFT:\n return true;\n case ClearSignContextType.TRANSACTION_INFO:\n case ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION:\n case ClearSignContextType.ENUM:\n case ClearSignContextType.PROXY_INFO:\n case ClearSignContextType.SAFE:\n case ClearSignContextType.SIGNER:\n return false;\n default: {\n const uncoveredType: never = type;\n throw new Error(`Unhandled context type ${String(uncoveredType)}`);\n }\n }\n }\n\n private _isContextNeededForERC7730ClearSigning({\n type,\n }: ClearSignContextSuccess): boolean {\n switch (type) {\n case ClearSignContextType.TRANSACTION_INFO:\n case ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION:\n case ClearSignContextType.PROXY_INFO:\n case ClearSignContextType.DYNAMIC_NETWORK:\n case ClearSignContextType.DYNAMIC_NETWORK_ICON:\n case ClearSignContextType.TRANSACTION_CHECK:\n return true;\n case ClearSignContextType.ENUM: // enum is needed but as optional\n case ClearSignContextType.TRUSTED_NAME:\n case ClearSignContextType.TOKEN:\n case ClearSignContextType.NFT:\n case ClearSignContextType.PLUGIN:\n case ClearSignContextType.EXTERNAL_PLUGIN:\n case ClearSignContextType.SAFE:\n case ClearSignContextType.SIGNER:\n return false;\n default: {\n const uncoveredType: never = type;\n throw new Error(`Unhandled context type ${String(uncoveredType)}`);\n }\n }\n }\n\n private _hasValidTransactionInfo(\n contexts: ClearSignContextSuccess[],\n ): boolean {\n return (\n contexts.find(\n (context) => context.type === ClearSignContextType.TRANSACTION_INFO,\n )?.certificate !== undefined\n );\n }\n\n private _supportsGenericParser(\n deviceState: DeviceSessionState,\n appConfig: GetConfigCommandResponse,\n ): boolean {\n return new ApplicationChecker(deviceState, appConfig)\n .withMinVersionExclusive(\"1.14.0\")\n .excludeDeviceModel(DeviceModelId.NANO_S)\n .check();\n }\n\n /**\n * Determines the processing priority of a clear sign context.\n * Lower numbers indicate higher priority (processed first).\n *\n * @param context The clear sign context to get priority for\n * @returns Priority number (lower = higher priority)\n */\n private _getContextPriority({ type }: ClearSignContextSuccess): number {\n switch (type) {\n case ClearSignContextType.TRANSACTION_CHECK:\n return 10;\n case ClearSignContextType.DYNAMIC_NETWORK:\n case ClearSignContextType.DYNAMIC_NETWORK_ICON:\n case ClearSignContextType.PROXY_INFO:\n return 30;\n case ClearSignContextType.TRANSACTION_INFO:\n return 50;\n case ClearSignContextType.PLUGIN:\n case ClearSignContextType.EXTERNAL_PLUGIN:\n case ClearSignContextType.TOKEN:\n case ClearSignContextType.NFT:\n case ClearSignContextType.TRUSTED_NAME:\n case ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION:\n case ClearSignContextType.ENUM:\n return 70;\n\n /* not used here */\n case ClearSignContextType.SAFE:\n case ClearSignContextType.SIGNER:\n return 90;\n\n default: {\n const uncoveredType: never = type;\n throw new Error(\n `Unhandled context type for priority: ${String(uncoveredType)}`,\n );\n }\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["BuildBaseContexts_exports", "__export", "BASE_CONTEXT_TYPES_FILTER", "BuildBaseContexts", "NESTED_CALLDATA_CONTEXT_TYPES_FILTER", "__toCommonJS", "import_context_module", "import_device_management_kit", "import_ClearSigningType", "import_GetChallengeCommand", "import_ApplicationChecker", "_api", "_args", "contextModule", "appConfig", "transaction", "subset", "isNestedCallData", "needTransaction", "deviceState", "challenge", "challengeRes", "contextsSuccess", "context", "contexts", "clearSignContexts", "a", "b", "clearSignContextsOptional", "type", "uncoveredType"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var n=require("@ledgerhq/context-module"),t=require("@ledgerhq/device-management-kit"),C=require("ethers"),r=require("../../../api/model/ClearSigningType"),S=require("../../app-binder/device-action/__test-utils__/makeInternalApi"),l=require("./BuildBaseContexts");describe("BuildBaseContexts",()=>{const i={getFieldContext:vi.fn(),getContexts:vi.fn(),getTypedDataFilters:vi.fn(),getSolanaContext:vi.fn()},y={},u=(0,t.hexaStringToBuffer)(C.Transaction.from({chainId:1n,nonce:0,data:"0x"}).unsignedSerialized),s={keyUsageNumber:1,payload:new Uint8Array([1,2,3])};let c;const a=(0,S.makeDeviceActionInternalApiMock)();function p(e){return{blindSigningEnabled:!1,web3ChecksEnabled:e,web3ChecksOptIn:!1,version:"1.13.0"}}beforeEach(()=>{vi.resetAllMocks(),a.sendCommand.mockResolvedValue((0,t.CommandResultFactory)({data:{challenge:"challenge"}})),c={contextModule:i,subset:{chainId:1,to:void 0,data:"0x",selector:"0x"},transaction:u,options:y,appConfig:p(!1)}}),it("should build the transaction context without clear sign contexts",async()=>{const e=[],o=[];i.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const d=await new l.BuildBaseContexts(a,{...c,appConfig:p(!0)}).run();expect(d).toEqual({clearSignContexts:e,clearSignContextsOptional:o,clearSigningType:r.ClearSigningType.BASIC})}),it("should build the transaction context with transaction check and generic-parser clear sign contexts",async()=>{const e=[{type:n.ClearSignContextType.TRANSACTION_INFO,payload:"payload-1",certificate:s},{type:n.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-2"},{type:n.ClearSignContextType.ENUM,payload:"payload-3",id:1,value:2,certificate:s},{type:n.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-4"}],o={type:n.ClearSignContextType.TRANSACTION_CHECK,payload:"transactionCheck"};i.getContexts.mockResolvedValueOnce([...e,o]),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.15.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const d=await new l.BuildBaseContexts(a,{...c,appConfig:p(!0)}).run();expect(d).toEqual({clearSignContexts:[o,e[0],e[1],e[3]],clearSignContextsOptional:[e[2]],clearSigningType:r.ClearSigningType.EIP7730})}),it("should build the transaction context with transaction check and generic-parser clear sign contexts in the correct order",async()=>{const e=[{type:n.ClearSignContextType.ENUM,payload:"payload-3",id:1,value:2,certificate:s},{type:n.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-4"},{type:n.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-2"},{type:n.ClearSignContextType.TRANSACTION_INFO,payload:"payload-1",certificate:s}],o={type:n.ClearSignContextType.TRANSACTION_CHECK,payload:"transactionCheck"};i.getContexts.mockResolvedValueOnce([...e,o]),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.15.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const d=await new l.BuildBaseContexts(a,{...c,appConfig:p(!0)}).run();expect(d).toEqual({clearSignContexts:[o,e[3],e[1],e[2]],clearSignContextsOptional:[e[0]],clearSigningType:r.ClearSigningType.EIP7730})}),it("should build the transaction context with clear sign contexts",async()=>{const e=[{type:n.ClearSignContextType.TRANSACTION_CHECK,payload:"transactionCheck"},{type:n.ClearSignContextType.TOKEN,payload:"payload-1"},{type:n.ClearSignContextType.NFT,payload:"payload-2"}];i.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const o=await new l.BuildBaseContexts(a,c).run();expect(o).toEqual({clearSignContexts:e,clearSignContextsOptional:[],clearSigningType:r.ClearSigningType.BASIC})}),it("should build the transaction context with generic-parser context",async()=>{const e=[{type:n.ClearSignContextType.TRANSACTION_INFO,payload:"payload-1",certificate:s},{type:n.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-2"},{type:n.ClearSignContextType.ENUM,payload:"payload-3",id:1,value:2,certificate:s},{type:n.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-4"}];i.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.15.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const o=await new l.BuildBaseContexts(a,c).run();expect(o).toEqual({clearSignContexts:[e[0],e[1],e[3]],clearSignContextsOptional:[e[2]],clearSigningType:r.ClearSigningType.EIP7730})}),it("should build the transaction context with proxy delegate call context",async()=>{const e=[{type:n.ClearSignContextType.TRANSACTION_INFO,payload:"payload-1",certificate:s},{type:n.ClearSignContextType.PROXY_INFO,payload:"payload-2"}],o=[];i.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.15.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const d=await new l.BuildBaseContexts(a,c).run();expect(d).toEqual({clearSignContexts:[e[1],e[0]],clearSignContextsOptional:o,clearSigningType:r.ClearSigningType.EIP7730})}),it("should call the context module with the correct parameters if transaction check is enabled",async()=>{const e=[];i.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1}),await new l.BuildBaseContexts(a,{...c,appConfig:p(!0)}).run(),expect(i.getContexts).toHaveBeenCalledWith({deviceModelId:t.DeviceModelId.FLEX,challenge:"challenge",transaction:u,...c.subset},l.BASE_CONTEXT_TYPES_FILTER)}),it("should call the context module with the correct parameters if transaction check is disabled",async()=>{const e=[];i.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1}),await new l.BuildBaseContexts(a,{...c,appConfig:p(!1)}).run(),expect(i.getContexts).toHaveBeenCalledWith({deviceModelId:t.DeviceModelId.FLEX,challenge:"challenge",...c.subset},l.BASE_CONTEXT_TYPES_FILTER)}),it("should call the context module without challenge for Nano S",async()=>{const e=[];i.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:t.DeviceModelId.NANO_S,isSecureConnectionAllowed:!1}),await new l.BuildBaseContexts(a,c).run(),expect(i.getContexts).toHaveBeenCalledWith({deviceModelId:t.DeviceModelId.NANO_S,challenge:void 0,...c.subset},l.BASE_CONTEXT_TYPES_FILTER)}),it("should exclude error contexts from the result",async()=>{const e=[{type:n.ClearSignContextType.ERROR,error:new Error("error")},{type:n.ClearSignContextType.TOKEN,payload:"payload-1"},{type:n.ClearSignContextType.ERROR,error:new Error("error")},{type:n.ClearSignContextType.NFT,payload:"payload-2"}];i.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const o=await new l.BuildBaseContexts(a,c).run();expect(o).toEqual({clearSignContexts:[e[1],e[3]],clearSignContextsOptional:[],clearSigningType:r.ClearSigningType.BASIC})}),it("should exclude generic-parser contexts from the result on old apps",async()=>{const e=[{type:n.ClearSignContextType.TRANSACTION_INFO,payload:"transaction_info",certificate:s},{type:n.ClearSignContextType.TOKEN,payload:"payload-1"},{type:n.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"transaction_field"},{type:n.ClearSignContextType.NFT,payload:"payload-2"},{type:n.ClearSignContextType.ENUM,payload:"enum",id:1,value:2,certificate:s}];i.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const o=await new l.BuildBaseContexts(a,c).run();expect(o).toEqual({clearSignContexts:[e[1],e[3]],clearSignContextsOptional:[],clearSigningType:r.ClearSigningType.BASIC})}),it("should exclude generic-parser contexts from the result if no transaction_info was found",async()=>{const e=[{type:n.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"transaction_field"},{type:n.ClearSignContextType.TOKEN,payload:"payload-1"},{type:n.ClearSignContextType.ENUM,payload:"enum",id:1,value:2},{type:n.ClearSignContextType.NFT,payload:"payload-2"}];i.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.14.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const o=await new l.BuildBaseContexts(a,c).run();expect(o).toEqual({clearSignContexts:[e[1],e[3]],clearSignContextsOptional:[],clearSigningType:r.ClearSigningType.BASIC})}),it("should exclude legacy contexts from the result for generic-parser transactions",async()=>{const e=[{type:n.ClearSignContextType.TOKEN,payload:"payload-1"},{type:n.ClearSignContextType.TRANSACTION_INFO,payload:"payload-2",certificate:s},{type:n.ClearSignContextType.EXTERNAL_PLUGIN,payload:"payload-3"},{type:n.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-4"},{type:n.ClearSignContextType.ENUM,payload:"payload-5",id:1,value:2,certificate:s}];i.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.15.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const o=await new l.BuildBaseContexts(a,c).run();expect(o).toEqual({clearSignContexts:[e[1],e[3]],clearSignContextsOptional:[e[4]],clearSigningType:r.ClearSigningType.EIP7730})}),it("should exclude generic-parser contexts with a nano s device",async()=>{const e=[{type:n.ClearSignContextType.TOKEN,payload:"payload-1"},{type:n.ClearSignContextType.TRANSACTION_INFO,payload:"payload-2",certificate:s},{type:n.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-3"},{type:n.ClearSignContextType.ENUM,payload:"payload-4",id:1,value:2,certificate:s}];i.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.14.0"},deviceModelId:t.DeviceModelId.NANO_S,isSecureConnectionAllowed:!1});const o=await new l.BuildBaseContexts(a,c).run();expect(o).toEqual({clearSignContexts:[e[0]],clearSignContextsOptional:[],clearSigningType:r.ClearSigningType.BASIC})}),it("should exclude generic-parser contexts with an old app version",async()=>{const e=[{type:n.ClearSignContextType.TOKEN,payload:"payload-1"},{type:n.ClearSignContextType.TRANSACTION_INFO,payload:"payload-2",certificate:s},{type:n.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-3"},{type:n.ClearSignContextType.ENUM,payload:"payload-4",id:1,value:2,certificate:s}];i.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const o=await new l.BuildBaseContexts(a,c).run();expect(o).toEqual({clearSignContexts:[e[0]],clearSignContextsOptional:[],clearSigningType:r.ClearSigningType.BASIC})}),it("should exclude generic-parser contexts with a non ready device",async()=>{const e=[{type:n.ClearSignContextType.TOKEN,payload:"payload-1"},{type:n.ClearSignContextType.TRANSACTION_INFO,payload:"payload-2",certificate:s},{type:n.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-3"},{type:n.ClearSignContextType.ENUM,payload:"payload-4",id:1,value:2,certificate:s}];i.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.Connected,deviceStatus:t.DeviceStatus.NOT_CONNECTED,deviceModelId:t.DeviceModelId.FLEX});const o=await new l.BuildBaseContexts(a,c).run();expect(o).toEqual({clearSignContexts:[e[0]],clearSignContextsOptional:[],clearSigningType:r.ClearSigningType.BASIC})}),it("should return no clear sign context if the transaction info certificate is missing",async()=>{const e=[{type:n.ClearSignContextType.TRANSACTION_INFO,payload:"payload-1"},{type:n.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-2"},{type:n.ClearSignContextType.ENUM,payload:"payload-3",id:1,value:2}];i.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.17.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const o=await new l.BuildBaseContexts(a,c).run();expect(o).toEqual({clearSignContexts:[],clearSignContextsOptional:[],clearSigningType:r.ClearSigningType.BASIC})})});
|
|
2
|
+
//# sourceMappingURL=BuildBaseContexts.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/app-binder/task/BuildBaseContexts.test.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n type ClearSignContext,\n ClearSignContextType,\n type PkiCertificate,\n} from \"@ledgerhq/context-module\";\nimport {\n CommandResultFactory,\n DeviceModelId,\n DeviceSessionStateType,\n DeviceStatus,\n hexaStringToBuffer,\n} from \"@ledgerhq/device-management-kit\";\nimport { Transaction } from \"ethers\";\n\nimport type { GetConfigCommandResponse } from \"@api/app-binder/GetConfigCommandTypes\";\nimport { ClearSigningType } from \"@api/model/ClearSigningType\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\n\nimport {\n BASE_CONTEXT_TYPES_FILTER,\n BuildBaseContexts,\n type BuildBaseContextsArgs,\n} from \"./BuildBaseContexts\";\n\ndescribe(\"BuildBaseContexts\", () => {\n const contextModuleMock = {\n getFieldContext: vi.fn(),\n getContexts: vi.fn(),\n getTypedDataFilters: vi.fn(),\n getSolanaContext: vi.fn(),\n };\n const defaultOptions = {};\n const defaultTransaction: Uint8Array = hexaStringToBuffer(\n Transaction.from({\n chainId: 1n,\n nonce: 0,\n data: \"0x\",\n }).unsignedSerialized,\n )!;\n const defaultCertificate: PkiCertificate = {\n keyUsageNumber: 1,\n payload: new Uint8Array([0x01, 0x02, 0x03]),\n };\n\n let defaultArgs: BuildBaseContextsArgs;\n const apiMock = makeDeviceActionInternalApiMock();\n\n function createAppConfig(\n web3ChecksEnabled: boolean,\n ): GetConfigCommandResponse {\n return {\n blindSigningEnabled: false,\n web3ChecksEnabled,\n web3ChecksOptIn: false,\n version: \"1.13.0\",\n };\n }\n\n beforeEach(() => {\n vi.resetAllMocks();\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: { challenge: \"challenge\" } }),\n );\n\n defaultArgs = {\n contextModule: contextModuleMock,\n subset: { chainId: 1, to: undefined, data: \"0x\", selector: \"0x\" },\n transaction: defaultTransaction,\n options: defaultOptions,\n appConfig: createAppConfig(false),\n };\n });\n\n it(\"should build the transaction context without clear sign contexts\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [];\n const clearSignContextsOptional: ClearSignContext[] = [];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, {\n ...defaultArgs,\n appConfig: createAppConfig(true),\n }).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts,\n clearSignContextsOptional,\n clearSigningType: ClearSigningType.BASIC,\n });\n });\n\n it(\"should build the transaction context with transaction check and generic-parser clear sign contexts\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-1\",\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-2\",\n },\n {\n type: ClearSignContextType.ENUM,\n payload: \"payload-3\",\n id: 1,\n value: 2,\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-4\",\n },\n ];\n const expectedTxCheck = {\n type: ClearSignContextType.TRANSACTION_CHECK,\n payload: \"transactionCheck\",\n };\n contextModuleMock.getContexts.mockResolvedValueOnce([\n ...clearSignContexts,\n expectedTxCheck,\n ]);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.15.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, {\n ...defaultArgs,\n appConfig: createAppConfig(true),\n }).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [\n expectedTxCheck,\n clearSignContexts[0],\n clearSignContexts[1],\n clearSignContexts[3],\n ],\n clearSignContextsOptional: [clearSignContexts[2]],\n clearSigningType: ClearSigningType.EIP7730,\n });\n });\n\n it(\"should build the transaction context with transaction check and generic-parser clear sign contexts in the correct order\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.ENUM,\n payload: \"payload-3\",\n id: 1,\n value: 2,\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-4\",\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-2\",\n },\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-1\",\n certificate: defaultCertificate,\n },\n ];\n const expectedTxCheck = {\n type: ClearSignContextType.TRANSACTION_CHECK,\n payload: \"transactionCheck\",\n };\n contextModuleMock.getContexts.mockResolvedValueOnce([\n ...clearSignContexts,\n expectedTxCheck,\n ]);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.15.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, {\n ...defaultArgs,\n appConfig: createAppConfig(true),\n }).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [\n expectedTxCheck, // transaction check\n clearSignContexts[3], // transaction info\n clearSignContexts[1], // transaction field description\n clearSignContexts[2], // transaction field description\n ],\n clearSignContextsOptional: [clearSignContexts[0]], // enum\n clearSigningType: ClearSigningType.EIP7730,\n });\n });\n\n it(\"should build the transaction context with clear sign contexts\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TRANSACTION_CHECK,\n payload: \"transactionCheck\",\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.NFT,\n payload: \"payload-2\",\n },\n ];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, defaultArgs).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts,\n clearSignContextsOptional: [],\n clearSigningType: ClearSigningType.BASIC,\n });\n });\n\n it(\"should build the transaction context with generic-parser context\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-1\",\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-2\",\n },\n {\n type: ClearSignContextType.ENUM,\n payload: \"payload-3\",\n id: 1,\n value: 2,\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-4\",\n },\n ];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.15.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, defaultArgs).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [\n clearSignContexts[0],\n clearSignContexts[1],\n clearSignContexts[3],\n ],\n clearSignContextsOptional: [clearSignContexts[2]],\n clearSigningType: ClearSigningType.EIP7730,\n });\n });\n\n it(\"should build the transaction context with proxy delegate call context\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-1\",\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.PROXY_INFO,\n payload: \"payload-2\",\n },\n ];\n const clearSignContextsOptional: ClearSignContext[] = [];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.15.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, defaultArgs).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[1], clearSignContexts[0]],\n clearSignContextsOptional,\n clearSigningType: ClearSigningType.EIP7730,\n });\n });\n\n it(\"should call the context module with the correct parameters if transaction check is enabled\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n await new BuildBaseContexts(apiMock, {\n ...defaultArgs,\n appConfig: createAppConfig(true),\n }).run();\n\n // THEN\n expect(contextModuleMock.getContexts).toHaveBeenCalledWith(\n {\n deviceModelId: DeviceModelId.FLEX,\n challenge: \"challenge\",\n transaction: defaultTransaction,\n ...defaultArgs.subset,\n },\n BASE_CONTEXT_TYPES_FILTER,\n );\n });\n\n it(\"should call the context module with the correct parameters if transaction check is disabled\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n await new BuildBaseContexts(apiMock, {\n ...defaultArgs,\n appConfig: createAppConfig(false),\n }).run();\n\n // THEN\n expect(contextModuleMock.getContexts).toHaveBeenCalledWith(\n {\n deviceModelId: DeviceModelId.FLEX,\n challenge: \"challenge\",\n ...defaultArgs.subset,\n },\n BASE_CONTEXT_TYPES_FILTER,\n );\n });\n\n it(\"should call the context module without challenge for Nano S\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n deviceModelId: DeviceModelId.NANO_S,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n await new BuildBaseContexts(apiMock, defaultArgs).run();\n\n // THEN\n expect(contextModuleMock.getContexts).toHaveBeenCalledWith(\n {\n deviceModelId: DeviceModelId.NANO_S,\n challenge: undefined,\n ...defaultArgs.subset,\n },\n BASE_CONTEXT_TYPES_FILTER,\n );\n });\n\n it(\"should exclude error contexts from the result\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.ERROR,\n error: new Error(\"error\"),\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.ERROR,\n error: new Error(\"error\"),\n },\n {\n type: ClearSignContextType.NFT,\n payload: \"payload-2\",\n },\n ];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, defaultArgs).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[1], clearSignContexts[3]],\n clearSignContextsOptional: [],\n clearSigningType: ClearSigningType.BASIC,\n });\n });\n\n it(\"should exclude generic-parser contexts from the result on old apps\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"transaction_info\",\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"transaction_field\",\n },\n {\n type: ClearSignContextType.NFT,\n payload: \"payload-2\",\n },\n {\n type: ClearSignContextType.ENUM,\n payload: \"enum\",\n id: 1,\n value: 2,\n certificate: defaultCertificate,\n },\n ];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, defaultArgs).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[1], clearSignContexts[3]],\n clearSignContextsOptional: [],\n clearSigningType: ClearSigningType.BASIC,\n });\n });\n\n it(\"should exclude generic-parser contexts from the result if no transaction_info was found\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"transaction_field\",\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.ENUM,\n payload: \"enum\",\n id: 1,\n value: 2,\n },\n {\n type: ClearSignContextType.NFT,\n payload: \"payload-2\",\n },\n ];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.14.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, defaultArgs).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[1], clearSignContexts[3]],\n clearSignContextsOptional: [],\n clearSigningType: ClearSigningType.BASIC,\n });\n });\n\n it(\"should exclude legacy contexts from the result for generic-parser transactions\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-2\",\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload: \"payload-3\",\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-4\",\n },\n {\n type: ClearSignContextType.ENUM,\n payload: \"payload-5\",\n id: 1,\n value: 2,\n certificate: defaultCertificate,\n },\n ];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.15.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, defaultArgs).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[1], clearSignContexts[3]],\n clearSignContextsOptional: [clearSignContexts[4]],\n clearSigningType: ClearSigningType.EIP7730,\n });\n });\n\n it(\"should exclude generic-parser contexts with a nano s device\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-2\",\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-3\",\n },\n {\n type: ClearSignContextType.ENUM,\n payload: \"payload-4\",\n id: 1,\n value: 2,\n certificate: defaultCertificate,\n },\n ];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.14.0\" },\n deviceModelId: DeviceModelId.NANO_S,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, defaultArgs).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[0]],\n clearSignContextsOptional: [],\n clearSigningType: ClearSigningType.BASIC,\n });\n });\n\n it(\"should exclude generic-parser contexts with an old app version\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-2\",\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-3\",\n },\n {\n type: ClearSignContextType.ENUM,\n payload: \"payload-4\",\n id: 1,\n value: 2,\n certificate: defaultCertificate,\n },\n ];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, defaultArgs).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[0]],\n clearSignContextsOptional: [],\n clearSigningType: ClearSigningType.BASIC,\n });\n });\n\n it(\"should exclude generic-parser contexts with a non ready device\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-2\",\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-3\",\n },\n {\n type: ClearSignContextType.ENUM,\n payload: \"payload-4\",\n id: 1,\n value: 2,\n certificate: defaultCertificate,\n },\n ];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.NOT_CONNECTED,\n deviceModelId: DeviceModelId.FLEX,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, defaultArgs).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[0]],\n clearSignContextsOptional: [],\n clearSigningType: ClearSigningType.BASIC,\n });\n });\n\n it(\"should return no clear sign context if the transaction info certificate is missing\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-2\",\n },\n {\n type: ClearSignContextType.ENUM,\n payload: \"payload-3\",\n id: 1,\n value: 2,\n },\n ];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.17.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, defaultArgs).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [],\n clearSignContextsOptional: [],\n clearSigningType: ClearSigningType.BASIC,\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_context_module", "import_device_management_kit", "import_ethers", "import_ClearSigningType", "import_makeInternalApi", "import_BuildBaseContexts", "contextModuleMock", "defaultOptions", "defaultTransaction", "defaultCertificate", "defaultArgs", "apiMock", "createAppConfig", "web3ChecksEnabled", "clearSignContexts", "clearSignContextsOptional", "result", "expectedTxCheck"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var v=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var F=Object.prototype.hasOwnProperty;var R=(i,e)=>{for(var t in e)v(i,t,{get:e[t],enumerable:!0})},E=(i,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of b(e))!F.call(i,a)&&a!==t&&v(i,a,{get:()=>e[a],enumerable:!(n=w(e,a))||n.enumerable});return i};var V=i=>E(v({},"__esModule",{value:!0}),i);var B={};R(B,{BuildEIP712ContextTask:()=>N,ZERO_ADDRESS:()=>D});module.exports=V(B);var y=require("@ledgerhq/context-module"),l=require("@ledgerhq/device-management-kit"),s=require("purify-ts"),S=require("../../../api/model/ClearSigningType"),T=require("../../app-binder/command/GetChallengeCommand"),I=require("../../app-binder/task/BuildFullContextsTask"),g=require("../../shared/utils/ApplicationChecker"),M=require("../../typed-data/model/Types");const D="0x0000000000000000000000000000000000000000";class N{constructor(e,t,n,a,o,r,m,p,C,u=(x,d)=>new I.BuildFullContextsTask(x,d)){this.api=e;this.contextModule=t;this.parser=n;this.transactionParser=a;this.transactionMapper=o;this.data=r;this.derivationPath=m;this.appConfig=p;this.from=C;this.buildFullContextFactory=u}async run(){const e=this.parser.parse(this.data);if(e.isLeft())throw e.extract();const{types:t,domain:n,message:a}=e.unsafeCoerce(),o=this.api.getDeviceSessionState(),r=o.deviceModelId,m=await this.getTransactionChecks(r);let p=s.Nothing,C={};const u=this.getClearSignVersion(o);if(u.isJust()){let d;const f=await this.api.sendCommand(new T.GetChallengeCommand);(0,l.isSuccessCommandResult)(f)&&(d=f.data.challenge);const P=this.data.domain.verifyingContract?.toLowerCase()||D,A=this.data.domain.chainId||0,k=a.filter(c=>c.value instanceof M.TypedDataValueField).map(c=>({path:c.path,value:c.value.data})),h=await this.contextModule.getTypedDataFilters({verifyingContract:P,chainId:A,version:u.extract(),schema:this.data.types,challenge:d,deviceModelId:o.deviceModelId,fieldsValues:k});h.type==="success"&&(p=(0,s.Just)(h),C=await this.getCalldatasContexts(o,h))}return{derivationPath:this.derivationPath,transactionChecks:m,types:t,domain:n,message:a,clearSignContext:p,calldatasContexts:C,deviceModelId:o.deviceModelId}}async getTransactionChecks(e){if(!this.appConfig.web3ChecksEnabled)return;const t=await this.contextModule.getContexts({deviceModelId:e,data:this.data,from:this.from},[y.ClearSignContextType.TRANSACTION_CHECK]);if(t.length>0&&t[0]?.type===y.ClearSignContextType.TRANSACTION_CHECK)return t[0]}getClearSignVersion(e){return new g.ApplicationChecker(e,this.appConfig).withMinVersionInclusive("1.10.0").excludeDeviceModel(l.DeviceModelId.NANO_S).check()?new g.ApplicationChecker(e,this.appConfig).withMinVersionInclusive("1.12.0").check()?(0,s.Just)("v2"):(0,s.Just)("v1"):s.Nothing}async getCalldatasContexts(e,t){const n={};for(const a in t.calldatas){const{subset:o}=t.calldatas[a],r=await this.buildFullContextFactory(this.api,{contextModule:this.contextModule,mapper:this.transactionMapper,parser:this.transactionParser,options:{},appConfig:this.appConfig,derivationPath:this.derivationPath,subset:o,deviceModelId:e.deviceModelId}).run();r.clearSigningType===S.ClearSigningType.EIP7730&&(n[a]=r.clearSignContexts)}return n}}0&&(module.exports={BuildEIP712ContextTask,ZERO_ADDRESS});
|
|
2
2
|
//# sourceMappingURL=BuildEIP712ContextTask.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/task/BuildEIP712ContextTask.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type ClearSignContextSuccess,\n
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,EAAA,iBAAAC,IAAA,eAAAC,EAAAJ,
|
|
6
|
-
"names": ["BuildEIP712ContextTask_exports", "__export", "BuildEIP712ContextTask", "ZERO_ADDRESS", "__toCommonJS", "import_device_management_kit", "import_purify_ts", "
|
|
4
|
+
"sourcesContent": ["import {\n type ClearSignContextSuccess,\n ClearSignContextType,\n type ContextModule,\n type TypedDataCalldataIndex,\n type TypedDataClearSignContextSuccess,\n} from \"@ledgerhq/context-module\";\nimport {\n DeviceModelId,\n type DeviceSessionState,\n type InternalApi,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\nimport { Just, type Maybe, Nothing } from \"purify-ts\";\n\nimport { type GetConfigCommandResponse } from \"@api/app-binder/GetConfigCommandTypes\";\nimport { ClearSigningType } from \"@api/model/ClearSigningType\";\nimport { type TypedData } from \"@api/model/TypedData\";\nimport { GetChallengeCommand } from \"@internal/app-binder/command/GetChallengeCommand\";\nimport {\n BuildFullContextsTask,\n type BuildFullContextsTaskArgs,\n type ContextWithSubContexts,\n} from \"@internal/app-binder/task/BuildFullContextsTask\";\nimport { type ProvideEIP712ContextTaskArgs } from \"@internal/app-binder/task/ProvideEIP712ContextTask\";\nimport { ApplicationChecker } from \"@internal/shared/utils/ApplicationChecker\";\nimport { type TransactionMapperService } from \"@internal/transaction/service/mapper/TransactionMapperService\";\nimport { type TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\nimport { TypedDataValueField } from \"@internal/typed-data/model/Types\";\nimport { type TypedDataParserService } from \"@internal/typed-data/service/TypedDataParserService\";\n\nexport const ZERO_ADDRESS = \"0x0000000000000000000000000000000000000000\";\n\nexport class BuildEIP712ContextTask {\n constructor(\n private readonly api: InternalApi,\n private readonly contextModule: ContextModule,\n private readonly parser: TypedDataParserService,\n private readonly transactionParser: TransactionParserService,\n private readonly transactionMapper: TransactionMapperService,\n private readonly data: TypedData,\n private readonly derivationPath: string,\n private readonly appConfig: GetConfigCommandResponse,\n private readonly from: string,\n private readonly buildFullContextFactory = (\n api: InternalApi,\n args: BuildFullContextsTaskArgs,\n ) => new BuildFullContextsTask(api, args),\n ) {}\n\n async run(): Promise<ProvideEIP712ContextTaskArgs> {\n // Clear signing context\n // Parse the message types and values\n const parsed = this.parser.parse(this.data);\n if (parsed.isLeft()) {\n throw parsed.extract();\n }\n const { types, domain, message } = parsed.unsafeCoerce();\n\n const deviceState = this.api.getDeviceSessionState();\n const deviceModelId = deviceState.deviceModelId;\n const transactionChecks = await this.getTransactionChecks(deviceModelId);\n\n // Get clear signing context, if any\n let clearSignContext: Maybe<TypedDataClearSignContextSuccess> = Nothing;\n let calldatasContexts: Record<\n TypedDataCalldataIndex,\n ContextWithSubContexts[]\n > = {};\n const version = this.getClearSignVersion(deviceState);\n if (version.isJust()) {\n // Get challenge\n let challenge: string | undefined = undefined;\n const challengeRes = await this.api.sendCommand(\n new GetChallengeCommand(),\n );\n if (isSuccessCommandResult(challengeRes)) {\n challenge = challengeRes.data.challenge;\n }\n\n // Get filters\n const verifyingContract =\n this.data.domain.verifyingContract?.toLowerCase() || ZERO_ADDRESS;\n const chainId = this.data.domain.chainId || 0;\n const fieldsValues = message\n .filter((v) => v.value instanceof TypedDataValueField)\n .map((v) => ({\n path: v.path,\n value: (v.value as TypedDataValueField).data,\n }));\n const filters = await this.contextModule.getTypedDataFilters({\n verifyingContract,\n chainId,\n version: version.extract(),\n schema: this.data.types,\n challenge,\n deviceModelId: deviceState.deviceModelId,\n fieldsValues,\n });\n if (filters.type === \"success\") {\n clearSignContext = Just(filters);\n calldatasContexts = await this.getCalldatasContexts(\n deviceState,\n filters,\n );\n }\n }\n\n // Return the args for provide context task\n const provideTaskArgs: ProvideEIP712ContextTaskArgs = {\n derivationPath: this.derivationPath,\n transactionChecks,\n types,\n domain,\n message,\n clearSignContext,\n calldatasContexts,\n deviceModelId: deviceState.deviceModelId,\n };\n return provideTaskArgs;\n }\n\n private async getTransactionChecks(\n deviceModelId: DeviceModelId,\n ): Promise<ClearSignContextSuccess | undefined> {\n if (!this.appConfig.web3ChecksEnabled) {\n return undefined;\n }\n const contexts = await this.contextModule.getContexts(\n {\n deviceModelId,\n data: this.data,\n from: this.from,\n },\n [ClearSignContextType.TRANSACTION_CHECK],\n );\n if (\n contexts.length > 0 &&\n contexts[0]?.type === ClearSignContextType.TRANSACTION_CHECK\n ) {\n return contexts[0] as ClearSignContextSuccess;\n }\n return undefined;\n }\n\n private getClearSignVersion(\n deviceState: DeviceSessionState,\n ): Maybe<\"v1\" | \"v2\"> {\n if (\n !new ApplicationChecker(deviceState, this.appConfig)\n .withMinVersionInclusive(\"1.10.0\")\n .excludeDeviceModel(DeviceModelId.NANO_S)\n .check()\n ) {\n return Nothing;\n }\n\n // EIP712 v2 (amount & datetime filters) supported since 1.11.0:\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#1110-1\n // But some issues were still present until 1.12.0 among which:\n // * V2 descriptor with missing token not supported by the app\n // * Empty arrays with filters not correctly handled\n // * Trusted name filters not yet released\n // Therefore it's safer and easier to use V1 filters before 1.12.0:\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#1120\n const shouldUseV2Filters = new ApplicationChecker(\n deviceState,\n this.appConfig,\n )\n .withMinVersionInclusive(\"1.12.0\")\n .check();\n return shouldUseV2Filters ? Just(\"v2\") : Just(\"v1\");\n }\n\n private async getCalldatasContexts(\n deviceState: DeviceSessionState,\n filters: TypedDataClearSignContextSuccess,\n ): Promise<Record<TypedDataCalldataIndex, ContextWithSubContexts[]>> {\n const calldatasContexts: Record<\n TypedDataCalldataIndex,\n ContextWithSubContexts[]\n > = {};\n for (const calldataIndex in filters.calldatas) {\n const { subset } = filters.calldatas[calldataIndex]!;\n const calldataContext = await this.buildFullContextFactory(this.api, {\n contextModule: this.contextModule,\n mapper: this.transactionMapper,\n parser: this.transactionParser,\n options: {},\n appConfig: this.appConfig,\n derivationPath: this.derivationPath,\n subset,\n deviceModelId: deviceState.deviceModelId,\n }).run();\n if (calldataContext.clearSigningType === ClearSigningType.EIP7730) {\n calldatasContexts[calldataIndex] = calldataContext.clearSignContexts;\n }\n }\n return calldatasContexts;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["BuildEIP712ContextTask_exports", "__export", "BuildEIP712ContextTask", "ZERO_ADDRESS", "__toCommonJS", "import_context_module", "import_device_management_kit", "import_purify_ts", "import_ClearSigningType", "import_GetChallengeCommand", "import_BuildFullContextsTask", "import_ApplicationChecker", "import_Types", "api", "contextModule", "parser", "transactionParser", "transactionMapper", "data", "derivationPath", "appConfig", "from", "buildFullContextFactory", "args", "parsed", "types", "domain", "message", "deviceState", "deviceModelId", "transactionChecks", "clearSignContext", "calldatasContexts", "version", "challenge", "challengeRes", "verifyingContract", "chainId", "fieldsValues", "v", "filters", "contexts", "calldataIndex", "subset", "calldataContext"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var v=require("@ledgerhq/context-module"),T=require("@ledgerhq/context-module"),e=require("@ledgerhq/device-management-kit"),t=require("purify-ts"),b=require("../../../api/model/ClearSigningType"),k=require("../../app-binder/device-action/__test-utils__/makeInternalApi"),s=require("../../typed-data/model/Types"),f=require("./BuildEIP712ContextTask");describe("BuildEIP712ContextTask",()=>{const o=(0,k.makeDeviceActionInternalApiMock)(),a={getFieldContext:vi.fn(),getContexts:vi.fn(),getTypedDataFilters:vi.fn()},i={parse:vi.fn()},C={extractValue:vi.fn()},y={mapTransactionToSubset:vi.fn()},p=vi.fn();function g(n){return{blindSigningEnabled:!1,web3ChecksEnabled:n,web3ChecksOptIn:!1,version:"1.13.0"}}const u={domain:{name:"Permit2",chainId:137,verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3"},primaryType:"PermitSingle",message:{details:{token:"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",amount:"69420000000000000000",expiration:"1718184249",nonce:"0"},spender:"0xec7be89e9d109e7e3fec59c222cf297125fefda2",sigDeadline:"1715594049"},types:{PermitSingle:[{name:"details",type:"PermitDetails"},{name:"spender",type:"address"},{name:"sigDeadline",type:"uint256"}],PermitDetails:[{name:"token",type:"address"},{name:"amount",type:"uint"},{name:"expiration",type:"uint"},{name:"nonce",type:"uint"}]}},r={PermitSingle:{details:new s.StructType("PermitDetails"),spender:new s.PrimitiveType("address","address",t.Nothing),sigDeadline:new s.PrimitiveType("uint256","uint",(0,t.Just)(32))},PermitDetails:{token:new s.PrimitiveType("address","address",t.Nothing),amount:new s.PrimitiveType("uint160","uint",(0,t.Just)(20)),expiration:new s.PrimitiveType("uint48","uint",(0,t.Just)(6)),nonce:new s.PrimitiveType("uint48","uint",(0,t.Just)(6))}},d=[{path:"",type:"",value:new s.TypedDataValueRoot("EIP712Domain")},{path:"chainId",type:"uint256",value:new s.TypedDataValueField(Uint8Array.from([137]))}],l=[{path:"",type:"",value:new s.TypedDataValueRoot("PermitSingle")},{path:"details.amount",type:"uint160",value:new s.TypedDataValueField(Uint8Array.from([18]))},{path:"details.expiration",type:"uint48",value:new s.TypedDataValueField(Uint8Array.from([19]))}],S={type:"success",messageInfo:{displayName:"Permit2",filtersCount:1,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},trustedNamesAddresses:{},tokens:{},calldatas:{},proxy:void 0,filters:{"details.amount":{displayName:"Amount allowance",path:"details.amount",signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3",tokenIndex:255,type:"amount"}}},h="0x1234",m="0x8ceb23fd6bc0add59e62ac25578270cff1b9f619";beforeEach(()=>{vi.resetAllMocks(),o.sendCommand.mockResolvedValue((0,e.CommandResultFactory)({data:{challenge:h}})),p.mockReturnValue({run:async()=>({clearSignContexts:[],clearSigningType:b.ClearSigningType.BASIC})})}),it("Build context with clear signing context not supported by the device",async()=>{const n=new f.BuildEIP712ContextTask(o,a,i,C,y,u,"44'/60'/0'/0/0",g(!1),m,p);i.parse.mockReturnValueOnce((0,t.Right)({types:r,domain:d,message:l})),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.11.0"},deviceModelId:e.DeviceModelId.NANO_S,isSecureConnectionAllowed:!1});const c=await n.run();expect(c).toStrictEqual({deviceModelId:e.DeviceModelId.NANO_S,derivationPath:"44'/60'/0'/0/0",transactionChecks:void 0,types:r,domain:d,message:l,clearSignContext:t.Nothing,calldatasContexts:{}})}),it("Build context with no clear signing context",async()=>{const n=new f.BuildEIP712ContextTask(o,a,i,C,y,u,"44'/60'/0'/0/0",g(!1),m,p);i.parse.mockReturnValueOnce((0,t.Right)({types:r,domain:d,message:l})),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:e.DeviceModelId.FLEX,isSecureConnectionAllowed:!1}),a.getTypedDataFilters.mockResolvedValueOnce({type:v.ClearSignContextType.ERROR,error:new Error("no filter")});const c=await n.run();expect(c).toStrictEqual({deviceModelId:e.DeviceModelId.FLEX,derivationPath:"44'/60'/0'/0/0",transactionChecks:void 0,types:r,domain:d,message:l,clearSignContext:t.Nothing,calldatasContexts:{}})}),it("Build context with clear signing context",async()=>{const n={type:v.ClearSignContextType.TRANSACTION_CHECK,payload:"web3Check"},c=new f.BuildEIP712ContextTask(o,a,i,C,y,u,"44'/60'/0'/0/0",g(!1),m,p);a.getContexts.mockResolvedValueOnce([n]),i.parse.mockReturnValueOnce((0,t.Right)({types:r,domain:d,message:l})),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:e.DeviceModelId.FLEX,isSecureConnectionAllowed:!1}),a.getTypedDataFilters.mockResolvedValueOnce(S);const x=await c.run();expect(x).toStrictEqual({deviceModelId:e.DeviceModelId.FLEX,derivationPath:"44'/60'/0'/0/0",transactionChecks:void 0,types:r,domain:d,message:l,clearSignContext:(0,t.Just)(S),calldatasContexts:{}}),expect(i.parse).toHaveBeenCalledWith(u),expect(a.getTypedDataFilters).toHaveBeenCalledWith({verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:137,version:"v2",schema:u.types,challenge:h,deviceModelId:e.DeviceModelId.FLEX,fieldsValues:[{path:"details.amount",value:Uint8Array.from([18])},{path:"details.expiration",value:Uint8Array.from([19])}]})}),it("Build context with clear signing context and transaction checks",async()=>{const n={type:v.ClearSignContextType.TRANSACTION_CHECK,payload:"transactionCheck"},c=new f.BuildEIP712ContextTask(o,a,i,C,y,u,"44'/60'/0'/0/0",g(!0),m,p);a.getContexts.mockResolvedValueOnce([n]),i.parse.mockReturnValueOnce((0,t.Right)({types:r,domain:d,message:l})),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:e.DeviceModelId.FLEX,isSecureConnectionAllowed:!1}),a.getTypedDataFilters.mockResolvedValueOnce(S);const x=await c.run();expect(x).toStrictEqual({deviceModelId:e.DeviceModelId.FLEX,derivationPath:"44'/60'/0'/0/0",types:r,domain:d,message:l,clearSignContext:(0,t.Just)(S),calldatasContexts:{},transactionChecks:n})}),it("Build context with clear signing context V1",async()=>{const n=new f.BuildEIP712ContextTask(o,a,i,C,y,u,"44'/60'/0'/0/0",g(!1),m,p);i.parse.mockReturnValueOnce((0,t.Right)({types:r,domain:d,message:l})),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.11.0"},deviceModelId:e.DeviceModelId.FLEX,isSecureConnectionAllowed:!1}),a.getTypedDataFilters.mockResolvedValueOnce(S),await n.run(),expect(a.getTypedDataFilters).toHaveBeenCalledWith({verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:137,version:"v1",schema:u.types,challenge:h,deviceModelId:e.DeviceModelId.FLEX,fieldsValues:[{path:"details.amount",value:Uint8Array.from([18])},{path:"details.expiration",value:Uint8Array.from([19])}]})}),it("Build context with clear signing context and calldatas",async()=>{const n=new f.BuildEIP712ContextTask(o,a,i,C,y,u,"44'/60'/0'/0/0",g(!1),m,p),c={chainId:4660,data:"0x6a76120200000000000000000000000023f8abfc2824c397ccb3da89ae772984107ddb99",from:m,selector:"0x778899aa",to:"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",value:4200000000000000n},x={...S,calldatas:{0:{filter:{calldataIndex:0,displayName:"Transaction",valueFlag:!0,calleeFlag:T.TypedDataCalldataParamPresence.Present,chainIdFlag:!1,selectorFlag:!1,amountFlag:!0,spenderFlag:T.TypedDataCalldataParamPresence.Present,signature:"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e"},subset:c}}};i.parse.mockReturnValueOnce((0,t.Right)({types:r,domain:d,message:l})),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:e.DeviceModelId.FLEX,isSecureConnectionAllowed:!1}),a.getTypedDataFilters.mockResolvedValueOnce(x),p.mockReturnValue({run:async()=>({clearSignContexts:[],clearSigningType:b.ClearSigningType.EIP7730})});const E=await n.run();expect(E).toStrictEqual({deviceModelId:e.DeviceModelId.FLEX,derivationPath:"44'/60'/0'/0/0",transactionChecks:void 0,types:r,domain:d,message:l,clearSignContext:(0,t.Just)(x),calldatasContexts:{0:[]}})}),it("Should throw an error if parsing fails",async()=>{const n=new f.BuildEIP712ContextTask(o,a,i,C,y,u,"44'/60'/0'/0/0",g(!1),m,p);i.parse.mockReturnValueOnce((0,t.Left)(new Error("Parsing error")));try{await n.run()}catch(c){expect(c).toBeInstanceOf(Error),expect(c.message).toBe("Parsing error")}})});
|
|
2
2
|
//# sourceMappingURL=BuildEIP712ContextTask.test.js.map
|