@ledgerhq/device-signer-kit-solana 1.1.0 → 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.
Files changed (181) hide show
  1. package/lib/cjs/api/SignerSolana.js +1 -1
  2. package/lib/cjs/api/SignerSolana.js.map +1 -1
  3. package/lib/cjs/api/app-binder/SignMessageDeviceActionTypes.js +1 -1
  4. package/lib/cjs/api/app-binder/SignMessageDeviceActionTypes.js.map +1 -1
  5. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
  6. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +1 -1
  7. package/lib/cjs/api/model/AddressOption.js +1 -1
  8. package/lib/cjs/api/model/AddressOption.js.map +1 -1
  9. package/lib/cjs/api/model/MessageOptions.js +2 -0
  10. package/lib/cjs/api/model/MessageOptions.js.map +7 -0
  11. package/lib/cjs/api/model/TransactionOptions.js +1 -1
  12. package/lib/cjs/api/model/TransactionOptions.js.map +1 -1
  13. package/lib/cjs/index.js.map +1 -1
  14. package/lib/cjs/internal/DefaultSignerSolana.js +1 -1
  15. package/lib/cjs/internal/DefaultSignerSolana.js.map +2 -2
  16. package/lib/cjs/internal/DefaultSignerSolana.test.js +1 -1
  17. package/lib/cjs/internal/DefaultSignerSolana.test.js.map +2 -2
  18. package/lib/cjs/internal/app-binder/SolanaAppBinder.js +1 -1
  19. package/lib/cjs/internal/app-binder/SolanaAppBinder.js.map +3 -3
  20. package/lib/cjs/internal/app-binder/SolanaAppBinder.test.js +1 -1
  21. package/lib/cjs/internal/app-binder/SolanaAppBinder.test.js.map +3 -3
  22. package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.test.js +1 -1
  23. package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.test.js.map +2 -2
  24. package/lib/cjs/internal/app-binder/command/GetPubKeyCommand.test.js +1 -1
  25. package/lib/cjs/internal/app-binder/command/GetPubKeyCommand.test.js.map +2 -2
  26. package/lib/cjs/internal/app-binder/command/SignOffChainMessageCommand.js.map +2 -2
  27. package/lib/cjs/internal/app-binder/command/SignOffChainMessageCommand.test.js +1 -1
  28. package/lib/cjs/internal/app-binder/command/SignOffChainMessageCommand.test.js.map +2 -2
  29. package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js +1 -1
  30. package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js.map +2 -2
  31. package/lib/cjs/internal/app-binder/command/utils/SolanaAppErrors.test.js +1 -1
  32. package/lib/cjs/internal/app-binder/command/utils/SolanaAppErrors.test.js.map +2 -2
  33. package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.js +1 -1
  34. package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.js.map +2 -2
  35. package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.test.js +1 -1
  36. package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.test.js.map +3 -3
  37. package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
  38. package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  39. package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js +1 -1
  40. package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js.map +2 -2
  41. package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js +1 -1
  42. package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map +3 -3
  43. package/lib/cjs/internal/app-binder/di/appBinderModule.js +1 -1
  44. package/lib/cjs/internal/app-binder/di/appBinderModule.js.map +3 -3
  45. package/lib/cjs/internal/app-binder/di/appBinderModule.test.js +1 -1
  46. package/lib/cjs/internal/app-binder/di/appBinderModule.test.js.map +2 -2
  47. package/lib/cjs/internal/app-binder/task/SendSignDataTask.test.js +1 -1
  48. package/lib/cjs/internal/app-binder/task/SendSignDataTask.test.js.map +2 -2
  49. package/lib/cjs/internal/app-binder/task/SendSignMessageTask.js +1 -1
  50. package/lib/cjs/internal/app-binder/task/SendSignMessageTask.js.map +3 -3
  51. package/lib/cjs/internal/app-binder/task/SendSignMessageTask.test.js +1 -1
  52. package/lib/cjs/internal/app-binder/task/SendSignMessageTask.test.js.map +2 -2
  53. package/lib/cjs/internal/di.js +1 -1
  54. package/lib/cjs/internal/di.js.map +2 -2
  55. package/lib/cjs/internal/use-cases/address/GetAddressUseCase.js +1 -1
  56. package/lib/cjs/internal/use-cases/address/GetAddressUseCase.js.map +2 -2
  57. package/lib/cjs/internal/use-cases/address/GetAddressUseCase.test.js +1 -1
  58. package/lib/cjs/internal/use-cases/address/GetAddressUseCase.test.js.map +2 -2
  59. package/lib/cjs/internal/use-cases/app-configuration/GetAppConfiguration.test.js +1 -1
  60. package/lib/cjs/internal/use-cases/app-configuration/GetAppConfiguration.test.js.map +2 -2
  61. package/lib/cjs/internal/use-cases/di/useCasesModule.js +1 -1
  62. package/lib/cjs/internal/use-cases/di/useCasesModule.js.map +3 -3
  63. package/lib/cjs/internal/use-cases/di/useCasesModule.test.js +1 -1
  64. package/lib/cjs/internal/use-cases/di/useCasesModule.test.js.map +2 -2
  65. package/lib/cjs/internal/use-cases/message/SignMessageUseCase.js +1 -1
  66. package/lib/cjs/internal/use-cases/message/SignMessageUseCase.js.map +3 -3
  67. package/lib/cjs/internal/use-cases/message/SignMessageUseCase.test.js +1 -1
  68. package/lib/cjs/internal/use-cases/message/SignMessageUseCase.test.js.map +2 -2
  69. package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.js +1 -1
  70. package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.js.map +2 -2
  71. package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.test.js +1 -1
  72. package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.test.js.map +2 -2
  73. package/lib/cjs/package.json +16 -17
  74. package/lib/esm/api/model/MessageOptions.js +1 -0
  75. package/lib/esm/api/model/MessageOptions.js.map +7 -0
  76. package/lib/esm/internal/DefaultSignerSolana.js +1 -1
  77. package/lib/esm/internal/DefaultSignerSolana.js.map +2 -2
  78. package/lib/esm/internal/DefaultSignerSolana.test.js +1 -1
  79. package/lib/esm/internal/DefaultSignerSolana.test.js.map +2 -2
  80. package/lib/esm/internal/app-binder/SolanaAppBinder.js +1 -1
  81. package/lib/esm/internal/app-binder/SolanaAppBinder.js.map +3 -3
  82. package/lib/esm/internal/app-binder/SolanaAppBinder.test.js +1 -1
  83. package/lib/esm/internal/app-binder/SolanaAppBinder.test.js.map +3 -3
  84. package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.test.js +1 -1
  85. package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.test.js.map +2 -2
  86. package/lib/esm/internal/app-binder/command/GetPubKeyCommand.test.js +1 -1
  87. package/lib/esm/internal/app-binder/command/GetPubKeyCommand.test.js.map +2 -2
  88. package/lib/esm/internal/app-binder/command/SignOffChainMessageCommand.js.map +2 -2
  89. package/lib/esm/internal/app-binder/command/SignOffChainMessageCommand.test.js +1 -1
  90. package/lib/esm/internal/app-binder/command/SignOffChainMessageCommand.test.js.map +2 -2
  91. package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js +1 -1
  92. package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js.map +2 -2
  93. package/lib/esm/internal/app-binder/command/utils/SolanaAppErrors.test.js +1 -1
  94. package/lib/esm/internal/app-binder/command/utils/SolanaAppErrors.test.js.map +2 -2
  95. package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.js +1 -1
  96. package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.js.map +2 -2
  97. package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.test.js +1 -1
  98. package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.test.js.map +3 -3
  99. package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
  100. package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  101. package/lib/esm/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js +1 -1
  102. package/lib/esm/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js.map +2 -2
  103. package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js +1 -1
  104. package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map +3 -3
  105. package/lib/esm/internal/app-binder/di/appBinderModule.js +1 -1
  106. package/lib/esm/internal/app-binder/di/appBinderModule.js.map +3 -3
  107. package/lib/esm/internal/app-binder/di/appBinderModule.test.js +1 -1
  108. package/lib/esm/internal/app-binder/di/appBinderModule.test.js.map +2 -2
  109. package/lib/esm/internal/app-binder/task/SendSignDataTask.test.js +1 -1
  110. package/lib/esm/internal/app-binder/task/SendSignDataTask.test.js.map +2 -2
  111. package/lib/esm/internal/app-binder/task/SendSignMessageTask.js +1 -1
  112. package/lib/esm/internal/app-binder/task/SendSignMessageTask.js.map +3 -3
  113. package/lib/esm/internal/app-binder/task/SendSignMessageTask.test.js +1 -1
  114. package/lib/esm/internal/app-binder/task/SendSignMessageTask.test.js.map +2 -2
  115. package/lib/esm/internal/di.js +1 -1
  116. package/lib/esm/internal/di.js.map +2 -2
  117. package/lib/esm/internal/use-cases/address/GetAddressUseCase.js +1 -1
  118. package/lib/esm/internal/use-cases/address/GetAddressUseCase.js.map +2 -2
  119. package/lib/esm/internal/use-cases/address/GetAddressUseCase.test.js +1 -1
  120. package/lib/esm/internal/use-cases/address/GetAddressUseCase.test.js.map +2 -2
  121. package/lib/esm/internal/use-cases/app-configuration/GetAppConfiguration.test.js +1 -1
  122. package/lib/esm/internal/use-cases/app-configuration/GetAppConfiguration.test.js.map +2 -2
  123. package/lib/esm/internal/use-cases/di/useCasesModule.js +1 -1
  124. package/lib/esm/internal/use-cases/di/useCasesModule.js.map +3 -3
  125. package/lib/esm/internal/use-cases/di/useCasesModule.test.js +1 -1
  126. package/lib/esm/internal/use-cases/di/useCasesModule.test.js.map +2 -2
  127. package/lib/esm/internal/use-cases/message/SignMessageUseCase.js +1 -1
  128. package/lib/esm/internal/use-cases/message/SignMessageUseCase.js.map +3 -3
  129. package/lib/esm/internal/use-cases/message/SignMessageUseCase.test.js +1 -1
  130. package/lib/esm/internal/use-cases/message/SignMessageUseCase.test.js.map +2 -2
  131. package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.js +1 -1
  132. package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.js.map +2 -2
  133. package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.test.js +1 -1
  134. package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.test.js.map +2 -2
  135. package/lib/esm/package.json +16 -17
  136. package/lib/types/api/SignerSolana.d.ts +2 -1
  137. package/lib/types/api/SignerSolana.d.ts.map +1 -1
  138. package/lib/types/api/app-binder/SignMessageDeviceActionTypes.d.ts +1 -10
  139. package/lib/types/api/app-binder/SignMessageDeviceActionTypes.d.ts.map +1 -1
  140. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +1 -2
  141. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
  142. package/lib/types/api/model/AddressOption.d.ts +1 -0
  143. package/lib/types/api/model/AddressOption.d.ts.map +1 -1
  144. package/lib/types/api/model/MessageOptions.d.ts +4 -0
  145. package/lib/types/api/model/MessageOptions.d.ts.map +1 -0
  146. package/lib/types/api/model/TransactionOptions.d.ts +3 -1
  147. package/lib/types/api/model/TransactionOptions.d.ts.map +1 -1
  148. package/lib/types/internal/DefaultSignerSolana.d.ts +2 -1
  149. package/lib/types/internal/DefaultSignerSolana.d.ts.map +1 -1
  150. package/lib/types/internal/app-binder/SolanaAppBinder.d.ts +3 -2
  151. package/lib/types/internal/app-binder/SolanaAppBinder.d.ts.map +1 -1
  152. package/lib/types/internal/app-binder/command/SignOffChainMessageCommand.d.ts +0 -1
  153. package/lib/types/internal/app-binder/command/SignOffChainMessageCommand.d.ts.map +1 -1
  154. package/lib/types/internal/app-binder/command/utils/SolanaApplicationErrors.d.ts.map +1 -1
  155. package/lib/types/internal/app-binder/device-action/SignTransactionDeviceAction.d.ts.map +1 -1
  156. package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts +2 -1
  157. package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -1
  158. package/lib/types/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.d.ts.map +1 -1
  159. package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.d.ts +5 -2
  160. package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.d.ts.map +1 -1
  161. package/lib/types/internal/app-binder/di/appBinderModule.d.ts.map +1 -1
  162. package/lib/types/internal/app-binder/task/SendSignMessageTask.d.ts.map +1 -1
  163. package/lib/types/internal/di.d.ts.map +1 -1
  164. package/lib/types/internal/use-cases/address/GetAddressUseCase.d.ts.map +1 -1
  165. package/lib/types/internal/use-cases/di/useCasesModule.d.ts.map +1 -1
  166. package/lib/types/internal/use-cases/message/SignMessageUseCase.d.ts +2 -1
  167. package/lib/types/internal/use-cases/message/SignMessageUseCase.d.ts.map +1 -1
  168. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  169. package/package.json +18 -19
  170. package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js +0 -2
  171. package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js.map +0 -7
  172. package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js +0 -2
  173. package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js.map +0 -7
  174. package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js +0 -2
  175. package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js.map +0 -7
  176. package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js +0 -2
  177. package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js.map +0 -7
  178. package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.d.ts +0 -16
  179. package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.d.ts.map +0 -1
  180. package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.d.ts +0 -2
  181. package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.d.ts.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/device-signer-kit-solana",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "private": false,
