@ledgerhq/device-signer-kit-ethereum 1.8.0 → 1.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) 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/model/SafeAddressOptions.js +2 -0
  13. package/lib/cjs/api/model/SafeAddressOptions.js.map +7 -0
  14. package/lib/cjs/internal/DefaultSignerEth.js +1 -1
  15. package/lib/cjs/internal/DefaultSignerEth.js.map +3 -3
  16. package/lib/cjs/internal/app-binder/EthAppBinder.js +1 -1
  17. package/lib/cjs/internal/app-binder/EthAppBinder.js.map +3 -3
  18. package/lib/cjs/internal/app-binder/EthAppBinder.test.js +1 -1
  19. package/lib/cjs/internal/app-binder/EthAppBinder.test.js.map +2 -2
  20. package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.js +2 -0
  21. package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.js.map +7 -0
  22. package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.test.js +2 -0
  23. package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.test.js.map +7 -0
  24. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
  25. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
  26. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  27. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
  28. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
  29. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
  30. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
  31. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
  32. package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js +2 -0
  33. package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js.map +7 -0
  34. package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js +2 -0
  35. package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js.map +7 -0
  36. package/lib/cjs/internal/app-binder/task/BuildBaseContexts.js +1 -1
  37. package/lib/cjs/internal/app-binder/task/BuildBaseContexts.js.map +3 -3
  38. package/lib/cjs/internal/app-binder/task/BuildBaseContexts.test.js +1 -1
  39. package/lib/cjs/internal/app-binder/task/BuildBaseContexts.test.js.map +3 -3
  40. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
  41. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
  42. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
  43. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +3 -3
  44. package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.js +2 -0
  45. package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.js.map +7 -0
  46. package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.test.js +2 -0
  47. package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.test.js.map +7 -0
  48. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.js +1 -1
  49. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.js.map +2 -2
  50. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.test.js +1 -1
  51. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.test.js.map +2 -2
  52. package/lib/cjs/internal/app-binder/task/ProvideContextTask.js +2 -0
  53. package/lib/cjs/internal/app-binder/task/ProvideContextTask.js.map +7 -0
  54. package/lib/cjs/internal/app-binder/task/ProvideContextTask.test.js +2 -0
  55. package/lib/cjs/internal/app-binder/task/ProvideContextTask.test.js.map +7 -0
  56. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.js +1 -1
  57. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.js.map +3 -3
  58. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
  59. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +3 -3
  60. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.js +2 -0
  61. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.js.map +7 -0
  62. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.test.js +2 -0
  63. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.test.js.map +7 -0
  64. package/lib/cjs/internal/di.js +1 -1
  65. package/lib/cjs/internal/di.js.map +3 -3
  66. package/lib/cjs/internal/safe/di/safeModule.js +2 -0
  67. package/lib/cjs/internal/safe/di/safeModule.js.map +7 -0
  68. package/lib/cjs/internal/safe/di/safeModule.test.js +2 -0
  69. package/lib/cjs/internal/safe/di/safeModule.test.js.map +7 -0
  70. package/lib/cjs/internal/safe/di/safeTypes.js +2 -0
  71. package/lib/cjs/internal/safe/di/safeTypes.js.map +7 -0
  72. package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.js +2 -0
  73. package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.js.map +7 -0
  74. package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.test.js +2 -0
  75. package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.test.js.map +7 -0
  76. package/lib/cjs/package.json +2 -2
  77. package/lib/esm/api/SignerEthBuilder.test.js +1 -1
  78. package/lib/esm/api/SignerEthBuilder.test.js.map +2 -2
  79. package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
  80. package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
  81. package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
  82. package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js.map +2 -2
  83. package/lib/esm/api/app-binder/VerifySafeAddressDeviceActionTypes.js +2 -0
  84. package/lib/esm/api/app-binder/VerifySafeAddressDeviceActionTypes.js.map +7 -0
  85. package/lib/esm/api/model/SafeAddressOptions.js +1 -0
  86. package/lib/esm/api/model/SafeAddressOptions.js.map +7 -0
  87. package/lib/esm/internal/DefaultSignerEth.js +1 -1
  88. package/lib/esm/internal/DefaultSignerEth.js.map +3 -3
  89. package/lib/esm/internal/app-binder/EthAppBinder.js +1 -1
  90. package/lib/esm/internal/app-binder/EthAppBinder.js.map +3 -3
  91. package/lib/esm/internal/app-binder/EthAppBinder.test.js +1 -1
  92. package/lib/esm/internal/app-binder/EthAppBinder.test.js.map +2 -2
  93. package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.js +2 -0
  94. package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.js.map +7 -0
  95. package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.test.js +2 -0
  96. package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.test.js.map +7 -0
  97. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
  98. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
  99. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  100. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
  101. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
  102. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
  103. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
  104. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
  105. package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js +2 -0
  106. package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js.map +7 -0
  107. package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js +2 -0
  108. package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js.map +7 -0
  109. package/lib/esm/internal/app-binder/task/BuildBaseContexts.js +1 -1
  110. package/lib/esm/internal/app-binder/task/BuildBaseContexts.js.map +3 -3
  111. package/lib/esm/internal/app-binder/task/BuildBaseContexts.test.js +1 -1
  112. package/lib/esm/internal/app-binder/task/BuildBaseContexts.test.js.map +3 -3
  113. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
  114. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
  115. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
  116. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +3 -3
  117. package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.js +2 -0
  118. package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.js.map +7 -0
  119. package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.test.js +2 -0
  120. package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.test.js.map +7 -0
  121. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.js +1 -1
  122. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.js.map +2 -2
  123. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.test.js +1 -1
  124. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.test.js.map +2 -2
  125. package/lib/esm/internal/app-binder/task/ProvideContextTask.js +2 -0
  126. package/lib/esm/internal/app-binder/task/ProvideContextTask.js.map +7 -0
  127. package/lib/esm/internal/app-binder/task/ProvideContextTask.test.js +2 -0
  128. package/lib/esm/internal/app-binder/task/ProvideContextTask.test.js.map +7 -0
  129. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.js +1 -1
  130. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.js.map +3 -3
  131. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
  132. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +3 -3
  133. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.js +2 -0
  134. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.js.map +7 -0
  135. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.test.js +2 -0
  136. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.test.js.map +7 -0
  137. package/lib/esm/internal/di.js +1 -1
  138. package/lib/esm/internal/di.js.map +3 -3
  139. package/lib/esm/internal/safe/di/safeModule.js +2 -0
  140. package/lib/esm/internal/safe/di/safeModule.js.map +7 -0
  141. package/lib/esm/internal/safe/di/safeModule.test.js +2 -0
  142. package/lib/esm/internal/safe/di/safeModule.test.js.map +7 -0
  143. package/lib/esm/internal/safe/di/safeTypes.js +2 -0
  144. package/lib/esm/internal/safe/di/safeTypes.js.map +7 -0
  145. package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.js +2 -0
  146. package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.js.map +7 -0
  147. package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.test.js +2 -0
  148. package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.test.js.map +7 -0
  149. package/lib/esm/package.json +2 -2
  150. package/lib/types/api/SignerEth.d.ts +3 -0
  151. package/lib/types/api/SignerEth.d.ts.map +1 -1
  152. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +1 -0
  153. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
  154. package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts +2 -0
  155. package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts.map +1 -1
  156. package/lib/types/api/app-binder/VerifySafeAddressDeviceActionTypes.d.ts +30 -0
  157. package/lib/types/api/app-binder/VerifySafeAddressDeviceActionTypes.d.ts.map +1 -0
  158. package/lib/types/api/model/SafeAddressOptions.d.ts +5 -0
  159. package/lib/types/api/model/SafeAddressOptions.d.ts.map +1 -0
  160. package/lib/types/internal/DefaultSignerEth.d.ts +3 -0
  161. package/lib/types/internal/DefaultSignerEth.d.ts.map +1 -1
  162. package/lib/types/internal/app-binder/EthAppBinder.d.ts +6 -0
  163. package/lib/types/internal/app-binder/EthAppBinder.d.ts.map +1 -1
  164. package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.d.ts +34 -0
  165. package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.d.ts.map +1 -0
  166. package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.test.d.ts +2 -0
  167. package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.test.d.ts.map +1 -0
  168. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts +7 -3
  169. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts.map +1 -1
  170. package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts +5 -0
  171. package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts.map +1 -1
  172. package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.d.ts +20 -0
  173. package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.d.ts.map +1 -0
  174. package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.d.ts +2 -0
  175. package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.d.ts.map +1 -0
  176. package/lib/types/internal/app-binder/task/BuildBaseContexts.d.ts +4 -6
  177. package/lib/types/internal/app-binder/task/BuildBaseContexts.d.ts.map +1 -1
  178. package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts +3 -3
  179. package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts.map +1 -1
  180. package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.d.ts +19 -0
  181. package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.d.ts.map +1 -0
  182. package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.test.d.ts +2 -0
  183. package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.test.d.ts.map +1 -0
  184. package/lib/types/internal/app-binder/task/BuildSubcontextsTask.d.ts.map +1 -1
  185. package/lib/types/internal/app-binder/task/ProvideContextTask.d.ts +22 -0
  186. package/lib/types/internal/app-binder/task/ProvideContextTask.d.ts.map +1 -0
  187. package/lib/types/internal/app-binder/task/ProvideContextTask.test.d.ts +2 -0
  188. package/lib/types/internal/app-binder/task/ProvideContextTask.test.d.ts.map +1 -0
  189. package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts +4 -4
  190. package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts.map +1 -1
  191. package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.d.ts +36 -0
  192. package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.d.ts.map +1 -0
  193. package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.test.d.ts +2 -0
  194. package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.test.d.ts.map +1 -0
  195. package/lib/types/internal/di.d.ts.map +1 -1
  196. package/lib/types/internal/safe/di/safeModule.d.ts +3 -0
  197. package/lib/types/internal/safe/di/safeModule.d.ts.map +1 -0
  198. package/lib/types/internal/safe/di/safeModule.test.d.ts +2 -0
  199. package/lib/types/internal/safe/di/safeModule.test.d.ts.map +1 -0
  200. package/lib/types/internal/safe/di/safeTypes.d.ts +4 -0
  201. package/lib/types/internal/safe/di/safeTypes.d.ts.map +1 -0
  202. package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.d.ts +9 -0
  203. package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.d.ts.map +1 -0
  204. package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.test.d.ts +2 -0
  205. package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.test.d.ts.map +1 -0
  206. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  207. package/package.json +5 -5
  208. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js +0 -2
  209. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js.map +0 -7
  210. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js +0 -2
  211. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js.map +0 -7
  212. package/lib/cjs/internal/app-binder/task/ProvideContextsTask.js +0 -2
  213. package/lib/cjs/internal/app-binder/task/ProvideContextsTask.js.map +0 -7
  214. package/lib/cjs/internal/app-binder/task/ProvideContextsTask.test.js +0 -2
  215. package/lib/cjs/internal/app-binder/task/ProvideContextsTask.test.js.map +0 -7
  216. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js +0 -2
  217. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js.map +0 -7
  218. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js +0 -2
  219. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js.map +0 -7
  220. package/lib/esm/internal/app-binder/task/ProvideContextsTask.js +0 -2
  221. package/lib/esm/internal/app-binder/task/ProvideContextsTask.js.map +0 -7
  222. package/lib/esm/internal/app-binder/task/ProvideContextsTask.test.js +0 -2
  223. package/lib/esm/internal/app-binder/task/ProvideContextsTask.test.js.map +0 -7
  224. package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts +0 -29
  225. package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts.map +0 -1
  226. package/lib/types/internal/app-binder/task/GetWeb3CheckTask.test.d.ts +0 -2
  227. package/lib/types/internal/app-binder/task/GetWeb3CheckTask.test.d.ts.map +0 -1
  228. package/lib/types/internal/app-binder/task/ProvideContextsTask.d.ts +0 -44
  229. package/lib/types/internal/app-binder/task/ProvideContextsTask.d.ts.map +0 -1
  230. package/lib/types/internal/app-binder/task/ProvideContextsTask.test.d.ts +0 -2
  231. package/lib/types/internal/app-binder/task/ProvideContextsTask.test.d.ts.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/device-signer-kit-ethereum",
3
- "version": "1.8.0",
3
+ "version": "1.9.1",
4
4
  "private": false,
5
5
  "license": "Apache-2.0",
6
6
  "exports": {
@@ -31,17 +31,17 @@
31
31
  "@types/semver": "7.7.0",
32
32
  "rxjs": "7.8.2",
33
33
  "ts-node": "10.9.2",
34
- "@ledgerhq/context-module": "1.8.0",
35
- "@ledgerhq/device-management-kit": "0.9.0",
36
34
  "@ledgerhq/ldmk-tool": "0.0.1",
35
+ "@ledgerhq/context-module": "1.10.0",
37
36
  "@ledgerhq/eslint-config-dsdk": "0.0.2",
37
+ "@ledgerhq/device-management-kit": "0.10.0",
38
38
  "@ledgerhq/prettier-config-dsdk": "0.0.2",
39
39
  "@ledgerhq/tsconfig-dsdk": "1.0.1",
40
40
  "@ledgerhq/vitest-config-dmk": "0.0.0"
41
41
  },
42
42
  "peerDependencies": {
43
- "@ledgerhq/device-management-kit": "^0.9.0",
44
- "@ledgerhq/context-module": "1.8.0"
43
+ "@ledgerhq/context-module": "1.10.0",
44
+ "@ledgerhq/device-management-kit": "0.10.0"
45
45
  },
