@ledgerhq/device-signer-kit-ethereum 0.0.0-web-ble-29-08---20250829104351 → 0.0.0-wrong-error-when-in-experimental-provider-20251021162636

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 (341) hide show
  1. package/README.md +59 -1
  2. package/lib/cjs/api/SignerEth.js +1 -1
  3. package/lib/cjs/api/SignerEth.js.map +1 -1
  4. package/lib/cjs/api/SignerEthBuilder.test.js +1 -1
  5. package/lib/cjs/api/SignerEthBuilder.test.js.map +2 -2
  6. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
  7. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
  8. package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
  9. package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js.map +2 -2
  10. package/lib/cjs/api/app-binder/VerifySafeAddressDeviceActionTypes.js +2 -0
  11. package/lib/cjs/api/app-binder/VerifySafeAddressDeviceActionTypes.js.map +7 -0
  12. package/lib/cjs/api/index.js +1 -1
  13. package/lib/cjs/api/index.js.map +3 -3
  14. package/lib/cjs/api/model/SafeAddressOptions.js +2 -0
  15. package/lib/cjs/api/model/SafeAddressOptions.js.map +7 -0
  16. package/lib/cjs/internal/DefaultSignerEth.js +1 -1
  17. package/lib/cjs/internal/DefaultSignerEth.js.map +3 -3
  18. package/lib/cjs/internal/app-binder/EthAppBinder.js +1 -1
  19. package/lib/cjs/internal/app-binder/EthAppBinder.js.map +3 -3
  20. package/lib/cjs/internal/app-binder/EthAppBinder.test.js +1 -1
  21. package/lib/cjs/internal/app-binder/EthAppBinder.test.js.map +2 -2
  22. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.js +2 -0
  23. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.js.map +7 -0
  24. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js +2 -0
  25. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js.map +7 -0
  26. package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.js +2 -0
  27. package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.js.map +7 -0
  28. package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.test.js +2 -0
  29. package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.test.js.map +7 -0
  30. package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.js +1 -1
  31. package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.js.map +3 -3
  32. package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.test.js +1 -1
  33. package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.test.js.map +3 -3
  34. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
  35. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
  36. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  37. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
  38. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
  39. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +2 -2
  40. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
  41. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
  42. package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js +2 -0
  43. package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js.map +7 -0
  44. package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js +2 -0
  45. package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js.map +7 -0
  46. package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js +2 -0
  47. package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js.map +7 -0
  48. package/lib/cjs/internal/app-binder/task/BuildBaseContexts.js +2 -0
  49. package/lib/cjs/internal/app-binder/task/BuildBaseContexts.js.map +7 -0
  50. package/lib/cjs/internal/app-binder/task/BuildBaseContexts.test.js +2 -0
  51. package/lib/cjs/internal/app-binder/task/BuildBaseContexts.test.js.map +7 -0
  52. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
  53. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
  54. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
  55. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +3 -3
  56. package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.js +2 -0
  57. package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.js.map +7 -0
  58. package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.test.js +2 -0
  59. package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.test.js.map +7 -0
  60. package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.js +2 -0
  61. package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.js.map +7 -0
  62. package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.test.js +2 -0
  63. package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.test.js.map +7 -0
  64. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.js +2 -0
  65. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.js.map +7 -0
  66. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.test.js +2 -0
  67. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.test.js.map +7 -0
  68. package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.js +2 -0
  69. package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.js.map +7 -0
  70. package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.test.js +2 -0
  71. package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.test.js.map +7 -0
  72. package/lib/cjs/internal/app-binder/task/ParseTransactionTask.js +2 -0
  73. package/lib/cjs/internal/app-binder/task/ParseTransactionTask.js.map +7 -0
  74. package/lib/cjs/internal/app-binder/task/ParseTransactionTask.test.js +2 -0
  75. package/lib/cjs/internal/app-binder/task/ParseTransactionTask.test.js.map +7 -0
  76. package/lib/cjs/internal/app-binder/task/ProvideContextTask.js +2 -0
  77. package/lib/cjs/internal/app-binder/task/ProvideContextTask.js.map +7 -0
  78. package/lib/cjs/internal/app-binder/task/ProvideContextTask.test.js +2 -0
  79. package/lib/cjs/internal/app-binder/task/ProvideContextTask.test.js.map +7 -0
  80. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.js +1 -1
  81. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.js.map +3 -3
  82. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
  83. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +3 -3
  84. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.js +2 -0
  85. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.js.map +7 -0
  86. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.test.js +2 -0
  87. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.test.js.map +7 -0
  88. package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.js +1 -1
  89. package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.js.map +3 -3
  90. package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.test.js +1 -1
  91. package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.test.js.map +3 -3
  92. package/lib/cjs/internal/di.js +1 -1
  93. package/lib/cjs/internal/di.js.map +3 -3
  94. package/lib/cjs/internal/safe/di/safeModule.js +2 -0
  95. package/lib/cjs/internal/safe/di/safeModule.js.map +7 -0
  96. package/lib/cjs/internal/safe/di/safeModule.test.js +2 -0
  97. package/lib/cjs/internal/safe/di/safeModule.test.js.map +7 -0
  98. package/lib/cjs/internal/safe/di/safeTypes.js +2 -0
  99. package/lib/cjs/internal/safe/di/safeTypes.js.map +7 -0
  100. package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.js +2 -0
  101. package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.js.map +7 -0
  102. package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.test.js +2 -0
  103. package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.test.js.map +7 -0
  104. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.js +1 -1
  105. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.js.map +2 -2
  106. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
  107. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js.map +2 -2
  108. package/lib/cjs/package.json +1 -1
  109. package/lib/esm/api/SignerEthBuilder.test.js +1 -1
  110. package/lib/esm/api/SignerEthBuilder.test.js.map +2 -2
  111. package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
  112. package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
  113. package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
  114. package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js.map +2 -2
  115. package/lib/esm/api/app-binder/VerifySafeAddressDeviceActionTypes.js +2 -0
  116. package/lib/esm/api/app-binder/VerifySafeAddressDeviceActionTypes.js.map +7 -0
  117. package/lib/esm/api/index.js +1 -1
  118. package/lib/esm/api/index.js.map +2 -2
  119. package/lib/esm/api/model/SafeAddressOptions.js +1 -0
  120. package/lib/esm/api/model/SafeAddressOptions.js.map +7 -0
  121. package/lib/esm/internal/DefaultSignerEth.js +1 -1
  122. package/lib/esm/internal/DefaultSignerEth.js.map +3 -3
  123. package/lib/esm/internal/app-binder/EthAppBinder.js +1 -1
  124. package/lib/esm/internal/app-binder/EthAppBinder.js.map +3 -3
  125. package/lib/esm/internal/app-binder/EthAppBinder.test.js +1 -1
  126. package/lib/esm/internal/app-binder/EthAppBinder.test.js.map +2 -2
  127. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.js +2 -0
  128. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.js.map +7 -0
  129. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js +2 -0
  130. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js.map +7 -0
  131. package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.js +2 -0
  132. package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.js.map +7 -0
  133. package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.test.js +2 -0
  134. package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.test.js.map +7 -0
  135. package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.js +1 -1
  136. package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.js.map +3 -3
  137. package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.test.js +1 -1
  138. package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.test.js.map +3 -3
  139. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
  140. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
  141. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  142. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
  143. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
  144. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +2 -2
  145. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
  146. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
  147. package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js +2 -0
  148. package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js.map +7 -0
  149. package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js +2 -0
  150. package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js.map +7 -0
  151. package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js +2 -0
  152. package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js.map +7 -0
  153. package/lib/esm/internal/app-binder/task/BuildBaseContexts.js +2 -0
  154. package/lib/esm/internal/app-binder/task/BuildBaseContexts.js.map +7 -0
  155. package/lib/esm/internal/app-binder/task/BuildBaseContexts.test.js +2 -0
  156. package/lib/esm/internal/app-binder/task/BuildBaseContexts.test.js.map +7 -0
  157. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
  158. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
  159. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
  160. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +3 -3
  161. package/lib/esm/internal/app-binder/task/BuildFullContextsTask.js +2 -0
  162. package/lib/esm/internal/app-binder/task/BuildFullContextsTask.js.map +7 -0
  163. package/lib/esm/internal/app-binder/task/BuildFullContextsTask.test.js +2 -0
  164. package/lib/esm/internal/app-binder/task/BuildFullContextsTask.test.js.map +7 -0
  165. package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.js +2 -0
  166. package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.js.map +7 -0
  167. package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.test.js +2 -0
  168. package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.test.js.map +7 -0
  169. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.js +2 -0
  170. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.js.map +7 -0
  171. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.test.js +2 -0
  172. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.test.js.map +7 -0
  173. package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.js +2 -0
  174. package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.js.map +7 -0
  175. package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.test.js +2 -0
  176. package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.test.js.map +7 -0
  177. package/lib/esm/internal/app-binder/task/ParseTransactionTask.js +2 -0
  178. package/lib/esm/internal/app-binder/task/ParseTransactionTask.js.map +7 -0
  179. package/lib/esm/internal/app-binder/task/ParseTransactionTask.test.js +2 -0
  180. package/lib/esm/internal/app-binder/task/ParseTransactionTask.test.js.map +7 -0
  181. package/lib/esm/internal/app-binder/task/ProvideContextTask.js +2 -0
  182. package/lib/esm/internal/app-binder/task/ProvideContextTask.js.map +7 -0
  183. package/lib/esm/internal/app-binder/task/ProvideContextTask.test.js +2 -0
  184. package/lib/esm/internal/app-binder/task/ProvideContextTask.test.js.map +7 -0
  185. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.js +1 -1
  186. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.js.map +3 -3
  187. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
  188. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +3 -3
  189. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.js +2 -0
  190. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.js.map +7 -0
  191. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.test.js +2 -0
  192. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.test.js.map +7 -0
  193. package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.js +1 -1
  194. package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.js.map +3 -3
  195. package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.test.js +1 -1
  196. package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.test.js.map +3 -3
  197. package/lib/esm/internal/di.js +1 -1
  198. package/lib/esm/internal/di.js.map +3 -3
  199. package/lib/esm/internal/safe/di/safeModule.js +2 -0
  200. package/lib/esm/internal/safe/di/safeModule.js.map +7 -0
  201. package/lib/esm/internal/safe/di/safeModule.test.js +2 -0
  202. package/lib/esm/internal/safe/di/safeModule.test.js.map +7 -0
  203. package/lib/esm/internal/safe/di/safeTypes.js +2 -0
  204. package/lib/esm/internal/safe/di/safeTypes.js.map +7 -0
  205. package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.js +2 -0
  206. package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.js.map +7 -0
  207. package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.test.js +2 -0
  208. package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.test.js.map +7 -0
  209. package/lib/esm/internal/transaction/service/parser/TransactionParserService.js +1 -1
  210. package/lib/esm/internal/transaction/service/parser/TransactionParserService.js.map +2 -2
  211. package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
  212. package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js.map +2 -2
  213. package/lib/esm/package.json +1 -1
  214. package/lib/types/api/SignerEth.d.ts +3 -0
  215. package/lib/types/api/SignerEth.d.ts.map +1 -1
  216. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +9 -8
  217. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
  218. package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts +4 -0
  219. package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts.map +1 -1
  220. package/lib/types/api/app-binder/VerifySafeAddressDeviceActionTypes.d.ts +30 -0
  221. package/lib/types/api/app-binder/VerifySafeAddressDeviceActionTypes.d.ts.map +1 -0
  222. package/lib/types/api/index.d.ts +5 -9
  223. package/lib/types/api/index.d.ts.map +1 -1
  224. package/lib/types/api/model/SafeAddressOptions.d.ts +5 -0
  225. package/lib/types/api/model/SafeAddressOptions.d.ts.map +1 -0
  226. package/lib/types/internal/DefaultSignerEth.d.ts +3 -0
  227. package/lib/types/internal/DefaultSignerEth.d.ts.map +1 -1
  228. package/lib/types/internal/app-binder/EthAppBinder.d.ts +6 -0
  229. package/lib/types/internal/app-binder/EthAppBinder.d.ts.map +1 -1
  230. package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.d.ts +28 -0
  231. package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.d.ts.map +1 -0
  232. package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.d.ts +2 -0
  233. package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.d.ts.map +1 -0
  234. package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.d.ts +34 -0
  235. package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.d.ts.map +1 -0
  236. package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.test.d.ts +2 -0
  237. package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.test.d.ts.map +1 -0
  238. package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts +29 -1
  239. package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts.map +1 -1
  240. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts +14 -18
  241. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts.map +1 -1
  242. package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts +4 -0
  243. package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts.map +1 -1
  244. package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.d.ts +20 -0
  245. package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.d.ts.map +1 -0
  246. package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.d.ts +2 -0
  247. package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.d.ts.map +1 -0
  248. package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.d.ts +6 -0
  249. package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.d.ts.map +1 -0
  250. package/lib/types/internal/app-binder/task/BuildBaseContexts.d.ts +51 -0
  251. package/lib/types/internal/app-binder/task/BuildBaseContexts.d.ts.map +1 -0
  252. package/lib/types/internal/app-binder/task/BuildBaseContexts.test.d.ts +2 -0
  253. package/lib/types/internal/app-binder/task/BuildBaseContexts.test.d.ts.map +1 -0
  254. package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts +8 -1
  255. package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts.map +1 -1
  256. package/lib/types/internal/app-binder/task/BuildFullContextsTask.d.ts +39 -0
  257. package/lib/types/internal/app-binder/task/BuildFullContextsTask.d.ts.map +1 -0
  258. package/lib/types/internal/app-binder/task/BuildFullContextsTask.test.d.ts +2 -0
  259. package/lib/types/internal/app-binder/task/BuildFullContextsTask.test.d.ts.map +1 -0
  260. package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.d.ts +19 -0
  261. package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.d.ts.map +1 -0
  262. package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.test.d.ts +2 -0
  263. package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.test.d.ts.map +1 -0
  264. package/lib/types/internal/app-binder/task/BuildSubcontextsTask.d.ts +28 -0
  265. package/lib/types/internal/app-binder/task/BuildSubcontextsTask.d.ts.map +1 -0
  266. package/lib/types/internal/app-binder/task/BuildSubcontextsTask.test.d.ts +2 -0
  267. package/lib/types/internal/app-binder/task/BuildSubcontextsTask.test.d.ts.map +1 -0
  268. package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.d.ts +21 -0
  269. package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.d.ts.map +1 -0
  270. package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.test.d.ts +2 -0
  271. package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.test.d.ts.map +1 -0
  272. package/lib/types/internal/app-binder/task/{PreBuildContextTask.d.ts → ParseTransactionTask.d.ts} +6 -6
  273. package/lib/types/internal/app-binder/task/ParseTransactionTask.d.ts.map +1 -0
  274. package/lib/types/internal/app-binder/task/ParseTransactionTask.test.d.ts +2 -0
  275. package/lib/types/internal/app-binder/task/ParseTransactionTask.test.d.ts.map +1 -0
  276. package/lib/types/internal/app-binder/task/ProvideContextTask.d.ts +22 -0
  277. package/lib/types/internal/app-binder/task/ProvideContextTask.d.ts.map +1 -0
  278. package/lib/types/internal/app-binder/task/ProvideContextTask.test.d.ts +2 -0
  279. package/lib/types/internal/app-binder/task/ProvideContextTask.test.d.ts.map +1 -0
  280. package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts +14 -3
  281. package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts.map +1 -1
  282. package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.d.ts +36 -0
  283. package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.d.ts.map +1 -0
  284. package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.test.d.ts +2 -0
  285. package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.test.d.ts.map +1 -0
  286. package/lib/types/internal/app-binder/task/SendPayloadInChunksTask.d.ts +1 -0
  287. package/lib/types/internal/app-binder/task/SendPayloadInChunksTask.d.ts.map +1 -1
  288. package/lib/types/internal/di.d.ts.map +1 -1
  289. package/lib/types/internal/safe/di/safeModule.d.ts +3 -0
  290. package/lib/types/internal/safe/di/safeModule.d.ts.map +1 -0
  291. package/lib/types/internal/safe/di/safeModule.test.d.ts +2 -0
  292. package/lib/types/internal/safe/di/safeModule.test.d.ts.map +1 -0
  293. package/lib/types/internal/safe/di/safeTypes.d.ts +4 -0
  294. package/lib/types/internal/safe/di/safeTypes.d.ts.map +1 -0
  295. package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.d.ts +9 -0
  296. package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.d.ts.map +1 -0
  297. package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.test.d.ts +2 -0
  298. package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.test.d.ts.map +1 -0
  299. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  300. package/package.json +8 -8
  301. package/lib/cjs/internal/app-binder/task/BuildSubContextTask.js +0 -2
  302. package/lib/cjs/internal/app-binder/task/BuildSubContextTask.js.map +0 -7
  303. package/lib/cjs/internal/app-binder/task/BuildSubContextTask.test.js +0 -2
  304. package/lib/cjs/internal/app-binder/task/BuildSubContextTask.test.js.map +0 -7
  305. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js +0 -2
  306. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js.map +0 -7
  307. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js +0 -2
  308. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js.map +0 -7
  309. package/lib/cjs/internal/app-binder/task/PreBuildContextTask.js +0 -2
  310. package/lib/cjs/internal/app-binder/task/PreBuildContextTask.js.map +0 -7
  311. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js +0 -2
  312. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js.map +0 -7
  313. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js +0 -2
  314. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +0 -7
  315. package/lib/esm/internal/app-binder/task/BuildSubContextTask.js +0 -2
  316. package/lib/esm/internal/app-binder/task/BuildSubContextTask.js.map +0 -7
  317. package/lib/esm/internal/app-binder/task/BuildSubContextTask.test.js +0 -2
  318. package/lib/esm/internal/app-binder/task/BuildSubContextTask.test.js.map +0 -7
  319. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js +0 -2
  320. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js.map +0 -7
  321. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js +0 -2
  322. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js.map +0 -7
  323. package/lib/esm/internal/app-binder/task/PreBuildContextTask.js +0 -2
  324. package/lib/esm/internal/app-binder/task/PreBuildContextTask.js.map +0 -7
  325. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js +0 -2
  326. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js.map +0 -7
  327. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js +0 -2
  328. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +0 -7
  329. package/lib/types/internal/app-binder/task/BuildSubContextTask.d.ts +0 -20
  330. package/lib/types/internal/app-binder/task/BuildSubContextTask.d.ts.map +0 -1
  331. package/lib/types/internal/app-binder/task/BuildSubContextTask.test.d.ts +0 -2
  332. package/lib/types/internal/app-binder/task/BuildSubContextTask.test.d.ts.map +0 -1
  333. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts +0 -28
  334. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts.map +0 -1
  335. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.test.d.ts +0 -2
  336. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.test.d.ts.map +0 -1
  337. package/lib/types/internal/app-binder/task/PreBuildContextTask.d.ts.map +0 -1
  338. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts +0 -44
  339. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts.map +0 -1
  340. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.test.d.ts +0 -2
  341. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.test.d.ts.map +0 -1
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/internal/app-binder/task/ProvideTransactionContextsTask.test.ts"],
4
+ "sourcesContent": ["import { ClearSignContextType } from \"@ledgerhq/context-module\";\nimport {\n CommandResultFactory,\n type InternalApi,\n type UnknownDeviceExchangeError,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { StoreTransactionCommand } from \"@internal/app-binder/command/StoreTransactionCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\n\nimport {\n type ProvideContextTask,\n type ProvideContextTaskArgs,\n} from \"./ProvideContextTask\";\nimport {\n ProvideTransactionContextsTask,\n type ProvideTransactionContextsTaskArgs,\n} from \"./ProvideTransactionContextsTask\";\nimport {\n type SendCommandInChunksTask,\n type SendCommandInChunksTaskArgs,\n} from \"./SendCommandInChunksTask\";\n\ndescribe(\"ProvideTransactionContextsTask\", () => {\n const api = makeDeviceActionInternalApiMock();\n const successResult = CommandResultFactory<void, EthErrorCodes>({\n data: undefined,\n });\n const errorResult = CommandResultFactory<void, EthErrorCodes>({\n data: undefined,\n error: {} as UnknownDeviceExchangeError,\n });\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"run\", () => {\n const provideContextTaskRunMock = vi.fn();\n const sendCommandInChunksTaskRunMock = vi.fn();\n const provideContextTaskMockFactory = vi.fn();\n const sendCommandInChunksTaskMockFactory = vi.fn();\n\n beforeEach(() => {\n vi.clearAllMocks();\n provideContextTaskMockFactory.mockImplementation(\n (a: InternalApi, args: ProvideContextTaskArgs) =>\n ({\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n run: () => provideContextTaskRunMock(a, args),\n }) as unknown as ProvideContextTask,\n );\n sendCommandInChunksTaskMockFactory.mockImplementation(\n (a: InternalApi, args: SendCommandInChunksTaskArgs<unknown>) =>\n ({\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n run: () => sendCommandInChunksTaskRunMock(a, args),\n }) as unknown as SendCommandInChunksTask<unknown>,\n );\n });\n\n describe(\"with no subcontexts\", () => {\n it(\"should provide the transaction context for a TRANSACTION_INFO context\", async () => {\n // GIVEN\n const args: ProvideTransactionContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"0x00\",\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendCommandInChunksTaskRunMock.mockResolvedValue(successResult);\n provideContextTaskRunMock.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideTransactionContextsTask(\n api,\n args,\n provideContextTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n\n // StoreTransactionCommand should be called\n expect(sendCommandInChunksTaskRunMock).toHaveBeenCalledTimes(1);\n expect(sendCommandInChunksTaskMockFactory).toHaveBeenCalledWith(api, {\n data: new Uint8Array([\n 0x05, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x00, 0x3c, 0x80, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n ]),\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n // Test that the commandFactory returns a StoreTransactionCommand\n const factoryCall = sendCommandInChunksTaskMockFactory.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory = factoryCall[1].commandFactory;\n const mockArgs = {\n chunkedData: new Uint8Array([1, 2, 3, 4]),\n isFirstChunk: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command = commandFactory(mockArgs);\n expect(command).toBeInstanceOf(StoreTransactionCommand);\n\n // ProvideContextTask should be called for the context\n expect(provideContextTaskRunMock).toHaveBeenCalledTimes(1);\n expect(provideContextTaskRunMock).toHaveBeenCalledWith(api, {\n context: {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"0x00\",\n },\n });\n });\n\n it(\"should provide context without serialized transaction when not provided\", async () => {\n // GIVEN\n const args: ProvideTransactionContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextCallbacks: [],\n },\n ],\n derivationPath: \"44'/60'/0'/0/0\",\n };\n provideContextTaskRunMock.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideTransactionContextsTask(\n api,\n args,\n provideContextTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendCommandInChunksTaskRunMock).not.toHaveBeenCalled();\n expect(provideContextTaskRunMock).toHaveBeenCalledTimes(1);\n });\n\n it(\"should skip PROXY_INFO context and only provide subcontexts\", async () => {\n // GIVEN\n const args: ProvideTransactionContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.PROXY_INFO,\n payload: \"payload\",\n },\n subcontextCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.PROXY_INFO,\n payload: \"subcontext payload\",\n }),\n ],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n provideContextTaskRunMock.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideTransactionContextsTask(\n api,\n args,\n provideContextTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(provideContextTaskRunMock).toHaveBeenCalledTimes(1);\n expect(provideContextTaskRunMock).toHaveBeenCalledWith(api, {\n context: {\n type: ClearSignContextType.PROXY_INFO,\n payload: \"subcontext payload\",\n },\n });\n });\n\n it(\"should skip ERROR subcontexts silently\", async () => {\n // GIVEN\n const args: ProvideTransactionContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.ERROR,\n error: new Error(\"error\"),\n }),\n ],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n provideContextTaskRunMock.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideTransactionContextsTask(\n api,\n args,\n provideContextTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n // Only the main context should be provided, not the error subcontext\n expect(provideContextTaskRunMock).toHaveBeenCalledTimes(1);\n expect(provideContextTaskRunMock).toHaveBeenCalledWith(api, {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n });\n });\n\n it(\"should only store transaction once for first TRANSACTION_INFO context\", async () => {\n // GIVEN\n const args: ProvideTransactionContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload1\",\n },\n subcontextCallbacks: [],\n },\n {\n context: {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload2\",\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array([1, 2, 3]),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendCommandInChunksTaskRunMock.mockResolvedValue(successResult);\n provideContextTaskRunMock.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideTransactionContextsTask(\n api,\n args,\n provideContextTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n // StoreTransactionCommand should only be called once\n expect(sendCommandInChunksTaskRunMock).toHaveBeenCalledTimes(1);\n // But both contexts should be provided\n expect(provideContextTaskRunMock).toHaveBeenCalledTimes(2);\n });\n });\n\n describe(\"with subcontexts\", () => {\n it(\"should provide subcontexts before the main context\", async () => {\n // GIVEN\n const args: ProvideTransactionContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"main payload\",\n },\n subcontextCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.TOKEN,\n payload: \"subcontext payload\",\n }),\n ],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n provideContextTaskRunMock.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideTransactionContextsTask(\n api,\n args,\n provideContextTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(provideContextTaskRunMock).toHaveBeenCalledTimes(2);\n // Subcontext should be provided first\n expect(provideContextTaskRunMock).toHaveBeenNthCalledWith(1, api, {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"subcontext payload\",\n },\n });\n // Then main context\n expect(provideContextTaskRunMock).toHaveBeenNthCalledWith(2, api, {\n context: {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"main payload\",\n },\n });\n });\n\n it(\"should provide multiple subcontexts in order\", async () => {\n // GIVEN\n const args: ProvideTransactionContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TRUSTED_NAME,\n payload: \"main payload\",\n },\n subcontextCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.NFT,\n payload: \"subcontext1\",\n }),\n () =>\n Promise.resolve({\n type: ClearSignContextType.TOKEN,\n payload: \"subcontext2\",\n }),\n ],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n provideContextTaskRunMock.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideTransactionContextsTask(\n api,\n args,\n provideContextTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(provideContextTaskRunMock).toHaveBeenCalledTimes(3);\n expect(provideContextTaskRunMock).toHaveBeenNthCalledWith(1, api, {\n context: {\n type: ClearSignContextType.NFT,\n payload: \"subcontext1\",\n },\n });\n expect(provideContextTaskRunMock).toHaveBeenNthCalledWith(2, api, {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"subcontext2\",\n },\n });\n expect(provideContextTaskRunMock).toHaveBeenNthCalledWith(3, api, {\n context: {\n type: ClearSignContextType.TRUSTED_NAME,\n payload: \"main payload\",\n },\n });\n });\n\n it(\"should continue providing main context even if subcontext fails\", async () => {\n // GIVEN\n const args: ProvideTransactionContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"main payload\",\n },\n subcontextCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.TOKEN,\n payload: \"subcontext payload\",\n }),\n ],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n provideContextTaskRunMock\n .mockResolvedValueOnce(errorResult) // subcontext fails\n .mockResolvedValueOnce(successResult); // main context succeeds\n\n // WHEN\n const task = new ProvideTransactionContextsTask(\n api,\n args,\n provideContextTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(provideContextTaskRunMock).toHaveBeenCalledTimes(2);\n });\n });\n\n describe(\"with multiple contexts\", () => {\n it(\"should provide all contexts in order\", async () => {\n // GIVEN\n const args: ProvideTransactionContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload1\",\n },\n subcontextCallbacks: [],\n },\n {\n context: {\n type: ClearSignContextType.NFT,\n payload: \"payload2\",\n },\n subcontextCallbacks: [],\n },\n {\n context: {\n type: ClearSignContextType.TRUSTED_NAME,\n payload: \"payload3\",\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n provideContextTaskRunMock.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideTransactionContextsTask(\n api,\n args,\n provideContextTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(provideContextTaskRunMock).toHaveBeenCalledTimes(3);\n expect(provideContextTaskRunMock).toHaveBeenNthCalledWith(1, api, {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload1\",\n },\n });\n expect(provideContextTaskRunMock).toHaveBeenNthCalledWith(2, api, {\n context: {\n type: ClearSignContextType.NFT,\n payload: \"payload2\",\n },\n });\n expect(provideContextTaskRunMock).toHaveBeenNthCalledWith(3, api, {\n context: {\n type: ClearSignContextType.TRUSTED_NAME,\n payload: \"payload3\",\n },\n });\n });\n });\n\n describe(\"error handling\", () => {\n it(\"should return error if main context fails\", async () => {\n // GIVEN\n const args: ProvideTransactionContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n provideContextTaskRunMock.mockResolvedValue(errorResult);\n\n // WHEN\n const task = new ProvideTransactionContextsTask(\n api,\n args,\n provideContextTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Left(errorResult));\n });\n\n it(\"should stop providing contexts after first main context failure\", async () => {\n // GIVEN\n const args: ProvideTransactionContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload1\",\n },\n subcontextCallbacks: [],\n },\n {\n context: {\n type: ClearSignContextType.NFT,\n payload: \"payload2\",\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n provideContextTaskRunMock.mockResolvedValue(errorResult);\n\n // WHEN\n const task = new ProvideTransactionContextsTask(\n api,\n args,\n provideContextTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Left(errorResult));\n // Should only try to provide the first context\n expect(provideContextTaskRunMock).toHaveBeenCalledTimes(1);\n });\n });\n\n describe(\"derivation path handling\", () => {\n it(\"should correctly parse and include derivation path in StoreTransaction\", async () => {\n // GIVEN\n const args: ProvideTransactionContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload\",\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array([0xaa, 0xbb, 0xcc]),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendCommandInChunksTaskRunMock.mockResolvedValue(successResult);\n provideContextTaskRunMock.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideTransactionContextsTask(\n api,\n args,\n provideContextTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n await task.run();\n\n // THEN\n expect(sendCommandInChunksTaskMockFactory).toHaveBeenCalledWith(\n api,\n expect.objectContaining({\n data: new Uint8Array([\n 0x05, // path length\n 0x80,\n 0x00,\n 0x00,\n 0x2c, // 44'\n 0x80,\n 0x00,\n 0x00,\n 0x3c, // 60'\n 0x80,\n 0x00,\n 0x00,\n 0x00, // 0'\n 0x00,\n 0x00,\n 0x00,\n 0x00, // 0\n 0x00,\n 0x00,\n 0x00,\n 0x00, // 0\n 0xaa,\n 0xbb,\n 0xcc, // transaction\n ]),\n }),\n );\n });\n });\n\n describe(\"factory types\", () => {\n it(\"should have default factories\", () => {\n // GIVEN\n const task = new ProvideTransactionContextsTask(api, {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n });\n\n // THEN\n expect(task[\"_provideContextTaskFactory\"]).toBeDefined();\n expect(task[\"_sendCommandInChunksTaskFactory\"]).toBeDefined();\n });\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["import_context_module", "import_device_management_kit", "import_purify_ts", "import_StoreTransactionCommand", "import_makeInternalApi", "import_ProvideTransactionContextsTask", "api", "successResult", "errorResult", "provideContextTaskRunMock", "sendCommandInChunksTaskRunMock", "provideContextTaskMockFactory", "sendCommandInChunksTaskMockFactory", "args", "result", "commandFactory", "mockArgs", "command", "task"]
7
+ }
@@ -1,2 +1,2 @@
1
- "use strict";var s=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var l=(r,a)=>{for(var o in a)s(r,o,{get:a[o],enumerable:!0})},u=(r,a,o,d)=>{if(a&&typeof a=="object"||typeof a=="function")for(let n of i(a))!y.call(r,n)&&n!==o&&s(r,n,{get:()=>a[n],enumerable:!(d=p(a,n))||d.enumerable});return r};var c=r=>u(s({},"__esModule",{value:!0}),r);var k={};l(k,{SendPayloadInChunksTask:()=>C});module.exports=c(k);var t=require("@ledgerhq/device-management-kit"),e=require("../../shared/utils/PayloadUtils"),m=require("./SendCommandInChunksTask");class C{constructor(a,o){this.api=a;this.args=o}async run(){const a=e.PayloadUtils.getBufferFromPayload(this.args.payload);return a?new m.SendCommandInChunksTask(this.api,{data:a,commandFactory:this.args.commandFactory}).run():(0,t.CommandResultFactory)({error:new t.InvalidStatusWordError("Invalid payload")})}}0&&(module.exports={SendPayloadInChunksTask});
1
+ "use strict";var s=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var p=(r,a)=>{for(var n in a)s(r,n,{get:a[n],enumerable:!0})},u=(r,a,n,o)=>{if(a&&typeof a=="object"||typeof a=="function")for(let e of i(a))!y.call(r,e)&&e!==n&&s(r,e,{get:()=>a[e],enumerable:!(o=l(a,e))||o.enumerable});return r};var h=r=>u(s({},"__esModule",{value:!0}),r);var C={};p(C,{SendPayloadInChunksTask:()=>c});module.exports=h(C);var t=require("@ledgerhq/device-management-kit"),d=require("../../shared/utils/PayloadUtils"),m=require("./SendCommandInChunksTask");class c{constructor(a,n){this.api=a;this.args=n}async run(){const{payload:a,withPayloadLength:n=!0}=this.args;let o=null;return n?o=d.PayloadUtils.getBufferFromPayload(a):o=(0,t.hexaStringToBuffer)(a),o?new m.SendCommandInChunksTask(this.api,{data:o,commandFactory:this.args.commandFactory}).run():(0,t.CommandResultFactory)({error:new t.InvalidStatusWordError("Invalid payload")})}}0&&(module.exports={SendPayloadInChunksTask});
2
2
  //# sourceMappingURL=SendPayloadInChunksTask.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/task/SendPayloadInChunksTask.ts"],