5
5
  "license": "Apache-2.0",
6
6
  "exports": {
@@ -19,40 +19,39 @@
19
19
  "./lib"
20
20
  ],
21
21
  "dependencies": {
22
+ "@ledgerhq/signer-utils": "^1.0.5",
22
23
  "bs58": "^6.0.0",
23
- "inversify": "^6.2.1",
24
- "inversify-logger-middleware": "^3.1.0",
25
- "purify-ts": "^2.1.0",
26
- "reflect-metadata": "^0.2.2",
27
- "xstate": "^5.19.2",
28
- "@ledgerhq/signer-utils": "1.0.3"
24
+ "inversify": "7.5.1",
25
+ "purify-ts": "2.1.0",
26
+ "reflect-metadata": "0.2.2",
27
+ "xstate": "5.19.2"
29
28
  },
30
29
  "devDependencies": {
31
- "rxjs": "^7.8.1",
32
- "ts-node": "^10.9.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",
33
34
  "@ledgerhq/eslint-config-dsdk": "0.0.2",
34
- "@ledgerhq/esbuild-tools": "0.0.2",
35
35
  "@ledgerhq/prettier-config-dsdk": "0.0.2",
36
- "@ledgerhq/jest-config-dsdk": "1.0.1",
37
- "@ledgerhq/tsconfig-dsdk": "1.0.1",
38
- "@ledgerhq/device-management-kit": "0.6.0"
36
+ "@ledgerhq/vitest-config-dmk": "0.0.0",
37
+ "@ledgerhq/tsconfig-dsdk": "1.0.1"
39
38
  },
