@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.
Files changed (243) hide show
  1. package/README.md +148 -356
  2. package/lib/cjs/api/SignerSolana.js +1 -1
  3. package/lib/cjs/api/SignerSolana.js.map +1 -1
  4. package/lib/cjs/api/app-binder/GetAddressDeviceActionTypes.js +1 -1
  5. package/lib/cjs/api/app-binder/GetAddressDeviceActionTypes.js.map +1 -1
  6. package/lib/cjs/api/app-binder/GetAppConfigurationDeviceActionTypes.js +1 -1
  7. package/lib/cjs/api/app-binder/GetAppConfigurationDeviceActionTypes.js.map +1 -1
  8. package/lib/cjs/api/app-binder/SignMessageDeviceActionTypes.js +1 -1
  9. package/lib/cjs/api/app-binder/SignMessageDeviceActionTypes.js.map +1 -1
  10. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
  11. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +1 -1
  12. package/lib/cjs/api/model/AddressOption.js +1 -1
  13. package/lib/cjs/api/model/AddressOption.js.map +1 -1
  14. package/lib/cjs/api/model/MessageOptions.js +2 -0
  15. package/lib/cjs/api/model/MessageOptions.js.map +7 -0
  16. package/lib/cjs/api/model/TransactionOptions.js +1 -1
  17. package/lib/cjs/api/model/TransactionOptions.js.map +1 -1
  18. package/lib/cjs/index.js.map +1 -1
  19. package/lib/cjs/internal/DefaultSignerSolana.js +1 -1
  20. package/lib/cjs/internal/DefaultSignerSolana.js.map +2 -2
  21. package/lib/cjs/internal/DefaultSignerSolana.test.js +1 -1
  22. package/lib/cjs/internal/DefaultSignerSolana.test.js.map +2 -2
  23. package/lib/cjs/internal/app-binder/SolanaAppBinder.js +1 -1
  24. package/lib/cjs/internal/app-binder/SolanaAppBinder.js.map +3 -3
  25. package/lib/cjs/internal/app-binder/SolanaAppBinder.test.js +1 -1
  26. package/lib/cjs/internal/app-binder/SolanaAppBinder.test.js.map +3 -3
  27. package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.js +1 -1
  28. package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.js.map +3 -3
  29. package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.test.js +1 -1
  30. package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.test.js.map +2 -2
  31. package/lib/cjs/internal/app-binder/command/GetPubKeyCommand.js +1 -1
  32. package/lib/cjs/internal/app-binder/command/GetPubKeyCommand.js.map +3 -3
  33. package/lib/cjs/internal/app-binder/command/GetPubKeyCommand.test.js +1 -1
  34. package/lib/cjs/internal/app-binder/command/GetPubKeyCommand.test.js.map +2 -2
  35. package/lib/cjs/internal/app-binder/command/SignOffChainMessageCommand.js +1 -1
  36. package/lib/cjs/internal/app-binder/command/SignOffChainMessageCommand.js.map +3 -3
  37. package/lib/cjs/internal/app-binder/command/SignOffChainMessageCommand.test.js +1 -1
  38. package/lib/cjs/internal/app-binder/command/SignOffChainMessageCommand.test.js.map +2 -2
  39. package/lib/cjs/internal/app-binder/command/SignTransactionCommand.js +1 -1
  40. package/lib/cjs/internal/app-binder/command/SignTransactionCommand.js.map +3 -3
  41. package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js +1 -1
  42. package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js.map +2 -2
  43. package/lib/cjs/internal/app-binder/command/utils/SolanaAppErrors.test.js +2 -0
  44. package/lib/cjs/internal/app-binder/command/utils/SolanaAppErrors.test.js.map +7 -0
  45. package/lib/cjs/internal/app-binder/command/utils/SolanaApplicationErrors.js +2 -0
  46. package/lib/cjs/internal/app-binder/command/utils/SolanaApplicationErrors.js.map +7 -0
  47. package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.js +1 -1
  48. package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.js.map +3 -3
  49. package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.test.js +1 -1
  50. package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.test.js.map +3 -3
  51. package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
  52. package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  53. package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js +1 -1
  54. package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js.map +2 -2
  55. package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js +1 -1
  56. package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map +3 -3
  57. package/lib/cjs/internal/app-binder/di/appBinderModule.js +1 -1
  58. package/lib/cjs/internal/app-binder/di/appBinderModule.js.map +3 -3
  59. package/lib/cjs/internal/app-binder/di/appBinderModule.test.js +1 -1
  60. package/lib/cjs/internal/app-binder/di/appBinderModule.test.js.map +2 -2
  61. package/lib/cjs/internal/app-binder/task/SendCommandInChunksTask.js +1 -1
  62. package/lib/cjs/internal/app-binder/task/SendCommandInChunksTask.js.map +2 -2
  63. package/lib/cjs/internal/app-binder/task/SendSignDataTask.js +1 -1
  64. package/lib/cjs/internal/app-binder/task/SendSignDataTask.js.map +2 -2
  65. package/lib/cjs/internal/app-binder/task/SendSignDataTask.test.js +1 -1
  66. package/lib/cjs/internal/app-binder/task/SendSignDataTask.test.js.map +2 -2
  67. package/lib/cjs/internal/app-binder/task/SendSignMessageTask.js +1 -1
  68. package/lib/cjs/internal/app-binder/task/SendSignMessageTask.js.map +3 -3
  69. package/lib/cjs/internal/app-binder/task/SendSignMessageTask.test.js +1 -1
  70. package/lib/cjs/internal/app-binder/task/SendSignMessageTask.test.js.map +2 -2
  71. package/lib/cjs/internal/di.js +1 -1
  72. package/lib/cjs/internal/di.js.map +2 -2
  73. package/lib/cjs/internal/use-cases/address/GetAddressUseCase.js +1 -1
  74. package/lib/cjs/internal/use-cases/address/GetAddressUseCase.js.map +2 -2
  75. package/lib/cjs/internal/use-cases/address/GetAddressUseCase.test.js +1 -1
  76. package/lib/cjs/internal/use-cases/address/GetAddressUseCase.test.js.map +2 -2
  77. package/lib/cjs/internal/use-cases/app-configuration/GetAppConfiguration.test.js +1 -1
  78. package/lib/cjs/internal/use-cases/app-configuration/GetAppConfiguration.test.js.map +2 -2
  79. package/lib/cjs/internal/use-cases/di/useCasesModule.js +1 -1
  80. package/lib/cjs/internal/use-cases/di/useCasesModule.js.map +3 -3
  81. package/lib/cjs/internal/use-cases/di/useCasesModule.test.js +1 -1
  82. package/lib/cjs/internal/use-cases/di/useCasesModule.test.js.map +2 -2
  83. package/lib/cjs/internal/use-cases/message/SignMessageUseCase.js +1 -1
  84. package/lib/cjs/internal/use-cases/message/SignMessageUseCase.js.map +3 -3
  85. package/lib/cjs/internal/use-cases/message/SignMessageUseCase.test.js +1 -1
  86. package/lib/cjs/internal/use-cases/message/SignMessageUseCase.test.js.map +2 -2
  87. package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.js +1 -1
  88. package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.js.map +2 -2
  89. package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.test.js +1 -1
  90. package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.test.js.map +2 -2
  91. package/lib/cjs/package.json +17 -17
  92. package/lib/esm/api/model/MessageOptions.js +1 -0
  93. package/lib/esm/api/model/MessageOptions.js.map +7 -0
  94. package/lib/esm/internal/DefaultSignerSolana.js +1 -1
  95. package/lib/esm/internal/DefaultSignerSolana.js.map +2 -2
  96. package/lib/esm/internal/DefaultSignerSolana.test.js +1 -1
  97. package/lib/esm/internal/DefaultSignerSolana.test.js.map +2 -2
  98. package/lib/esm/internal/app-binder/SolanaAppBinder.js +1 -1
  99. package/lib/esm/internal/app-binder/SolanaAppBinder.js.map +3 -3
  100. package/lib/esm/internal/app-binder/SolanaAppBinder.test.js +1 -1
  101. package/lib/esm/internal/app-binder/SolanaAppBinder.test.js.map +3 -3
  102. package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.js +1 -1
  103. package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.js.map +3 -3
  104. package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.test.js +1 -1
  105. package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.test.js.map +2 -2
  106. package/lib/esm/internal/app-binder/command/GetPubKeyCommand.js +1 -1
  107. package/lib/esm/internal/app-binder/command/GetPubKeyCommand.js.map +3 -3
  108. package/lib/esm/internal/app-binder/command/GetPubKeyCommand.test.js +1 -1
  109. package/lib/esm/internal/app-binder/command/GetPubKeyCommand.test.js.map +2 -2
  110. package/lib/esm/internal/app-binder/command/SignOffChainMessageCommand.js +1 -1
  111. package/lib/esm/internal/app-binder/command/SignOffChainMessageCommand.js.map +3 -3
  112. package/lib/esm/internal/app-binder/command/SignOffChainMessageCommand.test.js +1 -1
  113. package/lib/esm/internal/app-binder/command/SignOffChainMessageCommand.test.js.map +2 -2
  114. package/lib/esm/internal/app-binder/command/SignTransactionCommand.js +1 -1
  115. package/lib/esm/internal/app-binder/command/SignTransactionCommand.js.map +3 -3
  116. package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js +1 -1
  117. package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js.map +2 -2
  118. package/lib/esm/internal/app-binder/command/utils/SolanaAppErrors.test.js +2 -0
  119. package/lib/esm/internal/app-binder/command/utils/SolanaAppErrors.test.js.map +7 -0
  120. package/lib/esm/internal/app-binder/command/utils/SolanaApplicationErrors.js +2 -0
  121. package/lib/esm/internal/app-binder/command/utils/SolanaApplicationErrors.js.map +7 -0
  122. package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.js +1 -1
  123. package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.js.map +3 -3
  124. package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.test.js +1 -1
  125. package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.test.js.map +3 -3
  126. package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
  127. package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  128. package/lib/esm/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js +1 -1
  129. package/lib/esm/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js.map +2 -2
  130. package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js +1 -1
  131. package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map +3 -3
  132. package/lib/esm/internal/app-binder/di/appBinderModule.js +1 -1
  133. package/lib/esm/internal/app-binder/di/appBinderModule.js.map +3 -3
  134. package/lib/esm/internal/app-binder/di/appBinderModule.test.js +1 -1
  135. package/lib/esm/internal/app-binder/di/appBinderModule.test.js.map +2 -2
  136. package/lib/esm/internal/app-binder/task/SendCommandInChunksTask.js +1 -1
  137. package/lib/esm/internal/app-binder/task/SendCommandInChunksTask.js.map +2 -2
  138. package/lib/esm/internal/app-binder/task/SendSignDataTask.js +1 -1
  139. package/lib/esm/internal/app-binder/task/SendSignDataTask.js.map +2 -2
  140. package/lib/esm/internal/app-binder/task/SendSignDataTask.test.js +1 -1
  141. package/lib/esm/internal/app-binder/task/SendSignDataTask.test.js.map +2 -2
  142. package/lib/esm/internal/app-binder/task/SendSignMessageTask.js +1 -1
  143. package/lib/esm/internal/app-binder/task/SendSignMessageTask.js.map +3 -3
  144. package/lib/esm/internal/app-binder/task/SendSignMessageTask.test.js +1 -1
  145. package/lib/esm/internal/app-binder/task/SendSignMessageTask.test.js.map +2 -2
  146. package/lib/esm/internal/di.js +1 -1
  147. package/lib/esm/internal/di.js.map +2 -2
  148. package/lib/esm/internal/use-cases/address/GetAddressUseCase.js +1 -1
  149. package/lib/esm/internal/use-cases/address/GetAddressUseCase.js.map +2 -2
  150. package/lib/esm/internal/use-cases/address/GetAddressUseCase.test.js +1 -1
  151. package/lib/esm/internal/use-cases/address/GetAddressUseCase.test.js.map +2 -2
  152. package/lib/esm/internal/use-cases/app-configuration/GetAppConfiguration.test.js +1 -1
  153. package/lib/esm/internal/use-cases/app-configuration/GetAppConfiguration.test.js.map +2 -2
  154. package/lib/esm/internal/use-cases/di/useCasesModule.js +1 -1
  155. package/lib/esm/internal/use-cases/di/useCasesModule.js.map +3 -3
  156. package/lib/esm/internal/use-cases/di/useCasesModule.test.js +1 -1
  157. package/lib/esm/internal/use-cases/di/useCasesModule.test.js.map +2 -2
  158. package/lib/esm/internal/use-cases/message/SignMessageUseCase.js +1 -1
  159. package/lib/esm/internal/use-cases/message/SignMessageUseCase.js.map +3 -3
  160. package/lib/esm/internal/use-cases/message/SignMessageUseCase.test.js +1 -1
  161. package/lib/esm/internal/use-cases/message/SignMessageUseCase.test.js.map +2 -2
  162. package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.js +1 -1
  163. package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.js.map +2 -2
  164. package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.test.js +1 -1
  165. package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.test.js.map +2 -2
  166. package/lib/esm/package.json +17 -17
  167. package/lib/types/api/SignerSolana.d.ts +2 -1
  168. package/lib/types/api/SignerSolana.d.ts.map +1 -1
  169. package/lib/types/api/app-binder/GetAddressDeviceActionTypes.d.ts +2 -1
  170. package/lib/types/api/app-binder/GetAddressDeviceActionTypes.d.ts.map +1 -1
  171. package/lib/types/api/app-binder/GetAppConfigurationDeviceActionTypes.d.ts +2 -1
  172. package/lib/types/api/app-binder/GetAppConfigurationDeviceActionTypes.d.ts.map +1 -1
  173. package/lib/types/api/app-binder/SignMessageDeviceActionTypes.d.ts +3 -11
  174. package/lib/types/api/app-binder/SignMessageDeviceActionTypes.d.ts.map +1 -1
  175. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +4 -4
  176. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
  177. package/lib/types/api/model/AddressOption.d.ts +1 -0
  178. package/lib/types/api/model/AddressOption.d.ts.map +1 -1
  179. package/lib/types/api/model/MessageOptions.d.ts +4 -0
  180. package/lib/types/api/model/MessageOptions.d.ts.map +1 -0
  181. package/lib/types/api/model/TransactionOptions.d.ts +3 -1
  182. package/lib/types/api/model/TransactionOptions.d.ts.map +1 -1
  183. package/lib/types/internal/DefaultSignerSolana.d.ts +2 -1
  184. package/lib/types/internal/DefaultSignerSolana.d.ts.map +1 -1
  185. package/lib/types/internal/app-binder/SolanaAppBinder.d.ts +3 -2
  186. package/lib/types/internal/app-binder/SolanaAppBinder.d.ts.map +1 -1
  187. package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.d.ts +4 -2
  188. package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.d.ts.map +1 -1
  189. package/lib/types/internal/app-binder/command/GetPubKeyCommand.d.ts +4 -2
  190. package/lib/types/internal/app-binder/command/GetPubKeyCommand.d.ts.map +1 -1
  191. package/lib/types/internal/app-binder/command/SignOffChainMessageCommand.d.ts +4 -3
  192. package/lib/types/internal/app-binder/command/SignOffChainMessageCommand.d.ts.map +1 -1
  193. package/lib/types/internal/app-binder/command/SignTransactionCommand.d.ts +5 -3
  194. package/lib/types/internal/app-binder/command/SignTransactionCommand.d.ts.map +1 -1
  195. package/lib/types/internal/app-binder/command/utils/SolanaAppErrors.test.d.ts +2 -0
  196. package/lib/types/internal/app-binder/command/utils/SolanaAppErrors.test.d.ts.map +1 -0
  197. package/lib/types/internal/app-binder/command/utils/SolanaApplicationErrors.d.ts +8 -0
  198. package/lib/types/internal/app-binder/command/utils/SolanaApplicationErrors.d.ts.map +1 -0
  199. package/lib/types/internal/app-binder/device-action/SignTransactionDeviceAction.d.ts +2 -1
  200. package/lib/types/internal/app-binder/device-action/SignTransactionDeviceAction.d.ts.map +1 -1
  201. package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts +2 -1
  202. package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -1
  203. package/lib/types/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.d.ts.map +1 -1
  204. package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.d.ts +5 -2
  205. package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.d.ts.map +1 -1
  206. package/lib/types/internal/app-binder/di/appBinderModule.d.ts.map +1 -1
  207. package/lib/types/internal/app-binder/task/SendCommandInChunksTask.d.ts +3 -2
  208. package/lib/types/internal/app-binder/task/SendCommandInChunksTask.d.ts.map +1 -1
  209. package/lib/types/internal/app-binder/task/SendSignDataTask.d.ts +3 -2
  210. package/lib/types/internal/app-binder/task/SendSignDataTask.d.ts.map +1 -1
  211. package/lib/types/internal/app-binder/task/SendSignMessageTask.d.ts +3 -1
  212. package/lib/types/internal/app-binder/task/SendSignMessageTask.d.ts.map +1 -1
  213. package/lib/types/internal/di.d.ts.map +1 -1
  214. package/lib/types/internal/use-cases/address/GetAddressUseCase.d.ts.map +1 -1
  215. package/lib/types/internal/use-cases/di/useCasesModule.d.ts.map +1 -1
  216. package/lib/types/internal/use-cases/message/SignMessageUseCase.d.ts +2 -1
  217. package/lib/types/internal/use-cases/message/SignMessageUseCase.d.ts.map +1 -1
  218. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  219. package/package.json +19 -19
  220. package/lib/cjs/internal/app-binder/command/utils/solanaAppError.test.js +0 -2
  221. package/lib/cjs/internal/app-binder/command/utils/solanaAppError.test.js.map +0 -7
  222. package/lib/cjs/internal/app-binder/command/utils/solanaAppErrors.js +0 -2
  223. package/lib/cjs/internal/app-binder/command/utils/solanaAppErrors.js.map +0 -7
  224. package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js +0 -2
  225. package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js.map +0 -7
  226. package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js +0 -2
  227. package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js.map +0 -7
  228. package/lib/esm/internal/app-binder/command/utils/solanaAppError.test.js +0 -2
  229. package/lib/esm/internal/app-binder/command/utils/solanaAppError.test.js.map +0 -7
  230. package/lib/esm/internal/app-binder/command/utils/solanaAppErrors.js +0 -2
  231. package/lib/esm/internal/app-binder/command/utils/solanaAppErrors.js.map +0 -7
  232. package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js +0 -2
  233. package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js.map +0 -7
  234. package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js +0 -2
  235. package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js.map +0 -7
  236. package/lib/types/internal/app-binder/command/utils/solanaAppError.test.d.ts +0 -2
  237. package/lib/types/internal/app-binder/command/utils/solanaAppError.test.d.ts.map +0 -1
  238. package/lib/types/internal/app-binder/command/utils/solanaAppErrors.d.ts +0 -8
  239. package/lib/types/internal/app-binder/command/utils/solanaAppErrors.d.ts.map +0 -1
  240. package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.d.ts +0 -15
  241. package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.d.ts.map +0 -1
  242. package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.d.ts +0 -2
  243. 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.0.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": "^6.0.3",
23
- "inversify-logger-middleware": "^3.1.0",
24
- "purify-ts": "^2.1.0",
25
- "reflect-metadata": "^0.2.2",
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.1",
31
- "ts-node": "^10.9.2",
32
- "@ledgerhq/device-management-kit": "0.5.1",
33
- "@ledgerhq/esbuild-tools": "0.0.2",
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.5.1"
40
+ "@ledgerhq/device-management-kit": "0.7.0"
41
41
  },
42
42
  "scripts": {
43
43
  "prebuild": "rimraf lib",
44
- "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",
45
45
  "dev": "concurrently \"pnpm watch:builds\" \"pnpm watch:types\"",
46
- "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",
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": "jest",
54
- "test:watch": "pnpm test -- --watch",
55
- "test:coverage": "pnpm 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
@@ -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
- }
@@ -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{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
@@ -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
- }
@@ -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,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=solanaAppError.test.d.ts.map
@@ -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"}
@@ -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
@@ -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,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":""}