4
- "sourcesContent": ["import {\n type CommandResult,\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport { PayloadUtils } from \"@internal/shared/utils/PayloadUtils\";\n\nimport {\n SendCommandInChunksTask,\n type SendCommandInChunksTaskArgs,\n} from \"./SendCommandInChunksTask\";\n\nexport type SendPayloadInChunksTaskArgs<T> = {\n payload: string;\n commandFactory: SendCommandInChunksTaskArgs<T>[\"commandFactory\"];\n};\n\nexport class SendPayloadInChunksTask<T> {\n constructor(\n private api: InternalApi,\n private args: SendPayloadInChunksTaskArgs<T>,\n ) {}\n async run(): Promise<CommandResult<T, EthErrorCodes>> {\n const data = PayloadUtils.getBufferFromPayload(this.args.payload);\n\n if (!data) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Invalid payload\"),\n });\n }\n\n return new SendCommandInChunksTask(this.api, {\n data,\n commandFactory: this.args.commandFactory,\n }).run();\n }\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAKO,2CAGPC,EAA6B,+CAE7BC,EAGO,qCAOA,MAAMJ,CAA2B,CACtC,YACUK,EACAC,EACR,CAFQ,SAAAD,EACA,UAAAC,CACP,CACH,MAAM,KAAgD,CACpD,MAAMC,EAAO,eAAa,qBAAqB,KAAK,KAAK,OAAO,EAEhE,OAAKA,EAME,IAAI,0BAAwB,KAAK,IAAK,CAC3C,KAAAA,EACA,eAAgB,KAAK,KAAK,cAC5B,CAAC,EAAE,IAAI,KARE,wBAAqB,CAC1B,MAAO,IAAI,yBAAuB,iBAAiB,CACrD,CAAC,CAOL,CACF",
6
- "names": ["SendPayloadInChunksTask_exports", "__export", "SendPayloadInChunksTask", "__toCommonJS", "import_device_management_kit", "import_PayloadUtils", "import_SendCommandInChunksTask", "api", "args", "data"]
4
+ "sourcesContent": ["import {\n type CommandResult,\n CommandResultFactory,\n hexaStringToBuffer,\n type InternalApi,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport { PayloadUtils } from \"@internal/shared/utils/PayloadUtils\";\n\nimport {\n SendCommandInChunksTask,\n type SendCommandInChunksTaskArgs,\n} from \"./SendCommandInChunksTask\";\n\nexport type SendPayloadInChunksTaskArgs<T> = {\n payload: string;\n commandFactory: SendCommandInChunksTaskArgs<T>[\"commandFactory\"];\n withPayloadLength?: boolean;\n};\n\nexport class SendPayloadInChunksTask<T> {\n constructor(\n private api: InternalApi,\n private args: SendPayloadInChunksTaskArgs<T>,\n ) {}\n async run(): Promise<CommandResult<T, EthErrorCodes>> {\n const { payload, withPayloadLength = true } = this.args;\n\n let data: Uint8Array | null = null;\n if (withPayloadLength) {\n data = PayloadUtils.getBufferFromPayload(payload);\n } else {\n data = hexaStringToBuffer(payload);\n }\n\n if (!data) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Invalid payload\"),\n });\n }\n\n return new SendCommandInChunksTask(this.api, {\n data,\n commandFactory: this.args.commandFactory,\n }).run();\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAMO,2CAGPC,EAA6B,+CAE7BC,EAGO,qCAQA,MAAMJ,CAA2B,CACtC,YACUK,EACAC,EACR,CAFQ,SAAAD,EACA,UAAAC,CACP,CACH,MAAM,KAAgD,CACpD,KAAM,CAAE,QAAAC,EAAS,kBAAAC,EAAoB,EAAK,EAAI,KAAK,KAEnD,IAAIC,EAA0B,KAO9B,OANID,EACFC,EAAO,eAAa,qBAAqBF,CAAO,EAEhDE,KAAO,sBAAmBF,CAAO,EAG9BE,EAME,IAAI,0BAAwB,KAAK,IAAK,CAC3C,KAAAA,EACA,eAAgB,KAAK,KAAK,cAC5B,CAAC,EAAE,IAAI,KARE,wBAAqB,CAC1B,MAAO,IAAI,yBAAuB,iBAAiB,CACrD,CAAC,CAOL,CACF",
6
+ "names": ["SendPayloadInChunksTask_exports", "__export", "SendPayloadInChunksTask", "__toCommonJS", "import_device_management_kit", "import_PayloadUtils", "import_SendCommandInChunksTask", "api", "args", "payload", "withPayloadLength", "data"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var a=require("@ledgerhq/device-management-kit"),e=require("./SendCommandInChunksTask"),r=require("./SendPayloadInChunksTask");vi.mock("./SendCommandInChunksTask");describe("SendPayloadInChunksTask",()=>{describe("run",()=>{beforeAll(()=>{vi.resetAllMocks()}),it("should return a CommandResult",async()=>{const n="0x1234";vi.spyOn(e.SendCommandInChunksTask.prototype,"run").mockResolvedValue((0,a.CommandResultFactory)({data:"0x5678"}));const o=await new r.SendPayloadInChunksTask({},{payload:n,commandFactory:vi.fn()}).run();expect(o).toEqual((0,a.CommandResultFactory)({data:"0x5678"}))}),it("should return an error CommandResult",async()=>{const n="invalid-payload",o=await new r.SendPayloadInChunksTask({},{payload:n,commandFactory:vi.fn()}).run();expect(o).toEqual((0,a.CommandResultFactory)({error:new a.InvalidStatusWordError("Invalid payload")}))})})});
1
+ "use strict";var t=require("@ledgerhq/device-management-kit"),n=require("./SendCommandInChunksTask"),o=require("./SendPayloadInChunksTask");vi.mock("./SendCommandInChunksTask");describe("SendPayloadInChunksTask",()=>{describe("run",()=>{beforeAll(()=>{vi.resetAllMocks()}),it("should return a CommandResult",async()=>{const e="0x1234";vi.spyOn(n.SendCommandInChunksTask.prototype,"run").mockResolvedValue((0,t.CommandResultFactory)({data:"0x5678"}));const a=await new o.SendPayloadInChunksTask({},{payload:e,commandFactory:vi.fn()}).run();expect(a).toEqual((0,t.CommandResultFactory)({data:"0x5678"}))}),it("should return an error CommandResult",async()=>{const e="invalid-payload",a=await new o.SendPayloadInChunksTask({},{payload:e,commandFactory:vi.fn()}).run();expect(a).toEqual((0,t.CommandResultFactory)({error:new t.InvalidStatusWordError("Invalid payload")}))}),it("should use PayloadUtils.getBufferFromPayload when withPayloadLength is true",async()=>{const e="010203",a=vi.fn();vi.spyOn(n.SendCommandInChunksTask.prototype,"run").mockResolvedValue((0,t.CommandResultFactory)({data:"0x5678"}));const r=await new o.SendPayloadInChunksTask({},{payload:e,commandFactory:a,withPayloadLength:!0}).run();expect(r).toEqual((0,t.CommandResultFactory)({data:"0x5678"})),expect(n.SendCommandInChunksTask.prototype.run).toHaveBeenCalledWith();const d=new Uint8Array([0,3,1,2,3]);expect(n.SendCommandInChunksTask).toHaveBeenCalledWith(expect.anything(),expect.objectContaining({data:d,commandFactory:a}))}),it("should use hexaStringToBuffer when withPayloadLength is false",async()=>{const e="010203",a=vi.fn();vi.spyOn(n.SendCommandInChunksTask.prototype,"run").mockResolvedValue((0,t.CommandResultFactory)({data:"0x5678"}));const r=await new o.SendPayloadInChunksTask({},{payload:e,commandFactory:a,withPayloadLength:!1}).run();expect(r).toEqual((0,t.CommandResultFactory)({data:"0x5678"})),expect(n.SendCommandInChunksTask.prototype.run).toHaveBeenCalledWith();const d=new Uint8Array([1,2,3]);expect(n.SendCommandInChunksTask).toHaveBeenCalledWith(expect.anything(),expect.objectContaining({data:d,commandFactory:a}))}),it("should use PayloadUtils.getBufferFromPayload when withPayloadLength is undefined (default)",async()=>{const e="010203",a=vi.fn();vi.spyOn(n.SendCommandInChunksTask.prototype,"run").mockResolvedValue((0,t.CommandResultFactory)({data:"0x5678"}));const r=await new o.SendPayloadInChunksTask({},{payload:e,commandFactory:a}).run();expect(r).toEqual((0,t.CommandResultFactory)({data:"0x5678"})),expect(n.SendCommandInChunksTask.prototype.run).toHaveBeenCalledWith();const d=new Uint8Array([0,3,1,2,3]);expect(n.SendCommandInChunksTask).toHaveBeenCalledWith(expect.anything(),expect.objectContaining({data:d,commandFactory:a}))}),it("should return an error CommandResult when withPayloadLength is true and payload is invalid",async()=>{const e="invalid-payload",a=await new o.SendPayloadInChunksTask({},{payload:e,commandFactory:vi.fn(),withPayloadLength:!0}).run();expect(a).toEqual((0,t.CommandResultFactory)({error:new t.InvalidStatusWordError("Invalid payload")}))})})});
2
2
  //# sourceMappingURL=SendPayloadInChunksTask.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/task/SendPayloadInChunksTask.test.ts"],
4
- "sourcesContent": ["import {\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { SendCommandInChunksTask } from \"./SendCommandInChunksTask\";\nimport { SendPayloadInChunksTask } from \"./SendPayloadInChunksTask\";\n\n// mock SendCommandInChunksTask\nvi.mock(\"./SendCommandInChunksTask\");\n\ndescribe(\"SendPayloadInChunksTask\", () => {\n describe(\"run\", () => {\n beforeAll(() => {\n vi.resetAllMocks();\n });\n\n it(\"should return a CommandResult\", async () => {\n // GIVEN\n const payload = \"0x1234\";\n vi.spyOn(SendCommandInChunksTask.prototype, \"run\").mockResolvedValue(\n CommandResultFactory({ data: \"0x5678\" }),\n );\n\n // WHEN\n const result = await new SendPayloadInChunksTask({} as InternalApi, {\n payload,\n commandFactory: vi.fn(),\n }).run();\n\n // THEN\n expect(result).toEqual(CommandResultFactory({ data: \"0x5678\" }));\n });\n\n it(\"should return an error CommandResult\", async () => {\n // GIVEN\n const payload = \"invalid-payload\";\n\n // WHEN\n const result = await new SendPayloadInChunksTask({} as InternalApi, {\n payload,\n commandFactory: vi.fn(),\n }).run();\n\n // THEN\n expect(result).toEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"Invalid payload\"),\n }),\n );\n });\n });\n});\n"],
5
- "mappings": "aAAA,IAAAA,EAIO,2CAEPC,EAAwC,qCACxCC,EAAwC,qCAGxC,GAAG,KAAK,2BAA2B,EAEnC,SAAS,0BAA2B,IAAM,CACxC,SAAS,MAAO,IAAM,CACpB,UAAU,IAAM,CACd,GAAG,cAAc,CACnB,CAAC,EAED,GAAG,gCAAiC,SAAY,CAE9C,MAAMC,EAAU,SAChB,GAAG,MAAM,0BAAwB,UAAW,KAAK,EAAE,qBACjD,wBAAqB,CAAE,KAAM,QAAS,CAAC,CACzC,EAGA,MAAMC,EAAS,MAAM,IAAI,0BAAwB,CAAC,EAAkB,CAClE,QAAAD,EACA,eAAgB,GAAG,GAAG,CACxB,CAAC,EAAE,IAAI,EAGP,OAAOC,CAAM,EAAE,WAAQ,wBAAqB,CAAE,KAAM,QAAS,CAAC,CAAC,CACjE,CAAC,EAED,GAAG,uCAAwC,SAAY,CAErD,MAAMD,EAAU,kBAGVC,EAAS,MAAM,IAAI,0BAAwB,CAAC,EAAkB,CAClE,QAAAD,EACA,eAAgB,GAAG,GAAG,CACxB,CAAC,EAAE,IAAI,EAGP,OAAOC,CAAM,EAAE,WACb,wBAAqB,CACnB,MAAO,IAAI,yBAAuB,iBAAiB,CACrD,CAAC,CACH,CACF,CAAC,CACH,CAAC,CACH,CAAC",
6
- "names": ["import_device_management_kit", "import_SendCommandInChunksTask", "import_SendPayloadInChunksTask", "payload", "result"]
4
+ "sourcesContent": ["import {\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { SendCommandInChunksTask } from \"./SendCommandInChunksTask\";\nimport { SendPayloadInChunksTask } from \"./SendPayloadInChunksTask\";\n\n// mock SendCommandInChunksTask\nvi.mock(\"./SendCommandInChunksTask\");\n\ndescribe(\"SendPayloadInChunksTask\", () => {\n describe(\"run\", () => {\n beforeAll(() => {\n vi.resetAllMocks();\n });\n\n it(\"should return a CommandResult\", async () => {\n // GIVEN\n const payload = \"0x1234\";\n vi.spyOn(SendCommandInChunksTask.prototype, \"run\").mockResolvedValue(\n CommandResultFactory({ data: \"0x5678\" }),\n );\n\n // WHEN\n const result = await new SendPayloadInChunksTask({} as InternalApi, {\n payload,\n commandFactory: vi.fn(),\n }).run();\n\n // THEN\n expect(result).toEqual(CommandResultFactory({ data: \"0x5678\" }));\n });\n\n it(\"should return an error CommandResult\", async () => {\n // GIVEN\n const payload = \"invalid-payload\";\n\n // WHEN\n const result = await new SendPayloadInChunksTask({} as InternalApi, {\n payload,\n commandFactory: vi.fn(),\n }).run();\n\n // THEN\n expect(result).toEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"Invalid payload\"),\n }),\n );\n });\n\n it(\"should use PayloadUtils.getBufferFromPayload when withPayloadLength is true\", async () => {\n // GIVEN\n const payload = \"010203\";\n const mockCommandFactory = vi.fn();\n vi.spyOn(SendCommandInChunksTask.prototype, \"run\").mockResolvedValue(\n CommandResultFactory({ data: \"0x5678\" }),\n );\n\n // WHEN\n const result = await new SendPayloadInChunksTask({} as InternalApi, {\n payload,\n commandFactory: mockCommandFactory,\n withPayloadLength: true,\n }).run();\n\n // THEN\n expect(result).toEqual(CommandResultFactory({ data: \"0x5678\" }));\n expect(SendCommandInChunksTask.prototype.run).toHaveBeenCalledWith();\n // Verify that SendCommandInChunksTask was called with the correct data\n // The payload \"010203\" should be converted to [0x00, 0x03, 0x01, 0x02, 0x03] with length prefix\n const expectedData = new Uint8Array([0x00, 0x03, 0x01, 0x02, 0x03]);\n expect(SendCommandInChunksTask).toHaveBeenCalledWith(\n expect.anything(),\n expect.objectContaining({\n data: expectedData,\n commandFactory: mockCommandFactory,\n }),\n );\n });\n\n it(\"should use hexaStringToBuffer when withPayloadLength is false\", async () => {\n // GIVEN\n const payload = \"010203\";\n const mockCommandFactory = vi.fn();\n vi.spyOn(SendCommandInChunksTask.prototype, \"run\").mockResolvedValue(\n CommandResultFactory({ data: \"0x5678\" }),\n );\n\n // WHEN\n const result = await new SendPayloadInChunksTask({} as InternalApi, {\n payload,\n commandFactory: mockCommandFactory,\n withPayloadLength: false,\n }).run();\n\n // THEN\n expect(result).toEqual(CommandResultFactory({ data: \"0x5678\" }));\n expect(SendCommandInChunksTask.prototype.run).toHaveBeenCalledWith();\n // Verify that SendCommandInChunksTask was called with the correct data\n // The payload \"010203\" should be converted to [0x01, 0x02, 0x03] without length prefix\n const expectedData = new Uint8Array([0x01, 0x02, 0x03]);\n expect(SendCommandInChunksTask).toHaveBeenCalledWith(\n expect.anything(),\n expect.objectContaining({\n data: expectedData,\n commandFactory: mockCommandFactory,\n }),\n );\n });\n\n it(\"should use PayloadUtils.getBufferFromPayload when withPayloadLength is undefined (default)\", async () => {\n // GIVEN\n const payload = \"010203\";\n const mockCommandFactory = vi.fn();\n vi.spyOn(SendCommandInChunksTask.prototype, \"run\").mockResolvedValue(\n CommandResultFactory({ data: \"0x5678\" }),\n );\n\n // WHEN\n const result = await new SendPayloadInChunksTask({} as InternalApi, {\n payload,\n commandFactory: mockCommandFactory,\n // withPayloadLength is undefined (default behavior)\n }).run();\n\n // THEN\n expect(result).toEqual(CommandResultFactory({ data: \"0x5678\" }));\n expect(SendCommandInChunksTask.prototype.run).toHaveBeenCalledWith();\n // Verify that SendCommandInChunksTask was called with the correct data\n // The payload \"010203\" should be converted to [0x00, 0x03, 0x01, 0x02, 0x03] with length prefix\n const expectedData = new Uint8Array([0x00, 0x03, 0x01, 0x02, 0x03]);\n expect(SendCommandInChunksTask).toHaveBeenCalledWith(\n expect.anything(),\n expect.objectContaining({\n data: expectedData,\n commandFactory: mockCommandFactory,\n }),\n );\n });\n\n it(\"should return an error CommandResult when withPayloadLength is true and payload is invalid\", async () => {\n // GIVEN\n const payload = \"invalid-payload\";\n\n // WHEN\n const result = await new SendPayloadInChunksTask({} as InternalApi, {\n payload,\n commandFactory: vi.fn(),\n withPayloadLength: true,\n }).run();\n\n // THEN\n expect(result).toEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"Invalid payload\"),\n }),\n );\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["import_device_management_kit", "import_SendCommandInChunksTask", "import_SendPayloadInChunksTask", "payload", "result", "mockCommandFactory", "expectedData"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var a=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var f=(o,e)=>{for(var n in e)a(o,n,{get:e[n],enumerable:!0})},x=(o,e,n,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of y(e))!C.call(o,r)&&r!==n&&a(o,r,{get:()=>e[r],enumerable:!(t=u(e,r))||t.enumerable});return o};var D=o=>x(a({},"__esModule",{value:!0}),o);var F={};f(F,{makeContainer:()=>v});module.exports=D(F);var m=require("inversify"),d=require("./address/di/addressModule"),s=require("./app-binder/di/appBinderModule"),p=require("./eip7702/di/eip7702Module"),i=require("./externalTypes"),c=require("./message/di/messageModule"),l=require("./transaction/di/transactionModule"),M=require("./typed-data/di/typedDataModule");const v=({dmk:o,sessionId:e,contextModule:n})=>{const t=new m.Container;return t.bind(i.externalTypes.Dmk).toConstantValue(o),t.bind(i.externalTypes.ContextModule).toConstantValue(n),t.bind(i.externalTypes.SessionId).toConstantValue(e),t.loadSync((0,d.addressModuleFactory)(),(0,s.appBindingModuleFactory)(),(0,p.eip7702ModuleFactory)(),(0,c.messageModuleFactory)(),(0,l.transactionModuleFactory)(),(0,M.typedDataModuleFactory)()),t};0&&(module.exports={makeContainer});
1
+ "use strict";var i=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var x=(e,o)=>{for(var n in o)i(e,n,{get:o[n],enumerable:!0})},D=(e,o,n,t)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of f(o))!C.call(e,r)&&r!==n&&i(e,r,{get:()=>o[r],enumerable:!(t=y(o,r))||t.enumerable});return e};var F=e=>D(i({},"__esModule",{value:!0}),e);var g={};x(g,{makeContainer:()=>v});module.exports=F(g);var m=require("inversify"),d=require("./address/di/addressModule"),s=require("./app-binder/di/appBinderModule"),p=require("./eip7702/di/eip7702Module"),a=require("./externalTypes"),c=require("./message/di/messageModule"),l=require("./safe/di/safeModule"),M=require("./transaction/di/transactionModule"),u=require("./typed-data/di/typedDataModule");const v=({dmk:e,sessionId:o,contextModule:n})=>{const t=new m.Container;return t.bind(a.externalTypes.Dmk).toConstantValue(e),t.bind(a.externalTypes.ContextModule).toConstantValue(n),t.bind(a.externalTypes.SessionId).toConstantValue(o),t.loadSync((0,d.addressModuleFactory)(),(0,s.appBindingModuleFactory)(),(0,p.eip7702ModuleFactory)(),(0,c.messageModuleFactory)(),(0,M.transactionModuleFactory)(),(0,u.typedDataModuleFactory)(),(0,l.safeModuleFactory)()),t};0&&(module.exports={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 { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport { Container } from \"inversify\";\n\nimport { addressModuleFactory } from \"@internal/address/di/addressModule\";\nimport { appBindingModuleFactory } from \"@internal/app-binder/di/appBinderModule\";\nimport { eip7702ModuleFactory } from \"@internal/eip7702/di/eip7702Module\";\nimport { externalTypes } from \"@internal/externalTypes\";\nimport { messageModuleFactory } from \"@internal/message/di/messageModule\";\nimport { transactionModuleFactory } from \"@internal/transaction/di/transactionModule\";\nimport { typedDataModuleFactory } from \"@internal/typed-data/di/typedDataModule\";\n\nexport type MakeContainerProps = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n contextModule: ContextModule;\n};\n\nexport const makeContainer = ({\n dmk,\n sessionId,\n contextModule,\n}: MakeContainerProps) => {\n const container = new Container();\n\n container.bind<DeviceManagementKit>(externalTypes.Dmk).toConstantValue(dmk);\n container\n .bind<ContextModule>(externalTypes.ContextModule)\n .toConstantValue(contextModule);\n container\n .bind<DeviceSessionId>(externalTypes.SessionId)\n .toConstantValue(sessionId);\n\n container.loadSync(\n addressModuleFactory(),\n appBindingModuleFactory(),\n eip7702ModuleFactory(),\n messageModuleFactory(),\n transactionModuleFactory(),\n typedDataModuleFactory(),\n );\n\n return container;\n};\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,IAAA,eAAAC,EAAAH,GAKA,IAAAI,EAA0B,qBAE1BC,EAAqC,8CACrCC,EAAwC,mDACxCC,EAAqC,8CACrCC,EAA8B,mCAC9BC,EAAqC,8CACrCC,EAAyC,sDACzCC,EAAuC,mDAQhC,MAAMT,EAAgB,CAAC,CAC5B,IAAAU,EACA,UAAAC,EACA,cAAAC,CACF,IAA0B,CACxB,MAAMC,EAAY,IAAI,YAEtB,OAAAA,EAAU,KAA0B,gBAAc,GAAG,EAAE,gBAAgBH,CAAG,EAC1EG,EACG,KAAoB,gBAAc,aAAa,EAC/C,gBAAgBD,CAAa,EAChCC,EACG,KAAsB,gBAAc,SAAS,EAC7C,gBAAgBF,CAAS,EAE5BE,EAAU,YACR,wBAAqB,KACrB,2BAAwB,KACxB,wBAAqB,KACrB,wBAAqB,KACrB,4BAAyB,KACzB,0BAAuB,CACzB,EAEOA,CACT",
6
- "names": ["di_exports", "__export", "makeContainer", "__toCommonJS", "import_inversify", "import_addressModule", "import_appBinderModule", "import_eip7702Module", "import_externalTypes", "import_messageModule", "import_transactionModule", "import_typedDataModule", "dmk", "sessionId", "contextModule", "container"]
4
+ "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport { Container } from \"inversify\";\n\nimport { addressModuleFactory } from \"@internal/address/di/addressModule\";\nimport { appBindingModuleFactory } from \"@internal/app-binder/di/appBinderModule\";\nimport { eip7702ModuleFactory } from \"@internal/eip7702/di/eip7702Module\";\nimport { externalTypes } from \"@internal/externalTypes\";\nimport { messageModuleFactory } from \"@internal/message/di/messageModule\";\nimport { safeModuleFactory } from \"@internal/safe/di/safeModule\";\nimport { transactionModuleFactory } from \"@internal/transaction/di/transactionModule\";\nimport { typedDataModuleFactory } from \"@internal/typed-data/di/typedDataModule\";\n\nexport type MakeContainerProps = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n contextModule: ContextModule;\n};\n\nexport const makeContainer = ({\n dmk,\n sessionId,\n contextModule,\n}: MakeContainerProps) => {\n const container = new Container();\n\n container.bind<DeviceManagementKit>(externalTypes.Dmk).toConstantValue(dmk);\n container\n .bind<ContextModule>(externalTypes.ContextModule)\n .toConstantValue(contextModule);\n container\n .bind<DeviceSessionId>(externalTypes.SessionId)\n .toConstantValue(sessionId);\n\n container.loadSync(\n addressModuleFactory(),\n appBindingModuleFactory(),\n eip7702ModuleFactory(),\n messageModuleFactory(),\n transactionModuleFactory(),\n typedDataModuleFactory(),\n safeModuleFactory(),\n );\n\n return container;\n};\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,IAAA,eAAAC,EAAAH,GAKA,IAAAI,EAA0B,qBAE1BC,EAAqC,8CACrCC,EAAwC,mDACxCC,EAAqC,8CACrCC,EAA8B,mCAC9BC,EAAqC,8CACrCC,EAAkC,wCAClCC,EAAyC,sDACzCC,EAAuC,mDAQhC,MAAMV,EAAgB,CAAC,CAC5B,IAAAW,EACA,UAAAC,EACA,cAAAC,CACF,IAA0B,CACxB,MAAMC,EAAY,IAAI,YAEtB,OAAAA,EAAU,KAA0B,gBAAc,GAAG,EAAE,gBAAgBH,CAAG,EAC1EG,EACG,KAAoB,gBAAc,aAAa,EAC/C,gBAAgBD,CAAa,EAChCC,EACG,KAAsB,gBAAc,SAAS,EAC7C,gBAAgBF,CAAS,EAE5BE,EAAU,YACR,wBAAqB,KACrB,2BAAwB,KACxB,wBAAqB,KACrB,wBAAqB,KACrB,4BAAyB,KACzB,0BAAuB,KACvB,qBAAkB,CACpB,EAEOA,CACT",
6
+ "names": ["di_exports", "__export", "makeContainer", "__toCommonJS", "import_inversify", "import_addressModule", "import_appBinderModule", "import_eip7702Module", "import_externalTypes", "import_messageModule", "import_safeModule", "import_transactionModule", "import_typedDataModule", "dmk", "sessionId", "contextModule", "container"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ "use strict";var f=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var n=Object.prototype.hasOwnProperty;var y=(e,o)=>{for(var s in o)f(e,s,{get:o[s],enumerable:!0})},C=(e,o,s,a)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of p(o))!n.call(e,r)&&r!==s&&f(e,r,{get:()=>o[r],enumerable:!(a=m(o,r))||a.enumerable});return e};var c=e=>C(f({},"__esModule",{value:!0}),e);var u={};y(u,{safeModuleFactory:()=>l});module.exports=c(u);var t=require("inversify"),d=require("../../safe/use-case/VerifySafeAddressUseCase"),i=require("./safeTypes");const l=()=>new t.ContainerModule(({bind:e})=>{e(i.safeTypes.VerifySafeAddressUseCase).to(d.VerifySafeAddressUseCase)});0&&(module.exports={safeModuleFactory});
2
+ //# sourceMappingURL=safeModule.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/internal/safe/di/safeModule.ts"],
4
+ "sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { VerifySafeAddressUseCase } from \"@internal/safe/use-case/VerifySafeAddressUseCase\";\n\nimport { safeTypes } from \"./safeTypes\";\n\nexport const safeModuleFactory = () =>\n new ContainerModule(({ bind }) => {\n bind(safeTypes.VerifySafeAddressUseCase).to(VerifySafeAddressUseCase);\n });\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAgC,qBAEhCC,EAAyC,4DAEzCC,EAA0B,uBAEnB,MAAMJ,EAAoB,IAC/B,IAAI,kBAAgB,CAAC,CAAE,KAAAK,CAAK,IAAM,CAChCA,EAAK,YAAU,wBAAwB,EAAE,GAAG,0BAAwB,CACtE,CAAC",
6
+ "names": ["safeModule_exports", "__export", "safeModuleFactory", "__toCommonJS", "import_inversify", "import_VerifySafeAddressUseCase", "import_safeTypes", "bind"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var t=require("inversify"),r=require("./safeModule");describe("safeModuleFactory",()=>{describe("Default",()=>{let o,e;beforeEach(()=>{e=(0,r.safeModuleFactory)(),o=new t.Container,o.loadSync(e)}),it("should return the safe module",()=>{expect(e).toBeDefined()})})});
2
+ //# sourceMappingURL=safeModule.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/internal/safe/di/safeModule.test.ts"],
4
+ "sourcesContent": ["import { Container } from \"inversify\";\n\nimport { safeModuleFactory } from \"./safeModule\";\n\ndescribe(\"safeModuleFactory\", () => {\n describe(\"Default\", () => {\n let container: Container;\n let mod: ReturnType<typeof safeModuleFactory>;\n beforeEach(() => {\n mod = safeModuleFactory();\n container = new Container();\n container.loadSync(mod);\n });\n\n it(\"should return the safe module\", () => {\n expect(mod).toBeDefined();\n });\n });\n});\n"],
5
+ "mappings": "aAAA,IAAAA,EAA0B,qBAE1BC,EAAkC,wBAElC,SAAS,oBAAqB,IAAM,CAClC,SAAS,UAAW,IAAM,CACxB,IAAIC,EACAC,EACJ,WAAW,IAAM,CACfA,KAAM,qBAAkB,EACxBD,EAAY,IAAI,YAChBA,EAAU,SAASC,CAAG,CACxB,CAAC,EAED,GAAG,gCAAiC,IAAM,CACxC,OAAOA,CAAG,EAAE,YAAY,CAC1B,CAAC,CACH,CAAC,CACH,CAAC",
6
+ "names": ["import_inversify", "import_safeModule", "container", "mod"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var a=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var S=Object.prototype.hasOwnProperty;var i=(s,e)=>{for(var r in e)a(s,r,{get:e[r],enumerable:!0})},p=(s,e,r,d)=>{if(e&&typeof e=="object"||typeof e=="function")for(let f of y(e))!S.call(s,f)&&f!==r&&a(s,f,{get:()=>e[f],enumerable:!(d=o(e,f))||d.enumerable});return s};var t=s=>p(a({},"__esModule",{value:!0}),s);var C={};i(C,{safeTypes:()=>A});module.exports=t(C);const A={VerifySafeAddressUseCase:Symbol.for("VerifySafeAddressUseCase")};0&&(module.exports={safeTypes});
2
+ //# sourceMappingURL=safeTypes.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/internal/safe/di/safeTypes.ts"],
4
+ "sourcesContent": ["export const safeTypes = {\n VerifySafeAddressUseCase: Symbol.for(\"VerifySafeAddressUseCase\"),\n};\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,eAAAE,IAAA,eAAAC,EAAAH,GAAO,MAAME,EAAY,CACvB,yBAA0B,OAAO,IAAI,0BAA0B,CACjE",
6
+ "names": ["safeTypes_exports", "__export", "safeTypes", "__toCommonJS"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var o=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var u=(r,p)=>{for(var i in p)o(r,i,{get:p[i],enumerable:!0})},y=(r,p,i,e)=>{if(p&&typeof p=="object"||typeof p=="function")for(let t of c(p))!h.call(r,t)&&t!==i&&o(r,t,{get:()=>p[t],enumerable:!(e=B(p,t))||e.enumerable});return r};var E=r=>y(o({},"__esModule",{value:!0}),r),f=(r,p,i,e)=>{for(var t=e>1?void 0:e?B(p,i):p,m=r.length-1,A;m>=0;m--)(A=r[m])&&(t=(e?A(p,i,t):A(t))||t);return e&&t&&o(p,i,t),t},s=(r,p)=>(i,e)=>p(i,e,r);var T={};u(T,{VerifySafeAddressUseCase:()=>n});module.exports=E(T);var d=require("inversify"),a=require("../../app-binder/di/appBinderTypes");let n=class{_appBinder;constructor(p){this._appBinder=p}execute(p,i){return this._appBinder.verifySafeAddress({safeContractAddress:p,options:i})}};n=f([(0,d.injectable)(),s(0,(0,d.inject)(a.appBinderTypes.AppBinding))],n);0&&(module.exports={VerifySafeAddressUseCase});
2
+ //# sourceMappingURL=VerifySafeAddressUseCase.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/internal/safe/use-case/VerifySafeAddressUseCase.ts"],
4
+ "sourcesContent": ["import { inject, injectable } from \"inversify\";\n\nimport { VerifySafeAddressDAReturnType } from \"@api/app-binder/VerifySafeAddressDeviceActionTypes\";\nimport { SafeAddressOptions } from \"@api/model/SafeAddressOptions\";\nimport { appBinderTypes } from \"@internal/app-binder/di/appBinderTypes\";\nimport { EthAppBinder } from \"@internal/app-binder/EthAppBinder\";\n\n@injectable()\nexport class VerifySafeAddressUseCase {\n private _appBinder: EthAppBinder;\n\n constructor(@inject(appBinderTypes.AppBinding) appBinder: EthAppBinder) {\n this._appBinder = appBinder;\n }\n\n execute(\n safeContractAddress: string,\n options?: SafeAddressOptions,\n ): VerifySafeAddressDAReturnType {\n return this._appBinder.verifySafeAddress({ safeContractAddress, options });\n }\n}\n"],
5
+ "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBAInCC,EAA+B,kDAIxB,IAAMC,EAAN,KAA+B,CAC5B,WAER,YAA+CC,EAAyB,CACtE,KAAK,WAAaA,CACpB,CAEA,QACEC,EACAC,EAC+B,CAC/B,OAAO,KAAK,WAAW,kBAAkB,CAAE,oBAAAD,EAAqB,QAAAC,CAAQ,CAAC,CAC3E,CACF,EAbaH,EAANI,EAAA,IADN,cAAW,EAIGC,EAAA,eAAO,iBAAe,UAAU,IAHlCL",
6
+ "names": ["VerifySafeAddressUseCase_exports", "__export", "VerifySafeAddressUseCase", "__toCommonJS", "import_inversify", "import_appBinderTypes", "VerifySafeAddressUseCase", "appBinder", "safeContractAddress", "options", "__decorateClass", "__decorateParam"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var d=require("./VerifySafeAddressUseCase");describe("VerifySafeAddressUseCase",()=>{it("should call verifySafeAddress on appBinder with the correct arguments",()=>{const e="0x1234567890123456789012345678901234567890",s={chainId:1},n={verifySafeAddress:vi.fn()};new d.VerifySafeAddressUseCase(n).execute(e,s),expect(n.verifySafeAddress).toHaveBeenCalledWith({safeContractAddress:e,options:s})}),it("should call verifySafeAddress on appBinder without options when not provided",()=>{const e="0x1234567890123456789012345678901234567890",s={verifySafeAddress:vi.fn()};new d.VerifySafeAddressUseCase(s).execute(e),expect(s.verifySafeAddress).toHaveBeenCalledWith({safeContractAddress:e,options:void 0})})});
2
+ //# sourceMappingURL=VerifySafeAddressUseCase.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/internal/safe/use-case/VerifySafeAddressUseCase.test.ts"],
4
+ "sourcesContent": ["import { type EthAppBinder } from \"@internal/app-binder/EthAppBinder\";\n\nimport { VerifySafeAddressUseCase } from \"./VerifySafeAddressUseCase\";\n\ndescribe(\"VerifySafeAddressUseCase\", () => {\n it(\"should call verifySafeAddress on appBinder with the correct arguments\", () => {\n // Given\n const safeContractAddress = \"0x1234567890123456789012345678901234567890\";\n const options = {\n chainId: 1,\n };\n const appBinder: EthAppBinder = {\n verifySafeAddress: vi.fn(),\n } as unknown as EthAppBinder;\n const useCase = new VerifySafeAddressUseCase(appBinder);\n\n // When\n useCase.execute(safeContractAddress, options);\n\n // Then\n expect(appBinder.verifySafeAddress).toHaveBeenCalledWith({\n safeContractAddress,\n options,\n });\n });\n\n it(\"should call verifySafeAddress on appBinder without options when not provided\", () => {\n // Given\n const safeContractAddress = \"0x1234567890123456789012345678901234567890\";\n const appBinder: EthAppBinder = {\n verifySafeAddress: vi.fn(),\n } as unknown as EthAppBinder;\n const useCase = new VerifySafeAddressUseCase(appBinder);\n\n // When\n useCase.execute(safeContractAddress);\n\n // Then\n expect(appBinder.verifySafeAddress).toHaveBeenCalledWith({\n safeContractAddress,\n options: undefined,\n });\n });\n});\n"],
5
+ "mappings": "aAEA,IAAAA,EAAyC,sCAEzC,SAAS,2BAA4B,IAAM,CACzC,GAAG,wEAAyE,IAAM,CAEhF,MAAMC,EAAsB,6CACtBC,EAAU,CACd,QAAS,CACX,EACMC,EAA0B,CAC9B,kBAAmB,GAAG,GAAG,CAC3B,EACgB,IAAI,2BAAyBA,CAAS,EAG9C,QAAQF,EAAqBC,CAAO,EAG5C,OAAOC,EAAU,iBAAiB,EAAE,qBAAqB,CACvD,oBAAAF,EACA,QAAAC,CACF,CAAC,CACH,CAAC,EAED,GAAG,+EAAgF,IAAM,CAEvF,MAAMD,EAAsB,6CACtBE,EAA0B,CAC9B,kBAAmB,GAAG,GAAG,CAC3B,EACgB,IAAI,2BAAyBA,CAAS,EAG9C,QAAQF,CAAmB,EAGnC,OAAOE,EAAU,iBAAiB,EAAE,qBAAqB,CACvD,oBAAAF,EACA,QAAS,MACX,CAAC,CACH,CAAC,CACH,CAAC",
6
+ "names": ["import_VerifySafeAddressUseCase", "safeContractAddress", "options", "appBinder"]
7
+ }
@@ -1,2 +1,2 @@
1
- "use strict";var y=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var P=(c,t)=>{for(var r in t)y(c,r,{get:t[r],enumerable:!0})},f=(c,t,r,e)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of x(t))!C.call(c,n)&&n!==r&&y(c,n,{get:()=>t[n],enumerable:!(e=g(t,n))||e.enumerable});return c};var I=c=>f(y({},"__esModule",{value:!0}),c),p=(c,t,r,e)=>{for(var n=e>1?void 0:e?g(t,r):t,u=c.length-1,a;u>=0;u--)(a=c[u])&&(n=(e?a(t,r,n):a(n))||n);return e&&n&&y(t,r,n),n};var F={};P(F,{TransactionParserService:()=>d});module.exports=I(F);var l=require("@ledgerhq/context-module"),h=require("@ledgerhq/device-management-kit"),w=require("inversify"),i=require("purify-ts");const N=4,m=32;let d=class{extractValue(t,r){const{to:e,data:n,value:u}=t;return r===l.ContainerPath.FROM?(0,i.Left)(new Error("Cannot get 'FROM' field of an unsigned transaction")):r===l.ContainerPath.TO?i.Maybe.fromNullable(e).map(a=>(0,h.hexaStringToBuffer)(a)).filter(a=>a!==null).map(a=>[a]).toEither(new Error("Faild to extract TO field of transaction")):r===l.ContainerPath.VALUE?i.Maybe.fromNullable(u).map(a=>new h.ByteArrayBuilder().add256BitUIntToData(a).build()).map(a=>[a]).toEither(new Error("Faild to extract VALUE field of transaction")):i.Maybe.fromNullable(n).toEither(new Error("Transaction calldata is empty")).chain(a=>i.Maybe.fromNullable((0,h.hexaStringToBuffer)(a)).toEither(new Error(`Invalid hex string calldata: ${a}`))).chain(a=>this.extractCalldataValue(a,r))}extractCalldataValue(t,r){return t=t.slice(N),r.length===0?(0,i.Left)(new Error("Path is empty")):this.extractCalldataValueAt(t,r,0,0)}extractCalldataValueAt(t,r,e,n){const u=r[r.length-1],a=u.type===l.DataPathElementType.SLICE?u:null;for(;r.length>0;){const o=r[0];switch(r=r.slice(1),o.type){case l.DataPathElementType.TUPLE:n=e,e+=o.offset*m;break;case l.DataPathElementType.ARRAY:return this.getU256(t.slice(e)).toEither(new Error(`Invalid array length at offset ${e}`)).chain(s=>{e+=m,n=e;const E=o.start===void 0?0:o.start<0?s+o.start:o.start,b=o.end===void 0?s:o.end<0?s+o.end:o.end;return E<0||E>=s||b>s||E>=b?(0,i.Left)(new Error(`Array slice out of bounds, start=${o.start}, end=${o.end}`)):Array.from({length:b-E},(A,U)=>U).map(A=>e+(A+E)*o.itemSize*m).reduce((A,U)=>A.chain(L=>this.extractCalldataValueAt(t,r,U,n).map(T=>[...L,...T])),(0,i.Right)([]))});case l.DataPathElementType.REF:if(this.getU256(t.slice(e)).ifJust(s=>e=n+s).isNothing())return(0,i.Left)(new Error(`Invalid ref at offset ${e}`));break;case l.DataPathElementType.LEAF:switch(o.leafType){case l.DataPathLeafType.ARRAY_LEAF:return(0,i.Left)(new Error("Array leaf is not supported in v1 of protocol"));case l.DataPathLeafType.TUPLE_LEAF:return(0,i.Left)(new Error("Tuple leaf is not supported in v1 of protocol"));case l.DataPathLeafType.STATIC_LEAF:return this.getSlice(t,e,m).chain(s=>a===null?(0,i.Right)([s]):this.sliceLeaf(s,a));case l.DataPathLeafType.DYNAMIC_LEAF:return this.getU256(t.slice(e)).toEither(new Error(`Invalid leaf length at offset ${e}`)).chain(s=>(e+=m,this.getSlice(t,e,s).chain(E=>a===null?(0,i.Right)([E]):this.sliceLeaf(E,a))))}break;case l.DataPathElementType.SLICE:return(0,i.Left)(new Error("Slice can only be used as last element of the path"))}}return(0,i.Left)(new Error("Path did not resolve to a leaf element"))}sliceLeaf(t,r){const e=t.length,n=r.start===void 0?0:r.start<0?e+r.start:r.start,u=r.end===void 0?e:r.end<0?e+r.end:r.end;return n>=u?(0,i.Left)(new Error(`invalid leaf slice: start ${n}, end ${u}`)):this.getSlice(t,n,u-n).map(a=>[a])}getSlice(t,r,e){return r<0||t.length<r+e?(0,i.Left)(new Error(`calldata too small to slice at offset ${r} of length ${e}`)):(0,i.Right)(t.slice(r,r+e))}getU256(t){return i.Maybe.fromNullable(new h.ByteArrayParser(t).extract256BitUInt(!0)).filter(r=>r<=Number.MAX_SAFE_INTEGER).map(r=>Number(r))}};d=p([(0,w.injectable)()],d);0&&(module.exports={TransactionParserService});
1
+ "use strict";var y=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var P=(c,e)=>{for(var r in e)y(c,r,{get:e[r],enumerable:!0})},f=(c,e,r,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of x(e))!C.call(c,n)&&n!==r&&y(c,n,{get:()=>e[n],enumerable:!(t=g(e,n))||t.enumerable});return c};var I=c=>f(y({},"__esModule",{value:!0}),c),p=(c,e,r,t)=>{for(var n=t>1?void 0:t?g(e,r):e,u=c.length-1,a;u>=0;u--)(a=c[u])&&(n=(t?a(e,r,n):a(n))||n);return t&&n&&y(e,r,n),n};var F={};P(F,{TransactionParserService:()=>d});module.exports=I(F);var l=require("@ledgerhq/context-module"),h=require("@ledgerhq/device-management-kit"),w=require("inversify"),i=require("purify-ts");const N=4,m=32;let d=class{extractValue(e,r){const{to:t,data:n,value:u}=e;return r===l.ContainerPath.FROM?(0,i.Left)(new Error("Cannot get 'FROM' field of an unsigned transaction")):r===l.ContainerPath.TO?i.Maybe.fromNullable(t).map(a=>(0,h.hexaStringToBuffer)(a)).filter(a=>a!==null).map(a=>[a]).toEither(new Error("Failed to extract TO field of transaction")):r===l.ContainerPath.VALUE?i.Maybe.fromNullable(u).map(a=>new h.ByteArrayBuilder().add256BitUIntToData(a).build()).map(a=>[a]).toEither(new Error("Failed to extract VALUE field of transaction")):i.Maybe.fromNullable(n).toEither(new Error("Transaction calldata is empty")).chain(a=>i.Maybe.fromNullable((0,h.hexaStringToBuffer)(a)).toEither(new Error(`Invalid hex string calldata: ${a}`))).chain(a=>this.extractCalldataValue(a,r))}extractCalldataValue(e,r){return e=e.slice(N),r.length===0?(0,i.Left)(new Error("Path is empty")):this.extractCalldataValueAt(e,r,0,0)}extractCalldataValueAt(e,r,t,n){const u=r[r.length-1],a=u.type===l.DataPathElementType.SLICE?u:null;for(;r.length>0;){const o=r[0];switch(r=r.slice(1),o.type){case l.DataPathElementType.TUPLE:n=t,t+=o.offset*m;break;case l.DataPathElementType.ARRAY:return this.getU256(e.slice(t)).toEither(new Error(`Invalid array length at offset ${t}`)).chain(s=>{t+=m,n=t;const E=o.start===void 0?0:o.start<0?s+o.start:o.start,b=o.end===void 0?s:o.end<0?s+o.end:o.end;return E<0||E>=s||b>s||E>=b?(0,i.Left)(new Error(`Array slice out of bounds, start=${o.start}, end=${o.end}`)):Array.from({length:b-E},(A,U)=>U).map(A=>t+(A+E)*o.itemSize*m).reduce((A,U)=>A.chain(L=>this.extractCalldataValueAt(e,r,U,n).map(T=>[...L,...T])),(0,i.Right)([]))});case l.DataPathElementType.REF:if(this.getU256(e.slice(t)).ifJust(s=>t=n+s).isNothing())return(0,i.Left)(new Error(`Invalid ref at offset ${t}`));break;case l.DataPathElementType.LEAF:switch(o.leafType){case l.DataPathLeafType.ARRAY_LEAF:return(0,i.Left)(new Error("Array leaf is not supported in v1 of protocol"));case l.DataPathLeafType.TUPLE_LEAF:return(0,i.Left)(new Error("Tuple leaf is not supported in v1 of protocol"));case l.DataPathLeafType.STATIC_LEAF:return this.getSlice(e,t,m).chain(s=>a===null?(0,i.Right)([s]):this.sliceLeaf(s,a));case l.DataPathLeafType.DYNAMIC_LEAF:return this.getU256(e.slice(t)).toEither(new Error(`Invalid leaf length at offset ${t}`)).chain(s=>(t+=m,this.getSlice(e,t,s).chain(E=>a===null?(0,i.Right)([E]):this.sliceLeaf(E,a))))}break;case l.DataPathElementType.SLICE:return(0,i.Left)(new Error("Slice can only be used as last element of the path"))}}return(0,i.Left)(new Error("Path did not resolve to a leaf element"))}sliceLeaf(e,r){const t=e.length,n=r.start===void 0?0:r.start<0?t+r.start:r.start,u=r.end===void 0?t:r.end<0?t+r.end:r.end;return n>=u?(0,i.Left)(new Error(`invalid leaf slice: start ${n}, end ${u}`)):this.getSlice(e,n,u-n).map(a=>[a])}getSlice(e,r,t){return r<0||e.length<r+t?(0,i.Left)(new Error(`calldata too small to slice at offset ${r} of length ${t}`)):(0,i.Right)(e.slice(r,r+t))}getU256(e){return i.Maybe.fromNullable(new h.ByteArrayParser(e).extract256BitUInt(!0)).filter(r=>r<=Number.MAX_SAFE_INTEGER).map(r=>Number(r))}};d=p([(0,w.injectable)()],d);0&&(module.exports={TransactionParserService});
2
2
  //# sourceMappingURL=TransactionParserService.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/transaction/service/parser/TransactionParserService.ts"],
4
- "sourcesContent": ["import type {\n DataPathElement,\n DataPathElementSlice,\n GenericPath,\n TransactionSubset,\n} from \"@ledgerhq/context-module\";\nimport {\n ContainerPath,\n DataPathElementType,\n DataPathLeafType,\n} from \"@ledgerhq/context-module\";\nimport {\n ByteArrayBuilder,\n ByteArrayParser,\n hexaStringToBuffer,\n} from \"@ledgerhq/device-management-kit\";\nimport { injectable } from \"inversify\";\nimport { Either, Left, Maybe, Right } from \"purify-ts\";\n\n/**\n * The goal of this service it to implement the GenericPath parser in the context\n * of an ethereum transaction.\n *\n * The abi of an ethereum transaction calldata is specified here:\n * https://docs.soliditylang.org/en/latest/abi-spec.html\n *\n * To be noted:\n * - calldata is composed of:\n * - the selector on 4 bytes\n * - chunks of 32 bytes, whatever the size of the item contained in that chunk\n * - static elements (fixed size) are encoded \"in-place\", always in 1 chunk padded with zeros\n * (even a bool is on 32 bytes)\n * - dynamic elements (variable size) are behind references (pointers) and then encoded with length+value\n *\n * Examples extracted from the abi specification:\n * - example for a function with static elements:\n * signature: baz(uint32 x, bool y)\n * parameters: x = 69\n * y = true\n * - Encoding:\n * 0xcdcd77c0: the selector\n * [0] 0x0000000000000000000000000000000000000000000000000000000000000045: value = 69\n * [1] 0x0000000000000000000000000000000000000000000000000000000000000001: value = true\n *\n * - example for a function with dynamic elements:\n * signature: g(uint256[][] x, string[] x)\n * parameters: x = [[1, 2], [3]]\n * y = [\"one\", \"two\", \"three\"]\n * - Encoding:\n * 0x2289b18c: the selector\n * [0] 0x0000000000000000000000000000000000000000000000000000000000000040: offset of x\n * [1] 0x0000000000000000000000000000000000000000000000000000000000000140: offset of y\n * [2] 0x0000000000000000000000000000000000000000000000000000000000000002: length of x\n * [3] 0x0000000000000000000000000000000000000000000000000000000000000040: offset of x[0]\n * [4] 0x00000000000000000000000000000000000000000000000000000000000000a0: offset of x[1]\n * [5] 0x0000000000000000000000000000000000000000000000000000000000000002: length of x[0]\n * [6] 0x0000000000000000000000000000000000000000000000000000000000000001: value of x[0][0] = 1\n * [7] 0x0000000000000000000000000000000000000000000000000000000000000002: value of x[0][1] = 2\n * [8] 0x0000000000000000000000000000000000000000000000000000000000000001: length of x[1]\n * [9] 0x0000000000000000000000000000000000000000000000000000000000000003: value of x[1][0] = 3\n * [10] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y\n * [11] 0x0000000000000000000000000000000000000000000000000000000000000060: offset of y[0]\n * [12] 0x00000000000000000000000000000000000000000000000000000000000000a0: offset of y[1]\n * [13] 0x00000000000000000000000000000000000000000000000000000000000000e0: offset of y[2]\n * [14] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y[0]\n * [15] 0x6f6e650000000000000000000000000000000000000000000000000000000000: value of y[0] = \"one\"\n * [16] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y[1]\n * [17] 0x74776f0000000000000000000000000000000000000000000000000000000000: value of y[1] = \"two\"\n * [18] 0x0000000000000000000000000000000000000000000000000000000000000005: length of y[2]\n * [19] 0x7468726565000000000000000000000000000000000000000000000000000000: value of y[2] = \"three\"\n */\nconst SELECTOR_LENGTH = 4;\nconst CHUNK_SIZE = 32;\n\n@injectable()\nexport class TransactionParserService {\n public extractValue(\n subset: TransactionSubset,\n path: GenericPath,\n ): Either<Error, Uint8Array[]> {\n const { to, data, value } = subset;\n /**\n * We can first check container paths, which are in the transaction envelop\n */\n if (path === ContainerPath.FROM) {\n // 'from' is not part of the unsigned ethereum transaction, and can\n // only by recovered from the transaction signature later on.\n // Therefore we cannot extract it from a transaction before signing it.\n // It is not an issue since that field will typically be displayed as an\n // address on the device and therefore don't require additional descriptors.\n return Left(\n new Error(\"Cannot get 'FROM' field of an unsigned transaction\"),\n );\n } else if (path === ContainerPath.TO) {\n return Maybe.fromNullable(to)\n .map((str) => hexaStringToBuffer(str))\n .filter((bytes) => bytes !== null)\n .map((bytes) => [bytes])\n .toEither(new Error(\"Faild to extract TO field of transaction\"));\n } else if (path === ContainerPath.VALUE) {\n return Maybe.fromNullable(value)\n .map((num) => new ByteArrayBuilder().add256BitUIntToData(num).build())\n .map((bytes) => [bytes])\n .toEither(new Error(\"Faild to extract VALUE field of transaction\"));\n }\n\n /**\n * If it was not a path in the container, it means it's a path in the calldata\n */\n return Maybe.fromNullable(data)\n .toEither(new Error(\"Transaction calldata is empty\"))\n .chain((calldata) =>\n Maybe.fromNullable(hexaStringToBuffer(calldata)).toEither(\n new Error(`Invalid hex string calldata: ${calldata}`),\n ),\n )\n .chain((calldata) => this.extractCalldataValue(calldata, path));\n }\n\n private extractCalldataValue(\n data: Uint8Array,\n path: DataPathElement[],\n ): Either<Error, Uint8Array[]> {\n data = data.slice(SELECTOR_LENGTH); // Remove the selector from the calldata\n if (path.length === 0) {\n return Left(new Error(\"Path is empty\"));\n }\n return this.extractCalldataValueAt(data, path, 0, 0);\n }\n\n private extractCalldataValueAt(\n data: Uint8Array,\n path: DataPathElement[],\n offset: number,\n parentOffset: number,\n ): Either<Error, Uint8Array[]> {\n // If the path ends with a slice, store it now as it is only allowed at the end of a binary path.\n const lastElement = path[path.length - 1]!;\n const leafSlice: DataPathElementSlice | null =\n lastElement.type === DataPathElementType.SLICE ? lastElement : null;\n\n while (path.length > 0) {\n const element = path[0]!;\n path = path.slice(1);\n switch (element.type) {\n case DataPathElementType.TUPLE:\n // A tuple contain 1 element per chunk\n parentOffset = offset;\n offset += element.offset * CHUNK_SIZE;\n break;\n case DataPathElementType.ARRAY:\n // An array contains a length, followed by the list of elements.\n // See the examples with dynamic types at the top of this file for more informations.\n return this.getU256(data.slice(offset))\n .toEither(new Error(`Invalid array length at offset ${offset}`))\n .chain((length) => {\n // Skip the array length\n offset += CHUNK_SIZE;\n parentOffset = offset;\n // Select the array slice to iterate on\n const start =\n element.start === undefined\n ? 0\n : element.start < 0\n ? length + element.start\n : element.start;\n const end =\n element.end === undefined\n ? length\n : element.end < 0\n ? length + element.end\n : element.end;\n if (\n start < 0 ||\n start >= length ||\n end > length ||\n start >= end\n ) {\n return Left(\n new Error(\n `Array slice out of bounds, start=${element.start}, end=${element.end}`,\n ),\n );\n }\n // Iterate on the array slice\n return Array.from({ length: end - start }, (_, i) => i)\n .map(\n (i) => offset + (i + start) * element.itemSize * CHUNK_SIZE,\n )\n .reduce(\n (acc: Either<Error, Uint8Array[]>, arrayOffset) =>\n acc.chain((values) =>\n this.extractCalldataValueAt(\n data,\n path,\n arrayOffset,\n parentOffset,\n ).map((newValues) => [...values, ...newValues]),\n ),\n Right([]),\n );\n });\n case DataPathElementType.REF:\n // A reference means the current slot points to a new offset in the calldata (a kind of pointer).\n // That offset is relative to its 'parent' element, here named parentOffset.\n // See the examples with dynamic types at the top of this file for more informations.\n if (\n this.getU256(data.slice(offset))\n .ifJust((reference) => (offset = parentOffset + reference))\n .isNothing()\n ) {\n return Left(new Error(`Invalid ref at offset ${offset}`));\n }\n break;\n case DataPathElementType.LEAF:\n // A leaf means we reached the end of the path.\n // We have to check the leaf type to know how to extract the data.\n switch (element.leafType) {\n case DataPathLeafType.ARRAY_LEAF:\n return Left(\n new Error(\"Array leaf is not supported in v1 of protocol\"),\n );\n case DataPathLeafType.TUPLE_LEAF:\n return Left(\n new Error(\"Tuple leaf is not supported in v1 of protocol\"),\n );\n case DataPathLeafType.STATIC_LEAF:\n // A static leaf is the chunk of current offset (data of static size)\n return this.getSlice(data, offset, CHUNK_SIZE).chain((leaf) => {\n if (leafSlice === null) {\n return Right([leaf]);\n } else {\n return this.sliceLeaf(leaf, leafSlice);\n }\n });\n case DataPathLeafType.DYNAMIC_LEAF:\n // A dynamic leaf is composed of a length followed by the actual value\n // (data of variable size such as a string).\n // See the examples with dynamic types at the top of this file for more informations.\n return this.getU256(data.slice(offset))\n .toEither(new Error(`Invalid leaf length at offset ${offset}`))\n .chain((length) => {\n // Skip dynamic leaf length\n offset += CHUNK_SIZE;\n return this.getSlice(data, offset, length).chain((leaf) => {\n if (leafSlice === null) {\n return Right([leaf]);\n } else {\n return this.sliceLeaf(leaf, leafSlice);\n }\n });\n });\n }\n break;\n case DataPathElementType.SLICE:\n // If the last element was a slice, it was already popped at the beginning of this function\n return Left(\n new Error(\"Slice can only be used as last element of the path\"),\n );\n }\n }\n // We should have early-returned on a leaf\n return Left(new Error(\"Path did not resolve to a leaf element\"));\n }\n\n private sliceLeaf(\n data: Uint8Array,\n leafSlice: DataPathElementSlice,\n ): Either<Error, Uint8Array[]> {\n const length = data.length;\n const start =\n leafSlice.start === undefined\n ? 0\n : leafSlice.start < 0\n ? length + leafSlice.start\n : leafSlice.start;\n const end =\n leafSlice.end === undefined\n ? length\n : leafSlice.end < 0\n ? length + leafSlice.end\n : leafSlice.end;\n if (start >= end) {\n return Left(new Error(`invalid leaf slice: start ${start}, end ${end}`));\n }\n return this.getSlice(data, start, end - start).map((leaf) => [leaf]);\n }\n\n getSlice(\n data: Uint8Array,\n offset: number,\n size: number,\n ): Either<Error, Uint8Array> {\n return offset < 0 || data.length < offset + size\n ? Left(\n new Error(\n `calldata too small to slice at offset ${offset} of length ${size}`,\n ),\n )\n : Right(data.slice(offset, offset + size));\n }\n\n getU256(data: Uint8Array): Maybe<number> {\n // https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding\n return Maybe.fromNullable(new ByteArrayParser(data).extract256BitUInt(true))\n .filter((res) => res <= Number.MAX_SAFE_INTEGER)\n .map((res) => Number(res));\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import type {\n DataPathElement,\n DataPathElementSlice,\n GenericPath,\n TransactionSubset,\n} from \"@ledgerhq/context-module\";\nimport {\n ContainerPath,\n DataPathElementType,\n DataPathLeafType,\n} from \"@ledgerhq/context-module\";\nimport {\n ByteArrayBuilder,\n ByteArrayParser,\n hexaStringToBuffer,\n} from \"@ledgerhq/device-management-kit\";\nimport { injectable } from \"inversify\";\nimport { Either, Left, Maybe, Right } from \"purify-ts\";\n\n/**\n * The goal of this service it to implement the GenericPath parser in the context\n * of an ethereum transaction.\n *\n * The abi of an ethereum transaction calldata is specified here:\n * https://docs.soliditylang.org/en/latest/abi-spec.html\n *\n * To be noted:\n * - calldata is composed of:\n * - the selector on 4 bytes\n * - chunks of 32 bytes, whatever the size of the item contained in that chunk\n * - static elements (fixed size) are encoded \"in-place\", always in 1 chunk padded with zeros\n * (even a bool is on 32 bytes)\n * - dynamic elements (variable size) are behind references (pointers) and then encoded with length+value\n *\n * Examples extracted from the abi specification:\n * - example for a function with static elements:\n * signature: baz(uint32 x, bool y)\n * parameters: x = 69\n * y = true\n * - Encoding:\n * 0xcdcd77c0: the selector\n * [0] 0x0000000000000000000000000000000000000000000000000000000000000045: value = 69\n * [1] 0x0000000000000000000000000000000000000000000000000000000000000001: value = true\n *\n * - example for a function with dynamic elements:\n * signature: g(uint256[][] x, string[] x)\n * parameters: x = [[1, 2], [3]]\n * y = [\"one\", \"two\", \"three\"]\n * - Encoding:\n * 0x2289b18c: the selector\n * [0] 0x0000000000000000000000000000000000000000000000000000000000000040: offset of x\n * [1] 0x0000000000000000000000000000000000000000000000000000000000000140: offset of y\n * [2] 0x0000000000000000000000000000000000000000000000000000000000000002: length of x\n * [3] 0x0000000000000000000000000000000000000000000000000000000000000040: offset of x[0]\n * [4] 0x00000000000000000000000000000000000000000000000000000000000000a0: offset of x[1]\n * [5] 0x0000000000000000000000000000000000000000000000000000000000000002: length of x[0]\n * [6] 0x0000000000000000000000000000000000000000000000000000000000000001: value of x[0][0] = 1\n * [7] 0x0000000000000000000000000000000000000000000000000000000000000002: value of x[0][1] = 2\n * [8] 0x0000000000000000000000000000000000000000000000000000000000000001: length of x[1]\n * [9] 0x0000000000000000000000000000000000000000000000000000000000000003: value of x[1][0] = 3\n * [10] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y\n * [11] 0x0000000000000000000000000000000000000000000000000000000000000060: offset of y[0]\n * [12] 0x00000000000000000000000000000000000000000000000000000000000000a0: offset of y[1]\n * [13] 0x00000000000000000000000000000000000000000000000000000000000000e0: offset of y[2]\n * [14] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y[0]\n * [15] 0x6f6e650000000000000000000000000000000000000000000000000000000000: value of y[0] = \"one\"\n * [16] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y[1]\n * [17] 0x74776f0000000000000000000000000000000000000000000000000000000000: value of y[1] = \"two\"\n * [18] 0x0000000000000000000000000000000000000000000000000000000000000005: length of y[2]\n * [19] 0x7468726565000000000000000000000000000000000000000000000000000000: value of y[2] = \"three\"\n */\nconst SELECTOR_LENGTH = 4;\nconst CHUNK_SIZE = 32;\n\n@injectable()\nexport class TransactionParserService {\n public extractValue(\n subset: TransactionSubset,\n path: GenericPath,\n ): Either<Error, Uint8Array[]> {\n const { to, data, value } = subset;\n /**\n * We can first check container paths, which are in the transaction envelop\n */\n if (path === ContainerPath.FROM) {\n // 'from' is not part of the unsigned ethereum transaction, and can\n // only by recovered from the transaction signature later on.\n // Therefore we cannot extract it from a transaction before signing it.\n // It is not an issue since that field will typically be displayed as an\n // address on the device and therefore don't require additional descriptors.\n return Left(\n new Error(\"Cannot get 'FROM' field of an unsigned transaction\"),\n );\n } else if (path === ContainerPath.TO) {\n return Maybe.fromNullable(to)\n .map((str) => hexaStringToBuffer(str))\n .filter((bytes) => bytes !== null)\n .map((bytes) => [bytes])\n .toEither(new Error(\"Failed to extract TO field of transaction\"));\n } else if (path === ContainerPath.VALUE) {\n return Maybe.fromNullable(value)\n .map((num) => new ByteArrayBuilder().add256BitUIntToData(num).build())\n .map((bytes) => [bytes])\n .toEither(new Error(\"Failed to extract VALUE field of transaction\"));\n }\n\n /**\n * If it was not a path in the container, it means it's a path in the calldata\n */\n return Maybe.fromNullable(data)\n .toEither(new Error(\"Transaction calldata is empty\"))\n .chain((calldata) =>\n Maybe.fromNullable(hexaStringToBuffer(calldata)).toEither(\n new Error(`Invalid hex string calldata: ${calldata}`),\n ),\n )\n .chain((calldata) => this.extractCalldataValue(calldata, path));\n }\n\n private extractCalldataValue(\n data: Uint8Array,\n path: DataPathElement[],\n ): Either<Error, Uint8Array[]> {\n data = data.slice(SELECTOR_LENGTH); // Remove the selector from the calldata\n if (path.length === 0) {\n return Left(new Error(\"Path is empty\"));\n }\n return this.extractCalldataValueAt(data, path, 0, 0);\n }\n\n private extractCalldataValueAt(\n data: Uint8Array,\n path: DataPathElement[],\n offset: number,\n parentOffset: number,\n ): Either<Error, Uint8Array[]> {\n // If the path ends with a slice, store it now as it is only allowed at the end of a binary path.\n const lastElement = path[path.length - 1]!;\n const leafSlice: DataPathElementSlice | null =\n lastElement.type === DataPathElementType.SLICE ? lastElement : null;\n\n while (path.length > 0) {\n const element = path[0]!;\n path = path.slice(1);\n switch (element.type) {\n case DataPathElementType.TUPLE:\n // A tuple contain 1 element per chunk\n parentOffset = offset;\n offset += element.offset * CHUNK_SIZE;\n break;\n case DataPathElementType.ARRAY:\n // An array contains a length, followed by the list of elements.\n // See the examples with dynamic types at the top of this file for more informations.\n return this.getU256(data.slice(offset))\n .toEither(new Error(`Invalid array length at offset ${offset}`))\n .chain((length) => {\n // Skip the array length\n offset += CHUNK_SIZE;\n parentOffset = offset;\n // Select the array slice to iterate on\n const start =\n element.start === undefined\n ? 0\n : element.start < 0\n ? length + element.start\n : element.start;\n const end =\n element.end === undefined\n ? length\n : element.end < 0\n ? length + element.end\n : element.end;\n if (\n start < 0 ||\n start >= length ||\n end > length ||\n start >= end\n ) {\n return Left(\n new Error(\n `Array slice out of bounds, start=${element.start}, end=${element.end}`,\n ),\n );\n }\n // Iterate on the array slice\n return Array.from({ length: end - start }, (_, i) => i)\n .map(\n (i) => offset + (i + start) * element.itemSize * CHUNK_SIZE,\n )\n .reduce(\n (acc: Either<Error, Uint8Array[]>, arrayOffset) =>\n acc.chain((values) =>\n this.extractCalldataValueAt(\n data,\n path,\n arrayOffset,\n parentOffset,\n ).map((newValues) => [...values, ...newValues]),\n ),\n Right([]),\n );\n });\n case DataPathElementType.REF:\n // A reference means the current slot points to a new offset in the calldata (a kind of pointer).\n // That offset is relative to its 'parent' element, here named parentOffset.\n // See the examples with dynamic types at the top of this file for more informations.\n if (\n this.getU256(data.slice(offset))\n .ifJust((reference) => (offset = parentOffset + reference))\n .isNothing()\n ) {\n return Left(new Error(`Invalid ref at offset ${offset}`));\n }\n break;\n case DataPathElementType.LEAF:\n // A leaf means we reached the end of the path.\n // We have to check the leaf type to know how to extract the data.\n switch (element.leafType) {\n case DataPathLeafType.ARRAY_LEAF:\n return Left(\n new Error(\"Array leaf is not supported in v1 of protocol\"),\n );\n case DataPathLeafType.TUPLE_LEAF:\n return Left(\n new Error(\"Tuple leaf is not supported in v1 of protocol\"),\n );\n case DataPathLeafType.STATIC_LEAF:\n // A static leaf is the chunk of current offset (data of static size)\n return this.getSlice(data, offset, CHUNK_SIZE).chain((leaf) => {\n if (leafSlice === null) {\n return Right([leaf]);\n } else {\n return this.sliceLeaf(leaf, leafSlice);\n }\n });\n case DataPathLeafType.DYNAMIC_LEAF:\n // A dynamic leaf is composed of a length followed by the actual value\n // (data of variable size such as a string).\n // See the examples with dynamic types at the top of this file for more informations.\n return this.getU256(data.slice(offset))\n .toEither(new Error(`Invalid leaf length at offset ${offset}`))\n .chain((length) => {\n // Skip dynamic leaf length\n offset += CHUNK_SIZE;\n return this.getSlice(data, offset, length).chain((leaf) => {\n if (leafSlice === null) {\n return Right([leaf]);\n } else {\n return this.sliceLeaf(leaf, leafSlice);\n }\n });\n });\n }\n break;\n case DataPathElementType.SLICE:\n // If the last element was a slice, it was already popped at the beginning of this function\n return Left(\n new Error(\"Slice can only be used as last element of the path\"),\n );\n }\n }\n // We should have early-returned on a leaf\n return Left(new Error(\"Path did not resolve to a leaf element\"));\n }\n\n private sliceLeaf(\n data: Uint8Array,\n leafSlice: DataPathElementSlice,\n ): Either<Error, Uint8Array[]> {\n const length = data.length;\n const start =\n leafSlice.start === undefined\n ? 0\n : leafSlice.start < 0\n ? length + leafSlice.start\n : leafSlice.start;\n const end =\n leafSlice.end === undefined\n ? length\n : leafSlice.end < 0\n ? length + leafSlice.end\n : leafSlice.end;\n if (start >= end) {\n return Left(new Error(`invalid leaf slice: start ${start}, end ${end}`));\n }\n return this.getSlice(data, start, end - start).map((leaf) => [leaf]);\n }\n\n getSlice(\n data: Uint8Array,\n offset: number,\n size: number,\n ): Either<Error, Uint8Array> {\n return offset < 0 || data.length < offset + size\n ? Left(\n new Error(\n `calldata too small to slice at offset ${offset} of length ${size}`,\n ),\n )\n : Right(data.slice(offset, offset + size));\n }\n\n getU256(data: Uint8Array): Maybe<number> {\n // https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding\n return Maybe.fromNullable(new ByteArrayParser(data).extract256BitUInt(true))\n .filter((res) => res <= Number.MAX_SAFE_INTEGER)\n .map((res) => Number(res));\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["TransactionParserService_exports", "__export", "TransactionParserService", "__toCommonJS", "import_context_module", "import_device_management_kit", "import_inversify", "import_purify_ts", "SELECTOR_LENGTH", "CHUNK_SIZE", "TransactionParserService", "subset", "path", "to", "data", "value", "str", "bytes", "num", "calldata", "offset", "parentOffset", "lastElement", "leafSlice", "element", "length", "start", "end", "_", "i", "acc", "arrayOffset", "values", "newValues", "reference", "leaf", "size", "res", "__decorateClass"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var o=require("@ledgerhq/context-module"),c=require("@ledgerhq/device-management-kit"),r=require("./TransactionParserService");describe("TransactionParserService",()=>{const l=new r.TransactionParserService,i=(0,c.hexaStringToBuffer)("0x3f32cF0B1DF94157EE1c3876c49BE3732C92a98f"),s=81818275935222000n,n=new c.ByteArrayBuilder().add256BitUIntToData(81818275935222000n).build();beforeEach(()=>{vi.clearAllMocks()}),describe("Container paths",()=>{it("should extract TO of the container",()=>{const a={chainId:1,data:"0x",selector:"0x",to:(0,c.bufferToHexaString)(i),value:s},e=l.extractValue(a,o.ContainerPath.TO);expect(e.isRight()).toStrictEqual(!0),expect(e.unsafeCoerce()).toStrictEqual([i])}),it("should extract VALUE of the container",()=>{const a={chainId:1,data:"0x",selector:"0x",to:(0,c.bufferToHexaString)(i),value:s},e=l.extractValue(a,o.ContainerPath.VALUE);expect(e.isRight()).toStrictEqual(!0),expect(e.unsafeCoerce()).toStrictEqual([n])}),it("Unavailable container fields",()=>{const a={chainId:1,data:"0x",selector:"0x",to:void 0,from:void 0,value:s},e=l.extractValue(a,o.ContainerPath.FROM),t=l.extractValue(a,o.ContainerPath.TO);expect(e.isRight()).toStrictEqual(!1),expect(t.isRight()).toStrictEqual(!1)}),it("invalid transaction format",()=>{const a=(0,c.hexaStringToBuffer)("0xdeadbeef"),e=l.extractValue(a,o.ContainerPath.FROM);expect(e.isRight()).toStrictEqual(!1)})}),describe("Data paths in a calldata with static elements",()=>{const a={chainId:1,data:"0xcdcd77c000000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000000000000000000000000000000000000001",selector:"0xcdcd77c",to:(0,c.bufferToHexaString)(i),value:s};it("Extract the first element",()=>{const e=[{type:"TUPLE",offset:0},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000045")])}),it("Extract the second element",()=>{const e=[{type:"TUPLE",offset:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000001")])}),it("Slice the static leaf",()=>{const e=[{type:"TUPLE",offset:0},{type:"LEAF",leafType:"STATIC_LEAF"},{type:"SLICE",start:-4}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x00000045")])}),it("Out of bounds",()=>{const e=[{type:"TUPLE",offset:2},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)})}),describe("Data paths in a calldata with dynamic elements",()=>{const a={to:(0,c.bufferToHexaString)(i),value:s,chainId:1,data:"0x2289b18c000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000036f6e650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000374776f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057468726565000000000000000000000000000000000000000000000000000000",selector:"0x2289b18c"};it("Extract all the elements of x, concatenated together",()=>{const e=[{type:"TUPLE",offset:0},{type:"REF"},{type:"ARRAY",itemSize:1},{type:"REF"},{type:"ARRAY",itemSize:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000001"),(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000002"),(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000003")])}),it("Extract all the elements of x[0]",()=>{const e=[{type:"TUPLE",offset:0},{type:"REF"},{type:"ARRAY",itemSize:1,start:0,end:1},{type:"REF"},{type:"ARRAY",itemSize:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000001"),(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000002")])}),it("Extract all the elements of x[0:-1][-1:]",()=>{const e=[{type:"TUPLE",offset:0},{type:"REF"},{type:"ARRAY",itemSize:1,start:0,end:-1},{type:"REF"},{type:"ARRAY",itemSize:1,start:-1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000002")])}),it("Array out of bounds",()=>{const e=[{type:"TUPLE",offset:0},{type:"REF"},{type:"ARRAY",itemSize:1,start:0,end:1},{type:"REF"},{type:"ARRAY",itemSize:1,start:2,end:3},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Extract all the elements of x[1]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x6f6e65"),(0,c.hexaStringToBuffer)("0x74776f"),(0,c.hexaStringToBuffer)("0x7468726565")])}),it("Extract all the elements of x[1][:2]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1,end:2},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x6f6e65"),(0,c.hexaStringToBuffer)("0x74776f")])}),it("Slice the dynamic leaf with [1:-2]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1,start:2,end:3},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"},{type:"SLICE",start:1,end:-2}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x6872")])}),it("Slice the dynamic leaf with [-1:]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1,start:2,end:3},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"},{type:"SLICE",start:-1}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x65")])}),it("Slice the dynamic leaf with [:1]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1,start:2,end:3},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"},{type:"SLICE",end:1}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x74")])}),it("Error no leaf",()=>{const e=[{type:"TUPLE",offset:1}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Error slice not at the end",()=>{const e=[{type:"TUPLE",offset:1},{type:"SLICE",start:0,end:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Error empty slice",()=>{const e=[{type:"TUPLE",offset:1},{type:"LEAF",leafType:"DYNAMIC_LEAF"},{type:"SLICE",start:0,end:0}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)})}),describe("Array of tuples, with bigger itemSize",()=>{const a={chainId:1,data:"0xcdcd77c000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000006",selector:"0xcdcd77c",to:(0,c.bufferToHexaString)(i),value:s};it("Extract the first tuple element of all array elements",()=>{const e=[{type:"REF"},{type:"ARRAY",itemSize:2},{type:"TUPLE",offset:0},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000001"),(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000003"),(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000005")])}),it("Extract the second tuple element of all array elements",()=>{const e=[{type:"REF"},{type:"ARRAY",itemSize:2},{type:"TUPLE",offset:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000002"),(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000004"),(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000006")])})}),describe("Malformed calldata",()=>{const a={chainId:1,data:"0x2289b18c0000000000000000000000000000000000000000000000000000000000000080f000000000000000000000000000000000000000000000000000000000000140f000000000000000000000000000000000000000000000000000000000000002",selector:"0x2289b18c",to:(0,c.bufferToHexaString)(i),value:s};it("Dynamic leaf length overflow",()=>{const e=[{type:"TUPLE",offset:1},{type:"LEAF",leafType:"DYNAMIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Calldata smaller than dynamic leaf",()=>{const e=[{type:"TUPLE",offset:0},{type:"LEAF",leafType:"DYNAMIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Array length overflow",()=>{const e=[{type:"TUPLE",offset:1},{type:"ARRAY",itemSize:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Calldata smaller than array length",()=>{const e=[{type:"TUPLE",offset:0},{type:"ARRAY",itemSize:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Ref out of bounds",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)})})});
1
+ "use strict";var o=require("@ledgerhq/context-module"),c=require("@ledgerhq/device-management-kit"),r=require("./TransactionParserService");describe("TransactionParserService",()=>{const l=new r.TransactionParserService,i=(0,c.hexaStringToBuffer)("0x3f32cF0B1DF94157EE1c3876c49BE3732C92a98f"),s=81818275935222000n,n=new c.ByteArrayBuilder().add256BitUIntToData(81818275935222000n).build();beforeEach(()=>{vi.clearAllMocks()}),describe("Container paths",()=>{it("should extract TO of the container",()=>{const a={chainId:1,data:"0x",selector:"0x",to:(0,c.bufferToHexaString)(i),value:s},e=l.extractValue(a,o.ContainerPath.TO);expect(e.isRight()).toStrictEqual(!0),expect(e.unsafeCoerce()).toStrictEqual([i])}),it("should extract VALUE of the container",()=>{const a={chainId:1,data:"0x",selector:"0x",to:(0,c.bufferToHexaString)(i),value:s},e=l.extractValue(a,o.ContainerPath.VALUE);expect(e.isRight()).toStrictEqual(!0),expect(e.unsafeCoerce()).toStrictEqual([n])}),it("Unavailable container fields",()=>{const a={chainId:1,data:"0x",selector:"0x",to:void 0,from:void 0,value:s},e=l.extractValue(a,o.ContainerPath.FROM),t=l.extractValue(a,o.ContainerPath.TO);expect(e.isRight()).toStrictEqual(!1),expect(t.isRight()).toStrictEqual(!1)}),it("invalid transaction format",()=>{const a=(0,c.hexaStringToBuffer)("0xdeadbeef"),e=l.extractValue(a,o.ContainerPath.FROM);expect(e.isRight()).toStrictEqual(!1)})}),describe("Data paths in a calldata with static elements",()=>{const a={chainId:1,data:"0xcdcd77c000000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000000000000000000000000000000000000001",selector:"0xcdcd77c",to:(0,c.bufferToHexaString)(i),value:s};it("Extract the first element",()=>{const e=[{type:"TUPLE",offset:0},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000045")])}),it("Extract the second element",()=>{const e=[{type:"TUPLE",offset:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000001")])}),it("Slice the static leaf",()=>{const e=[{type:"TUPLE",offset:0},{type:"LEAF",leafType:"STATIC_LEAF"},{type:"SLICE",start:-4}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x00000045")])}),it("Out of bounds",()=>{const e=[{type:"TUPLE",offset:2},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)})}),describe("Data paths in a calldata with dynamic elements",()=>{const a={to:(0,c.bufferToHexaString)(i),value:s,chainId:1,data:"0x2289b18c000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000036f6e650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000374776f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057468726565000000000000000000000000000000000000000000000000000000",selector:"0x2289b18c"};it("Extract all the elements of x, concatenated together",()=>{const e=[{type:"TUPLE",offset:0},{type:"REF"},{type:"ARRAY",itemSize:1},{type:"REF"},{type:"ARRAY",itemSize:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000001"),(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000002"),(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000003")])}),it("Extract all the elements of x[0]",()=>{const e=[{type:"TUPLE",offset:0},{type:"REF"},{type:"ARRAY",itemSize:1,start:0,end:1},{type:"REF"},{type:"ARRAY",itemSize:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000001"),(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000002")])}),it("Extract all the elements of x[0:-1][-1:]",()=>{const e=[{type:"TUPLE",offset:0},{type:"REF"},{type:"ARRAY",itemSize:1,start:0,end:-1},{type:"REF"},{type:"ARRAY",itemSize:1,start:-1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000002")])}),it("Array out of bounds",()=>{const e=[{type:"TUPLE",offset:0},{type:"REF"},{type:"ARRAY",itemSize:1,start:0,end:1},{type:"REF"},{type:"ARRAY",itemSize:1,start:2,end:3},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Extract all the elements of x[1]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x6f6e65"),(0,c.hexaStringToBuffer)("0x74776f"),(0,c.hexaStringToBuffer)("0x7468726565")])}),it("Extract all the elements of x[1][:2]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1,end:2},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x6f6e65"),(0,c.hexaStringToBuffer)("0x74776f")])}),it("Slice the dynamic leaf with [1:-2]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1,start:2,end:3},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"},{type:"SLICE",start:1,end:-2}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x6872")])}),it("Slice the dynamic leaf with [-1:]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1,start:2,end:3},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"},{type:"SLICE",start:-1}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x65")])}),it("Slice the dynamic leaf with [:1]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1,start:2,end:3},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"},{type:"SLICE",end:1}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x74")])}),it("Error no leaf",()=>{const e=[{type:"TUPLE",offset:1}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Error slice not at the end",()=>{const e=[{type:"TUPLE",offset:1},{type:"SLICE",start:0,end:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Error empty slice",()=>{const e=[{type:"TUPLE",offset:1},{type:"LEAF",leafType:"DYNAMIC_LEAF"},{type:"SLICE",start:0,end:0}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)})}),describe("Array of tuples, with bigger itemSize",()=>{const a={chainId:1,data:"0xcdcd77c000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000006",selector:"0xcdcd77c",to:(0,c.bufferToHexaString)(i),value:s};it("Extract the first tuple element of all array elements",()=>{const e=[{type:"REF"},{type:"ARRAY",itemSize:2},{type:"TUPLE",offset:0},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000001"),(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000003"),(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000005")])}),it("Extract the second tuple element of all array elements",()=>{const e=[{type:"REF"},{type:"ARRAY",itemSize:2},{type:"TUPLE",offset:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000002"),(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000004"),(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000006")])})}),describe("Malformed calldata",()=>{const a={chainId:1,data:"0x2289b18c0000000000000000000000000000000000000000000000000000000000000080f000000000000000000000000000000000000000000000000000000000000140f000000000000000000000000000000000000000000000000000000000000002",selector:"0x2289b18c",to:(0,c.bufferToHexaString)(i),value:s};it("Dynamic leaf length overflow",()=>{const e=[{type:"TUPLE",offset:1},{type:"LEAF",leafType:"DYNAMIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Calldata smaller than dynamic leaf",()=>{const e=[{type:"TUPLE",offset:0},{type:"LEAF",leafType:"DYNAMIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Array length overflow",()=>{const e=[{type:"TUPLE",offset:1},{type:"ARRAY",itemSize:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Calldata smaller than array length",()=>{const e=[{type:"TUPLE",offset:0},{type:"ARRAY",itemSize:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Ref out of bounds",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Empty array",()=>{const e=[],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)})})});
2
2
  //# sourceMappingURL=TransactionParserService.test.js.map