40
39
  "peerDependencies": {
41
- "@ledgerhq/device-management-kit": "0.6.0"
40
+ "@ledgerhq/device-management-kit": "0.7.0"
42
41
  },
43
42
  "scripts": {
44
43
  "prebuild": "rimraf lib",
45
- "build": "pnpm lmdk-build --entryPoints src/index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
44
+ "build": "pnpm ldmk-tool build --entryPoints src/index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
46
45
  "dev": "concurrently \"pnpm watch:builds\" \"pnpm watch:types\"",
47
- "watch:builds": "pnpm lmdk-watch --entryPoints src/index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
46
+ "watch:builds": "pnpm ldmk-tool watch --entryPoints src/index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
48
47
  "watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\"",
49
48
  "lint": "eslint",
50
49
  "lint:fix": "pnpm lint --fix",
51
50
  "prettier": "prettier . --check",
52
51
  "prettier:fix": "prettier . --write",
53
52
  "typecheck": "tsc --noEmit",
54
- "test": "jest",
55
- "test:watch": "pnpm test -- --watch",
56
- "test:coverage": "pnpm test -- --coverage"
53
+ "test": "vitest run",
54
+ "test:watch": "vitest",
55
+ "test:coverage": "vitest run --coverage"
57
56
  }
58
57
  }
