@ledgerhq/device-signer-kit-solana 1.0.1 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +148 -356
- package/lib/cjs/api/SignerSolana.js +1 -1
- package/lib/cjs/api/SignerSolana.js.map +1 -1
- package/lib/cjs/api/app-binder/GetAddressDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/GetAddressDeviceActionTypes.js.map +1 -1
- package/lib/cjs/api/app-binder/GetAppConfigurationDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/GetAppConfigurationDeviceActionTypes.js.map +1 -1
- package/lib/cjs/api/app-binder/SignMessageDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/SignMessageDeviceActionTypes.js.map +1 -1
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +1 -1
- package/lib/cjs/api/model/AddressOption.js +1 -1
- package/lib/cjs/api/model/AddressOption.js.map +1 -1
- package/lib/cjs/api/model/MessageOptions.js +2 -0
- package/lib/cjs/api/model/MessageOptions.js.map +7 -0
- package/lib/cjs/api/model/TransactionOptions.js +1 -1
- package/lib/cjs/api/model/TransactionOptions.js.map +1 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/internal/DefaultSignerSolana.js +1 -1
- package/lib/cjs/internal/DefaultSignerSolana.js.map +2 -2
- package/lib/cjs/internal/DefaultSignerSolana.test.js +1 -1
- package/lib/cjs/internal/DefaultSignerSolana.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/SolanaAppBinder.js +1 -1
- package/lib/cjs/internal/app-binder/SolanaAppBinder.js.map +3 -3
- package/lib/cjs/internal/app-binder/SolanaAppBinder.test.js +1 -1
- package/lib/cjs/internal/app-binder/SolanaAppBinder.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/GetPubKeyCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/GetPubKeyCommand.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/GetPubKeyCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/GetPubKeyCommand.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/SignOffChainMessageCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignOffChainMessageCommand.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SignOffChainMessageCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignOffChainMessageCommand.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/SignTransactionCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignTransactionCommand.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/utils/SolanaAppErrors.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/utils/SolanaAppErrors.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/utils/SolanaApplicationErrors.js +2 -0
- package/lib/cjs/internal/app-binder/command/utils/SolanaApplicationErrors.js.map +7 -0
- package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.test.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js.map +2 -2
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map +3 -3
- package/lib/cjs/internal/app-binder/di/appBinderModule.js +1 -1
- package/lib/cjs/internal/app-binder/di/appBinderModule.js.map +3 -3
- package/lib/cjs/internal/app-binder/di/appBinderModule.test.js +1 -1
- package/lib/cjs/internal/app-binder/di/appBinderModule.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/SendCommandInChunksTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendCommandInChunksTask.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/SendSignDataTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendSignDataTask.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/SendSignDataTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendSignDataTask.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/SendSignMessageTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendSignMessageTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/SendSignMessageTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendSignMessageTask.test.js.map +2 -2
- package/lib/cjs/internal/di.js +1 -1
- package/lib/cjs/internal/di.js.map +2 -2
- package/lib/cjs/internal/use-cases/address/GetAddressUseCase.js +1 -1
- package/lib/cjs/internal/use-cases/address/GetAddressUseCase.js.map +2 -2
- package/lib/cjs/internal/use-cases/address/GetAddressUseCase.test.js +1 -1
- package/lib/cjs/internal/use-cases/address/GetAddressUseCase.test.js.map +2 -2
- package/lib/cjs/internal/use-cases/app-configuration/GetAppConfiguration.test.js +1 -1
- package/lib/cjs/internal/use-cases/app-configuration/GetAppConfiguration.test.js.map +2 -2
- package/lib/cjs/internal/use-cases/di/useCasesModule.js +1 -1
- package/lib/cjs/internal/use-cases/di/useCasesModule.js.map +3 -3
- package/lib/cjs/internal/use-cases/di/useCasesModule.test.js +1 -1
- package/lib/cjs/internal/use-cases/di/useCasesModule.test.js.map +2 -2
- package/lib/cjs/internal/use-cases/message/SignMessageUseCase.js +1 -1
- package/lib/cjs/internal/use-cases/message/SignMessageUseCase.js.map +3 -3
- package/lib/cjs/internal/use-cases/message/SignMessageUseCase.test.js +1 -1
- package/lib/cjs/internal/use-cases/message/SignMessageUseCase.test.js.map +2 -2
- package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.js +1 -1
- package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.js.map +2 -2
- package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.test.js +1 -1
- package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.test.js.map +2 -2
- package/lib/cjs/package.json +17 -17
- package/lib/esm/api/model/MessageOptions.js +1 -0
- package/lib/esm/api/model/MessageOptions.js.map +7 -0
- package/lib/esm/internal/DefaultSignerSolana.js +1 -1
- package/lib/esm/internal/DefaultSignerSolana.js.map +2 -2
- package/lib/esm/internal/DefaultSignerSolana.test.js +1 -1
- package/lib/esm/internal/DefaultSignerSolana.test.js.map +2 -2
- package/lib/esm/internal/app-binder/SolanaAppBinder.js +1 -1
- package/lib/esm/internal/app-binder/SolanaAppBinder.js.map +3 -3
- package/lib/esm/internal/app-binder/SolanaAppBinder.test.js +1 -1
- package/lib/esm/internal/app-binder/SolanaAppBinder.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.js.map +3 -3
- package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/GetPubKeyCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/GetPubKeyCommand.js.map +3 -3
- package/lib/esm/internal/app-binder/command/GetPubKeyCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/GetPubKeyCommand.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/SignOffChainMessageCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/SignOffChainMessageCommand.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SignOffChainMessageCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SignOffChainMessageCommand.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/SignTransactionCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/SignTransactionCommand.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/utils/SolanaAppErrors.test.js +2 -0
- package/lib/esm/internal/app-binder/command/utils/SolanaAppErrors.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/utils/SolanaApplicationErrors.js +2 -0
- package/lib/esm/internal/app-binder/command/utils/SolanaApplicationErrors.js.map +7 -0
- package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.test.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.test.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
- package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js +1 -1
- package/lib/esm/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js.map +2 -2
- package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js +1 -1
- package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map +3 -3
- package/lib/esm/internal/app-binder/di/appBinderModule.js +1 -1
- package/lib/esm/internal/app-binder/di/appBinderModule.js.map +3 -3
- package/lib/esm/internal/app-binder/di/appBinderModule.test.js +1 -1
- package/lib/esm/internal/app-binder/di/appBinderModule.test.js.map +2 -2
- package/lib/esm/internal/app-binder/task/SendCommandInChunksTask.js +1 -1
- package/lib/esm/internal/app-binder/task/SendCommandInChunksTask.js.map +2 -2
- package/lib/esm/internal/app-binder/task/SendSignDataTask.js +1 -1
- package/lib/esm/internal/app-binder/task/SendSignDataTask.js.map +2 -2
- package/lib/esm/internal/app-binder/task/SendSignDataTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/SendSignDataTask.test.js.map +2 -2
- package/lib/esm/internal/app-binder/task/SendSignMessageTask.js +1 -1
- package/lib/esm/internal/app-binder/task/SendSignMessageTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/SendSignMessageTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/SendSignMessageTask.test.js.map +2 -2
- package/lib/esm/internal/di.js +1 -1
- package/lib/esm/internal/di.js.map +2 -2
- package/lib/esm/internal/use-cases/address/GetAddressUseCase.js +1 -1
- package/lib/esm/internal/use-cases/address/GetAddressUseCase.js.map +2 -2
- package/lib/esm/internal/use-cases/address/GetAddressUseCase.test.js +1 -1
- package/lib/esm/internal/use-cases/address/GetAddressUseCase.test.js.map +2 -2
- package/lib/esm/internal/use-cases/app-configuration/GetAppConfiguration.test.js +1 -1
- package/lib/esm/internal/use-cases/app-configuration/GetAppConfiguration.test.js.map +2 -2
- package/lib/esm/internal/use-cases/di/useCasesModule.js +1 -1
- package/lib/esm/internal/use-cases/di/useCasesModule.js.map +3 -3
- package/lib/esm/internal/use-cases/di/useCasesModule.test.js +1 -1
- package/lib/esm/internal/use-cases/di/useCasesModule.test.js.map +2 -2
- package/lib/esm/internal/use-cases/message/SignMessageUseCase.js +1 -1
- package/lib/esm/internal/use-cases/message/SignMessageUseCase.js.map +3 -3
- package/lib/esm/internal/use-cases/message/SignMessageUseCase.test.js +1 -1
- package/lib/esm/internal/use-cases/message/SignMessageUseCase.test.js.map +2 -2
- package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.js +1 -1
- package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.js.map +2 -2
- package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.test.js +1 -1
- package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.test.js.map +2 -2
- package/lib/esm/package.json +17 -17
- package/lib/types/api/SignerSolana.d.ts +2 -1
- package/lib/types/api/SignerSolana.d.ts.map +1 -1
- package/lib/types/api/app-binder/GetAddressDeviceActionTypes.d.ts +2 -1
- package/lib/types/api/app-binder/GetAddressDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/app-binder/GetAppConfigurationDeviceActionTypes.d.ts +2 -1
- package/lib/types/api/app-binder/GetAppConfigurationDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/app-binder/SignMessageDeviceActionTypes.d.ts +3 -11
- package/lib/types/api/app-binder/SignMessageDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +4 -4
- package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/model/AddressOption.d.ts +1 -0
- package/lib/types/api/model/AddressOption.d.ts.map +1 -1
- package/lib/types/api/model/MessageOptions.d.ts +4 -0
- package/lib/types/api/model/MessageOptions.d.ts.map +1 -0
- package/lib/types/api/model/TransactionOptions.d.ts +3 -1
- package/lib/types/api/model/TransactionOptions.d.ts.map +1 -1
- package/lib/types/internal/DefaultSignerSolana.d.ts +2 -1
- package/lib/types/internal/DefaultSignerSolana.d.ts.map +1 -1
- package/lib/types/internal/app-binder/SolanaAppBinder.d.ts +3 -2
- package/lib/types/internal/app-binder/SolanaAppBinder.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.d.ts +4 -2
- package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/GetPubKeyCommand.d.ts +4 -2
- package/lib/types/internal/app-binder/command/GetPubKeyCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SignOffChainMessageCommand.d.ts +4 -3
- package/lib/types/internal/app-binder/command/SignOffChainMessageCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SignTransactionCommand.d.ts +5 -3
- package/lib/types/internal/app-binder/command/SignTransactionCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/utils/SolanaAppErrors.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/utils/SolanaAppErrors.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/utils/SolanaApplicationErrors.d.ts +8 -0
- package/lib/types/internal/app-binder/command/utils/SolanaApplicationErrors.d.ts.map +1 -0
- package/lib/types/internal/app-binder/device-action/SignTransactionDeviceAction.d.ts +2 -1
- package/lib/types/internal/app-binder/device-action/SignTransactionDeviceAction.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts +2 -1
- package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.d.ts +5 -2
- package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.d.ts.map +1 -1
- package/lib/types/internal/app-binder/di/appBinderModule.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/SendCommandInChunksTask.d.ts +3 -2
- package/lib/types/internal/app-binder/task/SendCommandInChunksTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/SendSignDataTask.d.ts +3 -2
- package/lib/types/internal/app-binder/task/SendSignDataTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/SendSignMessageTask.d.ts +3 -1
- package/lib/types/internal/app-binder/task/SendSignMessageTask.d.ts.map +1 -1
- package/lib/types/internal/di.d.ts.map +1 -1
- package/lib/types/internal/use-cases/address/GetAddressUseCase.d.ts.map +1 -1
- package/lib/types/internal/use-cases/di/useCasesModule.d.ts.map +1 -1
- package/lib/types/internal/use-cases/message/SignMessageUseCase.d.ts +2 -1
- package/lib/types/internal/use-cases/message/SignMessageUseCase.d.ts.map +1 -1
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +19 -19
- package/lib/cjs/internal/app-binder/command/utils/solanaAppError.test.js +0 -2
- package/lib/cjs/internal/app-binder/command/utils/solanaAppError.test.js.map +0 -7
- package/lib/cjs/internal/app-binder/command/utils/solanaAppErrors.js +0 -2
- package/lib/cjs/internal/app-binder/command/utils/solanaAppErrors.js.map +0 -7
- package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js +0 -2
- package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js.map +0 -7
- package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js +0 -2
- package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js.map +0 -7
- package/lib/esm/internal/app-binder/command/utils/solanaAppError.test.js +0 -2
- package/lib/esm/internal/app-binder/command/utils/solanaAppError.test.js.map +0 -7
- package/lib/esm/internal/app-binder/command/utils/solanaAppErrors.js +0 -2
- package/lib/esm/internal/app-binder/command/utils/solanaAppErrors.js.map +0 -7
- package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js +0 -2
- package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js.map +0 -7
- package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js +0 -2
- package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js.map +0 -7
- package/lib/types/internal/app-binder/command/utils/solanaAppError.test.d.ts +0 -2
- package/lib/types/internal/app-binder/command/utils/solanaAppError.test.d.ts.map +0 -1
- package/lib/types/internal/app-binder/command/utils/solanaAppErrors.d.ts +0 -8
- package/lib/types/internal/app-binder/command/utils/solanaAppErrors.d.ts.map +0 -1
- package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.d.ts +0 -15
- package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.d.ts.map +0 -1
- package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.d.ts +0 -2
- package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.d.ts.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ledgerhq/device-signer-kit-solana",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
|
+
"private": false,
|
|
4
5
|
"license": "Apache-2.0",
|
|
5
6
|
"exports": {
|
|
6
7
|
".": {
|
|
@@ -18,40 +19,39 @@
|
|
|
18
19
|
"./lib"
|
|
19
20
|
],
|
|
20
21
|
"dependencies": {
|
|
22
|
+
"@ledgerhq/signer-utils": "^1.0.5",
|
|
21
23
|
"bs58": "^6.0.0",
|
|
22
|
-
"inversify": "
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"xstate": "^5.18.2",
|
|
27
|
-
"@ledgerhq/signer-utils": "1.0.2"
|
|
24
|
+
"inversify": "7.5.1",
|
|
25
|
+
"purify-ts": "2.1.0",
|
|
26
|
+
"reflect-metadata": "0.2.2",
|
|
27
|
+
"xstate": "5.19.2"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"rxjs": "^7.8.
|
|
31
|
-
"ts-node": "
|
|
32
|
-
"@ledgerhq/device-management-kit": "0.
|
|
33
|
-
"@ledgerhq/
|
|
34
|
-
"@ledgerhq/jest-config-dsdk": "1.0.1",
|
|
35
|
-
"@ledgerhq/prettier-config-dsdk": "0.0.2",
|
|
30
|
+
"rxjs": "^7.8.2",
|
|
31
|
+
"ts-node": "10.9.2",
|
|
32
|
+
"@ledgerhq/device-management-kit": "0.7.0",
|
|
33
|
+
"@ledgerhq/ldmk-tool": "0.0.1",
|
|
36
34
|
"@ledgerhq/eslint-config-dsdk": "0.0.2",
|
|
35
|
+
"@ledgerhq/prettier-config-dsdk": "0.0.2",
|
|
36
|
+
"@ledgerhq/vitest-config-dmk": "0.0.0",
|
|
37
37
|
"@ledgerhq/tsconfig-dsdk": "1.0.1"
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {
|
|
40
|
-
"@ledgerhq/device-management-kit": "0.
|
|
40
|
+
"@ledgerhq/device-management-kit": "0.7.0"
|
|
41
41
|
},
|
|
42
42
|
"scripts": {
|
|
43
43
|
"prebuild": "rimraf lib",
|
|
44
|
-
"build": "pnpm
|
|
44
|
+
"build": "pnpm ldmk-tool build --entryPoints src/index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
|
|
45
45
|
"dev": "concurrently \"pnpm watch:builds\" \"pnpm watch:types\"",
|
|
46
|
-
"watch:builds": "pnpm
|
|
46
|
+
"watch:builds": "pnpm ldmk-tool watch --entryPoints src/index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
|
|
47
47
|
"watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\"",
|
|
48
48
|
"lint": "eslint",
|
|
49
49
|
"lint:fix": "pnpm lint --fix",
|
|
50
50
|
"prettier": "prettier . --check",
|
|
51
51
|
"prettier:fix": "prettier . --write",
|
|
52
52
|
"typecheck": "tsc --noEmit",
|
|
53
|
-
"test": "
|
|
54
|
-
"test:watch": "
|
|
55
|
-
"test:coverage": "
|
|
53
|
+
"test": "vitest run",
|
|
54
|
+
"test:watch": "vitest",
|
|
55
|
+
"test:coverage": "vitest run --coverage"
|
|
56
56
|
}
|
|
57
57
|
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var c=require("@ledgerhq/device-management-kit"),t=require("./solanaAppErrors");describe("SolanaAppCommandError",()=>{it("should correctly instantiate with a message and error code",()=>{const e="Invalid data",r="6A80",o=new t.SolanaAppCommandError({message:e,errorCode:r});expect(o).toBeInstanceOf(t.SolanaAppCommandError),expect(o.message).toBe(e),expect(o.customErrorCode).toBe(r),expect(o._tag).toBe("SolanaAppCommandError")}),it("should correctly instantiate without an error code",()=>{const e="Some generic error",r=new t.SolanaAppCommandError({message:e,errorCode:void 0});expect(r).toBeInstanceOf(t.SolanaAppCommandError),expect(r.message).toBe(e),expect(r.customErrorCode).toBeUndefined(),expect(r._tag).toBe("SolanaAppCommandError")}),it("should handle default message if none is provided",()=>{const e=new t.SolanaAppCommandError({message:"An error occurred during device exchange.",errorCode:"6A80"});expect(e).toBeInstanceOf(t.SolanaAppCommandError),expect(e.message).toBe("An error occurred during device exchange."),expect(e.customErrorCode).toBe("6A80"),expect(e._tag).toBe("SolanaAppCommandError")}),it("should extend DeviceExchangeError",()=>{const e="Security status not satisfied",r="6982",o=new t.SolanaAppCommandError({message:e,errorCode:r});expect(o).toBeInstanceOf(c.DeviceExchangeError),expect(o).toBeInstanceOf(t.SolanaAppCommandError),expect(o._tag).toBe("SolanaAppCommandError"),expect(o.message).toBe(e),expect(o.customErrorCode).toBe(r)}),it("should allow custom properties to be checked",()=>{const e="Invalid parameter",r="6B00",o=new t.SolanaAppCommandError({message:e,errorCode:r});expect(o.customErrorCode).toBe("6B00"),expect(o.customErrorCode).not.toBe("6A80")})});
|
|
2
|
-
//# sourceMappingURL=solanaAppError.test.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../src/internal/app-binder/command/utils/solanaAppError.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { DeviceExchangeError } from \"@ledgerhq/device-management-kit\";\n\nimport { SolanaAppCommandError } from \"./solanaAppErrors\";\n\ndescribe(\"SolanaAppCommandError\", () => {\n it(\"should correctly instantiate with a message and error code\", () => {\n const message = \"Invalid data\";\n const errorCode = \"6A80\";\n\n const error = new SolanaAppCommandError({\n message,\n errorCode,\n });\n\n expect(error).toBeInstanceOf(SolanaAppCommandError);\n expect(error.message).toBe(message);\n expect(error.customErrorCode).toBe(errorCode);\n expect(error._tag).toBe(\"SolanaAppCommandError\");\n });\n\n it(\"should correctly instantiate without an error code\", () => {\n const message = \"Some generic error\";\n\n const error = new SolanaAppCommandError({\n message,\n errorCode: undefined,\n });\n\n expect(error).toBeInstanceOf(SolanaAppCommandError);\n expect(error.message).toBe(message);\n expect(error.customErrorCode).toBeUndefined();\n expect(error._tag).toBe(\"SolanaAppCommandError\");\n });\n\n it(\"should handle default message if none is provided\", () => {\n const error = new SolanaAppCommandError({\n message: \"An error occurred during device exchange.\",\n errorCode: \"6A80\",\n });\n\n expect(error).toBeInstanceOf(SolanaAppCommandError);\n expect(error.message).toBe(\"An error occurred during device exchange.\");\n expect(error.customErrorCode).toBe(\"6A80\");\n expect(error._tag).toBe(\"SolanaAppCommandError\");\n });\n\n it(\"should extend DeviceExchangeError\", () => {\n const message = \"Security status not satisfied\";\n const errorCode = \"6982\";\n\n const error = new SolanaAppCommandError({\n message,\n errorCode,\n });\n\n expect(error).toBeInstanceOf(DeviceExchangeError);\n expect(error).toBeInstanceOf(SolanaAppCommandError);\n expect(error._tag).toBe(\"SolanaAppCommandError\");\n expect(error.message).toBe(message);\n expect(error.customErrorCode).toBe(errorCode);\n });\n\n it(\"should allow custom properties to be checked\", () => {\n const message = \"Invalid parameter\";\n const errorCode = \"6B00\";\n\n const error = new SolanaAppCommandError({\n message,\n errorCode,\n });\n\n expect(error.customErrorCode).toBe(\"6B00\");\n expect(error.customErrorCode).not.toBe(\"6A80\");\n });\n});\n"],
|
|
5
|
-
"mappings": "aAAA,IAAAA,EAAoC,2CAEpCC,EAAsC,6BAEtC,SAAS,wBAAyB,IAAM,CACtC,GAAG,6DAA8D,IAAM,CACrE,MAAMC,EAAU,eACVC,EAAY,OAEZC,EAAQ,IAAI,wBAAsB,CACtC,QAAAF,EACA,UAAAC,CACF,CAAC,EAED,OAAOC,CAAK,EAAE,eAAe,uBAAqB,EAClD,OAAOA,EAAM,OAAO,EAAE,KAAKF,CAAO,EAClC,OAAOE,EAAM,eAAe,EAAE,KAAKD,CAAS,EAC5C,OAAOC,EAAM,IAAI,EAAE,KAAK,uBAAuB,CACjD,CAAC,EAED,GAAG,qDAAsD,IAAM,CAC7D,MAAMF,EAAU,qBAEVE,EAAQ,IAAI,wBAAsB,CACtC,QAAAF,EACA,UAAW,MACb,CAAC,EAED,OAAOE,CAAK,EAAE,eAAe,uBAAqB,EAClD,OAAOA,EAAM,OAAO,EAAE,KAAKF,CAAO,EAClC,OAAOE,EAAM,eAAe,EAAE,cAAc,EAC5C,OAAOA,EAAM,IAAI,EAAE,KAAK,uBAAuB,CACjD,CAAC,EAED,GAAG,oDAAqD,IAAM,CAC5D,MAAMA,EAAQ,IAAI,wBAAsB,CACtC,QAAS,4CACT,UAAW,MACb,CAAC,EAED,OAAOA,CAAK,EAAE,eAAe,uBAAqB,EAClD,OAAOA,EAAM,OAAO,EAAE,KAAK,2CAA2C,EACtE,OAAOA,EAAM,eAAe,EAAE,KAAK,MAAM,EACzC,OAAOA,EAAM,IAAI,EAAE,KAAK,uBAAuB,CACjD,CAAC,EAED,GAAG,oCAAqC,IAAM,CAC5C,MAAMF,EAAU,gCACVC,EAAY,OAEZC,EAAQ,IAAI,wBAAsB,CACtC,QAAAF,EACA,UAAAC,CACF,CAAC,EAED,OAAOC,CAAK,EAAE,eAAe,qBAAmB,EAChD,OAAOA,CAAK,EAAE,eAAe,uBAAqB,EAClD,OAAOA,EAAM,IAAI,EAAE,KAAK,uBAAuB,EAC/C,OAAOA,EAAM,OAAO,EAAE,KAAKF,CAAO,EAClC,OAAOE,EAAM,eAAe,EAAE,KAAKD,CAAS,CAC9C,CAAC,EAED,GAAG,+CAAgD,IAAM,CACvD,MAAMD,EAAU,oBACVC,EAAY,OAEZC,EAAQ,IAAI,wBAAsB,CACtC,QAAAF,EACA,UAAAC,CACF,CAAC,EAED,OAAOC,EAAM,eAAe,EAAE,KAAK,MAAM,EACzC,OAAOA,EAAM,eAAe,EAAE,IAAI,KAAK,MAAM,CAC/C,CAAC,CACH,CAAC",
|
|
6
|
-
"names": ["import_device_management_kit", "import_solanaAppErrors", "message", "errorCode", "error"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var s=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var t=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var c=(e,r)=>{for(var o in r)s(e,o,{get:r[o],enumerable:!0})},i=(e,r,o,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of t(r))!p.call(e,a)&&a!==o&&s(e,a,{get:()=>r[a],enumerable:!(n=d(r,a))||n.enumerable});return e};var E=e=>i(s({},"__esModule",{value:!0}),e);var l={};c(l,{SolanaAppCommandError:()=>A,solanaAppErrors:()=>g});module.exports=E(l);var m=require("@ledgerhq/device-management-kit");const g={6700:{message:"Incorrect length"},6982:{message:"Security status not satisfied (Canceled by user)"},"6A80":{message:"Invalid data"},"6A81":{message:"Invalid off-chain message header"},"6A82":{message:"Invalid off-chain message format"},"6B00":{message:"Incorrect parameter P1 or P2"}};class A extends m.DeviceExchangeError{constructor({message:r,errorCode:o}){super({tag:"SolanaAppCommandError",message:r||"An error occurred during device exchange.",errorCode:void 0}),this.customErrorCode=o||void 0}customErrorCode}0&&(module.exports={SolanaAppCommandError,solanaAppErrors});
|
|
2
|
-
//# sourceMappingURL=solanaAppErrors.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../src/internal/app-binder/command/utils/solanaAppErrors.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type CommandErrorArgs,\n type CommandErrors,\n DeviceExchangeError,\n type DmkError,\n} from \"@ledgerhq/device-management-kit\";\n\nexport type SolanaAppErrorCodes =\n | \"6700\"\n | \"6982\"\n | \"6A80\"\n | \"6A81\"\n | \"6A82\"\n | \"6B00\";\n\nexport const solanaAppErrors: CommandErrors<SolanaAppErrorCodes> = {\n \"6700\": { message: \"Incorrect length\" },\n \"6982\": { message: \"Security status not satisfied (Canceled by user)\" },\n \"6A80\": { message: \"Invalid data\" },\n \"6A81\": { message: \"Invalid off-chain message header\" },\n \"6A82\": { message: \"Invalid off-chain message format\" },\n \"6B00\": { message: \"Incorrect parameter P1 or P2\" },\n};\n\nexport class SolanaAppCommandError\n extends DeviceExchangeError<void>\n implements DmkError\n{\n constructor({\n message,\n errorCode,\n }: CommandErrorArgs<SolanaAppErrorCodes | void>) {\n super({\n tag: \"SolanaAppCommandError\",\n message: message || \"An error occurred during device exchange.\",\n errorCode: undefined,\n });\n this.customErrorCode = errorCode || undefined;\n }\n customErrorCode?: SolanaAppErrorCodes;\n}\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,2BAAAE,EAAA,oBAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAKO,2CAUA,MAAMF,EAAsD,CACjE,KAAQ,CAAE,QAAS,kBAAmB,EACtC,KAAQ,CAAE,QAAS,kDAAmD,EACtE,OAAQ,CAAE,QAAS,cAAe,EAClC,OAAQ,CAAE,QAAS,kCAAmC,EACtD,OAAQ,CAAE,QAAS,kCAAmC,EACtD,OAAQ,CAAE,QAAS,8BAA+B,CACpD,EAEO,MAAMD,UACH,qBAEV,CACE,YAAY,CACV,QAAAI,EACA,UAAAC,CACF,EAAiD,CAC/C,MAAM,CACJ,IAAK,wBACL,QAASD,GAAW,4CACpB,UAAW,MACb,CAAC,EACD,KAAK,gBAAkBC,GAAa,MACtC,CACA,eACF",
|
|
6
|
-
"names": ["solanaAppErrors_exports", "__export", "SolanaAppCommandError", "solanaAppErrors", "__toCommonJS", "import_device_management_kit", "message", "errorCode"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var o=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var M=(s,n)=>{for(var i in n)o(s,i,{get:n[i],enumerable:!0})},d=(s,n,i,e)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of c(n))!l.call(s,t)&&t!==i&&o(s,t,{get:()=>n[t],enumerable:!(e=S(n,t))||e.enumerable});return s};var m=s=>d(o({},"__esModule",{value:!0}),s);var D={};M(D,{SignMessageDeviceAction:()=>A});module.exports=m(D);var r=require("@ledgerhq/device-management-kit"),g=require("purify-ts"),a=require("xstate"),u=require("../../../app-binder/task/SendSignMessageTask");class A extends r.XStateDeviceAction{makeStateMachine(n){const{signMessage:i}=this.extractDependencies(n);return(0,a.setup)({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new r.OpenAppDeviceAction({input:{appName:"Solana"}}).makeStateMachine(n),signMessage:(0,a.fromPromise)(i)},guards:{noInternalError:({context:e})=>e._internalState.error===null,messageSizeWithinLimit:({context:e})=>5+new TextEncoder().encode(e.input.message).length<=255},actions:{assignErrorFromEvent:(0,a.assign)({_internalState:({context:e,event:t})=>({...e._internalState,error:t.data})}),assignErrorMessageTooBig:(0,a.assign)({_internalState:({context:e})=>({...e._internalState,error:{_tag:"InvalidMessageSizeError",errorCode:"MessageTooLarge",message:"The APDU command exceeds the maximum allowable size (255 bytes)"}})})}}).createMachine({id:"SignMessageDeviceAction",initial:"OpenAppDeviceAction",context:({input:e})=>({input:e,intermediateValue:{requiredUserInteraction:r.UserInteractionRequired.None},_internalState:{error:null,signature:null}}),states:{OpenAppDeviceAction:{exit:(0,a.assign)({intermediateValue:{requiredUserInteraction:r.UserInteractionRequired.None}}),invoke:{id:"openAppStateMachine",input:{appName:"Solana"},src:"openAppStateMachine",onSnapshot:{actions:(0,a.assign)({intermediateValue:({event:e})=>e.snapshot.context.intermediateValue})},onDone:{actions:(0,a.assign)({_internalState:({event:e,context:t})=>e.output.caseOf({Right:()=>t._internalState,Left:p=>({...t._internalState,error:p})})}),target:"CheckOpenAppDeviceActionResult"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},CheckOpenAppDeviceActionResult:{always:[{target:"CheckMessageSize",guard:"noInternalError"},"Error"]},CheckMessageSize:{always:[{target:"SignMessage",guard:"messageSizeWithinLimit"},{target:"Error",actions:"assignErrorMessageTooBig"}]},SignMessage:{entry:(0,a.assign)({intermediateValue:{requiredUserInteraction:r.UserInteractionRequired.SignPersonalMessage}}),exit:(0,a.assign)({intermediateValue:{requiredUserInteraction:r.UserInteractionRequired.None}}),invoke:{id:"signMessage",src:"signMessage",input:({context:e})=>({derivationPath:e.input.derivationPath,sendingData:new TextEncoder().encode(e.input.message)}),onDone:{target:"SignMessageResultCheck",actions:[(0,a.assign)({_internalState:({event:e,context:t})=>(0,r.isSuccessCommandResult)(e.output)?{...t._internalState,signature:e.output.data}:{...t._internalState,error:e.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},SignMessageResultCheck:{always:[{guard:"noInternalError",target:"Success"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:e})=>e._internalState.signature?(0,g.Right)(e._internalState.signature):(0,g.Left)(e._internalState.error||new r.UnknownDAError("No error in final state"))})}extractDependencies(n){return{signMessage:async e=>await new u.SendSignMessageTask(n,e.input).run()}}}0&&(module.exports={SignMessageDeviceAction});
|
|
2
|
-
//# sourceMappingURL=SignMessageDeviceAction.js.map
|
package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../src/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type CommandResult,\n //CommandResultStatus,\n type DeviceActionStateMachine,\n type InternalApi,\n isSuccessCommandResult,\n OpenAppDeviceAction,\n type StateMachineTypes,\n UnknownDAError,\n UserInteractionRequired,\n XStateDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport {\n type SignMessageDAError,\n type SignMessageDAInput,\n type SignMessageDAIntermediateValue,\n type SignMessageDAInternalState,\n type SignMessageDAOutput,\n} from \"@api/app-binder/SignMessageDeviceActionTypes\";\nimport { type Signature } from \"@api/model/Signature\";\nimport {\n SendSignMessageTask,\n type SendSignMessageTaskArgs,\n} from \"@internal/app-binder/task/SendSignMessageTask\";\n\nexport type MachineDependencies = {\n readonly signMessage: (arg0: {\n input: SendSignMessageTaskArgs;\n }) => Promise<CommandResult<Signature>>;\n};\n\nexport type ExtractMachineDependencies = (\n internalApi: InternalApi,\n) => MachineDependencies;\n\nexport class SignMessageDeviceAction extends XStateDeviceAction<\n SignMessageDAOutput,\n SignMessageDAInput,\n SignMessageDAError,\n SignMessageDAIntermediateValue,\n SignMessageDAInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n SignMessageDAOutput,\n SignMessageDAInput,\n SignMessageDAError,\n SignMessageDAIntermediateValue,\n SignMessageDAInternalState\n > {\n type types = StateMachineTypes<\n SignMessageDAOutput,\n SignMessageDAInput,\n SignMessageDAError,\n SignMessageDAIntermediateValue,\n SignMessageDAInternalState\n >;\n\n const { signMessage } = 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 signMessage: fromPromise(signMessage),\n },\n guards: {\n noInternalError: ({ context }) => context._internalState.error === null,\n messageSizeWithinLimit: ({ context }) => {\n const messageSize = new TextEncoder().encode(\n context.input.message,\n ).length;\n const apduHeaderSize = 5;\n\n return apduHeaderSize + messageSize <= 255;\n },\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: ({ context, event }) => ({\n ...context._internalState,\n error: event[\"data\"] as SignMessageDAError,\n }),\n }),\n assignErrorMessageTooBig: assign({\n _internalState: ({ context }) => ({\n ...context._internalState,\n error: {\n _tag: \"InvalidMessageSizeError\",\n errorCode: \"MessageTooLarge\",\n message:\n \"The APDU command exceeds the maximum allowable size (255 bytes)\",\n } as SignMessageDAError,\n }),\n }),\n },\n }).createMachine({\n id: \"SignMessageDeviceAction\",\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: ({ event }) =>\n event.snapshot.context.intermediateValue,\n }),\n },\n onDone: {\n actions: assign({\n _internalState: ({ event, context }) => {\n return event.output.caseOf<SignMessageDAInternalState>({\n Right: () => context._internalState,\n Left: (error) => ({\n ...context._internalState,\n error,\n }),\n });\n },\n }),\n target: \"CheckOpenAppDeviceActionResult\",\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n CheckOpenAppDeviceActionResult: {\n always: [\n {\n target: \"CheckMessageSize\",\n guard: \"noInternalError\",\n },\n \"Error\",\n ],\n },\n CheckMessageSize: {\n always: [\n {\n target: \"SignMessage\",\n guard: \"messageSizeWithinLimit\",\n },\n {\n target: \"Error\",\n actions: \"assignErrorMessageTooBig\",\n },\n ],\n },\n SignMessage: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction:\n UserInteractionRequired.SignPersonalMessage,\n },\n }),\n exit: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n }),\n invoke: {\n id: \"signMessage\",\n src: \"signMessage\",\n input: ({ context }) => ({\n derivationPath: context.input.derivationPath,\n sendingData: new TextEncoder().encode(context.input.message),\n }),\n onDone: {\n target: \"SignMessageResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n signature: event.output.data,\n };\n }\n return {\n ...context._internalState,\n error: event.output.error,\n };\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n SignMessageResultCheck: {\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 in final state\"),\n ),\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n const signMessage = async (arg0: { input: SendSignMessageTaskArgs }) => {\n const result = await new SendSignMessageTask(\n internalApi,\n arg0.input,\n ).run();\n return result;\n };\n\n return {\n signMessage,\n };\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["SignMessageDeviceAction_exports", "__export", "SignMessageDeviceAction", "__toCommonJS", "import_device_management_kit", "import_purify_ts", "import_xstate", "import_SendSignMessageTask", "internalApi", "signMessage", "context", "event", "input", "error", "arg0"]
|
|
7
|
-
}
|
package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("@ledgerhq/device-management-kit"),m=require("@ledgerhq/device-management-kit"),o=require("../../../app-binder/device-action/__test-utils__/makeInternalApi"),c=require("../../../app-binder/device-action/__test-utils__/setupOpenAppDAMock"),d=require("../../../app-binder/device-action/__test-utils__/testDeviceActionStates"),l=require("../../../app-binder/device-action/SignMessage/SignMessageDeviceAction");jest.mock("@ledgerhq/device-management-kit",()=>({...jest.requireActual("@ledgerhq/device-management-kit"),OpenAppDeviceAction:jest.fn(()=>({makeStateMachine:jest.fn()}))}));describe("SignMessageDeviceAction",()=>{const a=jest.fn();function p(){return{signMessage:a}}beforeEach(()=>{jest.resetAllMocks()}),describe("Success case",()=>{it("should call external dependencies with the correct parameters",t=>{(0,c.setupOpenAppDAMock)();const n=new l.SignMessageDeviceAction({input:{derivationPath:"44'/501'/0'/0'",message:"Hello world"}});jest.spyOn(n,"extractDependencies").mockImplementation(()=>p());const i=new Uint8Array([]);a.mockResolvedValueOnce((0,e.CommandResultFactory)({data:i}));const s=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignPersonalMessage},status:e.DeviceActionStatus.Pending},{output:i,status:e.DeviceActionStatus.Completed}],{observable:r}=(0,d.testDeviceActionStates)(n,s,(0,o.makeDeviceActionInternalApiMock)());r.subscribe({complete:()=>{try{expect(a).toHaveBeenCalledWith(expect.objectContaining({input:expect.objectContaining({derivationPath:"44'/501'/0'/0'",sendingData:new TextEncoder().encode("Hello world")})})),t()}catch(u){t(u)}},error:u=>{t(u)}})})}),describe("error cases",()=>{it("Error if the open app fails",t=>{(0,c.setupOpenAppDAMock)(new e.UnknownDeviceExchangeError("Mocked error"));const n=[{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp}},{status:e.DeviceActionStatus.Error,error:new e.UnknownDeviceExchangeError("Mocked error")}],i=new l.SignMessageDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",message:"Hello world"}});jest.spyOn(i,"extractDependencies").mockImplementation(()=>p());const{observable:s}=(0,d.testDeviceActionStates)(i,n,(0,o.makeDeviceActionInternalApiMock)());s.subscribe({complete:()=>{try{expect(a).not.toHaveBeenCalled(),t()}catch(r){t(r)}},error:r=>{t(r)}})}),it("Error if the signMessage fails",t=>{(0,c.setupOpenAppDAMock)();const n=new l.SignMessageDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",message:"Hello world"}});jest.spyOn(n,"extractDependencies").mockImplementation(()=>p()),a.mockResolvedValueOnce((0,e.CommandResultFactory)({error:new e.UnknownDeviceExchangeError("Mocked error")}));const i=[{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignPersonalMessage}},{status:e.DeviceActionStatus.Error,error:new e.UnknownDeviceExchangeError("Mocked error")}],{observable:s}=(0,d.testDeviceActionStates)(n,i,(0,o.makeDeviceActionInternalApiMock)());s.subscribe({complete:()=>{try{expect(a).toHaveBeenCalled(),t()}catch(r){t(r)}},error:r=>{t(r)}})}),it("Return a Left if the final state has no signature",t=>{(0,c.setupOpenAppDAMock)();const n=new l.SignMessageDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",message:"Hello world"}});jest.spyOn(n,"extractDependencies").mockImplementation(()=>p()),a.mockResolvedValueOnce((0,e.CommandResultFactory)({data:void 0}));const i=[{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignPersonalMessage}},{status:e.DeviceActionStatus.Error,error:new m.UnknownDAError("No error in final state")}],{observable:s}=(0,d.testDeviceActionStates)(n,i,(0,o.makeDeviceActionInternalApiMock)());s.subscribe({complete:()=>{try{expect(a).toHaveBeenCalledWith(expect.objectContaining({input:expect.objectContaining({derivationPath:"44'/60'/0'/0/0",sendingData:new TextEncoder().encode("Hello world")})})),t()}catch(r){t(r)}},error:r=>{t(r)}})})})});
|
|
2
|
-
//# sourceMappingURL=SignMessageDeviceAction.test.js.map
|
package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
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": "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",
|
|
6
|
-
"names": ["import_device_management_kit", "import_makeInternalApi", "import_setupOpenAppDAMock", "import_testDeviceActionStates", "import_SignMessageDeviceAction", "signMessageMock", "extractDependenciesMock", "done", "deviceAction", "signatureData", "expectedStates", "observable", "error", "err"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{DeviceExchangeError as c}from"@ledgerhq/device-management-kit";import{SolanaAppCommandError as t}from"./solanaAppErrors";describe("SolanaAppCommandError",()=>{it("should correctly instantiate with a message and error code",()=>{const e="Invalid data",r="6A80",o=new t({message:e,errorCode:r});expect(o).toBeInstanceOf(t),expect(o.message).toBe(e),expect(o.customErrorCode).toBe(r),expect(o._tag).toBe("SolanaAppCommandError")}),it("should correctly instantiate without an error code",()=>{const e="Some generic error",r=new t({message:e,errorCode:void 0});expect(r).toBeInstanceOf(t),expect(r.message).toBe(e),expect(r.customErrorCode).toBeUndefined(),expect(r._tag).toBe("SolanaAppCommandError")}),it("should handle default message if none is provided",()=>{const e=new t({message:"An error occurred during device exchange.",errorCode:"6A80"});expect(e).toBeInstanceOf(t),expect(e.message).toBe("An error occurred during device exchange."),expect(e.customErrorCode).toBe("6A80"),expect(e._tag).toBe("SolanaAppCommandError")}),it("should extend DeviceExchangeError",()=>{const e="Security status not satisfied",r="6982",o=new t({message:e,errorCode:r});expect(o).toBeInstanceOf(c),expect(o).toBeInstanceOf(t),expect(o._tag).toBe("SolanaAppCommandError"),expect(o.message).toBe(e),expect(o.customErrorCode).toBe(r)}),it("should allow custom properties to be checked",()=>{const e="Invalid parameter",r="6B00",o=new t({message:e,errorCode:r});expect(o.customErrorCode).toBe("6B00"),expect(o.customErrorCode).not.toBe("6A80")})});
|
|
2
|
-
//# sourceMappingURL=solanaAppError.test.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../src/internal/app-binder/command/utils/solanaAppError.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { DeviceExchangeError } from \"@ledgerhq/device-management-kit\";\n\nimport { SolanaAppCommandError } from \"./solanaAppErrors\";\n\ndescribe(\"SolanaAppCommandError\", () => {\n it(\"should correctly instantiate with a message and error code\", () => {\n const message = \"Invalid data\";\n const errorCode = \"6A80\";\n\n const error = new SolanaAppCommandError({\n message,\n errorCode,\n });\n\n expect(error).toBeInstanceOf(SolanaAppCommandError);\n expect(error.message).toBe(message);\n expect(error.customErrorCode).toBe(errorCode);\n expect(error._tag).toBe(\"SolanaAppCommandError\");\n });\n\n it(\"should correctly instantiate without an error code\", () => {\n const message = \"Some generic error\";\n\n const error = new SolanaAppCommandError({\n message,\n errorCode: undefined,\n });\n\n expect(error).toBeInstanceOf(SolanaAppCommandError);\n expect(error.message).toBe(message);\n expect(error.customErrorCode).toBeUndefined();\n expect(error._tag).toBe(\"SolanaAppCommandError\");\n });\n\n it(\"should handle default message if none is provided\", () => {\n const error = new SolanaAppCommandError({\n message: \"An error occurred during device exchange.\",\n errorCode: \"6A80\",\n });\n\n expect(error).toBeInstanceOf(SolanaAppCommandError);\n expect(error.message).toBe(\"An error occurred during device exchange.\");\n expect(error.customErrorCode).toBe(\"6A80\");\n expect(error._tag).toBe(\"SolanaAppCommandError\");\n });\n\n it(\"should extend DeviceExchangeError\", () => {\n const message = \"Security status not satisfied\";\n const errorCode = \"6982\";\n\n const error = new SolanaAppCommandError({\n message,\n errorCode,\n });\n\n expect(error).toBeInstanceOf(DeviceExchangeError);\n expect(error).toBeInstanceOf(SolanaAppCommandError);\n expect(error._tag).toBe(\"SolanaAppCommandError\");\n expect(error.message).toBe(message);\n expect(error.customErrorCode).toBe(errorCode);\n });\n\n it(\"should allow custom properties to be checked\", () => {\n const message = \"Invalid parameter\";\n const errorCode = \"6B00\";\n\n const error = new SolanaAppCommandError({\n message,\n errorCode,\n });\n\n expect(error.customErrorCode).toBe(\"6B00\");\n expect(error.customErrorCode).not.toBe(\"6A80\");\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,OAAS,uBAAAA,MAA2B,kCAEpC,OAAS,yBAAAC,MAA6B,oBAEtC,SAAS,wBAAyB,IAAM,CACtC,GAAG,6DAA8D,IAAM,CACrE,MAAMC,EAAU,eACVC,EAAY,OAEZC,EAAQ,IAAIH,EAAsB,CACtC,QAAAC,EACA,UAAAC,CACF,CAAC,EAED,OAAOC,CAAK,EAAE,eAAeH,CAAqB,EAClD,OAAOG,EAAM,OAAO,EAAE,KAAKF,CAAO,EAClC,OAAOE,EAAM,eAAe,EAAE,KAAKD,CAAS,EAC5C,OAAOC,EAAM,IAAI,EAAE,KAAK,uBAAuB,CACjD,CAAC,EAED,GAAG,qDAAsD,IAAM,CAC7D,MAAMF,EAAU,qBAEVE,EAAQ,IAAIH,EAAsB,CACtC,QAAAC,EACA,UAAW,MACb,CAAC,EAED,OAAOE,CAAK,EAAE,eAAeH,CAAqB,EAClD,OAAOG,EAAM,OAAO,EAAE,KAAKF,CAAO,EAClC,OAAOE,EAAM,eAAe,EAAE,cAAc,EAC5C,OAAOA,EAAM,IAAI,EAAE,KAAK,uBAAuB,CACjD,CAAC,EAED,GAAG,oDAAqD,IAAM,CAC5D,MAAMA,EAAQ,IAAIH,EAAsB,CACtC,QAAS,4CACT,UAAW,MACb,CAAC,EAED,OAAOG,CAAK,EAAE,eAAeH,CAAqB,EAClD,OAAOG,EAAM,OAAO,EAAE,KAAK,2CAA2C,EACtE,OAAOA,EAAM,eAAe,EAAE,KAAK,MAAM,EACzC,OAAOA,EAAM,IAAI,EAAE,KAAK,uBAAuB,CACjD,CAAC,EAED,GAAG,oCAAqC,IAAM,CAC5C,MAAMF,EAAU,gCACVC,EAAY,OAEZC,EAAQ,IAAIH,EAAsB,CACtC,QAAAC,EACA,UAAAC,CACF,CAAC,EAED,OAAOC,CAAK,EAAE,eAAeJ,CAAmB,EAChD,OAAOI,CAAK,EAAE,eAAeH,CAAqB,EAClD,OAAOG,EAAM,IAAI,EAAE,KAAK,uBAAuB,EAC/C,OAAOA,EAAM,OAAO,EAAE,KAAKF,CAAO,EAClC,OAAOE,EAAM,eAAe,EAAE,KAAKD,CAAS,CAC9C,CAAC,EAED,GAAG,+CAAgD,IAAM,CACvD,MAAMD,EAAU,oBACVC,EAAY,OAEZC,EAAQ,IAAIH,EAAsB,CACtC,QAAAC,EACA,UAAAC,CACF,CAAC,EAED,OAAOC,EAAM,eAAe,EAAE,KAAK,MAAM,EACzC,OAAOA,EAAM,eAAe,EAAE,IAAI,KAAK,MAAM,CAC/C,CAAC,CACH,CAAC",
|
|
6
|
-
"names": ["DeviceExchangeError", "SolanaAppCommandError", "message", "errorCode", "error"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{DeviceExchangeError as o}from"@ledgerhq/device-management-kit";const n={6700:{message:"Incorrect length"},6982:{message:"Security status not satisfied (Canceled by user)"},"6A80":{message:"Invalid data"},"6A81":{message:"Invalid off-chain message header"},"6A82":{message:"Invalid off-chain message format"},"6B00":{message:"Incorrect parameter P1 or P2"}};class m extends o{constructor({message:r,errorCode:e}){super({tag:"SolanaAppCommandError",message:r||"An error occurred during device exchange.",errorCode:void 0}),this.customErrorCode=e||void 0}customErrorCode}export{m as SolanaAppCommandError,n as solanaAppErrors};
|
|
2
|
-
//# sourceMappingURL=solanaAppErrors.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../src/internal/app-binder/command/utils/solanaAppErrors.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type CommandErrorArgs,\n type CommandErrors,\n DeviceExchangeError,\n type DmkError,\n} from \"@ledgerhq/device-management-kit\";\n\nexport type SolanaAppErrorCodes =\n | \"6700\"\n | \"6982\"\n | \"6A80\"\n | \"6A81\"\n | \"6A82\"\n | \"6B00\";\n\nexport const solanaAppErrors: CommandErrors<SolanaAppErrorCodes> = {\n \"6700\": { message: \"Incorrect length\" },\n \"6982\": { message: \"Security status not satisfied (Canceled by user)\" },\n \"6A80\": { message: \"Invalid data\" },\n \"6A81\": { message: \"Invalid off-chain message header\" },\n \"6A82\": { message: \"Invalid off-chain message format\" },\n \"6B00\": { message: \"Incorrect parameter P1 or P2\" },\n};\n\nexport class SolanaAppCommandError\n extends DeviceExchangeError<void>\n implements DmkError\n{\n constructor({\n message,\n errorCode,\n }: CommandErrorArgs<SolanaAppErrorCodes | void>) {\n super({\n tag: \"SolanaAppCommandError\",\n message: message || \"An error occurred during device exchange.\",\n errorCode: undefined,\n });\n this.customErrorCode = errorCode || undefined;\n }\n customErrorCode?: SolanaAppErrorCodes;\n}\n"],
|
|
5
|
-
"mappings": "AAAA,OAGE,uBAAAA,MAEK,kCAUA,MAAMC,EAAsD,CACjE,KAAQ,CAAE,QAAS,kBAAmB,EACtC,KAAQ,CAAE,QAAS,kDAAmD,EACtE,OAAQ,CAAE,QAAS,cAAe,EAClC,OAAQ,CAAE,QAAS,kCAAmC,EACtD,OAAQ,CAAE,QAAS,kCAAmC,EACtD,OAAQ,CAAE,QAAS,8BAA+B,CACpD,EAEO,MAAMC,UACHF,CAEV,CACE,YAAY,CACV,QAAAG,EACA,UAAAC,CACF,EAAiD,CAC/C,MAAM,CACJ,IAAK,wBACL,QAASD,GAAW,4CACpB,UAAW,MACb,CAAC,EACD,KAAK,gBAAkBC,GAAa,MACtC,CACA,eACF",
|
|
6
|
-
"names": ["DeviceExchangeError", "solanaAppErrors", "SolanaAppCommandError", "message", "errorCode"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{isSuccessCommandResult as g,OpenAppDeviceAction as o,UnknownDAError as p,UserInteractionRequired as r,XStateDeviceAction as u}from"@ledgerhq/device-management-kit";import{Left as S,Right as c}from"purify-ts";import{assign as n,fromPromise as l,setup as M}from"xstate";import{SendSignMessageTask as d}from"../../../app-binder/task/SendSignMessageTask";class E extends u{makeStateMachine(a){const{signMessage:s}=this.extractDependencies(a);return M({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new o({input:{appName:"Solana"}}).makeStateMachine(a),signMessage:l(s)},guards:{noInternalError:({context:e})=>e._internalState.error===null,messageSizeWithinLimit:({context:e})=>5+new TextEncoder().encode(e.input.message).length<=255},actions:{assignErrorFromEvent:n({_internalState:({context:e,event:t})=>({...e._internalState,error:t.data})}),assignErrorMessageTooBig:n({_internalState:({context:e})=>({...e._internalState,error:{_tag:"InvalidMessageSizeError",errorCode:"MessageTooLarge",message:"The APDU command exceeds the maximum allowable size (255 bytes)"}})})}}).createMachine({id:"SignMessageDeviceAction",initial:"OpenAppDeviceAction",context:({input:e})=>({input:e,intermediateValue:{requiredUserInteraction:r.None},_internalState:{error:null,signature:null}}),states:{OpenAppDeviceAction:{exit:n({intermediateValue:{requiredUserInteraction:r.None}}),invoke:{id:"openAppStateMachine",input:{appName:"Solana"},src:"openAppStateMachine",onSnapshot:{actions:n({intermediateValue:({event:e})=>e.snapshot.context.intermediateValue})},onDone:{actions:n({_internalState:({event:e,context:t})=>e.output.caseOf({Right:()=>t._internalState,Left:i=>({...t._internalState,error:i})})}),target:"CheckOpenAppDeviceActionResult"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},CheckOpenAppDeviceActionResult:{always:[{target:"CheckMessageSize",guard:"noInternalError"},"Error"]},CheckMessageSize:{always:[{target:"SignMessage",guard:"messageSizeWithinLimit"},{target:"Error",actions:"assignErrorMessageTooBig"}]},SignMessage:{entry:n({intermediateValue:{requiredUserInteraction:r.SignPersonalMessage}}),exit:n({intermediateValue:{requiredUserInteraction:r.None}}),invoke:{id:"signMessage",src:"signMessage",input:({context:e})=>({derivationPath:e.input.derivationPath,sendingData:new TextEncoder().encode(e.input.message)}),onDone:{target:"SignMessageResultCheck",actions:[n({_internalState:({event:e,context:t})=>g(e.output)?{...t._internalState,signature:e.output.data}:{...t._internalState,error:e.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},SignMessageResultCheck:{always:[{guard:"noInternalError",target:"Success"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:e})=>e._internalState.signature?c(e._internalState.signature):S(e._internalState.error||new p("No error in final state"))})}extractDependencies(a){return{signMessage:async e=>await new d(a,e.input).run()}}}export{E as SignMessageDeviceAction};
|
|
2
|
-
//# sourceMappingURL=SignMessageDeviceAction.js.map
|
package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../src/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type CommandResult,\n //CommandResultStatus,\n type DeviceActionStateMachine,\n type InternalApi,\n isSuccessCommandResult,\n OpenAppDeviceAction,\n type StateMachineTypes,\n UnknownDAError,\n UserInteractionRequired,\n XStateDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport {\n type SignMessageDAError,\n type SignMessageDAInput,\n type SignMessageDAIntermediateValue,\n type SignMessageDAInternalState,\n type SignMessageDAOutput,\n} from \"@api/app-binder/SignMessageDeviceActionTypes\";\nimport { type Signature } from \"@api/model/Signature\";\nimport {\n SendSignMessageTask,\n type SendSignMessageTaskArgs,\n} from \"@internal/app-binder/task/SendSignMessageTask\";\n\nexport type MachineDependencies = {\n readonly signMessage: (arg0: {\n input: SendSignMessageTaskArgs;\n }) => Promise<CommandResult<Signature>>;\n};\n\nexport type ExtractMachineDependencies = (\n internalApi: InternalApi,\n) => MachineDependencies;\n\nexport class SignMessageDeviceAction extends XStateDeviceAction<\n SignMessageDAOutput,\n SignMessageDAInput,\n SignMessageDAError,\n SignMessageDAIntermediateValue,\n SignMessageDAInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n SignMessageDAOutput,\n SignMessageDAInput,\n SignMessageDAError,\n SignMessageDAIntermediateValue,\n SignMessageDAInternalState\n > {\n type types = StateMachineTypes<\n SignMessageDAOutput,\n SignMessageDAInput,\n SignMessageDAError,\n SignMessageDAIntermediateValue,\n SignMessageDAInternalState\n >;\n\n const { signMessage } = 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 signMessage: fromPromise(signMessage),\n },\n guards: {\n noInternalError: ({ context }) => context._internalState.error === null,\n messageSizeWithinLimit: ({ context }) => {\n const messageSize = new TextEncoder().encode(\n context.input.message,\n ).length;\n const apduHeaderSize = 5;\n\n return apduHeaderSize + messageSize <= 255;\n },\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: ({ context, event }) => ({\n ...context._internalState,\n error: event[\"data\"] as SignMessageDAError,\n }),\n }),\n assignErrorMessageTooBig: assign({\n _internalState: ({ context }) => ({\n ...context._internalState,\n error: {\n _tag: \"InvalidMessageSizeError\",\n errorCode: \"MessageTooLarge\",\n message:\n \"The APDU command exceeds the maximum allowable size (255 bytes)\",\n } as SignMessageDAError,\n }),\n }),\n },\n }).createMachine({\n id: \"SignMessageDeviceAction\",\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: ({ event }) =>\n event.snapshot.context.intermediateValue,\n }),\n },\n onDone: {\n actions: assign({\n _internalState: ({ event, context }) => {\n return event.output.caseOf<SignMessageDAInternalState>({\n Right: () => context._internalState,\n Left: (error) => ({\n ...context._internalState,\n error,\n }),\n });\n },\n }),\n target: \"CheckOpenAppDeviceActionResult\",\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n CheckOpenAppDeviceActionResult: {\n always: [\n {\n target: \"CheckMessageSize\",\n guard: \"noInternalError\",\n },\n \"Error\",\n ],\n },\n CheckMessageSize: {\n always: [\n {\n target: \"SignMessage\",\n guard: \"messageSizeWithinLimit\",\n },\n {\n target: \"Error\",\n actions: \"assignErrorMessageTooBig\",\n },\n ],\n },\n SignMessage: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction:\n UserInteractionRequired.SignPersonalMessage,\n },\n }),\n exit: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n }),\n invoke: {\n id: \"signMessage\",\n src: \"signMessage\",\n input: ({ context }) => ({\n derivationPath: context.input.derivationPath,\n sendingData: new TextEncoder().encode(context.input.message),\n }),\n onDone: {\n target: \"SignMessageResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n signature: event.output.data,\n };\n }\n return {\n ...context._internalState,\n error: event.output.error,\n };\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n SignMessageResultCheck: {\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 in final state\"),\n ),\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n const signMessage = async (arg0: { input: SendSignMessageTaskArgs }) => {\n const result = await new SendSignMessageTask(\n internalApi,\n arg0.input,\n ).run();\n return result;\n };\n\n return {\n signMessage,\n };\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["isSuccessCommandResult", "OpenAppDeviceAction", "UnknownDAError", "UserInteractionRequired", "XStateDeviceAction", "Left", "Right", "assign", "fromPromise", "setup", "SendSignMessageTask", "SignMessageDeviceAction", "internalApi", "signMessage", "context", "event", "input", "error", "arg0"]
|
|
7
|
-
}
|
package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{CommandResultFactory as A,DeviceActionStatus as t,UnknownDeviceExchangeError as d,UserInteractionRequired as n}from"@ledgerhq/device-management-kit";import{UnknownDAError as v}from"@ledgerhq/device-management-kit";import{makeDeviceActionInternalApiMock as l}from"../../../app-binder/device-action/__test-utils__/makeInternalApi";import{setupOpenAppDAMock as p}from"../../../app-binder/device-action/__test-utils__/setupOpenAppDAMock";import{testDeviceActionStates as u}from"../../../app-binder/device-action/__test-utils__/testDeviceActionStates";import{SignMessageDeviceAction as m}from"../../../app-binder/device-action/SignMessage/SignMessageDeviceAction";jest.mock("@ledgerhq/device-management-kit",()=>({...jest.requireActual("@ledgerhq/device-management-kit"),OpenAppDeviceAction:jest.fn(()=>({makeStateMachine:jest.fn()}))}));describe("SignMessageDeviceAction",()=>{const s=jest.fn();function c(){return{signMessage:s}}beforeEach(()=>{jest.resetAllMocks()}),describe("Success case",()=>{it("should call external dependencies with the correct parameters",e=>{p();const i=new m({input:{derivationPath:"44'/501'/0'/0'",message:"Hello world"}});jest.spyOn(i,"extractDependencies").mockImplementation(()=>c());const a=new Uint8Array([]);s.mockResolvedValueOnce(A({data:a}));const o=[{intermediateValue:{requiredUserInteraction:n.None},status:t.Pending},{intermediateValue:{requiredUserInteraction:n.ConfirmOpenApp},status:t.Pending},{intermediateValue:{requiredUserInteraction:n.SignPersonalMessage},status:t.Pending},{output:a,status:t.Completed}],{observable:r}=u(i,o,l());r.subscribe({complete:()=>{try{expect(s).toHaveBeenCalledWith(expect.objectContaining({input:expect.objectContaining({derivationPath:"44'/501'/0'/0'",sendingData:new TextEncoder().encode("Hello world")})})),e()}catch(g){e(g)}},error:g=>{e(g)}})})}),describe("error cases",()=>{it("Error if the open app fails",e=>{p(new d("Mocked error"));const i=[{status:t.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:t.Pending,intermediateValue:{requiredUserInteraction:n.ConfirmOpenApp}},{status:t.Error,error:new d("Mocked error")}],a=new m({input:{derivationPath:"44'/60'/0'/0/0",message:"Hello world"}});jest.spyOn(a,"extractDependencies").mockImplementation(()=>c());const{observable:o}=u(a,i,l());o.subscribe({complete:()=>{try{expect(s).not.toHaveBeenCalled(),e()}catch(r){e(r)}},error:r=>{e(r)}})}),it("Error if the signMessage fails",e=>{p();const i=new m({input:{derivationPath:"44'/60'/0'/0/0",message:"Hello world"}});jest.spyOn(i,"extractDependencies").mockImplementation(()=>c()),s.mockResolvedValueOnce(A({error:new d("Mocked error")}));const a=[{status:t.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:t.Pending,intermediateValue:{requiredUserInteraction:n.ConfirmOpenApp}},{status:t.Pending,intermediateValue:{requiredUserInteraction:n.SignPersonalMessage}},{status:t.Error,error:new d("Mocked error")}],{observable:o}=u(i,a,l());o.subscribe({complete:()=>{try{expect(s).toHaveBeenCalled(),e()}catch(r){e(r)}},error:r=>{e(r)}})}),it("Return a Left if the final state has no signature",e=>{p();const i=new m({input:{derivationPath:"44'/60'/0'/0/0",message:"Hello world"}});jest.spyOn(i,"extractDependencies").mockImplementation(()=>c()),s.mockResolvedValueOnce(A({data:void 0}));const a=[{status:t.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:t.Pending,intermediateValue:{requiredUserInteraction:n.ConfirmOpenApp}},{status:t.Pending,intermediateValue:{requiredUserInteraction:n.SignPersonalMessage}},{status:t.Error,error:new v("No error in final state")}],{observable:o}=u(i,a,l());o.subscribe({complete:()=>{try{expect(s).toHaveBeenCalledWith(expect.objectContaining({input:expect.objectContaining({derivationPath:"44'/60'/0'/0/0",sendingData:new TextEncoder().encode("Hello world")})})),e()}catch(r){e(r)}},error:r=>{e(r)}})})})});
|
|
2
|
-
//# sourceMappingURL=SignMessageDeviceAction.test.js.map
|
package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
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": "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",
|
|
6
|
-
"names": ["CommandResultFactory", "DeviceActionStatus", "UnknownDeviceExchangeError", "UserInteractionRequired", "UnknownDAError", "makeDeviceActionInternalApiMock", "setupOpenAppDAMock", "testDeviceActionStates", "SignMessageDeviceAction", "signMessageMock", "extractDependenciesMock", "done", "deviceAction", "signatureData", "expectedStates", "observable", "error", "err"]
|
|
7
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"solanaAppError.test.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/app-binder/command/utils/solanaAppError.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { type CommandErrorArgs, type CommandErrors, DeviceExchangeError, type DmkError } from "@ledgerhq/device-management-kit";
|
|
2
|
-
export type SolanaAppErrorCodes = "6700" | "6982" | "6A80" | "6A81" | "6A82" | "6B00";
|
|
3
|
-
export declare const solanaAppErrors: CommandErrors<SolanaAppErrorCodes>;
|
|
4
|
-
export declare class SolanaAppCommandError extends DeviceExchangeError<void> implements DmkError {
|
|
5
|
-
constructor({ message, errorCode, }: CommandErrorArgs<SolanaAppErrorCodes | void>);
|
|
6
|
-
customErrorCode?: SolanaAppErrorCodes;
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=solanaAppErrors.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"solanaAppErrors.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/app-binder/command/utils/solanaAppErrors.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,mBAAmB,EACnB,KAAK,QAAQ,EACd,MAAM,iCAAiC,CAAC;AAEzC,MAAM,MAAM,mBAAmB,GAC3B,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,CAAC;AAEX,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,mBAAmB,CAO9D,CAAC;AAEF,qBAAa,qBACX,SAAQ,mBAAmB,CAAC,IAAI,CAChC,YAAW,QAAQ;gBAEP,EACV,OAAO,EACP,SAAS,GACV,EAAE,gBAAgB,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAQ/C,eAAe,CAAC,EAAE,mBAAmB,CAAC;CACvC"}
|
package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { type CommandResult, type DeviceActionStateMachine, type InternalApi, XStateDeviceAction } from "@ledgerhq/device-management-kit";
|
|
2
|
-
import { type SignMessageDAError, type SignMessageDAInput, type SignMessageDAIntermediateValue, type SignMessageDAInternalState, type SignMessageDAOutput } from "../../../../api/app-binder/SignMessageDeviceActionTypes";
|
|
3
|
-
import { type Signature } from "../../../../api/model/Signature";
|
|
4
|
-
import { type SendSignMessageTaskArgs } from "../../../app-binder/task/SendSignMessageTask";
|
|
5
|
-
export type MachineDependencies = {
|
|
6
|
-
readonly signMessage: (arg0: {
|
|
7
|
-
input: SendSignMessageTaskArgs;
|
|
8
|
-
}) => Promise<CommandResult<Signature>>;
|
|
9
|
-
};
|
|
10
|
-
export type ExtractMachineDependencies = (internalApi: InternalApi) => MachineDependencies;
|
|
11
|
-
export declare class SignMessageDeviceAction extends XStateDeviceAction<SignMessageDAOutput, SignMessageDAInput, SignMessageDAError, SignMessageDAIntermediateValue, SignMessageDAInternalState> {
|
|
12
|
-
makeStateMachine(internalApi: InternalApi): DeviceActionStateMachine<SignMessageDAOutput, SignMessageDAInput, SignMessageDAError, SignMessageDAIntermediateValue, SignMessageDAInternalState>;
|
|
13
|
-
extractDependencies(internalApi: InternalApi): MachineDependencies;
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=SignMessageDeviceAction.d.ts.map
|
package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SignMessageDeviceAction.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,wBAAwB,EAC7B,KAAK,WAAW,EAMhB,kBAAkB,EACnB,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,8BAA8B,EACnC,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACzB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,+CAA+C,CAAC;AAEvD,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;QAC3B,KAAK,EAAE,uBAAuB,CAAC;KAChC,KAAK,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,CACvC,WAAW,EAAE,WAAW,KACrB,mBAAmB,CAAC;AAEzB,qBAAa,uBAAwB,SAAQ,kBAAkB,CAC7D,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,8BAA8B,EAC9B,0BAA0B,CAC3B;IACC,gBAAgB,CACd,WAAW,EAAE,WAAW,GACvB,wBAAwB,CACzB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,8BAA8B,EAC9B,0BAA0B,CAC3B;IAiMD,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,mBAAmB;CAanE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SignMessageDeviceAction.test.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.ts"],"names":[],"mappings":""}
|