@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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.ts"],
4
- "sourcesContent": ["import {\n type DeviceAction,\n type DeviceActionIntermediateValue,\n type DeviceActionState,\n type DmkError,\n type InternalApi,\n} from \"@ledgerhq/device-management-kit\";\n\n/**\n * Test that the states emitted by a device action match the expected states.\n * @param deviceAction The device action to test.\n * @param expectedStates The expected states.\n * @param done The Jest done callback.\n */\nexport function testDeviceActionStates<\n Output,\n Input,\n Error extends DmkError,\n IntermediateValue extends DeviceActionIntermediateValue,\n>(\n deviceAction: DeviceAction<Output, Input, Error, IntermediateValue>,\n expectedStates: Array<DeviceActionState<Output, Error, IntermediateValue>>,\n internalApi: InternalApi,\n done?: jest.DoneCallback,\n) {\n const observedStates: Array<\n DeviceActionState<Output, Error, IntermediateValue>\n > = [];\n\n const { observable, cancel } = deviceAction._execute(internalApi);\n observable.subscribe({\n next: (state) => {\n observedStates.push(state);\n },\n error: (error) => {\n if (done) done(error);\n },\n complete: () => {\n try {\n expect(observedStates).toEqual(expectedStates);\n if (done) done();\n } catch (e) {\n if (done) done(e);\n }\n },\n });\n return { observable, cancel };\n}\n"],
5
- "mappings": "AAcO,SAASA,EAMdC,EACAC,EACAC,EACAC,EACA,CACA,MAAMC,EAEF,CAAC,EAEC,CAAE,WAAAC,EAAY,OAAAC,CAAO,EAAIN,EAAa,SAASE,CAAW,EAChE,OAAAG,EAAW,UAAU,CACnB,KAAOE,GAAU,CACfH,EAAe,KAAKG,CAAK,CAC3B,EACA,MAAQC,GAAU,CACZL,GAAMA,EAAKK,CAAK,CACtB,EACA,SAAU,IAAM,CACd,GAAI,CACF,OAAOJ,CAAc,EAAE,QAAQH,CAAc,EACzCE,GAAMA,EAAK,CACjB,OAASM,EAAG,CACNN,GAAMA,EAAKM,CAAC,CAClB,CACF,CACF,CAAC,EACM,CAAE,WAAAJ,EAAY,OAAAC,CAAO,CAC9B",
6
- "names": ["testDeviceActionStates", "deviceAction", "expectedStates", "internalApi", "done", "observedStates", "observable", "cancel", "state", "error", "e"]
4
+ "sourcesContent": ["import {\n type DeviceAction,\n type DeviceActionIntermediateValue,\n type DeviceActionState,\n type DmkError,\n type InternalApi,\n} from \"@ledgerhq/device-management-kit\";\n\n/**\n * Test that the states emitted by a device action match the expected states.\n * @param deviceAction The device action to test.\n * @param expectedStates The expected states.\n * @param callbacks { onDone, onError } The callbacks to call when the test is done or an error occurs.\n */\nexport function testDeviceActionStates<\n Output,\n Input,\n Error extends DmkError,\n IntermediateValue extends DeviceActionIntermediateValue,\n>(\n deviceAction: DeviceAction<Output, Input, Error, IntermediateValue>,\n expectedStates: Array<DeviceActionState<Output, Error, IntermediateValue>>,\n internalApi: InternalApi,\n {\n onDone,\n onError,\n }: {\n onDone: () => void;\n onError: (error: Error) => void;\n },\n) {\n const observedStates: Array<\n DeviceActionState<Output, Error, IntermediateValue>\n > = [];\n\n const { observable, cancel } = deviceAction._execute(internalApi);\n observable.subscribe({\n next: (state) => {\n observedStates.push(state);\n },\n error: (error) => {\n onError(error);\n },\n complete: () => {\n try {\n expect(observedStates).toEqual(expectedStates);\n onDone();\n } catch (e) {\n onError(e as Error);\n }\n },\n });\n return { observable, cancel };\n}\n"],
5
+ "mappings": "AAcO,SAASA,EAMdC,EACAC,EACAC,EACA,CACE,OAAAC,EACA,QAAAC,CACF,EAIA,CACA,MAAMC,EAEF,CAAC,EAEC,CAAE,WAAAC,EAAY,OAAAC,CAAO,EAAIP,EAAa,SAASE,CAAW,EAChE,OAAAI,EAAW,UAAU,CACnB,KAAOE,GAAU,CACfH,EAAe,KAAKG,CAAK,CAC3B,EACA,MAAQC,GAAU,CAChBL,EAAQK,CAAK,CACf,EACA,SAAU,IAAM,CACd,GAAI,CACF,OAAOJ,CAAc,EAAE,QAAQJ,CAAc,EAC7CE,EAAO,CACT,OAAS,EAAG,CACVC,EAAQ,CAAU,CACpB,CACF,CACF,CAAC,EACM,CAAE,WAAAE,EAAY,OAAAC,CAAO,CAC9B",
6
+ "names": ["testDeviceActionStates", "deviceAction", "expectedStates", "internalApi", "onDone", "onError", "observedStates", "observable", "cancel", "state", "error"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ContainerModule as o}from"inversify";import{appBinderTypes as i}from"../../app-binder/di/appBinderTypes";import{SolanaAppBinder as r}from"../../app-binder/SolanaAppBinder";const B=()=>new o((n,p,e,t,d,a,m)=>{n(i.AppBinder).to(r)});export{B as appBinderModuleFactory};
1
+ import{ContainerModule as p}from"inversify";import{appBinderTypes as r}from"../../app-binder/di/appBinderTypes";import{SolanaAppBinder as e}from"../../app-binder/SolanaAppBinder";const a=()=>new p(({bind:o})=>{o(r.AppBinder).to(e)});export{a as appBinderModuleFactory};
2
2
  //# sourceMappingURL=appBinderModule.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/di/appBinderModule.ts"],