@@ -1,2 +0,0 @@
1
- "use strict";var g=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var M=(s,n)=>{for(var i in n)g(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&&g(s,t,{get:()=>n[t],enumerable:!(e=S(n,t))||e.enumerable});return s};var m=s=>d(g({},"__esModule",{value:!0}),s);var D={};M(D,{SignMessageDeviceAction:()=>A});module.exports=m(D);var r=require("@ledgerhq/device-management-kit"),o=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,o.Right)(e._internalState.signature):(0,o.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
@@ -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 { type SolanaAppErrorCodes } from \"@internal/app-binder/command/utils/SolanaApplicationErrors\";\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, SolanaAppErrorCodes>>;\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
- }
@@ -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
@@ -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{isSuccessCommandResult as o,OpenAppDeviceAction as g,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 y extends u{makeStateMachine(a){const{signMessage:s}=this.extractDependencies(a);return M({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new g({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})=>o(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{y as SignMessageDeviceAction};
2
- //# sourceMappingURL=SignMessageDeviceAction.js.map
@@ -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 { type SolanaAppErrorCodes } from \"@internal/app-binder/command/utils/SolanaApplicationErrors\";\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, SolanaAppErrorCodes>>;\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
- }
@@ -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
@@ -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,16 +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 SolanaAppErrorCodes } from "../../../app-binder/command/utils/SolanaApplicationErrors";
5
- import { type SendSignMessageTaskArgs } from "../../../app-binder/task/SendSignMessageTask";
6
- export type MachineDependencies = {
7
- readonly signMessage: (arg0: {
8
- input: SendSignMessageTaskArgs;
9
- }) => Promise<CommandResult<Signature, SolanaAppErrorCodes>>;
10
- };
11
- export type ExtractMachineDependencies = (internalApi: InternalApi) => MachineDependencies;
12
- export declare class SignMessageDeviceAction extends XStateDeviceAction<SignMessageDAOutput, SignMessageDAInput, SignMessageDAError, SignMessageDAIntermediateValue, SignMessageDAInternalState> {
13
- makeStateMachine(internalApi: InternalApi): DeviceActionStateMachine<SignMessageDAOutput, SignMessageDAInput, SignMessageDAError, SignMessageDAIntermediateValue, SignMessageDAInternalState>;
14
- extractDependencies(internalApi: InternalApi): MachineDependencies;
15
- }
16
- //# sourceMappingURL=SignMessageDeviceAction.d.ts.map
@@ -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,EAAE,KAAK,mBAAmB,EAAE,MAAM,4DAA4D,CAAC;AACtG,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,EAAE,mBAAmB,CAAC,CAAC,CAAC;CAC9D,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,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=SignMessageDeviceAction.test.d.ts.map
@@ -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":""}