46
46
  "scripts": {
47
47
  "prebuild": "rimraf lib",
@@ -1,2 +0,0 @@
1
- "use strict";var c=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var u=(t,e)=>{for(var a in e)c(t,a,{get:e[a],enumerable:!0})},b=(t,e,a,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of p(e))!y.call(t,r)&&r!==a&&c(t,r,{get:()=>e[r],enumerable:!(s=k(e,r))||s.enumerable});return t};var g=t=>b(c({},"__esModule",{value:!0}),t);var T={};u(T,{GetWeb3CheckTask:()=>x});module.exports=g(T);var C=require("@ledgerhq/context-module"),o=require("@ledgerhq/device-management-kit"),d=require("../../app-binder/command/GetAddressCommand");class x{constructor(e,a){this.api=e;this.args=a}async run(){const e=await this.api.sendCommand(new d.GetAddressCommand({derivationPath:this.args.derivationPath,checkOnDevice:!1,returnChainCode:!1}));if(!(0,o.isSuccessCommandResult)(e))return{web3Check:null,error:e.error};const a=e.data.address,{deviceModelId:s}=this.api.getDeviceSessionState(),{contextModule:r}=this.args;let n;if(this.isRawTx(this.args)){const{subset:i,transaction:l}=this.args,h={deviceModelId:s,from:a,rawTx:(0,o.bufferToHexaString)(l),chainId:i.chainId};n=await r.getWeb3Checks(h)}else{const i={deviceModelId:s,from:a,data:this.args.data};n=await r.getWeb3Checks(i)}return n===null||n?.type!==C.ClearSignContextType.WEB3_CHECK?{web3Check:null}:{web3Check:n}}isRawTx(e){return"transaction"in e}}0&&(module.exports={GetWeb3CheckTask});
2
- //# sourceMappingURL=GetWeb3CheckTask.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../src/internal/app-binder/task/GetWeb3CheckTask.ts"],
4
- "sourcesContent": ["import {\n type ClearSignContext,\n type ClearSignContextSuccess,\n ClearSignContextType,\n type ContextModule,\n type TransactionSubset,\n type Web3CheckContext,\n} from \"@ledgerhq/context-module\";\nimport {\n bufferToHexaString,\n type DmkError,\n type InternalApi,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type TypedData } from \"@api/model/TypedData\";\nimport { GetAddressCommand } from \"@internal/app-binder/command/GetAddressCommand\";\n\nexport type GetWeb3CheckTaskResult =\n | {\n readonly web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> | null;\n }\n | {\n readonly web3Check: null;\n error: DmkError;\n };\n\nexport type GetWeb3CheckTypedDataTaskArgs = {\n readonly contextModule: ContextModule;\n readonly derivationPath: string;\n readonly data: TypedData;\n};\nexport type GetWeb3CheckRawTxTaskArgs = {\n readonly contextModule: ContextModule;\n readonly derivationPath: string;\n readonly subset: TransactionSubset;\n readonly transaction: Uint8Array;\n};\nexport type GetWeb3CheckTaskArgs =\n | GetWeb3CheckTypedDataTaskArgs\n | GetWeb3CheckRawTxTaskArgs;\n\nexport class GetWeb3CheckTask {\n constructor(\n private readonly api: InternalApi,\n private readonly args: GetWeb3CheckTaskArgs,\n ) {}\n\n async run(): Promise<GetWeb3CheckTaskResult> {\n // Get sender address\n const getAddressResult = await this.api.sendCommand(\n new GetAddressCommand({\n derivationPath: this.args.derivationPath,\n checkOnDevice: false,\n returnChainCode: false,\n }),\n );\n if (!isSuccessCommandResult(getAddressResult)) {\n return {\n web3Check: null,\n error: getAddressResult.error,\n };\n }\n\n const address = getAddressResult.data.address;\n const { deviceModelId } = this.api.getDeviceSessionState();\n const { contextModule } = this.args;\n let web3CheckContext: ClearSignContext | null;\n\n if (this.isRawTx(this.args)) {\n // Transaction simulation\n const { subset, transaction } = this.args;\n const web3Params: Web3CheckContext = {\n deviceModelId,\n from: address,\n rawTx: bufferToHexaString(transaction),\n chainId: subset.chainId,\n };\n web3CheckContext = await contextModule.getWeb3Checks(web3Params);\n } else {\n // Typed data simulation\n const web3Params: Web3CheckContext = {\n deviceModelId,\n from: address,\n data: this.args.data,\n };\n web3CheckContext = await contextModule.getWeb3Checks(web3Params);\n }\n\n if (\n web3CheckContext === null ||\n web3CheckContext?.type !== ClearSignContextType.WEB3_CHECK\n ) {\n return {\n web3Check: null,\n };\n }\n\n return {\n web3Check: web3CheckContext,\n };\n }\n\n private isRawTx(\n args: GetWeb3CheckTaskArgs,\n ): args is GetWeb3CheckRawTxTaskArgs {\n return \"transaction\" in args;\n }\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAOO,oCACPC,EAKO,2CAGPC,EAAkC,0DA0B3B,MAAMJ,CAAiB,CAC5B,YACmBK,EACAC,EACjB,CAFiB,SAAAD,EACA,UAAAC,CAChB,CAEH,MAAM,KAAuC,CAE3C,MAAMC,EAAmB,MAAM,KAAK,IAAI,YACtC,IAAI,oBAAkB,CACpB,eAAgB,KAAK,KAAK,eAC1B,cAAe,GACf,gBAAiB,EACnB,CAAC,CACH,EACA,GAAI,IAAC,0BAAuBA,CAAgB,EAC1C,MAAO,CACL,UAAW,KACX,MAAOA,EAAiB,KAC1B,EAGF,MAAMC,EAAUD,EAAiB,KAAK,QAChC,CAAE,cAAAE,CAAc,EAAI,KAAK,IAAI,sBAAsB,EACnD,CAAE,cAAAC,CAAc,EAAI,KAAK,KAC/B,IAAIC,EAEJ,GAAI,KAAK,QAAQ,KAAK,IAAI,EAAG,CAE3B,KAAM,CAAE,OAAAC,EAAQ,YAAAC,CAAY,EAAI,KAAK,KAC/BC,EAA+B,CACnC,cAAAL,EACA,KAAMD,EACN,SAAO,sBAAmBK,CAAW,EACrC,QAASD,EAAO,OAClB,EACAD,EAAmB,MAAMD,EAAc,cAAcI,CAAU,CACjE,KAAO,CAEL,MAAMA,EAA+B,CACnC,cAAAL,EACA,KAAMD,EACN,KAAM,KAAK,KAAK,IAClB,EACAG,EAAmB,MAAMD,EAAc,cAAcI,CAAU,CACjE,CAEA,OACEH,IAAqB,MACrBA,GAAkB,OAAS,uBAAqB,WAEzC,CACL,UAAW,IACb,EAGK,CACL,UAAWA,CACb,CACF,CAEQ,QACNL,EACmC,CACnC,MAAO,gBAAiBA,CAC1B,CACF",
6
- "names": ["GetWeb3CheckTask_exports", "__export", "GetWeb3CheckTask", "__toCommonJS", "import_context_module", "import_device_management_kit", "import_GetAddressCommand", "api", "args", "getAddressResult", "address", "deviceModelId", "contextModule", "web3CheckContext", "subset", "transaction", "web3Params"]
7
- }
@@ -1,2 +0,0 @@
1
- "use strict";var e=require("@ledgerhq/device-management-kit"),l=require("../../app-binder/device-action/__test-utils__/makeInternalApi"),n=require("../../app-binder/task/GetWeb3CheckTask");describe("GetWeb3CheckTask",()=>{const t=(0,l.makeDeviceActionInternalApiMock)(),o={getWeb3Checks:vi.fn()},d=new Uint8Array([1,2,3,4]),a="44'/60'/0'/0/0",c={chainId:15,to:"to",data:"0x060708090A",selector:"0x06070809",value:0n};describe("run",()=>{beforeEach(()=>{vi.clearAllMocks(),t.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.16.0"},deviceModelId:e.DeviceModelId.FLEX,isSecureConnectionAllowed:!0})}),describe("errors",()=>{it("should return a context error if GetAddressCommand assert.fails",async()=>{t.sendCommand.mockResolvedValueOnce((0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("error")}));const s=await new n.GetWeb3CheckTask(t,{contextModule:o,subset:c,transaction:d,derivationPath:a}).run();expect(s).toEqual({web3Check:null,error:new e.InvalidStatusWordError("error")})}),it("should return null if the type is not a ClearSignContextSuccess web3check",async()=>{t.sendCommand.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{address:"address"}})),o.getWeb3Checks.mockResolvedValue({type:"invalid-type",id:1});const s=await new n.GetWeb3CheckTask(t,{contextModule:o,subset:c,transaction:d,derivationPath:a}).run();expect(s).toEqual({web3Check:null})})}),describe("success",()=>{it("should return null if the context module does not have a web3 check",async()=>{t.sendCommand.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{address:"address"}})),o.getWeb3Checks.mockResolvedValue(null);const s=await new n.GetWeb3CheckTask(t,{contextModule:o,subset:c,transaction:d,derivationPath:a}).run();expect(s).toEqual({web3Check:null})}),it("should return a web3 check",async()=>{const s={type:"web3Check",id:1};t.sendCommand.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{address:"address"}})),o.getWeb3Checks.mockResolvedValue(s);const r=await new n.GetWeb3CheckTask(t,{contextModule:o,subset:c,transaction:d,derivationPath:a}).run();expect(r).toEqual({web3Check:s})}),it("should return a web3 check for typed data",async()=>{const s={type:"web3Check",id:1};t.sendCommand.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{address:"address"}})),o.getWeb3Checks.mockResolvedValue(s);const r=await new n.GetWeb3CheckTask(t,{contextModule:o,data:"typed data",derivationPath:a}).run();expect(r).toEqual({web3Check:s})}),it("should call the context module with the right parameters",async()=>{t.sendCommand.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{address:"address"}})),o.getWeb3Checks.mockResolvedValue(null),await new n.GetWeb3CheckTask(t,{contextModule:o,subset:c,transaction:d,derivationPath:a}).run(),expect(o.getWeb3Checks).toHaveBeenCalledWith({deviceModelId:e.DeviceModelId.FLEX,from:"address",rawTx:"0x01020304",chainId:15})})})})});
2
- //# sourceMappingURL=GetWeb3CheckTask.test.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../src/internal/app-binder/task/GetWeb3CheckTask.test.ts"],
4
- "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n CommandResultFactory,\n DeviceModelId,\n DeviceSessionStateType,\n DeviceStatus,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type TypedData } from \"@api/model/TypedData\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport { GetWeb3CheckTask } from \"@internal/app-binder/task/GetWeb3CheckTask\";\n\ndescribe(\"GetWeb3CheckTask\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const contextModuleMock = {\n getWeb3Checks: vi.fn(),\n };\n const transaction = new Uint8Array([0x01, 0x02, 0x03, 0x04]);\n const derivationPath = \"44'/60'/0'/0/0\";\n const defaultSubset = {\n chainId: 15,\n to: \"to\",\n data: \"0x060708090A\",\n selector: \"0x06070809\",\n value: 0n,\n };\n\n describe(\"run\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.16.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: true,\n });\n });\n\n describe(\"errors\", () => {\n it(\"should return a context error if GetAddressCommand assert.fails\", async () => {\n // GIVEN\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({ error: new InvalidStatusWordError(\"error\") }),\n );\n\n // WHEN\n const result = await new GetWeb3CheckTask(apiMock, {\n contextModule: contextModuleMock as unknown as ContextModule,\n subset: defaultSubset,\n transaction,\n derivationPath,\n }).run();\n\n // THEN\n expect(result).toEqual({\n web3Check: null,\n error: new InvalidStatusWordError(\"error\"),\n });\n });\n\n it(\"should return null if the type is not a ClearSignContextSuccess web3check\", async () => {\n // GIVEN\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({ data: { address: \"address\" } }),\n );\n contextModuleMock.getWeb3Checks.mockResolvedValue({\n type: \"invalid-type\",\n id: 1,\n });\n\n // WHEN\n const result = await new GetWeb3CheckTask(apiMock, {\n contextModule: contextModuleMock as unknown as ContextModule,\n subset: defaultSubset,\n transaction,\n derivationPath,\n }).run();\n\n // THEN\n expect(result).toEqual({\n web3Check: null,\n });\n });\n });\n\n describe(\"success\", () => {\n it(\"should return null if the context module does not have a web3 check\", async () => {\n // GIVEN\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({ data: { address: \"address\" } }),\n );\n contextModuleMock.getWeb3Checks.mockResolvedValue(null);\n\n // WHEN\n const result = await new GetWeb3CheckTask(apiMock, {\n contextModule: contextModuleMock as unknown as ContextModule,\n subset: defaultSubset,\n transaction,\n derivationPath,\n }).run();\n\n // THEN\n expect(result).toEqual({\n web3Check: null,\n });\n });\n\n it(\"should return a web3 check\", async () => {\n // GIVEN\n const web3Check = { type: \"web3Check\", id: 1 };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({ data: { address: \"address\" } }),\n );\n contextModuleMock.getWeb3Checks.mockResolvedValue(web3Check);\n\n // WHEN\n const result = await new GetWeb3CheckTask(apiMock, {\n contextModule: contextModuleMock as unknown as ContextModule,\n subset: defaultSubset,\n transaction,\n derivationPath,\n }).run();\n\n // THEN\n expect(result).toEqual({\n web3Check,\n });\n });\n\n it(\"should return a web3 check for typed data\", async () => {\n // GIVEN\n const web3Check = { type: \"web3Check\", id: 1 };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({ data: { address: \"address\" } }),\n );\n contextModuleMock.getWeb3Checks.mockResolvedValue(web3Check);\n\n // WHEN\n const result = await new GetWeb3CheckTask(apiMock, {\n contextModule: contextModuleMock as unknown as ContextModule,\n data: \"typed data\" as unknown as TypedData,\n derivationPath,\n }).run();\n\n // THEN\n expect(result).toEqual({\n web3Check,\n });\n });\n\n it(\"should call the context module with the right parameters\", async () => {\n // GIVEN\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({ data: { address: \"address\" } }),\n );\n contextModuleMock.getWeb3Checks.mockResolvedValue(null);\n\n // WHEN\n await new GetWeb3CheckTask(apiMock, {\n contextModule: contextModuleMock as unknown as ContextModule,\n subset: defaultSubset,\n transaction,\n derivationPath,\n }).run();\n\n // THEN\n expect(contextModuleMock.getWeb3Checks).toHaveBeenCalledWith({\n deviceModelId: DeviceModelId.FLEX,\n from: \"address\",\n rawTx: \"0x01020304\",\n chainId: 15,\n });\n });\n });\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["import_device_management_kit", "import_makeInternalApi", "import_GetWeb3CheckTask", "apiMock", "contextModuleMock", "transaction", "derivationPath", "defaultSubset", "result", "web3Check"]
7
- }
@@ -1,2 +0,0 @@
1
- "use strict";var c=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var R=Object.prototype.hasOwnProperty;var A=(d,a)=>{for(var n in a)c(d,n,{get:a[n],enumerable:!0})},S=(d,a,n,s)=>{if(a&&typeof a=="object"||typeof a=="function")for(let t of x(a))!R.call(d,t)&&t!==n&&c(d,t,{get:()=>a[t],enumerable:!(s=E(a,t))||s.enumerable});return d};var D=d=>S(c({},"__esModule",{value:!0}),d);var g={};A(g,{ProvideContextsTask:()=>O});module.exports=D(g);var r=require("@ledgerhq/context-module"),i=require("@ledgerhq/device-management-kit"),h=require("@ledgerhq/signer-utils"),C=require("purify-ts"),k=require("../../app-binder/command/ProvideEnumCommand"),u=require("../../app-binder/command/ProvideNetworkConfigurationCommand"),p=require("../../app-binder/command/ProvideNFTInformationCommand"),T=require("../../app-binder/command/ProvideProxyInfoCommand"),y=require("../../app-binder/command/ProvideTokenInformationCommand"),f=require("../../app-binder/command/ProvideTransactionFieldDescriptionCommand"),I=require("../../app-binder/command/ProvideTransactionInformationCommand"),F=require("../../app-binder/command/ProvideTrustedNameCommand"),l=require("../../app-binder/command/ProvideWeb3CheckCommand"),_=require("../../app-binder/command/SetExternalPluginCommand"),P=require("../../app-binder/command/SetPluginCommand"),w=require("../../app-binder/command/StoreTransactionCommand"),v=require("./SendCommandInChunksTask"),N=require("./SendPayloadInChunksTask");class O{constructor(a,n,s=(o,e)=>new N.SendPayloadInChunksTask(o,e),t=(o,e)=>new v.SendCommandInChunksTask(o,e)){this._api=a;this._args=n;this._sendPayloadInChunksTaskFactory=s;this._sendCommandInChunksTaskFactory=t}async run(){let a=!1;for(const{context:n,subcontextCallbacks:s}of this._args.contexts){for(const o of s){const e=await o();if(e.type===r.ClearSignContextType.ERROR)continue;const m=await this.provideContext(e);if(!(0,i.isSuccessCommandResult)(m))return(0,C.Left)(m)}if(n.type===r.ClearSignContextType.PROXY_INFO)continue;if(!a&&this._args.serializedTransaction!==void 0&&n.type===r.ClearSignContextType.TRANSACTION_INFO){a=!0;const o=h.DerivationPathUtils.splitPath(this._args.derivationPath),e=new i.ByteArrayBuilder;e.add8BitUIntToData(o.length),o.forEach(m=>{e.add32BitUIntToData(m)}),e.addBufferToData(this._args.serializedTransaction),await this._sendCommandInChunksTaskFactory(this._api,{data:e.build(),commandFactory:m=>new w.StoreTransactionCommand({serializedTransaction:m.chunkedData,isFirstChunk:m.isFirstChunk})}).run()}const t=await this.provideContext(n);if(!(0,i.isSuccessCommandResult)(t))return(0,C.Left)(t)}return(0,C.Right)(void 0)}async provideContext({type:a,payload:n,certificate:s}){switch(s&&await this._api.sendCommand(new i.LoadCertificateCommand({keyUsage:s.keyUsageNumber,certificate:s.payload})),a){case r.ClearSignContextType.PLUGIN:return await this._api.sendCommand(new P.SetPluginCommand({payload:n}));case r.ClearSignContextType.EXTERNAL_PLUGIN:return await this._api.sendCommand(new _.SetExternalPluginCommand({payload:n}));case r.ClearSignContextType.NFT:return await this._api.sendCommand(new p.ProvideNFTInformationCommand({payload:n}));case r.ClearSignContextType.TOKEN:return await this._api.sendCommand(new y.ProvideTokenInformationCommand({payload:n}));case r.ClearSignContextType.TRANSACTION_INFO:return await this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:o=>new I.ProvideTransactionInformationCommand({data:o.chunkedData,isFirstChunk:o.isFirstChunk})}).run();case r.ClearSignContextType.TRUSTED_NAME:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new F.ProvideTrustedNameCommand({data:t.chunkedData,isFirstChunk:t.isFirstChunk})}).run();case r.ClearSignContextType.ENUM:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new k.ProvideEnumCommand({data:t.chunkedData,isFirstChunk:t.isFirstChunk})}).run();case r.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new f.ProvideTransactionFieldDescriptionCommand({data:t.chunkedData,isFirstChunk:t.isFirstChunk})}).run();case r.ClearSignContextType.WEB3_CHECK:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new l.ProvideWeb3CheckCommand({payload:t.chunkedData,isFirstChunk:t.isFirstChunk})}).run();case r.ClearSignContextType.PROXY_INFO:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new T.ProvideProxyInfoCommand({data:t.chunkedData,isFirstChunk:t.isFirstChunk})}).run();case r.ClearSignContextType.DYNAMIC_NETWORK:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new u.ProvideNetworkConfigurationCommand({data:t.chunkedData,isFirstChunk:t.isFirstChunk,configurationType:u.NetworkConfigurationType.CONFIGURATION})}).run();case r.ClearSignContextType.DYNAMIC_NETWORK_ICON:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new u.ProvideNetworkConfigurationCommand({data:t.chunkedData,isFirstChunk:t.isFirstChunk,configurationType:u.NetworkConfigurationType.ICON}),withPayloadLength:!1}).run();default:{const t=a;return(0,i.CommandResultFactory)({error:new i.InvalidStatusWordError(`The context type [${t}] is not covered`)})}}}}0&&(module.exports={ProvideContextsTask});
2
- //# sourceMappingURL=ProvideContextsTask.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../src/internal/app-binder/task/ProvideContextsTask.ts"],
4
- "sourcesContent": ["import {\n type ClearSignContextSuccess,\n ClearSignContextType,\n} from \"@ledgerhq/context-module\";\nimport {\n ByteArrayBuilder,\n type CommandErrorResult,\n type CommandResult,\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n isSuccessCommandResult,\n LoadCertificateCommand,\n} from \"@ledgerhq/device-management-kit\";\nimport { DerivationPathUtils } from \"@ledgerhq/signer-utils\";\nimport { type Either, Left, Right } from \"purify-ts\";\n\nimport { ProvideEnumCommand } from \"@internal/app-binder/command/ProvideEnumCommand\";\nimport {\n NetworkConfigurationType,\n ProvideNetworkConfigurationCommand,\n} from \"@internal/app-binder/command/ProvideNetworkConfigurationCommand\";\nimport { ProvideNFTInformationCommand } from \"@internal/app-binder/command/ProvideNFTInformationCommand\";\nimport { ProvideProxyInfoCommand } from \"@internal/app-binder/command/ProvideProxyInfoCommand\";\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\nimport { ProvideTransactionFieldDescriptionCommand } from \"@internal/app-binder/command/ProvideTransactionFieldDescriptionCommand\";\nimport { ProvideTransactionInformationCommand } from \"@internal/app-binder/command/ProvideTransactionInformationCommand\";\nimport { ProvideTrustedNameCommand } from \"@internal/app-binder/command/ProvideTrustedNameCommand\";\nimport { ProvideWeb3CheckCommand } from \"@internal/app-binder/command/ProvideWeb3CheckCommand\";\nimport { SetExternalPluginCommand } from \"@internal/app-binder/command/SetExternalPluginCommand\";\nimport { SetPluginCommand } from \"@internal/app-binder/command/SetPluginCommand\";\nimport { StoreTransactionCommand } from \"@internal/app-binder/command/StoreTransactionCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\n\nimport { type ContextWithSubContexts } from \"./BuildFullContextsTask\";\nimport {\n SendCommandInChunksTask,\n type SendCommandInChunksTaskArgs,\n} from \"./SendCommandInChunksTask\";\nimport {\n SendPayloadInChunksTask,\n type SendPayloadInChunksTaskArgs,\n} from \"./SendPayloadInChunksTask\";\n\nexport type ProvideContextsTaskArgs = {\n /**\n * The list of clear sign context with subcontexts callback to provide.\n */\n contexts: ContextWithSubContexts[];\n /**\n * The derivation path to provide.\n */\n derivationPath: string;\n /**\n * The serialized transaction to provide.\n * This parameter is optional in the case there is no transaction at all, for instance\n * if there is only a standalone calldata embedded in a message.\n */\n serializedTransaction?: Uint8Array;\n};\n\nexport type ProvideContextsTaskResult = Either<\n CommandErrorResult<EthErrorCodes>,\n void\n>;\n\n/**\n * This task is responsible for providing the transaction context to the device.\n * It will send the subcontexts callbacks in order and finish with the context.\n */\nexport class ProvideContextsTask {\n constructor(\n private _api: InternalApi,\n private _args: ProvideContextsTaskArgs,\n private _sendPayloadInChunksTaskFactory = (\n api: InternalApi,\n args: SendPayloadInChunksTaskArgs<unknown>,\n ) => new SendPayloadInChunksTask(api, args),\n private _sendCommandInChunksTaskFactory = (\n api: InternalApi,\n args: SendCommandInChunksTaskArgs<unknown>,\n ) => new SendCommandInChunksTask(api, args),\n ) {}\n\n async run(): Promise<ProvideContextsTaskResult> {\n let transactionInfoProvided = false;\n\n for (const { context, subcontextCallbacks } of this._args.contexts) {\n for (const callback of subcontextCallbacks) {\n const subcontext = await callback();\n\n if (subcontext.type === ClearSignContextType.ERROR) {\n // silently ignore error subcontexts\n continue;\n }\n\n const res = await this.provideContext(subcontext);\n if (!isSuccessCommandResult(res)) {\n return Left(res);\n }\n }\n\n if (context.type === ClearSignContextType.PROXY_INFO) {\n // In this specific case, the context is not valid as the challenge is not valid on the first call\n // the real data is provided in the subcontext callback\n continue;\n }\n\n if (\n !transactionInfoProvided &&\n this._args.serializedTransaction !== undefined &&\n context.type === ClearSignContextType.TRANSACTION_INFO\n ) {\n // Send the serialized transaction for the first TRANSACTION_INFO.\n // All other TRANSACTION_INFO contexts will be ignored as it will be for nested calldata.\n transactionInfoProvided = true;\n\n const paths = DerivationPathUtils.splitPath(this._args.derivationPath);\n const builder = new ByteArrayBuilder();\n builder.add8BitUIntToData(paths.length);\n paths.forEach((path) => {\n builder.add32BitUIntToData(path);\n });\n builder.addBufferToData(this._args.serializedTransaction);\n await this._sendCommandInChunksTaskFactory(this._api, {\n data: builder.build(),\n commandFactory: (args) =>\n new StoreTransactionCommand({\n serializedTransaction: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n }\n\n const res = await this.provideContext(context);\n if (!isSuccessCommandResult(res)) {\n return Left(res);\n }\n }\n\n return Right(void 0);\n }\n\n /**\n * This method will send the context to the device.\n *\n * @param context The clear sign context to provide.\n * @returns A promise that resolves when the command is sent.\n */\n async provideContext({\n type,\n payload,\n certificate,\n }: ClearSignContextSuccess): Promise<CommandResult<unknown, EthErrorCodes>> {\n // if a certificate is provided, we load it before sending the command\n if (certificate) {\n await this._api.sendCommand(\n new LoadCertificateCommand({\n keyUsage: certificate.keyUsageNumber,\n certificate: certificate.payload,\n }),\n );\n }\n\n switch (type) {\n case ClearSignContextType.PLUGIN: {\n return await this._api.sendCommand(new SetPluginCommand({ payload }));\n }\n case ClearSignContextType.EXTERNAL_PLUGIN: {\n return await this._api.sendCommand(\n new SetExternalPluginCommand({ payload }),\n );\n }\n case ClearSignContextType.NFT: {\n return await this._api.sendCommand(\n new ProvideNFTInformationCommand({ payload }),\n );\n }\n case ClearSignContextType.TOKEN: {\n return await this._api.sendCommand(\n new ProvideTokenInformationCommand({ payload }),\n );\n }\n case ClearSignContextType.TRANSACTION_INFO: {\n const transactionInfoResult =\n await this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideTransactionInformationCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n\n return transactionInfoResult;\n }\n case ClearSignContextType.TRUSTED_NAME: {\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideTrustedNameCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n }\n case ClearSignContextType.ENUM:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideEnumCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideTransactionFieldDescriptionCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.WEB3_CHECK:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideWeb3CheckCommand({\n payload: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.PROXY_INFO:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideProxyInfoCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.DYNAMIC_NETWORK:\n // Dynamic network configuration uses the existing ProvideNetworkConfiguration command\n // but is provided as part of the context flow\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideNetworkConfigurationCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n configurationType: NetworkConfigurationType.CONFIGURATION,\n }),\n }).run();\n case ClearSignContextType.DYNAMIC_NETWORK_ICON: {\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideNetworkConfigurationCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n configurationType: NetworkConfigurationType.ICON,\n }),\n withPayloadLength: false,\n }).run();\n }\n default: {\n const uncoveredType: never = type;\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n `The context type [${uncoveredType}] is not covered`,\n ),\n });\n }\n }\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["ProvideContextsTask_exports", "__export", "ProvideContextsTask", "__toCommonJS", "import_context_module", "import_device_management_kit", "import_signer_utils", "import_purify_ts", "import_ProvideEnumCommand", "import_ProvideNetworkConfigurationCommand", "import_ProvideNFTInformationCommand", "import_ProvideProxyInfoCommand", "import_ProvideTokenInformationCommand", "import_ProvideTransactionFieldDescriptionCommand", "import_ProvideTransactionInformationCommand", "import_ProvideTrustedNameCommand", "import_ProvideWeb3CheckCommand", "import_SetExternalPluginCommand", "import_SetPluginCommand", "import_StoreTransactionCommand", "import_SendCommandInChunksTask", "import_SendPayloadInChunksTask", "_api", "_args", "_sendPayloadInChunksTaskFactory", "api", "args", "_sendCommandInChunksTaskFactory", "transactionInfoProvided", "context", "subcontextCallbacks", "callback", "subcontext", "res", "paths", "builder", "path", "type", "payload", "certificate", "uncoveredType"]
7
- }
@@ -1,2 +0,0 @@
1
- "use strict";var a=require("@ledgerhq/context-module"),x=require("@ledgerhq/device-management-kit"),m=require("purify-ts"),E=require("../../app-binder/command/ProvideEnumCommand"),F=require("../../app-binder/command/ProvideNetworkConfigurationCommand"),f=require("../../app-binder/command/ProvideNFTInformationCommand"),b=require("../../app-binder/command/ProvideProxyInfoCommand"),h=require("../../app-binder/command/ProvideTokenInformationCommand"),A=require("../../app-binder/command/ProvideTransactionFieldDescriptionCommand"),P=require("../../app-binder/command/ProvideTransactionInformationCommand"),N=require("../../app-binder/command/ProvideTrustedNameCommand"),B=require("../../app-binder/command/ProvideWeb3CheckCommand"),R=require("../../app-binder/command/SetExternalPluginCommand"),g=require("../../app-binder/command/SetPluginCommand"),w=require("../../app-binder/command/StoreTransactionCommand"),O=require("../../app-binder/device-action/__test-utils__/makeInternalApi"),i=require("./ProvideContextsTask"),U=require("./SendCommandInChunksTask"),H=require("./SendPayloadInChunksTask");describe("ProvideContextsTask",()=>{const e=(0,O.makeDeviceActionInternalApiMock)(),c=(0,x.CommandResultFactory)({data:void 0}),T=(0,x.CommandResultFactory)({data:void 0,error:{}});beforeEach(()=>{vi.resetAllMocks()}),describe("run",()=>{const o=vi.fn(),u=vi.fn(),r=vi.fn(),d=vi.fn();beforeEach(()=>{vi.clearAllMocks(),r.mockImplementation((t,s)=>({run:()=>u(t,s)})),d.mockImplementation((t,s)=>({run:()=>o(t,s)}))}),describe("with no subcontexts",()=>{it("should provide the transaction context for a TRANSACTION_INFO context",async()=>{const t={contexts:[{context:{type:a.ClearSignContextType.TRANSACTION_INFO,payload:"0x00",certificate:{keyUsageNumber:1,payload:new Uint8Array([1,2,3])}},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};u.mockResolvedValue(c),o.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const n=await new i.ProvideContextsTask(e,t,d,r).run();expect(n).toEqual((0,m.Right)(void 0)),expect(u).toHaveBeenCalledTimes(1),expect(r).toHaveBeenCalledWith(e,{data:new Uint8Array([5,128,0,0,44,128,0,0,60,128,0,0,0,0,0,0,0,0,0,0,0]),commandFactory:expect.any(Function)});const y=r.mock.calls[0][1].commandFactory,l={chunkedData:new Uint8Array([1,2,3,4]),isFirstChunk:!0},p=y(l);expect(p).toBeInstanceOf(w.StoreTransactionCommand),expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(e.sendCommand).toHaveBeenCalledWith(expect.any(x.LoadCertificateCommand)),expect(o).toHaveBeenCalledTimes(1),expect(o).toHaveBeenCalledWith(e,{payload:"0x00",commandFactory:expect.any(Function)});const k=o.mock.calls[0][1].commandFactory,v=k(l);expect(v).toBeInstanceOf(P.ProvideTransactionInformationCommand)}),it("should provide the transaction context for a TRANSACTION_INFO context without certificate",async()=>{const t={contexts:[{context:{type:a.ClearSignContextType.TRANSACTION_INFO,payload:"0x00"},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};u.mockResolvedValue(c),o.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const n=await new i.ProvideContextsTask(e,t,d,r).run();expect(n).toEqual((0,m.Right)(void 0)),expect(u).toHaveBeenCalledTimes(1),expect(r).toHaveBeenCalledWith(e,{data:new Uint8Array([5,128,0,0,44,128,0,0,60,128,0,0,0,0,0,0,0,0,0,0,0]),commandFactory:expect.any(Function)});const y=r.mock.calls[0][1].commandFactory,l={chunkedData:new Uint8Array([1,2,3,4]),isFirstChunk:!0},p=y(l);expect(p).toBeInstanceOf(w.StoreTransactionCommand),expect(e.sendCommand).toHaveBeenCalledTimes(0),expect(o).toHaveBeenCalledTimes(1),expect(o).toHaveBeenCalledWith(e,{payload:"0x00",commandFactory:expect.any(Function)});const k=o.mock.calls[0][1].commandFactory,v=k(l);expect(v).toBeInstanceOf(P.ProvideTransactionInformationCommand)}),it.each([[a.ClearSignContextType.PLUGIN,g.SetPluginCommand],[a.ClearSignContextType.EXTERNAL_PLUGIN,R.SetExternalPluginCommand],[a.ClearSignContextType.NFT,f.ProvideNFTInformationCommand],[a.ClearSignContextType.TOKEN,h.ProvideTokenInformationCommand]])("should provide the transaction context by calling sendCommand for a %s context",async(t,s)=>{const n={contexts:[{context:{type:t,payload:"payload"},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};e.sendCommand.mockResolvedValue(c);const y=await new i.ProvideContextsTask(e,n,d,r).run();expect(y).toEqual((0,m.Right)(void 0)),expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(e.sendCommand).toHaveBeenCalledWith(expect.any(s))}),it.each([[a.ClearSignContextType.ENUM,E.ProvideEnumCommand],[a.ClearSignContextType.TRUSTED_NAME,N.ProvideTrustedNameCommand],[a.ClearSignContextType.WEB3_CHECK,B.ProvideWeb3CheckCommand],[a.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,A.ProvideTransactionFieldDescriptionCommand],[a.ClearSignContextType.DYNAMIC_NETWORK_ICON,F.ProvideNetworkConfigurationCommand,!1],[a.ClearSignContextType.DYNAMIC_NETWORK,F.ProvideNetworkConfigurationCommand]])("should provide the transaction context by calling sendPayloadInChunksTask for a %s context",async(t,s,n=void 0)=>{const C={contexts:[{context:{type:t,payload:"payload",id:1,value:1},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};o.mockResolvedValue(c);const l=await new i.ProvideContextsTask(e,C,d,r).run();expect(l).toEqual((0,m.Right)(void 0)),expect(o).toHaveBeenCalledTimes(1),n===void 0?expect(o).toHaveBeenCalledWith(e,{payload:"payload",commandFactory:expect.any(Function)}):expect(o).toHaveBeenCalledWith(e,{payload:"payload",commandFactory:expect.any(Function),withPayloadLength:n});const I=d.mock.calls[0][1].commandFactory,k={chunkedData:new Uint8Array([1,2,3]),isFirstChunk:!0},v=I(k);expect(v).toBeInstanceOf(s)}),it("should only provide the subcontexts if the context is a PROXY_INFO",async()=>{const t={contexts:[{context:{type:a.ClearSignContextType.PROXY_INFO,payload:"payload"},subcontextCallbacks:[()=>Promise.resolve({type:a.ClearSignContextType.PROXY_INFO,payload:"subcontext payload"})]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};o.mockResolvedValue(c);const n=await new i.ProvideContextsTask(e,t,d,r).run();expect(n).toEqual((0,m.Right)(void 0)),expect(o).toHaveBeenCalledTimes(1),expect(o).toHaveBeenCalledWith(e,{payload:"subcontext payload",commandFactory:expect.any(Function)});const y=d.mock.calls[0][1].commandFactory,l={chunkedData:new Uint8Array([1,2,3]),isFirstChunk:!0},p=y(l);expect(p).toBeInstanceOf(b.ProvideProxyInfoCommand)}),it("should skip the subcontexts if the context is an error",async()=>{const t={contexts:[{context:{type:a.ClearSignContextType.TOKEN,payload:"payload",certificate:{keyUsageNumber:1,payload:new Uint8Array([1,2,3])}},subcontextCallbacks:[()=>Promise.resolve({type:a.ClearSignContextType.ERROR,error:new Error("error")})]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};o.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const n=await new i.ProvideContextsTask(e,t,d,r).run();expect(n).toEqual((0,m.Right)(void 0)),expect(o).toHaveBeenCalledTimes(0),expect(u).toHaveBeenCalledTimes(0),expect(e.sendCommand).toHaveBeenCalledTimes(2),expect(e.sendCommand).toHaveBeenNthCalledWith(1,expect.any(x.LoadCertificateCommand)),expect(e.sendCommand).toHaveBeenNthCalledWith(2,expect.any(h.ProvideTokenInformationCommand))})}),describe("with subcontexts",()=>{it("should provide the transaction context and subcontext for a TRANSACTION_FIELD_DESCRIPTION context",async()=>{const t={contexts:[{context:{type:a.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload"},subcontextCallbacks:[()=>Promise.resolve({type:a.ClearSignContextType.TOKEN,payload:"payload"})]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};o.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const n=await new i.ProvideContextsTask(e,t,d,r).run();expect(n).toEqual((0,m.Right)(void 0)),expect(o).toHaveBeenCalledTimes(1),expect(o).toHaveBeenCalledWith(e,{payload:"payload",commandFactory:expect.any(Function)});const y=d.mock.calls[0][1].commandFactory,l={chunkedData:new Uint8Array([1,2,3]),isFirstChunk:!0},p=y(l);expect(p).toBeInstanceOf(A.ProvideTransactionFieldDescriptionCommand),expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(e.sendCommand).toHaveBeenCalledWith(expect.any(h.ProvideTokenInformationCommand))}),it("should provide the transaction context and subcontexts for a TRUSTED_NAME context",async()=>{const t={contexts:[{context:{type:a.ClearSignContextType.TRUSTED_NAME,payload:"payload"},subcontextCallbacks:[()=>Promise.resolve({type:a.ClearSignContextType.NFT,payload:"payload1"}),()=>Promise.resolve({type:a.ClearSignContextType.TOKEN,payload:"payload2"})]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};o.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const n=await new i.ProvideContextsTask(e,t,d,r).run();expect(n).toEqual((0,m.Right)(void 0)),expect(o).toHaveBeenCalledTimes(1),expect(o).toHaveBeenCalledWith(e,{payload:"payload",commandFactory:expect.any(Function)});const y=d.mock.calls[0][1].commandFactory,l={chunkedData:new Uint8Array([1,2,3]),isFirstChunk:!0},p=y(l);expect(p).toBeInstanceOf(N.ProvideTrustedNameCommand),expect(e.sendCommand).toHaveBeenCalledTimes(2),expect(e.sendCommand).toHaveBeenNthCalledWith(1,expect.any(f.ProvideNFTInformationCommand)),expect(e.sendCommand).toHaveBeenNthCalledWith(2,expect.any(h.ProvideTokenInformationCommand))})}),describe("with subcontexts and certificate",()=>{it("should provide the transaction context and subcontexts for a TRUSTED_NAME context",async()=>{const t={contexts:[{context:{type:a.ClearSignContextType.TRUSTED_NAME,payload:"payload",certificate:{keyUsageNumber:1,payload:new Uint8Array([1,2,3])}},subcontextCallbacks:[()=>Promise.resolve({type:a.ClearSignContextType.NFT,payload:"payload1",certificate:{keyUsageNumber:2,payload:new Uint8Array([4,5,6])}})]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};o.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c),await new i.ProvideContextsTask(e,t,d,r).run(),expect(e.sendCommand).toHaveBeenCalledTimes(3),expect(e.sendCommand).toHaveBeenNthCalledWith(1,expect.any(x.LoadCertificateCommand)),expect(e.sendCommand).toHaveBeenNthCalledWith(2,expect.any(f.ProvideNFTInformationCommand)),expect(e.sendCommand).toHaveBeenNthCalledWith(3,expect.any(x.LoadCertificateCommand))})}),describe("with error",()=>{it("should return an error if the provideContext fails",async()=>{const t={contexts:[{context:{type:a.ClearSignContextType.TOKEN,payload:"payload"},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};e.sendCommand.mockResolvedValue(T);const n=await new i.ProvideContextsTask(e,t,d,r).run();expect(n).toEqual((0,m.Left)(T))}),it("should return an error if the provide subcontext fails",async()=>{const t={contexts:[{context:{type:a.ClearSignContextType.TOKEN,payload:"payload"},subcontextCallbacks:[()=>Promise.resolve({type:a.ClearSignContextType.TOKEN,payload:"payload"})]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};e.sendCommand.mockResolvedValue(T);const n=await new i.ProvideContextsTask(e,t,d,r).run();expect(n).toEqual((0,m.Left)(T))}),it("should return an error if the type is not supported",async()=>{const t={contexts:[{context:{type:"unsupported",payload:"payload"},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"},n=await new i.ProvideContextsTask(e,t,d,r).run();expect(n).toEqual((0,m.Left)((0,x.CommandResultFactory)({error:new x.InvalidStatusWordError("The context type [unsupported] is not covered")})))})}),describe("factory types",()=>{it("should have a sendPayloadInChunksTaskFactory by default",()=>{const t=new i.ProvideContextsTask(e,{contexts:[{context:{type:a.ClearSignContextType.TOKEN,payload:"payload"},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"});expect(t._sendPayloadInChunksTaskFactory).toBeDefined();const s=t._sendPayloadInChunksTaskFactory(e,{payload:"payload",commandFactory:()=>new A.ProvideTransactionFieldDescriptionCommand({data:new Uint8Array,isFirstChunk:!0})});expect(s).toBeInstanceOf(H.SendPayloadInChunksTask)}),it("should have a sendCommandInChunksTaskFactory by default",()=>{const t=new i.ProvideContextsTask(e,{contexts:[{context:{type:a.ClearSignContextType.TOKEN,payload:"payload"},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"});expect(t._sendCommandInChunksTaskFactory).toBeDefined();const s=t._sendCommandInChunksTaskFactory(e,{data:new Uint8Array,commandFactory:()=>new w.StoreTransactionCommand({serializedTransaction:new Uint8Array,isFirstChunk:!0})});expect(s).toBeInstanceOf(U.SendCommandInChunksTask)})})})});
2
- //# sourceMappingURL=ProvideContextsTask.test.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../src/internal/app-binder/task/ProvideContextsTask.test.ts"],
4
- "sourcesContent": ["import { ClearSignContextType } from \"@ledgerhq/context-module\";\nimport {\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n LoadCertificateCommand,\n type UnknownDeviceExchangeError,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { ProvideEnumCommand } from \"@internal/app-binder/command/ProvideEnumCommand\";\nimport { ProvideNetworkConfigurationCommand } from \"@internal/app-binder/command/ProvideNetworkConfigurationCommand\";\nimport { ProvideNFTInformationCommand } from \"@internal/app-binder/command/ProvideNFTInformationCommand\";\nimport { ProvideProxyInfoCommand } from \"@internal/app-binder/command/ProvideProxyInfoCommand\";\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\nimport { ProvideTransactionFieldDescriptionCommand } from \"@internal/app-binder/command/ProvideTransactionFieldDescriptionCommand\";\nimport { ProvideTransactionInformationCommand } from \"@internal/app-binder/command/ProvideTransactionInformationCommand\";\nimport { ProvideTrustedNameCommand } from \"@internal/app-binder/command/ProvideTrustedNameCommand\";\nimport { ProvideWeb3CheckCommand } from \"@internal/app-binder/command/ProvideWeb3CheckCommand\";\nimport { SetExternalPluginCommand } from \"@internal/app-binder/command/SetExternalPluginCommand\";\nimport { SetPluginCommand } from \"@internal/app-binder/command/SetPluginCommand\";\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 ProvideContextsTask,\n type ProvideContextsTaskArgs,\n} from \"./ProvideContextsTask\";\nimport {\n SendCommandInChunksTask,\n type SendCommandInChunksTaskArgs,\n} from \"./SendCommandInChunksTask\";\nimport {\n SendPayloadInChunksTask,\n type SendPayloadInChunksTaskArgs,\n} from \"./SendPayloadInChunksTask\";\n\ndescribe(\"ProvideContextsTask\", () => {\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 sendPayloadInChunksRunMock = vi.fn();\n const sendCommandInChunksTaskRunMock = vi.fn();\n const sendCommandInChunksTaskMockFactory = vi.fn();\n const sendPayloadInChunksTaskMockFactory = vi.fn();\n\n beforeEach(() => {\n vi.clearAllMocks();\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 sendPayloadInChunksTaskMockFactory.mockImplementation(\n (a: InternalApi, args: SendPayloadInChunksTaskArgs<unknown>) =>\n ({\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n run: () => sendPayloadInChunksRunMock(a, args),\n }) as unknown as SendPayloadInChunksTask<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: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"0x00\",\n certificate: {\n keyUsageNumber: 1,\n payload: new Uint8Array([1, 2, 3]),\n },\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendCommandInChunksTaskRunMock.mockResolvedValue(successResult);\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n\n // StoreTransactionCommand\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 // arbitrary data to test the 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 // LoadCertificateCommand\n expect(api.sendCommand).toHaveBeenCalledTimes(1);\n expect(api.sendCommand).toHaveBeenCalledWith(\n expect.any(LoadCertificateCommand),\n );\n\n // ProvideTransactionInformationCommand\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"0x00\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n // Test that the commandFactory returns a ProvideTransactionInformationCommand\n const factoryCall2 = sendPayloadInChunksRunMock.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory2 = factoryCall2[1].commandFactory;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command2 = commandFactory2(mockArgs);\n expect(command2).toBeInstanceOf(ProvideTransactionInformationCommand);\n });\n\n it(\"should provide the transaction context for a TRANSACTION_INFO context without certificate\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\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 sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n\n // StoreTransactionCommand\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 // arbitrary data to test the 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 // LoadCertificateCommand\n expect(api.sendCommand).toHaveBeenCalledTimes(0);\n\n // ProvideTransactionInformationCommand\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"0x00\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n // Test that the commandFactory returns a ProvideTransactionInformationCommand\n const factoryCall2 = sendPayloadInChunksRunMock.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory2 = factoryCall2[1].commandFactory;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command2 = commandFactory2(mockArgs);\n expect(command2).toBeInstanceOf(ProvideTransactionInformationCommand);\n });\n\n it.each([\n [ClearSignContextType.PLUGIN, SetPluginCommand],\n [ClearSignContextType.EXTERNAL_PLUGIN, SetExternalPluginCommand],\n [ClearSignContextType.NFT, ProvideNFTInformationCommand],\n [ClearSignContextType.TOKEN, ProvideTokenInformationCommand],\n ] as const)(\n \"should provide the transaction context by calling sendCommand for a %s context\",\n async (contextType, commandClass) => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: contextType,\n payload: \"payload\",\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(api.sendCommand).toHaveBeenCalledTimes(1);\n expect(api.sendCommand).toHaveBeenCalledWith(\n expect.any(commandClass),\n );\n },\n );\n\n it.each([\n [ClearSignContextType.ENUM, ProvideEnumCommand],\n [ClearSignContextType.TRUSTED_NAME, ProvideTrustedNameCommand],\n [ClearSignContextType.WEB3_CHECK, ProvideWeb3CheckCommand],\n [\n ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n ProvideTransactionFieldDescriptionCommand,\n ],\n [\n ClearSignContextType.DYNAMIC_NETWORK_ICON,\n ProvideNetworkConfigurationCommand,\n false,\n ],\n [\n ClearSignContextType.DYNAMIC_NETWORK,\n ProvideNetworkConfigurationCommand,\n ],\n ] as const)(\n \"should provide the transaction context by calling sendPayloadInChunksTask for a %s context\",\n async (contextType, commandClass, withPayloadLength = undefined) => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: contextType,\n payload: \"payload\",\n id: 1,\n value: 1,\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n if (withPayloadLength === undefined) {\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n } else {\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n withPayloadLength,\n });\n }\n\n // Test that the commandFactory returns a commandClass\n const factoryCall = sendPayloadInChunksTaskMockFactory.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]),\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(commandClass);\n },\n );\n\n it(\"should only provide the subcontexts if the context is a PROXY_INFO\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\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 sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"subcontext payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n\n // Test that the commandFactory returns a commandClass\n const factoryCall = sendPayloadInChunksTaskMockFactory.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]),\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(ProvideProxyInfoCommand);\n });\n\n it(\"should skip the subcontexts if the context is an error\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n certificate: {\n keyUsageNumber: 1,\n payload: new Uint8Array([1, 2, 3]),\n },\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 sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(0);\n expect(sendCommandInChunksTaskRunMock).toHaveBeenCalledTimes(0);\n expect(api.sendCommand).toHaveBeenCalledTimes(2);\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 1,\n expect.any(LoadCertificateCommand),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 2,\n expect.any(ProvideTokenInformationCommand),\n );\n });\n });\n\n describe(\"with subcontexts\", () => {\n it(\"should provide the transaction context and subcontext for a TRANSACTION_FIELD_DESCRIPTION context\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload\",\n },\n subcontextCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n }),\n ],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n\n // Test that the commandFactory returns a commandClass\n const factoryCall = sendPayloadInChunksTaskMockFactory.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]),\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(\n ProvideTransactionFieldDescriptionCommand,\n );\n\n expect(api.sendCommand).toHaveBeenCalledTimes(1);\n expect(api.sendCommand).toHaveBeenCalledWith(\n expect.any(ProvideTokenInformationCommand),\n );\n });\n\n it(\"should provide the transaction context and subcontexts for a TRUSTED_NAME context\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TRUSTED_NAME,\n payload: \"payload\",\n },\n subcontextCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.NFT,\n payload: \"payload1\",\n }),\n\n () =>\n Promise.resolve({\n type: ClearSignContextType.TOKEN,\n payload: \"payload2\",\n }),\n ],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n\n // Test that the commandFactory returns a commandClass\n const factoryCall = sendPayloadInChunksTaskMockFactory.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]),\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(ProvideTrustedNameCommand);\n\n expect(api.sendCommand).toHaveBeenCalledTimes(2);\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 1,\n expect.any(ProvideNFTInformationCommand),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 2,\n expect.any(ProvideTokenInformationCommand),\n );\n });\n });\n\n describe(\"with subcontexts and certificate\", () => {\n it(\"should provide the transaction context and subcontexts for a TRUSTED_NAME context\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TRUSTED_NAME,\n payload: \"payload\",\n certificate: {\n keyUsageNumber: 1,\n payload: new Uint8Array([1, 2, 3]),\n },\n },\n subcontextCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.NFT,\n payload: \"payload1\",\n certificate: {\n keyUsageNumber: 2,\n payload: new Uint8Array([4, 5, 6]),\n },\n }),\n ],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n await task.run();\n\n // THEN\n expect(api.sendCommand).toHaveBeenCalledTimes(3);\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 1,\n expect.any(LoadCertificateCommand),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 2,\n expect.any(ProvideNFTInformationCommand),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 3,\n expect.any(LoadCertificateCommand),\n );\n });\n });\n\n describe(\"with error\", () => {\n it(\"should return an error if the provideContext fails\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\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 api.sendCommand.mockResolvedValue(errorResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Left(errorResult));\n });\n\n it(\"should return an error if the provide subcontext fails\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n }),\n ],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n api.sendCommand.mockResolvedValue(errorResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Left(errorResult));\n });\n\n it(\"should return an error if the type is not supported\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: \"unsupported\" as unknown as ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(\n Left(\n CommandResultFactory({\n error: new InvalidStatusWordError(\n `The context type [unsupported] is not covered`,\n ),\n }),\n ),\n );\n });\n });\n\n describe(\"factory types\", () => {\n it(\"should have a sendPayloadInChunksTaskFactory by default\", () => {\n // GIVEN\n const task = new ProvideContextsTask(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[\"_sendPayloadInChunksTaskFactory\"]).toBeDefined();\n const sendPayloadInChunksTask = task[\"_sendPayloadInChunksTaskFactory\"](\n api,\n {\n payload: \"payload\",\n commandFactory: () =>\n new ProvideTransactionFieldDescriptionCommand({\n data: new Uint8Array(),\n isFirstChunk: true,\n }),\n },\n );\n expect(sendPayloadInChunksTask).toBeInstanceOf(SendPayloadInChunksTask);\n });\n\n it(\"should have a sendCommandInChunksTaskFactory by default\", () => {\n // GIVEN\n const task = new ProvideContextsTask(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[\"_sendCommandInChunksTaskFactory\"]).toBeDefined();\n const sendCommandInChunksTask = task[\"_sendCommandInChunksTaskFactory\"](\n api,\n {\n data: new Uint8Array(),\n commandFactory: () =>\n new StoreTransactionCommand({\n serializedTransaction: new Uint8Array(),\n isFirstChunk: true,\n }),\n },\n );\n expect(sendCommandInChunksTask).toBeInstanceOf(SendCommandInChunksTask);\n });\n });\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["import_context_module", "import_device_management_kit", "import_purify_ts", "import_ProvideEnumCommand", "import_ProvideNetworkConfigurationCommand", "import_ProvideNFTInformationCommand", "import_ProvideProxyInfoCommand", "import_ProvideTokenInformationCommand", "import_ProvideTransactionFieldDescriptionCommand", "import_ProvideTransactionInformationCommand", "import_ProvideTrustedNameCommand", "import_ProvideWeb3CheckCommand", "import_SetExternalPluginCommand", "import_SetPluginCommand", "import_StoreTransactionCommand", "import_makeInternalApi", "import_ProvideContextsTask", "import_SendCommandInChunksTask", "import_SendPayloadInChunksTask", "api", "successResult", "errorResult", "sendPayloadInChunksRunMock", "sendCommandInChunksTaskRunMock", "sendCommandInChunksTaskMockFactory", "sendPayloadInChunksTaskMockFactory", "a", "args", "result", "commandFactory", "mockArgs", "command", "commandFactory2", "command2", "contextType", "commandClass", "withPayloadLength", "task", "sendPayloadInChunksTask", "sendCommandInChunksTask"]
7
- }
@@ -1,2 +0,0 @@
1
- import{ClearSignContextType as c}from"@ledgerhq/context-module";import{bufferToHexaString as C,isSuccessCommandResult as d}from"@ledgerhq/device-management-kit";import{GetAddressCommand as l}from"../../app-binder/command/GetAddressCommand";class u{constructor(e,a){this.api=e;this.args=a}async run(){const e=await this.api.sendCommand(new l({derivationPath:this.args.derivationPath,checkOnDevice:!1,returnChainCode:!1}));if(!d(e))return{web3Check:null,error:e.error};const a=e.data.address,{deviceModelId:s}=this.api.getDeviceSessionState(),{contextModule:n}=this.args;let t;if(this.isRawTx(this.args)){const{subset:r,transaction:o}=this.args,i={deviceModelId:s,from:a,rawTx:C(o),chainId:r.chainId};t=await n.getWeb3Checks(i)}else{const r={deviceModelId:s,from:a,data:this.args.data};t=await n.getWeb3Checks(r)}return t===null||t?.type!==c.WEB3_CHECK?{web3Check:null}:{web3Check:t}}isRawTx(e){return"transaction"in e}}export{u as GetWeb3CheckTask};
2
- //# sourceMappingURL=GetWeb3CheckTask.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../src/internal/app-binder/task/GetWeb3CheckTask.ts"],
4
- "sourcesContent": ["import {\n type ClearSignContext,\n type ClearSignContextSuccess,\n ClearSignContextType,\n type ContextModule,\n type TransactionSubset,\n type Web3CheckContext,\n} from \"@ledgerhq/context-module\";\nimport {\n bufferToHexaString,\n type DmkError,\n type InternalApi,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type TypedData } from \"@api/model/TypedData\";\nimport { GetAddressCommand } from \"@internal/app-binder/command/GetAddressCommand\";\n\nexport type GetWeb3CheckTaskResult =\n | {\n readonly web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> | null;\n }\n | {\n readonly web3Check: null;\n error: DmkError;\n };\n\nexport type GetWeb3CheckTypedDataTaskArgs = {\n readonly contextModule: ContextModule;\n readonly derivationPath: string;\n readonly data: TypedData;\n};\nexport type GetWeb3CheckRawTxTaskArgs = {\n readonly contextModule: ContextModule;\n readonly derivationPath: string;\n readonly subset: TransactionSubset;\n readonly transaction: Uint8Array;\n};\nexport type GetWeb3CheckTaskArgs =\n | GetWeb3CheckTypedDataTaskArgs\n | GetWeb3CheckRawTxTaskArgs;\n\nexport class GetWeb3CheckTask {\n constructor(\n private readonly api: InternalApi,\n private readonly args: GetWeb3CheckTaskArgs,\n ) {}\n\n async run(): Promise<GetWeb3CheckTaskResult> {\n // Get sender address\n const getAddressResult = await this.api.sendCommand(\n new GetAddressCommand({\n derivationPath: this.args.derivationPath,\n checkOnDevice: false,\n returnChainCode: false,\n }),\n );\n if (!isSuccessCommandResult(getAddressResult)) {\n return {\n web3Check: null,\n error: getAddressResult.error,\n };\n }\n\n const address = getAddressResult.data.address;\n const { deviceModelId } = this.api.getDeviceSessionState();\n const { contextModule } = this.args;\n let web3CheckContext: ClearSignContext | null;\n\n if (this.isRawTx(this.args)) {\n // Transaction simulation\n const { subset, transaction } = this.args;\n const web3Params: Web3CheckContext = {\n deviceModelId,\n from: address,\n rawTx: bufferToHexaString(transaction),\n chainId: subset.chainId,\n };\n web3CheckContext = await contextModule.getWeb3Checks(web3Params);\n } else {\n // Typed data simulation\n const web3Params: Web3CheckContext = {\n deviceModelId,\n from: address,\n data: this.args.data,\n };\n web3CheckContext = await contextModule.getWeb3Checks(web3Params);\n }\n\n if (\n web3CheckContext === null ||\n web3CheckContext?.type !== ClearSignContextType.WEB3_CHECK\n ) {\n return {\n web3Check: null,\n };\n }\n\n return {\n web3Check: web3CheckContext,\n };\n }\n\n private isRawTx(\n args: GetWeb3CheckTaskArgs,\n ): args is GetWeb3CheckRawTxTaskArgs {\n return \"transaction\" in args;\n }\n}\n"],
5
- "mappings": "AAAA,OAGE,wBAAAA,MAIK,2BACP,OACE,sBAAAC,EAGA,0BAAAC,MACK,kCAGP,OAAS,qBAAAC,MAAyB,iDA0B3B,MAAMC,CAAiB,CAC5B,YACmBC,EACAC,EACjB,CAFiB,SAAAD,EACA,UAAAC,CAChB,CAEH,MAAM,KAAuC,CAE3C,MAAMC,EAAmB,MAAM,KAAK,IAAI,YACtC,IAAIJ,EAAkB,CACpB,eAAgB,KAAK,KAAK,eAC1B,cAAe,GACf,gBAAiB,EACnB,CAAC,CACH,EACA,GAAI,CAACD,EAAuBK,CAAgB,EAC1C,MAAO,CACL,UAAW,KACX,MAAOA,EAAiB,KAC1B,EAGF,MAAMC,EAAUD,EAAiB,KAAK,QAChC,CAAE,cAAAE,CAAc,EAAI,KAAK,IAAI,sBAAsB,EACnD,CAAE,cAAAC,CAAc,EAAI,KAAK,KAC/B,IAAIC,EAEJ,GAAI,KAAK,QAAQ,KAAK,IAAI,EAAG,CAE3B,KAAM,CAAE,OAAAC,EAAQ,YAAAC,CAAY,EAAI,KAAK,KAC/BC,EAA+B,CACnC,cAAAL,EACA,KAAMD,EACN,MAAOP,EAAmBY,CAAW,EACrC,QAASD,EAAO,OAClB,EACAD,EAAmB,MAAMD,EAAc,cAAcI,CAAU,CACjE,KAAO,CAEL,MAAMA,EAA+B,CACnC,cAAAL,EACA,KAAMD,EACN,KAAM,KAAK,KAAK,IAClB,EACAG,EAAmB,MAAMD,EAAc,cAAcI,CAAU,CACjE,CAEA,OACEH,IAAqB,MACrBA,GAAkB,OAASX,EAAqB,WAEzC,CACL,UAAW,IACb,EAGK,CACL,UAAWW,CACb,CACF,CAEQ,QACNL,EACmC,CACnC,MAAO,gBAAiBA,CAC1B,CACF",
6
- "names": ["ClearSignContextType", "bufferToHexaString", "isSuccessCommandResult", "GetAddressCommand", "GetWeb3CheckTask", "api", "args", "getAddressResult", "address", "deviceModelId", "contextModule", "web3CheckContext", "subset", "transaction", "web3Params"]
7
- }
@@ -1,2 +0,0 @@
1
- import{CommandResultFactory as n,DeviceModelId as l,DeviceSessionStateType as i,DeviceStatus as k,InvalidStatusWordError as u}from"@ledgerhq/device-management-kit";import{makeDeviceActionInternalApiMock as m}from"../../app-binder/device-action/__test-utils__/makeInternalApi";import{GetWeb3CheckTask as a}from"../../app-binder/task/GetWeb3CheckTask";describe("GetWeb3CheckTask",()=>{const e=m(),t={getWeb3Checks:vi.fn()},d=new Uint8Array([1,2,3,4]),s="44'/60'/0'/0/0",c={chainId:15,to:"to",data:"0x060708090A",selector:"0x06070809",value:0n};describe("run",()=>{beforeEach(()=>{vi.clearAllMocks(),e.getDeviceSessionState.mockReturnValueOnce({sessionStateType:i.ReadyWithoutSecureChannel,deviceStatus:k.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.16.0"},deviceModelId:l.FLEX,isSecureConnectionAllowed:!0})}),describe("errors",()=>{it("should return a context error if GetAddressCommand assert.fails",async()=>{e.sendCommand.mockResolvedValueOnce(n({error:new u("error")}));const o=await new a(e,{contextModule:t,subset:c,transaction:d,derivationPath:s}).run();expect(o).toEqual({web3Check:null,error:new u("error")})}),it("should return null if the type is not a ClearSignContextSuccess web3check",async()=>{e.sendCommand.mockResolvedValueOnce(n({data:{address:"address"}})),t.getWeb3Checks.mockResolvedValue({type:"invalid-type",id:1});const o=await new a(e,{contextModule:t,subset:c,transaction:d,derivationPath:s}).run();expect(o).toEqual({web3Check:null})})}),describe("success",()=>{it("should return null if the context module does not have a web3 check",async()=>{e.sendCommand.mockResolvedValueOnce(n({data:{address:"address"}})),t.getWeb3Checks.mockResolvedValue(null);const o=await new a(e,{contextModule:t,subset:c,transaction:d,derivationPath:s}).run();expect(o).toEqual({web3Check:null})}),it("should return a web3 check",async()=>{const o={type:"web3Check",id:1};e.sendCommand.mockResolvedValueOnce(n({data:{address:"address"}})),t.getWeb3Checks.mockResolvedValue(o);const r=await new a(e,{contextModule:t,subset:c,transaction:d,derivationPath:s}).run();expect(r).toEqual({web3Check:o})}),it("should return a web3 check for typed data",async()=>{const o={type:"web3Check",id:1};e.sendCommand.mockResolvedValueOnce(n({data:{address:"address"}})),t.getWeb3Checks.mockResolvedValue(o);const r=await new a(e,{contextModule:t,data:"typed data",derivationPath:s}).run();expect(r).toEqual({web3Check:o})}),it("should call the context module with the right parameters",async()=>{e.sendCommand.mockResolvedValueOnce(n({data:{address:"address"}})),t.getWeb3Checks.mockResolvedValue(null),await new a(e,{contextModule:t,subset:c,transaction:d,derivationPath:s}).run(),expect(t.getWeb3Checks).toHaveBeenCalledWith({deviceModelId:l.FLEX,from:"address",rawTx:"0x01020304",chainId:15})})})})});
2
- //# sourceMappingURL=GetWeb3CheckTask.test.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../src/internal/app-binder/task/GetWeb3CheckTask.test.ts"],
4
- "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n CommandResultFactory,\n DeviceModelId,\n DeviceSessionStateType,\n DeviceStatus,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type TypedData } from \"@api/model/TypedData\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport { GetWeb3CheckTask } from \"@internal/app-binder/task/GetWeb3CheckTask\";\n\ndescribe(\"GetWeb3CheckTask\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const contextModuleMock = {\n getWeb3Checks: vi.fn(),\n };\n const transaction = new Uint8Array([0x01, 0x02, 0x03, 0x04]);\n const derivationPath = \"44'/60'/0'/0/0\";\n const defaultSubset = {\n chainId: 15,\n to: \"to\",\n data: \"0x060708090A\",\n selector: \"0x06070809\",\n value: 0n,\n };\n\n describe(\"run\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.16.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: true,\n });\n });\n\n describe(\"errors\", () => {\n it(\"should return a context error if GetAddressCommand assert.fails\", async () => {\n // GIVEN\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({ error: new InvalidStatusWordError(\"error\") }),\n );\n\n // WHEN\n const result = await new GetWeb3CheckTask(apiMock, {\n contextModule: contextModuleMock as unknown as ContextModule,\n subset: defaultSubset,\n transaction,\n derivationPath,\n }).run();\n\n // THEN\n expect(result).toEqual({\n web3Check: null,\n error: new InvalidStatusWordError(\"error\"),\n });\n });\n\n it(\"should return null if the type is not a ClearSignContextSuccess web3check\", async () => {\n // GIVEN\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({ data: { address: \"address\" } }),\n );\n contextModuleMock.getWeb3Checks.mockResolvedValue({\n type: \"invalid-type\",\n id: 1,\n });\n\n // WHEN\n const result = await new GetWeb3CheckTask(apiMock, {\n contextModule: contextModuleMock as unknown as ContextModule,\n subset: defaultSubset,\n transaction,\n derivationPath,\n }).run();\n\n // THEN\n expect(result).toEqual({\n web3Check: null,\n });\n });\n });\n\n describe(\"success\", () => {\n it(\"should return null if the context module does not have a web3 check\", async () => {\n // GIVEN\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({ data: { address: \"address\" } }),\n );\n contextModuleMock.getWeb3Checks.mockResolvedValue(null);\n\n // WHEN\n const result = await new GetWeb3CheckTask(apiMock, {\n contextModule: contextModuleMock as unknown as ContextModule,\n subset: defaultSubset,\n transaction,\n derivationPath,\n }).run();\n\n // THEN\n expect(result).toEqual({\n web3Check: null,\n });\n });\n\n it(\"should return a web3 check\", async () => {\n // GIVEN\n const web3Check = { type: \"web3Check\", id: 1 };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({ data: { address: \"address\" } }),\n );\n contextModuleMock.getWeb3Checks.mockResolvedValue(web3Check);\n\n // WHEN\n const result = await new GetWeb3CheckTask(apiMock, {\n contextModule: contextModuleMock as unknown as ContextModule,\n subset: defaultSubset,\n transaction,\n derivationPath,\n }).run();\n\n // THEN\n expect(result).toEqual({\n web3Check,\n });\n });\n\n it(\"should return a web3 check for typed data\", async () => {\n // GIVEN\n const web3Check = { type: \"web3Check\", id: 1 };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({ data: { address: \"address\" } }),\n );\n contextModuleMock.getWeb3Checks.mockResolvedValue(web3Check);\n\n // WHEN\n const result = await new GetWeb3CheckTask(apiMock, {\n contextModule: contextModuleMock as unknown as ContextModule,\n data: \"typed data\" as unknown as TypedData,\n derivationPath,\n }).run();\n\n // THEN\n expect(result).toEqual({\n web3Check,\n });\n });\n\n it(\"should call the context module with the right parameters\", async () => {\n // GIVEN\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({ data: { address: \"address\" } }),\n );\n contextModuleMock.getWeb3Checks.mockResolvedValue(null);\n\n // WHEN\n await new GetWeb3CheckTask(apiMock, {\n contextModule: contextModuleMock as unknown as ContextModule,\n subset: defaultSubset,\n transaction,\n derivationPath,\n }).run();\n\n // THEN\n expect(contextModuleMock.getWeb3Checks).toHaveBeenCalledWith({\n deviceModelId: DeviceModelId.FLEX,\n from: \"address\",\n rawTx: \"0x01020304\",\n chainId: 15,\n });\n });\n });\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["CommandResultFactory", "DeviceModelId", "DeviceSessionStateType", "DeviceStatus", "InvalidStatusWordError", "makeDeviceActionInternalApiMock", "GetWeb3CheckTask", "apiMock", "contextModuleMock", "transaction", "derivationPath", "defaultSubset", "result", "web3Check"]
7
- }
@@ -1,2 +0,0 @@
1
- import{ClearSignContextType as a}from"@ledgerhq/context-module";import{ByteArrayBuilder as c,CommandResultFactory as h,InvalidStatusWordError as k,isSuccessCommandResult as d,LoadCertificateCommand as p}from"@ledgerhq/device-management-kit";import{DerivationPathUtils as T}from"@ledgerhq/signer-utils";import{Left as m,Right as y}from"purify-ts";import{ProvideEnumCommand as f}from"../../app-binder/command/ProvideEnumCommand";import{NetworkConfigurationType as u,ProvideNetworkConfigurationCommand as C}from"../../app-binder/command/ProvideNetworkConfigurationCommand";import{ProvideNFTInformationCommand as I}from"../../app-binder/command/ProvideNFTInformationCommand";import{ProvideProxyInfoCommand as F}from"../../app-binder/command/ProvideProxyInfoCommand";import{ProvideTokenInformationCommand as l}from"../../app-binder/command/ProvideTokenInformationCommand";import{ProvideTransactionFieldDescriptionCommand as _}from"../../app-binder/command/ProvideTransactionFieldDescriptionCommand";import{ProvideTransactionInformationCommand as P}from"../../app-binder/command/ProvideTransactionInformationCommand";import{ProvideTrustedNameCommand as w}from"../../app-binder/command/ProvideTrustedNameCommand";import{ProvideWeb3CheckCommand as v}from"../../app-binder/command/ProvideWeb3CheckCommand";import{SetExternalPluginCommand as N}from"../../app-binder/command/SetExternalPluginCommand";import{SetPluginCommand as E}from"../../app-binder/command/SetPluginCommand";import{StoreTransactionCommand as x}from"../../app-binder/command/StoreTransactionCommand";import{SendCommandInChunksTask as R}from"./SendCommandInChunksTask";import{SendPayloadInChunksTask as A}from"./SendPayloadInChunksTask";class J{constructor(i,n,s=(r,o)=>new A(r,o),t=(r,o)=>new R(r,o)){this._api=i;this._args=n;this._sendPayloadInChunksTaskFactory=s;this._sendCommandInChunksTaskFactory=t}async run(){let i=!1;for(const{context:n,subcontextCallbacks:s}of this._args.contexts){for(const r of s){const o=await r();if(o.type===a.ERROR)continue;const e=await this.provideContext(o);if(!d(e))return m(e)}if(n.type===a.PROXY_INFO)continue;if(!i&&this._args.serializedTransaction!==void 0&&n.type===a.TRANSACTION_INFO){i=!0;const r=T.splitPath(this._args.derivationPath),o=new c;o.add8BitUIntToData(r.length),r.forEach(e=>{o.add32BitUIntToData(e)}),o.addBufferToData(this._args.serializedTransaction),await this._sendCommandInChunksTaskFactory(this._api,{data:o.build(),commandFactory:e=>new x({serializedTransaction:e.chunkedData,isFirstChunk:e.isFirstChunk})}).run()}const t=await this.provideContext(n);if(!d(t))return m(t)}return y(void 0)}async provideContext({type:i,payload:n,certificate:s}){switch(s&&await this._api.sendCommand(new p({keyUsage:s.keyUsageNumber,certificate:s.payload})),i){case a.PLUGIN:return await this._api.sendCommand(new E({payload:n}));case a.EXTERNAL_PLUGIN:return await this._api.sendCommand(new N({payload:n}));case a.NFT:return await this._api.sendCommand(new I({payload:n}));case a.TOKEN:return await this._api.sendCommand(new l({payload:n}));case a.TRANSACTION_INFO:return await this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:r=>new P({data:r.chunkedData,isFirstChunk:r.isFirstChunk})}).run();case a.TRUSTED_NAME:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new w({data:t.chunkedData,isFirstChunk:t.isFirstChunk})}).run();case a.ENUM:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new f({data:t.chunkedData,isFirstChunk:t.isFirstChunk})}).run();case a.TRANSACTION_FIELD_DESCRIPTION:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new _({data:t.chunkedData,isFirstChunk:t.isFirstChunk})}).run();case a.WEB3_CHECK:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new v({payload:t.chunkedData,isFirstChunk:t.isFirstChunk})}).run();case a.PROXY_INFO:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new F({data:t.chunkedData,isFirstChunk:t.isFirstChunk})}).run();case a.DYNAMIC_NETWORK:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new C({data:t.chunkedData,isFirstChunk:t.isFirstChunk,configurationType:u.CONFIGURATION})}).run();case a.DYNAMIC_NETWORK_ICON:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new C({data:t.chunkedData,isFirstChunk:t.isFirstChunk,configurationType:u.ICON}),withPayloadLength:!1}).run();default:{const t=i;return h({error:new k(`The context type [${t}] is not covered`)})}}}}export{J as ProvideContextsTask};
2
- //# sourceMappingURL=ProvideContextsTask.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../src/internal/app-binder/task/ProvideContextsTask.ts"],
4
- "sourcesContent": ["import {\n type ClearSignContextSuccess,\n ClearSignContextType,\n} from \"@ledgerhq/context-module\";\nimport {\n ByteArrayBuilder,\n type CommandErrorResult,\n type CommandResult,\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n isSuccessCommandResult,\n LoadCertificateCommand,\n} from \"@ledgerhq/device-management-kit\";\nimport { DerivationPathUtils } from \"@ledgerhq/signer-utils\";\nimport { type Either, Left, Right } from \"purify-ts\";\n\nimport { ProvideEnumCommand } from \"@internal/app-binder/command/ProvideEnumCommand\";\nimport {\n NetworkConfigurationType,\n ProvideNetworkConfigurationCommand,\n} from \"@internal/app-binder/command/ProvideNetworkConfigurationCommand\";\nimport { ProvideNFTInformationCommand } from \"@internal/app-binder/command/ProvideNFTInformationCommand\";\nimport { ProvideProxyInfoCommand } from \"@internal/app-binder/command/ProvideProxyInfoCommand\";\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\nimport { ProvideTransactionFieldDescriptionCommand } from \"@internal/app-binder/command/ProvideTransactionFieldDescriptionCommand\";\nimport { ProvideTransactionInformationCommand } from \"@internal/app-binder/command/ProvideTransactionInformationCommand\";\nimport { ProvideTrustedNameCommand } from \"@internal/app-binder/command/ProvideTrustedNameCommand\";\nimport { ProvideWeb3CheckCommand } from \"@internal/app-binder/command/ProvideWeb3CheckCommand\";\nimport { SetExternalPluginCommand } from \"@internal/app-binder/command/SetExternalPluginCommand\";\nimport { SetPluginCommand } from \"@internal/app-binder/command/SetPluginCommand\";\nimport { StoreTransactionCommand } from \"@internal/app-binder/command/StoreTransactionCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\n\nimport { type ContextWithSubContexts } from \"./BuildFullContextsTask\";\nimport {\n SendCommandInChunksTask,\n type SendCommandInChunksTaskArgs,\n} from \"./SendCommandInChunksTask\";\nimport {\n SendPayloadInChunksTask,\n type SendPayloadInChunksTaskArgs,\n} from \"./SendPayloadInChunksTask\";\n\nexport type ProvideContextsTaskArgs = {\n /**\n * The list of clear sign context with subcontexts callback to provide.\n */\n contexts: ContextWithSubContexts[];\n /**\n * The derivation path to provide.\n */\n derivationPath: string;\n /**\n * The serialized transaction to provide.\n * This parameter is optional in the case there is no transaction at all, for instance\n * if there is only a standalone calldata embedded in a message.\n */\n serializedTransaction?: Uint8Array;\n};\n\nexport type ProvideContextsTaskResult = Either<\n CommandErrorResult<EthErrorCodes>,\n void\n>;\n\n/**\n * This task is responsible for providing the transaction context to the device.\n * It will send the subcontexts callbacks in order and finish with the context.\n */\nexport class ProvideContextsTask {\n constructor(\n private _api: InternalApi,\n private _args: ProvideContextsTaskArgs,\n private _sendPayloadInChunksTaskFactory = (\n api: InternalApi,\n args: SendPayloadInChunksTaskArgs<unknown>,\n ) => new SendPayloadInChunksTask(api, args),\n private _sendCommandInChunksTaskFactory = (\n api: InternalApi,\n args: SendCommandInChunksTaskArgs<unknown>,\n ) => new SendCommandInChunksTask(api, args),\n ) {}\n\n async run(): Promise<ProvideContextsTaskResult> {\n let transactionInfoProvided = false;\n\n for (const { context, subcontextCallbacks } of this._args.contexts) {\n for (const callback of subcontextCallbacks) {\n const subcontext = await callback();\n\n if (subcontext.type === ClearSignContextType.ERROR) {\n // silently ignore error subcontexts\n continue;\n }\n\n const res = await this.provideContext(subcontext);\n if (!isSuccessCommandResult(res)) {\n return Left(res);\n }\n }\n\n if (context.type === ClearSignContextType.PROXY_INFO) {\n // In this specific case, the context is not valid as the challenge is not valid on the first call\n // the real data is provided in the subcontext callback\n continue;\n }\n\n if (\n !transactionInfoProvided &&\n this._args.serializedTransaction !== undefined &&\n context.type === ClearSignContextType.TRANSACTION_INFO\n ) {\n // Send the serialized transaction for the first TRANSACTION_INFO.\n // All other TRANSACTION_INFO contexts will be ignored as it will be for nested calldata.\n transactionInfoProvided = true;\n\n const paths = DerivationPathUtils.splitPath(this._args.derivationPath);\n const builder = new ByteArrayBuilder();\n builder.add8BitUIntToData(paths.length);\n paths.forEach((path) => {\n builder.add32BitUIntToData(path);\n });\n builder.addBufferToData(this._args.serializedTransaction);\n await this._sendCommandInChunksTaskFactory(this._api, {\n data: builder.build(),\n commandFactory: (args) =>\n new StoreTransactionCommand({\n serializedTransaction: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n }\n\n const res = await this.provideContext(context);\n if (!isSuccessCommandResult(res)) {\n return Left(res);\n }\n }\n\n return Right(void 0);\n }\n\n /**\n * This method will send the context to the device.\n *\n * @param context The clear sign context to provide.\n * @returns A promise that resolves when the command is sent.\n */\n async provideContext({\n type,\n payload,\n certificate,\n }: ClearSignContextSuccess): Promise<CommandResult<unknown, EthErrorCodes>> {\n // if a certificate is provided, we load it before sending the command\n if (certificate) {\n await this._api.sendCommand(\n new LoadCertificateCommand({\n keyUsage: certificate.keyUsageNumber,\n certificate: certificate.payload,\n }),\n );\n }\n\n switch (type) {\n case ClearSignContextType.PLUGIN: {\n return await this._api.sendCommand(new SetPluginCommand({ payload }));\n }\n case ClearSignContextType.EXTERNAL_PLUGIN: {\n return await this._api.sendCommand(\n new SetExternalPluginCommand({ payload }),\n );\n }\n case ClearSignContextType.NFT: {\n return await this._api.sendCommand(\n new ProvideNFTInformationCommand({ payload }),\n );\n }\n case ClearSignContextType.TOKEN: {\n return await this._api.sendCommand(\n new ProvideTokenInformationCommand({ payload }),\n );\n }\n case ClearSignContextType.TRANSACTION_INFO: {\n const transactionInfoResult =\n await this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideTransactionInformationCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n\n return transactionInfoResult;\n }\n case ClearSignContextType.TRUSTED_NAME: {\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideTrustedNameCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n }\n case ClearSignContextType.ENUM:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideEnumCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideTransactionFieldDescriptionCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.WEB3_CHECK:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideWeb3CheckCommand({\n payload: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.PROXY_INFO:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideProxyInfoCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.DYNAMIC_NETWORK:\n // Dynamic network configuration uses the existing ProvideNetworkConfiguration command\n // but is provided as part of the context flow\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideNetworkConfigurationCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n configurationType: NetworkConfigurationType.CONFIGURATION,\n }),\n }).run();\n case ClearSignContextType.DYNAMIC_NETWORK_ICON: {\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideNetworkConfigurationCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n configurationType: NetworkConfigurationType.ICON,\n }),\n withPayloadLength: false,\n }).run();\n }\n default: {\n const uncoveredType: never = type;\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n `The context type [${uncoveredType}] is not covered`,\n ),\n });\n }\n }\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["ClearSignContextType", "ByteArrayBuilder", "CommandResultFactory", "InvalidStatusWordError", "isSuccessCommandResult", "LoadCertificateCommand", "DerivationPathUtils", "Left", "Right", "ProvideEnumCommand", "NetworkConfigurationType", "ProvideNetworkConfigurationCommand", "ProvideNFTInformationCommand", "ProvideProxyInfoCommand", "ProvideTokenInformationCommand", "ProvideTransactionFieldDescriptionCommand", "ProvideTransactionInformationCommand", "ProvideTrustedNameCommand", "ProvideWeb3CheckCommand", "SetExternalPluginCommand", "SetPluginCommand", "StoreTransactionCommand", "SendCommandInChunksTask", "SendPayloadInChunksTask", "ProvideContextsTask", "_api", "_args", "_sendPayloadInChunksTaskFactory", "api", "args", "_sendCommandInChunksTaskFactory", "transactionInfoProvided", "context", "subcontextCallbacks", "callback", "subcontext", "res", "paths", "builder", "path", "type", "payload", "certificate", "uncoveredType"]
7
- }
@@ -1,2 +0,0 @@
1
- import{ClearSignContextType as a}from"@ledgerhq/context-module";import{CommandResultFactory as A,InvalidStatusWordError as B,LoadCertificateCommand as h}from"@ledgerhq/device-management-kit";import{Left as w,Right as x}from"purify-ts";import{ProvideEnumCommand as R}from"../../app-binder/command/ProvideEnumCommand";import{ProvideNetworkConfigurationCommand as N}from"../../app-binder/command/ProvideNetworkConfigurationCommand";import{ProvideNFTInformationCommand as I}from"../../app-binder/command/ProvideNFTInformationCommand";import{ProvideProxyInfoCommand as g}from"../../app-binder/command/ProvideProxyInfoCommand";import{ProvideTokenInformationCommand as T}from"../../app-binder/command/ProvideTokenInformationCommand";import{ProvideTransactionFieldDescriptionCommand as F}from"../../app-binder/command/ProvideTransactionFieldDescriptionCommand";import{ProvideTransactionInformationCommand as E}from"../../app-binder/command/ProvideTransactionInformationCommand";import{ProvideTrustedNameCommand as b}from"../../app-binder/command/ProvideTrustedNameCommand";import{ProvideWeb3CheckCommand as O}from"../../app-binder/command/ProvideWeb3CheckCommand";import{SetExternalPluginCommand as U}from"../../app-binder/command/SetExternalPluginCommand";import{SetPluginCommand as H}from"../../app-binder/command/SetPluginCommand";import{StoreTransactionCommand as P}from"../../app-binder/command/StoreTransactionCommand";import{makeDeviceActionInternalApiMock as S}from"../../app-binder/device-action/__test-utils__/makeInternalApi";import{ProvideContextsTask as i}from"./ProvideContextsTask";import{SendCommandInChunksTask as _}from"./SendCommandInChunksTask";import{SendPayloadInChunksTask as D}from"./SendPayloadInChunksTask";describe("ProvideContextsTask",()=>{const e=S(),c=A({data:void 0}),v=A({data:void 0,error:{}});beforeEach(()=>{vi.resetAllMocks()}),describe("run",()=>{const o=vi.fn(),C=vi.fn(),r=vi.fn(),d=vi.fn();beforeEach(()=>{vi.clearAllMocks(),r.mockImplementation((t,s)=>({run:()=>C(t,s)})),d.mockImplementation((t,s)=>({run:()=>o(t,s)}))}),describe("with no subcontexts",()=>{it("should provide the transaction context for a TRANSACTION_INFO context",async()=>{const t={contexts:[{context:{type:a.TRANSACTION_INFO,payload:"0x00",certificate:{keyUsageNumber:1,payload:new Uint8Array([1,2,3])}},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};C.mockResolvedValue(c),o.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const n=await new i(e,t,d,r).run();expect(n).toEqual(x(void 0)),expect(C).toHaveBeenCalledTimes(1),expect(r).toHaveBeenCalledWith(e,{data:new Uint8Array([5,128,0,0,44,128,0,0,60,128,0,0,0,0,0,0,0,0,0,0,0]),commandFactory:expect.any(Function)});const m=r.mock.calls[0][1].commandFactory,l={chunkedData:new Uint8Array([1,2,3,4]),isFirstChunk:!0},y=m(l);expect(y).toBeInstanceOf(P),expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(e.sendCommand).toHaveBeenCalledWith(expect.any(h)),expect(o).toHaveBeenCalledTimes(1),expect(o).toHaveBeenCalledWith(e,{payload:"0x00",commandFactory:expect.any(Function)});const u=o.mock.calls[0][1].commandFactory,k=u(l);expect(k).toBeInstanceOf(E)}),it("should provide the transaction context for a TRANSACTION_INFO context without certificate",async()=>{const t={contexts:[{context:{type:a.TRANSACTION_INFO,payload:"0x00"},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};C.mockResolvedValue(c),o.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const n=await new i(e,t,d,r).run();expect(n).toEqual(x(void 0)),expect(C).toHaveBeenCalledTimes(1),expect(r).toHaveBeenCalledWith(e,{data:new Uint8Array([5,128,0,0,44,128,0,0,60,128,0,0,0,0,0,0,0,0,0,0,0]),commandFactory:expect.any(Function)});const m=r.mock.calls[0][1].commandFactory,l={chunkedData:new Uint8Array([1,2,3,4]),isFirstChunk:!0},y=m(l);expect(y).toBeInstanceOf(P),expect(e.sendCommand).toHaveBeenCalledTimes(0),expect(o).toHaveBeenCalledTimes(1),expect(o).toHaveBeenCalledWith(e,{payload:"0x00",commandFactory:expect.any(Function)});const u=o.mock.calls[0][1].commandFactory,k=u(l);expect(k).toBeInstanceOf(E)}),it.each([[a.PLUGIN,H],[a.EXTERNAL_PLUGIN,U],[a.NFT,I],[a.TOKEN,T]])("should provide the transaction context by calling sendCommand for a %s context",async(t,s)=>{const n={contexts:[{context:{type:t,payload:"payload"},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};e.sendCommand.mockResolvedValue(c);const m=await new i(e,n,d,r).run();expect(m).toEqual(x(void 0)),expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(e.sendCommand).toHaveBeenCalledWith(expect.any(s))}),it.each([[a.ENUM,R],[a.TRUSTED_NAME,b],[a.WEB3_CHECK,O],[a.TRANSACTION_FIELD_DESCRIPTION,F],[a.DYNAMIC_NETWORK_ICON,N,!1],[a.DYNAMIC_NETWORK,N]])("should provide the transaction context by calling sendPayloadInChunksTask for a %s context",async(t,s,n=void 0)=>{const p={contexts:[{context:{type:t,payload:"payload",id:1,value:1},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};o.mockResolvedValue(c);const l=await new i(e,p,d,r).run();expect(l).toEqual(x(void 0)),expect(o).toHaveBeenCalledTimes(1),n===void 0?expect(o).toHaveBeenCalledWith(e,{payload:"payload",commandFactory:expect.any(Function)}):expect(o).toHaveBeenCalledWith(e,{payload:"payload",commandFactory:expect.any(Function),withPayloadLength:n});const f=d.mock.calls[0][1].commandFactory,u={chunkedData:new Uint8Array([1,2,3]),isFirstChunk:!0},k=f(u);expect(k).toBeInstanceOf(s)}),it("should only provide the subcontexts if the context is a PROXY_INFO",async()=>{const t={contexts:[{context:{type:a.PROXY_INFO,payload:"payload"},subcontextCallbacks:[()=>Promise.resolve({type:a.PROXY_INFO,payload:"subcontext payload"})]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};o.mockResolvedValue(c);const n=await new i(e,t,d,r).run();expect(n).toEqual(x(void 0)),expect(o).toHaveBeenCalledTimes(1),expect(o).toHaveBeenCalledWith(e,{payload:"subcontext payload",commandFactory:expect.any(Function)});const m=d.mock.calls[0][1].commandFactory,l={chunkedData:new Uint8Array([1,2,3]),isFirstChunk:!0},y=m(l);expect(y).toBeInstanceOf(g)}),it("should skip the subcontexts if the context is an error",async()=>{const t={contexts:[{context:{type:a.TOKEN,payload:"payload",certificate:{keyUsageNumber:1,payload:new Uint8Array([1,2,3])}},subcontextCallbacks:[()=>Promise.resolve({type:a.ERROR,error:new Error("error")})]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};o.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const n=await new i(e,t,d,r).run();expect(n).toEqual(x(void 0)),expect(o).toHaveBeenCalledTimes(0),expect(C).toHaveBeenCalledTimes(0),expect(e.sendCommand).toHaveBeenCalledTimes(2),expect(e.sendCommand).toHaveBeenNthCalledWith(1,expect.any(h)),expect(e.sendCommand).toHaveBeenNthCalledWith(2,expect.any(T))})}),describe("with subcontexts",()=>{it("should provide the transaction context and subcontext for a TRANSACTION_FIELD_DESCRIPTION context",async()=>{const t={contexts:[{context:{type:a.TRANSACTION_FIELD_DESCRIPTION,payload:"payload"},subcontextCallbacks:[()=>Promise.resolve({type:a.TOKEN,payload:"payload"})]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};o.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const n=await new i(e,t,d,r).run();expect(n).toEqual(x(void 0)),expect(o).toHaveBeenCalledTimes(1),expect(o).toHaveBeenCalledWith(e,{payload:"payload",commandFactory:expect.any(Function)});const m=d.mock.calls[0][1].commandFactory,l={chunkedData:new Uint8Array([1,2,3]),isFirstChunk:!0},y=m(l);expect(y).toBeInstanceOf(F),expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(e.sendCommand).toHaveBeenCalledWith(expect.any(T))}),it("should provide the transaction context and subcontexts for a TRUSTED_NAME context",async()=>{const t={contexts:[{context:{type:a.TRUSTED_NAME,payload:"payload"},subcontextCallbacks:[()=>Promise.resolve({type:a.NFT,payload:"payload1"}),()=>Promise.resolve({type:a.TOKEN,payload:"payload2"})]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};o.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const n=await new i(e,t,d,r).run();expect(n).toEqual(x(void 0)),expect(o).toHaveBeenCalledTimes(1),expect(o).toHaveBeenCalledWith(e,{payload:"payload",commandFactory:expect.any(Function)});const m=d.mock.calls[0][1].commandFactory,l={chunkedData:new Uint8Array([1,2,3]),isFirstChunk:!0},y=m(l);expect(y).toBeInstanceOf(b),expect(e.sendCommand).toHaveBeenCalledTimes(2),expect(e.sendCommand).toHaveBeenNthCalledWith(1,expect.any(I)),expect(e.sendCommand).toHaveBeenNthCalledWith(2,expect.any(T))})}),describe("with subcontexts and certificate",()=>{it("should provide the transaction context and subcontexts for a TRUSTED_NAME context",async()=>{const t={contexts:[{context:{type:a.TRUSTED_NAME,payload:"payload",certificate:{keyUsageNumber:1,payload:new Uint8Array([1,2,3])}},subcontextCallbacks:[()=>Promise.resolve({type:a.NFT,payload:"payload1",certificate:{keyUsageNumber:2,payload:new Uint8Array([4,5,6])}})]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};o.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c),await new i(e,t,d,r).run(),expect(e.sendCommand).toHaveBeenCalledTimes(3),expect(e.sendCommand).toHaveBeenNthCalledWith(1,expect.any(h)),expect(e.sendCommand).toHaveBeenNthCalledWith(2,expect.any(I)),expect(e.sendCommand).toHaveBeenNthCalledWith(3,expect.any(h))})}),describe("with error",()=>{it("should return an error if the provideContext fails",async()=>{const t={contexts:[{context:{type:a.TOKEN,payload:"payload"},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};e.sendCommand.mockResolvedValue(v);const n=await new i(e,t,d,r).run();expect(n).toEqual(w(v))}),it("should return an error if the provide subcontext fails",async()=>{const t={contexts:[{context:{type:a.TOKEN,payload:"payload"},subcontextCallbacks:[()=>Promise.resolve({type:a.TOKEN,payload:"payload"})]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};e.sendCommand.mockResolvedValue(v);const n=await new i(e,t,d,r).run();expect(n).toEqual(w(v))}),it("should return an error if the type is not supported",async()=>{const t={contexts:[{context:{type:"unsupported",payload:"payload"},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"},n=await new i(e,t,d,r).run();expect(n).toEqual(w(A({error:new B("The context type [unsupported] is not covered")})))})}),describe("factory types",()=>{it("should have a sendPayloadInChunksTaskFactory by default",()=>{const t=new i(e,{contexts:[{context:{type:a.TOKEN,payload:"payload"},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"});expect(t._sendPayloadInChunksTaskFactory).toBeDefined();const s=t._sendPayloadInChunksTaskFactory(e,{payload:"payload",commandFactory:()=>new F({data:new Uint8Array,isFirstChunk:!0})});expect(s).toBeInstanceOf(D)}),it("should have a sendCommandInChunksTaskFactory by default",()=>{const t=new i(e,{contexts:[{context:{type:a.TOKEN,payload:"payload"},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"});expect(t._sendCommandInChunksTaskFactory).toBeDefined();const s=t._sendCommandInChunksTaskFactory(e,{data:new Uint8Array,commandFactory:()=>new P({serializedTransaction:new Uint8Array,isFirstChunk:!0})});expect(s).toBeInstanceOf(_)})})})});
2
- //# sourceMappingURL=ProvideContextsTask.test.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../src/internal/app-binder/task/ProvideContextsTask.test.ts"],
4
- "sourcesContent": ["import { ClearSignContextType } from \"@ledgerhq/context-module\";\nimport {\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n LoadCertificateCommand,\n type UnknownDeviceExchangeError,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { ProvideEnumCommand } from \"@internal/app-binder/command/ProvideEnumCommand\";\nimport { ProvideNetworkConfigurationCommand } from \"@internal/app-binder/command/ProvideNetworkConfigurationCommand\";\nimport { ProvideNFTInformationCommand } from \"@internal/app-binder/command/ProvideNFTInformationCommand\";\nimport { ProvideProxyInfoCommand } from \"@internal/app-binder/command/ProvideProxyInfoCommand\";\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\nimport { ProvideTransactionFieldDescriptionCommand } from \"@internal/app-binder/command/ProvideTransactionFieldDescriptionCommand\";\nimport { ProvideTransactionInformationCommand } from \"@internal/app-binder/command/ProvideTransactionInformationCommand\";\nimport { ProvideTrustedNameCommand } from \"@internal/app-binder/command/ProvideTrustedNameCommand\";\nimport { ProvideWeb3CheckCommand } from \"@internal/app-binder/command/ProvideWeb3CheckCommand\";\nimport { SetExternalPluginCommand } from \"@internal/app-binder/command/SetExternalPluginCommand\";\nimport { SetPluginCommand } from \"@internal/app-binder/command/SetPluginCommand\";\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 ProvideContextsTask,\n type ProvideContextsTaskArgs,\n} from \"./ProvideContextsTask\";\nimport {\n SendCommandInChunksTask,\n type SendCommandInChunksTaskArgs,\n} from \"./SendCommandInChunksTask\";\nimport {\n SendPayloadInChunksTask,\n type SendPayloadInChunksTaskArgs,\n} from \"./SendPayloadInChunksTask\";\n\ndescribe(\"ProvideContextsTask\", () => {\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 sendPayloadInChunksRunMock = vi.fn();\n const sendCommandInChunksTaskRunMock = vi.fn();\n const sendCommandInChunksTaskMockFactory = vi.fn();\n const sendPayloadInChunksTaskMockFactory = vi.fn();\n\n beforeEach(() => {\n vi.clearAllMocks();\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 sendPayloadInChunksTaskMockFactory.mockImplementation(\n (a: InternalApi, args: SendPayloadInChunksTaskArgs<unknown>) =>\n ({\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n run: () => sendPayloadInChunksRunMock(a, args),\n }) as unknown as SendPayloadInChunksTask<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: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"0x00\",\n certificate: {\n keyUsageNumber: 1,\n payload: new Uint8Array([1, 2, 3]),\n },\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendCommandInChunksTaskRunMock.mockResolvedValue(successResult);\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n\n // StoreTransactionCommand\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 // arbitrary data to test the 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 // LoadCertificateCommand\n expect(api.sendCommand).toHaveBeenCalledTimes(1);\n expect(api.sendCommand).toHaveBeenCalledWith(\n expect.any(LoadCertificateCommand),\n );\n\n // ProvideTransactionInformationCommand\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"0x00\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n // Test that the commandFactory returns a ProvideTransactionInformationCommand\n const factoryCall2 = sendPayloadInChunksRunMock.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory2 = factoryCall2[1].commandFactory;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command2 = commandFactory2(mockArgs);\n expect(command2).toBeInstanceOf(ProvideTransactionInformationCommand);\n });\n\n it(\"should provide the transaction context for a TRANSACTION_INFO context without certificate\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\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 sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n\n // StoreTransactionCommand\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 // arbitrary data to test the 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 // LoadCertificateCommand\n expect(api.sendCommand).toHaveBeenCalledTimes(0);\n\n // ProvideTransactionInformationCommand\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"0x00\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n // Test that the commandFactory returns a ProvideTransactionInformationCommand\n const factoryCall2 = sendPayloadInChunksRunMock.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory2 = factoryCall2[1].commandFactory;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command2 = commandFactory2(mockArgs);\n expect(command2).toBeInstanceOf(ProvideTransactionInformationCommand);\n });\n\n it.each([\n [ClearSignContextType.PLUGIN, SetPluginCommand],\n [ClearSignContextType.EXTERNAL_PLUGIN, SetExternalPluginCommand],\n [ClearSignContextType.NFT, ProvideNFTInformationCommand],\n [ClearSignContextType.TOKEN, ProvideTokenInformationCommand],\n ] as const)(\n \"should provide the transaction context by calling sendCommand for a %s context\",\n async (contextType, commandClass) => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: contextType,\n payload: \"payload\",\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(api.sendCommand).toHaveBeenCalledTimes(1);\n expect(api.sendCommand).toHaveBeenCalledWith(\n expect.any(commandClass),\n );\n },\n );\n\n it.each([\n [ClearSignContextType.ENUM, ProvideEnumCommand],\n [ClearSignContextType.TRUSTED_NAME, ProvideTrustedNameCommand],\n [ClearSignContextType.WEB3_CHECK, ProvideWeb3CheckCommand],\n [\n ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n ProvideTransactionFieldDescriptionCommand,\n ],\n [\n ClearSignContextType.DYNAMIC_NETWORK_ICON,\n ProvideNetworkConfigurationCommand,\n false,\n ],\n [\n ClearSignContextType.DYNAMIC_NETWORK,\n ProvideNetworkConfigurationCommand,\n ],\n ] as const)(\n \"should provide the transaction context by calling sendPayloadInChunksTask for a %s context\",\n async (contextType, commandClass, withPayloadLength = undefined) => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: contextType,\n payload: \"payload\",\n id: 1,\n value: 1,\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n if (withPayloadLength === undefined) {\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n } else {\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n withPayloadLength,\n });\n }\n\n // Test that the commandFactory returns a commandClass\n const factoryCall = sendPayloadInChunksTaskMockFactory.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]),\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(commandClass);\n },\n );\n\n it(\"should only provide the subcontexts if the context is a PROXY_INFO\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\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 sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"subcontext payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n\n // Test that the commandFactory returns a commandClass\n const factoryCall = sendPayloadInChunksTaskMockFactory.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]),\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(ProvideProxyInfoCommand);\n });\n\n it(\"should skip the subcontexts if the context is an error\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n certificate: {\n keyUsageNumber: 1,\n payload: new Uint8Array([1, 2, 3]),\n },\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 sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(0);\n expect(sendCommandInChunksTaskRunMock).toHaveBeenCalledTimes(0);\n expect(api.sendCommand).toHaveBeenCalledTimes(2);\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 1,\n expect.any(LoadCertificateCommand),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 2,\n expect.any(ProvideTokenInformationCommand),\n );\n });\n });\n\n describe(\"with subcontexts\", () => {\n it(\"should provide the transaction context and subcontext for a TRANSACTION_FIELD_DESCRIPTION context\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload\",\n },\n subcontextCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n }),\n ],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n\n // Test that the commandFactory returns a commandClass\n const factoryCall = sendPayloadInChunksTaskMockFactory.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]),\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(\n ProvideTransactionFieldDescriptionCommand,\n );\n\n expect(api.sendCommand).toHaveBeenCalledTimes(1);\n expect(api.sendCommand).toHaveBeenCalledWith(\n expect.any(ProvideTokenInformationCommand),\n );\n });\n\n it(\"should provide the transaction context and subcontexts for a TRUSTED_NAME context\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TRUSTED_NAME,\n payload: \"payload\",\n },\n subcontextCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.NFT,\n payload: \"payload1\",\n }),\n\n () =>\n Promise.resolve({\n type: ClearSignContextType.TOKEN,\n payload: \"payload2\",\n }),\n ],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n\n // Test that the commandFactory returns a commandClass\n const factoryCall = sendPayloadInChunksTaskMockFactory.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]),\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(ProvideTrustedNameCommand);\n\n expect(api.sendCommand).toHaveBeenCalledTimes(2);\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 1,\n expect.any(ProvideNFTInformationCommand),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 2,\n expect.any(ProvideTokenInformationCommand),\n );\n });\n });\n\n describe(\"with subcontexts and certificate\", () => {\n it(\"should provide the transaction context and subcontexts for a TRUSTED_NAME context\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TRUSTED_NAME,\n payload: \"payload\",\n certificate: {\n keyUsageNumber: 1,\n payload: new Uint8Array([1, 2, 3]),\n },\n },\n subcontextCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.NFT,\n payload: \"payload1\",\n certificate: {\n keyUsageNumber: 2,\n payload: new Uint8Array([4, 5, 6]),\n },\n }),\n ],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n await task.run();\n\n // THEN\n expect(api.sendCommand).toHaveBeenCalledTimes(3);\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 1,\n expect.any(LoadCertificateCommand),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 2,\n expect.any(ProvideNFTInformationCommand),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 3,\n expect.any(LoadCertificateCommand),\n );\n });\n });\n\n describe(\"with error\", () => {\n it(\"should return an error if the provideContext fails\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\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 api.sendCommand.mockResolvedValue(errorResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Left(errorResult));\n });\n\n it(\"should return an error if the provide subcontext fails\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n }),\n ],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n api.sendCommand.mockResolvedValue(errorResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Left(errorResult));\n });\n\n it(\"should return an error if the type is not supported\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: \"unsupported\" as unknown as ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(\n Left(\n CommandResultFactory({\n error: new InvalidStatusWordError(\n `The context type [unsupported] is not covered`,\n ),\n }),\n ),\n );\n });\n });\n\n describe(\"factory types\", () => {\n it(\"should have a sendPayloadInChunksTaskFactory by default\", () => {\n // GIVEN\n const task = new ProvideContextsTask(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[\"_sendPayloadInChunksTaskFactory\"]).toBeDefined();\n const sendPayloadInChunksTask = task[\"_sendPayloadInChunksTaskFactory\"](\n api,\n {\n payload: \"payload\",\n commandFactory: () =>\n new ProvideTransactionFieldDescriptionCommand({\n data: new Uint8Array(),\n isFirstChunk: true,\n }),\n },\n );\n expect(sendPayloadInChunksTask).toBeInstanceOf(SendPayloadInChunksTask);\n });\n\n it(\"should have a sendCommandInChunksTaskFactory by default\", () => {\n // GIVEN\n const task = new ProvideContextsTask(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[\"_sendCommandInChunksTaskFactory\"]).toBeDefined();\n const sendCommandInChunksTask = task[\"_sendCommandInChunksTaskFactory\"](\n api,\n {\n data: new Uint8Array(),\n commandFactory: () =>\n new StoreTransactionCommand({\n serializedTransaction: new Uint8Array(),\n isFirstChunk: true,\n }),\n },\n );\n expect(sendCommandInChunksTask).toBeInstanceOf(SendCommandInChunksTask);\n });\n });\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["ClearSignContextType", "CommandResultFactory", "InvalidStatusWordError", "LoadCertificateCommand", "Left", "Right", "ProvideEnumCommand", "ProvideNetworkConfigurationCommand", "ProvideNFTInformationCommand", "ProvideProxyInfoCommand", "ProvideTokenInformationCommand", "ProvideTransactionFieldDescriptionCommand", "ProvideTransactionInformationCommand", "ProvideTrustedNameCommand", "ProvideWeb3CheckCommand", "SetExternalPluginCommand", "SetPluginCommand", "StoreTransactionCommand", "makeDeviceActionInternalApiMock", "ProvideContextsTask", "SendCommandInChunksTask", "SendPayloadInChunksTask", "api", "successResult", "errorResult", "sendPayloadInChunksRunMock", "sendCommandInChunksTaskRunMock", "sendCommandInChunksTaskMockFactory", "sendPayloadInChunksTaskMockFactory", "a", "args", "result", "commandFactory", "mockArgs", "command", "commandFactory2", "command2", "contextType", "commandClass", "withPayloadLength", "task", "sendPayloadInChunksTask", "sendCommandInChunksTask"]
7
- }