4
- "sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { appBinderTypes } from \"@internal/app-binder/di/appBinderTypes\";\nimport { SolanaAppBinder } from \"@internal/app-binder/SolanaAppBinder\";\n\nexport const appBinderModuleFactory = () =>\n new ContainerModule(\n (\n bind,\n _unbind,\n _isBound,\n _rebind,\n _unbindAsync,\n _onActivation,\n _onDeactivation,\n ) => {\n bind(appBinderTypes.AppBinder).to(SolanaAppBinder);\n },\n );\n"],
5
- "mappings": "AAAA,OAAS,mBAAAA,MAAuB,YAEhC,OAAS,kBAAAC,MAAsB,yCAC/B,OAAS,mBAAAC,MAAuB,uCAEzB,MAAMC,EAAyB,IACpC,IAAIH,EACF,CACEI,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,IACG,CACHN,EAAKH,EAAe,SAAS,EAAE,GAAGC,CAAe,CACnD,CACF",
6
- "names": ["ContainerModule", "appBinderTypes", "SolanaAppBinder", "appBinderModuleFactory", "bind", "_unbind", "_isBound", "_rebind", "_unbindAsync", "_onActivation", "_onDeactivation"]
4
+ "sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { appBinderTypes } from \"@internal/app-binder/di/appBinderTypes\";\nimport { SolanaAppBinder } from \"@internal/app-binder/SolanaAppBinder\";\n\nexport const appBinderModuleFactory = () =>\n new ContainerModule(({ bind }) => {\n bind(appBinderTypes.AppBinder).to(SolanaAppBinder);\n });\n"],
5
+ "mappings": "AAAA,OAAS,mBAAAA,MAAuB,YAEhC,OAAS,kBAAAC,MAAsB,yCAC/B,OAAS,mBAAAC,MAAuB,uCAEzB,MAAMC,EAAyB,IACpC,IAAIH,EAAgB,CAAC,CAAE,KAAAI,CAAK,IAAM,CAChCA,EAAKH,EAAe,SAAS,EAAE,GAAGC,CAAe,CACnD,CAAC",
6
+ "names": ["ContainerModule", "appBinderTypes", "SolanaAppBinder", "appBinderModuleFactory", "bind"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{Container as r}from"inversify";import{appBinderModuleFactory as t}from"./appBinderModule";describe("appBinderModule",()=>{describe("Default",()=>{let o,e;beforeEach(()=>{e=t(),o=new r,o.load(e)}),it("should return appBinder module",()=>{expect(e).toBeDefined()})})});
1
+ import{Container as r}from"inversify";import{appBinderModuleFactory as t}from"./appBinderModule";describe("appBinderModule",()=>{describe("Default",()=>{let o,e;beforeEach(()=>{e=t(),o=new r,o.loadSync(e)}),it("should return appBinder module",()=>{expect(e).toBeDefined()})})});
2
2
  //# sourceMappingURL=appBinderModule.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/di/appBinderModule.test.ts"],
4
- "sourcesContent": ["import { Container } from \"inversify\";\n\nimport { appBinderModuleFactory } from \"./appBinderModule\";\n\ndescribe(\"appBinderModule\", () => {\n describe(\"Default\", () => {\n let container: Container;\n let mod: ReturnType<typeof appBinderModuleFactory>;\n beforeEach(() => {\n mod = appBinderModuleFactory();\n container = new Container();\n container.load(mod);\n });\n\n it(\"should return appBinder module\", () => {\n expect(mod).toBeDefined();\n });\n });\n});\n"],
5
- "mappings": "AAAA,OAAS,aAAAA,MAAiB,YAE1B,OAAS,0BAAAC,MAA8B,oBAEvC,SAAS,kBAAmB,IAAM,CAChC,SAAS,UAAW,IAAM,CACxB,IAAIC,EACAC,EACJ,WAAW,IAAM,CACfA,EAAMF,EAAuB,EAC7BC,EAAY,IAAIF,EAChBE,EAAU,KAAKC,CAAG,CACpB,CAAC,EAED,GAAG,iCAAkC,IAAM,CACzC,OAAOA,CAAG,EAAE,YAAY,CAC1B,CAAC,CACH,CAAC,CACH,CAAC",
4
+ "sourcesContent": ["import { Container } from \"inversify\";\n\nimport { appBinderModuleFactory } from \"./appBinderModule\";\n\ndescribe(\"appBinderModule\", () => {\n describe(\"Default\", () => {\n let container: Container;\n let mod: ReturnType<typeof appBinderModuleFactory>;\n beforeEach(() => {\n mod = appBinderModuleFactory();\n container = new Container();\n container.loadSync(mod);\n });\n\n it(\"should return appBinder module\", () => {\n expect(mod).toBeDefined();\n });\n });\n});\n"],
5
+ "mappings": "AAAA,OAAS,aAAAA,MAAiB,YAE1B,OAAS,0BAAAC,MAA8B,oBAEvC,SAAS,kBAAmB,IAAM,CAChC,SAAS,UAAW,IAAM,CACxB,IAAIC,EACAC,EACJ,WAAW,IAAM,CACfA,EAAMF,EAAuB,EAC7BC,EAAY,IAAIF,EAChBE,EAAU,SAASC,CAAG,CACxB,CAAC,EAED,GAAG,iCAAkC,IAAM,CACzC,OAAOA,CAAG,EAAE,YAAY,CAC1B,CAAC,CACH,CAAC,CACH,CAAC",
6
6
  "names": ["Container", "appBinderModuleFactory", "container", "mod"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{APDU_MAX_PAYLOAD as r,ByteArrayBuilder as d,CommandResultFactory as m,InvalidStatusWordError as l,isSuccessCommandResult as u}from"@ledgerhq/device-management-kit";class C{constructor(n,o){this.api=n;this.args=o}async run(){const{data:n,commandFactory:o}=this.args,t=new d(n.length).addBufferToData(n).build();for(let a=0;a<t.length;a+=r){const s=a+r>=t.length,e=await this.api.sendCommand(o({more:!s,extend:a>0,chunkedData:t.slice(a,a+r)}));if(!u(e))return e;if(s)return m({data:e.data})}throw new l("No result after processing all chunks")}}export{C as SendCommandInChunksTask};
1
+ import{APDU_MAX_PAYLOAD as e,ByteArrayBuilder as d,CommandResultFactory as m,InvalidStatusWordError as l,isSuccessCommandResult as u}from"@ledgerhq/device-management-kit";class i{constructor(n,o){this.api=n;this.args=o}async run(){const{data:n,commandFactory:o}=this.args,r=new d(n.length).addBufferToData(n).build();for(let a=0;a<r.length;a+=e){const s=a+e>=r.length,t=await this.api.sendCommand(o({more:!s,extend:a>0,chunkedData:r.slice(a,a+e)}));if(!u(t))return t;if(s)return m({data:t.data})}throw new l("No result after processing all chunks")}}export{i as SendCommandInChunksTask};
2
2
  //# sourceMappingURL=SendCommandInChunksTask.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/task/SendCommandInChunksTask.ts"],
4
- "sourcesContent": ["import {\n APDU_MAX_PAYLOAD,\n ByteArrayBuilder,\n type Command,\n type CommandResult,\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nexport type SendCommandInChunksTaskArgs<T> = {\n data: Uint8Array;\n commandFactory: CommandFactory<T>;\n};\n\nexport type CommandFactory<T> = <V extends ChunkableCommandArgs>(\n args: ChunkableCommandArgs,\n) => Command<T, V>;\n\nexport type ChunkableCommandArgs = {\n chunkedData: Uint8Array;\n more: boolean;\n extend: boolean;\n};\n\nexport class SendCommandInChunksTask<T> {\n constructor(\n private api: InternalApi,\n private args: SendCommandInChunksTaskArgs<T>,\n ) {}\n\n async run(): Promise<CommandResult<T, void>> {\n const { data: fullPayload, commandFactory } = this.args;\n\n const dataBuffer = new ByteArrayBuilder(fullPayload.length)\n .addBufferToData(fullPayload)\n .build();\n\n for (\n let offset = 0;\n offset < dataBuffer.length;\n offset += APDU_MAX_PAYLOAD\n ) {\n const isLastChunk = offset + APDU_MAX_PAYLOAD >= dataBuffer.length;\n const result = await this.api.sendCommand(\n commandFactory({\n more: !isLastChunk,\n extend: offset > 0,\n chunkedData: dataBuffer.slice(offset, offset + APDU_MAX_PAYLOAD),\n }),\n );\n\n if (!isSuccessCommandResult(result)) {\n return result;\n }\n\n if (isLastChunk) {\n return CommandResultFactory({\n data: result.data,\n });\n }\n }\n\n throw new InvalidStatusWordError(\"No result after processing all chunks\");\n }\n}\n"],
5
- "mappings": "AAAA,OACE,oBAAAA,EACA,oBAAAC,EAGA,wBAAAC,EAEA,0BAAAC,EACA,0BAAAC,MACK,kCAiBA,MAAMC,CAA2B,CACtC,YACUC,EACAC,EACR,CAFQ,SAAAD,EACA,UAAAC,CACP,CAEH,MAAM,KAAuC,CAC3C,KAAM,CAAE,KAAMC,EAAa,eAAAC,CAAe,EAAI,KAAK,KAE7CC,EAAa,IAAIT,EAAiBO,EAAY,MAAM,EACvD,gBAAgBA,CAAW,EAC3B,MAAM,EAET,QACMG,EAAS,EACbA,EAASD,EAAW,OACpBC,GAAUX,EACV,CACA,MAAMY,EAAcD,EAASX,GAAoBU,EAAW,OACtDG,EAAS,MAAM,KAAK,IAAI,YAC5BJ,EAAe,CACb,KAAM,CAACG,EACP,OAAQD,EAAS,EACjB,YAAaD,EAAW,MAAMC,EAAQA,EAASX,CAAgB,CACjE,CAAC,CACH,EAEA,GAAI,CAACI,EAAuBS,CAAM,EAChC,OAAOA,EAGT,GAAID,EACF,OAAOV,EAAqB,CAC1B,KAAMW,EAAO,IACf,CAAC,CAEL,CAEA,MAAM,IAAIV,EAAuB,uCAAuC,CAC1E,CACF",
4
+ "sourcesContent": ["import {\n APDU_MAX_PAYLOAD,\n ByteArrayBuilder,\n type Command,\n type CommandResult,\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type SolanaAppErrorCodes } from \"@internal/app-binder/command/utils/SolanaApplicationErrors\";\n\nexport type SendCommandInChunksTaskArgs<T> = {\n data: Uint8Array;\n commandFactory: CommandFactory<T>;\n};\n\nexport type CommandFactory<T> = <V extends ChunkableCommandArgs>(\n args: ChunkableCommandArgs,\n) => Command<T, V, SolanaAppErrorCodes>;\n\nexport type ChunkableCommandArgs = {\n chunkedData: Uint8Array;\n more: boolean;\n extend: boolean;\n};\n\nexport class SendCommandInChunksTask<T> {\n constructor(\n private api: InternalApi,\n private args: SendCommandInChunksTaskArgs<T>,\n ) {}\n\n async run(): Promise<CommandResult<T, SolanaAppErrorCodes>> {\n const { data: fullPayload, commandFactory } = this.args;\n\n const dataBuffer = new ByteArrayBuilder(fullPayload.length)\n .addBufferToData(fullPayload)\n .build();\n\n for (\n let offset = 0;\n offset < dataBuffer.length;\n offset += APDU_MAX_PAYLOAD\n ) {\n const isLastChunk = offset + APDU_MAX_PAYLOAD >= dataBuffer.length;\n const result = await this.api.sendCommand(\n commandFactory({\n more: !isLastChunk,\n extend: offset > 0,\n chunkedData: dataBuffer.slice(offset, offset + APDU_MAX_PAYLOAD),\n }),\n );\n\n if (!isSuccessCommandResult(result)) {\n return result;\n }\n\n if (isLastChunk) {\n return CommandResultFactory({\n data: result.data,\n });\n }\n }\n\n throw new InvalidStatusWordError(\"No result after processing all chunks\");\n }\n}\n"],
5
+ "mappings": "AAAA,OACE,oBAAAA,EACA,oBAAAC,EAGA,wBAAAC,EAEA,0BAAAC,EACA,0BAAAC,MACK,kCAmBA,MAAMC,CAA2B,CACtC,YACUC,EACAC,EACR,CAFQ,SAAAD,EACA,UAAAC,CACP,CAEH,MAAM,KAAsD,CAC1D,KAAM,CAAE,KAAMC,EAAa,eAAAC,CAAe,EAAI,KAAK,KAE7CC,EAAa,IAAIT,EAAiBO,EAAY,MAAM,EACvD,gBAAgBA,CAAW,EAC3B,MAAM,EAET,QACMG,EAAS,EACbA,EAASD,EAAW,OACpBC,GAAUX,EACV,CACA,MAAMY,EAAcD,EAASX,GAAoBU,EAAW,OACtDG,EAAS,MAAM,KAAK,IAAI,YAC5BJ,EAAe,CACb,KAAM,CAACG,EACP,OAAQD,EAAS,EACjB,YAAaD,EAAW,MAAMC,EAAQA,EAASX,CAAgB,CACjE,CAAC,CACH,EAEA,GAAI,CAACI,EAAuBS,CAAM,EAChC,OAAOA,EAGT,GAAID,EACF,OAAOV,EAAqB,CAC1B,KAAMW,EAAO,IACf,CAAC,CAEL,CAEA,MAAM,IAAIV,EAAuB,uCAAuC,CAC1E,CACF",
6
6
  "names": ["APDU_MAX_PAYLOAD", "ByteArrayBuilder", "CommandResultFactory", "InvalidStatusWordError", "isSuccessCommandResult", "SendCommandInChunksTask", "api", "args", "fullPayload", "commandFactory", "dataBuffer", "offset", "isLastChunk", "result"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ByteArrayBuilder as s}from"@ledgerhq/device-management-kit";import{DerivationPathUtils as d}from"@ledgerhq/signer-utils";import{SendCommandInChunksTask as m}from"./SendCommandInChunksTask";const p=4;class l{constructor(t,r){this.api=t;this.args=r}async run(){const{sendingData:t,derivationPath:r,commandFactory:i}=this.args,n=d.splitPath(r),a=new s(t.length+2+n.length*p);a.add8BitUIntToData(1),a.add8BitUIntToData(n.length),n.forEach(o=>a.add32BitUIntToData(o)),a.addBufferToData(t);const e=a.build();return await new m(this.api,{data:e,commandFactory:i}).run()}}export{l as SignDataTask};
1
+ import{ByteArrayBuilder as s}from"@ledgerhq/device-management-kit";import{DerivationPathUtils as p}from"@ledgerhq/signer-utils";import{SendCommandInChunksTask as d}from"./SendCommandInChunksTask";const m=4;class u{constructor(t,o){this.api=t;this.args=o}async run(){const{sendingData:t,derivationPath:o,commandFactory:n}=this.args,r=p.splitPath(o),a=new s(t.length+2+r.length*m);a.add8BitUIntToData(1),a.add8BitUIntToData(r.length),r.forEach(i=>a.add32BitUIntToData(i)),a.addBufferToData(t);const e=a.build();return await new d(this.api,{data:e,commandFactory:n}).run()}}export{u as SignDataTask};
2
2
  //# sourceMappingURL=SendSignDataTask.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/task/SendSignDataTask.ts"],
4
- "sourcesContent": ["import {\n ByteArrayBuilder,\n type CommandResult,\n type InternalApi,\n} from \"@ledgerhq/device-management-kit\";\nimport { DerivationPathUtils } from \"@ledgerhq/signer-utils\";\nimport { type Maybe } from \"purify-ts\";\n\nimport { type Signature } from \"@api/model/Signature\";\n\nimport {\n type CommandFactory,\n SendCommandInChunksTask,\n} from \"./SendCommandInChunksTask\";\n\nconst PATH_SIZE = 4;\n\ntype SignDataTaskArgs = {\n sendingData: Uint8Array;\n derivationPath: string;\n commandFactory: CommandFactory<Maybe<Signature>>;\n};\n\nexport class SignDataTask {\n constructor(\n private api: InternalApi,\n private args: SignDataTaskArgs,\n ) {}\n\n async run(): Promise<CommandResult<Maybe<Signature>, void>> {\n const { sendingData, derivationPath, commandFactory } = this.args;\n\n const paths = DerivationPathUtils.splitPath(derivationPath);\n const builder = new ByteArrayBuilder(\n sendingData.length + 2 + paths.length * PATH_SIZE,\n );\n // add the number of signers\n builder.add8BitUIntToData(1);\n // add the number of derivation\n builder.add8BitUIntToData(paths.length);\n // add every derivation path\n paths.forEach((path) => builder.add32BitUIntToData(path));\n builder.addBufferToData(sendingData);\n const buffer = builder.build();\n\n return await new SendCommandInChunksTask<Maybe<Signature>>(this.api, {\n data: buffer,\n commandFactory,\n }).run();\n }\n}\n"],
5
- "mappings": "AAAA,OACE,oBAAAA,MAGK,kCACP,OAAS,uBAAAC,MAA2B,yBAKpC,OAEE,2BAAAC,MACK,4BAEP,MAAMC,EAAY,EAQX,MAAMC,CAAa,CACxB,YACUC,EACAC,EACR,CAFQ,SAAAD,EACA,UAAAC,CACP,CAEH,MAAM,KAAsD,CAC1D,KAAM,CAAE,YAAAC,EAAa,eAAAC,EAAgB,eAAAC,CAAe,EAAI,KAAK,KAEvDC,EAAQT,EAAoB,UAAUO,CAAc,EACpDG,EAAU,IAAIX,EAClBO,EAAY,OAAS,EAAIG,EAAM,OAASP,CAC1C,EAEAQ,EAAQ,kBAAkB,CAAC,EAE3BA,EAAQ,kBAAkBD,EAAM,MAAM,EAEtCA,EAAM,QAASE,GAASD,EAAQ,mBAAmBC,CAAI,CAAC,EACxDD,EAAQ,gBAAgBJ,CAAW,EACnC,MAAMM,EAASF,EAAQ,MAAM,EAE7B,OAAO,MAAM,IAAIT,EAA0C,KAAK,IAAK,CACnE,KAAMW,EACN,eAAAJ,CACF,CAAC,EAAE,IAAI,CACT,CACF",
4
+ "sourcesContent": ["import {\n ByteArrayBuilder,\n type CommandResult,\n type InternalApi,\n} from \"@ledgerhq/device-management-kit\";\nimport { DerivationPathUtils } from \"@ledgerhq/signer-utils\";\nimport { type Maybe } from \"purify-ts\";\n\nimport { type Signature } from \"@api/model/Signature\";\nimport { type SolanaAppErrorCodes } from \"@internal/app-binder/command/utils/SolanaApplicationErrors\";\n\nimport {\n type CommandFactory,\n SendCommandInChunksTask,\n} from \"./SendCommandInChunksTask\";\n\nconst PATH_SIZE = 4;\n\ntype SignDataTaskArgs = {\n sendingData: Uint8Array;\n derivationPath: string;\n commandFactory: CommandFactory<Maybe<Signature | SolanaAppErrorCodes>>;\n};\n\nexport class SignDataTask {\n constructor(\n private api: InternalApi,\n private args: SignDataTaskArgs,\n ) {}\n\n async run(): Promise<\n CommandResult<Maybe<Signature | SolanaAppErrorCodes>, SolanaAppErrorCodes>\n > {\n const { sendingData, derivationPath, commandFactory } = this.args;\n\n const paths = DerivationPathUtils.splitPath(derivationPath);\n const builder = new ByteArrayBuilder(\n sendingData.length + 2 + paths.length * PATH_SIZE,\n );\n // add the number of signers\n builder.add8BitUIntToData(1);\n // add the number of derivation\n builder.add8BitUIntToData(paths.length);\n // add every derivation path\n paths.forEach((path) => builder.add32BitUIntToData(path));\n builder.addBufferToData(sendingData);\n const buffer = builder.build();\n\n return await new SendCommandInChunksTask<\n Maybe<Signature | SolanaAppErrorCodes>\n >(this.api, {\n data: buffer,\n commandFactory,\n }).run();\n }\n}\n"],
5
+ "mappings": "AAAA,OACE,oBAAAA,MAGK,kCACP,OAAS,uBAAAC,MAA2B,yBAMpC,OAEE,2BAAAC,MACK,4BAEP,MAAMC,EAAY,EAQX,MAAMC,CAAa,CACxB,YACUC,EACAC,EACR,CAFQ,SAAAD,EACA,UAAAC,CACP,CAEH,MAAM,KAEJ,CACA,KAAM,CAAE,YAAAC,EAAa,eAAAC,EAAgB,eAAAC,CAAe,EAAI,KAAK,KAEvDC,EAAQT,EAAoB,UAAUO,CAAc,EACpDG,EAAU,IAAIX,EAClBO,EAAY,OAAS,EAAIG,EAAM,OAASP,CAC1C,EAEAQ,EAAQ,kBAAkB,CAAC,EAE3BA,EAAQ,kBAAkBD,EAAM,MAAM,EAEtCA,EAAM,QAASE,GAASD,EAAQ,mBAAmBC,CAAI,CAAC,EACxDD,EAAQ,gBAAgBJ,CAAW,EACnC,MAAMM,EAASF,EAAQ,MAAM,EAE7B,OAAO,MAAM,IAAIT,EAEf,KAAK,IAAK,CACV,KAAMW,EACN,eAAAJ,CACF,CAAC,EAAE,IAAI,CACT,CACF",
6
6
  "names": ["ByteArrayBuilder", "DerivationPathUtils", "SendCommandInChunksTask", "PATH_SIZE", "SignDataTask", "api", "args", "sendingData", "derivationPath", "commandFactory", "paths", "builder", "path", "buffer"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{APDU_MAX_PAYLOAD as m,ByteArrayBuilder as u,CommandResultFactory as T,InvalidStatusWordError as h,isSuccessCommandResult as E}from"@ledgerhq/device-management-kit";import{DerivationPathUtils as C}from"@ledgerhq/signer-utils";import{Just as I,Nothing as b}from"purify-ts";import{SignTransactionCommand as x}from"../../app-binder/command/SignTransactionCommand";import{makeDeviceActionInternalApiMock as v}from"../../app-binder/device-action/__test-utils__/makeInternalApi";import{SignDataTask as f}from"../../app-binder/task/SendSignDataTask";const r="44'/501'/0'/0'",g=4;describe("SignDataTask",()=>{const t=v(),p=new Uint8Array([18,52,86,120,144,171,205,239]),A=T({data:I(p)}),D=T({data:b});beforeEach(()=>{jest.resetAllMocks()}),describe("run with SignTransactionCommand",()=>{const i=new Uint8Array([1,2,3,4]),c=new Uint8Array(new Array(500).fill(1));it("should send the transaction in a single command",async()=>{const n=C.splitPath(r),e=new u(i.length+2+n.length*g);e.add8BitUIntToData(1),e.add8BitUIntToData(n.length),n.forEach(s=>e.add32BitUIntToData(s)),e.addBufferToData(i);const o=e.build(),d={derivationPath:r,sendingData:i,commandFactory:s=>new x({serializedTransaction:s.chunkedData,more:s.more,extend:s.extend})};t.sendCommand.mockResolvedValueOnce(A);const a=await new f(t,d).run();expect(t.sendCommand).toHaveBeenCalledTimes(1),expect(Array.from(t.sendCommand.mock.calls[0]?.[0]?.args?.serializedTransaction||[])).toEqual(Array.from(o)),E(a)?expect(a.data).toEqual(I(p)):fail(`Expected a successful result, but got an error: ${a.error}`)}),it("should send the transaction in chunks",async()=>{const n=C.splitPath(r),e=new u(c.length+2+n.length*g);e.add8BitUIntToData(1),e.add8BitUIntToData(n.length),n.forEach(l=>e.add32BitUIntToData(l)),e.addBufferToData(c);const o=e.build(),d=o.slice(0,m),a=o.slice(m,m*2),s=o.slice(m*2,m*3),w={derivationPath:r,sendingData:c,commandFactory:l=>new x({serializedTransaction:l.chunkedData,more:l.more,extend:l.extend})};t.sendCommand.mockResolvedValueOnce(D).mockResolvedValueOnce(D).mockResolvedValueOnce(A);const B=await new f(t,w).run();expect(t.sendCommand).toHaveBeenCalledTimes(3),expect(t.sendCommand).toHaveBeenNthCalledWith(1,expect.objectContaining({args:{serializedTransaction:d,extend:!1,more:!0}})),expect(t.sendCommand).toHaveBeenNthCalledWith(2,expect.objectContaining({args:{serializedTransaction:a,extend:!0,more:!0}})),expect(t.sendCommand).toHaveBeenNthCalledWith(3,expect.objectContaining({args:{serializedTransaction:s,extend:!0,more:!1}})),E(B)?expect(B.data).toEqual(I(p)):fail(`Expected a successful result, but got an error: ${B.error}`)}),it("should return an error if the command fails",async()=>{const n=C.splitPath(r),e=new u(i.length+2+n.length*g);e.add8BitUIntToData(1),e.add8BitUIntToData(n.length),n.forEach(a=>e.add32BitUIntToData(a)),e.addBufferToData(i);const o={derivationPath:r,sendingData:i,commandFactory:a=>new x({serializedTransaction:a.chunkedData,more:a.more,extend:a.extend})};t.sendCommand.mockResolvedValueOnce(T({error:new h("no signature returned")}));const d=await new f(t,o).run();expect(t.sendCommand).toHaveBeenCalledTimes(1),expect(d).toMatchObject({error:new h("no signature returned")})}),it("should return an error if a chunk command fails",async()=>{const n=C.splitPath(r),e=new u(c.length+2+n.length*g);e.add8BitUIntToData(1),e.add8BitUIntToData(n.length),n.forEach(a=>e.add32BitUIntToData(a)),e.addBufferToData(c);const o={derivationPath:r,sendingData:c,commandFactory:a=>new x({serializedTransaction:a.chunkedData,more:a.more,extend:a.extend})};t.sendCommand.mockResolvedValueOnce(D).mockResolvedValueOnce(T({error:new h("An error occurred")}));const d=await new f(t,o).run();expect(t.sendCommand).toHaveBeenCalledTimes(2),expect(d).toMatchObject({error:new h("An error occurred")})})})});
1
+ import{APDU_MAX_PAYLOAD as m,ByteArrayBuilder as u,CommandResultFactory as T,InvalidStatusWordError as h,isSuccessCommandResult as E}from"@ledgerhq/device-management-kit";import{DerivationPathUtils as C}from"@ledgerhq/signer-utils";import{Just as I,Nothing as b}from"purify-ts";import{SignTransactionCommand as x}from"../../app-binder/command/SignTransactionCommand";import{makeDeviceActionInternalApiMock as v}from"../../app-binder/device-action/__test-utils__/makeInternalApi";import{SignDataTask as f}from"../../app-binder/task/SendSignDataTask";const r="44'/501'/0'/0'",g=4;describe("SignDataTask",()=>{const t=v(),p=new Uint8Array([18,52,86,120,144,171,205,239]),A=T({data:I(p)}),D=T({data:b});beforeEach(()=>{vi.resetAllMocks()}),describe("run with SignTransactionCommand",()=>{const i=new Uint8Array([1,2,3,4]),c=new Uint8Array(new Array(500).fill(1));it("should send the transaction in a single command",async()=>{const n=C.splitPath(r),e=new u(i.length+2+n.length*g);e.add8BitUIntToData(1),e.add8BitUIntToData(n.length),n.forEach(d=>e.add32BitUIntToData(d)),e.addBufferToData(i);const o=e.build(),s={derivationPath:r,sendingData:i,commandFactory:d=>new x({serializedTransaction:d.chunkedData,more:d.more,extend:d.extend})};t.sendCommand.mockResolvedValueOnce(A);const a=await new f(t,s).run();expect(t.sendCommand).toHaveBeenCalledTimes(1),expect(Array.from(t.sendCommand.mock.calls[0]?.[0]?.args?.serializedTransaction||[])).toEqual(Array.from(o)),E(a)?expect(a.data).toEqual(I(p)):assert.fail(`Expected a successful result, but got an error: ${a.error}`)}),it("should send the transaction in chunks",async()=>{const n=C.splitPath(r),e=new u(c.length+2+n.length*g);e.add8BitUIntToData(1),e.add8BitUIntToData(n.length),n.forEach(l=>e.add32BitUIntToData(l)),e.addBufferToData(c);const o=e.build(),s=o.slice(0,m),a=o.slice(m,m*2),d=o.slice(m*2,m*3),w={derivationPath:r,sendingData:c,commandFactory:l=>new x({serializedTransaction:l.chunkedData,more:l.more,extend:l.extend})};t.sendCommand.mockResolvedValueOnce(D).mockResolvedValueOnce(D).mockResolvedValueOnce(A);const B=await new f(t,w).run();expect(t.sendCommand).toHaveBeenCalledTimes(3),expect(t.sendCommand).toHaveBeenNthCalledWith(1,expect.objectContaining({args:{serializedTransaction:s,extend:!1,more:!0}})),expect(t.sendCommand).toHaveBeenNthCalledWith(2,expect.objectContaining({args:{serializedTransaction:a,extend:!0,more:!0}})),expect(t.sendCommand).toHaveBeenNthCalledWith(3,expect.objectContaining({args:{serializedTransaction:d,extend:!0,more:!1}})),E(B)?expect(B.data).toEqual(I(p)):assert.fail(`Expected a successful result, but got an error: ${B.error}`)}),it("should return an error if the command fails",async()=>{const n=C.splitPath(r),e=new u(i.length+2+n.length*g);e.add8BitUIntToData(1),e.add8BitUIntToData(n.length),n.forEach(a=>e.add32BitUIntToData(a)),e.addBufferToData(i);const o={derivationPath:r,sendingData:i,commandFactory:a=>new x({serializedTransaction:a.chunkedData,more:a.more,extend:a.extend})};t.sendCommand.mockResolvedValueOnce(T({error:new h("no signature returned")}));const s=await new f(t,o).run();expect(t.sendCommand).toHaveBeenCalledTimes(1),expect(s).toMatchObject({error:new h("no signature returned")})}),it("should return an error if a chunk command fails",async()=>{const n=C.splitPath(r),e=new u(c.length+2+n.length*g);e.add8BitUIntToData(1),e.add8BitUIntToData(n.length),n.forEach(a=>e.add32BitUIntToData(a)),e.addBufferToData(c);const o={derivationPath:r,sendingData:c,commandFactory:a=>new x({serializedTransaction:a.chunkedData,more:a.more,extend:a.extend})};t.sendCommand.mockResolvedValueOnce(D).mockResolvedValueOnce(T({error:new h("An error occurred")}));const s=await new f(t,o).run();expect(t.sendCommand).toHaveBeenCalledTimes(2),expect(s).toMatchObject({error:new h("An error occurred")})})})});
2
2
  //# sourceMappingURL=SendSignDataTask.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/task/SendSignDataTask.test.ts"],
4
- "sourcesContent": ["import {\n APDU_MAX_PAYLOAD,\n ByteArrayBuilder,\n CommandResultFactory,\n InvalidStatusWordError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\nimport { DerivationPathUtils } from \"@ledgerhq/signer-utils\";\nimport { Just, Nothing } from \"purify-ts\";\n\nimport { SignTransactionCommand } from \"@internal/app-binder/command/SignTransactionCommand\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport { SignDataTask } from \"@internal/app-binder/task/SendSignDataTask\";\n\nimport { type ChunkableCommandArgs } from \"./SendCommandInChunksTask\";\n\nconst DERIVATION_PATH = \"44'/501'/0'/0'\";\nconst PATH_SIZE = 4;\n\ndescribe(\"SignDataTask\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const signature = new Uint8Array([\n 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef,\n ]);\n const resultOk = CommandResultFactory({ data: Just(signature) });\n const resultNothing = CommandResultFactory({ data: Nothing });\n\n beforeEach(() => {\n jest.resetAllMocks();\n });\n\n describe(\"run with SignTransactionCommand\", () => {\n const SIMPLE_TRANSACTION = new Uint8Array([0x01, 0x02, 0x03, 0x04]);\n const BIG_TRANSACTION = new Uint8Array(new Array(500).fill(0x01));\n\n it(\"should send the transaction in a single command\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const paths = DerivationPathUtils.splitPath(DERIVATION_PATH);\n const builder = new ByteArrayBuilder(\n SIMPLE_TRANSACTION.length + 2 + paths.length * PATH_SIZE,\n );\n builder.add8BitUIntToData(1);\n builder.add8BitUIntToData(paths.length);\n paths.forEach((path) => builder.add32BitUIntToData(path));\n builder.addBufferToData(SIMPLE_TRANSACTION);\n const EXPECTED_SIMPLE_TRANSACTION = builder.build();\n\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: SIMPLE_TRANSACTION,\n commandFactory: (chunkArgs: ChunkableCommandArgs) =>\n new SignTransactionCommand({\n serializedTransaction: chunkArgs.chunkedData,\n more: chunkArgs.more,\n extend: chunkArgs.extend,\n }),\n };\n apiMock.sendCommand.mockResolvedValueOnce(resultOk);\n\n // WHEN--------------------------------\n //-------------------------------------\n const result = await new SignDataTask(apiMock, args).run();\n\n // THEN--------------------------------\n //-------------------------------------\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(1);\n expect(\n Array.from(\n (apiMock.sendCommand.mock.calls[0]?.[0] as SignTransactionCommand)\n ?.args?.serializedTransaction || [],\n ),\n ).toEqual(Array.from(EXPECTED_SIMPLE_TRANSACTION));\n\n if (isSuccessCommandResult(result)) {\n expect(result.data).toEqual(Just(signature));\n } else {\n fail(`Expected a successful result, but got an error: ${result.error}`);\n }\n });\n\n it(\"should send the transaction in chunks\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const paths = DerivationPathUtils.splitPath(DERIVATION_PATH);\n const builder = new ByteArrayBuilder(\n BIG_TRANSACTION.length + 2 + paths.length * PATH_SIZE,\n );\n builder.add8BitUIntToData(1);\n builder.add8BitUIntToData(paths.length);\n paths.forEach((path) => builder.add32BitUIntToData(path));\n builder.addBufferToData(BIG_TRANSACTION);\n const dataBuffer = builder.build();\n\n const EXPECTED_BIG_TRANSACTION_CHUNK_1 = dataBuffer.slice(\n 0,\n APDU_MAX_PAYLOAD,\n );\n const EXPECTED_BIG_TRANSACTION_CHUNK_2 = dataBuffer.slice(\n APDU_MAX_PAYLOAD,\n APDU_MAX_PAYLOAD * 2,\n );\n const EXPECTED_BIG_TRANSACTION_CHUNK_3 = dataBuffer.slice(\n APDU_MAX_PAYLOAD * 2,\n APDU_MAX_PAYLOAD * 3,\n );\n\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: BIG_TRANSACTION,\n commandFactory: (chunkArgs: ChunkableCommandArgs) =>\n new SignTransactionCommand({\n serializedTransaction: chunkArgs.chunkedData,\n more: chunkArgs.more,\n extend: chunkArgs.extend,\n }),\n };\n apiMock.sendCommand\n .mockResolvedValueOnce(resultNothing)\n .mockResolvedValueOnce(resultNothing)\n .mockResolvedValueOnce(resultOk);\n\n // WHEN--------------------------------\n //-------------------------------------\n const result = await new SignDataTask(apiMock, args).run();\n\n // THEN--------------------------------\n //-------------------------------------\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(3);\n expect(apiMock.sendCommand).toHaveBeenNthCalledWith(\n 1,\n expect.objectContaining({\n args: {\n serializedTransaction: EXPECTED_BIG_TRANSACTION_CHUNK_1,\n extend: false,\n more: true,\n },\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenNthCalledWith(\n 2,\n expect.objectContaining({\n args: {\n serializedTransaction: EXPECTED_BIG_TRANSACTION_CHUNK_2,\n extend: true,\n more: true,\n },\n }),\n );\n\n expect(apiMock.sendCommand).toHaveBeenNthCalledWith(\n 3,\n expect.objectContaining({\n args: {\n serializedTransaction: EXPECTED_BIG_TRANSACTION_CHUNK_3,\n extend: true,\n more: false,\n },\n }),\n );\n\n if (isSuccessCommandResult(result)) {\n expect(result.data).toEqual(Just(signature));\n } else {\n fail(`Expected a successful result, but got an error: ${result.error}`);\n }\n });\n\n it(\"should return an error if the command fails\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const paths = DerivationPathUtils.splitPath(DERIVATION_PATH);\n const builder = new ByteArrayBuilder(\n SIMPLE_TRANSACTION.length + 2 + paths.length * PATH_SIZE,\n );\n builder.add8BitUIntToData(1);\n builder.add8BitUIntToData(paths.length);\n paths.forEach((path) => builder.add32BitUIntToData(path));\n builder.addBufferToData(SIMPLE_TRANSACTION);\n\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: SIMPLE_TRANSACTION,\n commandFactory: (chunkArgs: ChunkableCommandArgs) =>\n new SignTransactionCommand({\n serializedTransaction: chunkArgs.chunkedData,\n more: chunkArgs.more,\n extend: chunkArgs.extend,\n }),\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"no signature returned\"),\n }),\n );\n\n // WHEN--------------------------------\n //-------------------------------------\n const result = await new SignDataTask(apiMock, args).run();\n\n // THEN--------------------------------\n //-------------------------------------\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(1);\n expect(result).toMatchObject({\n error: new InvalidStatusWordError(\"no signature returned\"),\n });\n });\n\n it(\"should return an error if a chunk command fails\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const paths = DerivationPathUtils.splitPath(DERIVATION_PATH);\n const builder = new ByteArrayBuilder(\n BIG_TRANSACTION.length + 2 + paths.length * PATH_SIZE,\n );\n builder.add8BitUIntToData(1);\n builder.add8BitUIntToData(paths.length);\n paths.forEach((path) => builder.add32BitUIntToData(path));\n builder.addBufferToData(BIG_TRANSACTION);\n\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: BIG_TRANSACTION,\n commandFactory: (chunkArgs: ChunkableCommandArgs) =>\n new SignTransactionCommand({\n serializedTransaction: chunkArgs.chunkedData,\n more: chunkArgs.more,\n extend: chunkArgs.extend,\n }),\n };\n apiMock.sendCommand\n .mockResolvedValueOnce(resultNothing)\n .mockResolvedValueOnce(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"An error occurred\"),\n }),\n );\n\n // WHEN--------------------------------\n //-------------------------------------\n const result = await new SignDataTask(apiMock, args).run();\n\n // THEN--------------------------------\n //-------------------------------------\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(2);\n expect(result).toMatchObject({\n error: new InvalidStatusWordError(\"An error occurred\"),\n });\n });\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n APDU_MAX_PAYLOAD,\n ByteArrayBuilder,\n CommandResultFactory,\n InvalidStatusWordError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\nimport { DerivationPathUtils } from \"@ledgerhq/signer-utils\";\nimport { Just, Nothing } from \"purify-ts\";\n\nimport { SignTransactionCommand } from \"@internal/app-binder/command/SignTransactionCommand\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport { SignDataTask } from \"@internal/app-binder/task/SendSignDataTask\";\n\nimport { type ChunkableCommandArgs } from \"./SendCommandInChunksTask\";\n\nconst DERIVATION_PATH = \"44'/501'/0'/0'\";\nconst PATH_SIZE = 4;\n\ndescribe(\"SignDataTask\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const signature = new Uint8Array([\n 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef,\n ]);\n const resultOk = CommandResultFactory({ data: Just(signature) });\n const resultNothing = CommandResultFactory({ data: Nothing });\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"run with SignTransactionCommand\", () => {\n const SIMPLE_TRANSACTION = new Uint8Array([0x01, 0x02, 0x03, 0x04]);\n const BIG_TRANSACTION = new Uint8Array(new Array(500).fill(0x01));\n\n it(\"should send the transaction in a single command\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const paths = DerivationPathUtils.splitPath(DERIVATION_PATH);\n const builder = new ByteArrayBuilder(\n SIMPLE_TRANSACTION.length + 2 + paths.length * PATH_SIZE,\n );\n builder.add8BitUIntToData(1);\n builder.add8BitUIntToData(paths.length);\n paths.forEach((path) => builder.add32BitUIntToData(path));\n builder.addBufferToData(SIMPLE_TRANSACTION);\n const EXPECTED_SIMPLE_TRANSACTION = builder.build();\n\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: SIMPLE_TRANSACTION,\n commandFactory: (chunkArgs: ChunkableCommandArgs) =>\n new SignTransactionCommand({\n serializedTransaction: chunkArgs.chunkedData,\n more: chunkArgs.more,\n extend: chunkArgs.extend,\n }),\n };\n apiMock.sendCommand.mockResolvedValueOnce(resultOk);\n\n // WHEN--------------------------------\n //-------------------------------------\n const result = await new SignDataTask(apiMock, args).run();\n\n // THEN--------------------------------\n //-------------------------------------\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(1);\n expect(\n Array.from(\n (apiMock.sendCommand.mock.calls[0]?.[0] as SignTransactionCommand)\n ?.args?.serializedTransaction || [],\n ),\n ).toEqual(Array.from(EXPECTED_SIMPLE_TRANSACTION));\n\n if (isSuccessCommandResult(result)) {\n expect(result.data).toEqual(Just(signature));\n } else {\n assert.fail(\n `Expected a successful result, but got an error: ${result.error}`,\n );\n }\n });\n\n it(\"should send the transaction in chunks\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const paths = DerivationPathUtils.splitPath(DERIVATION_PATH);\n const builder = new ByteArrayBuilder(\n BIG_TRANSACTION.length + 2 + paths.length * PATH_SIZE,\n );\n builder.add8BitUIntToData(1);\n builder.add8BitUIntToData(paths.length);\n paths.forEach((path) => builder.add32BitUIntToData(path));\n builder.addBufferToData(BIG_TRANSACTION);\n const dataBuffer = builder.build();\n\n const EXPECTED_BIG_TRANSACTION_CHUNK_1 = dataBuffer.slice(\n 0,\n APDU_MAX_PAYLOAD,\n );\n const EXPECTED_BIG_TRANSACTION_CHUNK_2 = dataBuffer.slice(\n APDU_MAX_PAYLOAD,\n APDU_MAX_PAYLOAD * 2,\n );\n const EXPECTED_BIG_TRANSACTION_CHUNK_3 = dataBuffer.slice(\n APDU_MAX_PAYLOAD * 2,\n APDU_MAX_PAYLOAD * 3,\n );\n\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: BIG_TRANSACTION,\n commandFactory: (chunkArgs: ChunkableCommandArgs) =>\n new SignTransactionCommand({\n serializedTransaction: chunkArgs.chunkedData,\n more: chunkArgs.more,\n extend: chunkArgs.extend,\n }),\n };\n apiMock.sendCommand\n .mockResolvedValueOnce(resultNothing)\n .mockResolvedValueOnce(resultNothing)\n .mockResolvedValueOnce(resultOk);\n\n // WHEN--------------------------------\n //-------------------------------------\n const result = await new SignDataTask(apiMock, args).run();\n\n // THEN--------------------------------\n //-------------------------------------\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(3);\n expect(apiMock.sendCommand).toHaveBeenNthCalledWith(\n 1,\n expect.objectContaining({\n args: {\n serializedTransaction: EXPECTED_BIG_TRANSACTION_CHUNK_1,\n extend: false,\n more: true,\n },\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenNthCalledWith(\n 2,\n expect.objectContaining({\n args: {\n serializedTransaction: EXPECTED_BIG_TRANSACTION_CHUNK_2,\n extend: true,\n more: true,\n },\n }),\n );\n\n expect(apiMock.sendCommand).toHaveBeenNthCalledWith(\n 3,\n expect.objectContaining({\n args: {\n serializedTransaction: EXPECTED_BIG_TRANSACTION_CHUNK_3,\n extend: true,\n more: false,\n },\n }),\n );\n\n if (isSuccessCommandResult(result)) {\n expect(result.data).toEqual(Just(signature));\n } else {\n assert.fail(\n `Expected a successful result, but got an error: ${result.error}`,\n );\n }\n });\n\n it(\"should return an error if the command fails\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const paths = DerivationPathUtils.splitPath(DERIVATION_PATH);\n const builder = new ByteArrayBuilder(\n SIMPLE_TRANSACTION.length + 2 + paths.length * PATH_SIZE,\n );\n builder.add8BitUIntToData(1);\n builder.add8BitUIntToData(paths.length);\n paths.forEach((path) => builder.add32BitUIntToData(path));\n builder.addBufferToData(SIMPLE_TRANSACTION);\n\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: SIMPLE_TRANSACTION,\n commandFactory: (chunkArgs: ChunkableCommandArgs) =>\n new SignTransactionCommand({\n serializedTransaction: chunkArgs.chunkedData,\n more: chunkArgs.more,\n extend: chunkArgs.extend,\n }),\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"no signature returned\"),\n }),\n );\n\n // WHEN--------------------------------\n //-------------------------------------\n const result = await new SignDataTask(apiMock, args).run();\n\n // THEN--------------------------------\n //-------------------------------------\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(1);\n expect(result).toMatchObject({\n error: new InvalidStatusWordError(\"no signature returned\"),\n });\n });\n\n it(\"should return an error if a chunk command fails\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const paths = DerivationPathUtils.splitPath(DERIVATION_PATH);\n const builder = new ByteArrayBuilder(\n BIG_TRANSACTION.length + 2 + paths.length * PATH_SIZE,\n );\n builder.add8BitUIntToData(1);\n builder.add8BitUIntToData(paths.length);\n paths.forEach((path) => builder.add32BitUIntToData(path));\n builder.addBufferToData(BIG_TRANSACTION);\n\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: BIG_TRANSACTION,\n commandFactory: (chunkArgs: ChunkableCommandArgs) =>\n new SignTransactionCommand({\n serializedTransaction: chunkArgs.chunkedData,\n more: chunkArgs.more,\n extend: chunkArgs.extend,\n }),\n };\n apiMock.sendCommand\n .mockResolvedValueOnce(resultNothing)\n .mockResolvedValueOnce(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"An error occurred\"),\n }),\n );\n\n // WHEN--------------------------------\n //-------------------------------------\n const result = await new SignDataTask(apiMock, args).run();\n\n // THEN--------------------------------\n //-------------------------------------\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(2);\n expect(result).toMatchObject({\n error: new InvalidStatusWordError(\"An error occurred\"),\n });\n });\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": ["APDU_MAX_PAYLOAD", "ByteArrayBuilder", "CommandResultFactory", "InvalidStatusWordError", "isSuccessCommandResult", "DerivationPathUtils", "Just", "Nothing", "SignTransactionCommand", "makeDeviceActionInternalApiMock", "SignDataTask", "DERIVATION_PATH", "PATH_SIZE", "apiMock", "signature", "resultOk", "resultNothing", "SIMPLE_TRANSACTION", "BIG_TRANSACTION", "paths", "builder", "path", "EXPECTED_SIMPLE_TRANSACTION", "args", "chunkArgs", "result", "dataBuffer", "EXPECTED_BIG_TRANSACTION_CHUNK_1", "EXPECTED_BIG_TRANSACTION_CHUNK_2", "EXPECTED_BIG_TRANSACTION_CHUNK_3"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ByteArrayBuilder as g}from"@ledgerhq/device-management-kit";import{DerivationPathUtils as l}from"@ledgerhq/signer-utils";import{SignOffChainMessageCommand as f}from"../../app-binder/command/SignOffChainMessageCommand";class y{constructor(n,e){this.api=n;this.args=e}async run(){const{sendingData:n,derivationPath:e}=this.args,s=this._buildApduCommand(this._buildFullMessage(n),l.splitPath(e));return await this.api.sendCommand(new f({message:s,derivationPath:e}))}_buildFullMessage(n){const e=new TextEncoder().encode("solana offchain"),s=4,a=new Uint8Array(s);a[2]=n.length;const i=new Uint8Array(1+e.length+a.length+n.length);let t=0;return i[t++]=255,i.set(e,t),t+=e.length,i.set(a,t),t+=a.length,i.set(n,t),i}_buildApduCommand(n,e){const o=e.length,r=new g(n.length+1+1+o*4);return r.add8BitUIntToData(1),r.add8BitUIntToData(o),e.forEach(u=>{const d=new Uint8Array(4);new DataView(d.buffer).setUint32(0,u,!1),r.addBufferToData(d)}),r.addBufferToData(n),r.build()}}export{y as SendSignMessageTask};
1
+ import{APDU_MAX_PAYLOAD as d,ByteArrayBuilder as s,CommandResultFactory as u,InvalidStatusWordError as m}from"@ledgerhq/device-management-kit";import{DerivationPathUtils as g}from"@ledgerhq/signer-utils";import{SignOffChainMessageCommand as l}from"../../app-binder/command/SignOffChainMessageCommand";class b{constructor(t,e){this.api=t;this.args=e}async run(){const{sendingData:t,derivationPath:e}=this.args,n=this._buildApduCommand(this._buildFullMessage(t),g.splitPath(e));return n.length>d?u({error:new m("The APDU command exceeds the maximum allowable size (255 bytes)")}):await this.api.sendCommand(new l({message:n}))}_buildFullMessage(t){return new s().add8BitUIntToData(255).addAsciiStringToData("solana offchain").add16BitUIntToData(0).add16BitUIntToData(t.length,!1).addBufferToData(t).build()}_buildApduCommand(t,e){const r=e.length,a=new s(t.length+1+1+r*4);return a.add8BitUIntToData(1),a.add8BitUIntToData(r),e.forEach(o=>{const i=new Uint8Array(4);new DataView(i.buffer).setUint32(0,o,!1),a.addBufferToData(i)}),a.addBufferToData(t),a.build()}}export{b as SendSignMessageTask};
2
2
  //# sourceMappingURL=SendSignMessageTask.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/task/SendSignMessageTask.ts"],
4
- "sourcesContent": ["import {\n ByteArrayBuilder,\n type CommandResult,\n type InternalApi,\n} from \"@ledgerhq/device-management-kit\";\nimport { DerivationPathUtils } from \"@ledgerhq/signer-utils\";\n\nimport { SignOffChainMessageCommand } from \"@internal/app-binder/command/SignOffChainMessageCommand\";\n\nexport type SendSignMessageTaskArgs = {\n sendingData: Uint8Array;\n derivationPath: string;\n};\n\nexport type SendSignMessageTaskRunFunctionReturn = Promise<\n CommandResult<Uint8Array, void>\n>;\n\nexport class SendSignMessageTask {\n constructor(\n private api: InternalApi,\n private args: SendSignMessageTaskArgs,\n ) {}\n\n async run(): SendSignMessageTaskRunFunctionReturn {\n const { sendingData, derivationPath } = this.args;\n\n const commandBuffer = this._buildApduCommand(\n this._buildFullMessage(sendingData),\n DerivationPathUtils.splitPath(derivationPath),\n );\n\n return await this.api.sendCommand(\n new SignOffChainMessageCommand({\n message: commandBuffer,\n derivationPath,\n }),\n );\n }\n\n private _buildFullMessage(sendingData: Uint8Array): Uint8Array {\n const prefix = new TextEncoder().encode(\"solana offchain\");\n const msgLengthFieldSize = 4;\n\n const lengthBytes = new Uint8Array(msgLengthFieldSize);\n lengthBytes[2] = sendingData.length;\n\n const fullMessage = new Uint8Array(\n 1 + prefix.length + lengthBytes.length + sendingData.length,\n );\n\n let offset = 0;\n fullMessage[offset++] = 0xff;\n fullMessage.set(prefix, offset);\n offset += prefix.length;\n fullMessage.set(lengthBytes, offset);\n offset += lengthBytes.length;\n fullMessage.set(sendingData, offset);\n\n return fullMessage;\n }\n\n private _buildApduCommand(\n fullMessage: Uint8Array,\n paths: number[],\n ): Uint8Array {\n const numberOfSigners = 1;\n const pathSize = 4;\n const signersCountSize = 1;\n const derivationsCountSize = 1;\n const numberOfDerivations = paths.length;\n const builder = new ByteArrayBuilder(\n fullMessage.length +\n signersCountSize +\n derivationsCountSize +\n numberOfDerivations * pathSize,\n );\n\n builder.add8BitUIntToData(numberOfSigners);\n builder.add8BitUIntToData(numberOfDerivations);\n\n paths.forEach((path) => {\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setUint32(0, path, false);\n builder.addBufferToData(buffer);\n });\n\n builder.addBufferToData(fullMessage);\n return builder.build();\n }\n}\n"],
5
- "mappings": "AAAA,OACE,oBAAAA,MAGK,kCACP,OAAS,uBAAAC,MAA2B,yBAEpC,OAAS,8BAAAC,MAAkC,0DAWpC,MAAMC,CAAoB,CAC/B,YACUC,EACAC,EACR,CAFQ,SAAAD,EACA,UAAAC,CACP,CAEH,MAAM,KAA4C,CAChD,KAAM,CAAE,YAAAC,EAAa,eAAAC,CAAe,EAAI,KAAK,KAEvCC,EAAgB,KAAK,kBACzB,KAAK,kBAAkBF,CAAW,EAClCL,EAAoB,UAAUM,CAAc,CAC9C,EAEA,OAAO,MAAM,KAAK,IAAI,YACpB,IAAIL,EAA2B,CAC7B,QAASM,EACT,eAAAD,CACF,CAAC,CACH,CACF,CAEQ,kBAAkBD,EAAqC,CAC7D,MAAMG,EAAS,IAAI,YAAY,EAAE,OAAO,iBAAiB,EACnDC,EAAqB,EAErBC,EAAc,IAAI,WAAWD,CAAkB,EACrDC,EAAY,CAAC,EAAIL,EAAY,OAE7B,MAAMM,EAAc,IAAI,WACtB,EAAIH,EAAO,OAASE,EAAY,OAASL,EAAY,MACvD,EAEA,IAAIO,EAAS,EACb,OAAAD,EAAYC,GAAQ,EAAI,IACxBD,EAAY,IAAIH,EAAQI,CAAM,EAC9BA,GAAUJ,EAAO,OACjBG,EAAY,IAAID,EAAaE,CAAM,EACnCA,GAAUF,EAAY,OACtBC,EAAY,IAAIN,EAAaO,CAAM,EAE5BD,CACT,CAEQ,kBACNA,EACAE,EACY,CAKZ,MAAMC,EAAsBD,EAAM,OAC5BE,EAAU,IAAIhB,EAClBY,EAAY,OACV,EACA,EACAG,EAAsB,CAC1B,EAEA,OAAAC,EAAQ,kBAAkB,CAAe,EACzCA,EAAQ,kBAAkBD,CAAmB,EAE7CD,EAAM,QAASG,GAAS,CACtB,MAAMC,EAAS,IAAI,WAAW,CAAC,EAClB,IAAI,SAASA,EAAO,MAAM,EAClC,UAAU,EAAGD,EAAM,EAAK,EAC7BD,EAAQ,gBAAgBE,CAAM,CAChC,CAAC,EAEDF,EAAQ,gBAAgBJ,CAAW,EAC5BI,EAAQ,MAAM,CACvB,CACF",
6
- "names": ["ByteArrayBuilder", "DerivationPathUtils", "SignOffChainMessageCommand", "SendSignMessageTask", "api", "args", "sendingData", "derivationPath", "commandBuffer", "prefix", "msgLengthFieldSize", "lengthBytes", "fullMessage", "offset", "paths", "numberOfDerivations", "builder", "path", "buffer"]
4
+ "sourcesContent": ["import {\n APDU_MAX_PAYLOAD,\n ByteArrayBuilder,\n type CommandResult,\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { DerivationPathUtils } from \"@ledgerhq/signer-utils\";\n\nimport { type Signature } from \"@api/index\";\nimport { SignOffChainMessageCommand } from \"@internal/app-binder/command/SignOffChainMessageCommand\";\nimport { type SolanaAppErrorCodes } from \"@internal/app-binder/command/utils/SolanaApplicationErrors\";\n\nexport type SendSignMessageTaskArgs = {\n sendingData: Uint8Array;\n derivationPath: string;\n};\n\nexport type SendSignMessageTaskRunFunctionReturn = Promise<\n CommandResult<Signature, SolanaAppErrorCodes>\n>;\n\nexport class SendSignMessageTask {\n constructor(\n private api: InternalApi,\n private args: SendSignMessageTaskArgs,\n ) {}\n\n async run(): SendSignMessageTaskRunFunctionReturn {\n const { sendingData, derivationPath } = this.args;\n\n const commandBuffer = this._buildApduCommand(\n this._buildFullMessage(sendingData),\n DerivationPathUtils.splitPath(derivationPath),\n );\n\n if (commandBuffer.length > APDU_MAX_PAYLOAD) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n \"The APDU command exceeds the maximum allowable size (255 bytes)\",\n ),\n });\n }\n\n return await this.api.sendCommand(\n new SignOffChainMessageCommand({\n message: commandBuffer,\n }),\n );\n }\n\n private _buildFullMessage(sendingData: Uint8Array): Uint8Array {\n return new ByteArrayBuilder()\n .add8BitUIntToData(0xff)\n .addAsciiStringToData(\"solana offchain\")\n .add16BitUIntToData(0)\n .add16BitUIntToData(sendingData.length, false)\n .addBufferToData(sendingData)\n .build();\n }\n\n private _buildApduCommand(\n fullMessage: Uint8Array,\n paths: number[],\n ): Uint8Array {\n const numberOfSigners = 1;\n const pathSize = 4;\n const signersCountSize = 1;\n const derivationsCountSize = 1;\n const numberOfDerivations = paths.length;\n const builder = new ByteArrayBuilder(\n fullMessage.length +\n signersCountSize +\n derivationsCountSize +\n numberOfDerivations * pathSize,\n );\n\n builder.add8BitUIntToData(numberOfSigners);\n builder.add8BitUIntToData(numberOfDerivations);\n\n paths.forEach((path) => {\n const buffer = new Uint8Array(4);\n const view = new DataView(buffer.buffer);\n view.setUint32(0, path, false);\n builder.addBufferToData(buffer);\n });\n\n builder.addBufferToData(fullMessage);\n return builder.build();\n }\n}\n"],
5
+ "mappings": "AAAA,OACE,oBAAAA,EACA,oBAAAC,EAEA,wBAAAC,EAEA,0BAAAC,MACK,kCACP,OAAS,uBAAAC,MAA2B,yBAGpC,OAAS,8BAAAC,MAAkC,0DAYpC,MAAMC,CAAoB,CAC/B,YACUC,EACAC,EACR,CAFQ,SAAAD,EACA,UAAAC,CACP,CAEH,MAAM,KAA4C,CAChD,KAAM,CAAE,YAAAC,EAAa,eAAAC,CAAe,EAAI,KAAK,KAEvCC,EAAgB,KAAK,kBACzB,KAAK,kBAAkBF,CAAW,EAClCL,EAAoB,UAAUM,CAAc,CAC9C,EAEA,OAAIC,EAAc,OAASX,EAClBE,EAAqB,CAC1B,MAAO,IAAIC,EACT,iEACF,CACF,CAAC,EAGI,MAAM,KAAK,IAAI,YACpB,IAAIE,EAA2B,CAC7B,QAASM,CACX,CAAC,CACH,CACF,CAEQ,kBAAkBF,EAAqC,CAC7D,OAAO,IAAIR,EAAiB,EACzB,kBAAkB,GAAI,EACtB,qBAAqB,iBAAiB,EACtC,mBAAmB,CAAC,EACpB,mBAAmBQ,EAAY,OAAQ,EAAK,EAC5C,gBAAgBA,CAAW,EAC3B,MAAM,CACX,CAEQ,kBACNG,EACAC,EACY,CAKZ,MAAMC,EAAsBD,EAAM,OAC5BE,EAAU,IAAId,EAClBW,EAAY,OACV,EACA,EACAE,EAAsB,CAC1B,EAEA,OAAAC,EAAQ,kBAAkB,CAAe,EACzCA,EAAQ,kBAAkBD,CAAmB,EAE7CD,EAAM,QAASG,GAAS,CACtB,MAAMC,EAAS,IAAI,WAAW,CAAC,EAClB,IAAI,SAASA,EAAO,MAAM,EAClC,UAAU,EAAGD,EAAM,EAAK,EAC7BD,EAAQ,gBAAgBE,CAAM,CAChC,CAAC,EAEDF,EAAQ,gBAAgBH,CAAW,EAC5BG,EAAQ,MAAM,CACvB,CACF",
6
+ "names": ["APDU_MAX_PAYLOAD", "ByteArrayBuilder", "CommandResultFactory", "InvalidStatusWordError", "DerivationPathUtils", "SignOffChainMessageCommand", "SendSignMessageTask", "api", "args", "sendingData", "derivationPath", "commandBuffer", "fullMessage", "paths", "numberOfDerivations", "builder", "path", "buffer"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{CommandResultFactory as d,InvalidStatusWordError as c}from"@ledgerhq/device-management-kit";import{makeDeviceActionInternalApiMock as u}from"../../app-binder/device-action/__test-utils__/makeInternalApi";import{SendSignMessageTask as s}from"../../app-binder/task/SendSignMessageTask";const r="44'/501'/0'/0'";describe("SendSignMessageTask",()=>{const e=u();beforeEach(()=>{jest.resetAllMocks()});const o=new Uint8Array([1,2,3,4]);describe("run with SignOffChainMessageCommand",()=>{it("should return an error if the command fails",async()=>{const n={derivationPath:r,sendingData:o};e.sendCommand.mockResolvedValueOnce(d({error:new c("no signature returned")}));const a=await new s(e,n).run();expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(a).toMatchObject({error:new c("no signature returned")})}),it("should return success when the command executes successfully",async()=>{const n={derivationPath:r,sendingData:o},a=new Uint8Array([170,187,204,221]);e.sendCommand.mockResolvedValueOnce(d({data:a}));const t=await new s(e,n).run();expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(t).toMatchObject({data:a})}),it("should handle invalid derivation paths",async()=>{const a={derivationPath:"invalid/path",sendingData:o},t=new s(e,a);await expect(t.run()).rejects.toThrowError()}),it("should handle empty message data",async()=>{const n=new Uint8Array([]),a={derivationPath:r,sendingData:n};e.sendCommand.mockResolvedValueOnce(d({data:new Uint8Array([])}));const t=await new s(e,a).run();if(expect(e.sendCommand).toHaveBeenCalledTimes(1),"data"in t)expect(t.data).toEqual(new Uint8Array([]));else throw new Error("Expected result to have data property")}),it("should correctly build the APDU command",async()=>{const n={derivationPath:r,sendingData:o},a=new s(e,n),t=a._buildFullMessage(o),i=[-2147483604,-2147483147,-2147483648,0],l=a._buildApduCommand(t,i),m=2+i.length*4+t.length;expect(l.length).toEqual(m)}),it("should handle messages with maximum allowed length",async()=>{const n=new Uint8Array(255).fill(1),a={derivationPath:r,sendingData:n};e.sendCommand.mockResolvedValueOnce(d({data:new Uint8Array([153,136,119])}));const t=await new s(e,a).run();if(expect(e.sendCommand).toHaveBeenCalledTimes(1),"data"in t)expect(t.data).toEqual(new Uint8Array([153,136,119]));else throw new Error("Expected result to have data property")})})});
1
+ import{CommandResultFactory as c,InvalidStatusWordError as l}from"@ledgerhq/device-management-kit";import{makeDeviceActionInternalApiMock as u}from"../../app-binder/device-action/__test-utils__/makeInternalApi";import{SendSignMessageTask as r}from"../../app-binder/task/SendSignMessageTask";const i="44'/501'/0'/0'";describe("SendSignMessageTask",()=>{const e=u();beforeEach(()=>{vi.resetAllMocks()});const d=new Uint8Array([1,2,3,4]);describe("run with SignOffChainMessageCommand",()=>{it("should return an error if the command fails",async()=>{const n={derivationPath:i,sendingData:d};e.sendCommand.mockResolvedValueOnce(c({error:new l("no signature returned")}));const a=await new r(e,n).run();expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(a).toMatchObject({error:new l("no signature returned")})}),it("should return success when the command executes successfully",async()=>{const n={derivationPath:i,sendingData:d},a=new Uint8Array([170,187,204,221]);e.sendCommand.mockResolvedValueOnce(c({data:a}));const t=await new r(e,n).run();expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(t).toMatchObject({data:a})}),it("should handle invalid derivation paths",async()=>{const a={derivationPath:"invalid/path",sendingData:d},t=new r(e,a);await expect(t.run()).rejects.toThrowError()}),it("should handle empty message data",async()=>{const n=new Uint8Array([]),a={derivationPath:i,sendingData:n};e.sendCommand.mockResolvedValueOnce(c({data:new Uint8Array([])}));const t=await new r(e,a).run();if(expect(e.sendCommand).toHaveBeenCalledTimes(1),"data"in t)expect(t.data).toEqual(new Uint8Array([]));else throw new Error("Expected result to have data property")}),it("should correctly build the APDU command",()=>{const n={derivationPath:i,sendingData:d},a=new r(e,n),t=a._buildFullMessage(d),o=[-2147483604,-2147483147,-2147483648,0],s=a._buildApduCommand(t,o),m=2+o.length*4+t.length;expect(s.length).toEqual(m)}),it("should handle messages with maximum allowed length",async()=>{const t=new Uint8Array(217).fill(1),o={derivationPath:i,sendingData:t};e.sendCommand.mockResolvedValueOnce(c({data:new Uint8Array([153,136,119])}));const s=await new r(e,o).run();if(expect(e.sendCommand).toHaveBeenCalledTimes(1),"data"in s)expect(s.data).toEqual(new Uint8Array([153,136,119]));else throw new Error("Expected result to have data property")}),it("should fail messages if too big",async()=>{const t=new Uint8Array(218).fill(1),o={derivationPath:i,sendingData:t};e.sendCommand.mockResolvedValueOnce(c({data:new Uint8Array([153,136,119])}));const s=await new r(e,o).run();if(expect(e.sendCommand).toHaveBeenCalledTimes(0),"error"in s)expect(s.error).toEqual(new l("The APDU command exceeds the maximum allowable size (255 bytes)"));else throw new Error("Expected result to have error property")})})});
2
2
  //# sourceMappingURL=SendSignMessageTask.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/task/SendSignMessageTask.test.ts"],
4
- "sourcesContent": ["import {\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport { SendSignMessageTask } from \"@internal/app-binder/task/SendSignMessageTask\";\n\nconst DERIVATION_PATH = \"44'/501'/0'/0'\";\n\ndescribe(\"SendSignMessageTask\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n\n beforeEach(() => {\n jest.resetAllMocks();\n });\n\n const SIMPLE_MESSAGE = new Uint8Array([0x01, 0x02, 0x03, 0x04]);\n\n describe(\"run with SignOffChainMessageCommand\", () => {\n it(\"should return an error if the command fails\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: SIMPLE_MESSAGE,\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"no signature returned\"),\n }),\n );\n\n // WHEN--------------------------------\n //-------------------------------------\n const result = await new SendSignMessageTask(apiMock, args).run();\n\n // THEN--------------------------------\n //-------------------------------------\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(1);\n expect(result).toMatchObject({\n error: new InvalidStatusWordError(\"no signature returned\"),\n });\n });\n\n it(\"should return success when the command executes successfully\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: SIMPLE_MESSAGE,\n };\n const expectedSignature = new Uint8Array([0xaa, 0xbb, 0xcc, 0xdd]);\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n data: expectedSignature,\n }),\n );\n\n // WHEN--------------------------------\n //-------------------------------------\n const result = await new SendSignMessageTask(apiMock, args).run();\n\n // THEN--------------------------------\n //-------------------------------------\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(1);\n expect(result).toMatchObject({\n data: expectedSignature,\n });\n });\n\n it(\"should handle invalid derivation paths\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const invalidDerivationPath = \"invalid/path\";\n const args = {\n derivationPath: invalidDerivationPath,\n sendingData: SIMPLE_MESSAGE,\n };\n\n // WHEN--------------------------------\n //-------------------------------------\n const task = new SendSignMessageTask(apiMock, args);\n\n // THEN--------------------------------\n //-------------------------------------\n await expect(task.run()).rejects.toThrowError();\n });\n\n it(\"should handle empty message data\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const emptyMessage = new Uint8Array([]);\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: emptyMessage,\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n data: new Uint8Array([]),\n }),\n );\n\n // WHEN--------------------------------\n //-------------------------------------\n const result = await new SendSignMessageTask(apiMock, args).run();\n\n // THEN--------------------------------\n //-------------------------------------\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(1);\n if (\"data\" in result) {\n expect(result.data).toEqual(new Uint8Array([]));\n } else {\n throw new Error(\"Expected result to have data property\");\n }\n });\n\n it(\"should correctly build the APDU command\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: SIMPLE_MESSAGE,\n };\n const task = new SendSignMessageTask(apiMock, args);\n const fullMessage = task[\"_buildFullMessage\"](SIMPLE_MESSAGE);\n const paths = [44 | 0x80000000, 501 | 0x80000000, 0 | 0x80000000, 0];\n const commandBuffer = task[\"_buildApduCommand\"](fullMessage, paths);\n\n // WHEN--------------------------------\n //-------------------------------------\n const expectedCommandLength =\n 1 + // numberOfSigners\n 1 + // numberOfDerivations\n paths.length * 4 + // paths\n fullMessage.length; // message\n\n // THEN--------------------------------\n //-------------------------------------\n expect(commandBuffer.length).toEqual(expectedCommandLength);\n });\n\n it(\"should handle messages with maximum allowed length\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const maxLengthMessage = new Uint8Array(255).fill(0x01);\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: maxLengthMessage,\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n data: new Uint8Array([0x99, 0x88, 0x77]),\n }),\n );\n\n // WHEN--------------------------------\n //-------------------------------------\n const result = await new SendSignMessageTask(apiMock, args).run();\n\n // THEN--------------------------------\n //-------------------------------------\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(1);\n if (\"data\" in result) {\n expect(result.data).toEqual(new Uint8Array([0x99, 0x88, 0x77]));\n } else {\n throw new Error(\"Expected result to have data property\");\n }\n });\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport { SendSignMessageTask } from \"@internal/app-binder/task/SendSignMessageTask\";\n\nconst DERIVATION_PATH = \"44'/501'/0'/0'\";\n\ndescribe(\"SendSignMessageTask\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n const SIMPLE_MESSAGE = new Uint8Array([0x01, 0x02, 0x03, 0x04]);\n\n describe(\"run with SignOffChainMessageCommand\", () => {\n it(\"should return an error if the command fails\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: SIMPLE_MESSAGE,\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"no signature returned\"),\n }),\n );\n\n // WHEN--------------------------------\n //-------------------------------------\n const result = await new SendSignMessageTask(apiMock, args).run();\n\n // THEN--------------------------------\n //-------------------------------------\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(1);\n expect(result).toMatchObject({\n error: new InvalidStatusWordError(\"no signature returned\"),\n });\n });\n\n it(\"should return success when the command executes successfully\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: SIMPLE_MESSAGE,\n };\n const expectedSignature = new Uint8Array([0xaa, 0xbb, 0xcc, 0xdd]);\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n data: expectedSignature,\n }),\n );\n\n // WHEN--------------------------------\n //-------------------------------------\n const result = await new SendSignMessageTask(apiMock, args).run();\n\n // THEN--------------------------------\n //-------------------------------------\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(1);\n expect(result).toMatchObject({\n data: expectedSignature,\n });\n });\n\n it(\"should handle invalid derivation paths\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const invalidDerivationPath = \"invalid/path\";\n const args = {\n derivationPath: invalidDerivationPath,\n sendingData: SIMPLE_MESSAGE,\n };\n\n // WHEN--------------------------------\n //-------------------------------------\n const task = new SendSignMessageTask(apiMock, args);\n\n // THEN--------------------------------\n //-------------------------------------\n await expect(task.run()).rejects.toThrowError();\n });\n\n it(\"should handle empty message data\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const emptyMessage = new Uint8Array([]);\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: emptyMessage,\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n data: new Uint8Array([]),\n }),\n );\n\n // WHEN--------------------------------\n //-------------------------------------\n const result = await new SendSignMessageTask(apiMock, args).run();\n\n // THEN--------------------------------\n //-------------------------------------\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(1);\n if (\"data\" in result) {\n expect(result.data).toEqual(new Uint8Array([]));\n } else {\n throw new Error(\"Expected result to have data property\");\n }\n });\n\n it(\"should correctly build the APDU command\", () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: SIMPLE_MESSAGE,\n };\n const task = new SendSignMessageTask(apiMock, args);\n const fullMessage = task[\"_buildFullMessage\"](SIMPLE_MESSAGE);\n const paths = [44 | 0x80000000, 501 | 0x80000000, 0 | 0x80000000, 0];\n const commandBuffer = task[\"_buildApduCommand\"](fullMessage, paths);\n\n // WHEN--------------------------------\n //-------------------------------------\n const expectedCommandLength =\n 1 + // numberOfSigners\n 1 + // numberOfDerivations\n paths.length * 4 + // paths\n fullMessage.length; // message\n\n // THEN--------------------------------\n //-------------------------------------\n expect(commandBuffer.length).toEqual(expectedCommandLength);\n });\n\n it(\"should handle messages with maximum allowed length\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const headerSize =\n 1 + // numberOfSigners\n 1 + // numberOfDerivations\n 4 * 4; // paths\n const fullMessageHeaderSize =\n 1 +\n 15 + // prefix\n 4; // length\n const maxLengthMessage = new Uint8Array(\n 255 - headerSize - fullMessageHeaderSize,\n ).fill(0x01);\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: maxLengthMessage,\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n data: new Uint8Array([0x99, 0x88, 0x77]),\n }),\n );\n\n // WHEN--------------------------------\n //-------------------------------------\n const result = await new SendSignMessageTask(apiMock, args).run();\n\n // THEN--------------------------------\n //-------------------------------------\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(1);\n if (\"data\" in result) {\n expect(result.data).toEqual(new Uint8Array([0x99, 0x88, 0x77]));\n } else {\n throw new Error(\"Expected result to have data property\");\n }\n });\n\n it(\"should fail messages if too big\", async () => {\n // GIVEN-------------------------------\n //-------------------------------------\n const headerSize =\n 1 + // numberOfSigners\n 1 + // numberOfDerivations\n 4 * 4; // paths\n const fullMessageHeaderSize =\n 1 +\n 15 + // prefix\n 4; // length\n const maxLengthMessage = new Uint8Array(\n 256 - headerSize - fullMessageHeaderSize,\n ).fill(0x01);\n const args = {\n derivationPath: DERIVATION_PATH,\n sendingData: maxLengthMessage,\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n data: new Uint8Array([0x99, 0x88, 0x77]),\n }),\n );\n\n // WHEN--------------------------------\n //-------------------------------------\n const result = await new SendSignMessageTask(apiMock, args).run();\n\n // THEN--------------------------------\n //-------------------------------------\n expect(apiMock.sendCommand).toHaveBeenCalledTimes(0);\n if (\"error\" in result) {\n expect(result.error).toEqual(\n new InvalidStatusWordError(\n \"The APDU command exceeds the maximum allowable size (255 bytes)\",\n ),\n );\n } else {\n throw new Error(\"Expected result to have error property\");\n }\n });\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": ["CommandResultFactory", "InvalidStatusWordError", "makeDeviceActionInternalApiMock", "SendSignMessageTask", "DERIVATION_PATH", "apiMock", "SIMPLE_MESSAGE", "args", "result", "expectedSignature", "task", "emptyMessage", "fullMessage", "paths", "commandBuffer", "expectedCommandLength", "maxLengthMessage"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{Container as i}from"inversify";import{appBinderModuleFactory as r}from"./app-binder/di/appBinderModule";import{useCasesModuleFactory as a}from"./use-cases/di/useCasesModule";import{externalTypes as o}from"./externalTypes";const c=({dmk:n,sessionId:t})=>{const e=new i;return e.bind(o.Dmk).toConstantValue(n),e.bind(o.SessionId).toConstantValue(t),e.load(r(),a()),e};export{c as makeContainer};
1
+ import{Container as i}from"inversify";import{appBinderModuleFactory as r}from"./app-binder/di/appBinderModule";import{useCasesModuleFactory as a}from"./use-cases/di/useCasesModule";import{externalTypes as o}from"./externalTypes";const d=({dmk:n,sessionId:t})=>{const e=new i;return e.bind(o.Dmk).toConstantValue(n),e.bind(o.SessionId).toConstantValue(t),e.loadSync(r(),a()),e};export{d as makeContainer};
2
2
  //# sourceMappingURL=di.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/internal/di.ts"],
4
- "sourcesContent": ["import {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport { Container } from \"inversify\";\n\n// import { makeLoggerMiddleware } from \"inversify-logger-middleware\";\nimport { appBinderModuleFactory } from \"./app-binder/di/appBinderModule\";\nimport { useCasesModuleFactory } from \"./use-cases/di/useCasesModule\";\nimport { externalTypes } from \"./externalTypes\";\n\n// Uncomment this line to enable the logger middleware\n// const logger = makeLoggerMiddleware();\n\nexport type MakeContainerProps = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n};\nexport const makeContainer = ({ dmk, sessionId }: MakeContainerProps) => {\n const container = new Container();\n\n // Uncomment this line to enable the logger middleware\n // container.applyMiddleware(logger);\n\n container.bind<DeviceManagementKit>(externalTypes.Dmk).toConstantValue(dmk);\n container\n .bind<DeviceSessionId>(externalTypes.SessionId)\n .toConstantValue(sessionId);\n\n container.load(appBinderModuleFactory(), useCasesModuleFactory());\n\n return container;\n};\n"],
5
- "mappings": "AAIA,OAAS,aAAAA,MAAiB,YAG1B,OAAS,0BAAAC,MAA8B,kCACvC,OAAS,yBAAAC,MAA6B,gCACtC,OAAS,iBAAAC,MAAqB,kBASvB,MAAMC,EAAgB,CAAC,CAAE,IAAAC,EAAK,UAAAC,CAAU,IAA0B,CACvE,MAAMC,EAAY,IAAIP,EAKtB,OAAAO,EAAU,KAA0BJ,EAAc,GAAG,EAAE,gBAAgBE,CAAG,EAC1EE,EACG,KAAsBJ,EAAc,SAAS,EAC7C,gBAAgBG,CAAS,EAE5BC,EAAU,KAAKN,EAAuB,EAAGC,EAAsB,CAAC,EAEzDK,CACT",
4
+ "sourcesContent": ["import {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport { Container } from \"inversify\";\n\nimport { appBinderModuleFactory } from \"./app-binder/di/appBinderModule\";\nimport { useCasesModuleFactory } from \"./use-cases/di/useCasesModule\";\nimport { externalTypes } from \"./externalTypes\";\n\nexport type MakeContainerProps = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n};\nexport const makeContainer = ({ dmk, sessionId }: MakeContainerProps) => {\n const container = new Container();\n\n container.bind<DeviceManagementKit>(externalTypes.Dmk).toConstantValue(dmk);\n container\n .bind<DeviceSessionId>(externalTypes.SessionId)\n .toConstantValue(sessionId);\n\n container.loadSync(appBinderModuleFactory(), useCasesModuleFactory());\n\n return container;\n};\n"],
5
+ "mappings": "AAIA,OAAS,aAAAA,MAAiB,YAE1B,OAAS,0BAAAC,MAA8B,kCACvC,OAAS,yBAAAC,MAA6B,gCACtC,OAAS,iBAAAC,MAAqB,kBAMvB,MAAMC,EAAgB,CAAC,CAAE,IAAAC,EAAK,UAAAC,CAAU,IAA0B,CACvE,MAAMC,EAAY,IAAIP,EAEtB,OAAAO,EAAU,KAA0BJ,EAAc,GAAG,EAAE,gBAAgBE,CAAG,EAC1EE,EACG,KAAsBJ,EAAc,SAAS,EAC7C,gBAAgBG,CAAS,EAE5BC,EAAU,SAASN,EAAuB,EAAGC,EAAsB,CAAC,EAE7DK,CACT",
6
6
  "names": ["Container", "appBinderModuleFactory", "useCasesModuleFactory", "externalTypes", "makeContainer", "dmk", "sessionId", "container"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var a=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var d=(i,r,p,t)=>{for(var e=t>1?void 0:t?s(r,p):r,o=i.length-1,c;o>=0;o--)(c=i[o])&&(e=(t?c(r,p,e):c(e))||e);return t&&e&&a(r,p,e),e},m=(i,r)=>(p,t)=>r(p,t,i);import{inject as A,injectable as f}from"inversify";import{appBinderTypes as B}from"../../app-binder/di/appBinderTypes";let n=class{constructor(r){this.appBinder=r}execute(r,p){return this.appBinder.getAddress({derivationPath:r,checkOnDevice:p?.checkOnDevice??!1})}};n=d([f(),m(0,A(B.AppBinder))],n);export{n as GetAddressUseCase};
1
+ var a=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var d=(n,p,e,i)=>{for(var r=i>1?void 0:i?s(p,e):p,o=n.length-1,c;o>=0;o--)(c=n[o])&&(r=(i?c(p,e,r):c(r))||r);return i&&r&&a(p,e,r),r},m=(n,p)=>(e,i)=>p(e,i,n);import{inject as A,injectable as f}from"inversify";import{appBinderTypes as l}from"../../app-binder/di/appBinderTypes";let t=class{constructor(p){this.appBinder=p}execute(p,e){return this.appBinder.getAddress({derivationPath:p,checkOnDevice:e?.checkOnDevice??!1,skipOpenApp:e?.skipOpenApp??!1})}};t=d([f(),m(0,A(l.AppBinder))],t);export{t as GetAddressUseCase};
2
2
  //# sourceMappingURL=GetAddressUseCase.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/use-cases/address/GetAddressUseCase.ts"],
4
- "sourcesContent": ["import { inject, injectable } from \"inversify\";\n\nimport { type GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { type AddressOptions } from \"@api/model/AddressOption\";\nimport { appBinderTypes } from \"@internal/app-binder/di/appBinderTypes\";\nimport { SolanaAppBinder } from \"@internal/app-binder/SolanaAppBinder\";\n\n@injectable()\nexport class GetAddressUseCase {\n constructor(\n @inject(appBinderTypes.AppBinder) private appBinder: SolanaAppBinder,\n ) {}\n\n execute(\n derivationPath: string,\n options?: AddressOptions,\n ): GetAddressDAReturnType {\n return this.appBinder.getAddress({\n derivationPath,\n checkOnDevice: options?.checkOnDevice ?? false,\n });\n }\n}\n"],
5
- "mappings": "iOAAA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YAInC,OAAS,kBAAAC,MAAsB,yCAIxB,IAAMC,EAAN,KAAwB,CAC7B,YAC4CC,EAC1C,CAD0C,eAAAA,CACzC,CAEH,QACEC,EACAC,EACwB,CACxB,OAAO,KAAK,UAAU,WAAW,CAC/B,eAAAD,EACA,cAAeC,GAAS,eAAiB,EAC3C,CAAC,CACH,CACF,EAdaH,EAANI,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAe,SAAS,IAFvBR",
4
+ "sourcesContent": ["import { inject, injectable } from \"inversify\";\n\nimport { type GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { type AddressOptions } from \"@api/model/AddressOption\";\nimport { appBinderTypes } from \"@internal/app-binder/di/appBinderTypes\";\nimport { SolanaAppBinder } from \"@internal/app-binder/SolanaAppBinder\";\n\n@injectable()\nexport class GetAddressUseCase {\n constructor(\n @inject(appBinderTypes.AppBinder) private appBinder: SolanaAppBinder,\n ) {}\n\n execute(\n derivationPath: string,\n options?: AddressOptions,\n ): GetAddressDAReturnType {\n return this.appBinder.getAddress({\n derivationPath,\n checkOnDevice: options?.checkOnDevice ?? false,\n skipOpenApp: options?.skipOpenApp ?? false,\n });\n }\n}\n"],
5
+ "mappings": "iOAAA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YAInC,OAAS,kBAAAC,MAAsB,yCAIxB,IAAMC,EAAN,KAAwB,CAC7B,YAC4CC,EAC1C,CAD0C,eAAAA,CACzC,CAEH,QACEC,EACAC,EACwB,CACxB,OAAO,KAAK,UAAU,WAAW,CAC/B,eAAAD,EACA,cAAeC,GAAS,eAAiB,GACzC,YAAaA,GAAS,aAAe,EACvC,CAAC,CACH,CACF,EAfaH,EAANI,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAe,SAAS,IAFvBR",
6
6
  "names": ["inject", "injectable", "appBinderTypes", "GetAddressUseCase", "appBinder", "derivationPath", "options", "__decorateClass", "injectable", "__decorateParam", "inject", "appBinderTypes"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{GetAddressUseCase as a}from"./GetAddressUseCase";describe("GetAddressUseCase",()=>{const e="44'/501'",s="some-address",t=jest.fn().mockReturnValue(s),o={getAddress:t};let d;beforeEach(()=>{jest.clearAllMocks(),d=new a(o)}),it("should return the address from the appBinder's getAddress method",()=>{const c=d.execute(e,{checkOnDevice:!0});expect(c).toEqual(s),expect(t).toHaveBeenCalledWith({derivationPath:e,checkOnDevice:!0})}),it("should return the address from the appBinder's getAddress method with default options",()=>{const r=d.execute(e);expect(r).toEqual(s),expect(t).toHaveBeenCalledWith({derivationPath:e,checkOnDevice:!1})})});
1
+ import{GetAddressUseCase as p}from"./GetAddressUseCase";describe("GetAddressUseCase",()=>{const e="44'/501'",s="some-address",t=vi.fn().mockReturnValue(s),r={getAddress:t};let d;beforeEach(()=>{vi.clearAllMocks(),d=new p(r)}),it("should return the address from the appBinder's getAddress method",()=>{const o=d.execute(e,{checkOnDevice:!0,skipOpenApp:!0});expect(o).toEqual(s),expect(t).toHaveBeenCalledWith({derivationPath:e,checkOnDevice:!0,skipOpenApp:!0})}),it("should return the address from the appBinder's getAddress method with default options",()=>{const n=d.execute(e);expect(n).toEqual(s),expect(t).toHaveBeenCalledWith({derivationPath:e,checkOnDevice:!1,skipOpenApp:!1})})});
2
2
  //# sourceMappingURL=GetAddressUseCase.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/use-cases/address/GetAddressUseCase.test.ts"],
4
- "sourcesContent": ["import { type SolanaAppBinder } from \"@internal/app-binder/SolanaAppBinder\";\n\nimport { GetAddressUseCase } from \"./GetAddressUseCase\";\n\ndescribe(\"GetAddressUseCase\", () => {\n const derivationPath = \"44'/501'\";\n const address = \"some-address\";\n const getAddressMock = jest.fn().mockReturnValue(address);\n const appBinderMock = {\n getAddress: getAddressMock,\n } as unknown as SolanaAppBinder;\n let useCase: GetAddressUseCase;\n\n beforeEach(() => {\n jest.clearAllMocks();\n useCase = new GetAddressUseCase(appBinderMock);\n });\n\n it(\"should return the address from the appBinder's getAddress method\", () => {\n // GIVEN\n const checkOnDevice = true;\n\n // WHEN\n const result = useCase.execute(derivationPath, { checkOnDevice });\n\n // THEN\n expect(result).toEqual(address);\n expect(getAddressMock).toHaveBeenCalledWith({\n derivationPath,\n checkOnDevice,\n });\n });\n\n it(\"should return the address from the appBinder's getAddress method with default options\", () => {\n // WHEN\n const result = useCase.execute(derivationPath);\n\n // THEN\n expect(result).toEqual(address);\n expect(getAddressMock).toHaveBeenCalledWith({\n derivationPath,\n checkOnDevice: false,\n });\n });\n});\n"],
5
- "mappings": "AAEA,OAAS,qBAAAA,MAAyB,sBAElC,SAAS,oBAAqB,IAAM,CAClC,MAAMC,EAAiB,WACjBC,EAAU,eACVC,EAAiB,KAAK,GAAG,EAAE,gBAAgBD,CAAO,EAClDE,EAAgB,CACpB,WAAYD,CACd,EACA,IAAIE,EAEJ,WAAW,IAAM,CACf,KAAK,cAAc,EACnBA,EAAU,IAAIL,EAAkBI,CAAa,CAC/C,CAAC,EAED,GAAG,mEAAoE,IAAM,CAK3E,MAAME,EAASD,EAAQ,QAAQJ,EAAgB,CAAE,gBAAc,CAAC,EAGhE,OAAOK,CAAM,EAAE,QAAQJ,CAAO,EAC9B,OAAOC,CAAc,EAAE,qBAAqB,CAC1C,eAAAF,EACA,gBACF,CAAC,CACH,CAAC,EAED,GAAG,wFAAyF,IAAM,CAEhG,MAAMK,EAASD,EAAQ,QAAQJ,CAAc,EAG7C,OAAOK,CAAM,EAAE,QAAQJ,CAAO,EAC9B,OAAOC,CAAc,EAAE,qBAAqB,CAC1C,eAAAF,EACA,cAAe,EACjB,CAAC,CACH,CAAC,CACH,CAAC",
4
+ "sourcesContent": ["import { type SolanaAppBinder } from \"@internal/app-binder/SolanaAppBinder\";\n\nimport { GetAddressUseCase } from \"./GetAddressUseCase\";\n\ndescribe(\"GetAddressUseCase\", () => {\n const derivationPath = \"44'/501'\";\n const address = \"some-address\";\n const getAddressMock = vi.fn().mockReturnValue(address);\n const appBinderMock = {\n getAddress: getAddressMock,\n } as unknown as SolanaAppBinder;\n let useCase: GetAddressUseCase;\n\n beforeEach(() => {\n vi.clearAllMocks();\n useCase = new GetAddressUseCase(appBinderMock);\n });\n\n it(\"should return the address from the appBinder's getAddress method\", () => {\n // GIVEN\n const checkOnDevice = true;\n const skipOpenApp = true;\n\n // WHEN\n const result = useCase.execute(derivationPath, {\n checkOnDevice,\n skipOpenApp,\n });\n\n // THEN\n expect(result).toEqual(address);\n expect(getAddressMock).toHaveBeenCalledWith({\n derivationPath,\n checkOnDevice,\n skipOpenApp,\n });\n });\n\n it(\"should return the address from the appBinder's getAddress method with default options\", () => {\n // WHEN\n const result = useCase.execute(derivationPath);\n\n // THEN\n expect(result).toEqual(address);\n expect(getAddressMock).toHaveBeenCalledWith({\n derivationPath,\n checkOnDevice: false,\n skipOpenApp: false,\n });\n });\n});\n"],
5
+ "mappings": "AAEA,OAAS,qBAAAA,MAAyB,sBAElC,SAAS,oBAAqB,IAAM,CAClC,MAAMC,EAAiB,WACjBC,EAAU,eACVC,EAAiB,GAAG,GAAG,EAAE,gBAAgBD,CAAO,EAChDE,EAAgB,CACpB,WAAYD,CACd,EACA,IAAIE,EAEJ,WAAW,IAAM,CACf,GAAG,cAAc,EACjBA,EAAU,IAAIL,EAAkBI,CAAa,CAC/C,CAAC,EAED,GAAG,mEAAoE,IAAM,CAM3E,MAAME,EAASD,EAAQ,QAAQJ,EAAgB,CAC7C,iBACA,cACF,CAAC,EAGD,OAAOK,CAAM,EAAE,QAAQJ,CAAO,EAC9B,OAAOC,CAAc,EAAE,qBAAqB,CAC1C,eAAAF,EACA,iBACA,cACF,CAAC,CACH,CAAC,EAED,GAAG,wFAAyF,IAAM,CAEhG,MAAMK,EAASD,EAAQ,QAAQJ,CAAc,EAG7C,OAAOK,CAAM,EAAE,QAAQJ,CAAO,EAC9B,OAAOC,CAAc,EAAE,qBAAqB,CAC1C,eAAAF,EACA,cAAe,GACf,YAAa,EACf,CAAC,CACH,CAAC,CACH,CAAC",
6
6
  "names": ["GetAddressUseCase", "derivationPath", "address", "getAddressMock", "appBinderMock", "useCase", "result"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{PublicKeyDisplayMode as p}from"../../../api/model/PublicKeyDisplayMode";import{GetAppConfigurationUseCase as a}from"./GetAppConfigurationUseCase";describe("GetAppConfigurationUseCase",()=>{const e=jest.fn(),o={blindSigningEnabled:!1,pubKeyDisplayMode:p.LONG,version:"1.0.0"},t={getAppConfiguration:e};let n;beforeEach(()=>{jest.clearAllMocks(),n=new a(t)}),it("should return the config from the appBinder's getAppConfiguration method",()=>{e.mockReturnValue(o);const i=n.execute();expect(e).toHaveBeenCalledWith(),expect(i).toEqual(o)})});
1
+ import{PublicKeyDisplayMode as p}from"../../../api/model/PublicKeyDisplayMode";import{GetAppConfigurationUseCase as a}from"./GetAppConfigurationUseCase";describe("GetAppConfigurationUseCase",()=>{const e=vi.fn(),o={blindSigningEnabled:!1,pubKeyDisplayMode:p.LONG,version:"1.0.0"},i={getAppConfiguration:e};let n;beforeEach(()=>{vi.clearAllMocks(),n=new a(i)}),it("should return the config from the appBinder's getAppConfiguration method",()=>{e.mockReturnValue(o);const t=n.execute();expect(e).toHaveBeenCalledWith(),expect(t).toEqual(o)})});
2
2
  //# sourceMappingURL=GetAppConfiguration.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/use-cases/app-configuration/GetAppConfiguration.test.ts"],
4
- "sourcesContent": ["import { type AppConfiguration } from \"@api/model/AppConfiguration\";\nimport { PublicKeyDisplayMode } from \"@api/model/PublicKeyDisplayMode\";\nimport { type SolanaAppBinder } from \"@internal/app-binder/SolanaAppBinder\";\n\nimport { GetAppConfigurationUseCase } from \"./GetAppConfigurationUseCase\";\n\ndescribe(\"GetAppConfigurationUseCase\", () => {\n const getAppConfigurationMock = jest.fn();\n const config: AppConfiguration = {\n blindSigningEnabled: false,\n pubKeyDisplayMode: PublicKeyDisplayMode.LONG,\n version: \"1.0.0\",\n };\n const appBinderMock = {\n getAppConfiguration: getAppConfigurationMock,\n } as unknown as SolanaAppBinder;\n let useCase: GetAppConfigurationUseCase;\n\n beforeEach(() => {\n jest.clearAllMocks();\n useCase = new GetAppConfigurationUseCase(appBinderMock);\n });\n\n it(\"should return the config from the appBinder's getAppConfiguration method\", () => {\n // GIVEN\n getAppConfigurationMock.mockReturnValue(config);\n\n // WHEN\n const result = useCase.execute();\n\n // THEN\n expect(getAppConfigurationMock).toHaveBeenCalledWith();\n expect(result).toEqual(config);\n });\n});\n"],
5
- "mappings": "AACA,OAAS,wBAAAA,MAA4B,kCAGrC,OAAS,8BAAAC,MAAkC,+BAE3C,SAAS,6BAA8B,IAAM,CAC3C,MAAMC,EAA0B,KAAK,GAAG,EAClCC,EAA2B,CAC/B,oBAAqB,GACrB,kBAAmBH,EAAqB,KACxC,QAAS,OACX,EACMI,EAAgB,CACpB,oBAAqBF,CACvB,EACA,IAAIG,EAEJ,WAAW,IAAM,CACf,KAAK,cAAc,EACnBA,EAAU,IAAIJ,EAA2BG,CAAa,CACxD,CAAC,EAED,GAAG,2EAA4E,IAAM,CAEnFF,EAAwB,gBAAgBC,CAAM,EAG9C,MAAMG,EAASD,EAAQ,QAAQ,EAG/B,OAAOH,CAAuB,EAAE,qBAAqB,EACrD,OAAOI,CAAM,EAAE,QAAQH,CAAM,CAC/B,CAAC,CACH,CAAC",
4
+ "sourcesContent": ["import { type AppConfiguration } from \"@api/model/AppConfiguration\";\nimport { PublicKeyDisplayMode } from \"@api/model/PublicKeyDisplayMode\";\nimport { type SolanaAppBinder } from \"@internal/app-binder/SolanaAppBinder\";\n\nimport { GetAppConfigurationUseCase } from \"./GetAppConfigurationUseCase\";\n\ndescribe(\"GetAppConfigurationUseCase\", () => {\n const getAppConfigurationMock = vi.fn();\n const config: AppConfiguration = {\n blindSigningEnabled: false,\n pubKeyDisplayMode: PublicKeyDisplayMode.LONG,\n version: \"1.0.0\",\n };\n const appBinderMock = {\n getAppConfiguration: getAppConfigurationMock,\n } as unknown as SolanaAppBinder;\n let useCase: GetAppConfigurationUseCase;\n\n beforeEach(() => {\n vi.clearAllMocks();\n useCase = new GetAppConfigurationUseCase(appBinderMock);\n });\n\n it(\"should return the config from the appBinder's getAppConfiguration method\", () => {\n // GIVEN\n getAppConfigurationMock.mockReturnValue(config);\n\n // WHEN\n const result = useCase.execute();\n\n // THEN\n expect(getAppConfigurationMock).toHaveBeenCalledWith();\n expect(result).toEqual(config);\n });\n});\n"],
5
+ "mappings": "AACA,OAAS,wBAAAA,MAA4B,kCAGrC,OAAS,8BAAAC,MAAkC,+BAE3C,SAAS,6BAA8B,IAAM,CAC3C,MAAMC,EAA0B,GAAG,GAAG,EAChCC,EAA2B,CAC/B,oBAAqB,GACrB,kBAAmBH,EAAqB,KACxC,QAAS,OACX,EACMI,EAAgB,CACpB,oBAAqBF,CACvB,EACA,IAAIG,EAEJ,WAAW,IAAM,CACf,GAAG,cAAc,EACjBA,EAAU,IAAIJ,EAA2BG,CAAa,CACxD,CAAC,EAED,GAAG,2EAA4E,IAAM,CAEnFF,EAAwB,gBAAgBC,CAAM,EAG9C,MAAMG,EAASD,EAAQ,QAAQ,EAG/B,OAAOH,CAAuB,EAAE,qBAAqB,EACrD,OAAOI,CAAM,EAAE,QAAQH,CAAM,CAC/B,CAAC,CACH,CAAC",
6
6
  "names": ["PublicKeyDisplayMode", "GetAppConfigurationUseCase", "getAppConfigurationMock", "config", "appBinderMock", "useCase", "result"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ContainerModule as o}from"inversify";import{GetAddressUseCase as t}from"../../use-cases/address/GetAddressUseCase";import{GetAppConfigurationUseCase as n}from"../../use-cases/app-configuration/GetAppConfigurationUseCase";import{useCasesTypes as s}from"../../use-cases/di/useCasesTypes";import{SignMessageUseCase as a}from"../../use-cases/message/SignMessageUseCase";import{SignTransactionUseCase as i}from"../../use-cases/transaction/SignTransactionUseCase";const G=()=>new o((e,r,C,m,p,u,f)=>{e(s.GetAddressUseCase).to(t),e(s.GetAppConfigurationUseCase).to(n),e(s.SignTransactionUseCase).to(i),e(s.SignMessageUseCase).to(a)});export{G as useCasesModuleFactory};
1
+ import{ContainerModule as o}from"inversify";import{GetAddressUseCase as t}from"../../use-cases/address/GetAddressUseCase";import{GetAppConfigurationUseCase as r}from"../../use-cases/app-configuration/GetAppConfigurationUseCase";import{useCasesTypes as s}from"../../use-cases/di/useCasesTypes";import{SignMessageUseCase as a}from"../../use-cases/message/SignMessageUseCase";import{SignTransactionUseCase as i}from"../../use-cases/transaction/SignTransactionUseCase";const U=()=>new o(({bind:e})=>{e(s.GetAddressUseCase).to(t),e(s.GetAppConfigurationUseCase).to(r),e(s.SignTransactionUseCase).to(i),e(s.SignMessageUseCase).to(a)});export{U as useCasesModuleFactory};
2
2
  //# sourceMappingURL=useCasesModule.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/use-cases/di/useCasesModule.ts"],
4
- "sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { GetAddressUseCase } from \"@internal/use-cases/address/GetAddressUseCase\";\nimport { GetAppConfigurationUseCase } from \"@internal/use-cases/app-configuration/GetAppConfigurationUseCase\";\nimport { useCasesTypes } from \"@internal/use-cases/di/useCasesTypes\";\nimport { SignMessageUseCase } from \"@internal/use-cases/message/SignMessageUseCase\";\nimport { SignTransactionUseCase } from \"@internal/use-cases/transaction/SignTransactionUseCase\";\n\nexport const useCasesModuleFactory = () =>\n new ContainerModule(\n (\n bind,\n _unbind,\n _isBound,\n _rebind,\n _unbindAsync,\n _onActivation,\n _onDeactivation,\n ) => {\n bind(useCasesTypes.GetAddressUseCase).to(GetAddressUseCase);\n bind(useCasesTypes.GetAppConfigurationUseCase).to(\n GetAppConfigurationUseCase,\n );\n bind(useCasesTypes.SignTransactionUseCase).to(SignTransactionUseCase);\n bind(useCasesTypes.SignMessageUseCase).to(SignMessageUseCase);\n },\n );\n"],
5
- "mappings": "AAAA,OAAS,mBAAAA,MAAuB,YAEhC,OAAS,qBAAAC,MAAyB,gDAClC,OAAS,8BAAAC,MAAkC,mEAC3C,OAAS,iBAAAC,MAAqB,uCAC9B,OAAS,sBAAAC,MAA0B,iDACnC,OAAS,0BAAAC,MAA8B,yDAEhC,MAAMC,EAAwB,IACnC,IAAIN,EACF,CACEO,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,IACG,CACHN,EAAKJ,EAAc,iBAAiB,EAAE,GAAGF,CAAiB,EAC1DM,EAAKJ,EAAc,0BAA0B,EAAE,GAC7CD,CACF,EACAK,EAAKJ,EAAc,sBAAsB,EAAE,GAAGE,CAAsB,EACpEE,EAAKJ,EAAc,kBAAkB,EAAE,GAAGC,CAAkB,CAC9D,CACF",
6
- "names": ["ContainerModule", "GetAddressUseCase", "GetAppConfigurationUseCase", "useCasesTypes", "SignMessageUseCase", "SignTransactionUseCase", "useCasesModuleFactory", "bind", "_unbind", "_isBound", "_rebind", "_unbindAsync", "_onActivation", "_onDeactivation"]
4
+ "sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { GetAddressUseCase } from \"@internal/use-cases/address/GetAddressUseCase\";\nimport { GetAppConfigurationUseCase } from \"@internal/use-cases/app-configuration/GetAppConfigurationUseCase\";\nimport { useCasesTypes } from \"@internal/use-cases/di/useCasesTypes\";\nimport { SignMessageUseCase } from \"@internal/use-cases/message/SignMessageUseCase\";\nimport { SignTransactionUseCase } from \"@internal/use-cases/transaction/SignTransactionUseCase\";\n\nexport const useCasesModuleFactory = () =>\n new ContainerModule(({ bind }) => {\n bind(useCasesTypes.GetAddressUseCase).to(GetAddressUseCase);\n bind(useCasesTypes.GetAppConfigurationUseCase).to(\n GetAppConfigurationUseCase,\n );\n bind(useCasesTypes.SignTransactionUseCase).to(SignTransactionUseCase);\n bind(useCasesTypes.SignMessageUseCase).to(SignMessageUseCase);\n });\n"],
5
+ "mappings": "AAAA,OAAS,mBAAAA,MAAuB,YAEhC,OAAS,qBAAAC,MAAyB,gDAClC,OAAS,8BAAAC,MAAkC,mEAC3C,OAAS,iBAAAC,MAAqB,uCAC9B,OAAS,sBAAAC,MAA0B,iDACnC,OAAS,0BAAAC,MAA8B,yDAEhC,MAAMC,EAAwB,IACnC,IAAIN,EAAgB,CAAC,CAAE,KAAAO,CAAK,IAAM,CAChCA,EAAKJ,EAAc,iBAAiB,EAAE,GAAGF,CAAiB,EAC1DM,EAAKJ,EAAc,0BAA0B,EAAE,GAC7CD,CACF,EACAK,EAAKJ,EAAc,sBAAsB,EAAE,GAAGE,CAAsB,EACpEE,EAAKJ,EAAc,kBAAkB,EAAE,GAAGC,CAAkB,CAC9D,CAAC",
6
+ "names": ["ContainerModule", "GetAddressUseCase", "GetAppConfigurationUseCase", "useCasesTypes", "SignMessageUseCase", "SignTransactionUseCase", "useCasesModuleFactory", "bind"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{Container as o}from"inversify";import{useCasesModuleFactory as i}from"./useCasesModule";import{useCasesTypes as s}from"./useCasesTypes";describe("useCasesModuleFactory",()=>{describe("Default",()=>{let e,t;beforeEach(()=>{t=i(),e=new o,e.load(t)}),it("should return the address module",()=>{expect(t).toBeDefined()}),it("should bind GetAddressUseCase",()=>{expect(e.isBound(s.GetAddressUseCase)).toBeTruthy()}),it("should bind GetAppConfigurationUseCase",()=>{expect(e.isBound(s.GetAppConfigurationUseCase)).toBeTruthy()}),it("should bind SignTransactionUseCase",()=>{expect(e.isBound(s.SignTransactionUseCase)).toBeTruthy()}),it("should bind SignMessageUseCase",()=>{expect(e.isBound(s.SignMessageUseCase)).toBeTruthy()})})});
1
+ import{Container as o}from"inversify";import{useCasesModuleFactory as i}from"./useCasesModule";import{useCasesTypes as s}from"./useCasesTypes";describe("useCasesModuleFactory",()=>{describe("Default",()=>{let e,t;beforeEach(()=>{t=i(),e=new o,e.loadSync(t)}),it("should return the address module",()=>{expect(t).toBeDefined()}),it("should bind GetAddressUseCase",()=>{expect(e.isBound(s.GetAddressUseCase)).toBeTruthy()}),it("should bind GetAppConfigurationUseCase",()=>{expect(e.isBound(s.GetAppConfigurationUseCase)).toBeTruthy()}),it("should bind SignTransactionUseCase",()=>{expect(e.isBound(s.SignTransactionUseCase)).toBeTruthy()}),it("should bind SignMessageUseCase",()=>{expect(e.isBound(s.SignMessageUseCase)).toBeTruthy()})})});
2
2
  //# sourceMappingURL=useCasesModule.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/use-cases/di/useCasesModule.test.ts"],
4
- "sourcesContent": ["import { Container } from \"inversify\";\n\nimport { useCasesModuleFactory } from \"./useCasesModule\";\nimport { useCasesTypes } from \"./useCasesTypes\";\n\ndescribe(\"useCasesModuleFactory\", () => {\n describe(\"Default\", () => {\n let container: Container;\n let mod: ReturnType<typeof useCasesModuleFactory>;\n beforeEach(() => {\n mod = useCasesModuleFactory();\n container = new Container();\n container.load(mod);\n });\n\n it(\"should return the address module\", () => {\n expect(mod).toBeDefined();\n });\n\n it(\"should bind GetAddressUseCase\", () => {\n expect(container.isBound(useCasesTypes.GetAddressUseCase)).toBeTruthy();\n });\n\n it(\"should bind GetAppConfigurationUseCase\", () => {\n expect(\n container.isBound(useCasesTypes.GetAppConfigurationUseCase),\n ).toBeTruthy();\n });\n\n it(\"should bind SignTransactionUseCase\", () => {\n expect(\n container.isBound(useCasesTypes.SignTransactionUseCase),\n ).toBeTruthy();\n });\n\n it(\"should bind SignMessageUseCase\", () => {\n expect(container.isBound(useCasesTypes.SignMessageUseCase)).toBeTruthy();\n });\n });\n});\n"],
5
- "mappings": "AAAA,OAAS,aAAAA,MAAiB,YAE1B,OAAS,yBAAAC,MAA6B,mBACtC,OAAS,iBAAAC,MAAqB,kBAE9B,SAAS,wBAAyB,IAAM,CACtC,SAAS,UAAW,IAAM,CACxB,IAAIC,EACAC,EACJ,WAAW,IAAM,CACfA,EAAMH,EAAsB,EAC5BE,EAAY,IAAIH,EAChBG,EAAU,KAAKC,CAAG,CACpB,CAAC,EAED,GAAG,mCAAoC,IAAM,CAC3C,OAAOA,CAAG,EAAE,YAAY,CAC1B,CAAC,EAED,GAAG,gCAAiC,IAAM,CACxC,OAAOD,EAAU,QAAQD,EAAc,iBAAiB,CAAC,EAAE,WAAW,CACxE,CAAC,EAED,GAAG,yCAA0C,IAAM,CACjD,OACEC,EAAU,QAAQD,EAAc,0BAA0B,CAC5D,EAAE,WAAW,CACf,CAAC,EAED,GAAG,qCAAsC,IAAM,CAC7C,OACEC,EAAU,QAAQD,EAAc,sBAAsB,CACxD,EAAE,WAAW,CACf,CAAC,EAED,GAAG,iCAAkC,IAAM,CACzC,OAAOC,EAAU,QAAQD,EAAc,kBAAkB,CAAC,EAAE,WAAW,CACzE,CAAC,CACH,CAAC,CACH,CAAC",
4
+ "sourcesContent": ["import { Container } from \"inversify\";\n\nimport { useCasesModuleFactory } from \"./useCasesModule\";\nimport { useCasesTypes } from \"./useCasesTypes\";\n\ndescribe(\"useCasesModuleFactory\", () => {\n describe(\"Default\", () => {\n let container: Container;\n let mod: ReturnType<typeof useCasesModuleFactory>;\n beforeEach(() => {\n mod = useCasesModuleFactory();\n container = new Container();\n container.loadSync(mod);\n });\n\n it(\"should return the address module\", () => {\n expect(mod).toBeDefined();\n });\n\n it(\"should bind GetAddressUseCase\", () => {\n expect(container.isBound(useCasesTypes.GetAddressUseCase)).toBeTruthy();\n });\n\n it(\"should bind GetAppConfigurationUseCase\", () => {\n expect(\n container.isBound(useCasesTypes.GetAppConfigurationUseCase),\n ).toBeTruthy();\n });\n\n it(\"should bind SignTransactionUseCase\", () => {\n expect(\n container.isBound(useCasesTypes.SignTransactionUseCase),\n ).toBeTruthy();\n });\n\n it(\"should bind SignMessageUseCase\", () => {\n expect(container.isBound(useCasesTypes.SignMessageUseCase)).toBeTruthy();\n });\n });\n});\n"],
5
+ "mappings": "AAAA,OAAS,aAAAA,MAAiB,YAE1B,OAAS,yBAAAC,MAA6B,mBACtC,OAAS,iBAAAC,MAAqB,kBAE9B,SAAS,wBAAyB,IAAM,CACtC,SAAS,UAAW,IAAM,CACxB,IAAIC,EACAC,EACJ,WAAW,IAAM,CACfA,EAAMH,EAAsB,EAC5BE,EAAY,IAAIH,EAChBG,EAAU,SAASC,CAAG,CACxB,CAAC,EAED,GAAG,mCAAoC,IAAM,CAC3C,OAAOA,CAAG,EAAE,YAAY,CAC1B,CAAC,EAED,GAAG,gCAAiC,IAAM,CACxC,OAAOD,EAAU,QAAQD,EAAc,iBAAiB,CAAC,EAAE,WAAW,CACxE,CAAC,EAED,GAAG,yCAA0C,IAAM,CACjD,OACEC,EAAU,QAAQD,EAAc,0BAA0B,CAC5D,EAAE,WAAW,CACf,CAAC,EAED,GAAG,qCAAsC,IAAM,CAC7C,OACEC,EAAU,QAAQD,EAAc,sBAAsB,CACxD,EAAE,WAAW,CACf,CAAC,EAED,GAAG,iCAAkC,IAAM,CACzC,OAAOC,EAAU,QAAQD,EAAc,kBAAkB,CAAC,EAAE,WAAW,CACzE,CAAC,CACH,CAAC,CACH,CAAC",
6
6
  "names": ["Container", "useCasesModuleFactory", "useCasesTypes", "container", "mod"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var B=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var d=(t,p,r,n)=>{for(var i=n>1?void 0:n?c(p,r):p,o=t.length-1,a;o>=0;o--)(a=t[o])&&(i=(n?a(p,r,i):a(i))||i);return n&&i&&B(p,r,i),i},m=(t,p)=>(r,n)=>p(r,n,t);import{inject as A,injectable as l}from"inversify";import{appBinderTypes as u}from"../../app-binder/di/appBinderTypes";let e=class{_appBinder;constructor(p){this._appBinder=p}execute(p,r){return this._appBinder.signMessage({derivationPath:p,message:r})}};e=d([l(),m(0,A(u.AppBinder))],e);export{e as SignMessageUseCase};
1
+ var d=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var s=(n,p,e,r)=>{for(var i=r>1?void 0:r?A(p,e):p,o=n.length-1,a;o>=0;o--)(a=n[o])&&(i=(r?a(p,e,i):a(i))||i);return r&&i&&d(p,e,i),i},m=(n,p)=>(e,r)=>p(e,r,n);import{inject as B,injectable as c}from"inversify";import{appBinderTypes as f}from"../../app-binder/di/appBinderTypes";let t=class{_appBinder;constructor(p){this._appBinder=p}execute(p,e,r){return this._appBinder.signMessage({derivationPath:p,message:e,skipOpenApp:r?.skipOpenApp??!1})}};t=s([c(),m(0,B(f.AppBinder))],t);export{t as SignMessageUseCase};
2
2
  //# sourceMappingURL=SignMessageUseCase.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/use-cases/message/SignMessageUseCase.ts"],
4
- "sourcesContent": ["import { inject, injectable } from \"inversify\";\n\nimport { SignMessageDAReturnType } from \"@api/app-binder/SignMessageDeviceActionTypes\";\nimport { appBinderTypes } from \"@internal/app-binder/di/appBinderTypes\";\nimport { type SolanaAppBinder } from \"@internal/app-binder/SolanaAppBinder\";\n\n@injectable()\nexport class SignMessageUseCase {\n private _appBinder: SolanaAppBinder;\n\n constructor(\n @inject(appBinderTypes.AppBinder)\n appBinding: SolanaAppBinder,\n ) {\n this._appBinder = appBinding;\n }\n\n execute(derivationPath: string, message: string): SignMessageDAReturnType {\n return this._appBinder.signMessage({\n derivationPath,\n message,\n });\n }\n}\n"],
5
- "mappings": "iOAAA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YAGnC,OAAS,kBAAAC,MAAsB,yCAIxB,IAAMC,EAAN,KAAyB,CACtB,WAER,YAEEC,EACA,CACA,KAAK,WAAaA,CACpB,CAEA,QAAQC,EAAwBC,EAA0C,CACxE,OAAO,KAAK,WAAW,YAAY,CACjC,eAAAD,EACA,QAAAC,CACF,CAAC,CACH,CACF,EAhBaH,EAANI,EAAA,CADNC,EAAW,EAKPC,EAAA,EAAAC,EAAOC,EAAe,SAAS,IAJvBR",
6
- "names": ["inject", "injectable", "appBinderTypes", "SignMessageUseCase", "appBinding", "derivationPath", "message", "__decorateClass", "injectable", "__decorateParam", "inject", "appBinderTypes"]
4
+ "sourcesContent": ["import { inject, injectable } from \"inversify\";\n\nimport { SignMessageDAReturnType } from \"@api/app-binder/SignMessageDeviceActionTypes\";\nimport { type MessageOptions } from \"@api/model/MessageOptions\";\nimport { appBinderTypes } from \"@internal/app-binder/di/appBinderTypes\";\nimport { type SolanaAppBinder } from \"@internal/app-binder/SolanaAppBinder\";\n\n@injectable()\nexport class SignMessageUseCase {\n private _appBinder: SolanaAppBinder;\n\n constructor(\n @inject(appBinderTypes.AppBinder)\n appBinding: SolanaAppBinder,\n ) {\n this._appBinder = appBinding;\n }\n\n execute(\n derivationPath: string,\n message: string,\n options?: MessageOptions,\n ): SignMessageDAReturnType {\n return this._appBinder.signMessage({\n derivationPath,\n message,\n skipOpenApp: options?.skipOpenApp ?? false,\n });\n }\n}\n"],
5
+ "mappings": "iOAAA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YAInC,OAAS,kBAAAC,MAAsB,yCAIxB,IAAMC,EAAN,KAAyB,CACtB,WAER,YAEEC,EACA,CACA,KAAK,WAAaA,CACpB,CAEA,QACEC,EACAC,EACAC,EACyB,CACzB,OAAO,KAAK,WAAW,YAAY,CACjC,eAAAF,EACA,QAAAC,EACA,YAAaC,GAAS,aAAe,EACvC,CAAC,CACH,CACF,EArBaJ,EAANK,EAAA,CADNC,EAAW,EAKPC,EAAA,EAAAC,EAAOC,EAAe,SAAS,IAJvBT",
6
+ "names": ["inject", "injectable", "appBinderTypes", "SignMessageUseCase", "appBinding", "derivationPath", "message", "options", "__decorateClass", "injectable", "__decorateParam", "inject", "appBinderTypes"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{SignMessageUseCase as n}from"./SignMessageUseCase";describe("SignMessageUseCase",()=>{it("should call signMessage on appBinder with the correct arguments",()=>{const e="44'/501'/0'/0'",s="Hello world",a={signMessage:jest.fn()};new n(a).execute(e,s),expect(a.signMessage).toHaveBeenCalledWith({derivationPath:e,message:s})})});
1
+ import{SignMessageUseCase as n}from"./SignMessageUseCase";describe("SignMessageUseCase",()=>{it("should call signMessage on appBinder with the correct arguments",()=>{const e="44'/501'/0'/0'",s="Hello world",a={signMessage:vi.fn()};new n(a).execute(e,s),expect(a.signMessage).toHaveBeenCalledWith({derivationPath:e,message:s,skipOpenApp:!1})})});
2
2
  //# sourceMappingURL=SignMessageUseCase.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/use-cases/message/SignMessageUseCase.test.ts"],
4
- "sourcesContent": ["import { type SolanaAppBinder } from \"@internal/app-binder/SolanaAppBinder\";\n\nimport { SignMessageUseCase } from \"./SignMessageUseCase\";\n\ndescribe(\"SignMessageUseCase\", () => {\n it(\"should call signMessage on appBinder with the correct arguments\", () => {\n // Given\n const derivationPath = \"44'/501'/0'/0'\";\n const message = \"Hello world\";\n const appBinder = {\n signMessage: jest.fn(),\n };\n const signMessageUseCase = new SignMessageUseCase(\n appBinder as unknown as SolanaAppBinder,\n );\n\n // When\n signMessageUseCase.execute(derivationPath, message);\n\n // Then\n expect(appBinder.signMessage).toHaveBeenCalledWith({\n derivationPath,\n message,\n });\n });\n});\n"],
5
- "mappings": "AAEA,OAAS,sBAAAA,MAA0B,uBAEnC,SAAS,qBAAsB,IAAM,CACnC,GAAG,kEAAmE,IAAM,CAE1E,MAAMC,EAAiB,iBACjBC,EAAU,cACVC,EAAY,CAChB,YAAa,KAAK,GAAG,CACvB,EAC2B,IAAIH,EAC7BG,CACF,EAGmB,QAAQF,EAAgBC,CAAO,EAGlD,OAAOC,EAAU,WAAW,EAAE,qBAAqB,CACjD,eAAAF,EACA,QAAAC,CACF,CAAC,CACH,CAAC,CACH,CAAC",
4
+ "sourcesContent": ["import { type SolanaAppBinder } from \"@internal/app-binder/SolanaAppBinder\";\n\nimport { SignMessageUseCase } from \"./SignMessageUseCase\";\n\ndescribe(\"SignMessageUseCase\", () => {\n it(\"should call signMessage on appBinder with the correct arguments\", () => {\n // Given\n const derivationPath = \"44'/501'/0'/0'\";\n const message = \"Hello world\";\n const appBinder = {\n signMessage: vi.fn(),\n };\n const signMessageUseCase = new SignMessageUseCase(\n appBinder as unknown as SolanaAppBinder,\n );\n\n // When\n signMessageUseCase.execute(derivationPath, message);\n\n // Then\n expect(appBinder.signMessage).toHaveBeenCalledWith({\n derivationPath,\n message,\n skipOpenApp: false,\n });\n });\n});\n"],
5
+ "mappings": "AAEA,OAAS,sBAAAA,MAA0B,uBAEnC,SAAS,qBAAsB,IAAM,CACnC,GAAG,kEAAmE,IAAM,CAE1E,MAAMC,EAAiB,iBACjBC,EAAU,cACVC,EAAY,CAChB,YAAa,GAAG,GAAG,CACrB,EAC2B,IAAIH,EAC7BG,CACF,EAGmB,QAAQF,EAAgBC,CAAO,EAGlD,OAAOC,EAAU,WAAW,EAAE,qBAAqB,CACjD,eAAAF,EACA,QAAAC,EACA,YAAa,EACf,CAAC,CACH,CAAC,CACH,CAAC",
6
6
  "names": ["SignMessageUseCase", "derivationPath", "message", "appBinder"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var s=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var m=(i,r,p,n)=>{for(var t=n>1?void 0:n?T(r,p):r,a=i.length-1,e;a>=0;a--)(e=i[a])&&(t=(n?e(r,p,t):e(t))||t);return n&&t&&s(r,p,t),t},c=(i,r)=>(p,n)=>r(p,n,i);import{inject as d,injectable as f}from"inversify";import{appBinderTypes as B}from"../../app-binder/di/appBinderTypes";let o=class{constructor(r){this.appBinder=r}execute(r,p,n){return this.appBinder.signTransaction({derivationPath:r,transaction:p,options:n})}};o=m([f(),c(0,d(B.AppBinder))],o);export{o as SignTransactionUseCase};
1
+ var s=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var m=(t,p,n,r)=>{for(var i=r>1?void 0:r?f(p,n):p,e=t.length-1,a;e>=0;e--)(a=t[e])&&(i=(r?a(p,n,i):a(i))||i);return r&&i&&s(p,n,i),i},c=(t,p)=>(n,r)=>p(n,r,t);import{inject as A,injectable as T}from"inversify";import{appBinderTypes as d}from"../../app-binder/di/appBinderTypes";let o=class{constructor(p){this.appBinder=p}execute(p,n,r){return this.appBinder.signTransaction({derivationPath:p,transaction:n,skipOpenApp:r?.skipOpenApp??!1})}};o=m([T(),c(0,A(d.AppBinder))],o);export{o as SignTransactionUseCase};
2
2
  //# sourceMappingURL=SignTransactionUseCase.js.map