@ledgerhq/device-signer-kit-solana 1.0.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/LICENSE.MD +202 -0
- package/README.md +513 -0
- package/lib/cjs/api/SignerSolana.js +2 -0
- package/lib/cjs/api/SignerSolana.js.map +7 -0
- package/lib/cjs/api/SignerSolanaBuilder.js +2 -0
- package/lib/cjs/api/SignerSolanaBuilder.js.map +7 -0
- package/lib/cjs/api/app-binder/GetAddressDeviceActionTypes.js +2 -0
- package/lib/cjs/api/app-binder/GetAddressDeviceActionTypes.js.map +7 -0
- package/lib/cjs/api/app-binder/GetAppConfigurationDeviceActionTypes.js +2 -0
- package/lib/cjs/api/app-binder/GetAppConfigurationDeviceActionTypes.js.map +7 -0
- package/lib/cjs/api/app-binder/SignMessageDeviceActionTypes.js +2 -0
- package/lib/cjs/api/app-binder/SignMessageDeviceActionTypes.js.map +7 -0
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +2 -0
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +7 -0
- package/lib/cjs/api/index.js +2 -0
- package/lib/cjs/api/index.js.map +7 -0
- package/lib/cjs/api/model/AddressOption.js +2 -0
- package/lib/cjs/api/model/AddressOption.js.map +7 -0
- package/lib/cjs/api/model/AppConfiguration.js +2 -0
- package/lib/cjs/api/model/AppConfiguration.js.map +7 -0
- package/lib/cjs/api/model/PublicKey.js +2 -0
- package/lib/cjs/api/model/PublicKey.js.map +7 -0
- package/lib/cjs/api/model/PublicKeyDisplayMode.js +2 -0
- package/lib/cjs/api/model/PublicKeyDisplayMode.js.map +7 -0
- package/lib/cjs/api/model/Signature.js +2 -0
- package/lib/cjs/api/model/Signature.js.map +7 -0
- package/lib/cjs/api/model/Transaction.js +2 -0
- package/lib/cjs/api/model/Transaction.js.map +7 -0
- package/lib/cjs/api/model/TransactionOptions.js +2 -0
- package/lib/cjs/api/model/TransactionOptions.js.map +7 -0
- package/lib/cjs/index.js +2 -0
- package/lib/cjs/index.js.map +7 -0
- package/lib/cjs/internal/DefaultSignerSolana.js +2 -0
- package/lib/cjs/internal/DefaultSignerSolana.js.map +7 -0
- package/lib/cjs/internal/DefaultSignerSolana.test.js +2 -0
- package/lib/cjs/internal/DefaultSignerSolana.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/SolanaAppBinder.js +2 -0
- package/lib/cjs/internal/app-binder/SolanaAppBinder.js.map +7 -0
- package/lib/cjs/internal/app-binder/SolanaAppBinder.test.js +2 -0
- package/lib/cjs/internal/app-binder/SolanaAppBinder.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/GetPubKeyCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/GetPubKeyCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/GetPubKeyCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/GetPubKeyCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/SignOffChainMessageCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/SignOffChainMessageCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/SignOffChainMessageCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/SignOffChainMessageCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/SignTransactionCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/SignTransactionCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/utils/solanaAppError.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/utils/solanaAppError.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/utils/solanaAppErrors.js +2 -0
- package/lib/cjs/internal/app-binder/command/utils/solanaAppErrors.js.map +7 -0
- package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js.map +7 -0
- package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.js.map +7 -0
- package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.test.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +7 -0
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js.map +7 -0
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map +7 -0
- package/lib/cjs/internal/app-binder/di/appBinderModule.js +2 -0
- package/lib/cjs/internal/app-binder/di/appBinderModule.js.map +7 -0
- package/lib/cjs/internal/app-binder/di/appBinderModule.test.js +2 -0
- package/lib/cjs/internal/app-binder/di/appBinderModule.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/di/appBinderTypes.js +2 -0
- package/lib/cjs/internal/app-binder/di/appBinderTypes.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/SendCommandInChunksTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/SendCommandInChunksTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/SendSignDataTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/SendSignDataTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/SendSignDataTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/SendSignDataTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/SendSignMessageTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/SendSignMessageTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/SendSignMessageTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/SendSignMessageTask.test.js.map +7 -0
- package/lib/cjs/internal/di.js +2 -0
- package/lib/cjs/internal/di.js.map +7 -0
- package/lib/cjs/internal/externalTypes.js +2 -0
- package/lib/cjs/internal/externalTypes.js.map +7 -0
- package/lib/cjs/internal/use-cases/address/GetAddressUseCase.js +2 -0
- package/lib/cjs/internal/use-cases/address/GetAddressUseCase.js.map +7 -0
- package/lib/cjs/internal/use-cases/address/GetAddressUseCase.test.js +2 -0
- package/lib/cjs/internal/use-cases/address/GetAddressUseCase.test.js.map +7 -0
- package/lib/cjs/internal/use-cases/app-configuration/GetAppConfiguration.test.js +2 -0
- package/lib/cjs/internal/use-cases/app-configuration/GetAppConfiguration.test.js.map +7 -0
- package/lib/cjs/internal/use-cases/app-configuration/GetAppConfigurationUseCase.js +2 -0
- package/lib/cjs/internal/use-cases/app-configuration/GetAppConfigurationUseCase.js.map +7 -0
- package/lib/cjs/internal/use-cases/di/useCasesModule.js +2 -0
- package/lib/cjs/internal/use-cases/di/useCasesModule.js.map +7 -0
- package/lib/cjs/internal/use-cases/di/useCasesModule.test.js +2 -0
- package/lib/cjs/internal/use-cases/di/useCasesModule.test.js.map +7 -0
- package/lib/cjs/internal/use-cases/di/useCasesTypes.js +2 -0
- package/lib/cjs/internal/use-cases/di/useCasesTypes.js.map +7 -0
- package/lib/cjs/internal/use-cases/message/SignMessageUseCase.js +2 -0
- package/lib/cjs/internal/use-cases/message/SignMessageUseCase.js.map +7 -0
- package/lib/cjs/internal/use-cases/message/SignMessageUseCase.test.js +2 -0
- package/lib/cjs/internal/use-cases/message/SignMessageUseCase.test.js.map +7 -0
- package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.js +2 -0
- package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.js.map +7 -0
- package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.test.js +2 -0
- package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.test.js.map +7 -0
- package/lib/cjs/package.json +58 -0
- package/lib/esm/api/SignerSolana.js +1 -0
- package/lib/esm/api/SignerSolana.js.map +7 -0
- package/lib/esm/api/SignerSolanaBuilder.js +2 -0
- package/lib/esm/api/SignerSolanaBuilder.js.map +7 -0
- package/lib/esm/api/app-binder/GetAddressDeviceActionTypes.js +1 -0
- package/lib/esm/api/app-binder/GetAddressDeviceActionTypes.js.map +7 -0
- package/lib/esm/api/app-binder/GetAppConfigurationDeviceActionTypes.js +1 -0
- package/lib/esm/api/app-binder/GetAppConfigurationDeviceActionTypes.js.map +7 -0
- package/lib/esm/api/app-binder/SignMessageDeviceActionTypes.js +1 -0
- package/lib/esm/api/app-binder/SignMessageDeviceActionTypes.js.map +7 -0
- package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js +1 -0
- package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js.map +7 -0
- package/lib/esm/api/index.js +2 -0
- package/lib/esm/api/index.js.map +7 -0
- package/lib/esm/api/model/AddressOption.js +1 -0
- package/lib/esm/api/model/AddressOption.js.map +7 -0
- package/lib/esm/api/model/AppConfiguration.js +1 -0
- package/lib/esm/api/model/AppConfiguration.js.map +7 -0
- package/lib/esm/api/model/PublicKey.js +1 -0
- package/lib/esm/api/model/PublicKey.js.map +7 -0
- package/lib/esm/api/model/PublicKeyDisplayMode.js +2 -0
- package/lib/esm/api/model/PublicKeyDisplayMode.js.map +7 -0
- package/lib/esm/api/model/Signature.js +1 -0
- package/lib/esm/api/model/Signature.js.map +7 -0
- package/lib/esm/api/model/Transaction.js +1 -0
- package/lib/esm/api/model/Transaction.js.map +7 -0
- package/lib/esm/api/model/TransactionOptions.js +1 -0
- package/lib/esm/api/model/TransactionOptions.js.map +7 -0
- package/lib/esm/index.js +2 -0
- package/lib/esm/index.js.map +7 -0
- package/lib/esm/internal/DefaultSignerSolana.js +2 -0
- package/lib/esm/internal/DefaultSignerSolana.js.map +7 -0
- package/lib/esm/internal/DefaultSignerSolana.test.js +2 -0
- package/lib/esm/internal/DefaultSignerSolana.test.js.map +7 -0
- package/lib/esm/internal/app-binder/SolanaAppBinder.js +2 -0
- package/lib/esm/internal/app-binder/SolanaAppBinder.js.map +7 -0
- package/lib/esm/internal/app-binder/SolanaAppBinder.test.js +2 -0
- package/lib/esm/internal/app-binder/SolanaAppBinder.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/GetPubKeyCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/GetPubKeyCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/GetPubKeyCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/GetPubKeyCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/SignOffChainMessageCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/SignOffChainMessageCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/SignOffChainMessageCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/SignOffChainMessageCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/SignTransactionCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/SignTransactionCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/utils/solanaAppError.test.js +2 -0
- package/lib/esm/internal/app-binder/command/utils/solanaAppError.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/utils/solanaAppErrors.js +2 -0
- package/lib/esm/internal/app-binder/command/utils/solanaAppErrors.js.map +7 -0
- package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js +2 -0
- package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js.map +7 -0
- package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js +2 -0
- package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js.map +7 -0
- package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.js +2 -0
- package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.js.map +7 -0
- package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.test.js +2 -0
- package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.test.js.map +7 -0
- package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +2 -0
- package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +7 -0
- package/lib/esm/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js +2 -0
- package/lib/esm/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js.map +7 -0
- package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js +2 -0
- package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map +7 -0
- package/lib/esm/internal/app-binder/di/appBinderModule.js +2 -0
- package/lib/esm/internal/app-binder/di/appBinderModule.js.map +7 -0
- package/lib/esm/internal/app-binder/di/appBinderModule.test.js +2 -0
- package/lib/esm/internal/app-binder/di/appBinderModule.test.js.map +7 -0
- package/lib/esm/internal/app-binder/di/appBinderTypes.js +2 -0
- package/lib/esm/internal/app-binder/di/appBinderTypes.js.map +7 -0
- package/lib/esm/internal/app-binder/task/SendCommandInChunksTask.js +2 -0
- package/lib/esm/internal/app-binder/task/SendCommandInChunksTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/SendSignDataTask.js +2 -0
- package/lib/esm/internal/app-binder/task/SendSignDataTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/SendSignDataTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/SendSignDataTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/SendSignMessageTask.js +2 -0
- package/lib/esm/internal/app-binder/task/SendSignMessageTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/SendSignMessageTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/SendSignMessageTask.test.js.map +7 -0
- package/lib/esm/internal/di.js +2 -0
- package/lib/esm/internal/di.js.map +7 -0
- package/lib/esm/internal/externalTypes.js +2 -0
- package/lib/esm/internal/externalTypes.js.map +7 -0
- package/lib/esm/internal/use-cases/address/GetAddressUseCase.js +2 -0
- package/lib/esm/internal/use-cases/address/GetAddressUseCase.js.map +7 -0
- package/lib/esm/internal/use-cases/address/GetAddressUseCase.test.js +2 -0
- package/lib/esm/internal/use-cases/address/GetAddressUseCase.test.js.map +7 -0
- package/lib/esm/internal/use-cases/app-configuration/GetAppConfiguration.test.js +2 -0
- package/lib/esm/internal/use-cases/app-configuration/GetAppConfiguration.test.js.map +7 -0
- package/lib/esm/internal/use-cases/app-configuration/GetAppConfigurationUseCase.js +2 -0
- package/lib/esm/internal/use-cases/app-configuration/GetAppConfigurationUseCase.js.map +7 -0
- package/lib/esm/internal/use-cases/di/useCasesModule.js +2 -0
- package/lib/esm/internal/use-cases/di/useCasesModule.js.map +7 -0
- package/lib/esm/internal/use-cases/di/useCasesModule.test.js +2 -0
- package/lib/esm/internal/use-cases/di/useCasesModule.test.js.map +7 -0
- package/lib/esm/internal/use-cases/di/useCasesTypes.js +2 -0
- package/lib/esm/internal/use-cases/di/useCasesTypes.js.map +7 -0
- package/lib/esm/internal/use-cases/message/SignMessageUseCase.js +2 -0
- package/lib/esm/internal/use-cases/message/SignMessageUseCase.js.map +7 -0
- package/lib/esm/internal/use-cases/message/SignMessageUseCase.test.js +2 -0
- package/lib/esm/internal/use-cases/message/SignMessageUseCase.test.js.map +7 -0
- package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.js +2 -0
- package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.js.map +7 -0
- package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.test.js +2 -0
- package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.test.js.map +7 -0
- package/lib/esm/package.json +58 -0
- package/lib/types/api/SignerSolana.d.ts +14 -0
- package/lib/types/api/SignerSolana.d.ts.map +1 -0
- package/lib/types/api/SignerSolanaBuilder.d.ts +28 -0
- package/lib/types/api/SignerSolanaBuilder.d.ts.map +1 -0
- package/lib/types/api/app-binder/GetAddressDeviceActionTypes.d.ts +9 -0
- package/lib/types/api/app-binder/GetAddressDeviceActionTypes.d.ts.map +1 -0
- package/lib/types/api/app-binder/GetAppConfigurationDeviceActionTypes.d.ts +7 -0
- package/lib/types/api/app-binder/GetAppConfigurationDeviceActionTypes.d.ts.map +1 -0
- package/lib/types/api/app-binder/SignMessageDeviceActionTypes.d.ts +20 -0
- package/lib/types/api/app-binder/SignMessageDeviceActionTypes.d.ts.map +1 -0
- package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +23 -0
- package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -0
- package/lib/types/api/index.d.ts +10 -0
- package/lib/types/api/index.d.ts.map +1 -0
- package/lib/types/api/model/AddressOption.d.ts +4 -0
- package/lib/types/api/model/AddressOption.d.ts.map +1 -0
- package/lib/types/api/model/AppConfiguration.d.ts +7 -0
- package/lib/types/api/model/AppConfiguration.d.ts.map +1 -0
- package/lib/types/api/model/PublicKey.d.ts +2 -0
- package/lib/types/api/model/PublicKey.d.ts.map +1 -0
- package/lib/types/api/model/PublicKeyDisplayMode.d.ts +5 -0
- package/lib/types/api/model/PublicKeyDisplayMode.d.ts.map +1 -0
- package/lib/types/api/model/Signature.d.ts +2 -0
- package/lib/types/api/model/Signature.d.ts.map +1 -0
- package/lib/types/api/model/Transaction.d.ts +2 -0
- package/lib/types/api/model/Transaction.d.ts.map +1 -0
- package/lib/types/api/model/TransactionOptions.d.ts +2 -0
- package/lib/types/api/model/TransactionOptions.d.ts.map +1 -0
- package/lib/types/index.d.ts +3 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/internal/DefaultSignerSolana.d.ts +22 -0
- package/lib/types/internal/DefaultSignerSolana.d.ts.map +1 -0
- package/lib/types/internal/DefaultSignerSolana.test.d.ts +2 -0
- package/lib/types/internal/DefaultSignerSolana.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/SolanaAppBinder.d.ts +27 -0
- package/lib/types/internal/app-binder/SolanaAppBinder.d.ts.map +1 -0
- package/lib/types/internal/app-binder/SolanaAppBinder.test.d.ts +2 -0
- package/lib/types/internal/app-binder/SolanaAppBinder.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.d.ts +11 -0
- package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/GetPubKeyCommand.d.ts +15 -0
- package/lib/types/internal/app-binder/command/GetPubKeyCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/GetPubKeyCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/GetPubKeyCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/SignOffChainMessageCommand.d.ts +14 -0
- package/lib/types/internal/app-binder/command/SignOffChainMessageCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/SignOffChainMessageCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/SignOffChainMessageCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/SignTransactionCommand.d.ts +19 -0
- package/lib/types/internal/app-binder/command/SignTransactionCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/SignTransactionCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/SignTransactionCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/utils/solanaAppError.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/utils/solanaAppError.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/utils/solanaAppErrors.d.ts +8 -0
- package/lib/types/internal/app-binder/command/utils/solanaAppErrors.d.ts.map +1 -0
- package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.d.ts +15 -0
- package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.d.ts.map +1 -0
- package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.d.ts +2 -0
- package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/device-action/SignTransactionDeviceAction.d.ts +17 -0
- package/lib/types/internal/app-binder/device-action/SignTransactionDeviceAction.d.ts.map +1 -0
- package/lib/types/internal/app-binder/device-action/SignTransactionDeviceAction.test.d.ts +2 -0
- package/lib/types/internal/app-binder/device-action/SignTransactionDeviceAction.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts +3 -0
- package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -0
- package/lib/types/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.d.ts +2 -0
- package/lib/types/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.d.ts.map +1 -0
- package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.d.ts +12 -0
- package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.d.ts.map +1 -0
- package/lib/types/internal/app-binder/di/appBinderModule.d.ts +3 -0
- package/lib/types/internal/app-binder/di/appBinderModule.d.ts.map +1 -0
- package/lib/types/internal/app-binder/di/appBinderModule.test.d.ts +2 -0
- package/lib/types/internal/app-binder/di/appBinderModule.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/di/appBinderTypes.d.ts +4 -0
- package/lib/types/internal/app-binder/di/appBinderTypes.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/SendCommandInChunksTask.d.ts +18 -0
- package/lib/types/internal/app-binder/task/SendCommandInChunksTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/SendSignDataTask.d.ts +17 -0
- package/lib/types/internal/app-binder/task/SendSignDataTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/SendSignDataTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/SendSignDataTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/SendSignMessageTask.d.ts +15 -0
- package/lib/types/internal/app-binder/task/SendSignMessageTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/SendSignMessageTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/SendSignMessageTask.test.d.ts.map +1 -0
- package/lib/types/internal/di.d.ts +8 -0
- package/lib/types/internal/di.d.ts.map +1 -0
- package/lib/types/internal/externalTypes.d.ts +5 -0
- package/lib/types/internal/externalTypes.d.ts.map +1 -0
- package/lib/types/internal/use-cases/address/GetAddressUseCase.d.ts +9 -0
- package/lib/types/internal/use-cases/address/GetAddressUseCase.d.ts.map +1 -0
- package/lib/types/internal/use-cases/address/GetAddressUseCase.test.d.ts +2 -0
- package/lib/types/internal/use-cases/address/GetAddressUseCase.test.d.ts.map +1 -0
- package/lib/types/internal/use-cases/app-configuration/GetAppConfiguration.test.d.ts +2 -0
- package/lib/types/internal/use-cases/app-configuration/GetAppConfiguration.test.d.ts.map +1 -0
- package/lib/types/internal/use-cases/app-configuration/GetAppConfigurationUseCase.d.ts +8 -0
- package/lib/types/internal/use-cases/app-configuration/GetAppConfigurationUseCase.d.ts.map +1 -0
- package/lib/types/internal/use-cases/di/useCasesModule.d.ts +3 -0
- package/lib/types/internal/use-cases/di/useCasesModule.d.ts.map +1 -0
- package/lib/types/internal/use-cases/di/useCasesModule.test.d.ts +2 -0
- package/lib/types/internal/use-cases/di/useCasesModule.test.d.ts.map +1 -0
- package/lib/types/internal/use-cases/di/useCasesTypes.d.ts +7 -0
- package/lib/types/internal/use-cases/di/useCasesTypes.d.ts.map +1 -0
- package/lib/types/internal/use-cases/message/SignMessageUseCase.d.ts +8 -0
- package/lib/types/internal/use-cases/message/SignMessageUseCase.d.ts.map +1 -0
- package/lib/types/internal/use-cases/message/SignMessageUseCase.test.d.ts +2 -0
- package/lib/types/internal/use-cases/message/SignMessageUseCase.test.d.ts.map +1 -0
- package/lib/types/internal/use-cases/transaction/SignTransactionUseCase.d.ts +10 -0
- package/lib/types/internal/use-cases/transaction/SignTransactionUseCase.d.ts.map +1 -0
- package/lib/types/internal/use-cases/transaction/SignTransactionUseCase.test.d.ts +2 -0
- package/lib/types/internal/use-cases/transaction/SignTransactionUseCase.test.d.ts.map +1 -0
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -0
- package/package.json +57 -0
package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n CommandResultFactory,\n DeviceActionStatus,\n UnknownDeviceExchangeError,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { UnknownDAError } from \"@ledgerhq/device-management-kit\";\n\nimport { type SignMessageDAState } from \"@api/app-binder/SignMessageDeviceActionTypes\";\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\";\nimport { SignMessageDeviceAction } from \"@internal/app-binder/device-action/SignMessage/SignMessageDeviceAction\";\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(\"SignMessageDeviceAction\", () => {\n const signMessageMock = jest.fn();\n\n function extractDependenciesMock() {\n return {\n signMessage: signMessageMock,\n };\n }\n\n beforeEach(() => {\n jest.resetAllMocks();\n });\n\n describe(\"Success case\", () => {\n it(\"should call external dependencies with the correct parameters\", (done) => {\n setupOpenAppDAMock();\n\n const deviceAction = new SignMessageDeviceAction({\n input: {\n derivationPath: \"44'/501'/0'/0'\",\n message: \"Hello world\",\n },\n });\n\n jest\n .spyOn(deviceAction, \"extractDependencies\")\n .mockImplementation(() => extractDependenciesMock());\n\n const signatureData = new Uint8Array([\n // signature data...\n ]);\n\n signMessageMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: signatureData,\n }),\n );\n\n const expectedStates: Array<SignMessageDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction:\n UserInteractionRequired.SignPersonalMessage,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n output: signatureData,\n status: DeviceActionStatus.Completed,\n },\n ];\n\n const { observable } = testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n );\n\n observable.subscribe({\n complete: () => {\n try {\n expect(signMessageMock).toHaveBeenCalledWith(\n expect.objectContaining({\n input: expect.objectContaining({\n derivationPath: \"44'/501'/0'/0'\",\n sendingData: new TextEncoder().encode(\"Hello world\"),\n }),\n }),\n );\n done();\n } catch (error) {\n done(error);\n }\n },\n error: (err) => {\n done(err);\n },\n });\n });\n });\n\n describe(\"error cases\", () => {\n it(\"Error if the open app fails\", (done) => {\n setupOpenAppDAMock(new UnknownDeviceExchangeError(\"Mocked error\"));\n\n const expectedStates: Array<SignMessageDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n },\n ];\n\n const deviceAction = new SignMessageDeviceAction({\n input: {\n derivationPath: \"44'/60'/0'/0/0\",\n message: \"Hello world\",\n },\n });\n\n jest\n .spyOn(deviceAction, \"extractDependencies\")\n .mockImplementation(() => extractDependenciesMock());\n\n const { observable } = testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n );\n\n observable.subscribe({\n complete: () => {\n try {\n expect(signMessageMock).not.toHaveBeenCalled();\n done();\n } catch (error) {\n done(error);\n }\n },\n error: (err) => {\n done(err);\n },\n });\n });\n\n it(\"Error if the signMessage fails\", (done) => {\n setupOpenAppDAMock();\n\n const deviceAction = new SignMessageDeviceAction({\n input: {\n derivationPath: \"44'/60'/0'/0/0\",\n message: \"Hello world\",\n },\n });\n\n jest\n .spyOn(deviceAction, \"extractDependencies\")\n .mockImplementation(() => extractDependenciesMock());\n\n signMessageMock.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n }),\n );\n\n const expectedStates: Array<SignMessageDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction:\n UserInteractionRequired.SignPersonalMessage,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n },\n ];\n\n const { observable } = testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n );\n\n observable.subscribe({\n complete: () => {\n try {\n expect(signMessageMock).toHaveBeenCalled();\n done();\n } catch (error) {\n done(error);\n }\n },\n error: (err) => {\n done(err);\n },\n });\n });\n\n it(\"Return a Left if the final state has no signature\", (done) => {\n setupOpenAppDAMock();\n\n const deviceAction = new SignMessageDeviceAction({\n input: {\n derivationPath: \"44'/60'/0'/0/0\",\n message: \"Hello world\",\n },\n });\n\n jest\n .spyOn(deviceAction, \"extractDependencies\")\n .mockImplementation(() => extractDependenciesMock());\n\n signMessageMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: undefined,\n }),\n );\n\n const expectedStates: Array<SignMessageDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction:\n UserInteractionRequired.SignPersonalMessage,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDAError(\"No error in final state\"),\n },\n ];\n\n const { observable } = testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n );\n\n observable.subscribe({\n complete: () => {\n try {\n expect(signMessageMock).toHaveBeenCalledWith(\n expect.objectContaining({\n input: expect.objectContaining({\n derivationPath: \"44'/60'/0'/0/0\",\n sendingData: new TextEncoder().encode(\"Hello world\"),\n }),\n }),\n );\n done();\n } catch (error) {\n done(error);\n }\n },\n error: (err) => {\n done(err);\n },\n });\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAKO,2CACPA,EAA+B,2CAG/BC,EAAgD,6EAChDC,EAAmC,gFACnCC,EAAuC,oFACvCC,EAAwC,kFAExC,KAAK,KACH,kCAEA,KAAO,CACL,GAAG,KAAK,cAAc,iCAAiC,EACvD,oBAAqB,KAAK,GAAG,KAAO,CAClC,iBAAkB,KAAK,GAAG,CAC5B,EAAE,CACJ,EACF,EAEA,SAAS,0BAA2B,IAAM,CACxC,MAAMC,EAAkB,KAAK,GAAG,EAEhC,SAASC,GAA0B,CACjC,MAAO,CACL,YAAaD,CACf,CACF,CAEA,WAAW,IAAM,CACf,KAAK,cAAc,CACrB,CAAC,EAED,SAAS,eAAgB,IAAM,CAC7B,GAAG,gEAAkEE,GAAS,IAC5E,sBAAmB,EAEnB,MAAMC,EAAe,IAAI,0BAAwB,CAC/C,MAAO,CACL,eAAgB,iBAChB,QAAS,aACX,CACF,CAAC,EAED,KACG,MAAMA,EAAc,qBAAqB,EACzC,mBAAmB,IAAMF,EAAwB,CAAC,EAErD,MAAMG,EAAgB,IAAI,WAAW,CAErC,CAAC,EAEDJ,EAAgB,yBACd,wBAAqB,CACnB,KAAMI,CACR,CAAC,CACH,EAEA,MAAMC,EAA4C,CAChD,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,cACnD,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBACE,0BAAwB,mBAC5B,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,OAAQD,EACR,OAAQ,qBAAmB,SAC7B,CACF,EAEM,CAAE,WAAAE,CAAW,KAAI,0BACrBH,EACAE,KACA,mCAAgC,CAClC,EAEAC,EAAW,UAAU,CACnB,SAAU,IAAM,CACd,GAAI,CACF,OAAON,CAAe,EAAE,qBACtB,OAAO,iBAAiB,CACtB,MAAO,OAAO,iBAAiB,CAC7B,eAAgB,iBAChB,YAAa,IAAI,YAAY,EAAE,OAAO,aAAa,CACrD,CAAC,CACH,CAAC,CACH,EACAE,EAAK,CACP,OAASK,EAAO,CACdL,EAAKK,CAAK,CACZ,CACF,EACA,MAAQC,GAAQ,CACdN,EAAKM,CAAG,CACV,CACF,CAAC,CACH,CAAC,CACH,CAAC,EAED,SAAS,cAAe,IAAM,CAC5B,GAAG,8BAAgCN,GAAS,IAC1C,sBAAmB,IAAI,6BAA2B,cAAc,CAAC,EAEjE,MAAMG,EAA4C,CAChD,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,CACF,EACA,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,cACnD,CACF,EACA,CACE,OAAQ,qBAAmB,MAC3B,MAAO,IAAI,6BAA2B,cAAc,CACtD,CACF,EAEMF,EAAe,IAAI,0BAAwB,CAC/C,MAAO,CACL,eAAgB,iBAChB,QAAS,aACX,CACF,CAAC,EAED,KACG,MAAMA,EAAc,qBAAqB,EACzC,mBAAmB,IAAMF,EAAwB,CAAC,EAErD,KAAM,CAAE,WAAAK,CAAW,KAAI,0BACrBH,EACAE,KACA,mCAAgC,CAClC,EAEAC,EAAW,UAAU,CACnB,SAAU,IAAM,CACd,GAAI,CACF,OAAON,CAAe,EAAE,IAAI,iBAAiB,EAC7CE,EAAK,CACP,OAASK,EAAO,CACdL,EAAKK,CAAK,CACZ,CACF,EACA,MAAQC,GAAQ,CACdN,EAAKM,CAAG,CACV,CACF,CAAC,CACH,CAAC,EAED,GAAG,iCAAmCN,GAAS,IAC7C,sBAAmB,EAEnB,MAAMC,EAAe,IAAI,0BAAwB,CAC/C,MAAO,CACL,eAAgB,iBAChB,QAAS,aACX,CACF,CAAC,EAED,KACG,MAAMA,EAAc,qBAAqB,EACzC,mBAAmB,IAAMF,EAAwB,CAAC,EAErDD,EAAgB,yBACd,wBAAqB,CACnB,MAAO,IAAI,6BAA2B,cAAc,CACtD,CAAC,CACH,EAEA,MAAMK,EAA4C,CAChD,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,CACF,EACA,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,cACnD,CACF,EACA,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBACE,0BAAwB,mBAC5B,CACF,EACA,CACE,OAAQ,qBAAmB,MAC3B,MAAO,IAAI,6BAA2B,cAAc,CACtD,CACF,EAEM,CAAE,WAAAC,CAAW,KAAI,0BACrBH,EACAE,KACA,mCAAgC,CAClC,EAEAC,EAAW,UAAU,CACnB,SAAU,IAAM,CACd,GAAI,CACF,OAAON,CAAe,EAAE,iBAAiB,EACzCE,EAAK,CACP,OAASK,EAAO,CACdL,EAAKK,CAAK,CACZ,CACF,EACA,MAAQC,GAAQ,CACdN,EAAKM,CAAG,CACV,CACF,CAAC,CACH,CAAC,EAED,GAAG,oDAAsDN,GAAS,IAChE,sBAAmB,EAEnB,MAAMC,EAAe,IAAI,0BAAwB,CAC/C,MAAO,CACL,eAAgB,iBAChB,QAAS,aACX,CACF,CAAC,EAED,KACG,MAAMA,EAAc,qBAAqB,EACzC,mBAAmB,IAAMF,EAAwB,CAAC,EAErDD,EAAgB,yBACd,wBAAqB,CACnB,KAAM,MACR,CAAC,CACH,EAEA,MAAMK,EAA4C,CAChD,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,CACF,EACA,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,cACnD,CACF,EACA,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBACE,0BAAwB,mBAC5B,CACF,EACA,CACE,OAAQ,qBAAmB,MAC3B,MAAO,IAAI,iBAAe,yBAAyB,CACrD,CACF,EAEM,CAAE,WAAAC,CAAW,KAAI,0BACrBH,EACAE,KACA,mCAAgC,CAClC,EAEAC,EAAW,UAAU,CACnB,SAAU,IAAM,CACd,GAAI,CACF,OAAON,CAAe,EAAE,qBACtB,OAAO,iBAAiB,CACtB,MAAO,OAAO,iBAAiB,CAC7B,eAAgB,iBAChB,YAAa,IAAI,YAAY,EAAE,OAAO,aAAa,CACrD,CAAC,CACH,CAAC,CACH,EACAE,EAAK,CACP,OAASK,EAAO,CACdL,EAAKK,CAAK,CACZ,CACF,EACA,MAAQC,GAAQ,CACdN,EAAKM,CAAG,CACV,CACF,CAAC,CACH,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_device_management_kit", "import_makeInternalApi", "import_setupOpenAppDAMock", "import_testDeviceActionStates", "import_SignMessageDeviceAction", "signMessageMock", "extractDependenciesMock", "done", "deviceAction", "signatureData", "expectedStates", "observable", "error", "err"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var c=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var d=(i,e)=>{for(var o in e)c(i,o,{get:e[o],enumerable:!0})},m=(i,e,o,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of l(e))!g.call(i,t)&&t!==o&&c(i,t,{get:()=>e[t],enumerable:!(n=S(e,t))||n.enumerable});return i};var A=i=>m(c({},"__esModule",{value:!0}),i);var D={};d(D,{SignTransactionDeviceAction:()=>T});module.exports=A(D);var a=require("@ledgerhq/device-management-kit"),s=require("purify-ts"),r=require("xstate"),p=require("../../app-binder/command/SignTransactionCommand"),u=require("../../app-binder/task/SendSignDataTask");class T extends a.XStateDeviceAction{makeStateMachine(e){const{signTransaction:o}=this.extractDependencies(e);return(0,r.setup)({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new a.OpenAppDeviceAction({input:{appName:"Solana"}}).makeStateMachine(e),signTransaction:(0,r.fromPromise)(o)},guards:{noInternalError:({context:n})=>n._internalState.error===null},actions:{assignErrorFromEvent:(0,r.assign)({_internalState:n=>({...n.context._internalState,error:n.event.error})})}}).createMachine({id:"SignTransactionDeviceAction",initial:"OpenAppDeviceAction",context:({input:n})=>({input:n,intermediateValue:{requiredUserInteraction:a.UserInteractionRequired.None},_internalState:{error:null,signature:null}}),states:{OpenAppDeviceAction:{exit:(0,r.assign)({intermediateValue:{requiredUserInteraction:a.UserInteractionRequired.None}}),invoke:{id:"openAppStateMachine",input:{appName:"Solana"},src:"openAppStateMachine",onSnapshot:{actions:(0,r.assign)({intermediateValue:n=>n.event.snapshot.context.intermediateValue})},onDone:{actions:(0,r.assign)({_internalState:n=>n.event.output.caseOf({Right:()=>n.context._internalState,Left:t=>({...n.context._internalState,error:t})})}),target:"CheckOpenAppDeviceActionResult"}}},CheckOpenAppDeviceActionResult:{always:[{target:"SignTransaction",guard:"noInternalError"},"Error"]},SignTransaction:{entry:(0,r.assign)({intermediateValue:{requiredUserInteraction:a.UserInteractionRequired.SignTransaction}}),exit:(0,r.assign)({intermediateValue:{requiredUserInteraction:a.UserInteractionRequired.None}}),invoke:{id:"signTransaction",src:"signTransaction",input:({context:n})=>({derivationPath:n.input.derivationPath,serializedTransaction:n.input.transaction}),onDone:{target:"SignTransactionResultCheck",actions:[(0,r.assign)({_internalState:({event:n,context:t})=>(0,a.isSuccessCommandResult)(n.output)?n.output.data.isJust()?{...t._internalState,signature:n.output.data.extract()}:{...t._internalState,error:new a.UnknownDAError("No Signature available")}:{...t._internalState,error:n.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},SignTransactionResultCheck:{always:[{guard:"noInternalError",target:"Success"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:n})=>n._internalState.signature?(0,s.Right)(n._internalState.signature):(0,s.Left)(n._internalState.error||new a.UnknownDAError("No error or signature available"))})}extractDependencies(e){return{signTransaction:async n=>new u.SignDataTask(e,{commandFactory:t=>new p.SignTransactionCommand({serializedTransaction:t.chunkedData,more:t.more,extend:t.extend}),derivationPath:n.input.derivationPath,sendingData:n.input.serializedTransaction}).run()}}}0&&(module.exports={SignTransactionDeviceAction});
|
|
2
|
+
//# sourceMappingURL=SignTransactionDeviceAction.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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 { 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<CommandResult<Maybe<Signature>>>;\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 if (event.output.data.isJust())\n return {\n ...context._internalState,\n signature: event.output.data.extract(),\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": "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",
|
|
6
|
+
"names": ["SignTransactionDeviceAction_exports", "__export", "SignTransactionDeviceAction", "__toCommonJS", "import_device_management_kit", "import_purify_ts", "import_xstate", "import_SignTransactionCommand", "import_SendSignDataTask", "internalApi", "signTransaction", "context", "_", "input", "error", "event", "arg0", "args"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("@ledgerhq/device-management-kit"),s=require("purify-ts"),a=require("../../app-binder/device-action/__test-utils__/makeInternalApi"),p=require("../../app-binder/device-action/__test-utils__/setupOpenAppDAMock"),u=require("../../app-binder/device-action/__test-utils__/testDeviceActionStates"),o=require("./SignTransactionDeviceAction");jest.mock("@ledgerhq/device-management-kit",()=>({...jest.requireActual("@ledgerhq/device-management-kit"),OpenAppDeviceAction:jest.fn(()=>({makeStateMachine:jest.fn()}))}));describe("SignTransactionDeviceAction",()=>{const c=jest.fn();function l(){return{signTransaction:c}}const d={};let i;beforeEach(()=>{jest.clearAllMocks(),i=new Uint8Array([1,2,3])}),describe("Happy path",()=>{it("should call external dependencies with the correct parameters",r=>{(0,p.setupOpenAppDAMock)();const t=new o.SignTransactionDeviceAction({input:{derivationPath:"44'/501'/0'/0'",transaction:i,options:d}});c.mockResolvedValueOnce((0,e.CommandResultFactory)({data:(0,s.Just)(new Uint8Array([5,6,7]))})),jest.spyOn(t,"extractDependencies").mockReturnValue(l());const n=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignTransaction},status:e.DeviceActionStatus.Pending},{output:new Uint8Array([5,6,7]),status:e.DeviceActionStatus.Completed}],{observable:m}=(0,u.testDeviceActionStates)(t,n,(0,a.makeDeviceActionInternalApiMock)(),r);m.subscribe({complete:()=>{expect(c).toHaveBeenCalledWith(expect.objectContaining({input:{derivationPath:"44'/501'/0'/0'",serializedTransaction:new Uint8Array([1,2,3])}}))}})})}),describe("OpenApp errors",()=>{it("should fail if OpenApp throw an error",r=>{(0,p.setupOpenAppDAMock)(new e.UnknownDAError("OpenApp error"));const t=new o.SignTransactionDeviceAction({input:{derivationPath:"44'/501'/0'/0'",transaction:i,options:d}});jest.spyOn(t,"extractDependencies").mockReturnValue(l());const n=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{error:new e.UnknownDAError("OpenApp error"),status:e.DeviceActionStatus.Error}];(0,u.testDeviceActionStates)(t,n,(0,a.makeDeviceActionInternalApiMock)(),r)})}),describe("SignTransaction errors",()=>{it("should fail if signTransaction returns an error",r=>{(0,p.setupOpenAppDAMock)();const t=new o.SignTransactionDeviceAction({input:{derivationPath:"44'/501'/0'/0'",transaction:i,options:d}});c.mockResolvedValueOnce((0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("signTransaction error")})),jest.spyOn(t,"extractDependencies").mockReturnValue(l());const n=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignTransaction},status:e.DeviceActionStatus.Pending},{error:new e.InvalidStatusWordError("signTransaction error"),status:e.DeviceActionStatus.Error}];(0,u.testDeviceActionStates)(t,n,(0,a.makeDeviceActionInternalApiMock)(),r)}),it("should fail if signTransaction returns nothing",r=>{(0,p.setupOpenAppDAMock)();const t=new o.SignTransactionDeviceAction({input:{derivationPath:"44'/501'/0'/0'",transaction:i,options:d}});c.mockResolvedValueOnce((0,e.CommandResultFactory)({data:s.Nothing})),jest.spyOn(t,"extractDependencies").mockReturnValue(l());const n=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignTransaction},status:e.DeviceActionStatus.Pending},{error:new e.UnknownDAError("No Signature available"),status:e.DeviceActionStatus.Error}];(0,u.testDeviceActionStates)(t,n,(0,a.makeDeviceActionInternalApiMock)(),r)})}),describe("extractDependencies",()=>{it("should extract dependencies",async()=>{const r=new o.SignTransactionDeviceAction({input:{derivationPath:"44'/501'/0'/0'",transaction:i,options:d}}),t=(0,a.makeDeviceActionInternalApiMock)();jest.spyOn(t,"sendCommand").mockResolvedValue((0,e.CommandResultFactory)({data:(0,s.Just)(new Uint8Array([5,6,7]))}));const n=r.extractDependencies((0,a.makeDeviceActionInternalApiMock)()),m=await n.signTransaction({input:{derivationPath:"44'/501'/0'/0'",serializedTransaction:i}});expect(n.signTransaction).toBeInstanceOf(Function),expect(m).toEqual((0,e.CommandResultFactory)({data:(0,s.Just)(new Uint8Array([5,6,7]))})),expect(t.sendCommand).toHaveBeenCalledTimes(1)})})});
|
|
2
|
+
//# sourceMappingURL=SignTransactionDeviceAction.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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": "aAAA,IAAAA,EAMO,2CACPC,EAA8B,qBAI9BC,EAAgD,6EAChDC,EAAmC,gFACnCC,EAAuC,oFAEvCC,EAA4C,yCAE5C,KAAK,KACH,kCAEA,KAAO,CACL,GAAG,KAAK,cAAc,iCAAiC,EACvD,oBAAqB,KAAK,GAAG,KAAO,CAClC,iBAAkB,KAAK,GAAG,CAC5B,EAAE,CACJ,EACF,EAEA,SAAS,8BAA+B,IAAM,CAC5C,MAAMC,EAAsB,KAAK,GAAG,EACpC,SAASC,GAA0B,CACjC,MAAO,CACL,gBAAiBD,CACnB,CACF,CACA,MAAME,EAAiB,CAAC,EACxB,IAAIC,EAEJ,WAAW,IAAM,CACf,KAAK,cAAc,EACnBA,EAAqB,IAAI,WAAW,CAAC,EAAM,EAAM,CAAI,CAAC,CACxD,CAAC,EAED,SAAS,aAAc,IAAM,CAC3B,GAAG,gEAAkEC,GAAS,IAC5E,sBAAmB,EAEnB,MAAMC,EAAe,IAAI,8BAA4B,CACnD,MAAO,CACL,eAAgB,iBAChB,YAAaF,EACb,QAASD,CACX,CACF,CAAC,EAGDF,EAAoB,yBAClB,wBAAqB,CACnB,QAAM,QAAK,IAAI,WAAW,CAAC,EAAM,EAAM,CAAI,CAAC,CAAC,CAC/C,CAAC,CACH,EACA,KACG,MAAMK,EAAc,qBAAqB,EACzC,gBAAgBJ,EAAwB,CAAC,EAI5C,MAAMK,EAAgD,CAEpD,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,cACnD,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,eACnD,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,OAAQ,IAAI,WAAW,CAAC,EAAM,EAAM,CAAI,CAAC,EACzC,OAAQ,qBAAmB,SAC7B,CACF,EAEM,CAAE,WAAAC,CAAW,KAAI,0BACrBF,EACAC,KACA,mCAAgC,EAChCF,CACF,EAGAG,EAAW,UAAU,CACnB,SAAU,IAAM,CACd,OAAOP,CAAmB,EAAE,qBAC1B,OAAO,iBAAiB,CACtB,MAAO,CACL,eAAgB,iBAChB,sBAAuB,IAAI,WAAW,CAAC,EAAM,EAAM,CAAI,CAAC,CAC1D,CACF,CAAC,CACH,CACF,CACF,CAAC,CACH,CAAC,CACH,CAAC,EAED,SAAS,iBAAkB,IAAM,CAC/B,GAAG,wCAA0CI,GAAS,IACpD,sBAAmB,IAAI,iBAAe,eAAe,CAAC,EAEtD,MAAMC,EAAe,IAAI,8BAA4B,CACnD,MAAO,CACL,eAAgB,iBAChB,YAAaF,EACb,QAASD,CACX,CACF,CAAC,EAED,KACG,MAAMG,EAAc,qBAAqB,EACzC,gBAAgBJ,EAAwB,CAAC,EAE5C,MAAMK,EAAgD,CAEpD,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,cACnD,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,MAAO,IAAI,iBAAe,eAAe,EACzC,OAAQ,qBAAmB,KAC7B,CACF,KAEA,0BACED,EACAC,KACA,mCAAgC,EAChCF,CACF,CACF,CAAC,CACH,CAAC,EAED,SAAS,yBAA0B,IAAM,CACvC,GAAG,kDAAoDA,GAAS,IAC9D,sBAAmB,EAEnB,MAAMC,EAAe,IAAI,8BAA4B,CACnD,MAAO,CACL,eAAgB,iBAChB,YAAaF,EACb,QAASD,CACX,CACF,CAAC,EAEDF,EAAoB,yBAClB,wBAAqB,CACnB,MAAO,IAAI,yBAAuB,uBAAuB,CAC3D,CAAC,CACH,EACA,KACG,MAAMK,EAAc,qBAAqB,EACzC,gBAAgBJ,EAAwB,CAAC,EAE5C,MAAMK,EAAgD,CAEpD,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,cACnD,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,eACnD,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,MAAO,IAAI,yBAAuB,uBAAuB,EACzD,OAAQ,qBAAmB,KAC7B,CACF,KAEA,0BACED,EACAC,KACA,mCAAgC,EAChCF,CACF,CACF,CAAC,EAED,GAAG,iDAAmDA,GAAS,IAC7D,sBAAmB,EAEnB,MAAMC,EAAe,IAAI,8BAA4B,CACnD,MAAO,CACL,eAAgB,iBAChB,YAAaF,EACb,QAASD,CACX,CACF,CAAC,EAEDF,EAAoB,yBAClB,wBAAqB,CACnB,KAAM,SACR,CAAC,CACH,EACA,KACG,MAAMK,EAAc,qBAAqB,EACzC,gBAAgBJ,EAAwB,CAAC,EAE5C,MAAMK,EAAgD,CAEpD,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,cACnD,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,eACnD,EACA,OAAQ,qBAAmB,OAC7B,EAEA,CACE,MAAO,IAAI,iBAAe,wBAAwB,EAClD,OAAQ,qBAAmB,KAC7B,CACF,KAEA,0BACED,EACAC,KACA,mCAAgC,EAChCF,CACF,CACF,CAAC,CACH,CAAC,EAED,SAAS,sBAAuB,IAAM,CACpC,GAAG,8BAA+B,SAAY,CAC5C,MAAMC,EAAe,IAAI,8BAA4B,CACnD,MAAO,CACL,eAAgB,iBAChB,YAAaF,EACb,QAASD,CACX,CACF,CAAC,EAEKM,KAAM,mCAAgC,EAC5C,KAAK,MAAMA,EAAK,aAAa,EAAE,qBAC7B,wBAAqB,CACnB,QAAM,QAAK,IAAI,WAAW,CAAC,EAAM,EAAM,CAAI,CAAC,CAAC,CAC/C,CAAC,CACH,EAEA,MAAMC,EAAeJ,EAAa,uBAChC,mCAAgC,CAClC,EACMK,EAAY,MAAMD,EAAa,gBAAgB,CACnD,MAAO,CACL,eAAgB,iBAChB,sBAAuBN,CACzB,CACF,CAAC,EAED,OAAOM,EAAa,eAAe,EAAE,eAAe,QAAQ,EAC5D,OAAOC,CAAS,EAAE,WAChB,wBAAqB,CACnB,QAAM,QAAK,IAAI,WAAW,CAAC,EAAM,EAAM,CAAI,CAAC,CAAC,CAC/C,CAAC,CACH,EACA,OAAOF,EAAI,WAAW,EAAE,sBAAsB,CAAC,CACjD,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_device_management_kit", "import_purify_ts", "import_makeInternalApi", "import_setupOpenAppDAMock", "import_testDeviceActionStates", "import_SignTransactionDeviceAction", "signTransactionMock", "extractDependenciesMock", "defaultOptions", "defaultTransaction", "done", "deviceAction", "expectedStates", "observable", "api", "dependencies", "signature"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var o=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var r=(t,e)=>{for(var n in e)o(t,n,{get:e[n],enumerable:!0})},S=(t,e,n,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of i(e))!p.call(t,s)&&s!==n&&o(t,s,{get:()=>e[s],enumerable:!(a=c(e,s))||a.enumerable});return t};var v=t=>S(o({},"__esModule",{value:!0}),t);var j={};r(j,{makeDeviceActionInternalApiMock:()=>D});module.exports=v(j);const M=jest.fn(),k=jest.fn(),d=jest.fn(),f=jest.fn(),m=jest.fn();function D(){return{sendCommand:M,getDeviceSessionState:k,getDeviceSessionStateObservable:d,setDeviceSessionState:f,getMetadataForAppHashes:m}}0&&(module.exports={makeDeviceActionInternalApiMock});
|
|
2
|
+
//# sourceMappingURL=makeInternalApi.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/internal/app-binder/device-action/__test-utils__/makeInternalApi.ts"],
|
|
4
|
+
"sourcesContent": ["import { type InternalApi } from \"@ledgerhq/device-management-kit\";\n\nconst sendCommandMock = jest.fn();\nconst apiGetDeviceSessionStateMock = jest.fn();\nconst apiGetDeviceSessionStateObservableMock = jest.fn();\nconst setDeviceSessionStateMock = jest.fn();\nconst getMetadataForAppHashesMock = jest.fn();\n\nexport function makeDeviceActionInternalApiMock(): jest.Mocked<InternalApi> {\n return {\n sendCommand: sendCommandMock,\n getDeviceSessionState: apiGetDeviceSessionStateMock,\n getDeviceSessionStateObservable: apiGetDeviceSessionStateObservableMock,\n setDeviceSessionState: setDeviceSessionStateMock,\n getMetadataForAppHashes: getMetadataForAppHashesMock,\n };\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qCAAAE,IAAA,eAAAC,EAAAH,GAEA,MAAMI,EAAkB,KAAK,GAAG,EAC1BC,EAA+B,KAAK,GAAG,EACvCC,EAAyC,KAAK,GAAG,EACjDC,EAA4B,KAAK,GAAG,EACpCC,EAA8B,KAAK,GAAG,EAErC,SAASN,GAA4D,CAC1E,MAAO,CACL,YAAaE,EACb,sBAAuBC,EACvB,gCAAiCC,EACjC,sBAAuBC,EACvB,wBAAyBC,CAC3B,CACF",
|
|
6
|
+
"names": ["makeInternalApi_exports", "__export", "makeDeviceActionInternalApiMock", "__toCommonJS", "sendCommandMock", "apiGetDeviceSessionStateMock", "apiGetDeviceSessionStateObservableMock", "setDeviceSessionStateMock", "getMetadataForAppHashesMock"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var r=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var f=(e,n)=>{for(var i in n)r(e,i,{get:n[i],enumerable:!0})},u=(e,n,i,m)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of s(n))!d.call(e,t)&&t!==i&&r(e,t,{get:()=>n[t],enumerable:!(m=c(n,t))||m.enumerable});return e};var k=e=>u(r({},"__esModule",{value:!0}),e);var A={};f(A,{setupOpenAppDAMock:()=>l});module.exports=k(A);var o=require("@ledgerhq/device-management-kit"),p=require("purify-ts"),a=require("xstate");const l=e=>{o.OpenAppDeviceAction.mockImplementation(()=>({makeStateMachine:jest.fn().mockImplementation(()=>(0,a.createMachine)({initial:"pending",states:{pending:{entry:(0,a.assign)({intermediateValue:{requiredUserInteraction:o.UserInteractionRequired.ConfirmOpenApp}}),after:{0:"done"}},done:{type:"final"}},output:()=>e?(0,p.Left)(e):(0,p.Right)(void 0)}))}))};0&&(module.exports={setupOpenAppDAMock});
|
|
2
|
+
//# sourceMappingURL=setupOpenAppDAMock.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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 jest.Mock).mockImplementation(() => ({\n makeStateMachine: jest.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": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAGO,2CACPC,EAA4B,qBAC5BC,EAAsC,kBAE/B,MAAMJ,EAAsBK,GAAoB,CACpD,sBAAkC,mBAAmB,KAAO,CAC3D,iBAAkB,KAAK,GAAG,EAAE,mBAAmB,OAC7C,iBAAc,CACZ,QAAS,UACT,OAAQ,CACN,QAAS,CACP,SAAO,UAAO,CACZ,kBAAmB,CACjB,wBAAyB,0BAAwB,cACnD,CACF,CAAC,EACD,MAAO,CACL,EAAG,MACL,CACF,EACA,KAAM,CACJ,KAAM,OACR,CACF,EACA,OAAQ,IAAOA,KAAQ,QAAKA,CAAK,KAAI,SAAM,MAAS,CACtD,CAAC,CACH,CACF,EAAE,CACJ",
|
|
6
|
+
"names": ["setupOpenAppDAMock_exports", "__export", "setupOpenAppDAMock", "__toCommonJS", "import_device_management_kit", "import_purify_ts", "import_xstate", "error"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var n=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var s=Object.prototype.hasOwnProperty;var A=(t,e)=>{for(var c in e)n(t,c,{get:e[c],enumerable:!0})},m=(t,e,c,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of l(e))!s.call(t,i)&&i!==c&&n(t,i,{get:()=>e[i],enumerable:!(r=p(e,i))||r.enumerable});return t};var D=t=>m(n({},"__esModule",{value:!0}),t);var I={};A(I,{testDeviceActionStates:()=>v});module.exports=D(I);function v(t,e,c,r){const i=[],{observable:u,cancel:o}=t._execute(c);return u.subscribe({next:a=>{i.push(a)},error:a=>{r&&r(a)},complete:()=>{try{expect(i).toEqual(e),r&&r()}catch(a){r&&r(a)}}}),{observable:u,cancel:o}}0&&(module.exports={testDeviceActionStates});
|
|
2
|
+
//# sourceMappingURL=testDeviceActionStates.js.map
|
package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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 done The Jest done callback.\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 done?: jest.DoneCallback,\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 if (done) done(error);\n },\n complete: () => {\n try {\n expect(observedStates).toEqual(expectedStates);\n if (done) done();\n } catch (e) {\n if (done) done(e);\n }\n },\n });\n return { observable, cancel };\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,IAAA,eAAAC,EAAAH,GAcO,SAASE,EAMdE,EACAC,EACAC,EACAC,EACA,CACA,MAAMC,EAEF,CAAC,EAEC,CAAE,WAAAC,EAAY,OAAAC,CAAO,EAAIN,EAAa,SAASE,CAAW,EAChE,OAAAG,EAAW,UAAU,CACnB,KAAOE,GAAU,CACfH,EAAe,KAAKG,CAAK,CAC3B,EACA,MAAQC,GAAU,CACZL,GAAMA,EAAKK,CAAK,CACtB,EACA,SAAU,IAAM,CACd,GAAI,CACF,OAAOJ,CAAc,EAAE,QAAQH,CAAc,EACzCE,GAAMA,EAAK,CACjB,OAASM,EAAG,CACNN,GAAMA,EAAKM,CAAC,CAClB,CACF,CACF,CAAC,EACM,CAAE,WAAAJ,EAAY,OAAAC,CAAO,CAC9B",
|
|
6
|
+
"names": ["testDeviceActionStates_exports", "__export", "testDeviceActionStates", "__toCommonJS", "deviceAction", "expectedStates", "internalApi", "done", "observedStates", "observable", "cancel", "state", "error", "e"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var u=(o,n)=>{for(var r in n)e(o,r,{get:n[r],enumerable:!0})},B=(o,n,r,p)=>{if(n&&typeof n=="object"||typeof n=="function")for(let i of _(n))!c.call(o,i)&&i!==r&&e(o,i,{get:()=>n[i],enumerable:!(p=m(n,i))||p.enumerable});return o};var s=o=>B(e({},"__esModule",{value:!0}),o);var b={};u(b,{appBinderModuleFactory:()=>A});module.exports=s(b);var t=require("inversify"),d=require("../../app-binder/di/appBinderTypes"),a=require("../../app-binder/SolanaAppBinder");const A=()=>new t.ContainerModule((o,n,r,p,i,f,l)=>{o(d.appBinderTypes.AppBinder).to(a.SolanaAppBinder)});0&&(module.exports={appBinderModuleFactory});
|
|
2
|
+
//# sourceMappingURL=appBinderModule.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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(\n (\n bind,\n _unbind,\n _isBound,\n _rebind,\n _unbindAsync,\n _onActivation,\n _onDeactivation,\n ) => {\n bind(appBinderTypes.AppBinder).to(SolanaAppBinder);\n },\n );\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAgC,qBAEhCC,EAA+B,kDAC/BC,EAAgC,gDAEzB,MAAMJ,EAAyB,IACpC,IAAI,kBACF,CACEK,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,IACG,CACHN,EAAK,iBAAe,SAAS,EAAE,GAAG,iBAAe,CACnD,CACF",
|
|
6
|
+
"names": ["appBinderModule_exports", "__export", "appBinderModuleFactory", "__toCommonJS", "import_inversify", "import_appBinderTypes", "import_SolanaAppBinder", "bind", "_unbind", "_isBound", "_rebind", "_unbindAsync", "_onActivation", "_onDeactivation"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var r=require("inversify"),t=require("./appBinderModule");describe("appBinderModule",()=>{describe("Default",()=>{let o,e;beforeEach(()=>{e=(0,t.appBinderModuleFactory)(),o=new r.Container,o.load(e)}),it("should return appBinder module",()=>{expect(e).toBeDefined()})})});
|
|
2
|
+
//# sourceMappingURL=appBinderModule.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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.load(mod);\n });\n\n it(\"should return appBinder module\", () => {\n expect(mod).toBeDefined();\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAA0B,qBAE1BC,EAAuC,6BAEvC,SAAS,kBAAmB,IAAM,CAChC,SAAS,UAAW,IAAM,CACxB,IAAIC,EACAC,EACJ,WAAW,IAAM,CACfA,KAAM,0BAAuB,EAC7BD,EAAY,IAAI,YAChBA,EAAU,KAAKC,CAAG,CACpB,CAAC,EAED,GAAG,iCAAkC,IAAM,CACzC,OAAOA,CAAG,EAAE,YAAY,CAC1B,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_inversify", "import_appBinderModule", "container", "mod"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var o=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var s=Object.prototype.hasOwnProperty;var t=(e,p)=>{for(var n in p)o(e,n,{get:p[n],enumerable:!0})},y=(e,p,n,d)=>{if(p&&typeof p=="object"||typeof p=="function")for(let r of B(p))!s.call(e,r)&&r!==n&&o(e,r,{get:()=>p[r],enumerable:!(d=i(p,r))||d.enumerable});return e};var A=e=>y(o({},"__esModule",{value:!0}),e);var b={};t(b,{appBinderTypes:()=>a});module.exports=A(b);const a={AppBinder:Symbol.for("AppBinder")};0&&(module.exports={appBinderTypes});
|
|
2
|
+
//# sourceMappingURL=appBinderTypes.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/app-binder/di/appBinderTypes.ts"],
|
|
4
|
+
"sourcesContent": ["export const appBinderTypes = {\n AppBinder: Symbol.for(\"AppBinder\"),\n};\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oBAAAE,IAAA,eAAAC,EAAAH,GAAO,MAAME,EAAiB,CAC5B,UAAW,OAAO,IAAI,WAAW,CACnC",
|
|
6
|
+
"names": ["appBinderTypes_exports", "__export", "appBinderTypes", "__toCommonJS"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var d=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var i=Object.prototype.hasOwnProperty;var c=(e,a)=>{for(var r in a)d(e,r,{get:a[r],enumerable:!0})},C=(e,a,r,o)=>{if(a&&typeof a=="object"||typeof a=="function")for(let n of u(a))!i.call(e,n)&&n!==r&&d(e,n,{get:()=>a[n],enumerable:!(o=l(a,n))||o.enumerable});return e};var p=e=>C(d({},"__esModule",{value:!0}),e);var h={};c(h,{SendCommandInChunksTask:()=>y});module.exports=p(h);var t=require("@ledgerhq/device-management-kit");class y{constructor(a,r){this.api=a;this.args=r}async run(){const{data:a,commandFactory:r}=this.args,o=new t.ByteArrayBuilder(a.length).addBufferToData(a).build();for(let n=0;n<o.length;n+=t.APDU_MAX_PAYLOAD){const m=n+t.APDU_MAX_PAYLOAD>=o.length,s=await this.api.sendCommand(r({more:!m,extend:n>0,chunkedData:o.slice(n,n+t.APDU_MAX_PAYLOAD)}));if(!(0,t.isSuccessCommandResult)(s))return s;if(m)return(0,t.CommandResultFactory)({data:s.data})}throw new t.InvalidStatusWordError("No result after processing all chunks")}}0&&(module.exports={SendCommandInChunksTask});
|
|
2
|
+
//# sourceMappingURL=SendCommandInChunksTask.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/app-binder/task/SendCommandInChunksTask.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n APDU_MAX_PAYLOAD,\n ByteArrayBuilder,\n type Command,\n type CommandResult,\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nexport type SendCommandInChunksTaskArgs<T> = {\n data: Uint8Array;\n commandFactory: CommandFactory<T>;\n};\n\nexport type CommandFactory<T> = <V extends ChunkableCommandArgs>(\n args: ChunkableCommandArgs,\n) => Command<T, V>;\n\nexport type ChunkableCommandArgs = {\n chunkedData: Uint8Array;\n more: boolean;\n extend: boolean;\n};\n\nexport class SendCommandInChunksTask<T> {\n constructor(\n private api: InternalApi,\n private args: SendCommandInChunksTaskArgs<T>,\n ) {}\n\n async run(): Promise<CommandResult<T, void>> {\n const { data: fullPayload, commandFactory } = this.args;\n\n const dataBuffer = new ByteArrayBuilder(fullPayload.length)\n .addBufferToData(fullPayload)\n .build();\n\n for (\n let offset = 0;\n offset < dataBuffer.length;\n offset += APDU_MAX_PAYLOAD\n ) {\n const isLastChunk = offset + APDU_MAX_PAYLOAD >= dataBuffer.length;\n const result = await this.api.sendCommand(\n commandFactory({\n more: !isLastChunk,\n extend: offset > 0,\n chunkedData: dataBuffer.slice(offset, offset + APDU_MAX_PAYLOAD),\n }),\n );\n\n if (!isSuccessCommandResult(result)) {\n return result;\n }\n\n if (isLastChunk) {\n return CommandResultFactory({\n data: result.data,\n });\n }\n }\n\n throw new InvalidStatusWordError(\"No result after processing all chunks\");\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EASO,2CAiBA,MAAMF,CAA2B,CACtC,YACUG,EACAC,EACR,CAFQ,SAAAD,EACA,UAAAC,CACP,CAEH,MAAM,KAAuC,CAC3C,KAAM,CAAE,KAAMC,EAAa,eAAAC,CAAe,EAAI,KAAK,KAE7CC,EAAa,IAAI,mBAAiBF,EAAY,MAAM,EACvD,gBAAgBA,CAAW,EAC3B,MAAM,EAET,QACMG,EAAS,EACbA,EAASD,EAAW,OACpBC,GAAU,mBACV,CACA,MAAMC,EAAcD,EAAS,oBAAoBD,EAAW,OACtDG,EAAS,MAAM,KAAK,IAAI,YAC5BJ,EAAe,CACb,KAAM,CAACG,EACP,OAAQD,EAAS,EACjB,YAAaD,EAAW,MAAMC,EAAQA,EAAS,kBAAgB,CACjE,CAAC,CACH,EAEA,GAAI,IAAC,0BAAuBE,CAAM,EAChC,OAAOA,EAGT,GAAID,EACF,SAAO,wBAAqB,CAC1B,KAAMC,EAAO,IACf,CAAC,CAEL,CAEA,MAAM,IAAI,yBAAuB,uCAAuC,CAC1E,CACF",
|
|
6
|
+
"names": ["SendCommandInChunksTask_exports", "__export", "SendCommandInChunksTask", "__toCommonJS", "import_device_management_kit", "api", "args", "fullPayload", "commandFactory", "dataBuffer", "offset", "isLastChunk", "result"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var o=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var l=(n,a)=>{for(var r in a)o(n,r,{get:a[r],enumerable:!0})},h=(n,a,r,e)=>{if(a&&typeof a=="object"||typeof a=="function")for(let t of c(a))!u.call(n,t)&&t!==r&&o(n,t,{get:()=>a[t],enumerable:!(e=g(a,t))||e.enumerable});return n};var f=n=>h(o({},"__esModule",{value:!0}),n);var T={};l(T,{SignDataTask:()=>S});module.exports=f(T);var s=require("@ledgerhq/device-management-kit"),d=require("@ledgerhq/signer-utils"),m=require("./SendCommandInChunksTask");const D=4;class S{constructor(a,r){this.api=a;this.args=r}async run(){const{sendingData:a,derivationPath:r,commandFactory:e}=this.args,t=d.DerivationPathUtils.splitPath(r),i=new s.ByteArrayBuilder(a.length+2+t.length*D);i.add8BitUIntToData(1),i.add8BitUIntToData(t.length),t.forEach(y=>i.add32BitUIntToData(y)),i.addBufferToData(a);const p=i.build();return await new m.SendCommandInChunksTask(this.api,{data:p,commandFactory:e}).run()}}0&&(module.exports={SignDataTask});
|
|
2
|
+
//# sourceMappingURL=SendSignDataTask.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/app-binder/task/SendSignDataTask.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n ByteArrayBuilder,\n type CommandResult,\n type InternalApi,\n} from \"@ledgerhq/device-management-kit\";\nimport { DerivationPathUtils } from \"@ledgerhq/signer-utils\";\nimport { type Maybe } from \"purify-ts\";\n\nimport { type Signature } from \"@api/model/Signature\";\n\nimport {\n type CommandFactory,\n SendCommandInChunksTask,\n} from \"./SendCommandInChunksTask\";\n\nconst PATH_SIZE = 4;\n\ntype SignDataTaskArgs = {\n sendingData: Uint8Array;\n derivationPath: string;\n commandFactory: CommandFactory<Maybe<Signature>>;\n};\n\nexport class SignDataTask {\n constructor(\n private api: InternalApi,\n private args: SignDataTaskArgs,\n ) {}\n\n async run(): Promise<CommandResult<Maybe<Signature>, void>> {\n const { sendingData, derivationPath, commandFactory } = this.args;\n\n const paths = DerivationPathUtils.splitPath(derivationPath);\n const builder = new ByteArrayBuilder(\n sendingData.length + 2 + paths.length * PATH_SIZE,\n );\n // add the number of signers\n builder.add8BitUIntToData(1);\n // add the number of derivation\n builder.add8BitUIntToData(paths.length);\n // add every derivation path\n paths.forEach((path) => builder.add32BitUIntToData(path));\n builder.addBufferToData(sendingData);\n const buffer = builder.build();\n\n return await new SendCommandInChunksTask<Maybe<Signature>>(this.api, {\n data: buffer,\n commandFactory,\n }).run();\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAIO,2CACPC,EAAoC,kCAKpCC,EAGO,qCAEP,MAAMC,EAAY,EAQX,MAAML,CAAa,CACxB,YACUM,EACAC,EACR,CAFQ,SAAAD,EACA,UAAAC,CACP,CAEH,MAAM,KAAsD,CAC1D,KAAM,CAAE,YAAAC,EAAa,eAAAC,EAAgB,eAAAC,CAAe,EAAI,KAAK,KAEvDC,EAAQ,sBAAoB,UAAUF,CAAc,EACpDG,EAAU,IAAI,mBAClBJ,EAAY,OAAS,EAAIG,EAAM,OAASN,CAC1C,EAEAO,EAAQ,kBAAkB,CAAC,EAE3BA,EAAQ,kBAAkBD,EAAM,MAAM,EAEtCA,EAAM,QAASE,GAASD,EAAQ,mBAAmBC,CAAI,CAAC,EACxDD,EAAQ,gBAAgBJ,CAAW,EACnC,MAAMM,EAASF,EAAQ,MAAM,EAE7B,OAAO,MAAM,IAAI,0BAA0C,KAAK,IAAK,CACnE,KAAME,EACN,eAAAJ,CACF,CAAC,EAAE,IAAI,CACT,CACF",
|
|
6
|
+
"names": ["SendSignDataTask_exports", "__export", "SignDataTask", "__toCommonJS", "import_device_management_kit", "import_signer_utils", "import_SendCommandInChunksTask", "PATH_SIZE", "api", "args", "sendingData", "derivationPath", "commandFactory", "paths", "builder", "path", "buffer"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("@ledgerhq/device-management-kit"),T=require("@ledgerhq/signer-utils"),m=require("purify-ts"),h=require("../../app-binder/command/SignTransactionCommand"),B=require("../../app-binder/device-action/__test-utils__/makeInternalApi"),C=require("../../app-binder/task/SendSignDataTask");const d="44'/501'/0'/0'",x=4;describe("SignDataTask",()=>{const n=(0,B.makeDeviceActionInternalApiMock)(),f=new Uint8Array([18,52,86,120,144,171,205,239]),D=(0,e.CommandResultFactory)({data:(0,m.Just)(f)}),g=(0,e.CommandResultFactory)({data:m.Nothing});beforeEach(()=>{jest.resetAllMocks()}),describe("run with SignTransactionCommand",()=>{const c=new Uint8Array([1,2,3,4]),l=new Uint8Array(new Array(500).fill(1));it("should send the transaction in a single command",async()=>{const o=T.DerivationPathUtils.splitPath(d),a=new e.ByteArrayBuilder(c.length+2+o.length*x);a.add8BitUIntToData(1),a.add8BitUIntToData(o.length),o.forEach(i=>a.add32BitUIntToData(i)),a.addBufferToData(c);const r=a.build(),s={derivationPath:d,sendingData:c,commandFactory:i=>new h.SignTransactionCommand({serializedTransaction:i.chunkedData,more:i.more,extend:i.extend})};n.sendCommand.mockResolvedValueOnce(D);const t=await new C.SignDataTask(n,s).run();expect(n.sendCommand).toHaveBeenCalledTimes(1),expect(Array.from(n.sendCommand.mock.calls[0]?.[0]?.args?.serializedTransaction||[])).toEqual(Array.from(r)),(0,e.isSuccessCommandResult)(t)?expect(t.data).toEqual((0,m.Just)(f)):fail(`Expected a successful result, but got an error: ${t.error}`)}),it("should send the transaction in chunks",async()=>{const o=T.DerivationPathUtils.splitPath(d),a=new e.ByteArrayBuilder(l.length+2+o.length*x);a.add8BitUIntToData(1),a.add8BitUIntToData(o.length),o.forEach(u=>a.add32BitUIntToData(u)),a.addBufferToData(l);const r=a.build(),s=r.slice(0,e.APDU_MAX_PAYLOAD),t=r.slice(e.APDU_MAX_PAYLOAD,e.APDU_MAX_PAYLOAD*2),i=r.slice(e.APDU_MAX_PAYLOAD*2,e.APDU_MAX_PAYLOAD*3),I={derivationPath:d,sendingData:l,commandFactory:u=>new h.SignTransactionCommand({serializedTransaction:u.chunkedData,more:u.more,extend:u.extend})};n.sendCommand.mockResolvedValueOnce(g).mockResolvedValueOnce(g).mockResolvedValueOnce(D);const p=await new C.SignDataTask(n,I).run();expect(n.sendCommand).toHaveBeenCalledTimes(3),expect(n.sendCommand).toHaveBeenNthCalledWith(1,expect.objectContaining({args:{serializedTransaction:s,extend:!1,more:!0}})),expect(n.sendCommand).toHaveBeenNthCalledWith(2,expect.objectContaining({args:{serializedTransaction:t,extend:!0,more:!0}})),expect(n.sendCommand).toHaveBeenNthCalledWith(3,expect.objectContaining({args:{serializedTransaction:i,extend:!0,more:!1}})),(0,e.isSuccessCommandResult)(p)?expect(p.data).toEqual((0,m.Just)(f)):fail(`Expected a successful result, but got an error: ${p.error}`)}),it("should return an error if the command fails",async()=>{const o=T.DerivationPathUtils.splitPath(d),a=new e.ByteArrayBuilder(c.length+2+o.length*x);a.add8BitUIntToData(1),a.add8BitUIntToData(o.length),o.forEach(t=>a.add32BitUIntToData(t)),a.addBufferToData(c);const r={derivationPath:d,sendingData:c,commandFactory:t=>new h.SignTransactionCommand({serializedTransaction:t.chunkedData,more:t.more,extend:t.extend})};n.sendCommand.mockResolvedValueOnce((0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("no signature returned")}));const s=await new C.SignDataTask(n,r).run();expect(n.sendCommand).toHaveBeenCalledTimes(1),expect(s).toMatchObject({error:new e.InvalidStatusWordError("no signature returned")})}),it("should return an error if a chunk command fails",async()=>{const o=T.DerivationPathUtils.splitPath(d),a=new e.ByteArrayBuilder(l.length+2+o.length*x);a.add8BitUIntToData(1),a.add8BitUIntToData(o.length),o.forEach(t=>a.add32BitUIntToData(t)),a.addBufferToData(l);const r={derivationPath:d,sendingData:l,commandFactory:t=>new h.SignTransactionCommand({serializedTransaction:t.chunkedData,more:t.more,extend:t.extend})};n.sendCommand.mockResolvedValueOnce(g).mockResolvedValueOnce((0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("An error occurred")}));const s=await new C.SignDataTask(n,r).run();expect(n.sendCommand).toHaveBeenCalledTimes(2),expect(s).toMatchObject({error:new e.InvalidStatusWordError("An error occurred")})})})});
|
|
2
|
+
//# sourceMappingURL=SendSignDataTask.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/app-binder/task/SendSignDataTask.test.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n APDU_MAX_PAYLOAD,\n ByteArrayBuilder,\n CommandResultFactory,\n InvalidStatusWordError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\nimport { DerivationPathUtils } from \"@ledgerhq/signer-utils\";\nimport { Just, Nothing } from \"purify-ts\";\n\nimport { SignTransactionCommand } from \"@internal/app-binder/command/SignTransactionCommand\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport { SignDataTask } from \"@internal/app-binder/task/SendSignDataTask\";\n\nimport { type ChunkableCommandArgs } from \"./SendCommandInChunksTask\";\n\nconst DERIVATION_PATH = \"44'/501'/0'/0'\";\nconst PATH_SIZE = 4;\n\ndescribe(\"SignDataTask\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const signature = new Uint8Array([\n 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef,\n ]);\n const resultOk = CommandResultFactory({ data: Just(signature) });\n const resultNothing = CommandResultFactory({ data: Nothing });\n\n beforeEach(() => {\n jest.resetAllMocks();\n });\n\n describe(\"run with SignTransactionCommand\", () => {\n const SIMPLE_TRANSACTION = new Uint8Array([0x01, 0x02, 0x03, 0x04]);\n const BIG_TRANSACTION = new Uint8Array(new Array(500).fill(0x01));\n\n it(\"should send the transaction in a single command\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const paths = DerivationPathUtils.splitPath(DERIVATION_PATH);\n const builder = new ByteArrayBuilder(\n SIMPLE_TRANSACTION.length + 2 + paths.length * PATH_SIZE,\n );\n builder.add8BitUIntToData(1);\n builder.add8BitUIntToData(paths.length);\n paths.forEach((path) => builder.add32BitUIntToData(path));\n builder.addBufferToData(SIMPLE_TRANSACTION);\n const EXPECTED_SIMPLE_TRANSACTION = builder.build();\n\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: SIMPLE_TRANSACTION,\n commandFactory: (chunkArgs: ChunkableCommandArgs) =>\n new SignTransactionCommand({\n serializedTransaction: chunkArgs.chunkedData,\n more: chunkArgs.more,\n extend: chunkArgs.extend,\n }),\n };\n apiMock.sendCommand.mockResolvedValueOnce(resultOk);\n\n // WHEN--------------------------------\n //-------------------------------------\n const result = await new SignDataTask(apiMock, args).run();\n\n // THEN--------------------------------\n //-------------------------------------\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(1);\n expect(\n Array.from(\n (apiMock.sendCommand.mock.calls[0]?.[0] as SignTransactionCommand)\n ?.args?.serializedTransaction || [],\n ),\n ).toEqual(Array.from(EXPECTED_SIMPLE_TRANSACTION));\n\n if (isSuccessCommandResult(result)) {\n expect(result.data).toEqual(Just(signature));\n } else {\n fail(`Expected a successful result, but got an error: ${result.error}`);\n }\n });\n\n it(\"should send the transaction in chunks\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const paths = DerivationPathUtils.splitPath(DERIVATION_PATH);\n const builder = new ByteArrayBuilder(\n BIG_TRANSACTION.length + 2 + paths.length * PATH_SIZE,\n );\n builder.add8BitUIntToData(1);\n builder.add8BitUIntToData(paths.length);\n paths.forEach((path) => builder.add32BitUIntToData(path));\n builder.addBufferToData(BIG_TRANSACTION);\n const dataBuffer = builder.build();\n\n const EXPECTED_BIG_TRANSACTION_CHUNK_1 = dataBuffer.slice(\n 0,\n APDU_MAX_PAYLOAD,\n );\n const EXPECTED_BIG_TRANSACTION_CHUNK_2 = dataBuffer.slice(\n APDU_MAX_PAYLOAD,\n APDU_MAX_PAYLOAD * 2,\n );\n const EXPECTED_BIG_TRANSACTION_CHUNK_3 = dataBuffer.slice(\n APDU_MAX_PAYLOAD * 2,\n APDU_MAX_PAYLOAD * 3,\n );\n\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: BIG_TRANSACTION,\n commandFactory: (chunkArgs: ChunkableCommandArgs) =>\n new SignTransactionCommand({\n serializedTransaction: chunkArgs.chunkedData,\n more: chunkArgs.more,\n extend: chunkArgs.extend,\n }),\n };\n apiMock.sendCommand\n .mockResolvedValueOnce(resultNothing)\n .mockResolvedValueOnce(resultNothing)\n .mockResolvedValueOnce(resultOk);\n\n // WHEN--------------------------------\n //-------------------------------------\n const result = await new SignDataTask(apiMock, args).run();\n\n // THEN--------------------------------\n //-------------------------------------\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(3);\n expect(apiMock.sendCommand).toHaveBeenNthCalledWith(\n 1,\n expect.objectContaining({\n args: {\n serializedTransaction: EXPECTED_BIG_TRANSACTION_CHUNK_1,\n extend: false,\n more: true,\n },\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenNthCalledWith(\n 2,\n expect.objectContaining({\n args: {\n serializedTransaction: EXPECTED_BIG_TRANSACTION_CHUNK_2,\n extend: true,\n more: true,\n },\n }),\n );\n\n expect(apiMock.sendCommand).toHaveBeenNthCalledWith(\n 3,\n expect.objectContaining({\n args: {\n serializedTransaction: EXPECTED_BIG_TRANSACTION_CHUNK_3,\n extend: true,\n more: false,\n },\n }),\n );\n\n if (isSuccessCommandResult(result)) {\n expect(result.data).toEqual(Just(signature));\n } else {\n fail(`Expected a successful result, but got an error: ${result.error}`);\n }\n });\n\n it(\"should return an error if the command fails\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const paths = DerivationPathUtils.splitPath(DERIVATION_PATH);\n const builder = new ByteArrayBuilder(\n SIMPLE_TRANSACTION.length + 2 + paths.length * PATH_SIZE,\n );\n builder.add8BitUIntToData(1);\n builder.add8BitUIntToData(paths.length);\n paths.forEach((path) => builder.add32BitUIntToData(path));\n builder.addBufferToData(SIMPLE_TRANSACTION);\n\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: SIMPLE_TRANSACTION,\n commandFactory: (chunkArgs: ChunkableCommandArgs) =>\n new SignTransactionCommand({\n serializedTransaction: chunkArgs.chunkedData,\n more: chunkArgs.more,\n extend: chunkArgs.extend,\n }),\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"no signature returned\"),\n }),\n );\n\n // WHEN--------------------------------\n //-------------------------------------\n const result = await new SignDataTask(apiMock, args).run();\n\n // THEN--------------------------------\n //-------------------------------------\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(1);\n expect(result).toMatchObject({\n error: new InvalidStatusWordError(\"no signature returned\"),\n });\n });\n\n it(\"should return an error if a chunk command fails\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const paths = DerivationPathUtils.splitPath(DERIVATION_PATH);\n const builder = new ByteArrayBuilder(\n BIG_TRANSACTION.length + 2 + paths.length * PATH_SIZE,\n );\n builder.add8BitUIntToData(1);\n builder.add8BitUIntToData(paths.length);\n paths.forEach((path) => builder.add32BitUIntToData(path));\n builder.addBufferToData(BIG_TRANSACTION);\n\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: BIG_TRANSACTION,\n commandFactory: (chunkArgs: ChunkableCommandArgs) =>\n new SignTransactionCommand({\n serializedTransaction: chunkArgs.chunkedData,\n more: chunkArgs.more,\n extend: chunkArgs.extend,\n }),\n };\n apiMock.sendCommand\n .mockResolvedValueOnce(resultNothing)\n .mockResolvedValueOnce(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"An error occurred\"),\n }),\n );\n\n // WHEN--------------------------------\n //-------------------------------------\n const result = await new SignDataTask(apiMock, args).run();\n\n // THEN--------------------------------\n //-------------------------------------\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(2);\n expect(result).toMatchObject({\n error: new InvalidStatusWordError(\"An error occurred\"),\n });\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_device_management_kit", "import_signer_utils", "import_purify_ts", "import_SignTransactionCommand", "import_makeInternalApi", "import_SendSignDataTask", "DERIVATION_PATH", "PATH_SIZE", "apiMock", "signature", "resultOk", "resultNothing", "SIMPLE_TRANSACTION", "BIG_TRANSACTION", "paths", "builder", "path", "EXPECTED_SIMPLE_TRANSACTION", "args", "chunkArgs", "result", "dataBuffer", "EXPECTED_BIG_TRANSACTION_CHUNK_1", "EXPECTED_BIG_TRANSACTION_CHUNK_2", "EXPECTED_BIG_TRANSACTION_CHUNK_3"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var d=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var S=Object.prototype.hasOwnProperty;var y=(i,e)=>{for(var n in e)d(i,n,{get:e[n],enumerable:!0})},A=(i,e,n,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of h(e))!S.call(i,t)&&t!==n&&d(i,t,{get:()=>e[t],enumerable:!(a=p(e,t))||a.enumerable});return i};var v=i=>A(d({},"__esModule",{value:!0}),i);var b={};y(b,{SendSignMessageTask:()=>U});module.exports=v(b);var l=require("@ledgerhq/device-management-kit"),f=require("@ledgerhq/signer-utils"),m=require("../../app-binder/command/SignOffChainMessageCommand");class U{constructor(e,n){this.api=e;this.args=n}async run(){const{sendingData:e,derivationPath:n}=this.args,a=this._buildApduCommand(this._buildFullMessage(e),f.DerivationPathUtils.splitPath(n));return await this.api.sendCommand(new m.SignOffChainMessageCommand({message:a,derivationPath:n}))}_buildFullMessage(e){const n=new TextEncoder().encode("solana offchain"),a=4,t=new Uint8Array(a);t[2]=e.length;const s=new Uint8Array(1+n.length+t.length+e.length);let r=0;return s[r++]=255,s.set(n,r),r+=n.length,s.set(t,r),r+=t.length,s.set(e,r),s}_buildApduCommand(e,n){const u=n.length,o=new l.ByteArrayBuilder(e.length+1+1+u*4);return o.add8BitUIntToData(1),o.add8BitUIntToData(u),n.forEach(c=>{const g=new Uint8Array(4);new DataView(g.buffer).setUint32(0,c,!1),o.addBufferToData(g)}),o.addBufferToData(e),o.build()}}0&&(module.exports={SendSignMessageTask});
|
|
2
|
+
//# sourceMappingURL=SendSignMessageTask.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/app-binder/task/SendSignMessageTask.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n ByteArrayBuilder,\n type CommandResult,\n type InternalApi,\n} from \"@ledgerhq/device-management-kit\";\nimport { DerivationPathUtils } from \"@ledgerhq/signer-utils\";\n\nimport { SignOffChainMessageCommand } from \"@internal/app-binder/command/SignOffChainMessageCommand\";\n\nexport type SendSignMessageTaskArgs = {\n sendingData: Uint8Array;\n derivationPath: string;\n};\n\nexport type SendSignMessageTaskRunFunctionReturn = Promise<\n CommandResult<Uint8Array, void>\n>;\n\nexport class SendSignMessageTask {\n constructor(\n private api: InternalApi,\n private args: SendSignMessageTaskArgs,\n ) {}\n\n async run(): SendSignMessageTaskRunFunctionReturn {\n const { sendingData, derivationPath } = this.args;\n\n const commandBuffer = this._buildApduCommand(\n this._buildFullMessage(sendingData),\n DerivationPathUtils.splitPath(derivationPath),\n );\n\n return await this.api.sendCommand(\n new SignOffChainMessageCommand({\n message: commandBuffer,\n derivationPath,\n }),\n );\n }\n\n private _buildFullMessage(sendingData: Uint8Array): Uint8Array {\n const prefix = new TextEncoder().encode(\"solana offchain\");\n const msgLengthFieldSize = 4;\n\n const lengthBytes = new Uint8Array(msgLengthFieldSize);\n lengthBytes[2] = sendingData.length;\n\n const fullMessage = new Uint8Array(\n 1 + prefix.length + lengthBytes.length + sendingData.length,\n );\n\n let offset = 0;\n fullMessage[offset++] = 0xff;\n fullMessage.set(prefix, offset);\n offset += prefix.length;\n fullMessage.set(lengthBytes, offset);\n offset += lengthBytes.length;\n fullMessage.set(sendingData, offset);\n\n return fullMessage;\n }\n\n private _buildApduCommand(\n fullMessage: Uint8Array,\n paths: number[],\n ): Uint8Array {\n const numberOfSigners = 1;\n const pathSize = 4;\n const signersCountSize = 1;\n const derivationsCountSize = 1;\n const numberOfDerivations = paths.length;\n const builder = new ByteArrayBuilder(\n fullMessage.length +\n signersCountSize +\n derivationsCountSize +\n numberOfDerivations * pathSize,\n );\n\n builder.add8BitUIntToData(numberOfSigners);\n builder.add8BitUIntToData(numberOfDerivations);\n\n paths.forEach((path) => {\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setUint32(0, path, false);\n builder.addBufferToData(buffer);\n });\n\n builder.addBufferToData(fullMessage);\n return builder.build();\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,yBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAIO,2CACPC,EAAoC,kCAEpCC,EAA2C,mEAWpC,MAAMJ,CAAoB,CAC/B,YACUK,EACAC,EACR,CAFQ,SAAAD,EACA,UAAAC,CACP,CAEH,MAAM,KAA4C,CAChD,KAAM,CAAE,YAAAC,EAAa,eAAAC,CAAe,EAAI,KAAK,KAEvCC,EAAgB,KAAK,kBACzB,KAAK,kBAAkBF,CAAW,EAClC,sBAAoB,UAAUC,CAAc,CAC9C,EAEA,OAAO,MAAM,KAAK,IAAI,YACpB,IAAI,6BAA2B,CAC7B,QAASC,EACT,eAAAD,CACF,CAAC,CACH,CACF,CAEQ,kBAAkBD,EAAqC,CAC7D,MAAMG,EAAS,IAAI,YAAY,EAAE,OAAO,iBAAiB,EACnDC,EAAqB,EAErBC,EAAc,IAAI,WAAWD,CAAkB,EACrDC,EAAY,CAAC,EAAIL,EAAY,OAE7B,MAAMM,EAAc,IAAI,WACtB,EAAIH,EAAO,OAASE,EAAY,OAASL,EAAY,MACvD,EAEA,IAAIO,EAAS,EACb,OAAAD,EAAYC,GAAQ,EAAI,IACxBD,EAAY,IAAIH,EAAQI,CAAM,EAC9BA,GAAUJ,EAAO,OACjBG,EAAY,IAAID,EAAaE,CAAM,EACnCA,GAAUF,EAAY,OACtBC,EAAY,IAAIN,EAAaO,CAAM,EAE5BD,CACT,CAEQ,kBACNA,EACAE,EACY,CAKZ,MAAMC,EAAsBD,EAAM,OAC5BE,EAAU,IAAI,mBAClBJ,EAAY,OACV,EACA,EACAG,EAAsB,CAC1B,EAEA,OAAAC,EAAQ,kBAAkB,CAAe,EACzCA,EAAQ,kBAAkBD,CAAmB,EAE7CD,EAAM,QAASG,GAAS,CACtB,MAAMC,EAAS,IAAI,WAAW,CAAC,EAClB,IAAI,SAASA,EAAO,MAAM,EAClC,UAAU,EAAGD,EAAM,EAAK,EAC7BD,EAAQ,gBAAgBE,CAAM,CAChC,CAAC,EAEDF,EAAQ,gBAAgBJ,CAAW,EAC5BI,EAAQ,MAAM,CACvB,CACF",
|
|
6
|
+
"names": ["SendSignMessageTask_exports", "__export", "SendSignMessageTask", "__toCommonJS", "import_device_management_kit", "import_signer_utils", "import_SignOffChainMessageCommand", "api", "args", "sendingData", "derivationPath", "commandBuffer", "prefix", "msgLengthFieldSize", "lengthBytes", "fullMessage", "offset", "paths", "numberOfDerivations", "builder", "path", "buffer"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var s=require("@ledgerhq/device-management-kit"),c=require("../../app-binder/device-action/__test-utils__/makeInternalApi"),o=require("../../app-binder/task/SendSignMessageTask");const d="44'/501'/0'/0'";describe("SendSignMessageTask",()=>{const e=(0,c.makeDeviceActionInternalApiMock)();beforeEach(()=>{jest.resetAllMocks()});const r=new Uint8Array([1,2,3,4]);describe("run with SignOffChainMessageCommand",()=>{it("should return an error if the command fails",async()=>{const n={derivationPath:d,sendingData:r};e.sendCommand.mockResolvedValueOnce((0,s.CommandResultFactory)({error:new s.InvalidStatusWordError("no signature returned")}));const a=await new o.SendSignMessageTask(e,n).run();expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(a).toMatchObject({error:new s.InvalidStatusWordError("no signature returned")})}),it("should return success when the command executes successfully",async()=>{const n={derivationPath:d,sendingData:r},a=new Uint8Array([170,187,204,221]);e.sendCommand.mockResolvedValueOnce((0,s.CommandResultFactory)({data:a}));const t=await new o.SendSignMessageTask(e,n).run();expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(t).toMatchObject({data:a})}),it("should handle invalid derivation paths",async()=>{const a={derivationPath:"invalid/path",sendingData:r},t=new o.SendSignMessageTask(e,a);await expect(t.run()).rejects.toThrowError()}),it("should handle empty message data",async()=>{const n=new Uint8Array([]),a={derivationPath:d,sendingData:n};e.sendCommand.mockResolvedValueOnce((0,s.CommandResultFactory)({data:new Uint8Array([])}));const t=await new o.SendSignMessageTask(e,a).run();if(expect(e.sendCommand).toHaveBeenCalledTimes(1),"data"in t)expect(t.data).toEqual(new Uint8Array([]));else throw new Error("Expected result to have data property")}),it("should correctly build the APDU command",async()=>{const n={derivationPath:d,sendingData:r},a=new o.SendSignMessageTask(e,n),t=a._buildFullMessage(r),i=[-2147483604,-2147483147,-2147483648,0],l=a._buildApduCommand(t,i),m=2+i.length*4+t.length;expect(l.length).toEqual(m)}),it("should handle messages with maximum allowed length",async()=>{const n=new Uint8Array(255).fill(1),a={derivationPath:d,sendingData:n};e.sendCommand.mockResolvedValueOnce((0,s.CommandResultFactory)({data:new Uint8Array([153,136,119])}));const t=await new o.SendSignMessageTask(e,a).run();if(expect(e.sendCommand).toHaveBeenCalledTimes(1),"data"in t)expect(t.data).toEqual(new Uint8Array([153,136,119]));else throw new Error("Expected result to have data property")})})});
|
|
2
|
+
//# sourceMappingURL=SendSignMessageTask.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/app-binder/task/SendSignMessageTask.test.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport { SendSignMessageTask } from \"@internal/app-binder/task/SendSignMessageTask\";\n\nconst DERIVATION_PATH = \"44'/501'/0'/0'\";\n\ndescribe(\"SendSignMessageTask\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n\n beforeEach(() => {\n jest.resetAllMocks();\n });\n\n const SIMPLE_MESSAGE = new Uint8Array([0x01, 0x02, 0x03, 0x04]);\n\n describe(\"run with SignOffChainMessageCommand\", () => {\n it(\"should return an error if the command fails\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: SIMPLE_MESSAGE,\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"no signature returned\"),\n }),\n );\n\n // WHEN--------------------------------\n //-------------------------------------\n const result = await new SendSignMessageTask(apiMock, args).run();\n\n // THEN--------------------------------\n //-------------------------------------\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(1);\n expect(result).toMatchObject({\n error: new InvalidStatusWordError(\"no signature returned\"),\n });\n });\n\n it(\"should return success when the command executes successfully\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: SIMPLE_MESSAGE,\n };\n const expectedSignature = new Uint8Array([0xaa, 0xbb, 0xcc, 0xdd]);\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n data: expectedSignature,\n }),\n );\n\n // WHEN--------------------------------\n //-------------------------------------\n const result = await new SendSignMessageTask(apiMock, args).run();\n\n // THEN--------------------------------\n //-------------------------------------\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(1);\n expect(result).toMatchObject({\n data: expectedSignature,\n });\n });\n\n it(\"should handle invalid derivation paths\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const invalidDerivationPath = \"invalid/path\";\n const args = {\n derivationPath: invalidDerivationPath,\n sendingData: SIMPLE_MESSAGE,\n };\n\n // WHEN--------------------------------\n //-------------------------------------\n const task = new SendSignMessageTask(apiMock, args);\n\n // THEN--------------------------------\n //-------------------------------------\n await expect(task.run()).rejects.toThrowError();\n });\n\n it(\"should handle empty message data\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const emptyMessage = new Uint8Array([]);\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: emptyMessage,\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n data: new Uint8Array([]),\n }),\n );\n\n // WHEN--------------------------------\n //-------------------------------------\n const result = await new SendSignMessageTask(apiMock, args).run();\n\n // THEN--------------------------------\n //-------------------------------------\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(1);\n if (\"data\" in result) {\n expect(result.data).toEqual(new Uint8Array([]));\n } else {\n throw new Error(\"Expected result to have data property\");\n }\n });\n\n it(\"should correctly build the APDU command\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: SIMPLE_MESSAGE,\n };\n const task = new SendSignMessageTask(apiMock, args);\n const fullMessage = task[\"_buildFullMessage\"](SIMPLE_MESSAGE);\n const paths = [44 | 0x80000000, 501 | 0x80000000, 0 | 0x80000000, 0];\n const commandBuffer = task[\"_buildApduCommand\"](fullMessage, paths);\n\n // WHEN--------------------------------\n //-------------------------------------\n const expectedCommandLength =\n 1 + // numberOfSigners\n 1 + // numberOfDerivations\n paths.length * 4 + // paths\n fullMessage.length; // message\n\n // THEN--------------------------------\n //-------------------------------------\n expect(commandBuffer.length).toEqual(expectedCommandLength);\n });\n\n it(\"should handle messages with maximum allowed length\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const maxLengthMessage = new Uint8Array(255).fill(0x01);\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: maxLengthMessage,\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n data: new Uint8Array([0x99, 0x88, 0x77]),\n }),\n );\n\n // WHEN--------------------------------\n //-------------------------------------\n const result = await new SendSignMessageTask(apiMock, args).run();\n\n // THEN--------------------------------\n //-------------------------------------\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(1);\n if (\"data\" in result) {\n expect(result.data).toEqual(new Uint8Array([0x99, 0x88, 0x77]));\n } else {\n throw new Error(\"Expected result to have data property\");\n }\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_device_management_kit", "import_makeInternalApi", "import_SendSignMessageTask", "DERIVATION_PATH", "apiMock", "SIMPLE_MESSAGE", "args", "result", "expectedSignature", "task", "emptyMessage", "fullMessage", "paths", "commandBuffer", "expectedCommandLength", "maxLengthMessage"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var i=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var D=(o,e)=>{for(var n in e)i(o,n,{get:e[n],enumerable:!0})},M=(o,e,n,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of c(e))!C.call(o,t)&&t!==n&&i(o,t,{get:()=>e[t],enumerable:!(a=d(e,t))||a.enumerable});return o};var l=o=>M(i({},"__esModule",{value:!0}),o);var v={};D(v,{makeContainer:()=>u});module.exports=l(v);var s=require("inversify"),m=require("./app-binder/di/appBinderModule"),p=require("./use-cases/di/useCasesModule"),r=require("./externalTypes");const u=({dmk:o,sessionId:e})=>{const n=new s.Container;return n.bind(r.externalTypes.Dmk).toConstantValue(o),n.bind(r.externalTypes.SessionId).toConstantValue(e),n.load((0,m.appBinderModuleFactory)(),(0,p.useCasesModuleFactory)()),n};0&&(module.exports={makeContainer});
|
|
2
|
+
//# sourceMappingURL=di.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/internal/di.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport { Container } from \"inversify\";\n\n// import { makeLoggerMiddleware } from \"inversify-logger-middleware\";\nimport { appBinderModuleFactory } from \"./app-binder/di/appBinderModule\";\nimport { useCasesModuleFactory } from \"./use-cases/di/useCasesModule\";\nimport { externalTypes } from \"./externalTypes\";\n\n// Uncomment this line to enable the logger middleware\n// const logger = makeLoggerMiddleware();\n\nexport type MakeContainerProps = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n};\nexport const makeContainer = ({ dmk, sessionId }: MakeContainerProps) => {\n const container = new Container();\n\n // Uncomment this line to enable the logger middleware\n // container.applyMiddleware(logger);\n\n container.bind<DeviceManagementKit>(externalTypes.Dmk).toConstantValue(dmk);\n container\n .bind<DeviceSessionId>(externalTypes.SessionId)\n .toConstantValue(sessionId);\n\n container.load(appBinderModuleFactory(), useCasesModuleFactory());\n\n return container;\n};\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,IAAA,eAAAC,EAAAH,GAIA,IAAAI,EAA0B,qBAG1BC,EAAuC,2CACvCC,EAAsC,yCACtCC,EAA8B,2BASvB,MAAML,EAAgB,CAAC,CAAE,IAAAM,EAAK,UAAAC,CAAU,IAA0B,CACvE,MAAMC,EAAY,IAAI,YAKtB,OAAAA,EAAU,KAA0B,gBAAc,GAAG,EAAE,gBAAgBF,CAAG,EAC1EE,EACG,KAAsB,gBAAc,SAAS,EAC7C,gBAAgBD,CAAS,EAE5BC,EAAU,QAAK,0BAAuB,KAAG,yBAAsB,CAAC,EAEzDA,CACT",
|
|
6
|
+
"names": ["di_exports", "__export", "makeContainer", "__toCommonJS", "import_inversify", "import_appBinderModule", "import_useCasesModule", "import_externalTypes", "dmk", "sessionId", "container"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var n=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var t=Object.prototype.hasOwnProperty;var y=(e,o)=>{for(var m in o)n(e,m,{get:o[m],enumerable:!0})},b=(e,o,m,r)=>{if(o&&typeof o=="object"||typeof o=="function")for(let s of l(o))!t.call(e,s)&&s!==m&&n(e,s,{get:()=>o[s],enumerable:!(r=S(o,s))||r.enumerable});return e};var d=e=>b(n({},"__esModule",{value:!0}),e);var i={};y(i,{externalTypes:()=>f});module.exports=d(i);const f={Dmk:Symbol.for("Dmk"),SessionId:Symbol.for("SessionId")};0&&(module.exports={externalTypes});
|
|
2
|
+
//# sourceMappingURL=externalTypes.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/internal/externalTypes.ts"],
|
|
4
|
+
"sourcesContent": ["export const externalTypes = {\n Dmk: Symbol.for(\"Dmk\"),\n SessionId: Symbol.for(\"SessionId\"),\n};\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,IAAA,eAAAC,EAAAH,GAAO,MAAME,EAAgB,CAC3B,IAAK,OAAO,IAAI,KAAK,EACrB,UAAW,OAAO,IAAI,WAAW,CACnC",
|
|
6
|
+
"names": ["externalTypes_exports", "__export", "externalTypes", "__toCommonJS"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var o=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var u=(p,r)=>{for(var t in r)o(p,t,{get:r[t],enumerable:!0})},y=(p,r,t,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let e of B(r))!l.call(p,e)&&e!==t&&o(p,e,{get:()=>r[e],enumerable:!(i=a(r,e))||i.enumerable});return p};var D=p=>y(o({},"__esModule",{value:!0}),p),s=(p,r,t,i)=>{for(var e=i>1?void 0:i?a(r,t):r,d=p.length-1,m;d>=0;d--)(m=p[d])&&(e=(i?m(r,t,e):m(e))||e);return i&&e&&o(r,t,e),e},A=(p,r)=>(t,i)=>r(t,i,p);var O={};u(O,{GetAddressUseCase:()=>n});module.exports=D(O);var c=require("inversify"),f=require("../../app-binder/di/appBinderTypes");let n=class{constructor(r){this.appBinder=r}execute(r,t){return this.appBinder.getAddress({derivationPath:r,checkOnDevice:t?.checkOnDevice??!1})}};n=s([(0,c.injectable)(),A(0,(0,c.inject)(f.appBinderTypes.AppBinder))],n);0&&(module.exports={GetAddressUseCase});
|
|
2
|
+
//# sourceMappingURL=GetAddressUseCase.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/use-cases/address/GetAddressUseCase.ts"],
|
|
4
|
+
"sourcesContent": ["import { inject, injectable } from \"inversify\";\n\nimport { type GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { type AddressOptions } from \"@api/model/AddressOption\";\nimport { appBinderTypes } from \"@internal/app-binder/di/appBinderTypes\";\nimport { SolanaAppBinder } from \"@internal/app-binder/SolanaAppBinder\";\n\n@injectable()\nexport class GetAddressUseCase {\n constructor(\n @inject(appBinderTypes.AppBinder) private appBinder: SolanaAppBinder,\n ) {}\n\n execute(\n derivationPath: string,\n options?: AddressOptions,\n ): GetAddressDAReturnType {\n return this.appBinder.getAddress({\n derivationPath,\n checkOnDevice: options?.checkOnDevice ?? false,\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBAInCC,EAA+B,kDAIxB,IAAMC,EAAN,KAAwB,CAC7B,YAC4CC,EAC1C,CAD0C,eAAAA,CACzC,CAEH,QACEC,EACAC,EACwB,CACxB,OAAO,KAAK,UAAU,WAAW,CAC/B,eAAAD,EACA,cAAeC,GAAS,eAAiB,EAC3C,CAAC,CACH,CACF,EAdaH,EAANI,EAAA,IADN,cAAW,EAGPC,EAAA,eAAO,iBAAe,SAAS,IAFvBL",
|
|
6
|
+
"names": ["GetAddressUseCase_exports", "__export", "GetAddressUseCase", "__toCommonJS", "import_inversify", "import_appBinderTypes", "GetAddressUseCase", "appBinder", "derivationPath", "options", "__decorateClass", "__decorateParam"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var o=require("./GetAddressUseCase");describe("GetAddressUseCase",()=>{const e="44'/501'",s="some-address",t=jest.fn().mockReturnValue(s),c={getAddress:t};let d;beforeEach(()=>{jest.clearAllMocks(),d=new o.GetAddressUseCase(c)}),it("should return the address from the appBinder's getAddress method",()=>{const a=d.execute(e,{checkOnDevice:!0});expect(a).toEqual(s),expect(t).toHaveBeenCalledWith({derivationPath:e,checkOnDevice:!0})}),it("should return the address from the appBinder's getAddress method with default options",()=>{const r=d.execute(e);expect(r).toEqual(s),expect(t).toHaveBeenCalledWith({derivationPath:e,checkOnDevice:!1})})});
|
|
2
|
+
//# sourceMappingURL=GetAddressUseCase.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/use-cases/address/GetAddressUseCase.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { type SolanaAppBinder } from \"@internal/app-binder/SolanaAppBinder\";\n\nimport { GetAddressUseCase } from \"./GetAddressUseCase\";\n\ndescribe(\"GetAddressUseCase\", () => {\n const derivationPath = \"44'/501'\";\n const address = \"some-address\";\n const getAddressMock = jest.fn().mockReturnValue(address);\n const appBinderMock = {\n getAddress: getAddressMock,\n } as unknown as SolanaAppBinder;\n let useCase: GetAddressUseCase;\n\n beforeEach(() => {\n jest.clearAllMocks();\n useCase = new GetAddressUseCase(appBinderMock);\n });\n\n it(\"should return the address from the appBinder's getAddress method\", () => {\n // GIVEN\n const checkOnDevice = true;\n\n // WHEN\n const result = useCase.execute(derivationPath, { checkOnDevice });\n\n // THEN\n expect(result).toEqual(address);\n expect(getAddressMock).toHaveBeenCalledWith({\n derivationPath,\n checkOnDevice,\n });\n });\n\n it(\"should return the address from the appBinder's getAddress method with default options\", () => {\n // WHEN\n const result = useCase.execute(derivationPath);\n\n // THEN\n expect(result).toEqual(address);\n expect(getAddressMock).toHaveBeenCalledWith({\n derivationPath,\n checkOnDevice: false,\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "aAEA,IAAAA,EAAkC,+BAElC,SAAS,oBAAqB,IAAM,CAClC,MAAMC,EAAiB,WACjBC,EAAU,eACVC,EAAiB,KAAK,GAAG,EAAE,gBAAgBD,CAAO,EAClDE,EAAgB,CACpB,WAAYD,CACd,EACA,IAAIE,EAEJ,WAAW,IAAM,CACf,KAAK,cAAc,EACnBA,EAAU,IAAI,oBAAkBD,CAAa,CAC/C,CAAC,EAED,GAAG,mEAAoE,IAAM,CAK3E,MAAME,EAASD,EAAQ,QAAQJ,EAAgB,CAAE,gBAAc,CAAC,EAGhE,OAAOK,CAAM,EAAE,QAAQJ,CAAO,EAC9B,OAAOC,CAAc,EAAE,qBAAqB,CAC1C,eAAAF,EACA,gBACF,CAAC,CACH,CAAC,EAED,GAAG,wFAAyF,IAAM,CAEhG,MAAMK,EAASD,EAAQ,QAAQJ,CAAc,EAG7C,OAAOK,CAAM,EAAE,QAAQJ,CAAO,EAC9B,OAAOC,CAAc,EAAE,qBAAqB,CAC1C,eAAAF,EACA,cAAe,EACjB,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_GetAddressUseCase", "derivationPath", "address", "getAddressMock", "appBinderMock", "useCase", "result"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var t=require("../../../api/model/PublicKeyDisplayMode"),i=require("./GetAppConfigurationUseCase");describe("GetAppConfigurationUseCase",()=>{const e=jest.fn(),o={blindSigningEnabled:!1,pubKeyDisplayMode:t.PublicKeyDisplayMode.LONG,version:"1.0.0"},p={getAppConfiguration:e};let n;beforeEach(()=>{jest.clearAllMocks(),n=new i.GetAppConfigurationUseCase(p)}),it("should return the config from the appBinder's getAppConfiguration method",()=>{e.mockReturnValue(o);const a=n.execute();expect(e).toHaveBeenCalledWith(),expect(a).toEqual(o)})});
|
|
2
|
+
//# sourceMappingURL=GetAppConfiguration.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/use-cases/app-configuration/GetAppConfiguration.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { type AppConfiguration } from \"@api/model/AppConfiguration\";\nimport { PublicKeyDisplayMode } from \"@api/model/PublicKeyDisplayMode\";\nimport { type SolanaAppBinder } from \"@internal/app-binder/SolanaAppBinder\";\n\nimport { GetAppConfigurationUseCase } from \"./GetAppConfigurationUseCase\";\n\ndescribe(\"GetAppConfigurationUseCase\", () => {\n const getAppConfigurationMock = jest.fn();\n const config: AppConfiguration = {\n blindSigningEnabled: false,\n pubKeyDisplayMode: PublicKeyDisplayMode.LONG,\n version: \"1.0.0\",\n };\n const appBinderMock = {\n getAppConfiguration: getAppConfigurationMock,\n } as unknown as SolanaAppBinder;\n let useCase: GetAppConfigurationUseCase;\n\n beforeEach(() => {\n jest.clearAllMocks();\n useCase = new GetAppConfigurationUseCase(appBinderMock);\n });\n\n it(\"should return the config from the appBinder's getAppConfiguration method\", () => {\n // GIVEN\n getAppConfigurationMock.mockReturnValue(config);\n\n // WHEN\n const result = useCase.execute();\n\n // THEN\n expect(getAppConfigurationMock).toHaveBeenCalledWith();\n expect(result).toEqual(config);\n });\n});\n"],
|
|
5
|
+
"mappings": "aACA,IAAAA,EAAqC,2CAGrCC,EAA2C,wCAE3C,SAAS,6BAA8B,IAAM,CAC3C,MAAMC,EAA0B,KAAK,GAAG,EAClCC,EAA2B,CAC/B,oBAAqB,GACrB,kBAAmB,uBAAqB,KACxC,QAAS,OACX,EACMC,EAAgB,CACpB,oBAAqBF,CACvB,EACA,IAAIG,EAEJ,WAAW,IAAM,CACf,KAAK,cAAc,EACnBA,EAAU,IAAI,6BAA2BD,CAAa,CACxD,CAAC,EAED,GAAG,2EAA4E,IAAM,CAEnFF,EAAwB,gBAAgBC,CAAM,EAG9C,MAAMG,EAASD,EAAQ,QAAQ,EAG/B,OAAOH,CAAuB,EAAE,qBAAqB,EACrD,OAAOI,CAAM,EAAE,QAAQH,CAAM,CAC/B,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_PublicKeyDisplayMode", "import_GetAppConfigurationUseCase", "getAppConfigurationMock", "config", "appBinderMock", "useCase", "result"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var o=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var y=(p,r)=>{for(var e in r)o(p,e,{get:r[e],enumerable:!0})},T=(p,r,e,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of f(r))!l.call(p,t)&&t!==e&&o(p,t,{get:()=>r[t],enumerable:!(i=d(r,t))||i.enumerable});return p};var j=p=>T(o({},"__esModule",{value:!0}),p),B=(p,r,e,i)=>{for(var t=i>1?void 0:i?d(r,e):r,a=p.length-1,c;a>=0;a--)(c=p[a])&&(t=(i?c(r,e,t):c(t))||t);return i&&t&&o(r,e,t),t},u=(p,r)=>(e,i)=>r(e,i,p);var x={};y(x,{GetAppConfigurationUseCase:()=>n});module.exports=j(x);var m=require("inversify"),A=require("../../app-binder/di/appBinderTypes");let n=class{constructor(r){this.appBinder=r}execute(){return this.appBinder.getAppConfiguration()}};n=B([(0,m.injectable)(),u(0,(0,m.inject)(A.appBinderTypes.AppBinder))],n);0&&(module.exports={GetAppConfigurationUseCase});
|
|
2
|
+
//# sourceMappingURL=GetAppConfigurationUseCase.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/use-cases/app-configuration/GetAppConfigurationUseCase.ts"],
|
|
4
|
+
"sourcesContent": ["import { inject, injectable } from \"inversify\";\n\nimport { GetAppConfigurationDAReturnType } from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport { appBinderTypes } from \"@internal/app-binder/di/appBinderTypes\";\nimport { SolanaAppBinder } from \"@internal/app-binder/SolanaAppBinder\";\n\n@injectable()\nexport class GetAppConfigurationUseCase {\n constructor(\n @inject(appBinderTypes.AppBinder) private appBinder: SolanaAppBinder,\n ) {}\n\n execute(): GetAppConfigurationDAReturnType {\n return this.appBinder.getAppConfiguration();\n }\n}\n"],
|
|
5
|
+
"mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBAGnCC,EAA+B,kDAIxB,IAAMC,EAAN,KAAiC,CACtC,YAC4CC,EAC1C,CAD0C,eAAAA,CACzC,CAEH,SAA2C,CACzC,OAAO,KAAK,UAAU,oBAAoB,CAC5C,CACF,EARaD,EAANE,EAAA,IADN,cAAW,EAGPC,EAAA,eAAO,iBAAe,SAAS,IAFvBH",
|
|
6
|
+
"names": ["GetAppConfigurationUseCase_exports", "__export", "GetAppConfigurationUseCase", "__toCommonJS", "import_inversify", "import_appBinderTypes", "GetAppConfigurationUseCase", "appBinder", "__decorateClass", "__decorateParam"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var i=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var U=Object.prototype.hasOwnProperty;var c=(e,s)=>{for(var t in s)i(e,t,{get:s[t],enumerable:!0})},d=(e,s,t,a)=>{if(s&&typeof s=="object"||typeof s=="function")for(let o of g(s))!U.call(e,o)&&o!==t&&i(e,o,{get:()=>s[o],enumerable:!(a=f(s,o))||a.enumerable});return e};var A=e=>d(i({},"__esModule",{value:!0}),e);var G={};c(G,{useCasesModuleFactory:()=>_});module.exports=A(G);var r=require("inversify"),C=require("../../use-cases/address/GetAddressUseCase"),m=require("../../use-cases/app-configuration/GetAppConfigurationUseCase"),n=require("../../use-cases/di/useCasesTypes"),p=require("../../use-cases/message/SignMessageUseCase"),u=require("../../use-cases/transaction/SignTransactionUseCase");const _=()=>new r.ContainerModule((e,s,t,a,o,M,S)=>{e(n.useCasesTypes.GetAddressUseCase).to(C.GetAddressUseCase),e(n.useCasesTypes.GetAppConfigurationUseCase).to(m.GetAppConfigurationUseCase),e(n.useCasesTypes.SignTransactionUseCase).to(u.SignTransactionUseCase),e(n.useCasesTypes.SignMessageUseCase).to(p.SignMessageUseCase)});0&&(module.exports={useCasesModuleFactory});
|
|
2
|
+
//# sourceMappingURL=useCasesModule.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/use-cases/di/useCasesModule.ts"],
|
|
4
|
+
"sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { GetAddressUseCase } from \"@internal/use-cases/address/GetAddressUseCase\";\nimport { GetAppConfigurationUseCase } from \"@internal/use-cases/app-configuration/GetAppConfigurationUseCase\";\nimport { useCasesTypes } from \"@internal/use-cases/di/useCasesTypes\";\nimport { SignMessageUseCase } from \"@internal/use-cases/message/SignMessageUseCase\";\nimport { SignTransactionUseCase } from \"@internal/use-cases/transaction/SignTransactionUseCase\";\n\nexport const useCasesModuleFactory = () =>\n new ContainerModule(\n (\n bind,\n _unbind,\n _isBound,\n _rebind,\n _unbindAsync,\n _onActivation,\n _onDeactivation,\n ) => {\n bind(useCasesTypes.GetAddressUseCase).to(GetAddressUseCase);\n bind(useCasesTypes.GetAppConfigurationUseCase).to(\n GetAppConfigurationUseCase,\n );\n bind(useCasesTypes.SignTransactionUseCase).to(SignTransactionUseCase);\n bind(useCasesTypes.SignMessageUseCase).to(SignMessageUseCase);\n },\n );\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,2BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAgC,qBAEhCC,EAAkC,yDAClCC,EAA2C,4EAC3CC,EAA8B,gDAC9BC,EAAmC,0DACnCC,EAAuC,kEAEhC,MAAMP,EAAwB,IACnC,IAAI,kBACF,CACEQ,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,IACG,CACHN,EAAK,gBAAc,iBAAiB,EAAE,GAAG,mBAAiB,EAC1DA,EAAK,gBAAc,0BAA0B,EAAE,GAC7C,4BACF,EACAA,EAAK,gBAAc,sBAAsB,EAAE,GAAG,wBAAsB,EACpEA,EAAK,gBAAc,kBAAkB,EAAE,GAAG,oBAAkB,CAC9D,CACF",
|
|
6
|
+
"names": ["useCasesModule_exports", "__export", "useCasesModuleFactory", "__toCommonJS", "import_inversify", "import_GetAddressUseCase", "import_GetAppConfigurationUseCase", "import_useCasesTypes", "import_SignMessageUseCase", "import_SignTransactionUseCase", "bind", "_unbind", "_isBound", "_rebind", "_unbindAsync", "_onActivation", "_onDeactivation"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var o=require("inversify"),i=require("./useCasesModule"),s=require("./useCasesTypes");describe("useCasesModuleFactory",()=>{describe("Default",()=>{let e,t;beforeEach(()=>{t=(0,i.useCasesModuleFactory)(),e=new o.Container,e.load(t)}),it("should return the address module",()=>{expect(t).toBeDefined()}),it("should bind GetAddressUseCase",()=>{expect(e.isBound(s.useCasesTypes.GetAddressUseCase)).toBeTruthy()}),it("should bind GetAppConfigurationUseCase",()=>{expect(e.isBound(s.useCasesTypes.GetAppConfigurationUseCase)).toBeTruthy()}),it("should bind SignTransactionUseCase",()=>{expect(e.isBound(s.useCasesTypes.SignTransactionUseCase)).toBeTruthy()}),it("should bind SignMessageUseCase",()=>{expect(e.isBound(s.useCasesTypes.SignMessageUseCase)).toBeTruthy()})})});
|
|
2
|
+
//# sourceMappingURL=useCasesModule.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/use-cases/di/useCasesModule.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { Container } from \"inversify\";\n\nimport { useCasesModuleFactory } from \"./useCasesModule\";\nimport { useCasesTypes } from \"./useCasesTypes\";\n\ndescribe(\"useCasesModuleFactory\", () => {\n describe(\"Default\", () => {\n let container: Container;\n let mod: ReturnType<typeof useCasesModuleFactory>;\n beforeEach(() => {\n mod = useCasesModuleFactory();\n container = new Container();\n container.load(mod);\n });\n\n it(\"should return the address module\", () => {\n expect(mod).toBeDefined();\n });\n\n it(\"should bind GetAddressUseCase\", () => {\n expect(container.isBound(useCasesTypes.GetAddressUseCase)).toBeTruthy();\n });\n\n it(\"should bind GetAppConfigurationUseCase\", () => {\n expect(\n container.isBound(useCasesTypes.GetAppConfigurationUseCase),\n ).toBeTruthy();\n });\n\n it(\"should bind SignTransactionUseCase\", () => {\n expect(\n container.isBound(useCasesTypes.SignTransactionUseCase),\n ).toBeTruthy();\n });\n\n it(\"should bind SignMessageUseCase\", () => {\n expect(container.isBound(useCasesTypes.SignMessageUseCase)).toBeTruthy();\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAA0B,qBAE1BC,EAAsC,4BACtCC,EAA8B,2BAE9B,SAAS,wBAAyB,IAAM,CACtC,SAAS,UAAW,IAAM,CACxB,IAAIC,EACAC,EACJ,WAAW,IAAM,CACfA,KAAM,yBAAsB,EAC5BD,EAAY,IAAI,YAChBA,EAAU,KAAKC,CAAG,CACpB,CAAC,EAED,GAAG,mCAAoC,IAAM,CAC3C,OAAOA,CAAG,EAAE,YAAY,CAC1B,CAAC,EAED,GAAG,gCAAiC,IAAM,CACxC,OAAOD,EAAU,QAAQ,gBAAc,iBAAiB,CAAC,EAAE,WAAW,CACxE,CAAC,EAED,GAAG,yCAA0C,IAAM,CACjD,OACEA,EAAU,QAAQ,gBAAc,0BAA0B,CAC5D,EAAE,WAAW,CACf,CAAC,EAED,GAAG,qCAAsC,IAAM,CAC7C,OACEA,EAAU,QAAQ,gBAAc,sBAAsB,CACxD,EAAE,WAAW,CACf,CAAC,EAED,GAAG,iCAAkC,IAAM,CACzC,OAAOA,EAAU,QAAQ,gBAAc,kBAAkB,CAAC,EAAE,WAAW,CACzE,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_inversify", "import_useCasesModule", "import_useCasesTypes", "container", "mod"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var n=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var t=Object.prototype.hasOwnProperty;var g=(e,s)=>{for(var o in s)n(e,o,{get:s[o],enumerable:!0})},S=(e,s,o,r)=>{if(s&&typeof s=="object"||typeof s=="function")for(let a of i(s))!t.call(e,a)&&a!==o&&n(e,a,{get:()=>s[a],enumerable:!(r=C(s,a))||r.enumerable});return e};var U=e=>S(n({},"__esModule",{value:!0}),e);var p={};g(p,{useCasesTypes:()=>f});module.exports=U(p);const f={GetAddressUseCase:Symbol.for("GetAddressUseCase"),GetAppConfigurationUseCase:Symbol.for("GetAppConfigurationUseCase"),SignTransactionUseCase:Symbol.for("SignTransactionUseCase"),SignMessageUseCase:Symbol.for("SignMessageUseCase")};0&&(module.exports={useCasesTypes});
|
|
2
|
+
//# sourceMappingURL=useCasesTypes.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/use-cases/di/useCasesTypes.ts"],
|
|
4
|
+
"sourcesContent": ["export const useCasesTypes = {\n GetAddressUseCase: Symbol.for(\"GetAddressUseCase\"),\n GetAppConfigurationUseCase: Symbol.for(\"GetAppConfigurationUseCase\"),\n SignTransactionUseCase: Symbol.for(\"SignTransactionUseCase\"),\n SignMessageUseCase: Symbol.for(\"SignMessageUseCase\"),\n};\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,IAAA,eAAAC,EAAAH,GAAO,MAAME,EAAgB,CAC3B,kBAAmB,OAAO,IAAI,mBAAmB,EACjD,2BAA4B,OAAO,IAAI,4BAA4B,EACnE,uBAAwB,OAAO,IAAI,wBAAwB,EAC3D,mBAAoB,OAAO,IAAI,oBAAoB,CACrD",
|
|
6
|
+
"names": ["useCasesTypes_exports", "__export", "useCasesTypes", "__toCommonJS"]
|
|
7
|
+
}
|