@ledgerhq/device-signer-kit-ethereum 0.0.0-try-to-fix-20250429171448 → 0.0.0-verify-safe-address-20251016105127
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +112 -1
- package/lib/cjs/api/SignerEth.js +1 -1
- package/lib/cjs/api/SignerEth.js.map +1 -1
- package/lib/cjs/api/SignerEthBuilder.test.js +1 -1
- package/lib/cjs/api/SignerEthBuilder.test.js.map +2 -2
- package/lib/cjs/api/app-binder/SignDelegationAuthorizationTypes.js +2 -0
- package/lib/cjs/api/app-binder/SignDelegationAuthorizationTypes.js.map +7 -0
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
- package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js.map +2 -2
- package/lib/cjs/api/app-binder/VerifySafeAddressDeviceActionTypes.js +2 -0
- package/lib/cjs/api/app-binder/VerifySafeAddressDeviceActionTypes.js.map +7 -0
- package/lib/cjs/api/index.js +1 -1
- package/lib/cjs/api/index.js.map +3 -3
- package/lib/cjs/api/model/AddressOptions.js +1 -1
- package/lib/cjs/api/model/AddressOptions.js.map +1 -1
- package/lib/cjs/api/model/ClearSigningType.js +2 -0
- package/lib/cjs/api/model/ClearSigningType.js.map +7 -0
- package/lib/cjs/api/model/MessageOptions.js +2 -0
- package/lib/cjs/api/model/MessageOptions.js.map +7 -0
- package/lib/cjs/api/model/SafeAddressOptions.js +2 -0
- package/lib/cjs/api/model/SafeAddressOptions.js.map +7 -0
- package/lib/cjs/api/model/TransactionOptions.js +1 -1
- package/lib/cjs/api/model/TransactionOptions.js.map +1 -1
- package/lib/cjs/api/model/TypedDataOptions.js +2 -0
- package/lib/cjs/api/model/TypedDataOptions.js.map +7 -0
- package/lib/cjs/internal/DefaultSignerEth.js +1 -1
- package/lib/cjs/internal/DefaultSignerEth.js.map +3 -3
- package/lib/cjs/internal/DefaultSignerEth.test.js +1 -1
- package/lib/cjs/internal/DefaultSignerEth.test.js.map +3 -3
- package/lib/cjs/internal/address/di/addressModule.js +1 -1
- package/lib/cjs/internal/address/di/addressModule.js.map +3 -3
- package/lib/cjs/internal/address/di/addressModule.test.js +1 -1
- package/lib/cjs/internal/address/di/addressModule.test.js.map +2 -2
- package/lib/cjs/internal/address/use-case/GetAddressUseCase.js +1 -1
- package/lib/cjs/internal/address/use-case/GetAddressUseCase.js.map +2 -2
- package/lib/cjs/internal/address/use-case/GetAddressUseCase.test.js +1 -1
- package/lib/cjs/internal/address/use-case/GetAddressUseCase.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/EthAppBinder.js +1 -1
- package/lib/cjs/internal/app-binder/EthAppBinder.js.map +3 -3
- package/lib/cjs/internal/app-binder/EthAppBinder.test.js +1 -1
- package/lib/cjs/internal/app-binder/EthAppBinder.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js.map +7 -0
- package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js.map +7 -0
- package/lib/cjs/internal/app-binder/di/appBinderModule.js +1 -1
- package/lib/cjs/internal/app-binder/di/appBinderModule.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/BuildBaseContexts.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildBaseContexts.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildBaseContexts.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildBaseContexts.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ParseTransactionTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/ParseTransactionTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ParseTransactionTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/ParseTransactionTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ProvideContextTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/ProvideContextTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ProvideContextTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/ProvideContextTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/SignTypedDataLegacyTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/SignTypedDataLegacyTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/SignTypedDataLegacyTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/SignTypedDataLegacyTask.test.js.map +7 -0
- package/lib/cjs/internal/di.js +1 -1
- package/lib/cjs/internal/di.js.map +3 -3
- package/lib/cjs/internal/eip7702/di/eip7702Module.js +2 -0
- package/lib/cjs/internal/eip7702/di/eip7702Module.js.map +7 -0
- package/lib/cjs/internal/eip7702/di/eip7702Module.test.js +2 -0
- package/lib/cjs/internal/eip7702/di/eip7702Module.test.js.map +7 -0
- package/lib/cjs/internal/eip7702/di/eip7702Types.js +2 -0
- package/lib/cjs/internal/eip7702/di/eip7702Types.js.map +7 -0
- package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js +2 -0
- package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js.map +7 -0
- package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js +2 -0
- package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js.map +7 -0
- package/lib/cjs/internal/message/di/messageModule.js +1 -1
- package/lib/cjs/internal/message/di/messageModule.js.map +3 -3
- package/lib/cjs/internal/message/di/messageModule.test.js +1 -1
- package/lib/cjs/internal/message/di/messageModule.test.js.map +2 -2
- package/lib/cjs/internal/message/use-case/SignMessageUseCase.js +1 -1
- package/lib/cjs/internal/message/use-case/SignMessageUseCase.js.map +3 -3
- package/lib/cjs/internal/message/use-case/SignMessageUseCase.test.js +1 -1
- package/lib/cjs/internal/message/use-case/SignMessageUseCase.test.js.map +2 -2
- package/lib/cjs/internal/safe/di/safeModule.js +2 -0
- package/lib/cjs/internal/safe/di/safeModule.js.map +7 -0
- package/lib/cjs/internal/safe/di/safeModule.test.js +2 -0
- package/lib/cjs/internal/safe/di/safeModule.test.js.map +7 -0
- package/lib/cjs/internal/safe/di/safeTypes.js +2 -0
- package/lib/cjs/internal/safe/di/safeTypes.js.map +7 -0
- package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.js +2 -0
- package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.js.map +7 -0
- package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.test.js +2 -0
- package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.test.js.map +7 -0
- package/lib/cjs/internal/shared/utils/ApplicationChecker.js +1 -1
- package/lib/cjs/internal/shared/utils/ApplicationChecker.js.map +3 -3
- package/lib/cjs/internal/shared/utils/ApplicationChecker.test.js +1 -1
- package/lib/cjs/internal/shared/utils/ApplicationChecker.test.js.map +2 -2
- package/lib/cjs/internal/transaction/di/transactionModule.js +1 -1
- package/lib/cjs/internal/transaction/di/transactionModule.js.map +3 -3
- package/lib/cjs/internal/transaction/di/transactionModule.test.js +1 -1
- package/lib/cjs/internal/transaction/di/transactionModule.test.js.map +2 -2
- package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.js +2 -0
- package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.js.map +7 -0
- package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.test.js +2 -0
- package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.test.js.map +7 -0
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.js +1 -1
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.js.map +3 -3
- package/lib/cjs/internal/transaction/service/parser/TransactionParserService.js +1 -1
- package/lib/cjs/internal/transaction/service/parser/TransactionParserService.js.map +3 -3
- package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
- package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js.map +3 -3
- package/lib/cjs/internal/typed-data/di/typedDataModule.js +1 -1
- package/lib/cjs/internal/typed-data/di/typedDataModule.js.map +3 -3
- package/lib/cjs/internal/typed-data/di/typedDataModule.test.js +1 -1
- package/lib/cjs/internal/typed-data/di/typedDataModule.test.js.map +2 -2
- package/lib/cjs/internal/typed-data/service/DefaultTypedDataParserService.js +1 -1
- package/lib/cjs/internal/typed-data/service/DefaultTypedDataParserService.js.map +2 -2
- package/lib/cjs/internal/typed-data/service/TypedDataParser.js +1 -1
- package/lib/cjs/internal/typed-data/service/TypedDataParser.js.map +3 -3
- package/lib/cjs/internal/typed-data/service/TypedDataParser.test.js +1 -1
- package/lib/cjs/internal/typed-data/service/TypedDataParser.test.js.map +2 -2
- package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.js +1 -1
- package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.js.map +3 -3
- package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.test.js +1 -1
- package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.test.js.map +2 -2
- package/lib/cjs/package.json +13 -14
- package/lib/esm/api/SignerEthBuilder.test.js +1 -1
- package/lib/esm/api/SignerEthBuilder.test.js.map +2 -2
- package/lib/esm/api/app-binder/SignDelegationAuthorizationTypes.js +1 -0
- package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
- package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
- package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
- package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js.map +2 -2
- package/lib/esm/api/app-binder/VerifySafeAddressDeviceActionTypes.js +2 -0
- package/lib/esm/api/app-binder/VerifySafeAddressDeviceActionTypes.js.map +7 -0
- package/lib/esm/api/index.js +1 -1
- package/lib/esm/api/index.js.map +2 -2
- package/lib/esm/api/model/ClearSigningType.js +2 -0
- package/lib/esm/api/model/ClearSigningType.js.map +7 -0
- package/lib/esm/api/model/MessageOptions.js +1 -0
- package/lib/esm/api/model/MessageOptions.js.map +7 -0
- package/lib/esm/api/model/SafeAddressOptions.js +1 -0
- package/lib/esm/api/model/SafeAddressOptions.js.map +7 -0
- package/lib/esm/api/model/TypedDataOptions.js +1 -0
- package/lib/esm/api/model/TypedDataOptions.js.map +7 -0
- package/lib/esm/internal/DefaultSignerEth.js +1 -1
- package/lib/esm/internal/DefaultSignerEth.js.map +3 -3
- package/lib/esm/internal/DefaultSignerEth.test.js +1 -1
- package/lib/esm/internal/DefaultSignerEth.test.js.map +3 -3
- package/lib/esm/internal/address/di/addressModule.js +1 -1
- package/lib/esm/internal/address/di/addressModule.js.map +3 -3
- package/lib/esm/internal/address/di/addressModule.test.js +1 -1
- package/lib/esm/internal/address/di/addressModule.test.js.map +2 -2
- package/lib/esm/internal/address/use-case/GetAddressUseCase.js +1 -1
- package/lib/esm/internal/address/use-case/GetAddressUseCase.js.map +2 -2
- package/lib/esm/internal/address/use-case/GetAddressUseCase.test.js +1 -1
- package/lib/esm/internal/address/use-case/GetAddressUseCase.test.js.map +2 -2
- package/lib/esm/internal/app-binder/EthAppBinder.js +1 -1
- package/lib/esm/internal/app-binder/EthAppBinder.js.map +3 -3
- package/lib/esm/internal/app-binder/EthAppBinder.test.js +1 -1
- package/lib/esm/internal/app-binder/EthAppBinder.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js +2 -0
- package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js.map +7 -0
- package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js +2 -0
- package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js.map +7 -0
- package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
- package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js +2 -0
- package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js.map +7 -0
- package/lib/esm/internal/app-binder/di/appBinderModule.js +1 -1
- package/lib/esm/internal/app-binder/di/appBinderModule.js.map +3 -3
- package/lib/esm/internal/app-binder/task/BuildBaseContexts.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildBaseContexts.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildBaseContexts.test.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildBaseContexts.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/BuildFullContextsTask.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildFullContextsTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildFullContextsTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildFullContextsTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js +1 -1
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.js +2 -0
- package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ParseTransactionTask.js +2 -0
- package/lib/esm/internal/app-binder/task/ParseTransactionTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ParseTransactionTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/ParseTransactionTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ProvideContextTask.js +2 -0
- package/lib/esm/internal/app-binder/task/ProvideContextTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ProvideContextTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/ProvideContextTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.js +2 -0
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.js +1 -1
- package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.js +2 -0
- package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/SendSignTransactionTask.js +1 -1
- package/lib/esm/internal/app-binder/task/SendSignTransactionTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/SendSignTransactionTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/SendSignTransactionTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/SignTypedDataLegacyTask.js +2 -0
- package/lib/esm/internal/app-binder/task/SignTypedDataLegacyTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/SignTypedDataLegacyTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/SignTypedDataLegacyTask.test.js.map +7 -0
- package/lib/esm/internal/di.js +1 -1
- package/lib/esm/internal/di.js.map +3 -3
- package/lib/esm/internal/eip7702/di/eip7702Module.js +2 -0
- package/lib/esm/internal/eip7702/di/eip7702Module.js.map +7 -0
- package/lib/esm/internal/eip7702/di/eip7702Module.test.js +2 -0
- package/lib/esm/internal/eip7702/di/eip7702Module.test.js.map +7 -0
- package/lib/esm/internal/eip7702/di/eip7702Types.js +2 -0
- package/lib/esm/internal/eip7702/di/eip7702Types.js.map +7 -0
- package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js +2 -0
- package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js.map +7 -0
- package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js +2 -0
- package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js.map +7 -0
- package/lib/esm/internal/message/di/messageModule.js +1 -1
- package/lib/esm/internal/message/di/messageModule.js.map +3 -3
- package/lib/esm/internal/message/di/messageModule.test.js +1 -1
- package/lib/esm/internal/message/di/messageModule.test.js.map +2 -2
- package/lib/esm/internal/message/use-case/SignMessageUseCase.js +1 -1
- package/lib/esm/internal/message/use-case/SignMessageUseCase.js.map +3 -3
- package/lib/esm/internal/message/use-case/SignMessageUseCase.test.js +1 -1
- package/lib/esm/internal/message/use-case/SignMessageUseCase.test.js.map +2 -2
- package/lib/esm/internal/safe/di/safeModule.js +2 -0
- package/lib/esm/internal/safe/di/safeModule.js.map +7 -0
- package/lib/esm/internal/safe/di/safeModule.test.js +2 -0
- package/lib/esm/internal/safe/di/safeModule.test.js.map +7 -0
- package/lib/esm/internal/safe/di/safeTypes.js +2 -0
- package/lib/esm/internal/safe/di/safeTypes.js.map +7 -0
- package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.js +2 -0
- package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.js.map +7 -0
- package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.test.js +2 -0
- package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.test.js.map +7 -0
- package/lib/esm/internal/shared/utils/ApplicationChecker.js +1 -1
- package/lib/esm/internal/shared/utils/ApplicationChecker.js.map +3 -3
- package/lib/esm/internal/shared/utils/ApplicationChecker.test.js +1 -1
- package/lib/esm/internal/shared/utils/ApplicationChecker.test.js.map +2 -2
- package/lib/esm/internal/transaction/di/transactionModule.js +1 -1
- package/lib/esm/internal/transaction/di/transactionModule.js.map +3 -3
- package/lib/esm/internal/transaction/di/transactionModule.test.js +1 -1
- package/lib/esm/internal/transaction/di/transactionModule.test.js.map +2 -2
- package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.js +2 -0
- package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.js.map +7 -0
- package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.test.js +2 -0
- package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.test.js.map +7 -0
- package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.js +0 -1
- package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.js.map +4 -4
- package/lib/esm/internal/transaction/service/parser/TransactionParserService.js +1 -1
- package/lib/esm/internal/transaction/service/parser/TransactionParserService.js.map +3 -3
- package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
- package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js.map +3 -3
- package/lib/esm/internal/typed-data/di/typedDataModule.js +1 -1
- package/lib/esm/internal/typed-data/di/typedDataModule.js.map +3 -3
- package/lib/esm/internal/typed-data/di/typedDataModule.test.js +1 -1
- package/lib/esm/internal/typed-data/di/typedDataModule.test.js.map +2 -2
- package/lib/esm/internal/typed-data/service/DefaultTypedDataParserService.js +1 -1
- package/lib/esm/internal/typed-data/service/DefaultTypedDataParserService.js.map +2 -2
- package/lib/esm/internal/typed-data/service/TypedDataParser.js +1 -1
- package/lib/esm/internal/typed-data/service/TypedDataParser.js.map +3 -3
- package/lib/esm/internal/typed-data/service/TypedDataParser.test.js +1 -1
- package/lib/esm/internal/typed-data/service/TypedDataParser.test.js.map +2 -2
- package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.js +1 -1
- package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.js.map +3 -3
- package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.test.js +1 -1
- package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.test.js.map +2 -2
- package/lib/esm/package.json +13 -14
- package/lib/types/api/SignerEth.d.ts +11 -4
- package/lib/types/api/SignerEth.d.ts.map +1 -1
- package/lib/types/api/app-binder/SignDelegationAuthorizationTypes.d.ts +19 -0
- package/lib/types/api/app-binder/SignDelegationAuthorizationTypes.d.ts.map +1 -0
- package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +17 -12
- package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts +11 -1
- package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/app-binder/VerifySafeAddressDeviceActionTypes.d.ts +30 -0
- package/lib/types/api/app-binder/VerifySafeAddressDeviceActionTypes.d.ts.map +1 -0
- package/lib/types/api/index.d.ts +5 -4
- package/lib/types/api/index.d.ts.map +1 -1
- package/lib/types/api/model/AddressOptions.d.ts +1 -0
- package/lib/types/api/model/AddressOptions.d.ts.map +1 -1
- package/lib/types/api/model/ClearSigningType.d.ts +5 -0
- package/lib/types/api/model/ClearSigningType.d.ts.map +1 -0
- package/lib/types/api/model/MessageOptions.d.ts +4 -0
- package/lib/types/api/model/MessageOptions.d.ts.map +1 -0
- package/lib/types/api/model/SafeAddressOptions.d.ts +5 -0
- package/lib/types/api/model/SafeAddressOptions.d.ts.map +1 -0
- package/lib/types/api/model/TransactionOptions.d.ts +1 -0
- package/lib/types/api/model/TransactionOptions.d.ts.map +1 -1
- package/lib/types/api/model/TypedDataOptions.d.ts +4 -0
- package/lib/types/api/model/TypedDataOptions.d.ts.map +1 -0
- package/lib/types/internal/DefaultSignerEth.d.ts +10 -3
- package/lib/types/internal/DefaultSignerEth.d.ts.map +1 -1
- package/lib/types/internal/address/di/addressModule.d.ts.map +1 -1
- package/lib/types/internal/address/use-case/GetAddressUseCase.d.ts.map +1 -1
- package/lib/types/internal/app-binder/EthAppBinder.d.ts +19 -3
- package/lib/types/internal/app-binder/EthAppBinder.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.d.ts +28 -0
- package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.d.ts +20 -0
- package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.d.ts +34 -0
- package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts +29 -1
- package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.d.ts +29 -0
- package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/utils/ethAppErrors.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts +15 -36
- package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts +5 -2
- package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.d.ts +20 -0
- package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.d.ts.map +1 -0
- package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.d.ts +2 -0
- package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.d.ts +6 -0
- package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.d.ts.map +1 -0
- package/lib/types/internal/app-binder/di/appBinderModule.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/BuildBaseContexts.d.ts +51 -0
- package/lib/types/internal/app-binder/task/BuildBaseContexts.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildBaseContexts.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/BuildBaseContexts.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts +8 -1
- package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/BuildFullContextsTask.d.ts +39 -0
- package/lib/types/internal/app-binder/task/BuildFullContextsTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildFullContextsTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/BuildFullContextsTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.d.ts +19 -0
- package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildSubcontextsTask.d.ts +28 -0
- package/lib/types/internal/app-binder/task/BuildSubcontextsTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildSubcontextsTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/BuildSubcontextsTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts +2 -3
- package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.d.ts +21 -0
- package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ParseTransactionTask.d.ts +17 -0
- package/lib/types/internal/app-binder/task/ParseTransactionTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ParseTransactionTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/ParseTransactionTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ProvideContextTask.d.ts +22 -0
- package/lib/types/internal/app-binder/task/ProvideContextTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ProvideContextTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/ProvideContextTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts +14 -5
- package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.d.ts +36 -0
- package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/SendPayloadInChunksTask.d.ts +2 -2
- package/lib/types/internal/app-binder/task/SendPayloadInChunksTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.d.ts +18 -0
- package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/SendSignTransactionTask.d.ts +2 -1
- package/lib/types/internal/app-binder/task/SendSignTransactionTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/SignTypedDataLegacyTask.d.ts +12 -0
- package/lib/types/internal/app-binder/task/SignTypedDataLegacyTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/SignTypedDataLegacyTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/SignTypedDataLegacyTask.test.d.ts.map +1 -0
- package/lib/types/internal/di.d.ts.map +1 -1
- package/lib/types/internal/eip7702/di/eip7702Module.d.ts +3 -0
- package/lib/types/internal/eip7702/di/eip7702Module.d.ts.map +1 -0
- package/lib/types/internal/eip7702/di/eip7702Module.test.d.ts +2 -0
- package/lib/types/internal/eip7702/di/eip7702Module.test.d.ts.map +1 -0
- package/lib/types/internal/eip7702/di/eip7702Types.d.ts +4 -0
- package/lib/types/internal/eip7702/di/eip7702Types.d.ts.map +1 -0
- package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.d.ts +8 -0
- package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.d.ts.map +1 -0
- package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.d.ts +2 -0
- package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.d.ts.map +1 -0
- package/lib/types/internal/message/di/messageModule.d.ts.map +1 -1
- package/lib/types/internal/message/use-case/SignMessageUseCase.d.ts +2 -1
- package/lib/types/internal/message/use-case/SignMessageUseCase.d.ts.map +1 -1
- package/lib/types/internal/safe/di/safeModule.d.ts +3 -0
- package/lib/types/internal/safe/di/safeModule.d.ts.map +1 -0
- package/lib/types/internal/safe/di/safeModule.test.d.ts +2 -0
- package/lib/types/internal/safe/di/safeModule.test.d.ts.map +1 -0
- package/lib/types/internal/safe/di/safeTypes.d.ts +4 -0
- package/lib/types/internal/safe/di/safeTypes.d.ts.map +1 -0
- package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.d.ts +9 -0
- package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.d.ts.map +1 -0
- package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.test.d.ts +2 -0
- package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.test.d.ts.map +1 -0
- package/lib/types/internal/shared/utils/ApplicationChecker.d.ts.map +1 -1
- package/lib/types/internal/transaction/di/transactionModule.d.ts.map +1 -1
- package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.d.ts +8 -0
- package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.d.ts.map +1 -0
- package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.test.d.ts +2 -0
- package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.test.d.ts.map +1 -0
- package/lib/types/internal/transaction/service/mapper/TransactionMapperService.d.ts +4 -7
- package/lib/types/internal/transaction/service/mapper/TransactionMapperService.d.ts.map +1 -1
- package/lib/types/internal/transaction/service/parser/TransactionParserService.d.ts +2 -2
- package/lib/types/internal/transaction/service/parser/TransactionParserService.d.ts.map +1 -1
- package/lib/types/internal/typed-data/di/typedDataModule.d.ts.map +1 -1
- package/lib/types/internal/typed-data/service/TypedDataParser.d.ts +4 -2
- package/lib/types/internal/typed-data/service/TypedDataParser.d.ts.map +1 -1
- package/lib/types/internal/typed-data/use-case/SignTypedDataUseCase.d.ts +2 -1
- package/lib/types/internal/typed-data/use-case/SignTypedDataUseCase.d.ts.map +1 -1
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +19 -20
- package/lib/cjs/internal/app-binder/constant/plugins.js +0 -2
- package/lib/cjs/internal/app-binder/constant/plugins.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js +0 -2
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js +0 -2
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js.map +0 -7
- package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.js +0 -2
- package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.js.map +0 -7
- package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js +0 -2
- package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js.map +0 -7
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapper.js +0 -2
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapper.js.map +0 -7
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.test.js +0 -2
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.test.js.map +0 -7
- package/lib/esm/internal/app-binder/constant/plugins.js +0 -2
- package/lib/esm/internal/app-binder/constant/plugins.js.map +0 -7
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js +0 -2
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js.map +0 -7
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js +0 -2
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js.map +0 -7
- package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.js +0 -2
- package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.js.map +0 -7
- package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js +0 -2
- package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js.map +0 -7
- package/lib/esm/internal/transaction/service/mapper/TransactionMapper.js +0 -1
- package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.test.js +0 -2
- package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.test.js.map +0 -7
- package/lib/types/internal/app-binder/constant/plugins.d.ts +0 -2
- package/lib/types/internal/app-binder/constant/plugins.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts +0 -32
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.test.d.ts +0 -2
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.test.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts +0 -38
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.test.d.ts +0 -2
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.test.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.d.ts +0 -80
- package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.d.ts +0 -2
- package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.d.ts +0 -28
- package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.test.d.ts +0 -2
- package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.test.d.ts.map +0 -1
- package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.d.ts +0 -7
- package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.d.ts.map +0 -1
- package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.test.d.ts +0 -2
- package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.test.d.ts.map +0 -1
- package/lib/types/internal/transaction/service/mapper/TransactionMapper.d.ts +0 -6
- package/lib/types/internal/transaction/service/mapper/TransactionMapper.d.ts.map +0 -1
- package/lib/types/internal/transaction/service/mapper/TransactionMapperService.test.d.ts +0 -2
- package/lib/types/internal/transaction/service/mapper/TransactionMapperService.test.d.ts.map +0 -1
- /package/lib/esm/{internal/transaction/service/mapper/TransactionMapper.js.map → api/app-binder/SignDelegationAuthorizationTypes.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/internal/transaction/service/parser/TransactionParserService.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { ContainerPath, type DataPathElement } from \"@ledgerhq/context-module\";\nimport {\n bufferToHexaString,\n ByteArrayBuilder,\n hexaStringToBuffer,\n} from \"@ledgerhq/device-management-kit\";\nimport { Transaction } from \"ethers\";\n\nimport { TransactionParserService } from \"./TransactionParserService\";\n\ndescribe(\"TransactionParserService\", () => {\n const parser = new TransactionParserService();\n\n const TO = hexaStringToBuffer(\"0x3f32cF0B1DF94157EE1c3876c49BE3732C92a98f\")!;\n const VALUE = 81818275935222000n;\n const VALUE_BIN = new ByteArrayBuilder()\n .add256BitUIntToData(81818275935222000n)\n .build();\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n describe(\"Container paths\", () => {\n it(\"should extract TO of the container\", () => {\n // GIVEN\n const transaction = hexaStringToBuffer(\n Transaction.from({\n to: bufferToHexaString(TO),\n value: VALUE,\n data: \"0x\",\n }).unsignedSerialized,\n )!;\n\n // WHEN\n const value = parser.extractValue(transaction, ContainerPath.TO);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([TO]);\n });\n\n it(\"should extract VALUE of the container\", () => {\n // GIVEN\n const transaction = hexaStringToBuffer(\n Transaction.from({\n to: bufferToHexaString(TO),\n value: VALUE,\n data: \"0x\",\n }).unsignedSerialized,\n )!;\n\n // WHEN\n const value = parser.extractValue(transaction, ContainerPath.VALUE);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([VALUE_BIN]);\n });\n\n it(\"Unavailable container fields\", () => {\n // GIVEN\n const transaction = hexaStringToBuffer(\n Transaction.from({\n data: \"0x\",\n signature: {\n r: \"0x73b969418389828a6328fdb96e747296226832894b8bb46d60f231a9960ec3b5\",\n s: \"0x4806aaccc52354f4a42ef9efe0d89dd8cf95210829443ad7f4a9017d6b02de07\",\n v: 1,\n },\n }).unsignedSerialized,\n )!;\n\n // WHEN\n const from = parser.extractValue(transaction, ContainerPath.FROM);\n const to = parser.extractValue(transaction, ContainerPath.TO);\n\n // THEN\n expect(from.isRight()).toStrictEqual(false);\n expect(to.isRight()).toStrictEqual(false);\n });\n\n it(\"invalid transaction format\", () => {\n // GIVEN\n const transaction = hexaStringToBuffer(\"0xdeadbeef\")!;\n\n // WHEN\n const from = parser.extractValue(transaction, ContainerPath.FROM);\n\n // THEN\n expect(from.isRight()).toStrictEqual(false);\n });\n });\n\n describe(\"Data paths in a calldata with static elements\", () => {\n // Example from abi specification:\n // https://docs.soliditylang.org/en/latest/abi-spec.html\n //\n // function baz(uint32 x, bool y)\n // parameters: x = 69\n // y = true\n // calldata:\n // 0xcdcd77c0\n // [0] 0x0000000000000000000000000000000000000000000000000000000000000045\n // [1] 0x0000000000000000000000000000000000000000000000000000000000000001\n const TX = hexaStringToBuffer(\n Transaction.from({\n to: bufferToHexaString(TO),\n value: VALUE,\n data: \"0xcdcd77c000000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000000000000000000000000000000000000001\",\n }).unsignedSerialized,\n )!;\n\n it(\"Extract the first element\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000045\",\n )!,\n ]);\n });\n\n it(\"Extract the second element\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n )!,\n ]);\n });\n\n it(\"Slice the static leaf\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n {\n type: \"SLICE\",\n start: -4,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\"0x00000045\")!,\n ]);\n });\n\n it(\"Out of bounds\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 2,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n });\n\n describe(\"Data paths in a calldata with dynamic elements\", () => {\n // Example from abi specification:\n // https://docs.soliditylang.org/en/latest/abi-spec.html\n //\n // function g(uint256[][] x, string[] x)\n // parameters: x = [[1, 2], [3]]\n // y = [\"one\", \"two\", \"three\"]\n // calldata:\n // 0x2289b18c\n // [0] 0x0000000000000000000000000000000000000000000000000000000000000040: offset of x\n // [1] 0x0000000000000000000000000000000000000000000000000000000000000140: offset of y\n // [2] 0x0000000000000000000000000000000000000000000000000000000000000002: length of x\n // [3] 0x0000000000000000000000000000000000000000000000000000000000000040: offset of x[0]\n // [4] 0x00000000000000000000000000000000000000000000000000000000000000a0: offset of x[1]\n // [5] 0x0000000000000000000000000000000000000000000000000000000000000002: length of x[0]\n // [6] 0x0000000000000000000000000000000000000000000000000000000000000001: value of x[0][0] = 1\n // [7] 0x0000000000000000000000000000000000000000000000000000000000000002: value of x[0][1] = 2\n // [8] 0x0000000000000000000000000000000000000000000000000000000000000001: length of x[1]\n // [9] 0x0000000000000000000000000000000000000000000000000000000000000003: value of x[1][0] = 3\n // [10] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y\n // [11] 0x0000000000000000000000000000000000000000000000000000000000000060: offset of y[0]\n // [12] 0x00000000000000000000000000000000000000000000000000000000000000a0: offset of y[1]\n // [13] 0x00000000000000000000000000000000000000000000000000000000000000e0: offset of y[2]\n // [14] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y[0]\n // [15] 0x6f6e650000000000000000000000000000000000000000000000000000000000: value of y[0] = \"one\"\n // [16] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y[1]\n // [17] 0x74776f0000000000000000000000000000000000000000000000000000000000: value of y[1] = \"two\"\n // [18] 0x0000000000000000000000000000000000000000000000000000000000000005: length of y[2]\n // [19] 0x7468726565000000000000000000000000000000000000000000000000000000: value of y[2] = \"three\"\n const TX = hexaStringToBuffer(\n Transaction.from({\n to: bufferToHexaString(TO),\n value: VALUE,\n data: \"0x2289b18c000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000036f6e650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000374776f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057468726565000000000000000000000000000000000000000000000000000000\",\n }).unsignedSerialized,\n )!;\n\n it(\"Extract all the elements of x, concatenated together\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000003\",\n )!,\n ]);\n });\n\n it(\"Extract all the elements of x[0]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 0,\n end: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n )!,\n ]);\n });\n\n it(\"Extract all the elements of x[0:-1][-1:]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 0,\n end: -1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: -1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n )!,\n ]);\n });\n\n it(\"Array out of bounds\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 0,\n end: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 2,\n end: 3,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Extract all the elements of x[1]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\"0x6f6e65\")!,\n hexaStringToBuffer(\"0x74776f\")!,\n hexaStringToBuffer(\"0x7468726565\")!,\n ]);\n });\n\n it(\"Extract all the elements of x[1][:2]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n end: 2,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\"0x6f6e65\")!,\n hexaStringToBuffer(\"0x74776f\")!,\n ]);\n });\n\n it(\"Slice the dynamic leaf with [1:-2]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 2,\n end: 3,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n {\n type: \"SLICE\",\n start: 1,\n end: -2,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\"0x6872\")!,\n ]);\n });\n\n it(\"Slice the dynamic leaf with [-1:]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 2,\n end: 3,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n {\n type: \"SLICE\",\n start: -1,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([hexaStringToBuffer(\"0x65\")!]);\n });\n\n it(\"Slice the dynamic leaf with [:1]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 2,\n end: 3,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n {\n type: \"SLICE\",\n end: 1,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([hexaStringToBuffer(\"0x74\")!]);\n });\n\n it(\"Error no leaf\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Error slice not at the end\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"SLICE\",\n start: 0,\n end: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Error empty slice\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n {\n type: \"SLICE\",\n start: 0,\n end: 0,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n });\n\n describe(\"Array of tuples, with bigger itemSize\", () => {\n // Example constructed with an array of tuples just for the tests\n //\n // function baz((uint32, uint32) myTuple[])\n // parameters: myTuple = [ (1, 2), (3, 4), (5, 6) ]\n // calldata:\n // 0xcdcd77c0\n // [0] 0x0000000000000000000000000000000000000000000000000000000000000020\n // [1] 0x0000000000000000000000000000000000000000000000000000000000000003\n // [2] 0x0000000000000000000000000000000000000000000000000000000000000001\n // [3] 0x0000000000000000000000000000000000000000000000000000000000000002\n // [4] 0x0000000000000000000000000000000000000000000000000000000000000003\n // [5] 0x0000000000000000000000000000000000000000000000000000000000000004\n // [6] 0x0000000000000000000000000000000000000000000000000000000000000005\n // [7] 0x0000000000000000000000000000000000000000000000000000000000000006\n const TX = hexaStringToBuffer(\n Transaction.from({\n to: bufferToHexaString(TO),\n value: VALUE,\n data: \"0xcdcd77c000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000006\",\n }).unsignedSerialized,\n )!;\n\n it(\"Extract the first tuple element of all array elements\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 2,\n },\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000003\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000005\",\n )!,\n ]);\n });\n\n it(\"Extract the second tuple element of all array elements\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 2,\n },\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000004\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000006\",\n )!,\n ]);\n });\n });\n\n describe(\"Malformed calldata\", () => {\n // Example constructed with invalid data just for the tests\n //\n // calldata:\n // 0x2289b18c\n // [0] 0x0000000000000000000000000000000000000000000000000000000000000080\n // [1] 0xf000000000000000000000000000000000000000000000000000000000000140\n // [2] 0xf000000000000000000000000000000000000000000000000000000000000002\n const TX = hexaStringToBuffer(\n Transaction.from({\n to: bufferToHexaString(TO),\n value: VALUE,\n data: \"0x2289b18c0000000000000000000000000000000000000000000000000000000000000080f000000000000000000000000000000000000000000000000000000000000140f000000000000000000000000000000000000000000000000000000000000002\",\n }).unsignedSerialized,\n )!;\n\n it(\"Dynamic leaf length overflow\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Calldata smaller than dynamic leaf\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Array length overflow\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Calldata smaller than array length\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Ref out of bounds\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,
|
|
6
|
-
"names": ["ContainerPath", "bufferToHexaString", "ByteArrayBuilder", "hexaStringToBuffer", "
|
|
4
|
+
"sourcesContent": ["import {\n ContainerPath,\n type DataPathElement,\n type TransactionSubset,\n} from \"@ledgerhq/context-module\";\nimport {\n bufferToHexaString,\n ByteArrayBuilder,\n hexaStringToBuffer,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { TransactionParserService } from \"./TransactionParserService\";\n\ndescribe(\"TransactionParserService\", () => {\n const parser = new TransactionParserService();\n\n const TO = hexaStringToBuffer(\"0x3f32cF0B1DF94157EE1c3876c49BE3732C92a98f\")!;\n const VALUE = 81818275935222000n;\n const VALUE_BIN = new ByteArrayBuilder()\n .add256BitUIntToData(81818275935222000n)\n .build();\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n describe(\"Container paths\", () => {\n it(\"should extract TO of the container\", () => {\n // GIVEN\n const subset = {\n chainId: 1,\n data: \"0x\",\n selector: \"0x\",\n to: bufferToHexaString(TO),\n value: VALUE,\n };\n\n // WHEN\n const value = parser.extractValue(subset, ContainerPath.TO);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([TO]);\n });\n\n it(\"should extract VALUE of the container\", () => {\n // GIVEN\n\n const subset = {\n chainId: 1,\n data: \"0x\",\n selector: \"0x\",\n to: bufferToHexaString(TO),\n value: VALUE,\n };\n\n // WHEN\n const value = parser.extractValue(subset, ContainerPath.VALUE);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([VALUE_BIN]);\n });\n\n it(\"Unavailable container fields\", () => {\n // GIVEN\n const subset = {\n chainId: 1,\n data: \"0x\",\n selector: \"0x\",\n to: undefined,\n from: undefined,\n value: VALUE,\n };\n\n // WHEN\n const from = parser.extractValue(subset, ContainerPath.FROM);\n const to = parser.extractValue(subset, ContainerPath.TO);\n\n // THEN\n expect(from.isRight()).toStrictEqual(false);\n expect(to.isRight()).toStrictEqual(false);\n });\n\n it(\"invalid transaction format\", () => {\n // GIVEN\n const transaction = hexaStringToBuffer(\n \"0xdeadbeef\",\n ) as unknown as TransactionSubset;\n\n // WHEN\n const from = parser.extractValue(transaction, ContainerPath.FROM);\n\n // THEN\n expect(from.isRight()).toStrictEqual(false);\n });\n });\n\n describe(\"Data paths in a calldata with static elements\", () => {\n // Example from abi specification:\n // https://docs.soliditylang.org/en/latest/abi-spec.html\n //\n // function baz(uint32 x, bool y)\n // parameters: x = 69\n // y = true\n // calldata:\n // 0xcdcd77c0\n // [0] 0x0000000000000000000000000000000000000000000000000000000000000045\n // [1] 0x0000000000000000000000000000000000000000000000000000000000000001\n const subset = {\n chainId: 1,\n data: \"0xcdcd77c000000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000000000000000000000000000000000000001\",\n selector: \"0xcdcd77c\",\n to: bufferToHexaString(TO),\n value: VALUE,\n };\n\n it(\"Extract the first element\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000045\",\n )!,\n ]);\n });\n\n it(\"Extract the second element\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n )!,\n ]);\n });\n\n it(\"Slice the static leaf\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n {\n type: \"SLICE\",\n start: -4,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\"0x00000045\")!,\n ]);\n });\n\n it(\"Out of bounds\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 2,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n });\n\n describe(\"Data paths in a calldata with dynamic elements\", () => {\n // Example from abi specification:\n // https://docs.soliditylang.org/en/latest/abi-spec.html\n //\n // function g(uint256[][] x, string[] x)\n // parameters: x = [[1, 2], [3]]\n // y = [\"one\", \"two\", \"three\"]\n // calldata:\n // 0x2289b18c\n // [0] 0x0000000000000000000000000000000000000000000000000000000000000040: offset of x\n // [1] 0x0000000000000000000000000000000000000000000000000000000000000140: offset of y\n // [2] 0x0000000000000000000000000000000000000000000000000000000000000002: length of x\n // [3] 0x0000000000000000000000000000000000000000000000000000000000000040: offset of x[0]\n // [4] 0x00000000000000000000000000000000000000000000000000000000000000a0: offset of x[1]\n // [5] 0x0000000000000000000000000000000000000000000000000000000000000002: length of x[0]\n // [6] 0x0000000000000000000000000000000000000000000000000000000000000001: value of x[0][0] = 1\n // [7] 0x0000000000000000000000000000000000000000000000000000000000000002: value of x[0][1] = 2\n // [8] 0x0000000000000000000000000000000000000000000000000000000000000001: length of x[1]\n // [9] 0x0000000000000000000000000000000000000000000000000000000000000003: value of x[1][0] = 3\n // [10] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y\n // [11] 0x0000000000000000000000000000000000000000000000000000000000000060: offset of y[0]\n // [12] 0x00000000000000000000000000000000000000000000000000000000000000a0: offset of y[1]\n // [13] 0x00000000000000000000000000000000000000000000000000000000000000e0: offset of y[2]\n // [14] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y[0]\n // [15] 0x6f6e650000000000000000000000000000000000000000000000000000000000: value of y[0] = \"one\"\n // [16] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y[1]\n // [17] 0x74776f0000000000000000000000000000000000000000000000000000000000: value of y[1] = \"two\"\n // [18] 0x0000000000000000000000000000000000000000000000000000000000000005: length of y[2]\n // [19] 0x7468726565000000000000000000000000000000000000000000000000000000: value of y[2] = \"three\"\n const subset = {\n to: bufferToHexaString(TO),\n value: VALUE,\n chainId: 1,\n data: \"0x2289b18c000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000036f6e650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000374776f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057468726565000000000000000000000000000000000000000000000000000000\",\n selector: \"0x2289b18c\",\n };\n it(\"Extract all the elements of x, concatenated together\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000003\",\n )!,\n ]);\n });\n\n it(\"Extract all the elements of x[0]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 0,\n end: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n )!,\n ]);\n });\n\n it(\"Extract all the elements of x[0:-1][-1:]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 0,\n end: -1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: -1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n )!,\n ]);\n });\n\n it(\"Array out of bounds\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 0,\n end: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 2,\n end: 3,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Extract all the elements of x[1]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\"0x6f6e65\")!,\n hexaStringToBuffer(\"0x74776f\")!,\n hexaStringToBuffer(\"0x7468726565\")!,\n ]);\n });\n\n it(\"Extract all the elements of x[1][:2]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n end: 2,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\"0x6f6e65\")!,\n hexaStringToBuffer(\"0x74776f\")!,\n ]);\n });\n\n it(\"Slice the dynamic leaf with [1:-2]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 2,\n end: 3,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n {\n type: \"SLICE\",\n start: 1,\n end: -2,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\"0x6872\")!,\n ]);\n });\n\n it(\"Slice the dynamic leaf with [-1:]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 2,\n end: 3,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n {\n type: \"SLICE\",\n start: -1,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([hexaStringToBuffer(\"0x65\")!]);\n });\n\n it(\"Slice the dynamic leaf with [:1]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 2,\n end: 3,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n {\n type: \"SLICE\",\n end: 1,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([hexaStringToBuffer(\"0x74\")!]);\n });\n\n it(\"Error no leaf\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Error slice not at the end\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"SLICE\",\n start: 0,\n end: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Error empty slice\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n {\n type: \"SLICE\",\n start: 0,\n end: 0,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n });\n\n describe(\"Array of tuples, with bigger itemSize\", () => {\n // Example constructed with an array of tuples just for the tests\n //\n // function baz((uint32, uint32) myTuple[])\n // parameters: myTuple = [ (1, 2), (3, 4), (5, 6) ]\n // calldata:\n // 0xcdcd77c0\n // [0] 0x0000000000000000000000000000000000000000000000000000000000000020\n // [1] 0x0000000000000000000000000000000000000000000000000000000000000003\n // [2] 0x0000000000000000000000000000000000000000000000000000000000000001\n // [3] 0x0000000000000000000000000000000000000000000000000000000000000002\n // [4] 0x0000000000000000000000000000000000000000000000000000000000000003\n // [5] 0x0000000000000000000000000000000000000000000000000000000000000004\n // [6] 0x0000000000000000000000000000000000000000000000000000000000000005\n // [7] 0x0000000000000000000000000000000000000000000000000000000000000006\n const subset = {\n chainId: 1,\n data: \"0xcdcd77c000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000006\",\n selector: \"0xcdcd77c\",\n to: bufferToHexaString(TO),\n value: VALUE,\n };\n\n it(\"Extract the first tuple element of all array elements\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 2,\n },\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000003\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000005\",\n )!,\n ]);\n });\n\n it(\"Extract the second tuple element of all array elements\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 2,\n },\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000004\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000006\",\n )!,\n ]);\n });\n });\n\n describe(\"Malformed calldata\", () => {\n // Example constructed with invalid data just for the tests\n //\n // calldata:\n // 0x2289b18c\n // [0] 0x0000000000000000000000000000000000000000000000000000000000000080\n // [1] 0xf000000000000000000000000000000000000000000000000000000000000140\n // [2] 0xf000000000000000000000000000000000000000000000000000000000000002\n const subset = {\n chainId: 1,\n data: \"0x2289b18c0000000000000000000000000000000000000000000000000000000000000080f000000000000000000000000000000000000000000000000000000000000140f000000000000000000000000000000000000000000000000000000000000002\",\n selector: \"0x2289b18c\",\n to: bufferToHexaString(TO),\n value: VALUE,\n };\n\n it(\"Dynamic leaf length overflow\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Calldata smaller than dynamic leaf\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Array length overflow\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Calldata smaller than array length\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Ref out of bounds\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Empty array\", () => {\n // GIVEN\n const path: DataPathElement[] = [];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "AAAA,OACE,iBAAAA,MAGK,2BACP,OACE,sBAAAC,EACA,oBAAAC,EACA,sBAAAC,MACK,kCAEP,OAAS,4BAAAC,MAAgC,6BAEzC,SAAS,2BAA4B,IAAM,CACzC,MAAMC,EAAS,IAAID,EAEbE,EAAKH,EAAmB,4CAA4C,EACpEI,EAAQ,mBACRC,EAAY,IAAIN,EAAiB,EACpC,oBAAoB,kBAAkB,EACtC,MAAM,EAET,WAAW,IAAM,CACf,GAAG,cAAc,CACnB,CAAC,EAED,SAAS,kBAAmB,IAAM,CAChC,GAAG,qCAAsC,IAAM,CAE7C,MAAMO,EAAS,CACb,QAAS,EACT,KAAM,KACN,SAAU,KACV,GAAIR,EAAmBK,CAAE,EACzB,MAAOC,CACT,EAGMG,EAAQL,EAAO,aAAaI,EAAQT,EAAc,EAAE,EAG1D,OAAOU,EAAM,QAAQ,CAAC,EAAE,cAAc,EAAI,EAC1C,OAAOA,EAAM,aAAa,CAAC,EAAE,cAAc,CAACJ,CAAE,CAAC,CACjD,CAAC,EAED,GAAG,wCAAyC,IAAM,CAGhD,MAAMG,EAAS,CACb,QAAS,EACT,KAAM,KACN,SAAU,KACV,GAAIR,EAAmBK,CAAE,EACzB,MAAOC,CACT,EAGMG,EAAQL,EAAO,aAAaI,EAAQT,EAAc,KAAK,EAG7D,OAAOU,EAAM,QAAQ,CAAC,EAAE,cAAc,EAAI,EAC1C,OAAOA,EAAM,aAAa,CAAC,EAAE,cAAc,CAACF,CAAS,CAAC,CACxD,CAAC,EAED,GAAG,+BAAgC,IAAM,CAEvC,MAAMC,EAAS,CACb,QAAS,EACT,KAAM,KACN,SAAU,KACV,GAAI,OACJ,KAAM,OACN,MAAOF,CACT,EAGMI,EAAON,EAAO,aAAaI,EAAQT,EAAc,IAAI,EACrDY,EAAKP,EAAO,aAAaI,EAAQT,EAAc,EAAE,EAGvD,OAAOW,EAAK,QAAQ,CAAC,EAAE,cAAc,EAAK,EAC1C,OAAOC,EAAG,QAAQ,CAAC,EAAE,cAAc,EAAK,CAC1C,CAAC,EAED,GAAG,6BAA8B,IAAM,CAErC,MAAMC,EAAcV,EAClB,YACF,EAGMQ,EAAON,EAAO,aAAaQ,EAAab,EAAc,IAAI,EAGhE,OAAOW,EAAK,QAAQ,CAAC,EAAE,cAAc,EAAK,CAC5C,CAAC,CACH,CAAC,EAED,SAAS,gDAAiD,IAAM,CAW9D,MAAMF,EAAS,CACb,QAAS,EACT,KAAM,6IACN,SAAU,YACV,GAAIR,EAAmBK,CAAE,EACzB,MAAOC,CACT,EAEA,GAAG,4BAA6B,IAAM,CAEpC,MAAMO,EAA0B,CAC9B,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,OACN,SAAU,aACZ,CACF,EAGMJ,EAAQL,EAAO,aAAaI,EAAQK,CAAI,EAG9C,OAAOJ,EAAM,QAAQ,CAAC,EAAE,cAAc,EAAI,EAC1C,OAAOA,EAAM,aAAa,CAAC,EAAE,cAAc,CACzCP,EACE,oEACF,CACF,CAAC,CACH,CAAC,EAED,GAAG,6BAA8B,IAAM,CAErC,MAAMW,EAA0B,CAC9B,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,OACN,SAAU,aACZ,CACF,EAGMJ,EAAQL,EAAO,aAAaI,EAAQK,CAAI,EAG9C,OAAOJ,EAAM,QAAQ,CAAC,EAAE,cAAc,EAAI,EAC1C,OAAOA,EAAM,aAAa,CAAC,EAAE,cAAc,CACzCP,EACE,oEACF,CACF,CAAC,CACH,CAAC,EAED,GAAG,wBAAyB,IAAM,CAEhC,MAAMW,EAA0B,CAC9B,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,OACN,SAAU,aACZ,EACA,CACE,KAAM,QACN,MAAO,EACT,CACF,EAGMJ,EAAQL,EAAO,aAAaI,EAAQK,CAAI,EAG9C,OAAOJ,EAAM,QAAQ,CAAC,EAAE,cAAc,EAAI,EAC1C,OAAOA,EAAM,aAAa,CAAC,EAAE,cAAc,CACzCP,EAAmB,YAAY,CACjC,CAAC,CACH,CAAC,EAED,GAAG,gBAAiB,IAAM,CAExB,MAAMW,EAA0B,CAC9B,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,OACN,SAAU,aACZ,CACF,EAEMJ,EAAQL,EAAO,aAAaI,EAAQK,CAAI,EAG9C,OAAOJ,EAAM,QAAQ,CAAC,EAAE,cAAc,EAAK,CAC7C,CAAC,CACH,CAAC,EAED,SAAS,iDAAkD,IAAM,CA6B/D,MAAMD,EAAS,CACb,GAAIR,EAAmBK,CAAE,EACzB,MAAOC,EACP,QAAS,EACT,KAAM,6wCACN,SAAU,YACZ,EACA,GAAG,uDAAwD,IAAM,CAE/D,MAAMO,EAA0B,CAC9B,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,KACR,EACA,CACE,KAAM,QACN,SAAU,CACZ,EACA,CACE,KAAM,KACR,EACA,CACE,KAAM,QACN,SAAU,CACZ,EACA,CACE,KAAM,OACN,SAAU,aACZ,CACF,EAGMJ,EAAQL,EAAO,aAAaI,EAAQK,CAAI,EAG9C,OAAOJ,EAAM,QAAQ,CAAC,EAAE,cAAc,EAAI,EAC1C,OAAOA,EAAM,aAAa,CAAC,EAAE,cAAc,CACzCP,EACE,oEACF,EACAA,EACE,oEACF,EACAA,EACE,oEACF,CACF,CAAC,CACH,CAAC,EAED,GAAG,mCAAoC,IAAM,CAE3C,MAAMW,EAA0B,CAC9B,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,KACR,EACA,CACE,KAAM,QACN,SAAU,EACV,MAAO,EACP,IAAK,CACP,EACA,CACE,KAAM,KACR,EACA,CACE,KAAM,QACN,SAAU,CACZ,EACA,CACE,KAAM,OACN,SAAU,aACZ,CACF,EAGMJ,EAAQL,EAAO,aAAaI,EAAQK,CAAI,EAG9C,OAAOJ,EAAM,QAAQ,CAAC,EAAE,cAAc,EAAI,EAC1C,OAAOA,EAAM,aAAa,CAAC,EAAE,cAAc,CACzCP,EACE,oEACF,EACAA,EACE,oEACF,CACF,CAAC,CACH,CAAC,EAED,GAAG,2CAA4C,IAAM,CAEnD,MAAMW,EAA0B,CAC9B,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,KACR,EACA,CACE,KAAM,QACN,SAAU,EACV,MAAO,EACP,IAAK,EACP,EACA,CACE,KAAM,KACR,EACA,CACE,KAAM,QACN,SAAU,EACV,MAAO,EACT,EACA,CACE,KAAM,OACN,SAAU,aACZ,CACF,EAGMJ,EAAQL,EAAO,aAAaI,EAAQK,CAAI,EAG9C,OAAOJ,EAAM,QAAQ,CAAC,EAAE,cAAc,EAAI,EAC1C,OAAOA,EAAM,aAAa,CAAC,EAAE,cAAc,CACzCP,EACE,oEACF,CACF,CAAC,CACH,CAAC,EAED,GAAG,sBAAuB,IAAM,CAE9B,MAAMW,EAA0B,CAC9B,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,KACR,EACA,CACE,KAAM,QACN,SAAU,EACV,MAAO,EACP,IAAK,CACP,EACA,CACE,KAAM,KACR,EACA,CACE,KAAM,QACN,SAAU,EACV,MAAO,EACP,IAAK,CACP,EACA,CACE,KAAM,OACN,SAAU,aACZ,CACF,EAGMJ,EAAQL,EAAO,aAAaI,EAAQK,CAAI,EAG9C,OAAOJ,EAAM,QAAQ,CAAC,EAAE,cAAc,EAAK,CAC7C,CAAC,EAED,GAAG,mCAAoC,IAAM,CAE3C,MAAMI,EAA0B,CAC9B,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,KACR,EACA,CACE,KAAM,QACN,SAAU,CACZ,EACA,CACE,KAAM,KACR,EACA,CACE,KAAM,OACN,SAAU,cACZ,CACF,EAGMJ,EAAQL,EAAO,aAAaI,EAAQK,CAAI,EAG9C,OAAOJ,EAAM,QAAQ,CAAC,EAAE,cAAc,EAAI,EAC1C,OAAOA,EAAM,aAAa,CAAC,EAAE,cAAc,CACzCP,EAAmB,UAAU,EAC7BA,EAAmB,UAAU,EAC7BA,EAAmB,cAAc,CACnC,CAAC,CACH,CAAC,EAED,GAAG,uCAAwC,IAAM,CAE/C,MAAMW,EAA0B,CAC9B,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,KACR,EACA,CACE,KAAM,QACN,SAAU,EACV,IAAK,CACP,EACA,CACE,KAAM,KACR,EACA,CACE,KAAM,OACN,SAAU,cACZ,CACF,EAGMJ,EAAQL,EAAO,aAAaI,EAAQK,CAAI,EAG9C,OAAOJ,EAAM,QAAQ,CAAC,EAAE,cAAc,EAAI,EAC1C,OAAOA,EAAM,aAAa,CAAC,EAAE,cAAc,CACzCP,EAAmB,UAAU,EAC7BA,EAAmB,UAAU,CAC/B,CAAC,CACH,CAAC,EAED,GAAG,qCAAsC,IAAM,CAE7C,MAAMW,EAA0B,CAC9B,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,KACR,EACA,CACE,KAAM,QACN,SAAU,EACV,MAAO,EACP,IAAK,CACP,EACA,CACE,KAAM,KACR,EACA,CACE,KAAM,OACN,SAAU,cACZ,EACA,CACE,KAAM,QACN,MAAO,EACP,IAAK,EACP,CACF,EAGMJ,EAAQL,EAAO,aAAaI,EAAQK,CAAI,EAG9C,OAAOJ,EAAM,QAAQ,CAAC,EAAE,cAAc,EAAI,EAC1C,OAAOA,EAAM,aAAa,CAAC,EAAE,cAAc,CACzCP,EAAmB,QAAQ,CAC7B,CAAC,CACH,CAAC,EAED,GAAG,oCAAqC,IAAM,CAE5C,MAAMW,EAA0B,CAC9B,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,KACR,EACA,CACE,KAAM,QACN,SAAU,EACV,MAAO,EACP,IAAK,CACP,EACA,CACE,KAAM,KACR,EACA,CACE,KAAM,OACN,SAAU,cACZ,EACA,CACE,KAAM,QACN,MAAO,EACT,CACF,EAGMJ,EAAQL,EAAO,aAAaI,EAAQK,CAAI,EAG9C,OAAOJ,EAAM,QAAQ,CAAC,EAAE,cAAc,EAAI,EAC1C,OAAOA,EAAM,aAAa,CAAC,EAAE,cAAc,CAACP,EAAmB,MAAM,CAAE,CAAC,CAC1E,CAAC,EAED,GAAG,mCAAoC,IAAM,CAE3C,MAAMW,EAA0B,CAC9B,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,KACR,EACA,CACE,KAAM,QACN,SAAU,EACV,MAAO,EACP,IAAK,CACP,EACA,CACE,KAAM,KACR,EACA,CACE,KAAM,OACN,SAAU,cACZ,EACA,CACE,KAAM,QACN,IAAK,CACP,CACF,EAGMJ,EAAQL,EAAO,aAAaI,EAAQK,CAAI,EAG9C,OAAOJ,EAAM,QAAQ,CAAC,EAAE,cAAc,EAAI,EAC1C,OAAOA,EAAM,aAAa,CAAC,EAAE,cAAc,CAACP,EAAmB,MAAM,CAAE,CAAC,CAC1E,CAAC,EAED,GAAG,gBAAiB,IAAM,CAExB,MAAMW,EAA0B,CAC9B,CACE,KAAM,QACN,OAAQ,CACV,CACF,EAGMJ,EAAQL,EAAO,aAAaI,EAAQK,CAAI,EAG9C,OAAOJ,EAAM,QAAQ,CAAC,EAAE,cAAc,EAAK,CAC7C,CAAC,EAED,GAAG,6BAA8B,IAAM,CAErC,MAAMI,EAA0B,CAC9B,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,QACN,MAAO,EACP,IAAK,CACP,EACA,CACE,KAAM,OACN,SAAU,aACZ,CACF,EAGMJ,EAAQL,EAAO,aAAaI,EAAQK,CAAI,EAG9C,OAAOJ,EAAM,QAAQ,CAAC,EAAE,cAAc,EAAK,CAC7C,CAAC,EAED,GAAG,oBAAqB,IAAM,CAE5B,MAAMI,EAA0B,CAC9B,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,OACN,SAAU,cACZ,EACA,CACE,KAAM,QACN,MAAO,EACP,IAAK,CACP,CACF,EAGMJ,EAAQL,EAAO,aAAaI,EAAQK,CAAI,EAG9C,OAAOJ,EAAM,QAAQ,CAAC,EAAE,cAAc,EAAK,CAC7C,CAAC,CACH,CAAC,EAED,SAAS,wCAAyC,IAAM,CAetD,MAAMD,EAAS,CACb,QAAS,EACT,KAAM,6gBACN,SAAU,YACV,GAAIR,EAAmBK,CAAE,EACzB,MAAOC,CACT,EAEA,GAAG,wDAAyD,IAAM,CAEhE,MAAMO,EAA0B,CAC9B,CACE,KAAM,KACR,EACA,CACE,KAAM,QACN,SAAU,CACZ,EACA,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,OACN,SAAU,aACZ,CACF,EAGMJ,EAAQL,EAAO,aAAaI,EAAQK,CAAI,EAG9C,OAAOJ,EAAM,QAAQ,CAAC,EAAE,cAAc,EAAI,EAC1C,OAAOA,EAAM,aAAa,CAAC,EAAE,cAAc,CACzCP,EACE,oEACF,EACAA,EACE,oEACF,EACAA,EACE,oEACF,CACF,CAAC,CACH,CAAC,EAED,GAAG,yDAA0D,IAAM,CAEjE,MAAMW,EAA0B,CAC9B,CACE,KAAM,KACR,EACA,CACE,KAAM,QACN,SAAU,CACZ,EACA,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,OACN,SAAU,aACZ,CACF,EAGMJ,EAAQL,EAAO,aAAaI,EAAQK,CAAI,EAG9C,OAAOJ,EAAM,QAAQ,CAAC,EAAE,cAAc,EAAI,EAC1C,OAAOA,EAAM,aAAa,CAAC,EAAE,cAAc,CACzCP,EACE,oEACF,EACAA,EACE,oEACF,EACAA,EACE,oEACF,CACF,CAAC,CACH,CAAC,CACH,CAAC,EAED,SAAS,qBAAsB,IAAM,CAQnC,MAAMM,EAAS,CACb,QAAS,EACT,KAAM,6MACN,SAAU,aACV,GAAIR,EAAmBK,CAAE,EACzB,MAAOC,CACT,EAEA,GAAG,+BAAgC,IAAM,CAEvC,MAAMO,EAA0B,CAC9B,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,OACN,SAAU,cACZ,CACF,EAGMJ,EAAQL,EAAO,aAAaI,EAAQK,CAAI,EAG9C,OAAOJ,EAAM,QAAQ,CAAC,EAAE,cAAc,EAAK,CAC7C,CAAC,EAED,GAAG,qCAAsC,IAAM,CAE7C,MAAMI,EAA0B,CAC9B,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,OACN,SAAU,cACZ,CACF,EAGMJ,EAAQL,EAAO,aAAaI,EAAQK,CAAI,EAG9C,OAAOJ,EAAM,QAAQ,CAAC,EAAE,cAAc,EAAK,CAC7C,CAAC,EAED,GAAG,wBAAyB,IAAM,CAEhC,MAAMI,EAA0B,CAC9B,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,QACN,SAAU,CACZ,EACA,CACE,KAAM,OACN,SAAU,aACZ,CACF,EAGMJ,EAAQL,EAAO,aAAaI,EAAQK,CAAI,EAG9C,OAAOJ,EAAM,QAAQ,CAAC,EAAE,cAAc,EAAK,CAC7C,CAAC,EAED,GAAG,qCAAsC,IAAM,CAE7C,MAAMI,EAA0B,CAC9B,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,QACN,SAAU,CACZ,EACA,CACE,KAAM,OACN,SAAU,aACZ,CACF,EAGMJ,EAAQL,EAAO,aAAaI,EAAQK,CAAI,EAG9C,OAAOJ,EAAM,QAAQ,CAAC,EAAE,cAAc,EAAK,CAC7C,CAAC,EAED,GAAG,oBAAqB,IAAM,CAE5B,MAAMI,EAA0B,CAC9B,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,KACR,EACA,CACE,KAAM,OACN,SAAU,aACZ,CACF,EAGMJ,EAAQL,EAAO,aAAaI,EAAQK,CAAI,EAG9C,OAAOJ,EAAM,QAAQ,CAAC,EAAE,cAAc,EAAK,CAC7C,CAAC,EAED,GAAG,cAAe,IAAM,CAEtB,MAAMI,EAA0B,CAAC,EAG3BJ,EAAQL,EAAO,aAAaI,EAAQK,CAAI,EAG9C,OAAOJ,EAAM,QAAQ,CAAC,EAAE,cAAc,EAAK,CAC7C,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["ContainerPath", "bufferToHexaString", "ByteArrayBuilder", "hexaStringToBuffer", "TransactionParserService", "parser", "TO", "VALUE", "VALUE_BIN", "subset", "value", "from", "to", "transaction", "path"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ContainerModule as
|
|
1
|
+
import{ContainerModule as t}from"inversify";import{typedDataTypes as a}from"../../typed-data/di/typedDataTypes";import{DefaultTypedDataParserService as r}from"../../typed-data/service/DefaultTypedDataParserService";import{SignTypedDataUseCase as o}from"../../typed-data/use-case/SignTypedDataUseCase";const y=()=>new t(({bind:e})=>{e(a.SignTypedDataUseCase).to(o),e(a.TypedDataParserService).to(r)});export{y as typedDataModuleFactory};
|
|
2
2
|
//# sourceMappingURL=typedDataModule.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/typed-data/di/typedDataModule.ts"],
|
|
4
|
-
"sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { typedDataTypes } from \"@internal/typed-data/di/typedDataTypes\";\nimport { DefaultTypedDataParserService } from \"@internal/typed-data/service/DefaultTypedDataParserService\";\nimport { SignTypedDataUseCase } from \"@internal/typed-data/use-case/SignTypedDataUseCase\";\n\nexport const typedDataModuleFactory = () =>\n new ContainerModule(
|
|
5
|
-
"mappings": "AAAA,OAAS,mBAAAA,MAAuB,YAEhC,OAAS,kBAAAC,MAAsB,yCAC/B,OAAS,iCAAAC,MAAqC,6DAC9C,OAAS,wBAAAC,MAA4B,qDAE9B,MAAMC,EAAyB,IACpC,IAAIJ,
|
|
6
|
-
"names": ["ContainerModule", "typedDataTypes", "DefaultTypedDataParserService", "SignTypedDataUseCase", "typedDataModuleFactory", "bind"
|
|
4
|
+
"sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { typedDataTypes } from \"@internal/typed-data/di/typedDataTypes\";\nimport { DefaultTypedDataParserService } from \"@internal/typed-data/service/DefaultTypedDataParserService\";\nimport { SignTypedDataUseCase } from \"@internal/typed-data/use-case/SignTypedDataUseCase\";\n\nexport const typedDataModuleFactory = () =>\n new ContainerModule(({ bind }) => {\n bind(typedDataTypes.SignTypedDataUseCase).to(SignTypedDataUseCase);\n bind(typedDataTypes.TypedDataParserService).to(\n DefaultTypedDataParserService,\n );\n });\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,mBAAAA,MAAuB,YAEhC,OAAS,kBAAAC,MAAsB,yCAC/B,OAAS,iCAAAC,MAAqC,6DAC9C,OAAS,wBAAAC,MAA4B,qDAE9B,MAAMC,EAAyB,IACpC,IAAIJ,EAAgB,CAAC,CAAE,KAAAK,CAAK,IAAM,CAChCA,EAAKJ,EAAe,oBAAoB,EAAE,GAAGE,CAAoB,EACjEE,EAAKJ,EAAe,sBAAsB,EAAE,GAC1CC,CACF,CACF,CAAC",
|
|
6
|
+
"names": ["ContainerModule", "typedDataTypes", "DefaultTypedDataParserService", "SignTypedDataUseCase", "typedDataModuleFactory", "bind"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Container as o}from"inversify";import{typedDataModuleFactory as a}from"./typedDataModule";describe("TypedDataModuleFactory",()=>{describe("Default",()=>{let t,e;beforeEach(()=>{e=a(),t=new o,t.
|
|
1
|
+
import{Container as o}from"inversify";import{typedDataModuleFactory as a}from"./typedDataModule";describe("TypedDataModuleFactory",()=>{describe("Default",()=>{let t,e;beforeEach(()=>{e=a(),t=new o,t.loadSync(e)}),it("should return the typed data module",()=>{expect(e).toBeDefined()})})});
|
|
2
2
|
//# sourceMappingURL=typedDataModule.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/typed-data/di/typedDataModule.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { Container } from \"inversify\";\n\nimport { typedDataModuleFactory } from \"./typedDataModule\";\n\ndescribe(\"TypedDataModuleFactory\", () => {\n describe(\"Default\", () => {\n let container: Container;\n let mod: ReturnType<typeof typedDataModuleFactory>;\n beforeEach(() => {\n mod = typedDataModuleFactory();\n container = new Container();\n container.
|
|
5
|
-
"mappings": "AAAA,OAAS,aAAAA,MAAiB,YAE1B,OAAS,0BAAAC,MAA8B,oBAEvC,SAAS,yBAA0B,IAAM,CACvC,SAAS,UAAW,IAAM,CACxB,IAAIC,EACAC,EACJ,WAAW,IAAM,CACfA,EAAMF,EAAuB,EAC7BC,EAAY,IAAIF,EAChBE,EAAU,
|
|
4
|
+
"sourcesContent": ["import { Container } from \"inversify\";\n\nimport { typedDataModuleFactory } from \"./typedDataModule\";\n\ndescribe(\"TypedDataModuleFactory\", () => {\n describe(\"Default\", () => {\n let container: Container;\n let mod: ReturnType<typeof typedDataModuleFactory>;\n beforeEach(() => {\n mod = typedDataModuleFactory();\n container = new Container();\n container.loadSync(mod);\n });\n\n it(\"should return the typed data module\", () => {\n expect(mod).toBeDefined();\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,aAAAA,MAAiB,YAE1B,OAAS,0BAAAC,MAA8B,oBAEvC,SAAS,yBAA0B,IAAM,CACvC,SAAS,UAAW,IAAM,CACxB,IAAIC,EACAC,EACJ,WAAW,IAAM,CACfA,EAAMF,EAAuB,EAC7BC,EAAY,IAAIF,EAChBE,EAAU,SAASC,CAAG,CACxB,CAAC,EAED,GAAG,sCAAuC,IAAM,CAC9C,OAAOA,CAAG,EAAE,YAAY,CAC1B,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
6
|
"names": ["Container", "typedDataModuleFactory", "container", "mod"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var c=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var i=(n,r,s,o)=>{for(var e=o>1?void 0:o?y(r,s):r,t=n.length-1,
|
|
1
|
+
var c=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var i=(n,r,s,o)=>{for(var e=o>1?void 0:o?y(r,s):r,t=n.length-1,m;t>=0;t--)(m=n[t])&&(e=(o?m(r,s,e):m(e))||e);return o&&e&&c(r,s,e),e};import{injectable as d}from"inversify";import{TypedDataParser as T}from"./TypedDataParser";let p=class{parse(r){const s=new T(r.types,r.domain),o=s.getStructDefinitions(),e=s.parse("EIP712Domain",r.domain),t=s.parse(r.primaryType,r.message);return e.chain(m=>t.map(a=>({types:o,domain:m,message:a})))}};p=i([d()],p);export{p as DefaultTypedDataParserService};
|
|
2
2
|
//# sourceMappingURL=DefaultTypedDataParserService.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/typed-data/service/DefaultTypedDataParserService.ts"],
|
|
4
|
-
"sourcesContent": ["import { injectable } from \"inversify\";\nimport { Either } from \"purify-ts\";\n\nimport { TypedData } from \"@api/model/TypedData\";\n\nimport { TypedDataParser } from \"./TypedDataParser\";\nimport {\n ParsedTypedData,\n TypedDataParserService,\n} from \"./TypedDataParserService\";\n\n@injectable()\nexport class DefaultTypedDataParserService implements TypedDataParserService {\n parse(data: TypedData): Either<Error, ParsedTypedData> {\n const parser = new TypedDataParser(data.types);\n const types = parser.getStructDefinitions();\n const domainResult = parser.parse(\n \"EIP712Domain\",\n data.domain as Record<string, unknown>,\n );\n const messageResult = parser.parse(data.primaryType, data.message);\n return domainResult.chain((domain) =>\n messageResult.map((message) => ({\n types,\n domain,\n message,\n })),\n );\n }\n}\n"],
|
|
5
|
-
"mappings": "wMAAA,OAAS,cAAAA,MAAkB,YAK3B,OAAS,mBAAAC,MAAuB,oBAOzB,IAAMC,EAAN,KAAsE,CAC3E,MAAMC,EAAiD,CACrD,MAAMC,EAAS,IAAIC,EAAgBF,EAAK,
|
|
4
|
+
"sourcesContent": ["import { injectable } from \"inversify\";\nimport { Either } from \"purify-ts\";\n\nimport { TypedData } from \"@api/model/TypedData\";\n\nimport { TypedDataParser } from \"./TypedDataParser\";\nimport {\n ParsedTypedData,\n TypedDataParserService,\n} from \"./TypedDataParserService\";\n\n@injectable()\nexport class DefaultTypedDataParserService implements TypedDataParserService {\n parse(data: TypedData): Either<Error, ParsedTypedData> {\n const parser = new TypedDataParser(data.types, data.domain);\n const types = parser.getStructDefinitions();\n const domainResult = parser.parse(\n \"EIP712Domain\",\n data.domain as Record<string, unknown>,\n );\n const messageResult = parser.parse(data.primaryType, data.message);\n return domainResult.chain((domain) =>\n messageResult.map((message) => ({\n types,\n domain,\n message,\n })),\n );\n }\n}\n"],
|
|
5
|
+
"mappings": "wMAAA,OAAS,cAAAA,MAAkB,YAK3B,OAAS,mBAAAC,MAAuB,oBAOzB,IAAMC,EAAN,KAAsE,CAC3E,MAAMC,EAAiD,CACrD,MAAMC,EAAS,IAAIC,EAAgBF,EAAK,MAAOA,EAAK,MAAM,EACpDG,EAAQF,EAAO,qBAAqB,EACpCG,EAAeH,EAAO,MAC1B,eACAD,EAAK,MACP,EACMK,EAAgBJ,EAAO,MAAMD,EAAK,YAAaA,EAAK,OAAO,EACjE,OAAOI,EAAa,MAAOE,GACzBD,EAAc,IAAKE,IAAa,CAC9B,MAAAJ,EACA,OAAAG,EACA,QAAAC,CACF,EAAE,CACJ,CACF,CACF,EAjBaR,EAANS,EAAA,CADNC,EAAW,GACCV",
|
|
6
6
|
"names": ["injectable", "TypedDataParser", "DefaultTypedDataParserService", "data", "parser", "TypedDataParser", "types", "domainResult", "messageResult", "domain", "message", "__decorateClass", "injectable"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Just as
|
|
1
|
+
import{Just as o,Left as p,Maybe as m,Nothing as u,Right as f}from"purify-ts";import{ArrayType as T,PrimitiveType as d,StructType as l,TypedDataValueArray as h,TypedDataValueField as g,TypedDataValueRoot as V}from"../../typed-data/model/Types";import{encodeTypedDataValue as D}from"./TypedDataEncoder";class N{domainTypeName="EIP712Domain";domainDefaultTypes={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"};structs;constructor(t,e){if(!(this.domainTypeName in t)){const i=[];Object.entries(this.domainDefaultTypes).forEach(([n,a])=>{n in e&&i.push({name:n,type:a})}),i.length>0&&(t[this.domainTypeName]=i)}const r={};for(const[i,n]of Object.entries(t)){const a={};for(const s of n)a[s.name]=this.parseType(s.type);r[i]=a}this.structs=r}getStructDefinitions(){return this.structs}parse(t,e){if(!this.isRecord(e))return p(new Error("Message is not a record"));const r=[{path:"",type:"",value:new V(t)}];return this.visitValue(t,e,"",i=>r.push(i))?f(r):p(new Error("Failed to parse"))}isRecord(t){return typeof t=="object"&&t!==null}parseType(t){return this.tryParsePrimitiveType(t).mapOrDefault(e=>e,this.tryParseArrayType(t).mapOrDefault(e=>e,new l(t)))}tryParsePrimitiveType(t){{const e=t.match(/^(((u?)int)(\d+))$/);if(e){const r=parseInt(e[4]);return r%8!==0||r===0||r>256?u:o(new d(e[1],e[3]?"uint":"int",o(r/8)))}}{const e=t.match(/^((bytes)(\d*))$/);if(e){const r=e[3]?parseInt(e[3]):null;return r!==null&&(r===0||r>32)?u:o(new d(e[1],"bytes",m.fromNullable(r)))}}return t==="address"||t==="bool"||t==="string"?o(new d(t,t,u)):u}tryParseArrayType(t){const e=t.match(/^([^[[]*)(((\[\d*\])*)\[\d*\])$/);if(e){const r=[...e[2].matchAll(/\[(\d*)\]/g)];if(r&&r.length>0){const i=r.map(([,a])=>a?o(parseInt(a)):u),n=this.tryParsePrimitiveType(e[1]).mapOrDefault(a=>a,new l(e[1]));return o(new T(t,n,e[1]+e[3],i[i.length-1],i))}}return u}visitValue(t,e,r,i){return this.tryVisitStructValue(t,e,r,i)||this.tryVisitPrimitiveValue(t,e,r,i)||this.tryVisitArrayValue(t,e,r,i)}tryVisitPrimitiveValue(t,e,r,i){return!this.isRecord(e)&&!Array.isArray(e)&&this.tryParsePrimitiveType(t).chain(n=>D(n,e).ifJust(a=>{i({path:r,type:t,value:new g(a)})})).isJust()}tryVisitStructValue(t,e,r,i){const n=this.structs[t];if(n===void 0||!this.isRecord(e))return!1;for(const[a,s]of Object.entries(n)){const y=e[a];if(y===void 0)return!1;const c=r.length?`${r}.${a}`:a;if(!this.visitValue(s.typeName,y,`${c}`,i))return!1}return!0}tryVisitArrayValue(t,e,r,i){return Array.isArray(e)&&this.tryParseArrayType(t).filter(n=>n.count.mapOrDefault(a=>e.length==a,!0)).mapOrDefault(n=>{i({path:r,type:t,value:new h(e.length)});for(const a of e){const s=r.length?`${r}.[]`:"[]";if(!this.visitValue(n.rowType,a,`${s}`,i))return!1}return!0},!1)}}export{N as TypedDataParser};
|
|
2
2
|
//# sourceMappingURL=TypedDataParser.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/typed-data/service/TypedDataParser.ts"],
|
|
4
|
-
"sourcesContent": ["import { type Either, Just, Left, Maybe, Nothing, Right } from \"purify-ts\";\n\nimport { type TypedDataField } from \"@api/model/TypedData\";\nimport {\n ArrayType,\n type FieldName,\n type FieldType,\n PrimitiveType,\n type StructName,\n StructType,\n type TypedDataValue,\n TypedDataValueArray,\n TypedDataValueField,\n TypedDataValueRoot,\n} from \"@internal/typed-data/model/Types\";\n\nimport { encodeTypedDataValue } from \"./TypedDataEncoder\";\n\n/**\n * A parser for EIP-712 typed data messages.\n *\n * ```typescript\n * const types = {\n * Person: [\n * { name: 'name', type: 'string' },\n * { name: 'age', type: 'uint256' },\n * { name: \"wallets\", type: \"address[]\" },\n * ],\n * };\n * const parser = new TypedDataParser(types);\n *\n * const message = {\n * name: 'Alice',\n * age: 30,\n * wallets: [\n * \"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB\",\n * \"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB\",\n * ],\n * };\n * const rootType = 'Person';\n *\n * const result = parser.parse(rootType, message);\n * ```\n */\nexport class TypedDataParser {\n private readonly structs: Record<StructName, Record<FieldName, FieldType>>;\n\n /**\n * Creates a new instance of the TypedDataParser class.\n * @param types The types to be used for parsing the message.\n */\n constructor(types: Record<string, Array<TypedDataField>>) {\n // Parse the types to be used later for parsing a message.\n const structs: Record<StructName, Record<FieldName, FieldType>> = {};\n for (const [typedName, typedData] of Object.entries(types)) {\n const parsedTypedData: Record<FieldName, FieldType> = {};\n for (const data of typedData) {\n parsedTypedData[data.name] = this.parseType(data.type);\n }\n structs[typedName] = parsedTypedData;\n }\n this.structs = structs;\n }\n\n /**\n * Returns the parsed definitions of custom structs as defined in the types passed to the constructor.\n * @returns The struct definitions.\n */\n public getStructDefinitions(): Record<\n StructName,\n Record<FieldName, FieldType>\n > {\n return this.structs;\n }\n\n /**\n * Parses a message according to the primary type and the types passed to the constructor.\n * @param primaryType The root type of the message.\n * @param message The message to parse.\n * @returns An Either containing the parsed values or an error.\n */\n public parse(\n primaryType: string,\n message: unknown,\n ): Either<Error, Array<TypedDataValue>> {\n if (!this.isRecord(message)) {\n return Left(new Error(\"Message is not a record\"));\n }\n const values: Array<TypedDataValue> = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(primaryType),\n },\n ];\n return this.visitValue(primaryType, message, \"\", (val) => values.push(val))\n ? Right(values)\n : Left(new Error(\"Failed to parse\"));\n }\n\n private isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n }\n\n /**\n * Parses a type string description into a PrimitiveType, ArrayType, or StructType object.\n * The description string should match https://eips.ethereum.org/EIPS/eip-712#definition-of-typed-structured-data-%F0%9D%95%8A\n * Any string which doesn't match those patterns is considered a custom struct.\n * @param type The type string to parse.\n * @returns The parsed type object.\n */\n private parseType(type: string): PrimitiveType | ArrayType | StructType {\n return this.tryParsePrimitiveType(type).mapOrDefault(\n (just) => just,\n this.tryParseArrayType(type).mapOrDefault(\n (just) => just,\n new StructType(type),\n ),\n );\n }\n\n private tryParsePrimitiveType(type: string): Maybe<PrimitiveType> {\n // int8 to int256 and uint8 to uint256\n {\n const match = type.match(/^(((u?)int)(\\d+))$/);\n if (match) {\n const size = parseInt(match[4]!);\n if (size % 8 !== 0 || size === 0 || size > 256) {\n return Nothing; // Unsupported number\n }\n return Just(\n new PrimitiveType(\n match[1]!, // typeName such as uint64\n match[3] ? \"uint\" : \"int\", // name such as uint\n Just(size / 8), // size in bytes such as 8 for an uint64\n ),\n );\n }\n }\n\n // bytes1 to bytes32, or bytes (dynamic size)\n {\n const match = type.match(/^((bytes)(\\d*))$/);\n if (match) {\n const size = match[3] ? parseInt(match[3]) : null;\n if (size !== null && (size === 0 || size > 32)) {\n return Nothing; // Unsupported byte array\n }\n return Just(\n new PrimitiveType(\n match[1]!, // typename such as bytes32\n \"bytes\", // name\n Maybe.fromNullable(size), // size in bytes, or null for a dynamic size\n ),\n );\n }\n }\n\n // Other primitive types\n if (type === \"address\" || type === \"bool\" || type === \"string\") {\n return Just(\n new PrimitiveType(\n type, // typeName\n type, // name\n Nothing, // size not applicable for those types\n ),\n );\n }\n\n // Not a primitive type\n return Nothing;\n }\n\n private tryParseArrayType(type: string): Maybe<ArrayType> {\n // Try to match an array such as: foo[2][][3]\n const match = type.match(/^([^[[]*)(((\\[\\d*\\])*)\\[\\d*\\])$/);\n if (match) {\n const matchLevels = [...match[2]!.matchAll(/\\[(\\d*)\\]/g)];\n if (matchLevels && matchLevels.length > 0) {\n const levels = matchLevels.map(([, size]) =>\n size ? Just(parseInt(size)) : Nothing,\n );\n const rootType = this.tryParsePrimitiveType(match[1]!).mapOrDefault(\n (just) => just,\n new StructType(match[1]!),\n );\n return Just(\n new ArrayType(\n type, // typeName such as: foo[2][][3]\n rootType, // rootType such as: foo\n match[1]! + match[3], // rowType such as: foo[2][]\n levels[levels.length - 1]!, // rows count such as: 3\n levels, // All levels for that array (null for dynamic size), such as: [2, null, 3]\n ),\n );\n }\n }\n\n // Not an array\n return Nothing;\n }\n\n /**\n * Visits a value and its children recursively, parsing them into TypedDataValue objects.\n * @param type The type of the value.\n * @param value The value to visit.\n * @param path The path of the value.\n * @param callback The callback to call for each parsed value.\n * @returns True if the value and its children were successfully parsed, false otherwise.\n */\n private visitValue(\n type: string,\n value: unknown,\n path: string,\n callback: (parsedValue: TypedDataValue) => void,\n ): boolean {\n return (\n this.tryVisitStructValue(type, value, path, callback) ||\n this.tryVisitPrimitiveValue(type, value, path, callback) ||\n this.tryVisitArrayValue(type, value, path, callback)\n );\n }\n\n private tryVisitPrimitiveValue(\n type: string,\n value: unknown,\n path: string,\n callback: (parsedValue: TypedDataValue) => void,\n ): boolean {\n // Basic type (address, bool, uint256, etc)\n return (\n !this.isRecord(value) &&\n !Array.isArray(value) &&\n this.tryParsePrimitiveType(type)\n .chain((primitiveType) =>\n encodeTypedDataValue(primitiveType, value).ifJust((encoded) => {\n callback({\n path,\n type,\n value: new TypedDataValueField(encoded),\n });\n }),\n )\n .isJust()\n );\n }\n\n private tryVisitStructValue(\n type: string,\n value: unknown,\n path: string,\n callback: (parsedValue: TypedDataValue) => void,\n ): boolean {\n const structType = this.structs[type];\n if (structType === undefined || !this.isRecord(value)) {\n return false;\n }\n for (const [fieldName, fieldType] of Object.entries(structType)) {\n const fieldValue = value[fieldName];\n if (fieldValue === undefined) {\n return false;\n }\n const nextPath = path.length ? `${path}.${fieldName}` : fieldName;\n if (\n !this.visitValue(\n fieldType.typeName,\n fieldValue,\n `${nextPath}`,\n callback,\n )\n ) {\n return false;\n }\n }\n return true;\n }\n\n private tryVisitArrayValue(\n type: string,\n value: unknown,\n path: string,\n callback: (parsedValue: TypedDataValue) => void,\n ): boolean {\n return (\n Array.isArray(value) &&\n this.tryParseArrayType(type)\n .filter((t) => t.count.mapOrDefault((c) => value.length == c, true))\n .mapOrDefault((t) => {\n callback({\n path: path,\n type,\n value: new TypedDataValueArray(value.length),\n });\n for (const entry of value) {\n const nextPath = path.length ? `${path}.[]` : \"[]\";\n if (!this.visitValue(t.rowType, entry, `${nextPath}`, callback)) {\n return false;\n }\n }\n return true;\n }, false)\n );\n }\n}\n"],
|
|
5
|
-
"mappings": "AAAA,OAAsB,QAAAA,EAAM,QAAAC,EAAM,SAAAC,EAAO,WAAAC,EAAS,SAAAC,MAAa,YAG/D,OACE,aAAAC,EAGA,iBAAAC,EAEA,cAAAC,EAEA,uBAAAC,EACA,uBAAAC,EACA,sBAAAC,MACK,mCAEP,OAAS,wBAAAC,MAA4B,qBA4B9B,MAAMC,CAAgB,
|
|
6
|
-
"names": ["Just", "Left", "Maybe", "Nothing", "Right", "ArrayType", "PrimitiveType", "StructType", "TypedDataValueArray", "TypedDataValueField", "TypedDataValueRoot", "encodeTypedDataValue", "TypedDataParser", "types", "structs", "typedName", "typedData", "parsedTypedData", "data", "primaryType", "message", "values", "val", "value", "
|
|
4
|
+
"sourcesContent": ["import { type Either, Just, Left, Maybe, Nothing, Right } from \"purify-ts\";\n\nimport type { TypedDataDomain, TypedDataField } from \"@api/model/TypedData\";\nimport {\n ArrayType,\n type FieldName,\n type FieldType,\n PrimitiveType,\n type StructName,\n StructType,\n type TypedDataValue,\n TypedDataValueArray,\n TypedDataValueField,\n TypedDataValueRoot,\n} from \"@internal/typed-data/model/Types\";\n\nimport { encodeTypedDataValue } from \"./TypedDataEncoder\";\n\n/**\n * A parser for EIP-712 typed data messages.\n *\n * ```typescript\n * const types = {\n * Person: [\n * { name: 'name', type: 'string' },\n * { name: 'age', type: 'uint256' },\n * { name: \"wallets\", type: \"address[]\" },\n * ],\n * };\n * const parser = new TypedDataParser(types);\n *\n * const message = {\n * name: 'Alice',\n * age: 30,\n * wallets: [\n * \"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB\",\n * \"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB\",\n * ],\n * };\n * const rootType = 'Person';\n *\n * const result = parser.parse(rootType, message);\n * ```\n */\nexport class TypedDataParser {\n // Domain types from EIP712 specification:\n // https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator\n private readonly domainTypeName: string = \"EIP712Domain\";\n private readonly domainDefaultTypes: Record<string, string> = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\",\n };\n\n private readonly structs: Record<StructName, Record<FieldName, FieldType>>;\n\n /**\n * Creates a new instance of the TypedDataParser class.\n * @param types The types to be used for parsing the message.\n */\n constructor(\n types: Record<string, Array<TypedDataField>>,\n domain: TypedDataDomain,\n ) {\n // Append EIP712Domain to types if missing\n if (!(this.domainTypeName in types)) {\n const domainTypes: Array<TypedDataField> = [];\n Object.entries(this.domainDefaultTypes).forEach(([name, type]) => {\n if (name in domain) {\n domainTypes.push({ name, type });\n }\n });\n if (domainTypes.length > 0) {\n types[this.domainTypeName] = domainTypes;\n }\n }\n\n // Parse the types to be used later for parsing a message.\n const structs: Record<StructName, Record<FieldName, FieldType>> = {};\n for (const [typedName, typedData] of Object.entries(types)) {\n const parsedTypedData: Record<FieldName, FieldType> = {};\n for (const data of typedData) {\n parsedTypedData[data.name] = this.parseType(data.type);\n }\n structs[typedName] = parsedTypedData;\n }\n this.structs = structs;\n }\n\n /**\n * Returns the parsed definitions of custom structs as defined in the types passed to the constructor.\n * @returns The struct definitions.\n */\n public getStructDefinitions(): Record<\n StructName,\n Record<FieldName, FieldType>\n > {\n return this.structs;\n }\n\n /**\n * Parses a message according to the primary type and the types passed to the constructor.\n * @param primaryType The root type of the message.\n * @param message The message to parse.\n * @returns An Either containing the parsed values or an error.\n */\n public parse(\n primaryType: string,\n message: unknown,\n ): Either<Error, Array<TypedDataValue>> {\n if (!this.isRecord(message)) {\n return Left(new Error(\"Message is not a record\"));\n }\n const values: Array<TypedDataValue> = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(primaryType),\n },\n ];\n return this.visitValue(primaryType, message, \"\", (val) => values.push(val))\n ? Right(values)\n : Left(new Error(\"Failed to parse\"));\n }\n\n private isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n }\n\n /**\n * Parses a type string description into a PrimitiveType, ArrayType, or StructType object.\n * The description string should match https://eips.ethereum.org/EIPS/eip-712#definition-of-typed-structured-data-%F0%9D%95%8A\n * Any string which doesn't match those patterns is considered a custom struct.\n * @param type The type string to parse.\n * @returns The parsed type object.\n */\n private parseType(type: string): PrimitiveType | ArrayType | StructType {\n return this.tryParsePrimitiveType(type).mapOrDefault(\n (just) => just,\n this.tryParseArrayType(type).mapOrDefault(\n (just) => just,\n new StructType(type),\n ),\n );\n }\n\n private tryParsePrimitiveType(type: string): Maybe<PrimitiveType> {\n // int8 to int256 and uint8 to uint256\n {\n const match = type.match(/^(((u?)int)(\\d+))$/);\n if (match) {\n const size = parseInt(match[4]!);\n if (size % 8 !== 0 || size === 0 || size > 256) {\n return Nothing; // Unsupported number\n }\n return Just(\n new PrimitiveType(\n match[1]!, // typeName such as uint64\n match[3] ? \"uint\" : \"int\", // name such as uint\n Just(size / 8), // size in bytes such as 8 for an uint64\n ),\n );\n }\n }\n\n // bytes1 to bytes32, or bytes (dynamic size)\n {\n const match = type.match(/^((bytes)(\\d*))$/);\n if (match) {\n const size = match[3] ? parseInt(match[3]) : null;\n if (size !== null && (size === 0 || size > 32)) {\n return Nothing; // Unsupported byte array\n }\n return Just(\n new PrimitiveType(\n match[1]!, // typename such as bytes32\n \"bytes\", // name\n Maybe.fromNullable(size), // size in bytes, or null for a dynamic size\n ),\n );\n }\n }\n\n // Other primitive types\n if (type === \"address\" || type === \"bool\" || type === \"string\") {\n return Just(\n new PrimitiveType(\n type, // typeName\n type, // name\n Nothing, // size not applicable for those types\n ),\n );\n }\n\n // Not a primitive type\n return Nothing;\n }\n\n private tryParseArrayType(type: string): Maybe<ArrayType> {\n // Try to match an array such as: foo[2][][3]\n const match = type.match(/^([^[[]*)(((\\[\\d*\\])*)\\[\\d*\\])$/);\n if (match) {\n const matchLevels = [...match[2]!.matchAll(/\\[(\\d*)\\]/g)];\n if (matchLevels && matchLevels.length > 0) {\n const levels = matchLevels.map(([, size]) =>\n size ? Just(parseInt(size)) : Nothing,\n );\n const rootType = this.tryParsePrimitiveType(match[1]!).mapOrDefault(\n (just) => just,\n new StructType(match[1]!),\n );\n return Just(\n new ArrayType(\n type, // typeName such as: foo[2][][3]\n rootType, // rootType such as: foo\n match[1]! + match[3], // rowType such as: foo[2][]\n levels[levels.length - 1]!, // rows count such as: 3\n levels, // All levels for that array (null for dynamic size), such as: [2, null, 3]\n ),\n );\n }\n }\n\n // Not an array\n return Nothing;\n }\n\n /**\n * Visits a value and its children recursively, parsing them into TypedDataValue objects.\n * @param type The type of the value.\n * @param value The value to visit.\n * @param path The path of the value.\n * @param callback The callback to call for each parsed value.\n * @returns True if the value and its children were successfully parsed, false otherwise.\n */\n private visitValue(\n type: string,\n value: unknown,\n path: string,\n callback: (parsedValue: TypedDataValue) => void,\n ): boolean {\n return (\n this.tryVisitStructValue(type, value, path, callback) ||\n this.tryVisitPrimitiveValue(type, value, path, callback) ||\n this.tryVisitArrayValue(type, value, path, callback)\n );\n }\n\n private tryVisitPrimitiveValue(\n type: string,\n value: unknown,\n path: string,\n callback: (parsedValue: TypedDataValue) => void,\n ): boolean {\n // Basic type (address, bool, uint256, etc)\n return (\n !this.isRecord(value) &&\n !Array.isArray(value) &&\n this.tryParsePrimitiveType(type)\n .chain((primitiveType) =>\n encodeTypedDataValue(primitiveType, value).ifJust((encoded) => {\n callback({\n path,\n type,\n value: new TypedDataValueField(encoded),\n });\n }),\n )\n .isJust()\n );\n }\n\n private tryVisitStructValue(\n type: string,\n value: unknown,\n path: string,\n callback: (parsedValue: TypedDataValue) => void,\n ): boolean {\n const structType = this.structs[type];\n if (structType === undefined || !this.isRecord(value)) {\n return false;\n }\n for (const [fieldName, fieldType] of Object.entries(structType)) {\n const fieldValue = value[fieldName];\n if (fieldValue === undefined) {\n return false;\n }\n const nextPath = path.length ? `${path}.${fieldName}` : fieldName;\n if (\n !this.visitValue(\n fieldType.typeName,\n fieldValue,\n `${nextPath}`,\n callback,\n )\n ) {\n return false;\n }\n }\n return true;\n }\n\n private tryVisitArrayValue(\n type: string,\n value: unknown,\n path: string,\n callback: (parsedValue: TypedDataValue) => void,\n ): boolean {\n return (\n Array.isArray(value) &&\n this.tryParseArrayType(type)\n .filter((t) => t.count.mapOrDefault((c) => value.length == c, true))\n .mapOrDefault((t) => {\n callback({\n path: path,\n type,\n value: new TypedDataValueArray(value.length),\n });\n for (const entry of value) {\n const nextPath = path.length ? `${path}.[]` : \"[]\";\n if (!this.visitValue(t.rowType, entry, `${nextPath}`, callback)) {\n return false;\n }\n }\n return true;\n }, false)\n );\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Just", "Left", "Maybe", "Nothing", "Right", "ArrayType", "PrimitiveType", "StructType", "TypedDataValueArray", "TypedDataValueField", "TypedDataValueRoot", "encodeTypedDataValue", "TypedDataParser", "types", "domain", "domainTypes", "name", "type", "structs", "typedName", "typedData", "parsedTypedData", "data", "primaryType", "message", "values", "val", "value", "just", "match", "size", "matchLevels", "levels", "rootType", "path", "callback", "primitiveType", "encoded", "structType", "fieldName", "fieldType", "fieldValue", "nextPath", "t", "c", "entry"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{hexaStringToBuffer as
|
|
1
|
+
import{hexaStringToBuffer as m}from"@ledgerhq/device-management-kit";import{Just as a,Nothing as c,Right as w}from"purify-ts";import{ArrayType as d,PrimitiveType as n,StructType as o,TypedDataValueArray as b,TypedDataValueField as u,TypedDataValueRoot as C}from"../../typed-data/model/Types";import{TypedDataParser as p}from"./TypedDataParser";describe("TypedDataParser - types parsing",()=>{it("Parse primitive types bytes",()=>{const s={TestStruct:[{name:"test1",type:"bytes"},{name:"test2",type:"bytes1"},{name:"test3",type:"bytes2"},{name:"test4",type:"bytes31"},{name:"test5",type:"bytes32"}]},e=new p(s,{}),t={TestStruct:{test1:new n("bytes","bytes",c),test2:new n("bytes1","bytes",a(1)),test3:new n("bytes2","bytes",a(2)),test4:new n("bytes31","bytes",a(31)),test5:new n("bytes32","bytes",a(32))}};expect(e.getStructDefinitions()).toStrictEqual(t)}),it("Parse primitive types bytes, out of bound",()=>{const s={TestStruct:[{name:"invalid1",type:"bytes0"},{name:"invalid2",type:"bytes33"}]},e=new p(s,{}),t={TestStruct:{invalid1:new o("bytes0"),invalid2:new o("bytes33")}};expect(e.getStructDefinitions()).toStrictEqual(t)}),it("Parse primitive types number",()=>{const s={TestStruct:[{name:"test1",type:"int8"},{name:"test2",type:"uint8"},{name:"test3",type:"int16"},{name:"test4",type:"uint32"},{name:"test5",type:"uint64"},{name:"test6",type:"int128"},{name:"test7",type:"int136"},{name:"test8",type:"int144"},{name:"test9",type:"uint240"},{name:"test10",type:"uint248"},{name:"test11",type:"uint256"},{name:"test12",type:"int256"}]},e=new p(s,{}),t={TestStruct:{test1:new n("int8","int",a(1)),test2:new n("uint8","uint",a(1)),test3:new n("int16","int",a(2)),test4:new n("uint32","uint",a(4)),test5:new n("uint64","uint",a(8)),test6:new n("int128","int",a(16)),test7:new n("int136","int",a(17)),test8:new n("int144","int",a(18)),test9:new n("uint240","uint",a(30)),test10:new n("uint248","uint",a(31)),test11:new n("uint256","uint",a(32)),test12:new n("int256","int",a(32))}};expect(e.getStructDefinitions()).toStrictEqual(t)}),it("Parse primitive types number, out of bound",()=>{const s={TestStruct:[{name:"invalid1",type:"int0"},{name:"invalid2",type:"uint0"},{name:"invalid3",type:"int7"},{name:"invalid4",type:"int257"},{name:"invalid5",type:"uint257"},{name:"invalid6",type:"int512"}]},e=new p(s,{}),t={TestStruct:{invalid1:new o("int0"),invalid2:new o("uint0"),invalid3:new o("int7"),invalid4:new o("int257"),invalid5:new o("uint257"),invalid6:new o("int512")}};expect(e.getStructDefinitions()).toStrictEqual(t)}),it("Parse primitive types others",()=>{const s={TestStruct:[{name:"test1",type:"address"},{name:"test2",type:"bool"},{name:"test3",type:"string"}]},e=new p(s,{}),t={TestStruct:{test1:new n("address","address",c),test2:new n("bool","bool",c),test3:new n("string","string",c)}};expect(e.getStructDefinitions()).toStrictEqual(t)}),it("Parse arrays",()=>{const s={TestStruct:[{name:"test1",type:"address[]"},{name:"test2",type:"uint16[3]"},{name:"test3",type:"custom[2][][3]"},{name:"test4",type:"string[2][][3][]"}]},e=new p(s,{}),t={TestStruct:{test1:new d("address[]",new n("address","address",c),"address",c,[c]),test2:new d("uint16[3]",new n("uint16","uint",a(2)),"uint16",a(3),[a(3)]),test3:new d("custom[2][][3]",new o("custom"),"custom[2][]",a(3),[a(2),c,a(3)]),test4:new d("string[2][][3][]",new n("string","string",c),"string[2][][3]",c,[a(2),c,a(3),c])}};expect(e.getStructDefinitions()).toStrictEqual(t)}),it("Parse custom struct",()=>{const s={TestStruct:[{name:"test",type:"MyCustomStructure"}]},e=new p(s,{}),t={TestStruct:{test:new o("MyCustomStructure")}};expect(e.getStructDefinitions()).toStrictEqual(t)}),it("Don't append domain default types if already present",()=>{const s={EIP712Domain:[{name:"name",type:"string"}],TestStruct:[{name:"test",type:"MyCustomStructure"}]},e=new p(s,{name:"Seaport",version:"1.5",chainId:1,verifyingContract:"0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC",salt:"0x42"}),t={EIP712Domain:{name:new n("string","string",c)},TestStruct:{test:new o("MyCustomStructure")}};expect(e.getStructDefinitions()).toStrictEqual(t)}),it("Append domain default types",()=>{const s={TestStruct:[{name:"test",type:"MyCustomStructure"}]},e=new p(s,{name:"Seaport",version:"1.5",chainId:1,verifyingContract:"0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC",salt:"0x42"}),t={EIP712Domain:{name:new n("string","string",c),version:new n("string","string",c),chainId:new n("uint256","uint",a(32)),verifyingContract:new n("address","address",c),salt:new n("bytes32","bytes",a(32))},TestStruct:{test:new o("MyCustomStructure")}};expect(e.getStructDefinitions()).toStrictEqual(t)}),it("Append partial domain default types",()=>{const s={TestStruct:[{name:"test",type:"MyCustomStructure"}]},e=new p(s,{name:"Seaport",chainId:1,verifyingContract:"0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC"}),t={EIP712Domain:{name:new n("string","string",c),chainId:new n("uint256","uint",a(32)),verifyingContract:new n("address","address",c)},TestStruct:{test:new o("MyCustomStructure")}};expect(e.getStructDefinitions()).toStrictEqual(t)})});describe("TypedDataParser - message parsing",()=>{const s={domain:{chainId:0,name:"Ether Mail",verifyingContract:"0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC",version:"1"},message:{contents:"Hello, Bob!",from:{name:"Cow",wallets:["0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826","0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF"]},to:[{wallets:["0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB","0xB0BdaBea57B0BDABeA57b0bdABEA57b0BDabEa57","0xB0B0b0b0b0b0B000000000000000000000000000"],name:"Bob"}]},primaryType:"Mail",types:{EIP712Domain:[{name:"name",type:"string"},{name:"version",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"}],Mail:[{name:"from",type:"Person"},{name:"to",type:"Person[1]"},{name:"contents",type:"string"}],Person:[{name:"name",type:"string"},{name:"wallets",type:"address[]"}]}};it("Parse an EIP712 message",()=>{const e=s.types,t=s.primaryType,r=s.message,i=new p(e,{}).parse(t,r),l=[{path:"",type:"",value:new C(t)},{path:"from.name",type:"string",value:new u(new TextEncoder().encode("Cow"))},{path:"from.wallets",type:"address[]",value:new b(2)},{path:"from.wallets.[]",type:"address",value:new u(m("0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826"))},{path:"from.wallets.[]",type:"address",value:new u(m("0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF"))},{path:"to",type:"Person[1]",value:new b(1)},{path:"to.[].name",type:"string",value:new u(new TextEncoder().encode("Bob"))},{path:"to.[].wallets",type:"address[]",value:new b(3)},{path:"to.[].wallets.[]",type:"address",value:new u(m("0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB"))},{path:"to.[].wallets.[]",type:"address",value:new u(m("0xB0BdaBea57B0BDABeA57b0bdABEA57b0BDabEa57"))},{path:"to.[].wallets.[]",type:"address",value:new u(m("0xB0B0b0b0b0b0B000000000000000000000000000"))},{path:"contents",type:"string",value:new u(new TextEncoder().encode("Hello, Bob!"))}];expect(i).toStrictEqual(w(l))}),it("Parse an EIP712 domain",()=>{const e=s.types,t="EIP712Domain",r=s.domain,y=new p(e,{}),i=[{path:"",type:"",value:new C(t)},{path:"name",type:"string",value:new u(new TextEncoder().encode("Ether Mail"))},{path:"version",type:"string",value:new u(new TextEncoder().encode("1"))},{path:"chainId",type:"uint256",value:new u(Uint8Array.from([0]))},{path:"verifyingContract",type:"address",value:new u(m("0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC"))}],l=y.parse(t,r);expect(l).toStrictEqual(w(i))}),it("Invalid primary type",()=>{const e=s.types,t="unknown",r=s.domain,i=new p(e,{}).parse(t,r);expect(i.isLeft()).toStrictEqual(!0)}),it("Struct points to an unknown custom type",()=>{const e={Mail:[{name:"from",type:"Person"}]},t="Mail",r={from:"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826"},i=new p(e,{}).parse(t,r);expect(i.isLeft()).toStrictEqual(!0)}),it("Array contains an unknown custom type",()=>{const e={Mail:[{name:"from",type:"Person[]"}]},t="Mail",r={from:["0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826"]},i=new p(e,{}).parse(t,r);expect(i.isLeft()).toStrictEqual(!0)}),it("Invalid primitive value",()=>{const e={Mail:[{name:"from",type:"uint8"}]},t="Mail",r={from:3e3},i=new p(e,{}).parse(t,r);expect(i.isLeft()).toStrictEqual(!0)}),it("Array instead of primitive value",()=>{const e={Mail:[{name:"from",type:"uint8"}]},t="Mail",r={from:[42]},i=new p(e,{}).parse(t,r);expect(i.isLeft()).toStrictEqual(!0)}),it("Struct instead of primitive value",()=>{const e={Mail:[{name:"from",type:"uint8"}]},t="Mail",r={from:{data:42}},i=new p(e,{}).parse(t,r);expect(i.isLeft()).toStrictEqual(!0)}),it("Struct value not a record",()=>{const e={Mail:[{name:"from",type:"Person"}],Person:[{name:"data",type:"uint8"}]},t="Mail",r={from:42},i=new p(e,{}).parse(t,r);expect(i.isLeft()).toStrictEqual(!0)}),it("Struct field not present in value",()=>{const e={Mail:[{name:"from",type:"uint8"}]},t="Mail",r={to:42},i=new p(e,{}).parse(t,r);expect(i.isLeft()).toStrictEqual(!0)}),it("Array value not an array",()=>{const e={Mail:[{name:"from",type:"uint8[]"}]},t="Mail",r={from:42},i=new p(e,{}).parse(t,r);expect(i.isLeft()).toStrictEqual(!0)}),it("Array value with invalid size",()=>{const e={Mail:[{name:"from",type:"uint8[3]"}]},t="Mail",r={from:[42]},i=new p(e,{}).parse(t,r);expect(i.isLeft()).toStrictEqual(!0)})});
|
|
2
2
|
//# sourceMappingURL=TypedDataParser.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/typed-data/service/TypedDataParser.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { hexaStringToBuffer } from \"@ledgerhq/device-management-kit\";\nimport { Just, Nothing, Right } from \"purify-ts\";\n\nimport { type TypedData } from \"@api/model/TypedData\";\nimport {\n ArrayType,\n PrimitiveType,\n StructType,\n TypedDataValueArray,\n TypedDataValueField,\n TypedDataValueRoot,\n} from \"@internal/typed-data/model/Types\";\n\nimport { TypedDataParser } from \"./TypedDataParser\";\n\ndescribe(\"TypedDataParser - types parsing\", () => {\n it(\"Parse primitive types bytes\", () => {\n // GIVEN\n const types = {\n TestStruct: [\n { name: \"test1\", type: \"bytes\" },\n { name: \"test2\", type: \"bytes1\" },\n { name: \"test3\", type: \"bytes2\" },\n { name: \"test4\", type: \"bytes31\" },\n { name: \"test5\", type: \"bytes32\" },\n ],\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const expected = {\n TestStruct: {\n test1: new PrimitiveType(\"bytes\", \"bytes\", Nothing),\n test2: new PrimitiveType(\"bytes1\", \"bytes\", Just(1)),\n test3: new PrimitiveType(\"bytes2\", \"bytes\", Just(2)),\n test4: new PrimitiveType(\"bytes31\", \"bytes\", Just(31)),\n test5: new PrimitiveType(\"bytes32\", \"bytes\", Just(32)),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Parse primitive types bytes, out of bound\", () => {\n // GIVEN\n const types = {\n TestStruct: [\n { name: \"invalid1\", type: \"bytes0\" },\n { name: \"invalid2\", type: \"bytes33\" },\n ],\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const expected = {\n TestStruct: {\n invalid1: new StructType(\"bytes0\"),\n invalid2: new StructType(\"bytes33\"),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Parse primitive types number\", () => {\n // GIVEN\n const types = {\n TestStruct: [\n { name: \"test1\", type: \"int8\" },\n { name: \"test2\", type: \"uint8\" },\n { name: \"test3\", type: \"int16\" },\n { name: \"test4\", type: \"uint32\" },\n { name: \"test5\", type: \"uint64\" },\n { name: \"test6\", type: \"int128\" },\n { name: \"test7\", type: \"int136\" },\n { name: \"test8\", type: \"int144\" },\n { name: \"test9\", type: \"uint240\" },\n { name: \"test10\", type: \"uint248\" },\n { name: \"test11\", type: \"uint256\" },\n { name: \"test12\", type: \"int256\" },\n ],\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const expected = {\n TestStruct: {\n test1: new PrimitiveType(\"int8\", \"int\", Just(1)),\n test2: new PrimitiveType(\"uint8\", \"uint\", Just(1)),\n test3: new PrimitiveType(\"int16\", \"int\", Just(2)),\n test4: new PrimitiveType(\"uint32\", \"uint\", Just(4)),\n test5: new PrimitiveType(\"uint64\", \"uint\", Just(8)),\n test6: new PrimitiveType(\"int128\", \"int\", Just(16)),\n test7: new PrimitiveType(\"int136\", \"int\", Just(17)),\n test8: new PrimitiveType(\"int144\", \"int\", Just(18)),\n test9: new PrimitiveType(\"uint240\", \"uint\", Just(30)),\n test10: new PrimitiveType(\"uint248\", \"uint\", Just(31)),\n test11: new PrimitiveType(\"uint256\", \"uint\", Just(32)),\n test12: new PrimitiveType(\"int256\", \"int\", Just(32)),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Parse primitive types number, out of bound\", () => {\n // GIVEN\n const types = {\n TestStruct: [\n { name: \"invalid1\", type: \"int0\" },\n { name: \"invalid2\", type: \"uint0\" },\n { name: \"invalid3\", type: \"int7\" },\n { name: \"invalid4\", type: \"int257\" },\n { name: \"invalid5\", type: \"uint257\" },\n { name: \"invalid6\", type: \"int512\" },\n ],\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const expected = {\n TestStruct: {\n invalid1: new StructType(\"int0\"),\n invalid2: new StructType(\"uint0\"),\n invalid3: new StructType(\"int7\"),\n invalid4: new StructType(\"int257\"),\n invalid5: new StructType(\"uint257\"),\n invalid6: new StructType(\"int512\"),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Parse primitive types others\", () => {\n // GIVEN\n const types = {\n TestStruct: [\n { name: \"test1\", type: \"address\" },\n { name: \"test2\", type: \"bool\" },\n { name: \"test3\", type: \"string\" },\n ],\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const expected = {\n TestStruct: {\n test1: new PrimitiveType(\"address\", \"address\", Nothing),\n test2: new PrimitiveType(\"bool\", \"bool\", Nothing),\n test3: new PrimitiveType(\"string\", \"string\", Nothing),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Parse arrays\", () => {\n // GIVEN\n const types = {\n TestStruct: [\n { name: \"test1\", type: \"address[]\" },\n { name: \"test2\", type: \"uint16[3]\" },\n { name: \"test3\", type: \"custom[2][][3]\" },\n { name: \"test4\", type: \"string[2][][3][]\" },\n ],\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const expected = {\n TestStruct: {\n test1: new ArrayType(\n \"address[]\",\n new PrimitiveType(\"address\", \"address\", Nothing),\n \"address\",\n Nothing,\n [Nothing],\n ),\n test2: new ArrayType(\n \"uint16[3]\",\n new PrimitiveType(\"uint16\", \"uint\", Just(2)),\n \"uint16\",\n Just(3),\n [Just(3)],\n ),\n test3: new ArrayType(\n \"custom[2][][3]\",\n new StructType(\"custom\"),\n \"custom[2][]\",\n Just(3),\n [Just(2), Nothing, Just(3)],\n ),\n test4: new ArrayType(\n \"string[2][][3][]\",\n new PrimitiveType(\"string\", \"string\", Nothing),\n \"string[2][][3]\",\n Nothing,\n [Just(2), Nothing, Just(3), Nothing],\n ),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Parse custom struct\", () => {\n // GIVEN\n const types = {\n TestStruct: [{ name: \"test\", type: \"MyCustomStructure\" }],\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const expected = {\n TestStruct: {\n test: new StructType(\"MyCustomStructure\"),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n});\n\ndescribe(\"TypedDataParser - message parsing\", () => {\n const MESSAGE: TypedData = {\n domain: {\n chainId: 0,\n name: \"Ether Mail\",\n verifyingContract: \"0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC\",\n version: \"1\",\n },\n message: {\n contents: \"Hello, Bob!\",\n from: {\n name: \"Cow\",\n wallets: [\n \"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826\",\n \"0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF\",\n ],\n },\n to: [\n {\n wallets: [\n \"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB\",\n \"0xB0BdaBea57B0BDABeA57b0bdABEA57b0BDabEa57\",\n \"0xB0B0b0b0b0b0B000000000000000000000000000\",\n ],\n name: \"Bob\",\n },\n ],\n },\n primaryType: \"Mail\",\n types: {\n EIP712Domain: [\n { name: \"name\", type: \"string\" },\n { name: \"version\", type: \"string\" },\n { name: \"chainId\", type: \"uint256\" },\n { name: \"verifyingContract\", type: \"address\" },\n ],\n Mail: [\n { name: \"from\", type: \"Person\" },\n { name: \"to\", type: \"Person[1]\" },\n { name: \"contents\", type: \"string\" },\n ],\n Person: [\n { name: \"name\", type: \"string\" },\n { name: \"wallets\", type: \"address[]\" },\n ],\n },\n };\n\n it(\"Parse an EIP712 message\", () => {\n // GIVEN\n const types = MESSAGE.types;\n const primaryType = MESSAGE.primaryType;\n const message = MESSAGE.message;\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const parsed = parser.parse(primaryType, message);\n const expected = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(primaryType),\n },\n {\n path: \"from.name\",\n type: \"string\",\n value: new TypedDataValueField(new TextEncoder().encode(\"Cow\")),\n },\n {\n path: \"from.wallets\",\n type: \"address[]\",\n value: new TypedDataValueArray(2),\n },\n {\n path: \"from.wallets.[]\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826\")!,\n ),\n },\n {\n path: \"from.wallets.[]\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF\")!,\n ),\n },\n { path: \"to\", type: \"Person[1]\", value: new TypedDataValueArray(1) },\n {\n path: \"to.[].name\",\n type: \"string\",\n value: new TypedDataValueField(new TextEncoder().encode(\"Bob\")),\n },\n {\n path: \"to.[].wallets\",\n type: \"address[]\",\n value: new TypedDataValueArray(3),\n },\n {\n path: \"to.[].wallets.[]\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB\")!,\n ),\n },\n {\n path: \"to.[].wallets.[]\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xB0BdaBea57B0BDABeA57b0bdABEA57b0BDabEa57\")!,\n ),\n },\n {\n path: \"to.[].wallets.[]\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xB0B0b0b0b0b0B000000000000000000000000000\")!,\n ),\n },\n {\n path: \"contents\",\n type: \"string\",\n value: new TypedDataValueField(new TextEncoder().encode(\"Hello, Bob!\")),\n },\n ];\n expect(parsed).toStrictEqual(Right(expected));\n });\n\n it(\"Parse an EIP712 domain\", () => {\n // GIVEN\n const types = MESSAGE.types;\n const primaryType = \"EIP712Domain\";\n const message = MESSAGE.domain;\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const expected = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(primaryType),\n },\n {\n path: \"name\",\n type: \"string\",\n value: new TypedDataValueField(new TextEncoder().encode(\"Ether Mail\")),\n },\n {\n path: \"version\",\n type: \"string\",\n value: new TypedDataValueField(new TextEncoder().encode(\"1\")),\n },\n {\n path: \"chainId\",\n type: \"uint256\",\n value: new TypedDataValueField(Uint8Array.from([0])),\n },\n {\n path: \"verifyingContract\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC\")!,\n ),\n },\n ];\n const parsed = parser.parse(primaryType, message);\n expect(parsed).toStrictEqual(Right(expected));\n });\n\n it(\"Invalid primary type\", () => {\n // GIVEN\n const types = MESSAGE.types;\n const primaryType = \"unknown\";\n const message = MESSAGE.domain;\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Struct points to an unknown custom type\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"Person\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: \"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826\",\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Array contains an unknown custom type\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"Person[]\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: [\"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826\"],\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Invalid primitive value\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"uint8\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: 3000,\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Array instead of primitive value\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"uint8\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: [42],\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Struct instead of primitive value\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"uint8\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: { data: 42 },\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Struct value not a record\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"Person\" }],\n Person: [{ name: \"data\", type: \"uint8\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: 42,\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Struct field not present in value\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"uint8\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n to: 42,\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Array value not an array\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"uint8[]\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: 42,\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Array value with invalid size\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"uint8[3]\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: [42],\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,OAAS,sBAAAA,MAA0B,kCACnC,OAAS,QAAAC,EAAM,WAAAC,EAAS,SAAAC,MAAa,YAGrC,OACE,aAAAC,EACA,iBAAAC,EACA,cAAAC,EACA,uBAAAC,EACA,uBAAAC,EACA,sBAAAC,MACK,mCAEP,OAAS,mBAAAC,MAAuB,oBAEhC,SAAS,kCAAmC,IAAM,CAChD,GAAG,8BAA+B,IAAM,CAEtC,MAAMC,EAAQ,CACZ,WAAY,CACV,CAAE,KAAM,QAAS,KAAM,OAAQ,EAC/B,CAAE,KAAM,QAAS,KAAM,QAAS,EAChC,CAAE,KAAM,QAAS,KAAM,QAAS,EAChC,CAAE,KAAM,QAAS,KAAM,SAAU,EACjC,CAAE,KAAM,QAAS,KAAM,SAAU,CACnC,CACF,EAEMC,EAAS,IAAIF,EAAgBC,CAAK,EAElCE,EAAW,CACf,WAAY,CACV,MAAO,IAAIR,EAAc,QAAS,QAASH,CAAO,EAClD,MAAO,IAAIG,EAAc,SAAU,QAASJ,EAAK,CAAC,CAAC,EACnD,MAAO,IAAII,EAAc,SAAU,QAASJ,EAAK,CAAC,CAAC,EACnD,MAAO,IAAII,EAAc,UAAW,QAASJ,EAAK,EAAE,CAAC,EACrD,MAAO,IAAII,EAAc,UAAW,QAASJ,EAAK,EAAE,CAAC,CACvD,CACF,EACA,OAAOW,EAAO,qBAAqB,CAAC,EAAE,cAAcC,CAAQ,CAC9D,CAAC,EAED,GAAG,4CAA6C,IAAM,CAEpD,MAAMF,EAAQ,CACZ,WAAY,CACV,CAAE,KAAM,WAAY,KAAM,QAAS,EACnC,CAAE,KAAM,WAAY,KAAM,SAAU,CACtC,CACF,EAEMC,EAAS,IAAIF,EAAgBC,CAAK,EAElCE,EAAW,CACf,WAAY,CACV,SAAU,IAAIP,EAAW,QAAQ,EACjC,SAAU,IAAIA,EAAW,SAAS,CACpC,CACF,EACA,OAAOM,EAAO,qBAAqB,CAAC,EAAE,cAAcC,CAAQ,CAC9D,CAAC,EAED,GAAG,+BAAgC,IAAM,CAEvC,MAAMF,EAAQ,CACZ,WAAY,CACV,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,QAAS,KAAM,OAAQ,EAC/B,CAAE,KAAM,QAAS,KAAM,OAAQ,EAC/B,CAAE,KAAM,QAAS,KAAM,QAAS,EAChC,CAAE,KAAM,QAAS,KAAM,QAAS,EAChC,CAAE,KAAM,QAAS,KAAM,QAAS,EAChC,CAAE,KAAM,QAAS,KAAM,QAAS,EAChC,CAAE,KAAM,QAAS,KAAM,QAAS,EAChC,CAAE,KAAM,QAAS,KAAM,SAAU,EACjC,CAAE,KAAM,SAAU,KAAM,SAAU,EAClC,CAAE,KAAM,SAAU,KAAM,SAAU,EAClC,CAAE,KAAM,SAAU,KAAM,QAAS,CACnC,CACF,EAEMC,EAAS,IAAIF,EAAgBC,CAAK,EAElCE,EAAW,CACf,WAAY,CACV,MAAO,IAAIR,EAAc,OAAQ,MAAOJ,EAAK,CAAC,CAAC,EAC/C,MAAO,IAAII,EAAc,QAAS,OAAQJ,EAAK,CAAC,CAAC,EACjD,MAAO,IAAII,EAAc,QAAS,MAAOJ,EAAK,CAAC,CAAC,EAChD,MAAO,IAAII,EAAc,SAAU,OAAQJ,EAAK,CAAC,CAAC,EAClD,MAAO,IAAII,EAAc,SAAU,OAAQJ,EAAK,CAAC,CAAC,EAClD,MAAO,IAAII,EAAc,SAAU,MAAOJ,EAAK,EAAE,CAAC,EAClD,MAAO,IAAII,EAAc,SAAU,MAAOJ,EAAK,EAAE,CAAC,EAClD,MAAO,IAAII,EAAc,SAAU,MAAOJ,EAAK,EAAE,CAAC,EAClD,MAAO,IAAII,EAAc,UAAW,OAAQJ,EAAK,EAAE,CAAC,EACpD,OAAQ,IAAII,EAAc,UAAW,OAAQJ,EAAK,EAAE,CAAC,EACrD,OAAQ,IAAII,EAAc,UAAW,OAAQJ,EAAK,EAAE,CAAC,EACrD,OAAQ,IAAII,EAAc,SAAU,MAAOJ,EAAK,EAAE,CAAC,CACrD,CACF,EACA,OAAOW,EAAO,qBAAqB,CAAC,EAAE,cAAcC,CAAQ,CAC9D,CAAC,EAED,GAAG,6CAA8C,IAAM,CAErD,MAAMF,EAAQ,CACZ,WAAY,CACV,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,OAAQ,EAClC,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,QAAS,EACnC,CAAE,KAAM,WAAY,KAAM,SAAU,EACpC,CAAE,KAAM,WAAY,KAAM,QAAS,CACrC,CACF,EAEMC,EAAS,IAAIF,EAAgBC,CAAK,EAElCE,EAAW,CACf,WAAY,CACV,SAAU,IAAIP,EAAW,MAAM,EAC/B,SAAU,IAAIA,EAAW,OAAO,EAChC,SAAU,IAAIA,EAAW,MAAM,EAC/B,SAAU,IAAIA,EAAW,QAAQ,EACjC,SAAU,IAAIA,EAAW,SAAS,EAClC,SAAU,IAAIA,EAAW,QAAQ,CACnC,CACF,EACA,OAAOM,EAAO,qBAAqB,CAAC,EAAE,cAAcC,CAAQ,CAC9D,CAAC,EAED,GAAG,+BAAgC,IAAM,CAEvC,MAAMF,EAAQ,CACZ,WAAY,CACV,CAAE,KAAM,QAAS,KAAM,SAAU,EACjC,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,QAAS,KAAM,QAAS,CAClC,CACF,EAEMC,EAAS,IAAIF,EAAgBC,CAAK,EAElCE,EAAW,CACf,WAAY,CACV,MAAO,IAAIR,EAAc,UAAW,UAAWH,CAAO,EACtD,MAAO,IAAIG,EAAc,OAAQ,OAAQH,CAAO,EAChD,MAAO,IAAIG,EAAc,SAAU,SAAUH,CAAO,CACtD,CACF,EACA,OAAOU,EAAO,qBAAqB,CAAC,EAAE,cAAcC,CAAQ,CAC9D,CAAC,EAED,GAAG,eAAgB,IAAM,CAEvB,MAAMF,EAAQ,CACZ,WAAY,CACV,CAAE,KAAM,QAAS,KAAM,WAAY,EACnC,CAAE,KAAM,QAAS,KAAM,WAAY,EACnC,CAAE,KAAM,QAAS,KAAM,gBAAiB,EACxC,CAAE,KAAM,QAAS,KAAM,kBAAmB,CAC5C,CACF,EAEMC,EAAS,IAAIF,EAAgBC,CAAK,EAElCE,EAAW,CACf,WAAY,CACV,MAAO,IAAIT,EACT,YACA,IAAIC,EAAc,UAAW,UAAWH,CAAO,EAC/C,UACAA,EACA,CAACA,CAAO,CACV,EACA,MAAO,IAAIE,EACT,YACA,IAAIC,EAAc,SAAU,OAAQJ,EAAK,CAAC,CAAC,EAC3C,SACAA,EAAK,CAAC,EACN,CAACA,EAAK,CAAC,CAAC,CACV,EACA,MAAO,IAAIG,EACT,iBACA,IAAIE,EAAW,QAAQ,EACvB,cACAL,EAAK,CAAC,EACN,CAACA,EAAK,CAAC,EAAGC,EAASD,EAAK,CAAC,CAAC,CAC5B,EACA,MAAO,IAAIG,EACT,mBACA,IAAIC,EAAc,SAAU,SAAUH,CAAO,EAC7C,iBACAA,EACA,CAACD,EAAK,CAAC,EAAGC,EAASD,EAAK,CAAC,EAAGC,CAAO,CACrC,CACF,CACF,EACA,OAAOU,EAAO,qBAAqB,CAAC,EAAE,cAAcC,CAAQ,CAC9D,CAAC,EAED,GAAG,sBAAuB,IAAM,CAE9B,MAAMF,EAAQ,CACZ,WAAY,CAAC,CAAE,KAAM,OAAQ,KAAM,mBAAoB,CAAC,CAC1D,EAEMC,EAAS,IAAIF,EAAgBC,CAAK,EAElCE,EAAW,CACf,WAAY,CACV,KAAM,IAAIP,EAAW,mBAAmB,CAC1C,CACF,EACA,OAAOM,EAAO,qBAAqB,CAAC,EAAE,cAAcC,CAAQ,CAC9D,CAAC,CACH,CAAC,EAED,SAAS,oCAAqC,IAAM,CAClD,MAAMC,EAAqB,CACzB,OAAQ,CACN,QAAS,EACT,KAAM,aACN,kBAAmB,6CACnB,QAAS,GACX,EACA,QAAS,CACP,SAAU,cACV,KAAM,CACJ,KAAM,MACN,QAAS,CACP,6CACA,4CACF,CACF,EACA,GAAI,CACF,CACE,QAAS,CACP,6CACA,6CACA,4CACF,EACA,KAAM,KACR,CACF,CACF,EACA,YAAa,OACb,MAAO,CACL,aAAc,CACZ,CAAE,KAAM,OAAQ,KAAM,QAAS,EAC/B,CAAE,KAAM,UAAW,KAAM,QAAS,EAClC,CAAE,KAAM,UAAW,KAAM,SAAU,EACnC,CAAE,KAAM,oBAAqB,KAAM,SAAU,CAC/C,EACA,KAAM,CACJ,CAAE,KAAM,OAAQ,KAAM,QAAS,EAC/B,CAAE,KAAM,KAAM,KAAM,WAAY,EAChC,CAAE,KAAM,WAAY,KAAM,QAAS,CACrC,EACA,OAAQ,CACN,CAAE,KAAM,OAAQ,KAAM,QAAS,EAC/B,CAAE,KAAM,UAAW,KAAM,WAAY,CACvC,CACF,CACF,EAEA,GAAG,0BAA2B,IAAM,CAElC,MAAMH,EAAQG,EAAQ,MAChBC,EAAcD,EAAQ,YACtBE,EAAUF,EAAQ,QAIlBG,EAFS,IAAIP,EAAgBC,CAAK,EAElB,MAAMI,EAAaC,CAAO,EAC1CH,EAAW,CACf,CACE,KAAM,GACN,KAAM,GACN,MAAO,IAAIJ,EAAmBM,CAAW,CAC3C,EACA,CACE,KAAM,YACN,KAAM,SACN,MAAO,IAAIP,EAAoB,IAAI,YAAY,EAAE,OAAO,KAAK,CAAC,CAChE,EACA,CACE,KAAM,eACN,KAAM,YACN,MAAO,IAAID,EAAoB,CAAC,CAClC,EACA,CACE,KAAM,kBACN,KAAM,UACN,MAAO,IAAIC,EACTR,EAAmB,4CAA4C,CACjE,CACF,EACA,CACE,KAAM,kBACN,KAAM,UACN,MAAO,IAAIQ,EACTR,EAAmB,4CAA4C,CACjE,CACF,EACA,CAAE,KAAM,KAAM,KAAM,YAAa,MAAO,IAAIO,EAAoB,CAAC,CAAE,EACnE,CACE,KAAM,aACN,KAAM,SACN,MAAO,IAAIC,EAAoB,IAAI,YAAY,EAAE,OAAO,KAAK,CAAC,CAChE,EACA,CACE,KAAM,gBACN,KAAM,YACN,MAAO,IAAID,EAAoB,CAAC,CAClC,EACA,CACE,KAAM,mBACN,KAAM,UACN,MAAO,IAAIC,EACTR,EAAmB,4CAA4C,CACjE,CACF,EACA,CACE,KAAM,mBACN,KAAM,UACN,MAAO,IAAIQ,EACTR,EAAmB,4CAA4C,CACjE,CACF,EACA,CACE,KAAM,mBACN,KAAM,UACN,MAAO,IAAIQ,EACTR,EAAmB,4CAA4C,CACjE,CACF,EACA,CACE,KAAM,WACN,KAAM,SACN,MAAO,IAAIQ,EAAoB,IAAI,YAAY,EAAE,OAAO,aAAa,CAAC,CACxE,CACF,EACA,OAAOS,CAAM,EAAE,cAAcd,EAAMU,CAAQ,CAAC,CAC9C,CAAC,EAED,GAAG,yBAA0B,IAAM,CAEjC,MAAMF,EAAQG,EAAQ,MAChBC,EAAc,eACdC,EAAUF,EAAQ,OAElBF,EAAS,IAAIF,EAAgBC,CAAK,EAElCE,EAAW,CACf,CACE,KAAM,GACN,KAAM,GACN,MAAO,IAAIJ,EAAmBM,CAAW,CAC3C,EACA,CACE,KAAM,OACN,KAAM,SACN,MAAO,IAAIP,EAAoB,IAAI,YAAY,EAAE,OAAO,YAAY,CAAC,CACvE,EACA,CACE,KAAM,UACN,KAAM,SACN,MAAO,IAAIA,EAAoB,IAAI,YAAY,EAAE,OAAO,GAAG,CAAC,CAC9D,EACA,CACE,KAAM,UACN,KAAM,UACN,MAAO,IAAIA,EAAoB,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CACrD,EACA,CACE,KAAM,oBACN,KAAM,UACN,MAAO,IAAIA,EACTR,EAAmB,4CAA4C,CACjE,CACF,CACF,EACMiB,EAASL,EAAO,MAAMG,EAAaC,CAAO,EAChD,OAAOC,CAAM,EAAE,cAAcd,EAAMU,CAAQ,CAAC,CAC9C,CAAC,EAED,GAAG,uBAAwB,IAAM,CAE/B,MAAMF,EAAQG,EAAQ,MAChBC,EAAc,UACdC,EAAUF,EAAQ,OAIlBG,EAFS,IAAIP,EAAgBC,CAAK,EAElB,MAAMI,EAAaC,CAAO,EAChD,OAAOC,EAAO,OAAO,CAAC,EAAE,cAAc,EAAI,CAC5C,CAAC,EAED,GAAG,0CAA2C,IAAM,CAElD,MAAMN,EAAQ,CACZ,KAAM,CAAC,CAAE,KAAM,OAAQ,KAAM,QAAS,CAAC,CACzC,EACMI,EAAc,OACdC,EAAU,CACd,KAAM,4CACR,EAIMC,EAFS,IAAIP,EAAgBC,CAAK,EAElB,MAAMI,EAAaC,CAAO,EAChD,OAAOC,EAAO,OAAO,CAAC,EAAE,cAAc,EAAI,CAC5C,CAAC,EAED,GAAG,wCAAyC,IAAM,CAEhD,MAAMN,EAAQ,CACZ,KAAM,CAAC,CAAE,KAAM,OAAQ,KAAM,UAAW,CAAC,CAC3C,EACMI,EAAc,OACdC,EAAU,CACd,KAAM,CAAC,4CAA4C,CACrD,EAIMC,EAFS,IAAIP,EAAgBC,CAAK,EAElB,MAAMI,EAAaC,CAAO,EAChD,OAAOC,EAAO,OAAO,CAAC,EAAE,cAAc,EAAI,CAC5C,CAAC,EAED,GAAG,0BAA2B,IAAM,CAElC,MAAMN,EAAQ,CACZ,KAAM,CAAC,CAAE,KAAM,OAAQ,KAAM,OAAQ,CAAC,CACxC,EACMI,EAAc,OACdC,EAAU,CACd,KAAM,GACR,EAIMC,EAFS,IAAIP,EAAgBC,CAAK,EAElB,MAAMI,EAAaC,CAAO,EAChD,OAAOC,EAAO,OAAO,CAAC,EAAE,cAAc,EAAI,CAC5C,CAAC,EAED,GAAG,mCAAoC,IAAM,CAE3C,MAAMN,EAAQ,CACZ,KAAM,CAAC,CAAE,KAAM,OAAQ,KAAM,OAAQ,CAAC,CACxC,EACMI,EAAc,OACdC,EAAU,CACd,KAAM,CAAC,EAAE,CACX,EAIMC,EAFS,IAAIP,EAAgBC,CAAK,EAElB,MAAMI,EAAaC,CAAO,EAChD,OAAOC,EAAO,OAAO,CAAC,EAAE,cAAc,EAAI,CAC5C,CAAC,EAED,GAAG,oCAAqC,IAAM,CAE5C,MAAMN,EAAQ,CACZ,KAAM,CAAC,CAAE,KAAM,OAAQ,KAAM,OAAQ,CAAC,CACxC,EACMI,EAAc,OACdC,EAAU,CACd,KAAM,CAAE,KAAM,EAAG,CACnB,EAIMC,EAFS,IAAIP,EAAgBC,CAAK,EAElB,MAAMI,EAAaC,CAAO,EAChD,OAAOC,EAAO,OAAO,CAAC,EAAE,cAAc,EAAI,CAC5C,CAAC,EAED,GAAG,4BAA6B,IAAM,CAEpC,MAAMN,EAAQ,CACZ,KAAM,CAAC,CAAE,KAAM,OAAQ,KAAM,QAAS,CAAC,EACvC,OAAQ,CAAC,CAAE,KAAM,OAAQ,KAAM,OAAQ,CAAC,CAC1C,EACMI,EAAc,OACdC,EAAU,CACd,KAAM,EACR,EAIMC,EAFS,IAAIP,EAAgBC,CAAK,EAElB,MAAMI,EAAaC,CAAO,EAChD,OAAOC,EAAO,OAAO,CAAC,EAAE,cAAc,EAAI,CAC5C,CAAC,EAED,GAAG,oCAAqC,IAAM,CAE5C,MAAMN,EAAQ,CACZ,KAAM,CAAC,CAAE,KAAM,OAAQ,KAAM,OAAQ,CAAC,CACxC,EACMI,EAAc,OACdC,EAAU,CACd,GAAI,EACN,EAIMC,EAFS,IAAIP,EAAgBC,CAAK,EAElB,MAAMI,EAAaC,CAAO,EAChD,OAAOC,EAAO,OAAO,CAAC,EAAE,cAAc,EAAI,CAC5C,CAAC,EAED,GAAG,2BAA4B,IAAM,CAEnC,MAAMN,EAAQ,CACZ,KAAM,CAAC,CAAE,KAAM,OAAQ,KAAM,SAAU,CAAC,CAC1C,EACMI,EAAc,OACdC,EAAU,CACd,KAAM,EACR,EAIMC,EAFS,IAAIP,EAAgBC,CAAK,EAElB,MAAMI,EAAaC,CAAO,EAChD,OAAOC,EAAO,OAAO,CAAC,EAAE,cAAc,EAAI,CAC5C,CAAC,EAED,GAAG,gCAAiC,IAAM,CAExC,MAAMN,EAAQ,CACZ,KAAM,CAAC,CAAE,KAAM,OAAQ,KAAM,UAAW,CAAC,CAC3C,EACMI,EAAc,OACdC,EAAU,CACd,KAAM,CAAC,EAAE,CACX,EAIMC,EAFS,IAAIP,EAAgBC,CAAK,EAElB,MAAMI,EAAaC,CAAO,EAChD,OAAOC,EAAO,OAAO,CAAC,EAAE,cAAc,EAAI,CAC5C,CAAC,CACH,CAAC",
|
|
4
|
+
"sourcesContent": ["import { hexaStringToBuffer } from \"@ledgerhq/device-management-kit\";\nimport { Just, Nothing, Right } from \"purify-ts\";\n\nimport { type TypedData } from \"@api/model/TypedData\";\nimport {\n ArrayType,\n PrimitiveType,\n StructType,\n TypedDataValueArray,\n TypedDataValueField,\n TypedDataValueRoot,\n} from \"@internal/typed-data/model/Types\";\n\nimport { TypedDataParser } from \"./TypedDataParser\";\n\ndescribe(\"TypedDataParser - types parsing\", () => {\n it(\"Parse primitive types bytes\", () => {\n // GIVEN\n const types = {\n TestStruct: [\n { name: \"test1\", type: \"bytes\" },\n { name: \"test2\", type: \"bytes1\" },\n { name: \"test3\", type: \"bytes2\" },\n { name: \"test4\", type: \"bytes31\" },\n { name: \"test5\", type: \"bytes32\" },\n ],\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const expected = {\n TestStruct: {\n test1: new PrimitiveType(\"bytes\", \"bytes\", Nothing),\n test2: new PrimitiveType(\"bytes1\", \"bytes\", Just(1)),\n test3: new PrimitiveType(\"bytes2\", \"bytes\", Just(2)),\n test4: new PrimitiveType(\"bytes31\", \"bytes\", Just(31)),\n test5: new PrimitiveType(\"bytes32\", \"bytes\", Just(32)),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Parse primitive types bytes, out of bound\", () => {\n // GIVEN\n const types = {\n TestStruct: [\n { name: \"invalid1\", type: \"bytes0\" },\n { name: \"invalid2\", type: \"bytes33\" },\n ],\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const expected = {\n TestStruct: {\n invalid1: new StructType(\"bytes0\"),\n invalid2: new StructType(\"bytes33\"),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Parse primitive types number\", () => {\n // GIVEN\n const types = {\n TestStruct: [\n { name: \"test1\", type: \"int8\" },\n { name: \"test2\", type: \"uint8\" },\n { name: \"test3\", type: \"int16\" },\n { name: \"test4\", type: \"uint32\" },\n { name: \"test5\", type: \"uint64\" },\n { name: \"test6\", type: \"int128\" },\n { name: \"test7\", type: \"int136\" },\n { name: \"test8\", type: \"int144\" },\n { name: \"test9\", type: \"uint240\" },\n { name: \"test10\", type: \"uint248\" },\n { name: \"test11\", type: \"uint256\" },\n { name: \"test12\", type: \"int256\" },\n ],\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const expected = {\n TestStruct: {\n test1: new PrimitiveType(\"int8\", \"int\", Just(1)),\n test2: new PrimitiveType(\"uint8\", \"uint\", Just(1)),\n test3: new PrimitiveType(\"int16\", \"int\", Just(2)),\n test4: new PrimitiveType(\"uint32\", \"uint\", Just(4)),\n test5: new PrimitiveType(\"uint64\", \"uint\", Just(8)),\n test6: new PrimitiveType(\"int128\", \"int\", Just(16)),\n test7: new PrimitiveType(\"int136\", \"int\", Just(17)),\n test8: new PrimitiveType(\"int144\", \"int\", Just(18)),\n test9: new PrimitiveType(\"uint240\", \"uint\", Just(30)),\n test10: new PrimitiveType(\"uint248\", \"uint\", Just(31)),\n test11: new PrimitiveType(\"uint256\", \"uint\", Just(32)),\n test12: new PrimitiveType(\"int256\", \"int\", Just(32)),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Parse primitive types number, out of bound\", () => {\n // GIVEN\n const types = {\n TestStruct: [\n { name: \"invalid1\", type: \"int0\" },\n { name: \"invalid2\", type: \"uint0\" },\n { name: \"invalid3\", type: \"int7\" },\n { name: \"invalid4\", type: \"int257\" },\n { name: \"invalid5\", type: \"uint257\" },\n { name: \"invalid6\", type: \"int512\" },\n ],\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const expected = {\n TestStruct: {\n invalid1: new StructType(\"int0\"),\n invalid2: new StructType(\"uint0\"),\n invalid3: new StructType(\"int7\"),\n invalid4: new StructType(\"int257\"),\n invalid5: new StructType(\"uint257\"),\n invalid6: new StructType(\"int512\"),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Parse primitive types others\", () => {\n // GIVEN\n const types = {\n TestStruct: [\n { name: \"test1\", type: \"address\" },\n { name: \"test2\", type: \"bool\" },\n { name: \"test3\", type: \"string\" },\n ],\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const expected = {\n TestStruct: {\n test1: new PrimitiveType(\"address\", \"address\", Nothing),\n test2: new PrimitiveType(\"bool\", \"bool\", Nothing),\n test3: new PrimitiveType(\"string\", \"string\", Nothing),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Parse arrays\", () => {\n // GIVEN\n const types = {\n TestStruct: [\n { name: \"test1\", type: \"address[]\" },\n { name: \"test2\", type: \"uint16[3]\" },\n { name: \"test3\", type: \"custom[2][][3]\" },\n { name: \"test4\", type: \"string[2][][3][]\" },\n ],\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const expected = {\n TestStruct: {\n test1: new ArrayType(\n \"address[]\",\n new PrimitiveType(\"address\", \"address\", Nothing),\n \"address\",\n Nothing,\n [Nothing],\n ),\n test2: new ArrayType(\n \"uint16[3]\",\n new PrimitiveType(\"uint16\", \"uint\", Just(2)),\n \"uint16\",\n Just(3),\n [Just(3)],\n ),\n test3: new ArrayType(\n \"custom[2][][3]\",\n new StructType(\"custom\"),\n \"custom[2][]\",\n Just(3),\n [Just(2), Nothing, Just(3)],\n ),\n test4: new ArrayType(\n \"string[2][][3][]\",\n new PrimitiveType(\"string\", \"string\", Nothing),\n \"string[2][][3]\",\n Nothing,\n [Just(2), Nothing, Just(3), Nothing],\n ),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Parse custom struct\", () => {\n // GIVEN\n const types = {\n TestStruct: [{ name: \"test\", type: \"MyCustomStructure\" }],\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const expected = {\n TestStruct: {\n test: new StructType(\"MyCustomStructure\"),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Don't append domain default types if already present\", () => {\n // GIVEN\n const types = {\n EIP712Domain: [{ name: \"name\", type: \"string\" }],\n TestStruct: [{ name: \"test\", type: \"MyCustomStructure\" }],\n };\n // WHEN\n const parser = new TypedDataParser(types, {\n name: \"Seaport\",\n version: \"1.5\",\n chainId: 1,\n verifyingContract: \"0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC\",\n salt: \"0x42\",\n });\n // THEN\n const expected = {\n EIP712Domain: {\n name: new PrimitiveType(\"string\", \"string\", Nothing),\n },\n TestStruct: {\n test: new StructType(\"MyCustomStructure\"),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Append domain default types\", () => {\n // GIVEN\n const types = {\n TestStruct: [{ name: \"test\", type: \"MyCustomStructure\" }],\n };\n // WHEN\n const parser = new TypedDataParser(types, {\n name: \"Seaport\",\n version: \"1.5\",\n chainId: 1,\n verifyingContract: \"0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC\",\n salt: \"0x42\",\n });\n // THEN\n const expected = {\n EIP712Domain: {\n name: new PrimitiveType(\"string\", \"string\", Nothing),\n version: new PrimitiveType(\"string\", \"string\", Nothing),\n chainId: new PrimitiveType(\"uint256\", \"uint\", Just(32)),\n verifyingContract: new PrimitiveType(\"address\", \"address\", Nothing),\n salt: new PrimitiveType(\"bytes32\", \"bytes\", Just(32)),\n },\n TestStruct: {\n test: new StructType(\"MyCustomStructure\"),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Append partial domain default types\", () => {\n // GIVEN\n const types = {\n TestStruct: [{ name: \"test\", type: \"MyCustomStructure\" }],\n };\n // WHEN\n const parser = new TypedDataParser(types, {\n name: \"Seaport\",\n chainId: 1,\n verifyingContract: \"0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC\",\n });\n // THEN\n const expected = {\n EIP712Domain: {\n name: new PrimitiveType(\"string\", \"string\", Nothing),\n chainId: new PrimitiveType(\"uint256\", \"uint\", Just(32)),\n verifyingContract: new PrimitiveType(\"address\", \"address\", Nothing),\n },\n TestStruct: {\n test: new StructType(\"MyCustomStructure\"),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n});\n\ndescribe(\"TypedDataParser - message parsing\", () => {\n const MESSAGE: TypedData = {\n domain: {\n chainId: 0,\n name: \"Ether Mail\",\n verifyingContract: \"0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC\",\n version: \"1\",\n },\n message: {\n contents: \"Hello, Bob!\",\n from: {\n name: \"Cow\",\n wallets: [\n \"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826\",\n \"0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF\",\n ],\n },\n to: [\n {\n wallets: [\n \"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB\",\n \"0xB0BdaBea57B0BDABeA57b0bdABEA57b0BDabEa57\",\n \"0xB0B0b0b0b0b0B000000000000000000000000000\",\n ],\n name: \"Bob\",\n },\n ],\n },\n primaryType: \"Mail\",\n types: {\n EIP712Domain: [\n { name: \"name\", type: \"string\" },\n { name: \"version\", type: \"string\" },\n { name: \"chainId\", type: \"uint256\" },\n { name: \"verifyingContract\", type: \"address\" },\n ],\n Mail: [\n { name: \"from\", type: \"Person\" },\n { name: \"to\", type: \"Person[1]\" },\n { name: \"contents\", type: \"string\" },\n ],\n Person: [\n { name: \"name\", type: \"string\" },\n { name: \"wallets\", type: \"address[]\" },\n ],\n },\n };\n\n it(\"Parse an EIP712 message\", () => {\n // GIVEN\n const types = MESSAGE.types;\n const primaryType = MESSAGE.primaryType;\n const message = MESSAGE.message;\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const parsed = parser.parse(primaryType, message);\n const expected = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(primaryType),\n },\n {\n path: \"from.name\",\n type: \"string\",\n value: new TypedDataValueField(new TextEncoder().encode(\"Cow\")),\n },\n {\n path: \"from.wallets\",\n type: \"address[]\",\n value: new TypedDataValueArray(2),\n },\n {\n path: \"from.wallets.[]\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826\")!,\n ),\n },\n {\n path: \"from.wallets.[]\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF\")!,\n ),\n },\n { path: \"to\", type: \"Person[1]\", value: new TypedDataValueArray(1) },\n {\n path: \"to.[].name\",\n type: \"string\",\n value: new TypedDataValueField(new TextEncoder().encode(\"Bob\")),\n },\n {\n path: \"to.[].wallets\",\n type: \"address[]\",\n value: new TypedDataValueArray(3),\n },\n {\n path: \"to.[].wallets.[]\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB\")!,\n ),\n },\n {\n path: \"to.[].wallets.[]\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xB0BdaBea57B0BDABeA57b0bdABEA57b0BDabEa57\")!,\n ),\n },\n {\n path: \"to.[].wallets.[]\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xB0B0b0b0b0b0B000000000000000000000000000\")!,\n ),\n },\n {\n path: \"contents\",\n type: \"string\",\n value: new TypedDataValueField(new TextEncoder().encode(\"Hello, Bob!\")),\n },\n ];\n expect(parsed).toStrictEqual(Right(expected));\n });\n\n it(\"Parse an EIP712 domain\", () => {\n // GIVEN\n const types = MESSAGE.types;\n const primaryType = \"EIP712Domain\";\n const message = MESSAGE.domain;\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const expected = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(primaryType),\n },\n {\n path: \"name\",\n type: \"string\",\n value: new TypedDataValueField(new TextEncoder().encode(\"Ether Mail\")),\n },\n {\n path: \"version\",\n type: \"string\",\n value: new TypedDataValueField(new TextEncoder().encode(\"1\")),\n },\n {\n path: \"chainId\",\n type: \"uint256\",\n value: new TypedDataValueField(Uint8Array.from([0])),\n },\n {\n path: \"verifyingContract\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC\")!,\n ),\n },\n ];\n const parsed = parser.parse(primaryType, message);\n expect(parsed).toStrictEqual(Right(expected));\n });\n\n it(\"Invalid primary type\", () => {\n // GIVEN\n const types = MESSAGE.types;\n const primaryType = \"unknown\";\n const message = MESSAGE.domain;\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Struct points to an unknown custom type\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"Person\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: \"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826\",\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Array contains an unknown custom type\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"Person[]\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: [\"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826\"],\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Invalid primitive value\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"uint8\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: 3000,\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Array instead of primitive value\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"uint8\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: [42],\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Struct instead of primitive value\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"uint8\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: { data: 42 },\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Struct value not a record\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"Person\" }],\n Person: [{ name: \"data\", type: \"uint8\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: 42,\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Struct field not present in value\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"uint8\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n to: 42,\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Array value not an array\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"uint8[]\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: 42,\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Array value with invalid size\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"uint8[3]\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: [42],\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["hexaStringToBuffer", "Just", "Nothing", "Right", "ArrayType", "PrimitiveType", "StructType", "TypedDataValueArray", "TypedDataValueField", "TypedDataValueRoot", "TypedDataParser", "types", "parser", "expected", "MESSAGE", "primaryType", "message", "parsed"]
|
|
7
7
|
}
|