@ledgerhq/device-signer-kit-solana 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -1
- package/lib/cjs/api/SignerSolana.js +1 -1
- package/lib/cjs/api/SignerSolana.js.map +1 -1
- package/lib/cjs/api/SignerSolanaBuilder.js +1 -1
- package/lib/cjs/api/SignerSolanaBuilder.js.map +3 -3
- package/lib/cjs/api/SolanaTools.js +2 -0
- package/lib/cjs/api/SolanaTools.js.map +7 -0
- package/lib/cjs/api/SolanaToolsBuilder.js +2 -0
- package/lib/cjs/api/SolanaToolsBuilder.js.map +7 -0
- package/lib/cjs/api/app-binder/GenerateTransactionDeviceActionTypes.js +2 -0
- package/lib/cjs/api/app-binder/GenerateTransactionDeviceActionTypes.js.map +7 -0
- package/lib/cjs/api/app-binder/SignMessageDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/SignMessageDeviceActionTypes.js.map +1 -1
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +1 -1
- package/lib/cjs/api/index.js +1 -1
- package/lib/cjs/api/index.js.map +3 -3
- package/lib/cjs/api/model/AddressOption.js +1 -1
- package/lib/cjs/api/model/AddressOption.js.map +1 -1
- package/lib/cjs/api/model/MessageOptions.js +2 -0
- package/lib/cjs/api/model/MessageOptions.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/index.js.map +1 -1
- package/lib/cjs/internal/DefaultSignerSolana.js +1 -1
- package/lib/cjs/internal/DefaultSignerSolana.js.map +3 -3
- package/lib/cjs/internal/DefaultSignerSolana.test.js +1 -1
- package/lib/cjs/internal/DefaultSignerSolana.test.js.map +3 -3
- package/lib/cjs/internal/DefaultSolanaTools.js +2 -0
- package/lib/cjs/internal/DefaultSolanaTools.js.map +7 -0
- package/lib/cjs/internal/DefaultSolanaTools.test.js +2 -0
- package/lib/cjs/internal/DefaultSolanaTools.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/SolanaAppBinder.js +1 -1
- package/lib/cjs/internal/app-binder/SolanaAppBinder.js.map +3 -3
- package/lib/cjs/internal/app-binder/SolanaAppBinder.test.js +1 -1
- package/lib/cjs/internal/app-binder/SolanaAppBinder.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/GetChallengeCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/GetChallengeCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/GetChallengeCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/GetChallengeCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/GetPubKeyCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/GetPubKeyCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/GetPubKeyCommand.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/ProvideTLVDescriptorCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideTLVDescriptorCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideTLVDescriptorCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideTLVDescriptorCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideTrustedNamePKICommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideTrustedNamePKICommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideTrustedNamePKICommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideTrustedNamePKICommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/SignOffChainMessageCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/SignOffChainMessageCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignOffChainMessageCommand.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/utils/SolanaAppErrors.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/utils/SolanaAppErrors.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/device-action/GenerateTransactionDeviceAction.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/GenerateTransactionDeviceAction.js.map +7 -0
- package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.test.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js.map +2 -2
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map +3 -3
- package/lib/cjs/internal/app-binder/di/appBinderModule.js +1 -1
- package/lib/cjs/internal/app-binder/di/appBinderModule.js.map +3 -3
- package/lib/cjs/internal/app-binder/di/appBinderModule.test.js +1 -1
- package/lib/cjs/internal/app-binder/di/appBinderModule.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/services/ApplicationChecker.js +2 -0
- package/lib/cjs/internal/app-binder/services/ApplicationChecker.js.map +7 -0
- package/lib/cjs/internal/app-binder/services/ApplicationChecker.test.js +2 -0
- package/lib/cjs/internal/app-binder/services/ApplicationChecker.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/services/GenerateSolanaTransaction.js +2 -0
- package/lib/cjs/internal/app-binder/services/GenerateSolanaTransaction.js.map +7 -0
- package/lib/cjs/internal/app-binder/services/GenerateSolanaTransaction.test.js +2 -0
- package/lib/cjs/internal/app-binder/services/GenerateSolanaTransaction.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/services/TransactionInspector.js +4 -0
- package/lib/cjs/internal/app-binder/services/TransactionInspector.js.map +7 -0
- package/lib/cjs/internal/app-binder/services/TransactionInspector.test.js +2 -0
- package/lib/cjs/internal/app-binder/services/TransactionInspector.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/SendSignDataTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendSignDataTask.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/SendSignMessageTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendSignMessageTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/SendSignMessageTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendSignMessageTask.test.js.map +3 -3
- package/lib/cjs/internal/di.js +1 -1
- package/lib/cjs/internal/di.js.map +3 -3
- package/lib/cjs/internal/externalTypes.js +1 -1
- package/lib/cjs/internal/externalTypes.js.map +2 -2
- package/lib/cjs/internal/use-cases/address/GetAddressUseCase.js +1 -1
- package/lib/cjs/internal/use-cases/address/GetAddressUseCase.js.map +2 -2
- package/lib/cjs/internal/use-cases/address/GetAddressUseCase.test.js +1 -1
- package/lib/cjs/internal/use-cases/address/GetAddressUseCase.test.js.map +2 -2
- package/lib/cjs/internal/use-cases/app-configuration/GetAppConfiguration.test.js +1 -1
- package/lib/cjs/internal/use-cases/app-configuration/GetAppConfiguration.test.js.map +2 -2
- package/lib/cjs/internal/use-cases/di/useCasesModule.js +1 -1
- package/lib/cjs/internal/use-cases/di/useCasesModule.js.map +3 -3
- package/lib/cjs/internal/use-cases/di/useCasesModule.test.js +1 -1
- package/lib/cjs/internal/use-cases/di/useCasesModule.test.js.map +2 -2
- package/lib/cjs/internal/use-cases/di/useCasesTypes.js +1 -1
- package/lib/cjs/internal/use-cases/di/useCasesTypes.js.map +2 -2
- package/lib/cjs/internal/use-cases/generateTransaction/GenerateTransactionUseCase.js +2 -0
- package/lib/cjs/internal/use-cases/generateTransaction/GenerateTransactionUseCase.js.map +7 -0
- package/lib/cjs/internal/use-cases/generateTransaction/GenerateTransactionUseCase.test.js +2 -0
- package/lib/cjs/internal/use-cases/generateTransaction/GenerateTransactionUseCase.test.js.map +7 -0
- package/lib/cjs/internal/use-cases/message/SignMessageUseCase.js +1 -1
- package/lib/cjs/internal/use-cases/message/SignMessageUseCase.js.map +3 -3
- package/lib/cjs/internal/use-cases/message/SignMessageUseCase.test.js +1 -1
- package/lib/cjs/internal/use-cases/message/SignMessageUseCase.test.js.map +2 -2
- package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.js +1 -1
- package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.js.map +2 -2
- package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.test.js +1 -1
- package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.test.js.map +3 -3
- package/lib/cjs/package.json +21 -16
- package/lib/esm/api/SignerSolanaBuilder.js +1 -1
- package/lib/esm/api/SignerSolanaBuilder.js.map +3 -3
- package/lib/esm/api/SolanaTools.js +1 -0
- package/lib/esm/api/SolanaTools.js.map +7 -0
- package/lib/esm/api/SolanaToolsBuilder.js +2 -0
- package/lib/esm/api/SolanaToolsBuilder.js.map +7 -0
- package/lib/esm/api/app-binder/GenerateTransactionDeviceActionTypes.js +1 -0
- package/lib/esm/api/app-binder/GenerateTransactionDeviceActionTypes.js.map +7 -0
- package/lib/esm/api/index.js +1 -1
- package/lib/esm/api/index.js.map +3 -3
- package/lib/esm/api/model/MessageOptions.js +1 -0
- package/lib/esm/api/model/MessageOptions.js.map +7 -0
- package/lib/esm/internal/DefaultSignerSolana.js +1 -1
- package/lib/esm/internal/DefaultSignerSolana.js.map +3 -3
- package/lib/esm/internal/DefaultSignerSolana.test.js +1 -1
- package/lib/esm/internal/DefaultSignerSolana.test.js.map +3 -3
- package/lib/esm/internal/DefaultSolanaTools.js +2 -0
- package/lib/esm/internal/DefaultSolanaTools.js.map +7 -0
- package/lib/esm/internal/DefaultSolanaTools.test.js +2 -0
- package/lib/esm/internal/DefaultSolanaTools.test.js.map +7 -0
- package/lib/esm/internal/app-binder/SolanaAppBinder.js +1 -1
- package/lib/esm/internal/app-binder/SolanaAppBinder.js.map +3 -3
- package/lib/esm/internal/app-binder/SolanaAppBinder.test.js +1 -1
- package/lib/esm/internal/app-binder/SolanaAppBinder.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/GetChallengeCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/GetChallengeCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/GetChallengeCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/GetChallengeCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/GetPubKeyCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/GetPubKeyCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/GetPubKeyCommand.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/ProvideTLVDescriptorCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideTLVDescriptorCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideTLVDescriptorCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideTLVDescriptorCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideTrustedNamePKICommand.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideTrustedNamePKICommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideTrustedNamePKICommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideTrustedNamePKICommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/SignOffChainMessageCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/SignOffChainMessageCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SignOffChainMessageCommand.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/utils/SolanaAppErrors.test.js +1 -1
- package/lib/esm/internal/app-binder/command/utils/SolanaAppErrors.test.js.map +2 -2
- package/lib/esm/internal/app-binder/device-action/GenerateTransactionDeviceAction.js +2 -0
- package/lib/esm/internal/app-binder/device-action/GenerateTransactionDeviceAction.js.map +7 -0
- package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.test.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.test.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
- package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js +1 -1
- package/lib/esm/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js.map +2 -2
- package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js +1 -1
- package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map +3 -3
- package/lib/esm/internal/app-binder/di/appBinderModule.js +1 -1
- package/lib/esm/internal/app-binder/di/appBinderModule.js.map +3 -3
- package/lib/esm/internal/app-binder/di/appBinderModule.test.js +1 -1
- package/lib/esm/internal/app-binder/di/appBinderModule.test.js.map +2 -2
- package/lib/esm/internal/app-binder/services/ApplicationChecker.js +2 -0
- package/lib/esm/internal/app-binder/services/ApplicationChecker.js.map +7 -0
- package/lib/esm/internal/app-binder/services/ApplicationChecker.test.js +2 -0
- package/lib/esm/internal/app-binder/services/ApplicationChecker.test.js.map +7 -0
- package/lib/esm/internal/app-binder/services/GenerateSolanaTransaction.js +2 -0
- package/lib/esm/internal/app-binder/services/GenerateSolanaTransaction.js.map +7 -0
- package/lib/esm/internal/app-binder/services/GenerateSolanaTransaction.test.js +2 -0
- package/lib/esm/internal/app-binder/services/GenerateSolanaTransaction.test.js.map +7 -0
- package/lib/esm/internal/app-binder/services/TransactionInspector.js +4 -0
- package/lib/esm/internal/app-binder/services/TransactionInspector.js.map +7 -0
- package/lib/esm/internal/app-binder/services/TransactionInspector.test.js +2 -0
- package/lib/esm/internal/app-binder/services/TransactionInspector.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js +2 -0
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/SendSignDataTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/SendSignDataTask.test.js.map +2 -2
- package/lib/esm/internal/app-binder/task/SendSignMessageTask.js +1 -1
- package/lib/esm/internal/app-binder/task/SendSignMessageTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/SendSignMessageTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/SendSignMessageTask.test.js.map +3 -3
- package/lib/esm/internal/di.js +1 -1
- package/lib/esm/internal/di.js.map +3 -3
- package/lib/esm/internal/externalTypes.js +1 -1
- package/lib/esm/internal/externalTypes.js.map +2 -2
- package/lib/esm/internal/use-cases/address/GetAddressUseCase.js +1 -1
- package/lib/esm/internal/use-cases/address/GetAddressUseCase.js.map +2 -2
- package/lib/esm/internal/use-cases/address/GetAddressUseCase.test.js +1 -1
- package/lib/esm/internal/use-cases/address/GetAddressUseCase.test.js.map +2 -2
- package/lib/esm/internal/use-cases/app-configuration/GetAppConfiguration.test.js +1 -1
- package/lib/esm/internal/use-cases/app-configuration/GetAppConfiguration.test.js.map +2 -2
- package/lib/esm/internal/use-cases/di/useCasesModule.js +1 -1
- package/lib/esm/internal/use-cases/di/useCasesModule.js.map +3 -3
- package/lib/esm/internal/use-cases/di/useCasesModule.test.js +1 -1
- package/lib/esm/internal/use-cases/di/useCasesModule.test.js.map +2 -2
- package/lib/esm/internal/use-cases/di/useCasesTypes.js +1 -1
- package/lib/esm/internal/use-cases/di/useCasesTypes.js.map +2 -2
- package/lib/esm/internal/use-cases/generateTransaction/GenerateTransactionUseCase.js +2 -0
- package/lib/esm/internal/use-cases/generateTransaction/GenerateTransactionUseCase.js.map +7 -0
- package/lib/esm/internal/use-cases/generateTransaction/GenerateTransactionUseCase.test.js +2 -0
- package/lib/esm/internal/use-cases/generateTransaction/GenerateTransactionUseCase.test.js.map +7 -0
- package/lib/esm/internal/use-cases/message/SignMessageUseCase.js +1 -1
- package/lib/esm/internal/use-cases/message/SignMessageUseCase.js.map +3 -3
- package/lib/esm/internal/use-cases/message/SignMessageUseCase.test.js +1 -1
- package/lib/esm/internal/use-cases/message/SignMessageUseCase.test.js.map +2 -2
- package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.js +1 -1
- package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.js.map +2 -2
- package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.test.js +1 -1
- package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.test.js.map +3 -3
- package/lib/esm/package.json +21 -16
- package/lib/types/api/SignerSolana.d.ts +2 -1
- package/lib/types/api/SignerSolana.d.ts.map +1 -1
- package/lib/types/api/SignerSolanaBuilder.d.ts +12 -1
- package/lib/types/api/SignerSolanaBuilder.d.ts.map +1 -1
- package/lib/types/api/SolanaTools.d.ts +11 -0
- package/lib/types/api/SolanaTools.d.ts.map +1 -0
- package/lib/types/api/SolanaToolsBuilder.d.ts +39 -0
- package/lib/types/api/SolanaToolsBuilder.d.ts.map +1 -0
- package/lib/types/api/app-binder/GenerateTransactionDeviceActionTypes.d.ts +24 -0
- package/lib/types/api/app-binder/GenerateTransactionDeviceActionTypes.d.ts.map +1 -0
- package/lib/types/api/app-binder/SignMessageDeviceActionTypes.d.ts +1 -10
- package/lib/types/api/app-binder/SignMessageDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +10 -3
- package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/index.d.ts +3 -0
- package/lib/types/api/index.d.ts.map +1 -1
- package/lib/types/api/model/AddressOption.d.ts +1 -0
- package/lib/types/api/model/AddressOption.d.ts.map +1 -1
- 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/TransactionOptions.d.ts +7 -1
- package/lib/types/api/model/TransactionOptions.d.ts.map +1 -1
- package/lib/types/internal/DefaultSignerSolana.d.ts +6 -4
- package/lib/types/internal/DefaultSignerSolana.d.ts.map +1 -1
- package/lib/types/internal/DefaultSolanaTools.d.ts +20 -0
- package/lib/types/internal/DefaultSolanaTools.d.ts.map +1 -0
- package/lib/types/internal/DefaultSolanaTools.test.d.ts +2 -0
- package/lib/types/internal/DefaultSolanaTools.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/SolanaAppBinder.d.ts +11 -3
- package/lib/types/internal/app-binder/SolanaAppBinder.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/GetChallengeCommand.d.ts +11 -0
- package/lib/types/internal/app-binder/command/GetChallengeCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/GetChallengeCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/GetChallengeCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/GetPubKeyCommand.d.ts +2 -3
- package/lib/types/internal/app-binder/command/GetPubKeyCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideTLVDescriptorCommand.d.ts +13 -0
- package/lib/types/internal/app-binder/command/ProvideTLVDescriptorCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideTLVDescriptorCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/ProvideTLVDescriptorCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideTrustedNamePKICommand.d.ts +13 -0
- package/lib/types/internal/app-binder/command/ProvideTrustedNamePKICommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideTrustedNamePKICommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/ProvideTrustedNamePKICommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/SignOffChainMessageCommand.d.ts +0 -1
- package/lib/types/internal/app-binder/command/SignOffChainMessageCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/utils/SolanaApplicationErrors.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/GenerateTransactionDeviceAction.d.ts +23 -0
- package/lib/types/internal/app-binder/device-action/GenerateTransactionDeviceAction.d.ts.map +1 -0
- package/lib/types/internal/app-binder/device-action/SignTransactionDeviceAction.d.ts +15 -1
- package/lib/types/internal/app-binder/device-action/SignTransactionDeviceAction.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts +2 -1
- package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.d.ts +5 -2
- package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.d.ts.map +1 -1
- package/lib/types/internal/app-binder/di/appBinderModule.d.ts.map +1 -1
- package/lib/types/internal/app-binder/services/ApplicationChecker.d.ts +13 -0
- package/lib/types/internal/app-binder/services/ApplicationChecker.d.ts.map +1 -0
- package/lib/types/internal/app-binder/services/ApplicationChecker.test.d.ts +2 -0
- package/lib/types/internal/app-binder/services/ApplicationChecker.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/services/GenerateSolanaTransaction.d.ts +14 -0
- package/lib/types/internal/app-binder/services/GenerateSolanaTransaction.d.ts.map +1 -0
- package/lib/types/internal/app-binder/services/GenerateSolanaTransaction.test.d.ts +2 -0
- package/lib/types/internal/app-binder/services/GenerateSolanaTransaction.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/services/TransactionInspector.d.ts +21 -0
- package/lib/types/internal/app-binder/services/TransactionInspector.d.ts.map +1 -0
- package/lib/types/internal/app-binder/services/TransactionInspector.test.d.ts +2 -0
- package/lib/types/internal/app-binder/services/TransactionInspector.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts +24 -0
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts +15 -0
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/SendSignMessageTask.d.ts +7 -0
- package/lib/types/internal/app-binder/task/SendSignMessageTask.d.ts.map +1 -1
- package/lib/types/internal/di.d.ts +3 -1
- package/lib/types/internal/di.d.ts.map +1 -1
- package/lib/types/internal/externalTypes.d.ts +1 -0
- package/lib/types/internal/externalTypes.d.ts.map +1 -1
- package/lib/types/internal/use-cases/address/GetAddressUseCase.d.ts.map +1 -1
- package/lib/types/internal/use-cases/di/useCasesModule.d.ts.map +1 -1
- package/lib/types/internal/use-cases/di/useCasesTypes.d.ts +1 -0
- package/lib/types/internal/use-cases/di/useCasesTypes.d.ts.map +1 -1
- package/lib/types/internal/use-cases/generateTransaction/GenerateTransactionUseCase.d.ts +10 -0
- package/lib/types/internal/use-cases/generateTransaction/GenerateTransactionUseCase.d.ts.map +1 -0
- package/lib/types/internal/use-cases/generateTransaction/GenerateTransactionUseCase.test.d.ts +2 -0
- package/lib/types/internal/use-cases/generateTransaction/GenerateTransactionUseCase.test.d.ts.map +1 -0
- package/lib/types/internal/use-cases/message/SignMessageUseCase.d.ts +2 -1
- package/lib/types/internal/use-cases/message/SignMessageUseCase.d.ts.map +1 -1
- package/lib/types/internal/use-cases/transaction/SignTransactionUseCase.d.ts +3 -2
- package/lib/types/internal/use-cases/transaction/SignTransactionUseCase.d.ts.map +1 -1
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +23 -18
- package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js +0 -2
- package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js.map +0 -7
- package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js +0 -2
- package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js.map +0 -7
- package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js +0 -2
- package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js.map +0 -7
- package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js +0 -2
- package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js.map +0 -7
- package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.d.ts +0 -16
- package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.d.ts.map +0 -1
- package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.d.ts +0 -2
- package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.d.ts.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ApduResponse as a,CommandResultFactory as o,InvalidStatusWordError as x,isSuccessCommandResult as i}from"@ledgerhq/device-management-kit";import{Just as d,Nothing as p}from"purify-ts";import{SignTransactionCommand as n}from"./SignTransactionCommand";describe("SignTransactionCommand",()=>{const r={serializedTransaction:new Uint8Array,more:!1,extend:!1};describe("getApdu",()=>{it("should return the correct APDU when the data is empty",()=>{const e=new n(r).getApdu();expect(e.data).toStrictEqual(new Uint8Array),expect(e.cla).toBe(224),expect(e.ins).toBe(6),expect(e.p1).toBe(1),expect(e.p2).toBe(0)}),it("should return the correct APDU when the data is not empty",()=>{const e=new n({serializedTransaction:new Uint8Array([1,2,3]),more:!1,extend:!1}).getApdu();expect(e.data).toStrictEqual(new Uint8Array([1,2,3])),expect(e.cla).toBe(224),expect(e.ins).toBe(6),expect(e.p1).toBe(1),expect(e.p2).toBe(0)}),it("should return the correct APDU when the more flag is set",()=>{const e=new n({serializedTransaction:new Uint8Array([1,2,3]),more:!0,extend:!1}).getApdu();expect(e.data).toStrictEqual(new Uint8Array([1,2,3])),expect(e.cla).toBe(224),expect(e.ins).toBe(6),expect(e.p1).toBe(1),expect(e.p2).toBe(2)}),it("should return the correct APDU when the extend flag is set",()=>{const e=new n({serializedTransaction:new Uint8Array([1,2,3]),more:!1,extend:!0}).getApdu();expect(e.data).toStrictEqual(new Uint8Array([1,2,3])),expect(e.cla).toBe(224),expect(e.ins).toBe(6),expect(e.p1).toBe(1),expect(e.p2).toBe(1)}),it("should return the correct APDU when the more and extend flags are set",()=>{const e=new n({serializedTransaction:new Uint8Array([1,2,3]),more:!0,extend:!0}).getApdu();expect(e.data).toStrictEqual(new Uint8Array([1,2,3])),expect(e.cla).toBe(224),expect(e.ins).toBe(6),expect(e.p1).toBe(1),expect(e.p2).toBe(3)})}),describe("parseResponse",()=>{it("should return Noting when the response is empty",()=>{const e=new n(r).parseResponse(new a({statusCode:Uint8Array.from([144,0]),data:new Uint8Array([])}));expect(e).toStrictEqual(o({data:p}))}),it("should return the signature when the response is not empty",()=>{const t=new n(r),e=new Uint8Array(Array.from({length:64},(m,c)=>c+1)),s=t.parseResponse(new a({statusCode:Uint8Array.from([144,0]),data:e}));expect(s).toStrictEqual(o({data:d(e)}))}),it("should return an error when the response data is not valid",()=>{const e=new n(r).parseResponse(new a({statusCode:Uint8Array.from([144,0]),data:new Uint8Array([1])}));i(e)?fail("The result should be an error."):expect(e.error).toEqual(new x("Signature is missing"))})})});
|
|
1
|
+
import{ApduResponse as a,CommandResultFactory as o,InvalidStatusWordError as x,isSuccessCommandResult as i}from"@ledgerhq/device-management-kit";import{Just as d,Nothing as p}from"purify-ts";import{SignTransactionCommand as n}from"./SignTransactionCommand";describe("SignTransactionCommand",()=>{const r={serializedTransaction:new Uint8Array,more:!1,extend:!1};describe("getApdu",()=>{it("should return the correct APDU when the data is empty",()=>{const e=new n(r).getApdu();expect(e.data).toStrictEqual(new Uint8Array),expect(e.cla).toBe(224),expect(e.ins).toBe(6),expect(e.p1).toBe(1),expect(e.p2).toBe(0)}),it("should return the correct APDU when the data is not empty",()=>{const e=new n({serializedTransaction:new Uint8Array([1,2,3]),more:!1,extend:!1}).getApdu();expect(e.data).toStrictEqual(new Uint8Array([1,2,3])),expect(e.cla).toBe(224),expect(e.ins).toBe(6),expect(e.p1).toBe(1),expect(e.p2).toBe(0)}),it("should return the correct APDU when the more flag is set",()=>{const e=new n({serializedTransaction:new Uint8Array([1,2,3]),more:!0,extend:!1}).getApdu();expect(e.data).toStrictEqual(new Uint8Array([1,2,3])),expect(e.cla).toBe(224),expect(e.ins).toBe(6),expect(e.p1).toBe(1),expect(e.p2).toBe(2)}),it("should return the correct APDU when the extend flag is set",()=>{const e=new n({serializedTransaction:new Uint8Array([1,2,3]),more:!1,extend:!0}).getApdu();expect(e.data).toStrictEqual(new Uint8Array([1,2,3])),expect(e.cla).toBe(224),expect(e.ins).toBe(6),expect(e.p1).toBe(1),expect(e.p2).toBe(1)}),it("should return the correct APDU when the more and extend flags are set",()=>{const e=new n({serializedTransaction:new Uint8Array([1,2,3]),more:!0,extend:!0}).getApdu();expect(e.data).toStrictEqual(new Uint8Array([1,2,3])),expect(e.cla).toBe(224),expect(e.ins).toBe(6),expect(e.p1).toBe(1),expect(e.p2).toBe(3)})}),describe("parseResponse",()=>{it("should return Noting when the response is empty",()=>{const e=new n(r).parseResponse(new a({statusCode:Uint8Array.from([144,0]),data:new Uint8Array([])}));expect(e).toStrictEqual(o({data:p}))}),it("should return the signature when the response is not empty",()=>{const t=new n(r),e=new Uint8Array(Array.from({length:64},(m,c)=>c+1)),s=t.parseResponse(new a({statusCode:Uint8Array.from([144,0]),data:e}));expect(s).toStrictEqual(o({data:d(e)}))}),it("should return an error when the response data is not valid",()=>{const e=new n(r).parseResponse(new a({statusCode:Uint8Array.from([144,0]),data:new Uint8Array([1])}));i(e)?assert.fail("The result should be an error."):expect(e.error).toEqual(new x("Signature is missing"))})})});
|
|
2
2
|
//# sourceMappingURL=SignTransactionCommand.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/command/SignTransactionCommand.test.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n ApduResponse,\n CommandResultFactory,\n InvalidStatusWordError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\nimport { Just, Nothing } from \"purify-ts\";\n\nimport {\n SignTransactionCommand,\n type SignTransactionCommandArgs,\n} from \"./SignTransactionCommand\";\n\ndescribe(\"SignTransactionCommand\", () => {\n const defaultArgs: SignTransactionCommandArgs = {\n serializedTransaction: new Uint8Array(),\n more: false,\n extend: false,\n };\n\n describe(\"getApdu\", () => {\n it(\"should return the correct APDU when the data is empty\", () => {\n // GIVEN\n const command = new SignTransactionCommand(defaultArgs);\n\n // WHEN\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.data).toStrictEqual(new Uint8Array());\n expect(apdu.cla).toBe(0xe0);\n expect(apdu.ins).toBe(0x06);\n expect(apdu.p1).toBe(0x01);\n expect(apdu.p2).toBe(0x00);\n });\n\n it(\"should return the correct APDU when the data is not empty\", () => {\n // GIVEN\n const command = new SignTransactionCommand({\n serializedTransaction: new Uint8Array([0x01, 0x02, 0x03]),\n more: false,\n extend: false,\n });\n\n // WHEN\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.data).toStrictEqual(new Uint8Array([0x01, 0x02, 0x03]));\n expect(apdu.cla).toBe(0xe0);\n expect(apdu.ins).toBe(0x06);\n expect(apdu.p1).toBe(0x01);\n expect(apdu.p2).toBe(0x00);\n });\n\n it(\"should return the correct APDU when the more flag is set\", () => {\n // GIVEN\n const command = new SignTransactionCommand({\n serializedTransaction: new Uint8Array([0x01, 0x02, 0x03]),\n more: true,\n extend: false,\n });\n\n // WHEN\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.data).toStrictEqual(new Uint8Array([0x01, 0x02, 0x03]));\n expect(apdu.cla).toBe(0xe0);\n expect(apdu.ins).toBe(0x06);\n expect(apdu.p1).toBe(0x01);\n expect(apdu.p2).toBe(0x02);\n });\n\n it(\"should return the correct APDU when the extend flag is set\", () => {\n // GIVEN\n const command = new SignTransactionCommand({\n serializedTransaction: new Uint8Array([0x01, 0x02, 0x03]),\n more: false,\n extend: true,\n });\n\n // WHEN\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.data).toStrictEqual(new Uint8Array([0x01, 0x02, 0x03]));\n expect(apdu.cla).toBe(0xe0);\n expect(apdu.ins).toBe(0x06);\n expect(apdu.p1).toBe(0x01);\n expect(apdu.p2).toBe(0x01);\n });\n\n it(\"should return the correct APDU when the more and extend flags are set\", () => {\n // GIVEN\n const command = new SignTransactionCommand({\n serializedTransaction: new Uint8Array([0x01, 0x02, 0x03]),\n more: true,\n extend: true,\n });\n\n // WHEN\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.data).toStrictEqual(new Uint8Array([0x01, 0x02, 0x03]));\n expect(apdu.cla).toBe(0xe0);\n expect(apdu.ins).toBe(0x06);\n expect(apdu.p1).toBe(0x01);\n expect(apdu.p2).toBe(0x03);\n });\n });\n\n describe(\"parseResponse\", () => {\n it(\"should return Noting when the response is empty\", () => {\n // GIVEN\n const command = new SignTransactionCommand(defaultArgs);\n\n // WHEN\n const result = command.parseResponse(\n new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array([]),\n }),\n );\n\n // THEN\n expect(result).toStrictEqual(CommandResultFactory({ data: Nothing }));\n });\n\n it(\"should return the signature when the response is not empty\", () => {\n // GIVEN\n const command = new SignTransactionCommand(defaultArgs);\n const data = new Uint8Array(Array.from({ length: 64 }, (_, i) => i + 1));\n\n // WHEN\n const result = command.parseResponse(\n new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data,\n }),\n );\n\n // THEN\n expect(result).toStrictEqual(\n CommandResultFactory({\n data: Just(data),\n }),\n );\n });\n\n it(\"should return an error when the response data is not valid\", () => {\n // GIVEN\n const command = new SignTransactionCommand(defaultArgs);\n\n // WHEN\n const result = command.parseResponse(\n new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array([0x01]),\n }),\n );\n\n // THEN\n if (isSuccessCommandResult(result))\n fail(\"The result should be an error.\");\n else {\n expect(result.error).toEqual(\n new InvalidStatusWordError(\"Signature is missing\"),\n );\n }\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["import {\n ApduResponse,\n CommandResultFactory,\n InvalidStatusWordError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\nimport { Just, Nothing } from \"purify-ts\";\n\nimport {\n SignTransactionCommand,\n type SignTransactionCommandArgs,\n} from \"./SignTransactionCommand\";\n\ndescribe(\"SignTransactionCommand\", () => {\n const defaultArgs: SignTransactionCommandArgs = {\n serializedTransaction: new Uint8Array(),\n more: false,\n extend: false,\n };\n\n describe(\"getApdu\", () => {\n it(\"should return the correct APDU when the data is empty\", () => {\n // GIVEN\n const command = new SignTransactionCommand(defaultArgs);\n\n // WHEN\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.data).toStrictEqual(new Uint8Array());\n expect(apdu.cla).toBe(0xe0);\n expect(apdu.ins).toBe(0x06);\n expect(apdu.p1).toBe(0x01);\n expect(apdu.p2).toBe(0x00);\n });\n\n it(\"should return the correct APDU when the data is not empty\", () => {\n // GIVEN\n const command = new SignTransactionCommand({\n serializedTransaction: new Uint8Array([0x01, 0x02, 0x03]),\n more: false,\n extend: false,\n });\n\n // WHEN\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.data).toStrictEqual(new Uint8Array([0x01, 0x02, 0x03]));\n expect(apdu.cla).toBe(0xe0);\n expect(apdu.ins).toBe(0x06);\n expect(apdu.p1).toBe(0x01);\n expect(apdu.p2).toBe(0x00);\n });\n\n it(\"should return the correct APDU when the more flag is set\", () => {\n // GIVEN\n const command = new SignTransactionCommand({\n serializedTransaction: new Uint8Array([0x01, 0x02, 0x03]),\n more: true,\n extend: false,\n });\n\n // WHEN\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.data).toStrictEqual(new Uint8Array([0x01, 0x02, 0x03]));\n expect(apdu.cla).toBe(0xe0);\n expect(apdu.ins).toBe(0x06);\n expect(apdu.p1).toBe(0x01);\n expect(apdu.p2).toBe(0x02);\n });\n\n it(\"should return the correct APDU when the extend flag is set\", () => {\n // GIVEN\n const command = new SignTransactionCommand({\n serializedTransaction: new Uint8Array([0x01, 0x02, 0x03]),\n more: false,\n extend: true,\n });\n\n // WHEN\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.data).toStrictEqual(new Uint8Array([0x01, 0x02, 0x03]));\n expect(apdu.cla).toBe(0xe0);\n expect(apdu.ins).toBe(0x06);\n expect(apdu.p1).toBe(0x01);\n expect(apdu.p2).toBe(0x01);\n });\n\n it(\"should return the correct APDU when the more and extend flags are set\", () => {\n // GIVEN\n const command = new SignTransactionCommand({\n serializedTransaction: new Uint8Array([0x01, 0x02, 0x03]),\n more: true,\n extend: true,\n });\n\n // WHEN\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.data).toStrictEqual(new Uint8Array([0x01, 0x02, 0x03]));\n expect(apdu.cla).toBe(0xe0);\n expect(apdu.ins).toBe(0x06);\n expect(apdu.p1).toBe(0x01);\n expect(apdu.p2).toBe(0x03);\n });\n });\n\n describe(\"parseResponse\", () => {\n it(\"should return Noting when the response is empty\", () => {\n // GIVEN\n const command = new SignTransactionCommand(defaultArgs);\n\n // WHEN\n const result = command.parseResponse(\n new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array([]),\n }),\n );\n\n // THEN\n expect(result).toStrictEqual(CommandResultFactory({ data: Nothing }));\n });\n\n it(\"should return the signature when the response is not empty\", () => {\n // GIVEN\n const command = new SignTransactionCommand(defaultArgs);\n const data = new Uint8Array(Array.from({ length: 64 }, (_, i) => i + 1));\n\n // WHEN\n const result = command.parseResponse(\n new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data,\n }),\n );\n\n // THEN\n expect(result).toStrictEqual(\n CommandResultFactory({\n data: Just(data),\n }),\n );\n });\n\n it(\"should return an error when the response data is not valid\", () => {\n // GIVEN\n const command = new SignTransactionCommand(defaultArgs);\n\n // WHEN\n const result = command.parseResponse(\n new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array([0x01]),\n }),\n );\n\n // THEN\n if (isSuccessCommandResult(result))\n assert.fail(\"The result should be an error.\");\n else {\n expect(result.error).toEqual(\n new InvalidStatusWordError(\"Signature is missing\"),\n );\n }\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["ApduResponse", "CommandResultFactory", "InvalidStatusWordError", "isSuccessCommandResult", "Just", "Nothing", "SignTransactionCommand", "defaultArgs", "apdu", "result", "command", "data", "_", "i"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{DeviceExchangeError as t}from"@ledgerhq/device-management-kit";import{SOLANA_APP_ERRORS as a,SolanaAppCommandError as o}from"./SolanaApplicationErrors";describe("SolanaAppCommandError",()=>{afterEach(()=>{
|
|
1
|
+
import{DeviceExchangeError as t}from"@ledgerhq/device-management-kit";import{SOLANA_APP_ERRORS as a,SolanaAppCommandError as o}from"./SolanaApplicationErrors";describe("SolanaAppCommandError",()=>{afterEach(()=>{vi.resetAllMocks()}),afterAll(()=>{vi.resetModules()}),it("should be an instance of DeviceExchangeError",()=>{const e=new o({message:"Test error message",errorCode:"6700"});expect(e).toBeInstanceOf(t)}),it("should set the correct message when provided",()=>{const e="Custom error message",r=new o({message:e,errorCode:"6700"});expect(r.message).toBe(e)}),it("should set the correct customErrorCode",()=>{const e="6a80",r=new o({message:"Invalid data",errorCode:e});expect(r.errorCode).toBe(e)}),it("should correlate error codes with messages from solanaAppErrors",()=>{const e="6b00",r=a[e].message,s=new o({message:r,errorCode:e});expect(s.errorCode).toBe(e),expect(s.message).toBe(r),expect(s).toBeInstanceOf(t)})});
|
|
2
2
|
//# sourceMappingURL=SolanaAppErrors.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/internal/app-binder/command/utils/SolanaAppErrors.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { DeviceExchangeError } from \"@ledgerhq/device-management-kit\";\n\nimport {\n SOLANA_APP_ERRORS,\n SolanaAppCommandError,\n type SolanaAppErrorCodes,\n} from \"./SolanaApplicationErrors\";\n\ndescribe(\"SolanaAppCommandError\", () => {\n afterEach(() => {\n
|
|
5
|
-
"mappings": "AAAA,OAAS,uBAAAA,MAA2B,kCAEpC,OACE,qBAAAC,EACA,yBAAAC,MAEK,4BAEP,SAAS,wBAAyB,IAAM,CACtC,UAAU,IAAM,CACd,
|
|
4
|
+
"sourcesContent": ["import { DeviceExchangeError } from \"@ledgerhq/device-management-kit\";\n\nimport {\n SOLANA_APP_ERRORS,\n SolanaAppCommandError,\n type SolanaAppErrorCodes,\n} from \"./SolanaApplicationErrors\";\n\ndescribe(\"SolanaAppCommandError\", () => {\n afterEach(() => {\n vi.resetAllMocks();\n });\n\n afterAll(() => {\n vi.resetModules();\n });\n\n it(\"should be an instance of DeviceExchangeError\", () => {\n const error = new SolanaAppCommandError({\n message: \"Test error message\",\n errorCode: \"6700\",\n });\n\n expect(error).toBeInstanceOf(DeviceExchangeError);\n });\n\n it(\"should set the correct message when provided\", () => {\n const customMessage = \"Custom error message\";\n const error = new SolanaAppCommandError({\n message: customMessage,\n errorCode: \"6700\",\n });\n\n expect(error.message).toBe(customMessage);\n });\n\n it(\"should set the correct customErrorCode\", () => {\n const errorCode: SolanaAppErrorCodes = \"6a80\";\n const error = new SolanaAppCommandError({\n message: \"Invalid data\",\n errorCode,\n });\n\n expect(error.errorCode).toBe(errorCode);\n });\n\n it(\"should correlate error codes with messages from solanaAppErrors\", () => {\n const errorCode: SolanaAppErrorCodes = \"6b00\";\n const expectedMessage = SOLANA_APP_ERRORS[errorCode].message;\n\n const error = new SolanaAppCommandError({\n message: expectedMessage,\n errorCode,\n });\n\n expect(error.errorCode).toBe(errorCode);\n expect(error.message).toBe(expectedMessage);\n\n expect(error).toBeInstanceOf(DeviceExchangeError);\n });\n});\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,uBAAAA,MAA2B,kCAEpC,OACE,qBAAAC,EACA,yBAAAC,MAEK,4BAEP,SAAS,wBAAyB,IAAM,CACtC,UAAU,IAAM,CACd,GAAG,cAAc,CACnB,CAAC,EAED,SAAS,IAAM,CACb,GAAG,aAAa,CAClB,CAAC,EAED,GAAG,+CAAgD,IAAM,CACvD,MAAMC,EAAQ,IAAID,EAAsB,CACtC,QAAS,qBACT,UAAW,MACb,CAAC,EAED,OAAOC,CAAK,EAAE,eAAeH,CAAmB,CAClD,CAAC,EAED,GAAG,+CAAgD,IAAM,CACvD,MAAMI,EAAgB,uBAChBD,EAAQ,IAAID,EAAsB,CACtC,QAASE,EACT,UAAW,MACb,CAAC,EAED,OAAOD,EAAM,OAAO,EAAE,KAAKC,CAAa,CAC1C,CAAC,EAED,GAAG,yCAA0C,IAAM,CACjD,MAAMC,EAAiC,OACjCF,EAAQ,IAAID,EAAsB,CACtC,QAAS,eACT,UAAAG,CACF,CAAC,EAED,OAAOF,EAAM,SAAS,EAAE,KAAKE,CAAS,CACxC,CAAC,EAED,GAAG,kEAAmE,IAAM,CAC1E,MAAMA,EAAiC,OACjCC,EAAkBL,EAAkBI,CAAS,EAAE,QAE/CF,EAAQ,IAAID,EAAsB,CACtC,QAASI,EACT,UAAAD,CACF,CAAC,EAED,OAAOF,EAAM,SAAS,EAAE,KAAKE,CAAS,EACtC,OAAOF,EAAM,OAAO,EAAE,KAAKG,CAAe,EAE1C,OAAOH,CAAK,EAAE,eAAeH,CAAmB,CAClD,CAAC,CACH,CAAC",
|
|
6
6
|
"names": ["DeviceExchangeError", "SOLANA_APP_ERRORS", "SolanaAppCommandError", "error", "customMessage", "errorCode", "expectedMessage"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{isSuccessCommandResult as l,OpenAppDeviceAction as u,UnknownDAError as i,UserInteractionRequired as r,XStateDeviceAction as y}from"@ledgerhq/device-management-kit";import{Left as m,Right as d}from"purify-ts";import{assign as n,fromPromise as s,setup as S}from"xstate";import{GetPubKeyCommand as g}from"../../app-binder/command/GetPubKeyCommand";import{GenerateSolanaTransaction as A}from"../../app-binder/services/GenerateSolanaTransaction";class E extends y{makeStateMachine(a){const{getPublicKey:o,generatePlainSolanaTransaction:c}=this.extractDependencies(a);return S({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new u({input:{appName:"Solana"}}).makeStateMachine(a),getPublicKey:s(o),generatePlainSolanaTransaction:s(c)},guards:{noInternalError:({context:e})=>e._internalState.error===null,skipOpenApp:({context:e})=>e.input.skipOpenApp},actions:{assignErrorFromEvent:n({_internalState:e=>({...e.context._internalState,error:new i(e.event.error instanceof Error?e.event.error.message:String(e.event.error))})})}}).createMachine({id:"GenerateTransactionDeviceAction",initial:"InitialState",context:({input:e})=>({input:e,intermediateValue:{requiredUserInteraction:r.None},_internalState:{error:null,publicKey:null,serialisedTransaction:null}}),states:{InitialState:{always:[{target:"GetPublicKey",guard:"skipOpenApp"},{target:"OpenAppDeviceAction"}]},OpenAppDeviceAction:{exit:n({intermediateValue:()=>({requiredUserInteraction:r.None})}),invoke:{id:"openAppStateMachine",src:"openAppStateMachine",input:()=>({appName:"Solana"}),onSnapshot:{actions:n({intermediateValue:({event:e})=>e.snapshot.context.intermediateValue})},onDone:{target:"CheckOpenAppDeviceActionResult",actions:n({_internalState:({event:e,context:t})=>e.output.caseOf({Right:()=>t._internalState,Left:p=>({...t._internalState,error:p})})})}}},CheckOpenAppDeviceActionResult:{always:[{target:"GetPublicKey",guard:"noInternalError"},{target:"Error"}]},GetPublicKey:{entry:n({intermediateValue:()=>({requiredUserInteraction:r.None})}),invoke:{id:"getPublicKey",src:"getPublicKey",input:e=>({derivationPath:e.context.input.derivationPath,checkOnDevice:!1}),onDone:{target:"GetPublicKeyResultCheck",actions:n({_internalState:({event:e,context:t})=>l(e.output)?{...t._internalState,publicKey:e.output.data}:{...t._internalState,error:e.output.error}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetPublicKeyResultCheck:{always:[{target:"GenerateTransaction",guard:"noInternalError"},{target:"Error"}]},GenerateTransaction:{entry:n({intermediateValue:()=>({requiredUserInteraction:r.None})}),invoke:{id:"generatePlainSolanaTransaction",src:"generatePlainSolanaTransaction",input:e=>({publicKey:e.context._internalState.publicKey}),onDone:{target:"GenerateTransactionResultCheck",actions:n({_internalState:({event:e,context:t})=>e.output?{...t._internalState,serialisedTransaction:e.output}:{...t._internalState,error:new i("Failed to generate transaction")}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GenerateTransactionResultCheck:{always:[{guard:"noInternalError",target:"Success"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:e})=>e._internalState.serialisedTransaction?d(e._internalState.serialisedTransaction):m(e._internalState.error||new i("No error or signature available"))})}extractDependencies(a){return{getPublicKey:async e=>a.sendCommand(new g(e.input)),generatePlainSolanaTransaction:async e=>Promise.resolve(new A().generatePlainSolanaTransaction(e.input.publicKey,e.input.publicKey,1e6,1))}}}export{E as GenerateTransactionDeviceAction};
|
|
2
|
+
//# sourceMappingURL=GenerateTransactionDeviceAction.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/app-binder/device-action/GenerateTransactionDeviceAction.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n type CommandResult,\n type DeviceActionStateMachine,\n type InternalApi,\n isSuccessCommandResult,\n OpenAppDeviceAction,\n type StateMachineTypes,\n UnknownDAError,\n UserInteractionRequired,\n XStateDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport {\n type GenerateTransactionDAError,\n type GenerateTransactionDAInput,\n type GenerateTransactionDAIntermediateValue,\n type GenerateTransactionDAInternalState,\n type GenerateTransactionDAOutput,\n} from \"@api/app-binder/GenerateTransactionDeviceActionTypes\";\nimport { type PublicKey } from \"@api/model/PublicKey\";\nimport {\n GetPubKeyCommand,\n type GetPubKeyCommandResponse,\n} from \"@internal/app-binder/command/GetPubKeyCommand\";\nimport { type SolanaAppErrorCodes } from \"@internal/app-binder/command/utils/SolanaApplicationErrors\";\nimport { GenerateSolanaTransaction } from \"@internal/app-binder/services/GenerateSolanaTransaction\";\n\nexport type MachineDependencies = {\n readonly getPublicKey: (arg0: {\n input: { derivationPath: string; checkOnDevice: boolean };\n }) => Promise<CommandResult<GetPubKeyCommandResponse, SolanaAppErrorCodes>>;\n readonly generatePlainSolanaTransaction: (arg0: {\n input: { publicKey: PublicKey };\n }) => Promise<string>;\n};\n\nexport class GenerateTransactionDeviceAction extends XStateDeviceAction<\n GenerateTransactionDAOutput,\n GenerateTransactionDAInput,\n GenerateTransactionDAError,\n GenerateTransactionDAIntermediateValue,\n GenerateTransactionDAInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n GenerateTransactionDAOutput,\n GenerateTransactionDAInput,\n GenerateTransactionDAError,\n GenerateTransactionDAIntermediateValue,\n GenerateTransactionDAInternalState\n > {\n type types = StateMachineTypes<\n GenerateTransactionDAOutput,\n GenerateTransactionDAInput,\n GenerateTransactionDAError,\n GenerateTransactionDAIntermediateValue,\n GenerateTransactionDAInternalState\n >;\n\n const { getPublicKey, generatePlainSolanaTransaction } =\n this.extractDependencies(internalApi);\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n actors: {\n openAppStateMachine: new OpenAppDeviceAction({\n input: { appName: \"Solana\" },\n }).makeStateMachine(internalApi),\n getPublicKey: fromPromise(getPublicKey),\n generatePlainSolanaTransaction: fromPromise(\n generatePlainSolanaTransaction,\n ),\n },\n guards: {\n noInternalError: ({ context }) => context._internalState.error === null,\n skipOpenApp: ({ context }) => context.input.skipOpenApp,\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: new UnknownDAError(\n _.event[\"error\"] instanceof Error\n ? _.event[\"error\"].message\n : String(_.event[\"error\"]),\n ),\n }),\n }),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QHEwDswCcCGAXMAKjmrNgMa4CWA9mgCJgBulZYAghTWgHQCSalKtgA2AZVx4wAYgDaABgC6iUAAdqsQV2UgAHogCMAdgDM3ABwBOOQDY5V69f1zjAFgBMAGhABPRA-3cLgCsxkZWcnJmxnL6AL6xXqgYOPhE2CTkVLQMzKwcWTz8miLikrL6SkggahoF2noIRqaWNnY2js7uXr4ILhbW3G7ObsYWUfrGZn3xiehYkmkZnNlMLOzLPADyKuhsKio5a-lcUhC0YNyUaIzUANYX1Dtoeyql+ACy5AAWV2Dylap1JpaPVEIYgm5Bq5jMYgoY5C59FZPD5EC5DJCMQ4rP0ggi5G4ZiAkvNUsRSBtDnkNtwAMJfMBkW7bXb7KnrAoAJTgAFdhLhZIptDVgWhQY1QqZodZDPozLZbIZrN1EHjIY4xmM3GYTOMiSSUoRyZkuOzjrQ6QymSznmzVtSubz+eUAdUgXUqg0JhNuNLZfLWkqVQgzAE+hYxvogo5RnDDPq5obFhSCmaaahcAAFHkAI2ELAA0mBvKdzpdrncLjAs7n82Qi95-sL3VpPQYzHZBv1DJYLG5wRDDMHrMZDNx9C5jG5+h39FG3HEEsTEwtjZT7RyuNwM9m84Xi1IsJhqJhuCphHgAGYngC23Gru7rDabVRFHtAXo7Fi7Mt7-aCg7Bki34RqBDiuEq-SEkuBqrukKamhu5o8Dutb7t43KwHyuD0oytyCq6b6th+iBuG4tjmJOspRnOEw2MGeIBD21h9GRwTWPKSoJskcFLKmSHpmANZ7vWxaYdhuFMi6za1MRuikeRciUaOc5BLR0TKqiCAOGOzjWHiiIjH0QTcaSRrwSaKy5JuFqwWSFkbKWGDljc9z3iu+CZheVyiNQF5oNgyaWWgL6ArJIJtgg2rotwSoAfCZhkRE-YMRE3ByEEEbojC8pzi4LimUma78dZyHbh55l8ScR4nmeF64NemB3jAPGed5aC+f5gXFVwoVuuFYqRdFY5xXCkRJQSQ5aa4AQWHFthwvlZihsYhW8QhVlHIJrWVRtaDifykn4X1RERSRCCuBC3B9nKamThGanGAx07XSEUYuA4dhBPla32VVm0Oludm7cFB04Vax0VDJoripdkI3WYd2jBYj3Bi4USvaEbjBBOQwyvES5oNQEBwNowNBeupUbND77yQgAC0mk9Iz6URGz7NsxOv0g5TW0FHwAhCGIEj4DTckNF0Wn6aY2osSO0Rwv2i6zDtFMlXzW42i8aa06dg3nbCAxGa4IywhOFj6Gj6OBCEoRwrCkomTBFVq4hVP80dWt2u7XBg2LZ1004BLpVGQRTP4HaTGjFguDbU6GCjxgyixRjc67AM2ShQmPuh-v64HBmDPpIQ9gSk7LcOzixfKd3Y0qXHO6rPUZ2VqEiQ2YNHXn4pDEYgzhrCITLdYc3DmH5gj8tJfakqyvLk3Dnq4Dtku83+d6z3OOxcXhiGME06OFNPTBLHenGfl+huBCBWN2Z6f0AJ-Pk2vncQ93kV27HcJfixIy909WkIRMRrrCC2zhB5pzXjrLcogeRkFYLAeAr4WwBwaEnEIylZS6iMIlFwz0BiJyRAuZa4IOKQMXm7DWFoACimBjyYHfgbaWmCmihh7NjYMSdITBFCB9GcI4IQE1iEAA */\n id: \"GenerateTransactionDeviceAction\",\n initial: \"InitialState\",\n context: ({ input }) => ({\n input,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n _internalState: {\n error: null,\n publicKey: null,\n serialisedTransaction: null,\n },\n }),\n states: {\n InitialState: {\n always: [\n { target: \"GetPublicKey\", guard: \"skipOpenApp\" },\n { target: \"OpenAppDeviceAction\" },\n ],\n },\n OpenAppDeviceAction: {\n exit: assign({\n intermediateValue: () => ({\n requiredUserInteraction: UserInteractionRequired.None,\n }),\n }),\n invoke: {\n id: \"openAppStateMachine\",\n src: \"openAppStateMachine\",\n input: () => ({ appName: \"Solana\" }),\n onSnapshot: {\n actions: assign({\n intermediateValue: ({ event }) =>\n event.snapshot.context.intermediateValue,\n }),\n },\n onDone: {\n target: \"CheckOpenAppDeviceActionResult\",\n actions: assign({\n _internalState: ({ event, context }) =>\n event.output.caseOf({\n Right: () => context._internalState,\n Left: (error) => ({\n ...context._internalState,\n error,\n }),\n }),\n }),\n },\n },\n },\n CheckOpenAppDeviceActionResult: {\n always: [\n { target: \"GetPublicKey\", guard: \"noInternalError\" },\n { target: \"Error\" },\n ],\n },\n GetPublicKey: {\n entry: assign({\n intermediateValue: () => ({\n requiredUserInteraction: UserInteractionRequired.None,\n }),\n }),\n invoke: {\n id: \"getPublicKey\",\n src: \"getPublicKey\",\n input: (context) => ({\n derivationPath: context.context.input.derivationPath,\n checkOnDevice: false,\n }),\n onDone: {\n target: \"GetPublicKeyResultCheck\",\n actions: assign({\n _internalState: ({ event, context }) =>\n isSuccessCommandResult(event.output)\n ? {\n ...context._internalState,\n publicKey: event.output.data,\n }\n : { ...context._internalState, error: event.output.error },\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n GetPublicKeyResultCheck: {\n always: [\n { target: \"GenerateTransaction\", guard: \"noInternalError\" },\n { target: \"Error\" },\n ],\n },\n GenerateTransaction: {\n entry: assign({\n intermediateValue: () => ({\n requiredUserInteraction: UserInteractionRequired.None,\n }),\n }),\n invoke: {\n id: \"generatePlainSolanaTransaction\",\n src: \"generatePlainSolanaTransaction\",\n input: (context) => ({\n publicKey: context.context._internalState.publicKey!,\n }),\n onDone: {\n target: \"GenerateTransactionResultCheck\",\n actions: assign({\n _internalState: ({ event, context }) =>\n event.output\n ? {\n ...context._internalState,\n serialisedTransaction: event.output,\n }\n : {\n ...context._internalState,\n error: new UnknownDAError(\n `Failed to generate transaction`,\n ),\n },\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n GenerateTransactionResultCheck: {\n always: [\n { guard: \"noInternalError\", target: \"Success\" },\n { target: \"Error\" },\n ],\n },\n Success: { type: \"final\" },\n Error: { type: \"final\" },\n },\n output: ({ context }) =>\n context._internalState.serialisedTransaction\n ? Right(context._internalState.serialisedTransaction)\n : Left(\n context._internalState.error ||\n new UnknownDAError(`No error or signature available`),\n ),\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n const getPublicKey = async (arg0: {\n input: {\n derivationPath: string;\n checkOnDevice: boolean;\n };\n }) => internalApi.sendCommand(new GetPubKeyCommand(arg0.input));\n\n const generatePlainSolanaTransaction = async (arg0: {\n input: { publicKey: PublicKey };\n }): Promise<string> =>\n Promise.resolve(\n new GenerateSolanaTransaction().generatePlainSolanaTransaction(\n arg0.input.publicKey,\n arg0.input.publicKey,\n 1000000,\n 1,\n ),\n );\n\n return {\n getPublicKey,\n generatePlainSolanaTransaction,\n };\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["isSuccessCommandResult", "OpenAppDeviceAction", "UnknownDAError", "UserInteractionRequired", "XStateDeviceAction", "Left", "Right", "assign", "fromPromise", "setup", "GetPubKeyCommand", "GenerateSolanaTransaction", "GenerateTransactionDeviceAction", "internalApi", "getPublicKey", "generatePlainSolanaTransaction", "context", "_", "input", "event", "error", "arg0"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{isSuccessCommandResult as
|
|
1
|
+
import{DeviceModelId as S,isSuccessCommandResult as g,OpenAppDeviceAction as T,UnknownDAError as s,UserInteractionRequired as a,XStateDeviceAction as A}from"@ledgerhq/device-management-kit";import{Left as m,Right as C}from"purify-ts";import{assign as e,fromPromise as i,setup as y}from"xstate";import{GetAppConfigurationCommand as D}from"../../app-binder/command/GetAppConfigurationCommand";import{SignTransactionCommand as E}from"../../app-binder/command/SignTransactionCommand";import{ApplicationChecker as f}from"../../app-binder/services/ApplicationChecker";import{SolanaTransactionTypes as x,TransactionInspector as v}from"../../app-binder/services/TransactionInspector";import{BuildTransactionContextTask as I}from"../../app-binder/task/BuildTransactionContextTask";import{ProvideSolanaTransactionContextTask as h}from"../../app-binder/task/ProvideTransactionContextTask";import{SignDataTask as k}from"../../app-binder/task/SendSignDataTask";class F extends A{makeStateMachine(r){const{signTransaction:p,getAppConfig:c,buildContext:u,provideContext:l,inspectTransaction:d}=this.extractDependencies(r);return y({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new T({input:{appName:"Solana"}}).makeStateMachine(r),getAppConfig:i(c),inspectTransaction:i(({input:t})=>d({serializedTransaction:t.transaction})),buildContext:i(u),provideContext:i(l),signTransaction:i(p)},guards:{noInternalError:({context:t})=>t._internalState.error===null,skipOpenApp:({context:t})=>t.input.skipOpenApp,isSPLSupported:({context:t})=>new f(r.getDeviceSessionState(),t._internalState.appConfig).withMinVersionExclusive("1.4.0").excludeDeviceModel(S.NANO_S).check(),isAnSPLTransaction:({context:t})=>t._internalState.inspectorResult?.transactionType===x.SPL},actions:{assignErrorFromEvent:e({_internalState:t=>({...t.context._internalState,error:new s(t.event.error instanceof Error?t.event.error.message:String(t.event.error))})})}}).createMachine({id:"SignTransactionDeviceAction",initial:"InitialState",context:({input:t})=>({input:t,intermediateValue:{requiredUserInteraction:a.None},_internalState:{error:null,signature:null,appConfig:null,solanaTransactionContext:null,inspectorResult:null}}),states:{InitialState:{always:[{target:"GetAppConfig",guard:"skipOpenApp"},{target:"OpenAppDeviceAction"}]},OpenAppDeviceAction:{exit:e({intermediateValue:()=>({requiredUserInteraction:a.None})}),invoke:{id:"openAppStateMachine",src:"openAppStateMachine",input:()=>({appName:"Solana"}),onSnapshot:{actions:e({intermediateValue:({event:t})=>t.snapshot.context.intermediateValue})},onDone:{target:"CheckOpenAppDeviceActionResult",actions:e({_internalState:({event:t,context:n})=>t.output.caseOf({Right:()=>n._internalState,Left:o=>({...n._internalState,error:o})})})}}},CheckOpenAppDeviceActionResult:{always:[{target:"GetAppConfig",guard:"noInternalError"},{target:"Error"}]},GetAppConfig:{entry:e({intermediateValue:()=>({requiredUserInteraction:a.None})}),invoke:{id:"getAppConfig",src:"getAppConfig",onDone:{target:"GetAppConfigResultCheck",actions:e({_internalState:({event:t,context:n})=>g(t.output)?{...n._internalState,appConfig:t.output.data}:{...n._internalState,error:t.output.error}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetAppConfigResultCheck:{always:[{target:"InspectTransaction",guard:"noInternalError"},{target:"Error"}]},InspectTransaction:{invoke:{id:"inspectTransaction",src:"inspectTransaction",input:({context:t})=>({...t.input,serializedTransaction:t.input.transaction}),onDone:{target:"AfterInspect",actions:e({_internalState:({context:t,event:n})=>({...t._internalState,inspectorResult:n.output})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},AfterInspect:{always:[{target:"BuildContext",guard:"isAnSPLTransaction"},{target:"SignTransaction",guard:"noInternalError"},{target:"Error"}]},BuildContext:{entry:e({intermediateValue:()=>({requiredUserInteraction:a.None})}),invoke:{id:"buildContext",src:"buildContext",input:({context:t})=>{const n=t._internalState.inspectorResult?.data;return{contextModule:t.input.contextModule,options:{tokenAddress:n?.tokenAddress,createATA:n?.createATA}}},onDone:{target:"ProvideContext",actions:[e({_internalState:({event:t,context:n})=>({...n._internalState,solanaTransactionContext:{descriptor:t.output.descriptor,certificate:t.output.calCertificate,tokenAccount:t.output.addressResult.tokenAccount,owner:t.output.addressResult.owner,contract:t.output.addressResult.contract}})})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},ProvideContext:{entry:e({intermediateValue:()=>({requiredUserInteraction:a.None})}),invoke:{id:"provideContext",src:"provideContext",input:({context:t})=>{if(!t._internalState.solanaTransactionContext)throw new s("Solana transaction context is not available");return t._internalState.solanaTransactionContext},onDone:{target:"ProvideContextResultCheck"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},ProvideContextResultCheck:{always:[{target:"SignTransaction",guard:"noInternalError"},{target:"Error"}]},SignTransaction:{entry:e({intermediateValue:{requiredUserInteraction:a.SignTransaction}}),exit:e({intermediateValue:{requiredUserInteraction:a.None}}),invoke:{id:"signTransaction",src:"signTransaction",input:({context:t})=>({derivationPath:t.input.derivationPath,serializedTransaction:t.input.transaction}),onDone:{target:"SignTransactionResultCheck",actions:[e({_internalState:({event:t,context:n})=>{if(!g(t.output))return{...n._internalState,error:t.output.error};const o=t.output.data.extract();return t.output.data.isJust()&&o instanceof Uint8Array?{...n._internalState,signature:o}:{...n._internalState,error:new s("No Signature available")}}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},SignTransactionResultCheck:{always:[{guard:"noInternalError",target:"Success"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:t})=>t._internalState.signature?C(t._internalState.signature):m(t._internalState.error||new s("No error or signature available"))})}extractDependencies(r){return{getAppConfig:async()=>r.sendCommand(new D),buildContext:async t=>new I(r,t.input).run(),provideContext:async t=>new h(r,t.input).run(),signTransaction:async t=>new k(r,{commandFactory:n=>new E({serializedTransaction:n.chunkedData,more:n.more,extend:n.extend}),derivationPath:t.input.derivationPath,sendingData:t.input.serializedTransaction}).run(),inspectTransaction:async t=>Promise.resolve(new v(t.serializedTransaction).inspectTransactionType())}}}export{F as SignTransactionDeviceAction};
|
|
2
2
|
//# sourceMappingURL=SignTransactionDeviceAction.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/device-action/SignTransactionDeviceAction.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type CommandResult,\n type DeviceActionStateMachine,\n type InternalApi,\n isSuccessCommandResult,\n OpenAppDeviceAction,\n type StateMachineTypes,\n UnknownDAError,\n UserInteractionRequired,\n XStateDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, type Maybe, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport {\n type SignTransactionDAError,\n type SignTransactionDAInput,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAInternalState,\n type SignTransactionDAOutput,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type Signature } from \"@api/model/Signature\";\nimport { SignTransactionCommand } from \"@internal/app-binder/command/SignTransactionCommand\";\nimport { type SolanaAppErrorCodes } from \"@internal/app-binder/command/utils/SolanaApplicationErrors\";\nimport { SignDataTask } from \"@internal/app-binder/task/SendSignDataTask\";\n\nexport type MachineDependencies = {\n readonly signTransaction: (arg0: {\n input: {\n derivationPath: string;\n serializedTransaction: Uint8Array;\n };\n }) => Promise<\n CommandResult<Maybe<Signature | SolanaAppErrorCodes>, SolanaAppErrorCodes>\n >;\n};\n\nexport class SignTransactionDeviceAction extends XStateDeviceAction<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n > {\n type types = StateMachineTypes<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n >;\n\n const { signTransaction } = this.extractDependencies(internalApi);\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n actors: {\n openAppStateMachine: new OpenAppDeviceAction({\n input: { appName: \"Solana\" },\n }).makeStateMachine(internalApi),\n signTransaction: fromPromise(signTransaction),\n },\n guards: {\n noInternalError: ({ context }) => context._internalState.error === null,\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"], // NOTE: it should never happen, the error is not typed anymore here\n }),\n }),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QGUCWUB2AVATgQw1jwGMAXVAewwBEwA3VYsAQTMowDoB5ABzA2Y8etBk1bkqAYghUwHVBjoUA1nIp8BQ5KTykwAWRIALBWADaABgC6iUDwqxUEjLZAAPRABYAzAHYOAJwAHABMFgCMnhYWUSFBvgA0IACeiEEAbOkcAKxBQQGeASG+3tmeISEAvpVJaJi4BERsVCKMLM2cAMJGYMTKvPyCwvRt4uwASnAArgA2pJKWNkgg9o7Orh4IAQEWHN7RvgGH2dne4UHhSakI+Vnpvtkh4eme2Udh3tW16Nj4hCTOVpiDocbq9foaIZA9rOSawWbzMzhJZ2BxOdgbRDbXb7CyHY6nc6XFJpcIcc6+OLebzxCoBbLhL4gOq-RoA9jQsZUDgAcTApG6eBmM34MGksnkihUchgAqMQpFGBgi1cq3RVExCEi+Q4nnO6RC3ji232QSuiBKZPCEQyZwsmSCNKZLIa-w6nJBfLlCtFYEkYBwOAoOA4PBmugAZsGALYcWWC4W+lXLNXrZabbUBXX6w3GgKm803eLk7ZBTwZF6Uz41Zk-V1NQEjYHODgAISmqBmEE6VD0bnmMgwcgUSlUHAARh2uz2MH3SMnUWsMenEOFtv5HhYghEdt5PPvC7ks2v89EAvdwuFDc6638GxymzD2G2p93e2B+-7A8HQ+HSFGcFjSdOzfWcP3naxVTRNNQAzdccjCbc1wsPcDxJBBfFeDgQneDJHgZAib3qO92RaR8uU4AAFIMGAgMAZzncUh0lUc5B4GjUDohjwIXFZoOXWDEBCU4sl8DJwl8Xxogsc8YkLTwxI4TDlMwjJfHSCwqhrF0SPdciQWoihaPo99PwDIMQzDSMY1DDiuNMiCUT4pcNRXBBhO8UTxMk6TZM8QsNO8PYCkpHwghOIIiNZN1G1EJ9uUM4zuP7OEETBPoFkglN+NcwSEFxHEtziB49wCYlrj3XZhM8e5HQiCJCii+tSJofSW0SziTLAlLpjmdLlAWZEoJclw3IKvYiviU5CnKxBsi3DhHT8fd7hwmk9ya3TYtGEEdLZDomOHKUx0cYj9ucXjUwE9xEFKHDyRCfcHhCF411m9zIiU88jXyQ4-CvTbzofOKKI4PaYvYL8LN-azAI4U7ovvKhLpy0a8ru49HoUx5XrKwtqSzfdSgeeILjKmJAYhsiQd228gaoVK+p6DKUZGzVvHghrNKNEoHn89CT2zHYyjOalPIB7S6ap1qaZbcGkYwRm5XBQanKu3KbvyznIm54o-DKQsscW0I3nSZ4TkKalqhrDAKDo+BlnllqPRg5z1TRzWAFp0kLb2OGkgPA4OSmFZd58Bk0YZZeu9WPc2cpCzLEJdRkix5oI-cQ+dtrn36iOoRzhnetIYb3c1dIy11alHWyTIzfSbJEnQvIgmw14t1KwpMOrb4zulsPuS9BNFRgUvXYzc4goZTzgntE980T3wySNPEJPCfZyg5rO9Oj7l2xA5KS+ytm3OeI5FoqGrMiiEofELSlCaJMpsXCx7t+25tnw6+zuqPxcy7chUNOgRHovHwuUbGh5iwETeHEBkcR7Tv2BjtdqdkupziVv1Me11NjFCwshTSKEGTqX5tceauwojiwkluNcb9JZ91DoXTgTsOjYI1psM4+YEKXniK9N4704itx2CUUI4UGTBC0r3RG2dd7MKlgrTBzNlBsLjrdXmCFHT6kiNsV4htPK6keDVFeW4UKZ3odIneKDnzICmMQJgsAHb-3Hl4J4VUXpFGrjEUohY1xZHCLXE4-j8zkIUkg6mVjuQAFFvw4BUZqco1psLuMNDSLx2RDzAMblePU9I7QvWrNUIAA */\n id: \"SignTransactionDeviceAction\",\n initial: \"OpenAppDeviceAction\",\n context: ({ input }) => {\n return {\n input,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n _internalState: {\n error: null,\n signature: null,\n },\n };\n },\n states: {\n OpenAppDeviceAction: {\n exit: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n }),\n invoke: {\n id: \"openAppStateMachine\",\n input: { appName: \"Solana\" },\n src: \"openAppStateMachine\",\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) =>\n _.event.snapshot.context.intermediateValue,\n }),\n },\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<SignTransactionDAInternalState>({\n Right: () => _.context._internalState,\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n });\n },\n }),\n target: \"CheckOpenAppDeviceActionResult\",\n },\n },\n },\n CheckOpenAppDeviceActionResult: {\n always: [\n {\n target: \"SignTransaction\",\n guard: \"noInternalError\",\n },\n \"Error\",\n ],\n },\n SignTransaction: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n },\n }),\n exit: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n }),\n invoke: {\n id: \"signTransaction\",\n src: \"signTransaction\",\n input: ({ context }) => ({\n derivationPath: context.input.derivationPath,\n serializedTransaction: context.input.transaction,\n }),\n onDone: {\n target: \"SignTransactionResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (!isSuccessCommandResult(event.output))\n return {\n ...context._internalState,\n error: event.output.error,\n };\n\n const data = event.output.data.extract();\n if (\n event.output.data.isJust() &&\n data instanceof Uint8Array\n )\n return {\n ...context._internalState,\n signature: data,\n };\n\n return {\n ...context._internalState,\n error: new UnknownDAError(\"No Signature available\"),\n };\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n SignTransactionResultCheck: {\n always: [\n { guard: \"noInternalError\", target: \"Success\" },\n { target: \"Error\" },\n ],\n },\n Success: {\n type: \"final\",\n },\n Error: {\n type: \"final\",\n },\n },\n output: ({ context }) =>\n context._internalState.signature\n ? Right(context._internalState.signature)\n : Left(\n context._internalState.error ||\n new UnknownDAError(\"No error or signature available\"),\n ),\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n const signTransaction = async (arg0: {\n input: {\n derivationPath: string;\n serializedTransaction: Uint8Array;\n };\n }) => {\n return new SignDataTask(internalApi, {\n commandFactory: (args) =>\n new SignTransactionCommand({\n serializedTransaction: args.chunkedData,\n more: args.more,\n extend: args.extend,\n }),\n derivationPath: arg0.input.derivationPath,\n sendingData: arg0.input.serializedTransaction,\n }).run();\n };\n\n return {\n signTransaction,\n };\n }\n}\n"],
|
|
5
|
-
"mappings": "AAAA,OAIE,
|
|
6
|
-
"names": ["isSuccessCommandResult", "OpenAppDeviceAction", "UnknownDAError", "UserInteractionRequired", "XStateDeviceAction", "Left", "Right", "assign", "fromPromise", "setup", "SignTransactionCommand", "SignDataTask", "SignTransactionDeviceAction", "internalApi", "signTransaction", "context", "_", "
|
|
4
|
+
"sourcesContent": ["import {\n type CommandErrorResult,\n type CommandResult,\n type DeviceActionStateMachine,\n DeviceModelId,\n type InternalApi,\n isSuccessCommandResult,\n OpenAppDeviceAction,\n type StateMachineTypes,\n UnknownDAError,\n UserInteractionRequired,\n XStateDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, type Maybe, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport {\n type SignTransactionDAError,\n type SignTransactionDAInput,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAInternalState,\n type SignTransactionDAOutput,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type AppConfiguration } from \"@api/model/AppConfiguration\";\nimport { type Signature } from \"@api/model/Signature\";\nimport { GetAppConfigurationCommand } from \"@internal/app-binder/command/GetAppConfigurationCommand\";\nimport { SignTransactionCommand } from \"@internal/app-binder/command/SignTransactionCommand\";\nimport { type SolanaAppErrorCodes } from \"@internal/app-binder/command/utils/SolanaApplicationErrors\";\nimport { ApplicationChecker } from \"@internal/app-binder/services/ApplicationChecker\";\nimport {\n SolanaTransactionTypes,\n TransactionInspector,\n type TxInspectorResult,\n} from \"@internal/app-binder/services/TransactionInspector\";\nimport {\n BuildTransactionContextTask,\n type BuildTransactionContextTaskArgs,\n type SolanaBuildContextResult,\n} from \"@internal/app-binder/task/BuildTransactionContextTask\";\nimport {\n ProvideSolanaTransactionContextTask,\n type SolanaContextForDevice,\n} from \"@internal/app-binder/task/ProvideTransactionContextTask\";\nimport { SignDataTask } from \"@internal/app-binder/task/SendSignDataTask\";\n\nexport type MachineDependencies = {\n readonly getAppConfig: () => Promise<\n CommandResult<AppConfiguration, SolanaAppErrorCodes>\n >;\n readonly buildContext: (arg0: {\n input: BuildTransactionContextTaskArgs;\n }) => Promise<SolanaBuildContextResult>;\n readonly provideContext: (arg0: {\n input: SolanaContextForDevice;\n }) => Promise<Maybe<CommandErrorResult<SolanaAppErrorCodes>>>;\n readonly inspectTransaction: (arg0: {\n serializedTransaction: Uint8Array;\n }) => Promise<TxInspectorResult>;\n readonly signTransaction: (arg0: {\n input: {\n derivationPath: string;\n serializedTransaction: Uint8Array;\n };\n }) => Promise<\n CommandResult<Maybe<Signature | SolanaAppErrorCodes>, SolanaAppErrorCodes>\n >;\n};\n\nexport class SignTransactionDeviceAction extends XStateDeviceAction<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n > {\n type types = StateMachineTypes<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n >;\n\n const {\n signTransaction,\n getAppConfig,\n buildContext,\n provideContext,\n inspectTransaction,\n } = this.extractDependencies(internalApi);\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n actors: {\n openAppStateMachine: new OpenAppDeviceAction({\n input: { appName: \"Solana\" },\n }).makeStateMachine(internalApi),\n getAppConfig: fromPromise(getAppConfig),\n inspectTransaction: fromPromise(\n ({ input }: { input: SignTransactionDAInput }) =>\n inspectTransaction({ serializedTransaction: input.transaction }),\n ),\n buildContext: fromPromise(buildContext),\n provideContext: fromPromise(provideContext),\n signTransaction: fromPromise(signTransaction),\n },\n guards: {\n noInternalError: ({ context }) => context._internalState.error === null,\n skipOpenApp: ({ context }) => context.input.skipOpenApp,\n isSPLSupported: ({ context }) =>\n new ApplicationChecker(\n internalApi.getDeviceSessionState(),\n context._internalState.appConfig!,\n )\n .withMinVersionExclusive(\"1.4.0\")\n .excludeDeviceModel(DeviceModelId.NANO_S)\n .check(),\n isAnSPLTransaction: ({ context }) =>\n context._internalState.inspectorResult?.transactionType ===\n SolanaTransactionTypes.SPL,\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: new UnknownDAError(\n _.event[\"error\"] instanceof Error\n ? _.event[\"error\"].message\n : String(_.event[\"error\"]),\n ),\n }),\n }),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QGUCWUB2AVATgQw1jwGMAXVAewwBEwA3VYsAQTMowDoBJDVcvADbJSeUmADEAbQAMAXUSgADhVh92CkAA9EARgDsAZg4AOPdL37pAFj1WArACYANCACeuh4Y46dxgGzSBnZ6AQZ6dgC+ES5omLgERGxUtAxMrORU3Lz8QiJiUjrySCDKqhkYGtoI+kam5pY29s5uujrSxhzSAJw+AcZWplZ+BlEx6Nj4hCTlKYwsSZwA8opgGMyKirNpC+IQVGAcqBh0FADWBxQraxvComAAsiQAFkdgMkVKKmpUlYjhOhw7F0bAYrAN9HZrC53NV2lZAV1AnYrGEul0wpFoiBYhMEtN2Ft5uUOABhJ5gYinZardabehzdLsABKcAArgJSFI5BpSt8KsUqjoDDoHJ0ug5jAY6jowbZoa0ZYDpHYfA59A47H4BqNseN4lMFoTGZkyRSqVdaUaFizYOzOZJCjyvuVftVhaLuhKpWYZY15QhjADpH4HAMQ0FzOEujqcfrEjN6dtiQBxMCkWkkqgAM3Qu32h2OZwOMHTG0zGBzUHeTrK6gFukDeg4fj04Slwbavis-pFAw4en6wSGfmRXWMMb1k3jBMTRPYHFTpcU5cr4jAOBwFBwHEUAlEWa3AFsOCWM9n0NXiryXfXqo3m627O2-J3+j20RwHIjhiHPAOrIEE5xFO+LJLOxqcIuZ4VugNp2qalJch8JTOnWoBVA4njwv0OiOFYaohNIwY9p4HR+GiGrGNYAEOEEQG4gaCapHOmRQWW55QHBHIIacBTIdeaFaIgmG2CYVi4aGBEBMRLQIKCQY6F0QIigY0iKdGWKxiBhrgQsWSwCsZBxqBGB5hgBxHCc5wFgZFKkMZCyXp8tY-LeEr4f2yKmGOwyGF0JHkRwYQGORxj+C2fgtvRDlMQyek8LZRnaeUa4bluO57qQB44MeRyJfZyXsE5KEufy6HCf0orhAMeg+cF-myfYXSfjYtgiphiLIn40WFWBzEQRwzBZmIOAJYZ9rcleqGueVcmYUYtFdC2spSphPYih0QxLX4gbCqCdiYmMwF4jp-V6UNI1jXZfE1nyroGPNn4GEttggsYa2yUK0iilYSkorRaqqQYIyaZOJ2xUm84XeuV1kFIDj8dNZVCXNtFPS9K3vc0MLSRwXQhFqkZKYpOg9eDM5ncSABCrKoAIEDlmImicns5kFlZBwAEa0-TjNgMzxUCTNKNhDYn5jqpA6guJB3rWjNiOARX74-YZOMRTcXUzzDNUEznLrpu267vuR4cNzdM6xgeuC0j922E2X6SuYkpgrhdj+hYzUONY-QK8Y4o7Wr059Zr84AAqbgwEBgHzzNmRZhbWYokeoNHsekDbpWuvhYWAp4in9Pj4r2OtWr9p4yIE-0YXjqDx3qyHkOZBHFBRzHuv8-raVG5l2XHsnrep+3Vud5nd23jnHSOJ7he1aG7uyf40h48Dr3CgdAGHbq9fBzQunEi3bfp1xpA8Uht03rNCvYQO3T+IMIbrRYJhLUC3syvtQcmVaB8p2nHfMxPmfB0iMs4T2qiYW+PkH7Y10ERUUkUHBam9GqZEIMjoMV3j-ecWlyZUHjuzIsHBVA7xMmPS+KNHCSiCsCMEAQfRjhIgObwL4vwahJqwr+p1Q6ZFwQ3UyBt0rGyyqbEhmCyGTWcuPWaVCjDPTBEMcwalGGfRFMvf2cIBwqk1L4LhEMWKcD4bvIB5JELkMElUYIyJvDBEijYF8wweyqQ6OYAIkJhT6DClvIx39944LBvwkxZobpTTATIiBuECb2J0I4z6SCEEFzsO9NErZAxRCxBgCg0d4DFB8dwpuyMhbIyqAAWj8P6Epdg8ZohqbUmpX49EawKVkNQghbhiAvhYxA+EArwnIm0b6SC1JmG8QErBfjMjUmuHSSmgkin3QOs2bo5hHDbXEjoHswZl5fkUphAZ-gkGNMbgY0kpjzQ0g2NgqgJ9OnC0FERZerZES7X2Z4dawZOiPjaMYTUoUjl71maxNM0FKy3OKboSEP0RQ+HCFY-GsDqioI4DVAI3skn-FGaQ-JJy2LLg4kEykYLXTew1J0B6L5HCr1qgYJh2yLAqnaL4XCwN-lXM4LDAqeDCm2zckMKpMSVK-RbCFZUJEnzIuGe-GqIRSZ13Ediga0NRqEHGkS28qkdotQOWGQMxgSKIhMH0A6oIgieAcKyiZnAaYW3Tmq2a0sqnkWRJqAYalgx6E2QazxIq1IDCBhawFnBD5D1taE6RIs-rNlWU+HwQRIrlNUe0Zs1cJTKk1GYbqcqYpNJOcG-+I9AFsm4mcu1KMwRKRMFjcILZgw-NLkYIYpgQqBkhHoUMAaeGGLGSZUtVRfr2G8PjKiwIwiYQRe1JsT4-rPVwuib6Hbml5PKAS04vbECjkeb9SlkklINRhCKD8Wpfb+13WqTNGDs3HIGsgVkxAmCwByVIihlixzwlahiFUQo926FUthX0iJ8K-Xmguk5ABRbua6EBAn6Mi1sH7Y3foQIYJsQR1n42VEKRw6SIhAA */\n id: \"SignTransactionDeviceAction\",\n initial: \"InitialState\",\n context: ({ input }) => ({\n input,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n _internalState: {\n error: null,\n signature: null,\n appConfig: null,\n solanaTransactionContext: null,\n inspectorResult: null,\n },\n }),\n states: {\n InitialState: {\n always: [\n { target: \"GetAppConfig\", guard: \"skipOpenApp\" },\n { target: \"OpenAppDeviceAction\" },\n ],\n },\n OpenAppDeviceAction: {\n exit: assign({\n intermediateValue: () => ({\n requiredUserInteraction: UserInteractionRequired.None,\n }),\n }),\n invoke: {\n id: \"openAppStateMachine\",\n src: \"openAppStateMachine\",\n input: () => ({ appName: \"Solana\" }),\n onSnapshot: {\n actions: assign({\n intermediateValue: ({ event }) =>\n event.snapshot.context.intermediateValue,\n }),\n },\n onDone: {\n target: \"CheckOpenAppDeviceActionResult\",\n actions: assign({\n _internalState: ({ event, context }) =>\n event.output.caseOf({\n Right: () => context._internalState,\n Left: (error) => ({\n ...context._internalState,\n error,\n }),\n }),\n }),\n },\n },\n },\n CheckOpenAppDeviceActionResult: {\n always: [\n { target: \"GetAppConfig\", guard: \"noInternalError\" },\n { target: \"Error\" },\n ],\n },\n GetAppConfig: {\n entry: assign({\n intermediateValue: () => ({\n requiredUserInteraction: UserInteractionRequired.None,\n }),\n }),\n invoke: {\n id: \"getAppConfig\",\n src: \"getAppConfig\",\n onDone: {\n target: \"GetAppConfigResultCheck\",\n actions: assign({\n _internalState: ({ event, context }) =>\n isSuccessCommandResult(event.output)\n ? {\n ...context._internalState,\n appConfig: event.output.data,\n }\n : { ...context._internalState, error: event.output.error },\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n GetAppConfigResultCheck: {\n always: [\n { target: \"InspectTransaction\", guard: \"noInternalError\" },\n { target: \"Error\" },\n ],\n },\n InspectTransaction: {\n invoke: {\n id: \"inspectTransaction\",\n src: \"inspectTransaction\",\n input: ({ context }) => ({\n ...context.input,\n serializedTransaction: context.input.transaction,\n }),\n onDone: {\n target: \"AfterInspect\",\n actions: assign({\n _internalState: ({ context, event }) => ({\n ...context._internalState,\n inspectorResult: event.output,\n }),\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n AfterInspect: {\n always: [\n { target: \"BuildContext\", guard: \"isAnSPLTransaction\" },\n { target: \"SignTransaction\", guard: \"noInternalError\" },\n { target: \"Error\" },\n ],\n },\n BuildContext: {\n entry: assign({\n intermediateValue: () => ({\n requiredUserInteraction: UserInteractionRequired.None,\n }),\n }),\n invoke: {\n id: \"buildContext\",\n src: \"buildContext\",\n input: ({ context }) => {\n const inspectorData =\n context._internalState.inspectorResult?.data;\n return {\n contextModule: context.input.contextModule,\n options: {\n tokenAddress: inspectorData?.tokenAddress,\n createATA: inspectorData?.createATA,\n },\n };\n },\n onDone: {\n target: \"ProvideContext\",\n actions: [\n assign({\n _internalState: ({ event, context }) => ({\n ...context._internalState,\n solanaTransactionContext: {\n descriptor: event.output.descriptor,\n certificate: event.output.calCertificate,\n tokenAccount: event.output.addressResult.tokenAccount,\n owner: event.output.addressResult.owner,\n contract: event.output.addressResult.contract,\n },\n }),\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n ProvideContext: {\n entry: assign({\n intermediateValue: () => ({\n requiredUserInteraction: UserInteractionRequired.None,\n }),\n }),\n invoke: {\n id: \"provideContext\",\n src: \"provideContext\",\n input: ({ context }) => {\n if (!context._internalState.solanaTransactionContext) {\n throw new UnknownDAError(\n \"Solana transaction context is not available\",\n );\n }\n return context._internalState.solanaTransactionContext;\n },\n onDone: {\n target: \"ProvideContextResultCheck\",\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n ProvideContextResultCheck: {\n always: [\n { target: \"SignTransaction\", guard: \"noInternalError\" },\n { target: \"Error\" },\n ],\n },\n SignTransaction: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n },\n }),\n exit: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n }),\n invoke: {\n id: \"signTransaction\",\n src: \"signTransaction\",\n input: ({ context }) => {\n return {\n derivationPath: context.input.derivationPath,\n serializedTransaction: context.input.transaction,\n };\n },\n onDone: {\n target: \"SignTransactionResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (!isSuccessCommandResult(event.output))\n return {\n ...context._internalState,\n error: event.output.error,\n };\n\n const data = event.output.data.extract();\n if (\n event.output.data.isJust() &&\n data instanceof Uint8Array\n )\n return {\n ...context._internalState,\n signature: data,\n };\n\n return {\n ...context._internalState,\n error: new UnknownDAError(\"No Signature available\"),\n };\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n SignTransactionResultCheck: {\n always: [\n { guard: \"noInternalError\", target: \"Success\" },\n { target: \"Error\" },\n ],\n },\n Success: { type: \"final\" },\n Error: { type: \"final\" },\n },\n output: ({ context }) =>\n context._internalState.signature\n ? Right(context._internalState.signature)\n : Left(\n context._internalState.error ||\n new UnknownDAError(`No error or signature available`),\n ),\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n const getAppConfig = async () =>\n internalApi.sendCommand(new GetAppConfigurationCommand());\n\n const buildContext = async (arg0: {\n input: BuildTransactionContextTaskArgs;\n }) => new BuildTransactionContextTask(internalApi, arg0.input).run();\n\n const provideContext = async (arg0: { input: SolanaContextForDevice }) =>\n new ProvideSolanaTransactionContextTask(internalApi, arg0.input).run();\n\n const inspectTransaction = async (arg0: {\n serializedTransaction: Uint8Array;\n }) =>\n Promise.resolve(\n new TransactionInspector(\n arg0.serializedTransaction,\n ).inspectTransactionType(),\n );\n\n const signTransaction = async (arg0: {\n input: {\n derivationPath: string;\n serializedTransaction: Uint8Array;\n };\n }) =>\n new SignDataTask(internalApi, {\n commandFactory: (args) =>\n new SignTransactionCommand({\n serializedTransaction: args.chunkedData,\n more: args.more,\n extend: args.extend,\n }),\n derivationPath: arg0.input.derivationPath,\n sendingData: arg0.input.serializedTransaction,\n }).run();\n\n return {\n getAppConfig,\n buildContext,\n provideContext,\n signTransaction,\n inspectTransaction,\n };\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["DeviceModelId", "isSuccessCommandResult", "OpenAppDeviceAction", "UnknownDAError", "UserInteractionRequired", "XStateDeviceAction", "Left", "Right", "assign", "fromPromise", "setup", "GetAppConfigurationCommand", "SignTransactionCommand", "ApplicationChecker", "SolanaTransactionTypes", "TransactionInspector", "BuildTransactionContextTask", "ProvideSolanaTransactionContextTask", "SignDataTask", "SignTransactionDeviceAction", "internalApi", "signTransaction", "getAppConfig", "buildContext", "provideContext", "inspectTransaction", "input", "context", "_", "event", "error", "inspectorData", "data", "arg0", "args"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{CommandResultFactory as
|
|
1
|
+
import{CommandResultFactory as o,DeviceActionStatus as e,DeviceModelId as g,DeviceSessionStateType as v,DeviceStatus as y,InvalidStatusWordError as C,UserInteractionRequired as t}from"@ledgerhq/device-management-kit";import{Just as T,Nothing as N}from"purify-ts";import{beforeEach as P,describe as w,it as D,vi as n}from"vitest";import{testDeviceActionStates as f}from"../../app-binder/device-action/__test-utils__/testDeviceActionStates";import{SolanaTransactionTypes as m}from"../../app-binder/services/TransactionInspector";import{makeDeviceActionInternalApiMock as E}from"./__test-utils__/makeInternalApi";import{SignTransactionDeviceAction as k}from"./SignTransactionDeviceAction";const V="44'/501'/0'/0'",x=new Uint8Array([222,173,190,239]),I={getSolanaContext:n.fn(),getContext:n.fn(),getContexts:n.fn(),getTypedDataFilters:n.fn(),getWeb3Checks:n.fn()};let r,u,d,A,S,l;function R(){return{getAppConfig:u,buildContext:d,provideContext:A,signTransaction:S,inspectTransaction:l}}w("SignTransactionDeviceAction (Solana)",()=>{P(()=>{r=E(),u=n.fn(),d=n.fn(),A=n.fn(),S=n.fn(),l=n.fn().mockResolvedValue({transactionType:m.SPL,data:{tokenAddress:null,createATA:!1}})}),D("happy path (skip open): getAppConfig -> inspect -> build -> provide -> sign",()=>new Promise((s,c)=>{r.getDeviceSessionState.mockReturnValue({sessionStateType:v.ReadyWithoutSecureChannel,deviceStatus:y.CONNECTED,installedApps:[],currentApp:{name:"Solana",version:"1.4.1"},deviceModelId:g.NANO_X,isSecureConnectionAllowed:!0}),u.mockResolvedValue(o({data:{}})),l.mockResolvedValue({transactionType:m.SPL});const a={descriptor:new Uint8Array([1]),calCertificate:{keyUsageNumber:0,payload:new Uint8Array([1])},challenge:void 0,addressResult:{tokenAccount:"",owner:"",contract:""}};d.mockResolvedValue(a),A.mockResolvedValue(N);const i=new Uint8Array([170,187]);S.mockResolvedValue(o({data:T(i)}));const p=new k({input:{derivationPath:V,transaction:x,skipOpenApp:!0,options:{},contextModule:I}});n.spyOn(p,"extractDependencies").mockReturnValue(R());const U=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.SignTransaction},status:e.Pending},{output:i,status:e.Completed}];f(p,U,r,{onDone:s,onError:c})})),D("failure in provideContext still signs",()=>new Promise((s,c)=>{r.getDeviceSessionState.mockReturnValue({sessionStateType:v.ReadyWithoutSecureChannel,deviceStatus:y.CONNECTED,installedApps:[],currentApp:{name:"Solana",version:"1.4.1"},deviceModelId:g.NANO_X,isSecureConnectionAllowed:!0}),u.mockResolvedValue(o({data:{}})),l.mockResolvedValue({transactionType:m.SPL}),d.mockResolvedValue({descriptor:new Uint8Array([2]),calCertificate:{keyUsageNumber:0,payload:new Uint8Array},challenge:void 0,addressResult:{tokenAccount:"",owner:"",contract:""}}),A.mockResolvedValue(T(o({error:new C("ctxErr")})));const a=new Uint8Array([254]);S.mockResolvedValue(o({data:T(a)}));const i=new k({input:{derivationPath:V,transaction:x,skipOpenApp:!0,options:{},contextModule:I}});n.spyOn(i,"extractDependencies").mockReturnValue(R());const p=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.SignTransaction},status:e.Pending},{output:a,status:e.Completed}];f(i,p,r,{onDone:s,onError:c})})),D("buildContext throws \u2192 error",()=>new Promise((s,c)=>{r.getDeviceSessionState.mockReturnValue({sessionStateType:v.ReadyWithoutSecureChannel,deviceStatus:y.CONNECTED,installedApps:[],currentApp:{name:"Solana",version:"1.4.1"},deviceModelId:g.NANO_X,isSecureConnectionAllowed:!0}),u.mockResolvedValue(o({data:{}})),l.mockResolvedValue({transactionType:m.SPL}),d.mockRejectedValue(new C("bldErr"));const a=new k({input:{derivationPath:V,transaction:x,skipOpenApp:!0,options:{},contextModule:I}});n.spyOn(a,"extractDependencies").mockReturnValue(R());const i=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{error:expect.anything(),status:e.Error}];f(a,i,r,{onDone:s,onError:c})}))});
|
|
2
2
|
//# sourceMappingURL=SignTransactionDeviceAction.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/device-action/SignTransactionDeviceAction.test.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n CommandResultFactory,\n DeviceActionStatus,\n InvalidStatusWordError,\n UnknownDAError,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { Just, Nothing } from \"purify-ts\";\n\nimport { type SignTransactionDAState } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type Transaction } from \"@api/model/Transaction\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport { setupOpenAppDAMock } from \"@internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock\";\nimport { testDeviceActionStates } from \"@internal/app-binder/device-action/__test-utils__/testDeviceActionStates\";\n\nimport { SignTransactionDeviceAction } from \"./SignTransactionDeviceAction\";\n\njest.mock(\n \"@ledgerhq/device-management-kit\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n () => ({\n ...jest.requireActual(\"@ledgerhq/device-management-kit\"),\n OpenAppDeviceAction: jest.fn(() => ({\n makeStateMachine: jest.fn(),\n })),\n }),\n);\n\ndescribe(\"SignTransactionDeviceAction\", () => {\n const signTransactionMock = jest.fn();\n function extractDependenciesMock() {\n return {\n signTransaction: signTransactionMock,\n };\n }\n const defaultOptions = {};\n let defaultTransaction: Transaction;\n\n beforeEach(() => {\n jest.clearAllMocks();\n defaultTransaction = new Uint8Array([0x01, 0x02, 0x03]);\n });\n\n describe(\"Happy path\", () => {\n it(\"should call external dependencies with the correct parameters\", (done) => {\n setupOpenAppDAMock();\n\n const deviceAction = new SignTransactionDeviceAction({\n input: {\n derivationPath: \"44'/501'/0'/0'\",\n transaction: defaultTransaction,\n options: defaultOptions,\n },\n });\n\n // Mock the dependencies to return some sample data\n signTransactionMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: Just(new Uint8Array([0x05, 0x06, 0x07])),\n }),\n );\n jest\n .spyOn(deviceAction, \"extractDependencies\")\n .mockReturnValue(extractDependenciesMock());\n\n // Expected intermediate values for the following state sequence:\n // Initial -> OpenApp -> GetChallenge -> BuildContext -> ProvideContext -> SignTransaction\n const expectedStates: Array<SignTransactionDAState> = [\n // Initial state\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // OpenApp interaction\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n status: DeviceActionStatus.Pending,\n },\n // SignTransaction state\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n },\n status: DeviceActionStatus.Pending,\n },\n // Final state\n {\n output: new Uint8Array([0x05, 0x06, 0x07]),\n status: DeviceActionStatus.Completed,\n },\n ];\n\n const { observable } = testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n\n // Verify mocks calls parameters\n observable.subscribe({\n complete: () => {\n expect(signTransactionMock).toHaveBeenCalledWith(\n expect.objectContaining({\n input: {\n derivationPath: \"44'/501'/0'/0'\",\n serializedTransaction: new Uint8Array([0x01, 0x02, 0x03]),\n },\n }),\n );\n },\n });\n });\n });\n\n describe(\"OpenApp errors\", () => {\n it(\"should fail if OpenApp throw an error\", (done) => {\n setupOpenAppDAMock(new UnknownDAError(\"OpenApp error\"));\n\n const deviceAction = new SignTransactionDeviceAction({\n input: {\n derivationPath: \"44'/501'/0'/0'\",\n transaction: defaultTransaction,\n options: defaultOptions,\n },\n });\n\n jest\n .spyOn(deviceAction, \"extractDependencies\")\n .mockReturnValue(extractDependenciesMock());\n\n const expectedStates: Array<SignTransactionDAState> = [\n // Initial state\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // OpenApp interaction\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n status: DeviceActionStatus.Pending,\n },\n // OpenApp error\n {\n error: new UnknownDAError(\"OpenApp error\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n });\n\n describe(\"SignTransaction errors\", () => {\n it(\"should fail if signTransaction returns an error\", (done) => {\n setupOpenAppDAMock();\n\n const deviceAction = new SignTransactionDeviceAction({\n input: {\n derivationPath: \"44'/501'/0'/0'\",\n transaction: defaultTransaction,\n options: defaultOptions,\n },\n });\n\n signTransactionMock.mockResolvedValueOnce(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"signTransaction error\"),\n }),\n );\n jest\n .spyOn(deviceAction, \"extractDependencies\")\n .mockReturnValue(extractDependenciesMock());\n\n const expectedStates: Array<SignTransactionDAState> = [\n // Initial state\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // OpenApp interaction\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n status: DeviceActionStatus.Pending,\n },\n // SignTransaction state\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n },\n status: DeviceActionStatus.Pending,\n },\n // SignTransaction error\n {\n error: new InvalidStatusWordError(\"signTransaction error\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n\n it(\"should fail if signTransaction returns nothing\", (done) => {\n setupOpenAppDAMock();\n\n const deviceAction = new SignTransactionDeviceAction({\n input: {\n derivationPath: \"44'/501'/0'/0'\",\n transaction: defaultTransaction,\n options: defaultOptions,\n },\n });\n\n signTransactionMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: Nothing,\n }),\n );\n jest\n .spyOn(deviceAction, \"extractDependencies\")\n .mockReturnValue(extractDependenciesMock());\n\n const expectedStates: Array<SignTransactionDAState> = [\n // Initial state\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // OpenApp interaction\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n status: DeviceActionStatus.Pending,\n },\n // SignTransaction state\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n },\n status: DeviceActionStatus.Pending,\n },\n // SignTransaction error\n {\n error: new UnknownDAError(\"No Signature available\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n });\n\n describe(\"extractDependencies\", () => {\n it(\"should extract dependencies\", async () => {\n const deviceAction = new SignTransactionDeviceAction({\n input: {\n derivationPath: \"44'/501'/0'/0'\",\n transaction: defaultTransaction,\n options: defaultOptions,\n },\n });\n // mock sendCommand to return a successful result\n const api = makeDeviceActionInternalApiMock();\n jest.spyOn(api, \"sendCommand\").mockResolvedValue(\n CommandResultFactory({\n data: Just(new Uint8Array([0x05, 0x06, 0x07])),\n }),\n );\n\n const dependencies = deviceAction.extractDependencies(\n makeDeviceActionInternalApiMock(),\n );\n const signature = await dependencies.signTransaction({\n input: {\n derivationPath: \"44'/501'/0'/0'\",\n serializedTransaction: defaultTransaction,\n },\n });\n\n expect(dependencies.signTransaction).toBeInstanceOf(Function);\n expect(signature).toEqual(\n CommandResultFactory({\n data: Just(new Uint8Array([0x05, 0x06, 0x07])),\n }),\n );\n expect(api.sendCommand).toHaveBeenCalledTimes(1);\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["CommandResultFactory", "DeviceActionStatus", "
|
|
4
|
+
"sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n CommandResultFactory,\n type DeviceActionState,\n DeviceActionStatus,\n DeviceModelId,\n DeviceSessionStateType,\n DeviceStatus,\n InvalidStatusWordError,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { Just, Nothing } from \"purify-ts\";\nimport { beforeEach, describe, it, vi } from \"vitest\";\n\nimport {\n type SignTransactionDAError,\n type SignTransactionDAInput,\n type SignTransactionDAIntermediateValue,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { testDeviceActionStates } from \"@internal/app-binder/device-action/__test-utils__/testDeviceActionStates\";\nimport { SolanaTransactionTypes } from \"@internal/app-binder/services/TransactionInspector\";\nimport { type SolanaBuildContextResult } from \"@internal/app-binder/task/BuildTransactionContextTask\";\n\nimport { makeDeviceActionInternalApiMock } from \"./__test-utils__/makeInternalApi\";\nimport { SignTransactionDeviceAction } from \"./SignTransactionDeviceAction\";\n\nconst defaultDerivation = \"44'/501'/0'/0'\";\nconst exampleTx = new Uint8Array([0xde, 0xad, 0xbe, 0xef]);\n\nconst contextModuleStub: ContextModule = {\n getSolanaContext: vi.fn(),\n getContext: vi.fn(),\n getContexts: vi.fn(),\n getTypedDataFilters: vi.fn(),\n getWeb3Checks: vi.fn(),\n};\n\nlet apiMock: ReturnType<typeof makeDeviceActionInternalApiMock>;\nlet getAppConfigMock: ReturnType<typeof vi.fn>;\nlet buildContextMock: ReturnType<typeof vi.fn>;\nlet provideContextMock: ReturnType<typeof vi.fn>;\nlet signMock: ReturnType<typeof vi.fn>;\nlet inspectTransactionMock: ReturnType<typeof vi.fn>;\n\nfunction extractDeps() {\n return {\n getAppConfig: getAppConfigMock,\n buildContext: buildContextMock,\n provideContext: provideContextMock,\n signTransaction: signMock,\n inspectTransaction: inspectTransactionMock,\n };\n}\n\ndescribe(\"SignTransactionDeviceAction (Solana)\", () => {\n beforeEach(() => {\n apiMock = makeDeviceActionInternalApiMock();\n getAppConfigMock = vi.fn();\n buildContextMock = vi.fn();\n provideContextMock = vi.fn();\n signMock = vi.fn();\n inspectTransactionMock = vi.fn().mockResolvedValue({\n transactionType: SolanaTransactionTypes.SPL,\n data: { tokenAddress: null, createATA: false },\n });\n });\n\n it(\"happy path (skip open): getAppConfig -> inspect -> build -> provide -> sign\", () =>\n new Promise<void>((resolve, reject) => {\n apiMock.getDeviceSessionState.mockReturnValue({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Solana\", version: \"1.4.1\" },\n deviceModelId: DeviceModelId.NANO_X,\n isSecureConnectionAllowed: true,\n });\n\n getAppConfigMock.mockResolvedValue(CommandResultFactory({ data: {} }));\n inspectTransactionMock.mockResolvedValue({\n transactionType: SolanaTransactionTypes.SPL,\n });\n\n const ctx: SolanaBuildContextResult = {\n descriptor: new Uint8Array([1]),\n calCertificate: { keyUsageNumber: 0, payload: new Uint8Array([0x01]) },\n challenge: undefined,\n addressResult: { tokenAccount: \"\", owner: \"\", contract: \"\" },\n };\n buildContextMock.mockResolvedValue(ctx);\n provideContextMock.mockResolvedValue(Nothing);\n\n const signature = new Uint8Array([0xaa, 0xbb]);\n signMock.mockResolvedValue(\n CommandResultFactory({ data: Just(signature) }),\n );\n\n const action = new SignTransactionDeviceAction({\n input: {\n derivationPath: defaultDerivation,\n transaction: exampleTx,\n skipOpenApp: true, // always skip open\n options: {},\n contextModule: contextModuleStub,\n } as SignTransactionDAInput,\n });\n vi.spyOn(action, \"extractDependencies\").mockReturnValue(extractDeps());\n\n const expected = [\n // getAppConfig\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // inspectTransaction\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // buildContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // provideContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // signTransaction\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n },\n status: DeviceActionStatus.Pending,\n },\n // success\n { output: signature, status: DeviceActionStatus.Completed },\n ] as DeviceActionState<\n Uint8Array,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n >[];\n\n testDeviceActionStates<\n Uint8Array,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n >(action, expected, apiMock, { onDone: resolve, onError: reject });\n }));\n\n it(\"failure in provideContext still signs\", () =>\n new Promise<void>((resolve, reject) => {\n apiMock.getDeviceSessionState.mockReturnValue({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Solana\", version: \"1.4.1\" },\n deviceModelId: DeviceModelId.NANO_X,\n isSecureConnectionAllowed: true,\n });\n\n getAppConfigMock.mockResolvedValue(CommandResultFactory({ data: {} }));\n inspectTransactionMock.mockResolvedValue({\n transactionType: SolanaTransactionTypes.SPL,\n });\n\n buildContextMock.mockResolvedValue({\n descriptor: new Uint8Array([2]),\n calCertificate: { keyUsageNumber: 0, payload: new Uint8Array() },\n challenge: undefined,\n addressResult: { tokenAccount: \"\", owner: \"\", contract: \"\" },\n });\n provideContextMock.mockResolvedValue(\n Just(\n CommandResultFactory({ error: new InvalidStatusWordError(\"ctxErr\") }),\n ),\n );\n const sig = new Uint8Array([0xfe]);\n signMock.mockResolvedValue(CommandResultFactory({ data: Just(sig) }));\n\n const action = new SignTransactionDeviceAction({\n input: {\n derivationPath: defaultDerivation,\n transaction: exampleTx,\n skipOpenApp: true,\n options: {},\n contextModule: contextModuleStub,\n } as SignTransactionDAInput,\n });\n vi.spyOn(action, \"extractDependencies\").mockReturnValue(extractDeps());\n\n const expected = [\n // getAppConfig\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // inspectTransaction\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // buildContext\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // provideContext (returns error but continues)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // signTransaction\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n },\n status: DeviceActionStatus.Pending,\n },\n // success\n { output: sig, status: DeviceActionStatus.Completed },\n ] as DeviceActionState<\n Uint8Array,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n >[];\n\n testDeviceActionStates<\n Uint8Array,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n >(action, expected, apiMock, { onDone: resolve, onError: reject });\n }));\n\n it(\"buildContext throws \u2192 error\", () =>\n new Promise<void>((resolve, reject) => {\n apiMock.getDeviceSessionState.mockReturnValue({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Solana\", version: \"1.4.1\" },\n deviceModelId: DeviceModelId.NANO_X,\n isSecureConnectionAllowed: true,\n });\n\n getAppConfigMock.mockResolvedValue(CommandResultFactory({ data: {} }));\n inspectTransactionMock.mockResolvedValue({\n transactionType: SolanaTransactionTypes.SPL,\n });\n\n buildContextMock.mockRejectedValue(new InvalidStatusWordError(\"bldErr\"));\n\n const action = new SignTransactionDeviceAction({\n input: {\n derivationPath: defaultDerivation,\n transaction: exampleTx,\n skipOpenApp: true,\n options: {},\n contextModule: contextModuleStub,\n } as SignTransactionDAInput,\n });\n vi.spyOn(action, \"extractDependencies\").mockReturnValue(extractDeps());\n\n const expected = [\n // getAppConfig\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // inspectTransaction\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // buildContext (throws)\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n // error raised from buildContext\n {\n error: expect.anything() as unknown as SignTransactionDAError,\n status: DeviceActionStatus.Error,\n },\n ] as DeviceActionState<\n Uint8Array,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n >[];\n\n testDeviceActionStates<\n Uint8Array,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n >(action, expected, apiMock, { onDone: resolve, onError: reject });\n }));\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["CommandResultFactory", "DeviceActionStatus", "DeviceModelId", "DeviceSessionStateType", "DeviceStatus", "InvalidStatusWordError", "UserInteractionRequired", "Just", "Nothing", "beforeEach", "describe", "it", "vi", "testDeviceActionStates", "SolanaTransactionTypes", "makeDeviceActionInternalApiMock", "SignTransactionDeviceAction", "defaultDerivation", "exampleTx", "contextModuleStub", "apiMock", "getAppConfigMock", "buildContextMock", "provideContextMock", "signMock", "inspectTransactionMock", "extractDeps", "resolve", "reject", "ctx", "signature", "action", "expected", "sig"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
function e(){return{sendApdu:vi.fn(),sendCommand:vi.fn().mockResolvedValue(void 0),getDeviceModel:vi.fn(),getDeviceSessionState:vi.fn(),getDeviceSessionStateObservable:vi.fn(),setDeviceSessionState:vi.fn(),getManagerApiService:vi.fn(),getSecureChannelService:vi.fn(),disableRefresher:vi.fn()}}export{e as makeDeviceActionInternalApiMock};
|
|
2
2
|
//# sourceMappingURL=makeInternalApi.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/internal/app-binder/device-action/__test-utils__/makeInternalApi.ts"],
|
|
4
|
-
"sourcesContent": ["import { type InternalApi } from \"@ledgerhq/device-management-kit\";\
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["
|
|
4
|
+
"sourcesContent": ["import { type InternalApi } from \"@ledgerhq/device-management-kit\";\nimport { type Mocked } from \"vitest\";\n\nexport function makeDeviceActionInternalApiMock(): Mocked<InternalApi> {\n return {\n sendApdu: vi.fn(),\n sendCommand: vi.fn().mockResolvedValue(undefined),\n getDeviceModel: vi.fn(),\n getDeviceSessionState: vi.fn(),\n getDeviceSessionStateObservable: vi.fn(),\n setDeviceSessionState: vi.fn(),\n getManagerApiService: vi.fn(),\n getSecureChannelService: vi.fn(),\n disableRefresher: vi.fn(),\n };\n}\n"],
|
|
5
|
+
"mappings": "AAGO,SAASA,GAAuD,CACrE,MAAO,CACL,SAAU,GAAG,GAAG,EAChB,YAAa,GAAG,GAAG,EAAE,kBAAkB,MAAS,EAChD,eAAgB,GAAG,GAAG,EACtB,sBAAuB,GAAG,GAAG,EAC7B,gCAAiC,GAAG,GAAG,EACvC,sBAAuB,GAAG,GAAG,EAC7B,qBAAsB,GAAG,GAAG,EAC5B,wBAAyB,GAAG,GAAG,EAC/B,iBAAkB,GAAG,GAAG,CAC1B,CACF",
|
|
6
|
+
"names": ["makeDeviceActionInternalApiMock"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{OpenAppDeviceAction as n,UserInteractionRequired as t}from"@ledgerhq/device-management-kit";import{Left as i,Right as o}from"purify-ts";import{assign as p,createMachine as
|
|
1
|
+
import{OpenAppDeviceAction as n,UserInteractionRequired as t}from"@ledgerhq/device-management-kit";import{Left as i,Right as o}from"purify-ts";import{assign as p,createMachine as r}from"xstate";const f=e=>{n.mockImplementation(()=>({makeStateMachine:vi.fn().mockImplementation(()=>r({initial:"pending",states:{pending:{entry:p({intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp}}),after:{0:"done"}},done:{type:"final"}},output:()=>e?i(e):o(void 0)}))}))};export{f as setupOpenAppDAMock};
|
|
2
2
|
//# sourceMappingURL=setupOpenAppDAMock.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n OpenAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { assign, createMachine } from \"xstate\";\n\nexport const setupOpenAppDAMock = (error?: unknown) => {\n (OpenAppDeviceAction as
|
|
5
|
-
"mappings": "AAAA,OACE,uBAAAA,EACA,2BAAAC,MACK,kCACP,OAAS,QAAAC,EAAM,SAAAC,MAAa,
|
|
4
|
+
"sourcesContent": ["import {\n OpenAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { type Mock } from \"vitest\";\nimport { assign, createMachine } from \"xstate\";\n\nexport const setupOpenAppDAMock = (error?: unknown) => {\n (OpenAppDeviceAction as Mock).mockImplementation(() => ({\n makeStateMachine: vi.fn().mockImplementation(() =>\n createMachine({\n initial: \"pending\",\n states: {\n pending: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n }),\n after: {\n 0: \"done\",\n },\n },\n done: {\n type: \"final\",\n },\n },\n output: () => (error ? Left(error) : Right(undefined)),\n }),\n ),\n }));\n};\n"],
|
|
5
|
+
"mappings": "AAAA,OACE,uBAAAA,EACA,2BAAAC,MACK,kCACP,OAAS,QAAAC,EAAM,SAAAC,MAAa,YAE5B,OAAS,UAAAC,EAAQ,iBAAAC,MAAqB,SAE/B,MAAMC,EAAsBC,GAAoB,CACpDP,EAA6B,mBAAmB,KAAO,CACtD,iBAAkB,GAAG,GAAG,EAAE,mBAAmB,IAC3CK,EAAc,CACZ,QAAS,UACT,OAAQ,CACN,QAAS,CACP,MAAOD,EAAO,CACZ,kBAAmB,CACjB,wBAAyBH,EAAwB,cACnD,CACF,CAAC,EACD,MAAO,CACL,EAAG,MACL,CACF,EACA,KAAM,CACJ,KAAM,OACR,CACF,EACA,OAAQ,IAAOM,EAAQL,EAAKK,CAAK,EAAIJ,EAAM,MAAS,CACtD,CAAC,CACH,CACF,EAAE,CACJ",
|
|
6
6
|
"names": ["OpenAppDeviceAction", "UserInteractionRequired", "Left", "Right", "assign", "createMachine", "setupOpenAppDAMock", "error"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function
|
|
1
|
+
function p(n,i,c,{onDone:a,onError:t}){const r=[],{observable:o,cancel:u}=n._execute(c);return o.subscribe({next:e=>{r.push(e)},error:e=>{t(e)},complete:()=>{try{expect(r).toEqual(i),a()}catch(e){t(e)}}}),{observable:o,cancel:u}}export{p as testDeviceActionStates};
|
|
2
2
|
//# sourceMappingURL=testDeviceActionStates.js.map
|
package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type DeviceAction,\n type DeviceActionIntermediateValue,\n type DeviceActionState,\n type DmkError,\n type InternalApi,\n} from \"@ledgerhq/device-management-kit\";\n\n/**\n * Test that the states emitted by a device action match the expected states.\n * @param deviceAction The device action to test.\n * @param expectedStates The expected states.\n * @param
|
|
5
|
-
"mappings": "AAcO,SAASA,EAMdC,EACAC,EACAC,
|
|
6
|
-
"names": ["testDeviceActionStates", "deviceAction", "expectedStates", "internalApi", "
|
|
4
|
+
"sourcesContent": ["import {\n type DeviceAction,\n type DeviceActionIntermediateValue,\n type DeviceActionState,\n type DmkError,\n type InternalApi,\n} from \"@ledgerhq/device-management-kit\";\n\n/**\n * Test that the states emitted by a device action match the expected states.\n * @param deviceAction The device action to test.\n * @param expectedStates The expected states.\n * @param callbacks { onDone, onError } The callbacks to call when the test is done or an error occurs.\n */\nexport function testDeviceActionStates<\n Output,\n Input,\n Error extends DmkError,\n IntermediateValue extends DeviceActionIntermediateValue,\n>(\n deviceAction: DeviceAction<Output, Input, Error, IntermediateValue>,\n expectedStates: Array<DeviceActionState<Output, Error, IntermediateValue>>,\n internalApi: InternalApi,\n {\n onDone,\n onError,\n }: {\n onDone: () => void;\n onError: (error: Error) => void;\n },\n) {\n const observedStates: Array<\n DeviceActionState<Output, Error, IntermediateValue>\n > = [];\n\n const { observable, cancel } = deviceAction._execute(internalApi);\n observable.subscribe({\n next: (state) => {\n observedStates.push(state);\n },\n error: (error) => {\n onError(error);\n },\n complete: () => {\n try {\n expect(observedStates).toEqual(expectedStates);\n onDone();\n } catch (e) {\n onError(e as Error);\n }\n },\n });\n return { observable, cancel };\n}\n"],
|
|
5
|
+
"mappings": "AAcO,SAASA,EAMdC,EACAC,EACAC,EACA,CACE,OAAAC,EACA,QAAAC,CACF,EAIA,CACA,MAAMC,EAEF,CAAC,EAEC,CAAE,WAAAC,EAAY,OAAAC,CAAO,EAAIP,EAAa,SAASE,CAAW,EAChE,OAAAI,EAAW,UAAU,CACnB,KAAOE,GAAU,CACfH,EAAe,KAAKG,CAAK,CAC3B,EACA,MAAQC,GAAU,CAChBL,EAAQK,CAAK,CACf,EACA,SAAU,IAAM,CACd,GAAI,CACF,OAAOJ,CAAc,EAAE,QAAQJ,CAAc,EAC7CE,EAAO,CACT,OAAS,EAAG,CACVC,EAAQ,CAAU,CACpB,CACF,CACF,CAAC,EACM,CAAE,WAAAE,EAAY,OAAAC,CAAO,CAC9B",
|
|
6
|
+
"names": ["testDeviceActionStates", "deviceAction", "expectedStates", "internalApi", "onDone", "onError", "observedStates", "observable", "cancel", "state", "error"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ContainerModule as
|
|
1
|
+
import{ContainerModule as p}from"inversify";import{appBinderTypes as r}from"../../app-binder/di/appBinderTypes";import{SolanaAppBinder as e}from"../../app-binder/SolanaAppBinder";const a=()=>new p(({bind:o})=>{o(r.AppBinder).to(e)});export{a as appBinderModuleFactory};
|
|
2
2
|
//# sourceMappingURL=appBinderModule.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/di/appBinderModule.ts"],
|
|
4
|
-
"sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { appBinderTypes } from \"@internal/app-binder/di/appBinderTypes\";\nimport { SolanaAppBinder } from \"@internal/app-binder/SolanaAppBinder\";\n\nexport const appBinderModuleFactory = () =>\n new ContainerModule(
|
|
5
|
-
"mappings": "AAAA,OAAS,mBAAAA,MAAuB,YAEhC,OAAS,kBAAAC,MAAsB,yCAC/B,OAAS,mBAAAC,MAAuB,uCAEzB,MAAMC,EAAyB,IACpC,IAAIH,
|
|
6
|
-
"names": ["ContainerModule", "appBinderTypes", "SolanaAppBinder", "appBinderModuleFactory", "bind"
|
|
4
|
+
"sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { appBinderTypes } from \"@internal/app-binder/di/appBinderTypes\";\nimport { SolanaAppBinder } from \"@internal/app-binder/SolanaAppBinder\";\n\nexport const appBinderModuleFactory = () =>\n new ContainerModule(({ bind }) => {\n bind(appBinderTypes.AppBinder).to(SolanaAppBinder);\n });\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,mBAAAA,MAAuB,YAEhC,OAAS,kBAAAC,MAAsB,yCAC/B,OAAS,mBAAAC,MAAuB,uCAEzB,MAAMC,EAAyB,IACpC,IAAIH,EAAgB,CAAC,CAAE,KAAAI,CAAK,IAAM,CAChCA,EAAKH,EAAe,SAAS,EAAE,GAAGC,CAAe,CACnD,CAAC",
|
|
6
|
+
"names": ["ContainerModule", "appBinderTypes", "SolanaAppBinder", "appBinderModuleFactory", "bind"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Container as r}from"inversify";import{appBinderModuleFactory as t}from"./appBinderModule";describe("appBinderModule",()=>{describe("Default",()=>{let o,e;beforeEach(()=>{e=t(),o=new r,o.
|
|
1
|
+
import{Container as r}from"inversify";import{appBinderModuleFactory as t}from"./appBinderModule";describe("appBinderModule",()=>{describe("Default",()=>{let o,e;beforeEach(()=>{e=t(),o=new r,o.loadSync(e)}),it("should return appBinder module",()=>{expect(e).toBeDefined()})})});
|
|
2
2
|
//# sourceMappingURL=appBinderModule.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/di/appBinderModule.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { Container } from \"inversify\";\n\nimport { appBinderModuleFactory } from \"./appBinderModule\";\n\ndescribe(\"appBinderModule\", () => {\n describe(\"Default\", () => {\n let container: Container;\n let mod: ReturnType<typeof appBinderModuleFactory>;\n beforeEach(() => {\n mod = appBinderModuleFactory();\n container = new Container();\n container.
|
|
5
|
-
"mappings": "AAAA,OAAS,aAAAA,MAAiB,YAE1B,OAAS,0BAAAC,MAA8B,oBAEvC,SAAS,kBAAmB,IAAM,CAChC,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 { appBinderModuleFactory } from \"./appBinderModule\";\n\ndescribe(\"appBinderModule\", () => {\n describe(\"Default\", () => {\n let container: Container;\n let mod: ReturnType<typeof appBinderModuleFactory>;\n beforeEach(() => {\n mod = appBinderModuleFactory();\n container = new Container();\n container.loadSync(mod);\n });\n\n it(\"should return appBinder module\", () => {\n expect(mod).toBeDefined();\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,aAAAA,MAAiB,YAE1B,OAAS,0BAAAC,MAA8B,oBAEvC,SAAS,kBAAmB,IAAM,CAChC,SAAS,UAAW,IAAM,CACxB,IAAIC,EACAC,EACJ,WAAW,IAAM,CACfA,EAAMF,EAAuB,EAC7BC,EAAY,IAAIF,EAChBE,EAAU,SAASC,CAAG,CACxB,CAAC,EAED,GAAG,iCAAkC,IAAM,CACzC,OAAOA,CAAG,EAAE,YAAY,CAC1B,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
6
|
"names": ["Container", "appBinderModuleFactory", "container", "mod"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{DeviceSessionStateType as t}from"@ledgerhq/device-management-kit";import{gt as s,gte as o}from"semver";class l{isCompatible=!0;version="0.0.1";modelId;constructor(e,i){if(this.modelId=e.deviceModelId,e.sessionStateType===t.Connected){this.isCompatible=!1;return}if(e.currentApp.name!=="Solana"){this.isCompatible=!1;return}e.currentApp.name==="Solana"?this.version=e.currentApp.version:this.version=i.version}withMinVersionInclusive(e){return o(this.version,e)||(this.isCompatible=!1),this}withMinVersionExclusive(e){return s(this.version,e)||(this.isCompatible=!1),this}excludeDeviceModel(e){return this.modelId===e&&(this.isCompatible=!1),this}check(){return this.isCompatible}}export{l as ApplicationChecker};
|
|
2
|
+
//# sourceMappingURL=ApplicationChecker.js.map
|