@ledgerhq/context-module 1.16.0 → 1.17.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 (298) hide show
  1. package/lib/cjs/package.json +2 -3
  2. package/lib/cjs/src/DefaultContextModule.js +1 -1
  3. package/lib/cjs/src/DefaultContextModule.js.map +3 -3
  4. package/lib/cjs/src/account-ownership/data/AccountOwnershipDataSource.js +2 -0
  5. package/lib/cjs/src/account-ownership/data/AccountOwnershipDataSource.js.map +7 -0
  6. package/lib/cjs/src/account-ownership/data/AccountOwnershipError.js +2 -0
  7. package/lib/cjs/src/account-ownership/data/AccountOwnershipError.js.map +7 -0
  8. package/lib/cjs/src/account-ownership/data/HttpAccountOwnershipDataSource.js +2 -0
  9. package/lib/cjs/src/account-ownership/data/HttpAccountOwnershipDataSource.js.map +7 -0
  10. package/lib/cjs/src/account-ownership/data/HttpAccountOwnershipDataSource.test.js +2 -0
  11. package/lib/cjs/src/account-ownership/data/HttpAccountOwnershipDataSource.test.js.map +7 -0
  12. package/lib/cjs/src/account-ownership/data/dto/AccountOwnershipDto.js +2 -0
  13. package/lib/cjs/src/account-ownership/data/dto/AccountOwnershipDto.js.map +7 -0
  14. package/lib/cjs/src/account-ownership/di/accountOwnershipModuleFactory.js +2 -0
  15. package/lib/cjs/src/account-ownership/di/accountOwnershipModuleFactory.js.map +7 -0
  16. package/lib/cjs/src/account-ownership/di/accountOwnershipTypes.js +2 -0
  17. package/lib/cjs/src/account-ownership/di/accountOwnershipTypes.js.map +7 -0
  18. package/lib/cjs/src/account-ownership/domain/AccountOwnershipContextLoader.js +2 -0
  19. package/lib/cjs/src/account-ownership/domain/AccountOwnershipContextLoader.js.map +7 -0
  20. package/lib/cjs/src/account-ownership/domain/AccountOwnershipContextLoader.test.js +2 -0
  21. package/lib/cjs/src/account-ownership/domain/AccountOwnershipContextLoader.test.js.map +7 -0
  22. package/lib/cjs/src/calldata/data/HttpCalldataDescriptorDataSource.js +1 -1
  23. package/lib/cjs/src/calldata/data/HttpCalldataDescriptorDataSource.js.map +3 -3
  24. package/lib/cjs/src/calldata/data/HttpCalldataDescriptorDataSource.test.js +1 -1
  25. package/lib/cjs/src/calldata/data/HttpCalldataDescriptorDataSource.test.js.map +3 -3
  26. package/lib/cjs/src/calldata/di/calldataModuleFactory.js +1 -1
  27. package/lib/cjs/src/calldata/di/calldataModuleFactory.js.map +3 -3
  28. package/lib/cjs/src/di.js +1 -1
  29. package/lib/cjs/src/di.js.map +3 -3
  30. package/lib/cjs/src/dynamic-network/data/HttpDynamicNetworkDataSource.js +1 -1
  31. package/lib/cjs/src/dynamic-network/data/HttpDynamicNetworkDataSource.js.map +3 -3
  32. package/lib/cjs/src/dynamic-network/data/HttpDynamicNetworkDataSource.test.js +1 -1
  33. package/lib/cjs/src/dynamic-network/data/HttpDynamicNetworkDataSource.test.js.map +3 -3
  34. package/lib/cjs/src/external-plugin/data/HttpExternalPluginDataSource.js +1 -1
  35. package/lib/cjs/src/external-plugin/data/HttpExternalPluginDataSource.js.map +3 -3
  36. package/lib/cjs/src/external-plugin/data/HttpExternalPluginDataSource.test.js +1 -1
  37. package/lib/cjs/src/external-plugin/data/HttpExternalPluginDataSource.test.js.map +3 -3
  38. package/lib/cjs/src/gated-signing/data/HttpGatedDescriptorDataSource.js +1 -1
  39. package/lib/cjs/src/gated-signing/data/HttpGatedDescriptorDataSource.js.map +3 -3
  40. package/lib/cjs/src/gated-signing/data/HttpGatedDescriptorDataSource.test.js +1 -1
  41. package/lib/cjs/src/gated-signing/data/HttpGatedDescriptorDataSource.test.js.map +3 -3
  42. package/lib/cjs/src/index.js +1 -1
  43. package/lib/cjs/src/index.js.map +2 -2
  44. package/lib/cjs/src/network/di/networkModuleFactory.js +2 -0
  45. package/lib/cjs/src/network/di/networkModuleFactory.js.map +7 -0
  46. package/lib/cjs/src/network/di/networkTypes.js +2 -0
  47. package/lib/cjs/src/network/di/networkTypes.js.map +7 -0
  48. package/lib/cjs/src/network/networkClientFactory.js +2 -0
  49. package/lib/cjs/src/network/networkClientFactory.js.map +7 -0
  50. package/lib/cjs/src/network/networkClientFactory.test.js +2 -0
  51. package/lib/cjs/src/network/networkClientFactory.test.js.map +7 -0
  52. package/lib/cjs/src/nft/data/HttpNftDataSource.js +1 -1
  53. package/lib/cjs/src/nft/data/HttpNftDataSource.js.map +3 -3
  54. package/lib/cjs/src/nft/data/HttpNftDataSource.test.js +1 -1
  55. package/lib/cjs/src/nft/data/HttpNftDataSource.test.js.map +3 -3
  56. package/lib/cjs/src/pki/data/HttpPkiCertificateDataSource.js +1 -1
  57. package/lib/cjs/src/pki/data/HttpPkiCertificateDataSource.js.map +3 -3
  58. package/lib/cjs/src/pki/data/HttpPkiCertificateDataSource.test.js +1 -1
  59. package/lib/cjs/src/pki/data/HttpPkiCertificateDataSource.test.js.map +3 -3
  60. package/lib/cjs/src/proxy/data/HttpProxyDataSource.js +1 -1
  61. package/lib/cjs/src/proxy/data/HttpProxyDataSource.js.map +3 -3
  62. package/lib/cjs/src/proxy/data/HttpProxyDataSource.test.js +1 -1
  63. package/lib/cjs/src/proxy/data/HttpProxyDataSource.test.js.map +3 -3
  64. package/lib/cjs/src/proxy/data/HttpSafeProxyDataSource.js +1 -1
  65. package/lib/cjs/src/proxy/data/HttpSafeProxyDataSource.js.map +3 -3
  66. package/lib/cjs/src/proxy/data/HttpSafeProxyDataSource.test.js +1 -1
  67. package/lib/cjs/src/proxy/data/HttpSafeProxyDataSource.test.js.map +3 -3
  68. package/lib/cjs/src/proxy/di/proxyModuleFactory.test.js +1 -1
  69. package/lib/cjs/src/proxy/di/proxyModuleFactory.test.js.map +3 -3
  70. package/lib/cjs/src/reporter/data/BlindSigningReporterDatasource.js +1 -1
  71. package/lib/cjs/src/reporter/data/BlindSigningReporterDatasource.js.map +1 -1
  72. package/lib/cjs/src/reporter/data/HttpBlindSigningReporterDatasource.js +1 -1
  73. package/lib/cjs/src/reporter/data/HttpBlindSigningReporterDatasource.js.map +3 -3
  74. package/lib/cjs/src/reporter/data/HttpBlindSigningReporterDatasource.test.js +1 -1
  75. package/lib/cjs/src/reporter/data/HttpBlindSigningReporterDatasource.test.js.map +3 -3
  76. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.js +1 -1
  77. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.js.map +3 -3
  78. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.test.js +1 -1
  79. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.test.js.map +3 -3
  80. package/lib/cjs/src/shared/model/ClearSignContext.js +1 -1
  81. package/lib/cjs/src/shared/model/ClearSignContext.js.map +2 -2
  82. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.js +1 -1
  83. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.js.map +3 -3
  84. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js +1 -1
  85. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js.map +3 -3
  86. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.js +1 -1
  87. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.js.map +3 -3
  88. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js +1 -1
  89. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js.map +3 -3
  90. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.js +1 -1
  91. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.js.map +3 -3
  92. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.test.js +6 -6
  93. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.test.js.map +3 -3
  94. package/lib/cjs/src/token/data/HttpTokenDataSource.js +1 -1
  95. package/lib/cjs/src/token/data/HttpTokenDataSource.js.map +3 -3
  96. package/lib/cjs/src/token/data/HttpTokenDataSource.test.js +1 -1
  97. package/lib/cjs/src/token/data/HttpTokenDataSource.test.js.map +3 -3
  98. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.js +1 -1
  99. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.js.map +3 -3
  100. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.test.js +1 -1
  101. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.test.js.map +3 -3
  102. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.js +1 -1
  103. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.js.map +3 -3
  104. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js +1 -1
  105. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js.map +3 -3
  106. package/lib/cjs/src/trusted-name/data/HttpTrustedNameDataSource.js +1 -1
  107. package/lib/cjs/src/trusted-name/data/HttpTrustedNameDataSource.js.map +3 -3
  108. package/lib/cjs/src/trusted-name/data/HttpTrustedNameDataSource.test.js +1 -1
  109. package/lib/cjs/src/trusted-name/data/HttpTrustedNameDataSource.test.js.map +3 -3
  110. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.js +1 -1
  111. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.js.map +3 -3
  112. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.test.js +1 -1
  113. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.test.js.map +3 -3
  114. package/lib/esm/package.json +2 -3
  115. package/lib/esm/src/DefaultContextModule.js +1 -1
  116. package/lib/esm/src/DefaultContextModule.js.map +3 -3
  117. package/lib/esm/src/account-ownership/data/AccountOwnershipDataSource.js +1 -0
  118. package/lib/esm/src/account-ownership/data/AccountOwnershipDataSource.js.map +7 -0
  119. package/lib/esm/src/account-ownership/data/AccountOwnershipError.js +2 -0
  120. package/lib/esm/src/account-ownership/data/AccountOwnershipError.js.map +7 -0
  121. package/lib/esm/src/account-ownership/data/HttpAccountOwnershipDataSource.js +2 -0
  122. package/lib/esm/src/account-ownership/data/HttpAccountOwnershipDataSource.js.map +7 -0
  123. package/lib/esm/src/account-ownership/data/HttpAccountOwnershipDataSource.test.js +2 -0
  124. package/lib/esm/src/account-ownership/data/HttpAccountOwnershipDataSource.test.js.map +7 -0
  125. package/lib/esm/src/account-ownership/data/dto/AccountOwnershipDto.js +1 -0
  126. package/lib/esm/src/account-ownership/data/dto/AccountOwnershipDto.js.map +7 -0
  127. package/lib/esm/src/account-ownership/di/accountOwnershipModuleFactory.js +2 -0
  128. package/lib/esm/src/account-ownership/di/accountOwnershipModuleFactory.js.map +7 -0
  129. package/lib/esm/src/account-ownership/di/accountOwnershipTypes.js +2 -0
  130. package/lib/esm/src/account-ownership/di/accountOwnershipTypes.js.map +7 -0
  131. package/lib/esm/src/account-ownership/domain/AccountOwnershipContextLoader.js +2 -0
  132. package/lib/esm/src/account-ownership/domain/AccountOwnershipContextLoader.js.map +7 -0
  133. package/lib/esm/src/account-ownership/domain/AccountOwnershipContextLoader.test.js +2 -0
  134. package/lib/esm/src/account-ownership/domain/AccountOwnershipContextLoader.test.js.map +7 -0
  135. package/lib/esm/src/calldata/data/HttpCalldataDescriptorDataSource.js +1 -1
  136. package/lib/esm/src/calldata/data/HttpCalldataDescriptorDataSource.js.map +3 -3
  137. package/lib/esm/src/calldata/data/HttpCalldataDescriptorDataSource.test.js +1 -1
  138. package/lib/esm/src/calldata/data/HttpCalldataDescriptorDataSource.test.js.map +3 -3
  139. package/lib/esm/src/calldata/di/calldataModuleFactory.js +1 -1
  140. package/lib/esm/src/calldata/di/calldataModuleFactory.js.map +3 -3
  141. package/lib/esm/src/di.js +1 -1
  142. package/lib/esm/src/di.js.map +3 -3
  143. package/lib/esm/src/dynamic-network/data/HttpDynamicNetworkDataSource.js +1 -1
  144. package/lib/esm/src/dynamic-network/data/HttpDynamicNetworkDataSource.js.map +3 -3
  145. package/lib/esm/src/dynamic-network/data/HttpDynamicNetworkDataSource.test.js +1 -1
  146. package/lib/esm/src/dynamic-network/data/HttpDynamicNetworkDataSource.test.js.map +3 -3
  147. package/lib/esm/src/external-plugin/data/HttpExternalPluginDataSource.js +1 -1
  148. package/lib/esm/src/external-plugin/data/HttpExternalPluginDataSource.js.map +3 -3
  149. package/lib/esm/src/external-plugin/data/HttpExternalPluginDataSource.test.js +1 -1
  150. package/lib/esm/src/external-plugin/data/HttpExternalPluginDataSource.test.js.map +3 -3
  151. package/lib/esm/src/gated-signing/data/HttpGatedDescriptorDataSource.js +1 -1
  152. package/lib/esm/src/gated-signing/data/HttpGatedDescriptorDataSource.js.map +3 -3
  153. package/lib/esm/src/gated-signing/data/HttpGatedDescriptorDataSource.test.js +1 -1
  154. package/lib/esm/src/gated-signing/data/HttpGatedDescriptorDataSource.test.js.map +3 -3
  155. package/lib/esm/src/index.js +1 -1
  156. package/lib/esm/src/index.js.map +2 -2
  157. package/lib/esm/src/network/di/networkModuleFactory.js +2 -0
  158. package/lib/esm/src/network/di/networkModuleFactory.js.map +7 -0
  159. package/lib/esm/src/network/di/networkTypes.js +2 -0
  160. package/lib/esm/src/network/di/networkTypes.js.map +7 -0
  161. package/lib/esm/src/network/networkClientFactory.js +2 -0
  162. package/lib/esm/src/network/networkClientFactory.js.map +7 -0
  163. package/lib/esm/src/network/networkClientFactory.test.js +2 -0
  164. package/lib/esm/src/network/networkClientFactory.test.js.map +7 -0
  165. package/lib/esm/src/nft/data/HttpNftDataSource.js +1 -1
  166. package/lib/esm/src/nft/data/HttpNftDataSource.js.map +3 -3
  167. package/lib/esm/src/nft/data/HttpNftDataSource.test.js +1 -1
  168. package/lib/esm/src/nft/data/HttpNftDataSource.test.js.map +3 -3
  169. package/lib/esm/src/pki/data/HttpPkiCertificateDataSource.js +1 -1
  170. package/lib/esm/src/pki/data/HttpPkiCertificateDataSource.js.map +3 -3
  171. package/lib/esm/src/pki/data/HttpPkiCertificateDataSource.test.js +1 -1
  172. package/lib/esm/src/pki/data/HttpPkiCertificateDataSource.test.js.map +3 -3
  173. package/lib/esm/src/proxy/data/HttpProxyDataSource.js +1 -1
  174. package/lib/esm/src/proxy/data/HttpProxyDataSource.js.map +3 -3
  175. package/lib/esm/src/proxy/data/HttpProxyDataSource.test.js +1 -1
  176. package/lib/esm/src/proxy/data/HttpProxyDataSource.test.js.map +3 -3
  177. package/lib/esm/src/proxy/data/HttpSafeProxyDataSource.js +1 -1
  178. package/lib/esm/src/proxy/data/HttpSafeProxyDataSource.js.map +3 -3
  179. package/lib/esm/src/proxy/data/HttpSafeProxyDataSource.test.js +1 -1
  180. package/lib/esm/src/proxy/data/HttpSafeProxyDataSource.test.js.map +3 -3
  181. package/lib/esm/src/proxy/di/proxyModuleFactory.test.js +1 -1
  182. package/lib/esm/src/proxy/di/proxyModuleFactory.test.js.map +3 -3
  183. package/lib/esm/src/reporter/data/HttpBlindSigningReporterDatasource.js +1 -1
  184. package/lib/esm/src/reporter/data/HttpBlindSigningReporterDatasource.js.map +3 -3
  185. package/lib/esm/src/reporter/data/HttpBlindSigningReporterDatasource.test.js +1 -1
  186. package/lib/esm/src/reporter/data/HttpBlindSigningReporterDatasource.test.js.map +3 -3
  187. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.js +1 -1
  188. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.js.map +3 -3
  189. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.test.js +1 -1
  190. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.test.js.map +3 -3
  191. package/lib/esm/src/shared/model/ClearSignContext.js +1 -1
  192. package/lib/esm/src/shared/model/ClearSignContext.js.map +2 -2
  193. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.js +1 -1
  194. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.js.map +3 -3
  195. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js +1 -1
  196. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js.map +3 -3
  197. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.js +1 -1
  198. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.js.map +3 -3
  199. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js +1 -1
  200. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js.map +3 -3
  201. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.js +1 -1
  202. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.js.map +3 -3
  203. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.test.js +6 -6
  204. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.test.js.map +3 -3
  205. package/lib/esm/src/token/data/HttpTokenDataSource.js +1 -1
  206. package/lib/esm/src/token/data/HttpTokenDataSource.js.map +3 -3
  207. package/lib/esm/src/token/data/HttpTokenDataSource.test.js +1 -1
  208. package/lib/esm/src/token/data/HttpTokenDataSource.test.js.map +3 -3
  209. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.js +1 -1
  210. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.js.map +3 -3
  211. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.test.js +1 -1
  212. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.test.js.map +3 -3
  213. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.js +1 -1
  214. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.js.map +3 -3
  215. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js +1 -1
  216. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js.map +3 -3
  217. package/lib/esm/src/trusted-name/data/HttpTrustedNameDataSource.js +1 -1
  218. package/lib/esm/src/trusted-name/data/HttpTrustedNameDataSource.js.map +3 -3
  219. package/lib/esm/src/trusted-name/data/HttpTrustedNameDataSource.test.js +1 -1
  220. package/lib/esm/src/trusted-name/data/HttpTrustedNameDataSource.test.js.map +3 -3
  221. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.js +1 -1
  222. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.js.map +3 -3
  223. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.test.js +1 -1
  224. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.test.js.map +3 -3
  225. package/lib/types/src/DefaultContextModule.d.ts.map +1 -1
  226. package/lib/types/src/account-ownership/data/AccountOwnershipDataSource.d.ts +17 -0
  227. package/lib/types/src/account-ownership/data/AccountOwnershipDataSource.d.ts.map +1 -0
  228. package/lib/types/src/account-ownership/data/AccountOwnershipError.d.ts +17 -0
  229. package/lib/types/src/account-ownership/data/AccountOwnershipError.d.ts.map +1 -0
  230. package/lib/types/src/account-ownership/data/HttpAccountOwnershipDataSource.d.ts +30 -0
  231. package/lib/types/src/account-ownership/data/HttpAccountOwnershipDataSource.d.ts.map +1 -0
  232. package/lib/types/src/account-ownership/data/HttpAccountOwnershipDataSource.test.d.ts +2 -0
  233. package/lib/types/src/account-ownership/data/HttpAccountOwnershipDataSource.test.d.ts.map +1 -0
  234. package/lib/types/src/account-ownership/data/dto/AccountOwnershipDto.d.ts +6 -0
  235. package/lib/types/src/account-ownership/data/dto/AccountOwnershipDto.d.ts.map +1 -0
  236. package/lib/types/src/account-ownership/di/accountOwnershipModuleFactory.d.ts +3 -0
  237. package/lib/types/src/account-ownership/di/accountOwnershipModuleFactory.d.ts.map +1 -0
  238. package/lib/types/src/account-ownership/di/accountOwnershipTypes.d.ts +5 -0
  239. package/lib/types/src/account-ownership/di/accountOwnershipTypes.d.ts.map +1 -0
  240. package/lib/types/src/account-ownership/domain/AccountOwnershipContextLoader.d.ts +20 -0
  241. package/lib/types/src/account-ownership/domain/AccountOwnershipContextLoader.d.ts.map +1 -0
  242. package/lib/types/src/account-ownership/domain/AccountOwnershipContextLoader.test.d.ts +2 -0
  243. package/lib/types/src/account-ownership/domain/AccountOwnershipContextLoader.test.d.ts.map +1 -0
  244. package/lib/types/src/calldata/data/HttpCalldataDescriptorDataSource.d.ts +3 -1
  245. package/lib/types/src/calldata/data/HttpCalldataDescriptorDataSource.d.ts.map +1 -1
  246. package/lib/types/src/calldata/di/calldataModuleFactory.d.ts.map +1 -1
  247. package/lib/types/src/di.d.ts.map +1 -1
  248. package/lib/types/src/dynamic-network/data/HttpDynamicNetworkDataSource.d.ts +3 -1
  249. package/lib/types/src/dynamic-network/data/HttpDynamicNetworkDataSource.d.ts.map +1 -1
  250. package/lib/types/src/external-plugin/data/HttpExternalPluginDataSource.d.ts +3 -1
  251. package/lib/types/src/external-plugin/data/HttpExternalPluginDataSource.d.ts.map +1 -1
  252. package/lib/types/src/gated-signing/data/HttpGatedDescriptorDataSource.d.ts +3 -1
  253. package/lib/types/src/gated-signing/data/HttpGatedDescriptorDataSource.d.ts.map +1 -1
  254. package/lib/types/src/index.d.ts +4 -0
  255. package/lib/types/src/index.d.ts.map +1 -1
  256. package/lib/types/src/network/di/networkModuleFactory.d.ts +4 -0
  257. package/lib/types/src/network/di/networkModuleFactory.d.ts.map +1 -0
  258. package/lib/types/src/network/di/networkTypes.d.ts +4 -0
  259. package/lib/types/src/network/di/networkTypes.d.ts.map +1 -0
  260. package/lib/types/src/network/networkClientFactory.d.ts +4 -0
  261. package/lib/types/src/network/networkClientFactory.d.ts.map +1 -0
  262. package/lib/types/src/network/networkClientFactory.test.d.ts +2 -0
  263. package/lib/types/src/network/networkClientFactory.test.d.ts.map +1 -0
  264. package/lib/types/src/nft/data/HttpNftDataSource.d.ts +3 -1
  265. package/lib/types/src/nft/data/HttpNftDataSource.d.ts.map +1 -1
  266. package/lib/types/src/pki/data/HttpPkiCertificateDataSource.d.ts +4 -1
  267. package/lib/types/src/pki/data/HttpPkiCertificateDataSource.d.ts.map +1 -1
  268. package/lib/types/src/proxy/data/HttpProxyDataSource.d.ts +3 -1
  269. package/lib/types/src/proxy/data/HttpProxyDataSource.d.ts.map +1 -1
  270. package/lib/types/src/proxy/data/HttpSafeProxyDataSource.d.ts +3 -1
  271. package/lib/types/src/proxy/data/HttpSafeProxyDataSource.d.ts.map +1 -1
  272. package/lib/types/src/reporter/data/BlindSigningReporterDatasource.d.ts +7 -1
  273. package/lib/types/src/reporter/data/BlindSigningReporterDatasource.d.ts.map +1 -1
  274. package/lib/types/src/reporter/data/HttpBlindSigningReporterDatasource.d.ts +3 -1
  275. package/lib/types/src/reporter/data/HttpBlindSigningReporterDatasource.d.ts.map +1 -1
  276. package/lib/types/src/safe/data/HttpSafeAccountDataSource.d.ts +3 -1
  277. package/lib/types/src/safe/data/HttpSafeAccountDataSource.d.ts.map +1 -1
  278. package/lib/types/src/shared/model/ClearSignContext.d.ts +2 -1
  279. package/lib/types/src/shared/model/ClearSignContext.d.ts.map +1 -1
  280. package/lib/types/src/solana/data/HttpSolanaOwnerInfoDataSource.d.ts +3 -1
  281. package/lib/types/src/solana/data/HttpSolanaOwnerInfoDataSource.d.ts.map +1 -1
  282. package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.d.ts +3 -2
  283. package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.d.ts.map +1 -1
  284. package/lib/types/src/solanaToken/data/HttpSolanaTokenDataSource.d.ts +3 -1
  285. package/lib/types/src/solanaToken/data/HttpSolanaTokenDataSource.d.ts.map +1 -1
  286. package/lib/types/src/token/data/HttpTokenDataSource.d.ts +3 -1
  287. package/lib/types/src/token/data/HttpTokenDataSource.d.ts.map +1 -1
  288. package/lib/types/src/transaction-check/data/HttpTransactionCheckDataSource.d.ts +3 -1
  289. package/lib/types/src/transaction-check/data/HttpTransactionCheckDataSource.d.ts.map +1 -1
  290. package/lib/types/src/transaction-check/data/HttpTypedDataCheckDataSource.d.ts +3 -1
  291. package/lib/types/src/transaction-check/data/HttpTypedDataCheckDataSource.d.ts.map +1 -1
  292. package/lib/types/src/trusted-name/data/HttpTrustedNameDataSource.d.ts +3 -1
  293. package/lib/types/src/trusted-name/data/HttpTrustedNameDataSource.d.ts.map +1 -1
  294. package/lib/types/src/typed-data/data/HttpTypedDataDataSource.d.ts +3 -1
  295. package/lib/types/src/typed-data/data/HttpTypedDataDataSource.d.ts.map +1 -1
  296. package/lib/types/src/typed-data/data/HttpTypedDataDataSource.test.d.ts.map +1 -1
  297. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  298. package/package.json +5 -6
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/solanaLifi/data/HttpSolanaLifiDataSource.ts"],
4
- "sourcesContent": ["import { LoggerPublisherService } from \"@ledgerhq/device-management-kit\";\nimport axios from \"axios\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { LEDGER_CLIENT_VERSION_HEADER } from \"@/shared/constant/HttpHeaders\";\nimport PACKAGE from \"@root/package.json\";\n\nimport {\n GetTransactionDescriptorsParams,\n GetTransactionDescriptorsResponse,\n SolanaLifiDataSource,\n} from \"./SolanaLifiDataSource\";\n\n@injectable()\nexport class HttpSolanaLifiDataSource implements SolanaLifiDataSource {\n private logger: LoggerPublisherService;\n\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n @inject(configTypes.ContextModuleLoggerFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n ) {\n this.logger = loggerFactory(\"HttpSolanaLifiDataSource\");\n }\n\n public async getTransactionDescriptorsPayload({\n templateId,\n }: GetTransactionDescriptorsParams): Promise<\n Either<Error, GetTransactionDescriptorsResponse>\n > {\n const url = `${this.config.cal.url}/swap_templates`;\n const params = {\n id: templateId,\n output: \"id,chain_id,instructions,descriptors\",\n };\n\n this.logger.debug(\n \"[getTransactionDescriptorsPayload] Fetching transaction descriptors\",\n {\n data: { templateId, url, params },\n },\n );\n\n try {\n const { data } = await axios.request<GetTransactionDescriptorsResponse[]>(\n {\n method: \"GET\",\n url,\n params,\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n },\n },\n );\n\n this.logger.debug(\n \"[getTransactionDescriptorsPayload] Received response\",\n {\n data: {\n templateId,\n responseLength: data?.length ?? 0,\n hasData: !!data && data.length > 0,\n },\n },\n );\n\n if (!data || data.length === 0 || !data[0]) {\n this.logger.warn(\n \"[getTransactionDescriptorsPayload] No transaction descriptors found\",\n {\n data: { templateId, responseLength: data?.length ?? 0 },\n },\n );\n return Left(\n new Error(\n `[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${templateId}`,\n ),\n );\n }\n\n this.logger.info(\n \"[getTransactionDescriptorsPayload] Successfully fetched transaction descriptors\",\n {\n data: {\n templateId,\n descriptorsCount: data[0].descriptors?.length ?? 0,\n },\n },\n );\n\n return Right(data[0]);\n } catch (error) {\n this.logger.error(\n \"[getTransactionDescriptorsPayload] Failed to fetch transaction descriptors\",\n {\n data: {\n templateId,\n url,\n error: error instanceof Error ? error.message : String(error),\n },\n },\n );\n return Left(\n new Error(\n \"[ContextModule] HttpSolanaLifiDataSource: Failed to fetch transaction descriptors\",\n ),\n );\n }\n }\n}\n"],
5
- "mappings": "iOACA,OAAOA,MAAW,QAClB,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,YACnC,OAAiB,QAAAC,EAAM,SAAAC,MAAa,YAEpC,OAAS,eAAAC,MAAmB,0BAE5B,OAAS,gCAAAC,MAAoC,gCAC7C,OAAOC,MAAa,qBASb,IAAMC,EAAN,KAA+D,CAGpE,YAEmBC,EAEjBC,EACA,CAHiB,YAAAD,EAIjB,KAAK,OAASC,EAAc,0BAA0B,CACxD,CATQ,OAWR,MAAa,iCAAiC,CAC5C,WAAAC,CACF,EAEE,CACA,MAAMC,EAAM,GAAG,KAAK,OAAO,IAAI,GAAG,kBAC5BC,EAAS,CACb,GAAIF,EACJ,OAAQ,sCACV,EAEA,KAAK,OAAO,MACV,sEACA,CACE,KAAM,CAAE,WAAAA,EAAY,IAAAC,EAAK,OAAAC,CAAO,CAClC,CACF,EAEA,GAAI,CACF,KAAM,CAAE,KAAAC,CAAK,EAAI,MAAMC,EAAM,QAC3B,CACE,OAAQ,MACR,IAAAH,EACA,OAAAC,EACA,QAAS,CACP,CAACG,CAA4B,EAAG,kBAAkBC,EAAQ,OAAO,EACnE,CACF,CACF,EAaA,OAXA,KAAK,OAAO,MACV,uDACA,CACE,KAAM,CACJ,WAAAN,EACA,eAAgBG,GAAM,QAAU,EAChC,QAAS,CAAC,CAACA,GAAQA,EAAK,OAAS,CACnC,CACF,CACF,EAEI,CAACA,GAAQA,EAAK,SAAW,GAAK,CAACA,EAAK,CAAC,GACvC,KAAK,OAAO,KACV,sEACA,CACE,KAAM,CAAE,WAAAH,EAAY,eAAgBG,GAAM,QAAU,CAAE,CACxD,CACF,EACOI,EACL,IAAI,MACF,+EAA+EP,CAAU,EAC3F,CACF,IAGF,KAAK,OAAO,KACV,kFACA,CACE,KAAM,CACJ,WAAAA,EACA,iBAAkBG,EAAK,CAAC,EAAE,aAAa,QAAU,CACnD,CACF,CACF,EAEOK,EAAML,EAAK,CAAC,CAAC,EACtB,OAASM,EAAO,CACd,YAAK,OAAO,MACV,6EACA,CACE,KAAM,CACJ,WAAAT,EACA,IAAAC,EACA,MAAOQ,aAAiB,MAAQA,EAAM,QAAU,OAAOA,CAAK,CAC9D,CACF,CACF,EACOF,EACL,IAAI,MACF,mFACF,CACF,CACF,CACF,CACF,EAhGaV,EAANa,EAAA,CADNC,EAAW,EAKPC,EAAA,EAAAC,EAAOC,EAAY,MAAM,GAEzBF,EAAA,EAAAC,EAAOC,EAAY,0BAA0B,IANrCjB",
6
- "names": ["axios", "inject", "injectable", "Left", "Right", "configTypes", "LEDGER_CLIENT_VERSION_HEADER", "PACKAGE", "HttpSolanaLifiDataSource", "config", "loggerFactory", "templateId", "url", "params", "data", "axios", "LEDGER_CLIENT_VERSION_HEADER", "PACKAGE", "Left", "Right", "error", "__decorateClass", "injectable", "__decorateParam", "inject", "configTypes"]
4
+ "sourcesContent": ["import {\n DmkNetworkClient,\n LoggerPublisherService,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { networkTypes } from \"@/network/di/networkTypes\";\n\nimport {\n GetTransactionDescriptorsParams,\n GetTransactionDescriptorsResponse,\n SolanaLifiDataSource,\n} from \"./SolanaLifiDataSource\";\n\n@injectable()\nexport class HttpSolanaLifiDataSource implements SolanaLifiDataSource {\n private logger: LoggerPublisherService;\n\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n @inject(configTypes.ContextModuleLoggerFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n @inject(networkTypes.NetworkClient)\n private readonly http: DmkNetworkClient,\n ) {\n this.logger = loggerFactory(\"HttpSolanaLifiDataSource\");\n }\n\n public async getTransactionDescriptorsPayload({\n templateId,\n }: GetTransactionDescriptorsParams): Promise<\n Either<Error, GetTransactionDescriptorsResponse>\n > {\n this.logger.debug(\n \"[getTransactionDescriptorsPayload] Fetching transaction descriptors\",\n {\n data: { templateId },\n },\n );\n\n try {\n const data = (await this.http.get(\n `${this.config.cal.url}/swap_templates`,\n {\n params: {\n template_id: templateId,\n output: \"id,chain_id,instructions,descriptors\",\n // TODO LIFI\n // REVERT WHEN CAL SUPPORTS IT\n ref: \"ref=commit:866b6e7633a7a806fab7f9941bcc3df7ee640784\",\n },\n },\n )) as GetTransactionDescriptorsResponse[];\n\n this.logger.debug(\n \"[getTransactionDescriptorsPayload] Received response\",\n {\n data: {\n templateId,\n responseLength: data?.length ?? 0,\n hasData: !!data && data.length > 0,\n },\n },\n );\n\n if (!data || data.length === 0 || !data[0]) {\n this.logger.warn(\n \"[getTransactionDescriptorsPayload] No transaction descriptors found\",\n {\n data: { templateId, responseLength: data?.length ?? 0 },\n },\n );\n return Left(\n new Error(\n `[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${templateId}`,\n ),\n );\n }\n\n this.logger.info(\n \"[getTransactionDescriptorsPayload] Successfully fetched transaction descriptors\",\n {\n data: {\n templateId,\n descriptorsCount: data[0].descriptors?.length ?? 0,\n },\n },\n );\n\n return Right(data[0]);\n } catch (error) {\n this.logger.error(\n \"[getTransactionDescriptorsPayload] Failed to fetch transaction descriptors\",\n {\n data: {\n templateId,\n error: error instanceof Error ? error.message : String(error),\n },\n },\n );\n return Left(\n new Error(\n \"[ContextModule] HttpSolanaLifiDataSource: Failed to fetch transaction descriptors\",\n ),\n );\n }\n }\n}\n"],
5
+ "mappings": "iOAIA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YACnC,OAAiB,QAAAC,EAAM,SAAAC,MAAa,YAEpC,OAAS,eAAAC,MAAmB,0BAE5B,OAAS,gBAAAC,MAAoB,4BAStB,IAAMC,EAAN,KAA+D,CAGpE,YAEmBC,EAEjBC,EAEiBC,EACjB,CALiB,YAAAF,EAIA,UAAAE,EAEjB,KAAK,OAASD,EAAc,0BAA0B,CACxD,CAXQ,OAaR,MAAa,iCAAiC,CAC5C,WAAAE,CACF,EAEE,CACA,KAAK,OAAO,MACV,sEACA,CACE,KAAM,CAAE,WAAAA,CAAW,CACrB,CACF,EAEA,GAAI,CACF,MAAMC,EAAQ,MAAM,KAAK,KAAK,IAC5B,GAAG,KAAK,OAAO,IAAI,GAAG,kBACtB,CACE,OAAQ,CACN,YAAaD,EACb,OAAQ,uCAGR,IAAK,qDACP,CACF,CACF,EAaA,OAXA,KAAK,OAAO,MACV,uDACA,CACE,KAAM,CACJ,WAAAA,EACA,eAAgBC,GAAM,QAAU,EAChC,QAAS,CAAC,CAACA,GAAQA,EAAK,OAAS,CACnC,CACF,CACF,EAEI,CAACA,GAAQA,EAAK,SAAW,GAAK,CAACA,EAAK,CAAC,GACvC,KAAK,OAAO,KACV,sEACA,CACE,KAAM,CAAE,WAAAD,EAAY,eAAgBC,GAAM,QAAU,CAAE,CACxD,CACF,EACOC,EACL,IAAI,MACF,+EAA+EF,CAAU,EAC3F,CACF,IAGF,KAAK,OAAO,KACV,kFACA,CACE,KAAM,CACJ,WAAAA,EACA,iBAAkBC,EAAK,CAAC,EAAE,aAAa,QAAU,CACnD,CACF,CACF,EAEOE,EAAMF,EAAK,CAAC,CAAC,EACtB,OAASG,EAAO,CACd,YAAK,OAAO,MACV,6EACA,CACE,KAAM,CACJ,WAAAJ,EACA,MAAOI,aAAiB,MAAQA,EAAM,QAAU,OAAOA,CAAK,CAC9D,CACF,CACF,EACOF,EACL,IAAI,MACF,mFACF,CACF,CACF,CACF,CACF,EA7FaN,EAANS,EAAA,CADNC,EAAW,EAKPC,EAAA,EAAAC,EAAOC,EAAY,MAAM,GAEzBF,EAAA,EAAAC,EAAOC,EAAY,0BAA0B,GAE7CF,EAAA,EAAAC,EAAOE,EAAa,aAAa,IARzBd",
6
+ "names": ["inject", "injectable", "Left", "Right", "configTypes", "networkTypes", "HttpSolanaLifiDataSource", "config", "loggerFactory", "http", "templateId", "data", "Left", "Right", "error", "__decorateClass", "injectable", "__decorateParam", "inject", "configTypes", "networkTypes"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import s from"axios";import{Left as i,Right as d}from"purify-ts";import{beforeAll as u,beforeEach as p,describe as m,expect as a,it as n,vi as t}from"vitest";import{LEDGER_CLIENT_VERSION_HEADER as f}from"../../shared/constant/HttpHeaders";import y from"../../../package.json";import{HttpSolanaLifiDataSource as h}from"./HttpSolanaLifiDataSource";t.mock("axios");const w=()=>({debug:t.fn(),info:t.fn(),warn:t.fn(),error:t.fn(),subscribers:[]});m("HttpSolanaLifiDataSource",()=>{let r;const o="tpl-123",c={cal:{url:"https://crypto-assets-service.api.ledger.com/v1",mode:"prod",branch:"main"}};u(()=>{r=new h(c,w)}),p(()=>{t.clearAllMocks()}),n("should call axios with the ledger client version header and correct params",async()=>{const e=t.fn(()=>Promise.resolve({data:[]}));t.spyOn(s,"request").mockImplementation(e),await r.getTransactionDescriptorsPayload({templateId:o}),a(e).toHaveBeenCalledTimes(1),a(e).toHaveBeenCalledWith(a.objectContaining({method:"GET",url:`${c.cal.url}/swap_templates`,params:{id:o,output:"id,chain_id,instructions,descriptors"},headers:{[f]:`context-module/${y.version}`}}))}),n("should return Right(data[0]) when axios responds with a non-empty array",async()=>{const e={descriptors:{swap:{programId:"SwapProgram",accounts:[],data:"abcd"}}};t.spyOn(s,"request").mockResolvedValue({data:[e]});const l=await r.getTransactionDescriptorsPayload({templateId:o});a(l).toEqual(d(e))}),n("should return an error when data is undefined",async()=>{t.spyOn(s,"request").mockResolvedValue({data:void 0});const e=await r.getTransactionDescriptorsPayload({templateId:o});a(e).toEqual(i(new Error(`[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${o}`)))}),n("should return an error when data array is empty",async()=>{t.spyOn(s,"request").mockResolvedValue({data:[]});const e=await r.getTransactionDescriptorsPayload({templateId:o});a(e).toEqual(i(new Error(`[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${o}`)))}),n("should return an error when first element is falsy",async()=>{t.spyOn(s,"request").mockResolvedValue({data:[void 0]});const e=await r.getTransactionDescriptorsPayload({templateId:o});a(e).toEqual(i(new Error(`[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${o}`)))}),n("should return an error when axios throws",async()=>{t.spyOn(s,"request").mockRejectedValue(new Error("network"));const e=await r.getTransactionDescriptorsPayload({templateId:o});a(e).toEqual(i(new Error("[ContextModule] HttpSolanaLifiDataSource: Failed to fetch transaction descriptors")))})});
1
+ import{Left as i,Right as d}from"purify-ts";import{beforeEach as p,describe as u,expect as r,it as n,vi as s}from"vitest";import{HttpSolanaLifiDataSource as f}from"./HttpSolanaLifiDataSource";const m=()=>({debug:s.fn(),info:s.fn(),warn:s.fn(),error:s.fn(),subscribers:[]});u("HttpSolanaLifiDataSource",()=>{let a,e;const t="tpl-123",c={cal:{url:"https://crypto-assets-service.api.ledger.com/v1",mode:"prod",branch:"main"}};p(()=>{s.clearAllMocks(),e={get:s.fn()},a=new f(c,m,e)}),n("should call the network client with the expected URL and params",async()=>{e.get.mockResolvedValue([]),await a.getTransactionDescriptorsPayload({templateId:t}),r(e.get).toHaveBeenCalledTimes(1),r(e.get).toHaveBeenCalledWith("https://crypto-assets-service.api.ledger.com/v1/swap_templates",{params:{template_id:t,output:"id,chain_id,instructions,descriptors",ref:"ref=commit:866b6e7633a7a806fab7f9941bcc3df7ee640784"}})}),n("should return Right(data[0]) when the network client responds with a non-empty array",async()=>{const o={descriptors:{swap:{programId:"SwapProgram",accounts:[],data:"abcd"}}};e.get.mockResolvedValue([o]);const l=await a.getTransactionDescriptorsPayload({templateId:t});r(l).toEqual(d(o))}),n("should return an error when data is undefined",async()=>{e.get.mockResolvedValue(null);const o=await a.getTransactionDescriptorsPayload({templateId:t});r(o).toEqual(i(new Error(`[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${t}`)))}),n("should return an error when data array is empty",async()=>{e.get.mockResolvedValue([]);const o=await a.getTransactionDescriptorsPayload({templateId:t});r(o).toEqual(i(new Error(`[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${t}`)))}),n("should return an error when first element is falsy",async()=>{e.get.mockResolvedValue([null]);const o=await a.getTransactionDescriptorsPayload({templateId:t});r(o).toEqual(i(new Error(`[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${t}`)))}),n("should return an error when the network client throws",async()=>{e.get.mockRejectedValue(new Error("network"));const o=await a.getTransactionDescriptorsPayload({templateId:t});r(o).toEqual(i(new Error("[ContextModule] HttpSolanaLifiDataSource: Failed to fetch transaction descriptors")))})});
2
2
  //# sourceMappingURL=HttpSolanaLifiDataSource.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/solanaLifi/data/HttpSolanaLifiDataSource.test.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport axios from \"axios\";\nimport { Left, Right } from \"purify-ts\";\nimport { beforeAll, beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { LEDGER_CLIENT_VERSION_HEADER } from \"@/shared/constant/HttpHeaders\";\nimport PACKAGE from \"@root/package.json\";\n\nimport { HttpSolanaLifiDataSource } from \"./HttpSolanaLifiDataSource\";\nimport {\n type GetTransactionDescriptorsResponse,\n type SolanaLifiDataSource,\n} from \"./SolanaLifiDataSource\";\n\nvi.mock(\"axios\");\n\nconst mockLoggerFactory = () => ({\n debug: vi.fn(),\n info: vi.fn(),\n warn: vi.fn(),\n error: vi.fn(),\n subscribers: [],\n});\n\ndescribe(\"HttpSolanaLifiDataSource\", () => {\n let datasource: SolanaLifiDataSource;\n const templateId = \"tpl-123\";\n const config: ContextModuleServiceConfig = {\n cal: {\n url: \"https://crypto-assets-service.api.ledger.com/v1\",\n mode: \"prod\",\n branch: \"main\",\n },\n } as ContextModuleServiceConfig;\n\n beforeAll(() => {\n datasource = new HttpSolanaLifiDataSource(config, mockLoggerFactory);\n });\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should call axios with the ledger client version header and correct params\", async () => {\n // given\n const requestSpy = vi.fn(() => Promise.resolve({ data: [] }));\n vi.spyOn(axios, \"request\").mockImplementation(requestSpy);\n\n // when\n await datasource.getTransactionDescriptorsPayload({ templateId });\n\n // then\n expect(requestSpy).toHaveBeenCalledTimes(1);\n expect(requestSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n method: \"GET\",\n url: `${config.cal.url}/swap_templates`,\n params: {\n id: templateId,\n output: \"id,chain_id,instructions,descriptors\",\n },\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n },\n }),\n );\n });\n\n it(\"should return Right(data[0]) when axios responds with a non-empty array\", async () => {\n // given\n const response0: GetTransactionDescriptorsResponse = {\n descriptors: {\n swap: { programId: \"SwapProgram\", accounts: [], data: \"abcd\" } as any,\n },\n } as any;\n\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [response0] });\n\n // when\n const result = await datasource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n // then\n expect(result).toEqual(Right(response0));\n });\n\n it(\"should return an error when data is undefined\", async () => {\n // given\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: undefined });\n\n // when\n const result = await datasource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n // then\n expect(result).toEqual(\n Left(\n new Error(\n `[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${templateId}`,\n ),\n ),\n );\n });\n\n it(\"should return an error when data array is empty\", async () => {\n // given\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [] });\n\n // when\n const result = await datasource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n // then\n expect(result).toEqual(\n Left(\n new Error(\n `[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${templateId}`,\n ),\n ),\n );\n });\n\n it(\"should return an error when first element is falsy\", async () => {\n // given\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [undefined] });\n\n // when\n const result = await datasource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n // then\n expect(result).toEqual(\n Left(\n new Error(\n `[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${templateId}`,\n ),\n ),\n );\n });\n\n it(\"should return an error when axios throws\", async () => {\n // given\n vi.spyOn(axios, \"request\").mockRejectedValue(new Error(\"network\"));\n\n // when\n const result = await datasource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n // then\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSolanaLifiDataSource: Failed to fetch transaction descriptors\",\n ),\n ),\n );\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["axios", "Left", "Right", "beforeAll", "beforeEach", "describe", "expect", "it", "vi", "LEDGER_CLIENT_VERSION_HEADER", "PACKAGE", "HttpSolanaLifiDataSource", "mockLoggerFactory", "datasource", "templateId", "config", "requestSpy", "response0", "result"]
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport { type DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\n\nimport { HttpSolanaLifiDataSource } from \"./HttpSolanaLifiDataSource\";\nimport {\n type GetTransactionDescriptorsResponse,\n type SolanaLifiDataSource,\n} from \"./SolanaLifiDataSource\";\n\nconst mockLoggerFactory = () => ({\n debug: vi.fn(),\n info: vi.fn(),\n warn: vi.fn(),\n error: vi.fn(),\n subscribers: [],\n});\n\ndescribe(\"HttpSolanaLifiDataSource\", () => {\n let datasource: SolanaLifiDataSource;\n let httpMock: { get: ReturnType<typeof vi.fn> };\n const templateId = \"tpl-123\";\n const config: ContextModuleServiceConfig = {\n cal: {\n url: \"https://crypto-assets-service.api.ledger.com/v1\",\n mode: \"prod\",\n branch: \"main\",\n },\n } as ContextModuleServiceConfig;\n\n beforeEach(() => {\n vi.clearAllMocks();\n httpMock = { get: vi.fn() };\n datasource = new HttpSolanaLifiDataSource(\n config,\n mockLoggerFactory,\n httpMock as unknown as DmkNetworkClient,\n );\n });\n\n it(\"should call the network client with the expected URL and params\", async () => {\n // given\n httpMock.get.mockResolvedValue([]);\n\n // when\n await datasource.getTransactionDescriptorsPayload({ templateId });\n\n // then\n expect(httpMock.get).toHaveBeenCalledTimes(1);\n expect(httpMock.get).toHaveBeenCalledWith(\n \"https://crypto-assets-service.api.ledger.com/v1/swap_templates\",\n {\n params: {\n template_id: templateId,\n output: \"id,chain_id,instructions,descriptors\",\n ref: \"ref=commit:866b6e7633a7a806fab7f9941bcc3df7ee640784\",\n },\n },\n );\n });\n\n it(\"should return Right(data[0]) when the network client responds with a non-empty array\", async () => {\n // given\n const response0: GetTransactionDescriptorsResponse = {\n descriptors: {\n swap: { programId: \"SwapProgram\", accounts: [], data: \"abcd\" } as any,\n },\n } as any;\n\n httpMock.get.mockResolvedValue([response0]);\n\n // when\n const result = await datasource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n // then\n expect(result).toEqual(Right(response0));\n });\n\n it(\"should return an error when data is undefined\", async () => {\n // given\n httpMock.get.mockResolvedValue(null);\n\n // when\n const result = await datasource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n // then\n expect(result).toEqual(\n Left(\n new Error(\n `[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${templateId}`,\n ),\n ),\n );\n });\n\n it(\"should return an error when data array is empty\", async () => {\n // given\n httpMock.get.mockResolvedValue([]);\n\n // when\n const result = await datasource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n // then\n expect(result).toEqual(\n Left(\n new Error(\n `[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${templateId}`,\n ),\n ),\n );\n });\n\n it(\"should return an error when first element is falsy\", async () => {\n // given\n httpMock.get.mockResolvedValue([null]);\n\n // when\n const result = await datasource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n // then\n expect(result).toEqual(\n Left(\n new Error(\n `[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${templateId}`,\n ),\n ),\n );\n });\n\n it(\"should return an error when the network client throws\", async () => {\n // given\n httpMock.get.mockRejectedValue(new Error(\"network\"));\n\n // when\n const result = await datasource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n // then\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSolanaLifiDataSource: Failed to fetch transaction descriptors\",\n ),\n ),\n );\n });\n});\n"],
5
+ "mappings": "AAGA,OAAS,QAAAA,EAAM,SAAAC,MAAa,YAC5B,OAAS,cAAAC,EAAY,YAAAC,EAAU,UAAAC,EAAQ,MAAAC,EAAI,MAAAC,MAAU,SAIrD,OAAS,4BAAAC,MAAgC,6BAMzC,MAAMC,EAAoB,KAAO,CAC/B,MAAOF,EAAG,GAAG,EACb,KAAMA,EAAG,GAAG,EACZ,KAAMA,EAAG,GAAG,EACZ,MAAOA,EAAG,GAAG,EACb,YAAa,CAAC,CAChB,GAEAH,EAAS,2BAA4B,IAAM,CACzC,IAAIM,EACAC,EACJ,MAAMC,EAAa,UACbC,EAAqC,CACzC,IAAK,CACH,IAAK,kDACL,KAAM,OACN,OAAQ,MACV,CACF,EAEAV,EAAW,IAAM,CACfI,EAAG,cAAc,EACjBI,EAAW,CAAE,IAAKJ,EAAG,GAAG,CAAE,EAC1BG,EAAa,IAAIF,EACfK,EACAJ,EACAE,CACF,CACF,CAAC,EAEDL,EAAG,kEAAmE,SAAY,CAEhFK,EAAS,IAAI,kBAAkB,CAAC,CAAC,EAGjC,MAAMD,EAAW,iCAAiC,CAAE,WAAAE,CAAW,CAAC,EAGhEP,EAAOM,EAAS,GAAG,EAAE,sBAAsB,CAAC,EAC5CN,EAAOM,EAAS,GAAG,EAAE,qBACnB,iEACA,CACE,OAAQ,CACN,YAAaC,EACb,OAAQ,uCACR,IAAK,qDACP,CACF,CACF,CACF,CAAC,EAEDN,EAAG,uFAAwF,SAAY,CAErG,MAAMQ,EAA+C,CACnD,YAAa,CACX,KAAM,CAAE,UAAW,cAAe,SAAU,CAAC,EAAG,KAAM,MAAO,CAC/D,CACF,EAEAH,EAAS,IAAI,kBAAkB,CAACG,CAAS,CAAC,EAG1C,MAAMC,EAAS,MAAML,EAAW,iCAAiC,CAC/D,WAAAE,CACF,CAAC,EAGDP,EAAOU,CAAM,EAAE,QAAQb,EAAMY,CAAS,CAAC,CACzC,CAAC,EAEDR,EAAG,gDAAiD,SAAY,CAE9DK,EAAS,IAAI,kBAAkB,IAAI,EAGnC,MAAMI,EAAS,MAAML,EAAW,iCAAiC,CAC/D,WAAAE,CACF,CAAC,EAGDP,EAAOU,CAAM,EAAE,QACbd,EACE,IAAI,MACF,+EAA+EW,CAAU,EAC3F,CACF,CACF,CACF,CAAC,EAEDN,EAAG,kDAAmD,SAAY,CAEhEK,EAAS,IAAI,kBAAkB,CAAC,CAAC,EAGjC,MAAMI,EAAS,MAAML,EAAW,iCAAiC,CAC/D,WAAAE,CACF,CAAC,EAGDP,EAAOU,CAAM,EAAE,QACbd,EACE,IAAI,MACF,+EAA+EW,CAAU,EAC3F,CACF,CACF,CACF,CAAC,EAEDN,EAAG,qDAAsD,SAAY,CAEnEK,EAAS,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAGrC,MAAMI,EAAS,MAAML,EAAW,iCAAiC,CAC/D,WAAAE,CACF,CAAC,EAGDP,EAAOU,CAAM,EAAE,QACbd,EACE,IAAI,MACF,+EAA+EW,CAAU,EAC3F,CACF,CACF,CACF,CAAC,EAEDN,EAAG,wDAAyD,SAAY,CAEtEK,EAAS,IAAI,kBAAkB,IAAI,MAAM,SAAS,CAAC,EAGnD,MAAMI,EAAS,MAAML,EAAW,iCAAiC,CAC/D,WAAAE,CACF,CAAC,EAGDP,EAAOU,CAAM,EAAE,QACbd,EACE,IAAI,MACF,mFACF,CACF,CACF,CACF,CAAC,CACH,CAAC",
6
+ "names": ["Left", "Right", "beforeEach", "describe", "expect", "it", "vi", "HttpSolanaLifiDataSource", "mockLoggerFactory", "datasource", "httpMock", "templateId", "config", "response0", "result"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var l=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var c=(n,o,e,t)=>{for(var r=t>1?void 0:t?p(o,e):o,i=n.length-1,s;i>=0;i--)(s=n[i])&&(r=(t?s(o,e,r):s(r))||r);return t&&r&&l(o,e,r),r},m=(n,o)=>(e,t)=>o(e,t,n);import d from"axios";import{inject as u,injectable as h}from"inversify";import{Left as f,Right as _}from"purify-ts";import{configTypes as g}from"../../config/di/configTypes";import{LEDGER_CLIENT_VERSION_HEADER as k}from"../../shared/constant/HttpHeaders";import E from"../../../package.json";let a=class{constructor(o){this.config=o}async getTokenInfosPayload({tokenInternalId:o}){try{const{data:e}=await d.request({method:"GET",url:`${this.config.cal.url}/tokens`,params:{id:o,output:"id,name,network,network_family,network_type,exchange_app_config_serialized,live_signature,ticker,decimals,blockchain_name,chain_id,contract_address,descriptor,descriptor_exchange_app,units,symbol",ref:`branch:${this.config.cal.branch}`},headers:{[k]:`context-module/${E.version}`}});return!e||e.length===0||!e[0]?f(new Error(`[ContextModule] HttpSolanaTokenDataSource: no token metadata for id ${o}`)):_(e[0])}catch{return f(new Error("[ContextModule] HttpSolanaTokenDataSource: Failed to fetch token informations"))}}};a=c([h(),m(0,u(g.Config))],a);export{a as HttpSolanaTokenDataSource};
1
+ var f=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var m=(n,o,e,r)=>{for(var t=r>1?void 0:r?k(o,e):o,i=n.length-1,s;i>=0;i--)(s=n[i])&&(t=(r?s(o,e,t):s(t))||t);return r&&t&&f(o,e,t),t},c=(n,o)=>(e,r)=>o(e,r,n);import{inject as p,injectable as d}from"inversify";import{Left as l,Right as h}from"purify-ts";import{configTypes as g}from"../../config/di/configTypes";import{networkTypes as u}from"../../network/di/networkTypes";let a=class{constructor(o,e){this.config=o;this.http=e}async getTokenInfosPayload({tokenInternalId:o}){try{const e=await this.http.get(`${this.config.cal.url}/tokens`,{params:{id:o,output:"id,name,network,network_family,network_type,exchange_app_config_serialized,live_signature,ticker,decimals,blockchain_name,chain_id,contract_address,descriptor,descriptor_exchange_app,units,symbol",ref:`branch:${this.config.cal.branch}`}});return!e||e.length===0||!e[0]?l(new Error(`[ContextModule] HttpSolanaTokenDataSource: no token metadata for id ${o}`)):h(e[0])}catch{return l(new Error("[ContextModule] HttpSolanaTokenDataSource: Failed to fetch token informations"))}}};a=m([d(),c(0,p(g.Config)),c(1,p(u.NetworkClient))],a);export{a as HttpSolanaTokenDataSource};
2
2
  //# sourceMappingURL=HttpSolanaTokenDataSource.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/solanaToken/data/HttpSolanaTokenDataSource.ts"],
4
- "sourcesContent": ["import axios from \"axios\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { LEDGER_CLIENT_VERSION_HEADER } from \"@/shared/constant/HttpHeaders\";\nimport PACKAGE from \"@root/package.json\";\n\nimport {\n GetSolanaTokenInfosParams,\n SolanaTokenDataSource,\n TokenDataResponse,\n} from \"./SolanaTokenDataSource\";\n\n@injectable()\nexport class HttpSolanaTokenDataSource implements SolanaTokenDataSource {\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n ) {}\n public async getTokenInfosPayload({\n tokenInternalId,\n }: GetSolanaTokenInfosParams): Promise<Either<Error, TokenDataResponse>> {\n try {\n const { data } = await axios.request<TokenDataResponse[]>({\n method: \"GET\",\n url: `${this.config.cal.url}/tokens`,\n params: {\n id: tokenInternalId,\n output:\n \"id,name,network,network_family,network_type,exchange_app_config_serialized,live_signature,ticker,decimals,blockchain_name,chain_id,contract_address,descriptor,descriptor_exchange_app,units,symbol\",\n ref: `branch:${this.config.cal.branch}`,\n },\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n },\n });\n\n if (!data || data.length === 0 || !data[0]) {\n return Left(\n new Error(\n `[ContextModule] HttpSolanaTokenDataSource: no token metadata for id ${tokenInternalId}`,\n ),\n );\n }\n\n return Right(data[0]);\n } catch (_error) {\n return Left(\n new Error(\n \"[ContextModule] HttpSolanaTokenDataSource: Failed to fetch token informations\",\n ),\n );\n }\n }\n}\n"],
5
- "mappings": "iOAAA,OAAOA,MAAW,QAClB,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,YACnC,OAAiB,QAAAC,EAAM,SAAAC,MAAa,YAEpC,OAAS,eAAAC,MAAmB,0BAE5B,OAAS,gCAAAC,MAAoC,gCAC7C,OAAOC,MAAa,qBASb,IAAMC,EAAN,KAAiE,CACtE,YAEmBC,EACjB,CADiB,YAAAA,CAChB,CACH,MAAa,qBAAqB,CAChC,gBAAAC,CACF,EAAyE,CACvE,GAAI,CACF,KAAM,CAAE,KAAAC,CAAK,EAAI,MAAMC,EAAM,QAA6B,CACxD,OAAQ,MACR,IAAK,GAAG,KAAK,OAAO,IAAI,GAAG,UAC3B,OAAQ,CACN,GAAIF,EACJ,OACE,sMACF,IAAK,UAAU,KAAK,OAAO,IAAI,MAAM,EACvC,EACA,QAAS,CACP,CAACG,CAA4B,EAAG,kBAAkBC,EAAQ,OAAO,EACnE,CACF,CAAC,EAED,MAAI,CAACH,GAAQA,EAAK,SAAW,GAAK,CAACA,EAAK,CAAC,EAChCI,EACL,IAAI,MACF,uEAAuEL,CAAe,EACxF,CACF,EAGKM,EAAML,EAAK,CAAC,CAAC,CACtB,MAAiB,CACf,OAAOI,EACL,IAAI,MACF,+EACF,CACF,CACF,CACF,CACF,EAxCaP,EAANS,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAY,MAAM,IAFjBb",
6
- "names": ["axios", "inject", "injectable", "Left", "Right", "configTypes", "LEDGER_CLIENT_VERSION_HEADER", "PACKAGE", "HttpSolanaTokenDataSource", "config", "tokenInternalId", "data", "axios", "LEDGER_CLIENT_VERSION_HEADER", "PACKAGE", "Left", "Right", "__decorateClass", "injectable", "__decorateParam", "inject", "configTypes"]
4
+ "sourcesContent": ["import { DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { networkTypes } from \"@/network/di/networkTypes\";\n\nimport {\n GetSolanaTokenInfosParams,\n SolanaTokenDataSource,\n TokenDataResponse,\n} from \"./SolanaTokenDataSource\";\n\n@injectable()\nexport class HttpSolanaTokenDataSource implements SolanaTokenDataSource {\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n @inject(networkTypes.NetworkClient)\n private readonly http: DmkNetworkClient,\n ) {}\n\n public async getTokenInfosPayload({\n tokenInternalId,\n }: GetSolanaTokenInfosParams): Promise<Either<Error, TokenDataResponse>> {\n try {\n const data = (await this.http.get(`${this.config.cal.url}/tokens`, {\n params: {\n id: tokenInternalId,\n output:\n \"id,name,network,network_family,network_type,exchange_app_config_serialized,live_signature,ticker,decimals,blockchain_name,chain_id,contract_address,descriptor,descriptor_exchange_app,units,symbol\",\n ref: `branch:${this.config.cal.branch}`,\n },\n })) as TokenDataResponse[];\n\n if (!data || data.length === 0 || !data[0]) {\n return Left(\n new Error(\n `[ContextModule] HttpSolanaTokenDataSource: no token metadata for id ${tokenInternalId}`,\n ),\n );\n }\n\n return Right(data[0]);\n } catch (_error) {\n return Left(\n new Error(\n \"[ContextModule] HttpSolanaTokenDataSource: Failed to fetch token informations\",\n ),\n );\n }\n }\n}\n"],
5
+ "mappings": "iOACA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YACnC,OAAiB,QAAAC,EAAM,SAAAC,MAAa,YAEpC,OAAS,eAAAC,MAAmB,0BAE5B,OAAS,gBAAAC,MAAoB,4BAStB,IAAMC,EAAN,KAAiE,CACtE,YAEmBC,EAEAC,EACjB,CAHiB,YAAAD,EAEA,UAAAC,CAChB,CAEH,MAAa,qBAAqB,CAChC,gBAAAC,CACF,EAAyE,CACvE,GAAI,CACF,MAAMC,EAAQ,MAAM,KAAK,KAAK,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,UAAW,CACjE,OAAQ,CACN,GAAID,EACJ,OACE,sMACF,IAAK,UAAU,KAAK,OAAO,IAAI,MAAM,EACvC,CACF,CAAC,EAED,MAAI,CAACC,GAAQA,EAAK,SAAW,GAAK,CAACA,EAAK,CAAC,EAChCC,EACL,IAAI,MACF,uEAAuEF,CAAe,EACxF,CACF,EAGKG,EAAMF,EAAK,CAAC,CAAC,CACtB,MAAiB,CACf,OAAOC,EACL,IAAI,MACF,+EACF,CACF,CACF,CACF,CACF,EAtCaL,EAANO,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAY,MAAM,GAEzBF,EAAA,EAAAC,EAAOE,EAAa,aAAa,IAJzBZ",
6
+ "names": ["inject", "injectable", "Left", "Right", "configTypes", "networkTypes", "HttpSolanaTokenDataSource", "config", "http", "tokenInternalId", "data", "Left", "Right", "__decorateClass", "injectable", "__decorateParam", "inject", "configTypes", "networkTypes"]
7
7
  }
@@ -1,7 +1,7 @@
1
- import r from"axios";import{Left as c,Right as p}from"purify-ts";import{beforeAll as f,beforeEach as h,describe as d,expect as o,it as s,vi as a}from"vitest";import{LEDGER_CLIENT_VERSION_HEADER as y}from"../../shared/constant/HttpHeaders";import k from"../../../package.json";import{HttpSolanaTokenDataSource as S}from"./HttpSolanaTokenDataSource";a.mock("axios");d("HttpSolanaTokenDataSource",()=>{let n;const t="sol:usdc",i={cal:{url:"https://crypto-assets-service.api.ledger.com/v1",mode:"prod",branch:"main"}},u=e=>`[ContextModule] HttpSolanaTokenDataSource: no token metadata for id ${e}`;f(()=>{n=new S(i)}),h(()=>{a.clearAllMocks()}),s("should call axios with the ledger client version header and correct params",async()=>{const e=a.fn(()=>Promise.resolve({data:[]}));a.spyOn(r,"request").mockImplementation(e),await n.getTokenInfosPayload({tokenInternalId:t}),o(e).toHaveBeenCalledTimes(1),o(e).toHaveBeenCalledWith(o.objectContaining({method:"GET",url:`${i.cal.url}/tokens`,params:o.objectContaining({id:t,ref:`branch:${i.cal.branch}`}),headers:{[y]:`context-module/${k.version}`}}))}),s("should return Right(data[0]) when axios responds with a non-empty array",async()=>{const e={descriptor:{data:"ABCD",signatures:{prod:"SIG-PROD",test:"SIG-TEST"}}};a.spyOn(r,"request").mockResolvedValue({data:[e]});const l=await n.getTokenInfosPayload({tokenInternalId:t});o(l).toEqual(p(e))}),d.each`
2
- caseName | apiResponse
3
- ${"data is undefined"} | ${{data:void 0}}
4
- ${"data array is empty"} | ${{data:[]}}
5
- ${"first element is falsy"} | ${{data:[void 0]}}
6
- `("Error cases",({caseName:e,apiResponse:l})=>{s(`should return an error when ${e}`,async()=>{a.spyOn(r,"request").mockResolvedValue(l);const m=await n.getTokenInfosPayload({tokenInternalId:t});o(m).toEqual(c(new Error(u(t))))})}),s("should return an error when axios throws",async()=>{a.spyOn(r,"request").mockRejectedValue(new Error("network"));const e=await n.getTokenInfosPayload({tokenInternalId:t});o(e).toEqual(c(new Error("[ContextModule] HttpSolanaTokenDataSource: Failed to fetch token informations")))})});
1
+ import{Left as c,Right as m}from"purify-ts";import{beforeEach as k,describe as i,expect as n,it as r,vi as d}from"vitest";import{HttpSolanaTokenDataSource as g}from"./HttpSolanaTokenDataSource";i("HttpSolanaTokenDataSource",()=>{let a,e;const o="sol:usdc",s={cal:{url:"https://crypto-assets-service.api.ledger.com/v1",mode:"prod",branch:"main"}},p=t=>`[ContextModule] HttpSolanaTokenDataSource: no token metadata for id ${t}`;k(()=>{d.clearAllMocks(),e={get:d.fn()},a=new g(s,e)}),r("should call http.get with the correct url and params",async()=>{e.get.mockResolvedValue([]),await a.getTokenInfosPayload({tokenInternalId:o}),n(e.get).toHaveBeenCalledTimes(1),n(e.get).toHaveBeenCalledWith(`${s.cal.url}/tokens`,{params:{id:o,output:"id,name,network,network_family,network_type,exchange_app_config_serialized,live_signature,ticker,decimals,blockchain_name,chain_id,contract_address,descriptor,descriptor_exchange_app,units,symbol",ref:`branch:${s.cal.branch}`}})}),r("should return Right(data[0]) when http.get responds with a non-empty array",async()=>{const t={descriptor:{data:"ABCD",signatures:{prod:"SIG-PROD",test:"SIG-TEST"}}};e.get.mockResolvedValue([t]);const l=await a.getTokenInfosPayload({tokenInternalId:o});n(l).toEqual(m(t))}),i.each`
2
+ caseName | responseBody
3
+ ${"data is undefined"} | ${null}
4
+ ${"data array is empty"} | ${[]}
5
+ ${"first element is falsy"} | ${[null]}
6
+ `("Error cases",({caseName:t,responseBody:l})=>{r(`should return an error when ${t}`,async()=>{e.get.mockResolvedValue(l);const u=await a.getTokenInfosPayload({tokenInternalId:o});n(u).toEqual(c(new Error(p(o))))})}),r("should return an error when http.get throws",async()=>{e.get.mockRejectedValue(new Error("network"));const t=await a.getTokenInfosPayload({tokenInternalId:o});n(t).toEqual(c(new Error("[ContextModule] HttpSolanaTokenDataSource: Failed to fetch token informations")))})});
7
7
  //# sourceMappingURL=HttpSolanaTokenDataSource.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/solanaToken/data/HttpSolanaTokenDataSource.test.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport axios from \"axios\";\nimport { Left, Right } from \"purify-ts\";\nimport { beforeAll, beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { LEDGER_CLIENT_VERSION_HEADER } from \"@/shared/constant/HttpHeaders\";\nimport PACKAGE from \"@root/package.json\";\n\nimport { HttpSolanaTokenDataSource } from \"./HttpSolanaTokenDataSource\";\nimport {\n type SolanaTokenDataSource,\n type TokenDataResponse,\n} from \"./SolanaTokenDataSource\";\n\nvi.mock(\"axios\");\n\ndescribe(\"HttpSolanaTokenDataSource\", () => {\n let datasource: SolanaTokenDataSource;\n const tokenInternalId = \"sol:usdc\";\n const config: ContextModuleServiceConfig = {\n cal: {\n url: \"https://crypto-assets-service.api.ledger.com/v1\",\n mode: \"prod\",\n branch: \"main\",\n },\n } as ContextModuleServiceConfig;\n\n const errorMessage = (id: string) =>\n `[ContextModule] HttpSolanaTokenDataSource: no token metadata for id ${id}`;\n\n beforeAll(() => {\n datasource = new HttpSolanaTokenDataSource(config);\n });\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should call axios with the ledger client version header and correct params\", async () => {\n // given\n const requestSpy = vi.fn(() => Promise.resolve({ data: [] }));\n vi.spyOn(axios, \"request\").mockImplementation(requestSpy);\n\n // when\n await datasource.getTokenInfosPayload({ tokenInternalId });\n\n // then\n expect(requestSpy).toHaveBeenCalledTimes(1);\n expect(requestSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n method: \"GET\",\n url: `${config.cal.url}/tokens`,\n params: expect.objectContaining({\n id: tokenInternalId,\n ref: `branch:${config.cal.branch}`,\n }),\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n },\n }),\n );\n });\n\n it(\"should return Right(data[0]) when axios responds with a non-empty array\", async () => {\n // given\n const response0: TokenDataResponse = {\n descriptor: {\n data: \"ABCD\",\n signatures: {\n prod: \"SIG-PROD\",\n test: \"SIG-TEST\",\n } as any,\n },\n } as any;\n\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [response0] });\n\n // when\n const result = await datasource.getTokenInfosPayload({ tokenInternalId });\n\n // then\n expect(result).toEqual(Right(response0));\n });\n\n describe.each`\n caseName | apiResponse\n ${\"data is undefined\"} | ${{ data: undefined }}\n ${\"data array is empty\"} | ${{ data: [] }}\n ${\"first element is falsy\"} | ${{ data: [undefined] }}\n `(\"Error cases\", ({ caseName, apiResponse }) => {\n it(`should return an error when ${caseName}`, async () => {\n // given\n vi.spyOn(axios, \"request\").mockResolvedValue(apiResponse);\n\n // when\n const result = await datasource.getTokenInfosPayload({ tokenInternalId });\n\n // then\n expect(result).toEqual(Left(new Error(errorMessage(tokenInternalId))));\n });\n });\n\n it(\"should return an error when axios throws\", async () => {\n // given\n vi.spyOn(axios, \"request\").mockRejectedValue(new Error(\"network\"));\n\n // when\n const result = await datasource.getTokenInfosPayload({ tokenInternalId });\n\n // then\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSolanaTokenDataSource: Failed to fetch token informations\",\n ),\n ),\n );\n });\n});\n"],
5
- "mappings": "AAEA,OAAOA,MAAW,QAClB,OAAS,QAAAC,EAAM,SAAAC,MAAa,YAC5B,OAAS,aAAAC,EAAW,cAAAC,EAAY,YAAAC,EAAU,UAAAC,EAAQ,MAAAC,EAAI,MAAAC,MAAU,SAGhE,OAAS,gCAAAC,MAAoC,gCAC7C,OAAOC,MAAa,qBAEpB,OAAS,6BAAAC,MAAiC,8BAM1CH,EAAG,KAAK,OAAO,EAEfH,EAAS,4BAA6B,IAAM,CAC1C,IAAIO,EACJ,MAAMC,EAAkB,WAClBC,EAAqC,CACzC,IAAK,CACH,IAAK,kDACL,KAAM,OACN,OAAQ,MACV,CACF,EAEMC,EAAgBC,GACpB,uEAAuEA,CAAE,GAE3Eb,EAAU,IAAM,CACdS,EAAa,IAAID,EAA0BG,CAAM,CACnD,CAAC,EAEDV,EAAW,IAAM,CACfI,EAAG,cAAc,CACnB,CAAC,EAEDD,EAAG,6EAA8E,SAAY,CAE3F,MAAMU,EAAaT,EAAG,GAAG,IAAM,QAAQ,QAAQ,CAAE,KAAM,CAAC,CAAE,CAAC,CAAC,EAC5DA,EAAG,MAAMR,EAAO,SAAS,EAAE,mBAAmBiB,CAAU,EAGxD,MAAML,EAAW,qBAAqB,CAAE,gBAAAC,CAAgB,CAAC,EAGzDP,EAAOW,CAAU,EAAE,sBAAsB,CAAC,EAC1CX,EAAOW,CAAU,EAAE,qBACjBX,EAAO,iBAAiB,CACtB,OAAQ,MACR,IAAK,GAAGQ,EAAO,IAAI,GAAG,UACtB,OAAQR,EAAO,iBAAiB,CAC9B,GAAIO,EACJ,IAAK,UAAUC,EAAO,IAAI,MAAM,EAClC,CAAC,EACD,QAAS,CACP,CAACL,CAA4B,EAAG,kBAAkBC,EAAQ,OAAO,EACnE,CACF,CAAC,CACH,CACF,CAAC,EAEDH,EAAG,0EAA2E,SAAY,CAExF,MAAMW,EAA+B,CACnC,WAAY,CACV,KAAM,OACN,WAAY,CACV,KAAM,WACN,KAAM,UACR,CACF,CACF,EAEAV,EAAG,MAAMR,EAAO,SAAS,EAAE,kBAAkB,CAAE,KAAM,CAACkB,CAAS,CAAE,CAAC,EAGlE,MAAMC,EAAS,MAAMP,EAAW,qBAAqB,CAAE,gBAAAC,CAAgB,CAAC,EAGxEP,EAAOa,CAAM,EAAE,QAAQjB,EAAMgB,CAAS,CAAC,CACzC,CAAC,EAEDb,EAAS;AAAA;AAAA,MAEL,mBAAmB,WAAW,CAAE,KAAM,MAAU,CAAC;AAAA,MACjD,qBAAqB,SAAS,CAAE,KAAM,CAAC,CAAE,CAAC;AAAA,MAC1C,wBAAwB,MAAM,CAAE,KAAM,CAAC,MAAS,CAAE,CAAC;AAAA,IACrD,cAAe,CAAC,CAAE,SAAAe,EAAU,YAAAC,CAAY,IAAM,CAC9Cd,EAAG,+BAA+Ba,CAAQ,GAAI,SAAY,CAExDZ,EAAG,MAAMR,EAAO,SAAS,EAAE,kBAAkBqB,CAAW,EAGxD,MAAMF,EAAS,MAAMP,EAAW,qBAAqB,CAAE,gBAAAC,CAAgB,CAAC,EAGxEP,EAAOa,CAAM,EAAE,QAAQlB,EAAK,IAAI,MAAMc,EAAaF,CAAe,CAAC,CAAC,CAAC,CACvE,CAAC,CACH,CAAC,EAEDN,EAAG,2CAA4C,SAAY,CAEzDC,EAAG,MAAMR,EAAO,SAAS,EAAE,kBAAkB,IAAI,MAAM,SAAS,CAAC,EAGjE,MAAMmB,EAAS,MAAMP,EAAW,qBAAqB,CAAE,gBAAAC,CAAgB,CAAC,EAGxEP,EAAOa,CAAM,EAAE,QACblB,EACE,IAAI,MACF,+EACF,CACF,CACF,CACF,CAAC,CACH,CAAC",
6
- "names": ["axios", "Left", "Right", "beforeAll", "beforeEach", "describe", "expect", "it", "vi", "LEDGER_CLIENT_VERSION_HEADER", "PACKAGE", "HttpSolanaTokenDataSource", "datasource", "tokenInternalId", "config", "errorMessage", "id", "requestSpy", "response0", "result", "caseName", "apiResponse"]
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport { type DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\n\nimport { HttpSolanaTokenDataSource } from \"./HttpSolanaTokenDataSource\";\nimport {\n type SolanaTokenDataSource,\n type TokenDataResponse,\n} from \"./SolanaTokenDataSource\";\n\ndescribe(\"HttpSolanaTokenDataSource\", () => {\n let datasource: SolanaTokenDataSource;\n let httpMock: { get: ReturnType<typeof vi.fn> };\n const tokenInternalId = \"sol:usdc\";\n const config: ContextModuleServiceConfig = {\n cal: {\n url: \"https://crypto-assets-service.api.ledger.com/v1\",\n mode: \"prod\",\n branch: \"main\",\n },\n } as ContextModuleServiceConfig;\n\n const errorMessage = (id: string) =>\n `[ContextModule] HttpSolanaTokenDataSource: no token metadata for id ${id}`;\n\n beforeEach(() => {\n vi.clearAllMocks();\n httpMock = { get: vi.fn() };\n datasource = new HttpSolanaTokenDataSource(\n config,\n httpMock as unknown as DmkNetworkClient,\n );\n });\n\n it(\"should call http.get with the correct url and params\", async () => {\n // given\n httpMock.get.mockResolvedValue([]);\n\n // when\n await datasource.getTokenInfosPayload({ tokenInternalId });\n\n // then\n expect(httpMock.get).toHaveBeenCalledTimes(1);\n expect(httpMock.get).toHaveBeenCalledWith(`${config.cal.url}/tokens`, {\n params: {\n id: tokenInternalId,\n output:\n \"id,name,network,network_family,network_type,exchange_app_config_serialized,live_signature,ticker,decimals,blockchain_name,chain_id,contract_address,descriptor,descriptor_exchange_app,units,symbol\",\n ref: `branch:${config.cal.branch}`,\n },\n });\n });\n\n it(\"should return Right(data[0]) when http.get responds with a non-empty array\", async () => {\n // given\n const response0: TokenDataResponse = {\n descriptor: {\n data: \"ABCD\",\n signatures: {\n prod: \"SIG-PROD\",\n test: \"SIG-TEST\",\n } as any,\n },\n } as any;\n\n httpMock.get.mockResolvedValue([response0]);\n\n // when\n const result = await datasource.getTokenInfosPayload({ tokenInternalId });\n\n // then\n expect(result).toEqual(Right(response0));\n });\n\n describe.each`\n caseName | responseBody\n ${\"data is undefined\"} | ${null}\n ${\"data array is empty\"} | ${[]}\n ${\"first element is falsy\"} | ${[null]}\n `(\"Error cases\", ({ caseName, responseBody }) => {\n it(`should return an error when ${caseName}`, async () => {\n // given\n httpMock.get.mockResolvedValue(responseBody);\n\n // when\n const result = await datasource.getTokenInfosPayload({ tokenInternalId });\n\n // then\n expect(result).toEqual(Left(new Error(errorMessage(tokenInternalId))));\n });\n });\n\n it(\"should return an error when http.get throws\", async () => {\n // given\n httpMock.get.mockRejectedValue(new Error(\"network\"));\n\n // when\n const result = await datasource.getTokenInfosPayload({ tokenInternalId });\n\n // then\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSolanaTokenDataSource: Failed to fetch token informations\",\n ),\n ),\n );\n });\n});\n"],
5
+ "mappings": "AAGA,OAAS,QAAAA,EAAM,SAAAC,MAAa,YAC5B,OAAS,cAAAC,EAAY,YAAAC,EAAU,UAAAC,EAAQ,MAAAC,EAAI,MAAAC,MAAU,SAIrD,OAAS,6BAAAC,MAAiC,8BAM1CJ,EAAS,4BAA6B,IAAM,CAC1C,IAAIK,EACAC,EACJ,MAAMC,EAAkB,WAClBC,EAAqC,CACzC,IAAK,CACH,IAAK,kDACL,KAAM,OACN,OAAQ,MACV,CACF,EAEMC,EAAgBC,GACpB,uEAAuEA,CAAE,GAE3EX,EAAW,IAAM,CACfI,EAAG,cAAc,EACjBG,EAAW,CAAE,IAAKH,EAAG,GAAG,CAAE,EAC1BE,EAAa,IAAID,EACfI,EACAF,CACF,CACF,CAAC,EAEDJ,EAAG,uDAAwD,SAAY,CAErEI,EAAS,IAAI,kBAAkB,CAAC,CAAC,EAGjC,MAAMD,EAAW,qBAAqB,CAAE,gBAAAE,CAAgB,CAAC,EAGzDN,EAAOK,EAAS,GAAG,EAAE,sBAAsB,CAAC,EAC5CL,EAAOK,EAAS,GAAG,EAAE,qBAAqB,GAAGE,EAAO,IAAI,GAAG,UAAW,CACpE,OAAQ,CACN,GAAID,EACJ,OACE,sMACF,IAAK,UAAUC,EAAO,IAAI,MAAM,EAClC,CACF,CAAC,CACH,CAAC,EAEDN,EAAG,6EAA8E,SAAY,CAE3F,MAAMS,EAA+B,CACnC,WAAY,CACV,KAAM,OACN,WAAY,CACV,KAAM,WACN,KAAM,UACR,CACF,CACF,EAEAL,EAAS,IAAI,kBAAkB,CAACK,CAAS,CAAC,EAG1C,MAAMC,EAAS,MAAMP,EAAW,qBAAqB,CAAE,gBAAAE,CAAgB,CAAC,EAGxEN,EAAOW,CAAM,EAAE,QAAQd,EAAMa,CAAS,CAAC,CACzC,CAAC,EAEDX,EAAS;AAAA;AAAA,MAEL,mBAAmB,WAAW,IAAI;AAAA,MAClC,qBAAqB,SAAS,CAAC,CAAC;AAAA,MAChC,wBAAwB,MAAM,CAAC,IAAI,CAAC;AAAA,IACtC,cAAe,CAAC,CAAE,SAAAa,EAAU,aAAAC,CAAa,IAAM,CAC/CZ,EAAG,+BAA+BW,CAAQ,GAAI,SAAY,CAExDP,EAAS,IAAI,kBAAkBQ,CAAY,EAG3C,MAAMF,EAAS,MAAMP,EAAW,qBAAqB,CAAE,gBAAAE,CAAgB,CAAC,EAGxEN,EAAOW,CAAM,EAAE,QAAQf,EAAK,IAAI,MAAMY,EAAaF,CAAe,CAAC,CAAC,CAAC,CACvE,CAAC,CACH,CAAC,EAEDL,EAAG,8CAA+C,SAAY,CAE5DI,EAAS,IAAI,kBAAkB,IAAI,MAAM,SAAS,CAAC,EAGnD,MAAMM,EAAS,MAAMP,EAAW,qBAAqB,CAAE,gBAAAE,CAAgB,CAAC,EAGxEN,EAAOW,CAAM,EAAE,QACbf,EACE,IAAI,MACF,+EACF,CACF,CACF,CACF,CAAC,CACH,CAAC",
6
+ "names": ["Left", "Right", "beforeEach", "describe", "expect", "it", "vi", "HttpSolanaTokenDataSource", "datasource", "httpMock", "tokenInternalId", "config", "errorMessage", "id", "response0", "result", "caseName", "responseBody"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var d=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var c=(n,t,r,e)=>{for(var o=e>1?void 0:e?p(t,r):t,i=n.length-1,a;i>=0;i--)(a=n[i])&&(o=(e?a(t,r,o):a(o))||o);return e&&o&&d(t,r,o),o},f=(n,t)=>(r,e)=>t(r,e,n);import g from"axios";import{inject as l,injectable as u}from"inversify";import{Left as m,Right as h}from"purify-ts";import{configTypes as E}from"../../config/di/configTypes";import{LEDGER_CLIENT_VERSION_HEADER as k}from"../../shared/constant/HttpHeaders";import C from"../../../package.json";let s=class{constructor(t){this.config=t}async getTokenInfosPayload({chainId:t,address:r}){try{const o=(await g.request({method:"GET",url:`${this.config.cal.url}/tokens`,params:{contract_address:r,chain_id:t,output:"descriptor",ref:`branch:${this.config.cal.branch}`},headers:{[k]:`context-module/${C.version}`}})).data?.[0];if(!o||!o.descriptor||!o.descriptor.data||!o.descriptor.signatures||typeof o.descriptor.signatures[this.config.cal.mode]!="string")return m(new Error(`[ContextModule] HttpTokenDataSource: no token metadata for address ${r} on chain ${t}`));const i=(o.descriptor.data.length/2-20-4-4).toString(16).padStart(2,"0");return h([i,o.descriptor.data,o.descriptor.signatures[this.config.cal.mode]].join(""))}catch{return m(new Error("[ContextModule] HttpTokenDataSource: Failed to fetch token informations"))}}};s=c([u(),f(0,l(E.Config))],s);export{s as HttpTokenDataSource};
1
+ var p=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var f=(n,o,r,e)=>{for(var t=e>1?void 0:e?l(o,r):o,i=n.length-1,s;i>=0;i--)(s=n[i])&&(t=(e?s(o,r,t):s(t))||t);return e&&t&&p(o,r,t),t},c=(n,o)=>(r,e)=>o(r,e,n);import{inject as d,injectable as g}from"inversify";import{Left as m,Right as u}from"purify-ts";import{configTypes as h}from"../../config/di/configTypes";import{networkTypes as k}from"../../network/di/networkTypes";let a=class{constructor(o,r){this.config=o;this.http=r}async getTokenInfosPayload({chainId:o,address:r}){try{const t=(await this.http.get(`${this.config.cal.url}/tokens`,{params:{contract_address:r,chain_id:o,output:"descriptor",ref:`branch:${this.config.cal.branch}`}}))?.[0];if(!t||!t.descriptor||!t.descriptor.data||!t.descriptor.signatures||typeof t.descriptor.signatures[this.config.cal.mode]!="string")return m(new Error(`[ContextModule] HttpTokenDataSource: no token metadata for address ${r} on chain ${o}`));const i=(t.descriptor.data.length/2-20-4-4).toString(16).padStart(2,"0");return u([i,t.descriptor.data,t.descriptor.signatures[this.config.cal.mode]].join(""))}catch{return m(new Error("[ContextModule] HttpTokenDataSource: Failed to fetch token informations"))}}};a=f([g(),c(0,d(h.Config)),c(1,d(k.NetworkClient))],a);export{a as HttpTokenDataSource};
2
2
  //# sourceMappingURL=HttpTokenDataSource.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/token/data/HttpTokenDataSource.ts"],
4
- "sourcesContent": ["import axios from \"axios\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport type { ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { LEDGER_CLIENT_VERSION_HEADER } from \"@/shared/constant/HttpHeaders\";\nimport PACKAGE from \"@root/package.json\";\n\nimport { GetTokenInfosParams, TokenDataSource } from \"./TokenDataSource\";\nimport { TokenDto } from \"./TokenDto\";\n\n@injectable()\nexport class HttpTokenDataSource implements TokenDataSource {\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n ) {}\n public async getTokenInfosPayload({\n chainId,\n address,\n }: GetTokenInfosParams): Promise<Either<Error, string>> {\n try {\n const response = await axios.request<TokenDto[]>({\n method: \"GET\",\n url: `${this.config.cal.url}/tokens`,\n params: {\n contract_address: address,\n chain_id: chainId,\n output: \"descriptor\",\n ref: `branch:${this.config.cal.branch}`,\n },\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n },\n });\n const tokenInfos = response.data?.[0];\n\n if (\n !tokenInfos ||\n !tokenInfos.descriptor ||\n !tokenInfos.descriptor.data ||\n !tokenInfos.descriptor.signatures ||\n typeof tokenInfos.descriptor.signatures[this.config.cal.mode] !==\n \"string\"\n ) {\n return Left(\n new Error(\n `[ContextModule] HttpTokenDataSource: no token metadata for address ${address} on chain ${chainId}`,\n ),\n );\n }\n\n // According to documentation: https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#provide-erc-20-token-information\n // Signed descriptor is composed of:\n // ticker || address (20 bytes) || number of decimals (4 bytes) || chainId (4 bytes)\n const tickerLengthBuff = (\n tokenInfos.descriptor.data.length / 2 -\n 20 -\n 4 -\n 4\n )\n .toString(16)\n .padStart(2, \"0\");\n\n return Right(\n [\n tickerLengthBuff,\n tokenInfos.descriptor.data,\n tokenInfos.descriptor.signatures[this.config.cal.mode],\n ].join(\"\"),\n );\n } catch (_error) {\n return Left(\n new Error(\n \"[ContextModule] HttpTokenDataSource: Failed to fetch token informations\",\n ),\n );\n }\n }\n}\n"],
5
- "mappings": "iOAAA,OAAOA,MAAW,QAClB,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,YACnC,OAAiB,QAAAC,EAAM,SAAAC,MAAa,YAEpC,OAAS,eAAAC,MAAmB,0BAE5B,OAAS,gCAAAC,MAAoC,gCAC7C,OAAOC,MAAa,qBAMb,IAAMC,EAAN,KAAqD,CAC1D,YAEmBC,EACjB,CADiB,YAAAA,CAChB,CACH,MAAa,qBAAqB,CAChC,QAAAC,EACA,QAAAC,CACF,EAAwD,CACtD,GAAI,CAcF,MAAMC,GAbW,MAAMC,EAAM,QAAoB,CAC/C,OAAQ,MACR,IAAK,GAAG,KAAK,OAAO,IAAI,GAAG,UAC3B,OAAQ,CACN,iBAAkBF,EAClB,SAAUD,EACV,OAAQ,aACR,IAAK,UAAU,KAAK,OAAO,IAAI,MAAM,EACvC,EACA,QAAS,CACP,CAACI,CAA4B,EAAG,kBAAkBC,EAAQ,OAAO,EACnE,CACF,CAAC,GAC2B,OAAO,CAAC,EAEpC,GACE,CAACH,GACD,CAACA,EAAW,YACZ,CAACA,EAAW,WAAW,MACvB,CAACA,EAAW,WAAW,YACvB,OAAOA,EAAW,WAAW,WAAW,KAAK,OAAO,IAAI,IAAI,GAC1D,SAEF,OAAOI,EACL,IAAI,MACF,sEAAsEL,CAAO,aAAaD,CAAO,EACnG,CACF,EAMF,MAAMO,GACJL,EAAW,WAAW,KAAK,OAAS,EACpC,GACA,EACA,GAEC,SAAS,EAAE,EACX,SAAS,EAAG,GAAG,EAElB,OAAOM,EACL,CACED,EACAL,EAAW,WAAW,KACtBA,EAAW,WAAW,WAAW,KAAK,OAAO,IAAI,IAAI,CACvD,EAAE,KAAK,EAAE,CACX,CACF,MAAiB,CACf,OAAOI,EACL,IAAI,MACF,yEACF,CACF,CACF,CACF,CACF,EAnEaR,EAANW,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAY,MAAM,IAFjBf",
6
- "names": ["axios", "inject", "injectable", "Left", "Right", "configTypes", "LEDGER_CLIENT_VERSION_HEADER", "PACKAGE", "HttpTokenDataSource", "config", "chainId", "address", "tokenInfos", "axios", "LEDGER_CLIENT_VERSION_HEADER", "PACKAGE", "Left", "tickerLengthBuff", "Right", "__decorateClass", "injectable", "__decorateParam", "inject", "configTypes"]
4
+ "sourcesContent": ["import { DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport type { ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { networkTypes } from \"@/network/di/networkTypes\";\n\nimport { GetTokenInfosParams, TokenDataSource } from \"./TokenDataSource\";\nimport { TokenDto } from \"./TokenDto\";\n\n@injectable()\nexport class HttpTokenDataSource implements TokenDataSource {\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n @inject(networkTypes.NetworkClient)\n private readonly http: DmkNetworkClient,\n ) {}\n\n public async getTokenInfosPayload({\n chainId,\n address,\n }: GetTokenInfosParams): Promise<Either<Error, string>> {\n try {\n const data = (await this.http.get(`${this.config.cal.url}/tokens`, {\n params: {\n contract_address: address,\n chain_id: chainId,\n output: \"descriptor\",\n ref: `branch:${this.config.cal.branch}`,\n },\n })) as TokenDto[];\n const tokenInfos = data?.[0];\n\n if (\n !tokenInfos ||\n !tokenInfos.descriptor ||\n !tokenInfos.descriptor.data ||\n !tokenInfos.descriptor.signatures ||\n typeof tokenInfos.descriptor.signatures[this.config.cal.mode] !==\n \"string\"\n ) {\n return Left(\n new Error(\n `[ContextModule] HttpTokenDataSource: no token metadata for address ${address} on chain ${chainId}`,\n ),\n );\n }\n\n // According to documentation: https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#provide-erc-20-token-information\n // Signed descriptor is composed of:\n // ticker || address (20 bytes) || number of decimals (4 bytes) || chainId (4 bytes)\n const tickerLengthBuff = (\n tokenInfos.descriptor.data.length / 2 -\n 20 -\n 4 -\n 4\n )\n .toString(16)\n .padStart(2, \"0\");\n\n return Right(\n [\n tickerLengthBuff,\n tokenInfos.descriptor.data,\n tokenInfos.descriptor.signatures[this.config.cal.mode],\n ].join(\"\"),\n );\n } catch (_error) {\n return Left(\n new Error(\n \"[ContextModule] HttpTokenDataSource: Failed to fetch token informations\",\n ),\n );\n }\n }\n}\n"],
5
+ "mappings": "iOACA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YACnC,OAAiB,QAAAC,EAAM,SAAAC,MAAa,YAEpC,OAAS,eAAAC,MAAmB,0BAE5B,OAAS,gBAAAC,MAAoB,4BAMtB,IAAMC,EAAN,KAAqD,CAC1D,YAEmBC,EAEAC,EACjB,CAHiB,YAAAD,EAEA,UAAAC,CAChB,CAEH,MAAa,qBAAqB,CAChC,QAAAC,EACA,QAAAC,CACF,EAAwD,CACtD,GAAI,CASF,MAAMC,GARQ,MAAM,KAAK,KAAK,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,UAAW,CACjE,OAAQ,CACN,iBAAkBD,EAClB,SAAUD,EACV,OAAQ,aACR,IAAK,UAAU,KAAK,OAAO,IAAI,MAAM,EACvC,CACF,CAAC,KACyB,CAAC,EAE3B,GACE,CAACE,GACD,CAACA,EAAW,YACZ,CAACA,EAAW,WAAW,MACvB,CAACA,EAAW,WAAW,YACvB,OAAOA,EAAW,WAAW,WAAW,KAAK,OAAO,IAAI,IAAI,GAC1D,SAEF,OAAOC,EACL,IAAI,MACF,sEAAsEF,CAAO,aAAaD,CAAO,EACnG,CACF,EAMF,MAAMI,GACJF,EAAW,WAAW,KAAK,OAAS,EACpC,GACA,EACA,GAEC,SAAS,EAAE,EACX,SAAS,EAAG,GAAG,EAElB,OAAOG,EACL,CACED,EACAF,EAAW,WAAW,KACtBA,EAAW,WAAW,WAAW,KAAK,OAAO,IAAI,IAAI,CACvD,EAAE,KAAK,EAAE,CACX,CACF,MAAiB,CACf,OAAOC,EACL,IAAI,MACF,yEACF,CACF,CACF,CACF,CACF,EAjEaN,EAANS,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAY,MAAM,GAEzBF,EAAA,EAAAC,EAAOE,EAAa,aAAa,IAJzBd",
6
+ "names": ["inject", "injectable", "Left", "Right", "configTypes", "networkTypes", "HttpTokenDataSource", "config", "http", "chainId", "address", "tokenInfos", "Left", "tickerLengthBuff", "Right", "__decorateClass", "injectable", "__decorateParam", "inject", "configTypes", "networkTypes"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import o from"axios";import{Left as n}from"purify-ts";import{LEDGER_CLIENT_VERSION_HEADER as r}from"../../shared/constant/HttpHeaders";import{HttpTokenDataSource as s}from"../../token/data/HttpTokenDataSource";import c from"../../../package.json";vi.mock("axios");describe("HttpTokenDataSource",()=>{let t;beforeAll(()=>{const e={cal:{url:"https://crypto-assets-service.api.ledger.com/v1",mode:"prod",branch:"main"}};t=new s(e),vi.clearAllMocks()}),it("should call axios with the ledger client version header",async()=>{const e=`context-module/${c.version}`,a=vi.fn(()=>Promise.resolve({data:[]}));vi.spyOn(o,"request").mockImplementation(a),await t.getTokenInfosPayload({address:"0x00",chainId:1}),expect(a).toHaveBeenCalledWith(expect.objectContaining({headers:{[r]:e}}))}),it("should return a string when axios response is correct",async()=>{const e={ticker:"USDC",descriptor:{data:"555344433c499c542cef5e3811e1192ce70d8cc03d5c33590000000600000089",signatures:{prod:"0123"}}};vi.spyOn(o,"request").mockResolvedValue({data:[e]});const a=await t.getTokenInfosPayload({address:"0x00",chainId:1});expect(a.extract()).toEqual("04555344433c499c542cef5e3811e1192ce70d8cc03d5c335900000006000000890123")}),it("should return a string when axios response is correct with a prefixed ticker",async()=>{const e={ticker:"tUSDC",descriptor:{data:"7474555344431c7d4b196cb0c7b01d743fbc6116a902379c72380000000600aa36a7",signatures:{prod:"0123"}}};vi.spyOn(o,"request").mockResolvedValue({data:[e]});const a=await t.getTokenInfosPayload({address:"0x00",chainId:1});expect(a.extract()).toEqual("067474555344431c7d4b196cb0c7b01d743fbc6116a902379c72380000000600aa36a70123")}),it("should return an error when data is empty",async()=>{vi.spyOn(o,"request").mockResolvedValue({data:void 0});const e=await t.getTokenInfosPayload({address:"0x00",chainId:1});expect(e).toEqual(n(new Error("[ContextModule] HttpTokenDataSource: no token metadata for address 0x00 on chain 1")))}),it("should return undefined when no signature",async()=>{vi.spyOn(o,"request").mockResolvedValue({data:[{}]});const e=await t.getTokenInfosPayload({address:"0x00",chainId:1});expect(e).toEqual(n(new Error("[ContextModule] HttpTokenDataSource: no token metadata for address 0x00 on chain 1")))}),it("should return undefined when no decimals",async()=>{vi.spyOn(o,"request").mockResolvedValue({data:[{live_signature:"0x0",ticker:"USDC"}]});const e=await t.getTokenInfosPayload({address:"0x00",chainId:1});expect(e).toEqual(n(new Error("[ContextModule] HttpTokenDataSource: no token metadata for address 0x00 on chain 1")))}),it("should return an error when axios throws an error",async()=>{vi.spyOn(o,"request").mockRejectedValue(new Error);const e=await t.getTokenInfosPayload({address:"0x00",chainId:1});expect(e).toEqual(n(new Error("[ContextModule] HttpTokenDataSource: Failed to fetch token informations")))})});
1
+ import{Left as a}from"purify-ts";import{HttpTokenDataSource as r}from"../../token/data/HttpTokenDataSource";describe("HttpTokenDataSource",()=>{let o,t;beforeEach(()=>{vi.clearAllMocks();const e={cal:{url:"https://crypto-assets-service.api.ledger.com/v1",mode:"prod",branch:"main"}};t={get:vi.fn()},o=new r(e,t)}),it("should call the expected CAL tokens URL with params",async()=>{t.get.mockResolvedValue([]),await o.getTokenInfosPayload({address:"0x00",chainId:1}),expect(t.get).toHaveBeenCalledWith("https://crypto-assets-service.api.ledger.com/v1/tokens",{params:{contract_address:"0x00",chain_id:1,output:"descriptor",ref:"branch:main"}})}),it("should return a string when response is correct",async()=>{const e={ticker:"USDC",descriptor:{data:"555344433c499c542cef5e3811e1192ce70d8cc03d5c33590000000600000089",signatures:{prod:"0123"}}};t.get.mockResolvedValue([e]);const n=await o.getTokenInfosPayload({address:"0x00",chainId:1});expect(n.extract()).toEqual("04555344433c499c542cef5e3811e1192ce70d8cc03d5c335900000006000000890123")}),it("should return a string when response is correct with a prefixed ticker",async()=>{const e={ticker:"tUSDC",descriptor:{data:"7474555344431c7d4b196cb0c7b01d743fbc6116a902379c72380000000600aa36a7",signatures:{prod:"0123"}}};t.get.mockResolvedValue([e]);const n=await o.getTokenInfosPayload({address:"0x00",chainId:1});expect(n.extract()).toEqual("067474555344431c7d4b196cb0c7b01d743fbc6116a902379c72380000000600aa36a70123")}),it("should return an error when data is empty",async()=>{t.get.mockResolvedValue(null);const e=await o.getTokenInfosPayload({address:"0x00",chainId:1});expect(e).toEqual(a(new Error("[ContextModule] HttpTokenDataSource: no token metadata for address 0x00 on chain 1")))}),it("should return undefined when no signature",async()=>{t.get.mockResolvedValue([{}]);const e=await o.getTokenInfosPayload({address:"0x00",chainId:1});expect(e).toEqual(a(new Error("[ContextModule] HttpTokenDataSource: no token metadata for address 0x00 on chain 1")))}),it("should return undefined when no decimals",async()=>{t.get.mockResolvedValue([{live_signature:"0x0",ticker:"USDC"}]);const e=await o.getTokenInfosPayload({address:"0x00",chainId:1});expect(e).toEqual(a(new Error("[ContextModule] HttpTokenDataSource: no token metadata for address 0x00 on chain 1")))}),it("should return an error when network client throws an error",async()=>{t.get.mockRejectedValue(new Error);const e=await o.getTokenInfosPayload({address:"0x00",chainId:1});expect(e).toEqual(a(new Error("[ContextModule] HttpTokenDataSource: Failed to fetch token informations")))})});
2
2
  //# sourceMappingURL=HttpTokenDataSource.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/token/data/HttpTokenDataSource.test.ts"],
4
- "sourcesContent": ["import axios from \"axios\";\nimport { Left } from \"purify-ts\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { LEDGER_CLIENT_VERSION_HEADER } from \"@/shared/constant/HttpHeaders\";\nimport { HttpTokenDataSource } from \"@/token/data/HttpTokenDataSource\";\nimport { type TokenDataSource } from \"@/token/data/TokenDataSource\";\nimport { type TokenDto } from \"@/token/data/TokenDto\";\nimport PACKAGE from \"@root/package.json\";\n\nvi.mock(\"axios\");\n\ndescribe(\"HttpTokenDataSource\", () => {\n let datasource: TokenDataSource;\n\n beforeAll(() => {\n const config = {\n cal: {\n url: \"https://crypto-assets-service.api.ledger.com/v1\",\n mode: \"prod\",\n branch: \"main\",\n },\n } as ContextModuleServiceConfig;\n datasource = new HttpTokenDataSource(config);\n vi.clearAllMocks();\n });\n\n it(\"should call axios with the ledger client version header\", async () => {\n // GIVEN\n const version = `context-module/${PACKAGE.version}`;\n const requestSpy = vi.fn(() => Promise.resolve({ data: [] }));\n vi.spyOn(axios, \"request\").mockImplementation(requestSpy);\n\n // WHEN\n await datasource.getTokenInfosPayload({ address: \"0x00\", chainId: 1 });\n\n // THEN\n expect(requestSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n headers: { [LEDGER_CLIENT_VERSION_HEADER]: version },\n }),\n );\n });\n\n it(\"should return a string when axios response is correct\", async () => {\n // GIVEN\n const tokenDTO: TokenDto = {\n ticker: \"USDC\",\n descriptor: {\n data: \"555344433c499c542cef5e3811e1192ce70d8cc03d5c33590000000600000089\",\n signatures: {\n prod: \"0123\",\n },\n },\n };\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [tokenDTO] });\n\n // WHEN\n const result = await datasource.getTokenInfosPayload({\n address: \"0x00\",\n chainId: 1,\n });\n\n // THEN\n expect(result.extract()).toEqual(\n \"04555344433c499c542cef5e3811e1192ce70d8cc03d5c335900000006000000890123\",\n );\n });\n\n it(\"should return a string when axios response is correct with a prefixed ticker\", async () => {\n // GIVEN\n const tokenDTO: TokenDto = {\n ticker: \"tUSDC\",\n descriptor: {\n data: \"7474555344431c7d4b196cb0c7b01d743fbc6116a902379c72380000000600aa36a7\",\n signatures: {\n prod: \"0123\",\n },\n },\n };\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [tokenDTO] });\n\n // WHEN\n const result = await datasource.getTokenInfosPayload({\n address: \"0x00\",\n chainId: 1,\n });\n\n // THEN\n expect(result.extract()).toEqual(\n \"067474555344431c7d4b196cb0c7b01d743fbc6116a902379c72380000000600aa36a70123\",\n );\n });\n\n it(\"should return an error when data is empty\", async () => {\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: undefined });\n\n // WHEN\n const result = await datasource.getTokenInfosPayload({\n address: \"0x00\",\n chainId: 1,\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTokenDataSource: no token metadata for address 0x00 on chain 1\",\n ),\n ),\n );\n });\n\n it(\"should return undefined when no signature\", async () => {\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [{}] });\n\n // WHEN\n const result = await datasource.getTokenInfosPayload({\n address: \"0x00\",\n chainId: 1,\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTokenDataSource: no token metadata for address 0x00 on chain 1\",\n ),\n ),\n );\n });\n\n it(\"should return undefined when no decimals\", async () => {\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({\n data: [{ live_signature: \"0x0\", ticker: \"USDC\" }],\n });\n\n // WHEN\n const result = await datasource.getTokenInfosPayload({\n address: \"0x00\",\n chainId: 1,\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTokenDataSource: no token metadata for address 0x00 on chain 1\",\n ),\n ),\n );\n });\n\n it(\"should return an error when axios throws an error\", async () => {\n // GIVEN\n vi.spyOn(axios, \"request\").mockRejectedValue(new Error());\n\n // WHEN\n const result = await datasource.getTokenInfosPayload({\n address: \"0x00\",\n chainId: 1,\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTokenDataSource: Failed to fetch token informations\",\n ),\n ),\n );\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["axios", "Left", "LEDGER_CLIENT_VERSION_HEADER", "HttpTokenDataSource", "PACKAGE", "datasource", "config", "version", "requestSpy", "tokenDTO", "result"]
4
+ "sourcesContent": ["import { type DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { Left } from \"purify-ts\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { HttpTokenDataSource } from \"@/token/data/HttpTokenDataSource\";\nimport { type TokenDataSource } from \"@/token/data/TokenDataSource\";\nimport { type TokenDto } from \"@/token/data/TokenDto\";\n\ndescribe(\"HttpTokenDataSource\", () => {\n let datasource: TokenDataSource;\n let httpMock: { get: ReturnType<typeof vi.fn> };\n\n beforeEach(() => {\n vi.clearAllMocks();\n const config = {\n cal: {\n url: \"https://crypto-assets-service.api.ledger.com/v1\",\n mode: \"prod\",\n branch: \"main\",\n },\n } as ContextModuleServiceConfig;\n httpMock = { get: vi.fn() };\n datasource = new HttpTokenDataSource(\n config,\n httpMock as unknown as DmkNetworkClient,\n );\n });\n\n it(\"should call the expected CAL tokens URL with params\", async () => {\n // GIVEN\n httpMock.get.mockResolvedValue([]);\n\n // WHEN\n await datasource.getTokenInfosPayload({ address: \"0x00\", chainId: 1 });\n\n // THEN\n expect(httpMock.get).toHaveBeenCalledWith(\n \"https://crypto-assets-service.api.ledger.com/v1/tokens\",\n {\n params: {\n contract_address: \"0x00\",\n chain_id: 1,\n output: \"descriptor\",\n ref: \"branch:main\",\n },\n },\n );\n });\n\n it(\"should return a string when response is correct\", async () => {\n // GIVEN\n const tokenDTO: TokenDto = {\n ticker: \"USDC\",\n descriptor: {\n data: \"555344433c499c542cef5e3811e1192ce70d8cc03d5c33590000000600000089\",\n signatures: {\n prod: \"0123\",\n },\n },\n };\n httpMock.get.mockResolvedValue([tokenDTO]);\n\n // WHEN\n const result = await datasource.getTokenInfosPayload({\n address: \"0x00\",\n chainId: 1,\n });\n\n // THEN\n expect(result.extract()).toEqual(\n \"04555344433c499c542cef5e3811e1192ce70d8cc03d5c335900000006000000890123\",\n );\n });\n\n it(\"should return a string when response is correct with a prefixed ticker\", async () => {\n // GIVEN\n const tokenDTO: TokenDto = {\n ticker: \"tUSDC\",\n descriptor: {\n data: \"7474555344431c7d4b196cb0c7b01d743fbc6116a902379c72380000000600aa36a7\",\n signatures: {\n prod: \"0123\",\n },\n },\n };\n httpMock.get.mockResolvedValue([tokenDTO]);\n\n // WHEN\n const result = await datasource.getTokenInfosPayload({\n address: \"0x00\",\n chainId: 1,\n });\n\n // THEN\n expect(result.extract()).toEqual(\n \"067474555344431c7d4b196cb0c7b01d743fbc6116a902379c72380000000600aa36a70123\",\n );\n });\n\n it(\"should return an error when data is empty\", async () => {\n // GIVEN\n httpMock.get.mockResolvedValue(null);\n\n // WHEN\n const result = await datasource.getTokenInfosPayload({\n address: \"0x00\",\n chainId: 1,\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTokenDataSource: no token metadata for address 0x00 on chain 1\",\n ),\n ),\n );\n });\n\n it(\"should return undefined when no signature\", async () => {\n // GIVEN\n httpMock.get.mockResolvedValue([{}]);\n\n // WHEN\n const result = await datasource.getTokenInfosPayload({\n address: \"0x00\",\n chainId: 1,\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTokenDataSource: no token metadata for address 0x00 on chain 1\",\n ),\n ),\n );\n });\n\n it(\"should return undefined when no decimals\", async () => {\n // GIVEN\n httpMock.get.mockResolvedValue([{ live_signature: \"0x0\", ticker: \"USDC\" }]);\n\n // WHEN\n const result = await datasource.getTokenInfosPayload({\n address: \"0x00\",\n chainId: 1,\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTokenDataSource: no token metadata for address 0x00 on chain 1\",\n ),\n ),\n );\n });\n\n it(\"should return an error when network client throws an error\", async () => {\n // GIVEN\n httpMock.get.mockRejectedValue(new Error());\n\n // WHEN\n const result = await datasource.getTokenInfosPayload({\n address: \"0x00\",\n chainId: 1,\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTokenDataSource: Failed to fetch token informations\",\n ),\n ),\n );\n });\n});\n"],
5
+ "mappings": "AACA,OAAS,QAAAA,MAAY,YAGrB,OAAS,uBAAAC,MAA2B,mCAIpC,SAAS,sBAAuB,IAAM,CACpC,IAAIC,EACAC,EAEJ,WAAW,IAAM,CACf,GAAG,cAAc,EACjB,MAAMC,EAAS,CACb,IAAK,CACH,IAAK,kDACL,KAAM,OACN,OAAQ,MACV,CACF,EACAD,EAAW,CAAE,IAAK,GAAG,GAAG,CAAE,EAC1BD,EAAa,IAAID,EACfG,EACAD,CACF,CACF,CAAC,EAED,GAAG,sDAAuD,SAAY,CAEpEA,EAAS,IAAI,kBAAkB,CAAC,CAAC,EAGjC,MAAMD,EAAW,qBAAqB,CAAE,QAAS,OAAQ,QAAS,CAAE,CAAC,EAGrE,OAAOC,EAAS,GAAG,EAAE,qBACnB,yDACA,CACE,OAAQ,CACN,iBAAkB,OAClB,SAAU,EACV,OAAQ,aACR,IAAK,aACP,CACF,CACF,CACF,CAAC,EAED,GAAG,kDAAmD,SAAY,CAEhE,MAAME,EAAqB,CACzB,OAAQ,OACR,WAAY,CACV,KAAM,mEACN,WAAY,CACV,KAAM,MACR,CACF,CACF,EACAF,EAAS,IAAI,kBAAkB,CAACE,CAAQ,CAAC,EAGzC,MAAMC,EAAS,MAAMJ,EAAW,qBAAqB,CACnD,QAAS,OACT,QAAS,CACX,CAAC,EAGD,OAAOI,EAAO,QAAQ,CAAC,EAAE,QACvB,wEACF,CACF,CAAC,EAED,GAAG,yEAA0E,SAAY,CAEvF,MAAMD,EAAqB,CACzB,OAAQ,QACR,WAAY,CACV,KAAM,uEACN,WAAY,CACV,KAAM,MACR,CACF,CACF,EACAF,EAAS,IAAI,kBAAkB,CAACE,CAAQ,CAAC,EAGzC,MAAMC,EAAS,MAAMJ,EAAW,qBAAqB,CACnD,QAAS,OACT,QAAS,CACX,CAAC,EAGD,OAAOI,EAAO,QAAQ,CAAC,EAAE,QACvB,4EACF,CACF,CAAC,EAED,GAAG,4CAA6C,SAAY,CAE1DH,EAAS,IAAI,kBAAkB,IAAI,EAGnC,MAAMG,EAAS,MAAMJ,EAAW,qBAAqB,CACnD,QAAS,OACT,QAAS,CACX,CAAC,EAGD,OAAOI,CAAM,EAAE,QACbN,EACE,IAAI,MACF,oFACF,CACF,CACF,CACF,CAAC,EAED,GAAG,4CAA6C,SAAY,CAE1DG,EAAS,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAGnC,MAAMG,EAAS,MAAMJ,EAAW,qBAAqB,CACnD,QAAS,OACT,QAAS,CACX,CAAC,EAGD,OAAOI,CAAM,EAAE,QACbN,EACE,IAAI,MACF,oFACF,CACF,CACF,CACF,CAAC,EAED,GAAG,2CAA4C,SAAY,CAEzDG,EAAS,IAAI,kBAAkB,CAAC,CAAE,eAAgB,MAAO,OAAQ,MAAO,CAAC,CAAC,EAG1E,MAAMG,EAAS,MAAMJ,EAAW,qBAAqB,CACnD,QAAS,OACT,QAAS,CACX,CAAC,EAGD,OAAOI,CAAM,EAAE,QACbN,EACE,IAAI,MACF,oFACF,CACF,CACF,CACF,CAAC,EAED,GAAG,6DAA8D,SAAY,CAE3EG,EAAS,IAAI,kBAAkB,IAAI,KAAO,EAG1C,MAAMG,EAAS,MAAMJ,EAAW,qBAAqB,CACnD,QAAS,OACT,QAAS,CACX,CAAC,EAGD,OAAOI,CAAM,EAAE,QACbN,EACE,IAAI,MACF,yEACF,CACF,CACF,CACF,CAAC,CACH,CAAC",
6
+ "names": ["Left", "HttpTokenDataSource", "datasource", "httpMock", "config", "tokenDTO", "result"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var m=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var s=(i,e,o,t)=>{for(var r=t>1?void 0:t?u(e,o):e,n=i.length-1,c;n>=0;n--)(c=i[n])&&(r=(t?c(e,o,r):c(r))||r);return t&&r&&m(e,o,r),r},p=(i,e)=>(o,t)=>e(o,t,i);import f from"axios";import{inject as C,injectable as k}from"inversify";import{Left as h,Right as d}from"purify-ts";import{configTypes as E}from"../../config/di/configTypes";import{LEDGER_CLIENT_VERSION_HEADER as _,LEDGER_ORIGIN_TOKEN_HEADER as T}from"../../shared/constant/HttpHeaders";import y from"../../../package.json";let a=class{constructor(e){this.config=e}async getTransactionCheck({chainId:e,rawTx:o,from:t}){let r;const n={tx:{from:t,raw:o},chain:e};try{r=(await f.request({method:"POST",url:`${this.config.web3checks.url}/ethereum/scan/tx`,data:n,headers:{[_]:`context-module/${y.version}`,[T]:this.config.originToken}})).data}catch{return h(new Error("[ContextModule] HttpTransactionCheckDataSource: Failed to fetch web3 checks information"))}if(!this._isTransactionCheckDto(r))return h(new Error("[ContextModule] HttpTransactionCheckDataSource: Cannot exploit transaction check data received"));const c={publicKeyId:r.public_key_id,descriptor:r.descriptor};return d(c)}_isTransactionCheckDto(e){return e!=null&&typeof e=="object"&&"public_key_id"in e&&e.public_key_id!=null&&typeof e.public_key_id=="string"&&"descriptor"in e&&e.descriptor!=null&&typeof e.descriptor=="string"}};a=s([k(),p(0,C(E.Config))],a);export{a as HttpTransactionCheckDataSource};
1
+ var k=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var p=(i,t,r,o)=>{for(var e=o>1?void 0:o?m(t,r):t,n=i.length-1,c;n>=0;n--)(c=i[n])&&(e=(o?c(t,r,e):c(e))||e);return o&&e&&k(t,r,e),e},s=(i,t)=>(r,o)=>t(r,o,i);import{inject as l,injectable as C}from"inversify";import{Left as h,Right as u}from"purify-ts";import{configTypes as f}from"../../config/di/configTypes";import{networkTypes as y}from"../../network/di/networkTypes";let a=class{constructor(t,r){this.config=t;this.http=r}async getTransactionCheck({chainId:t,rawTx:r,from:o}){let e;const n={tx:{from:o,raw:r},chain:t};try{e=await this.http.post(`${this.config.web3checks.url}/ethereum/scan/tx`,n)}catch{return h(new Error("[ContextModule] HttpTransactionCheckDataSource: Failed to fetch web3 checks information"))}if(!this._isTransactionCheckDto(e))return h(new Error("[ContextModule] HttpTransactionCheckDataSource: Cannot exploit transaction check data received"));const c={publicKeyId:e.public_key_id,descriptor:e.descriptor};return u(c)}_isTransactionCheckDto(t){return t!=null&&typeof t=="object"&&"public_key_id"in t&&t.public_key_id!=null&&typeof t.public_key_id=="string"&&"descriptor"in t&&t.descriptor!=null&&typeof t.descriptor=="string"}};a=p([C(),s(0,l(f.Config)),s(1,l(y.NetworkClient))],a);export{a as HttpTransactionCheckDataSource};
2
2
  //# sourceMappingURL=HttpTransactionCheckDataSource.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/transaction-check/data/HttpTransactionCheckDataSource.ts"],
4
- "sourcesContent": ["import axios from \"axios\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport {\n LEDGER_CLIENT_VERSION_HEADER,\n LEDGER_ORIGIN_TOKEN_HEADER,\n} from \"@/shared/constant/HttpHeaders\";\nimport PACKAGE from \"@root/package.json\";\n\nimport { TransactionCheckDto } from \"./dto/TransactionCheckDto\";\nimport {\n GetTransactionCheckParams,\n TransactionCheck,\n} from \"./TransactionCheckDataSource\";\n\n@injectable()\nexport class HttpTransactionCheckDataSource {\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n ) {}\n\n public async getTransactionCheck({\n chainId,\n rawTx,\n from,\n }: GetTransactionCheckParams): Promise<Either<Error, TransactionCheck>> {\n let transactionCheckDto: TransactionCheckDto;\n const requestDto = {\n tx: {\n from,\n raw: rawTx,\n },\n chain: chainId,\n };\n\n try {\n const response = await axios.request<TransactionCheckDto>({\n method: \"POST\",\n url: `${this.config.web3checks.url}/ethereum/scan/tx`,\n data: requestDto,\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n [LEDGER_ORIGIN_TOKEN_HEADER]: this.config.originToken,\n },\n });\n transactionCheckDto = response.data;\n } catch (_error) {\n return Left(\n new Error(\n \"[ContextModule] HttpTransactionCheckDataSource: Failed to fetch web3 checks information\",\n ),\n );\n }\n\n if (!this._isTransactionCheckDto(transactionCheckDto)) {\n return Left(\n new Error(\n \"[ContextModule] HttpTransactionCheckDataSource: Cannot exploit transaction check data received\",\n ),\n );\n }\n const result: TransactionCheck = {\n publicKeyId: transactionCheckDto.public_key_id,\n descriptor: transactionCheckDto.descriptor,\n };\n\n return Right(result);\n }\n\n private _isTransactionCheckDto(dto: unknown): dto is TransactionCheckDto {\n return (\n dto != null &&\n typeof dto == \"object\" &&\n \"public_key_id\" in dto &&\n dto.public_key_id != null &&\n typeof dto.public_key_id == \"string\" &&\n \"descriptor\" in dto &&\n dto.descriptor != null &&\n typeof dto.descriptor == \"string\"\n );\n }\n}\n"],
5
- "mappings": "iOAAA,OAAOA,MAAW,QAClB,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,YACnC,OAAiB,QAAAC,EAAM,SAAAC,MAAa,YAEpC,OAAS,eAAAC,MAAmB,0BAE5B,OACE,gCAAAC,EACA,8BAAAC,MACK,gCACP,OAAOC,MAAa,qBASb,IAAMC,EAAN,KAAqC,CAC1C,YAEmBC,EACjB,CADiB,YAAAA,CAChB,CAEH,MAAa,oBAAoB,CAC/B,QAAAC,EACA,MAAAC,EACA,KAAAC,CACF,EAAwE,CACtE,IAAIC,EACJ,MAAMC,EAAa,CACjB,GAAI,CACF,KAAAF,EACA,IAAKD,CACP,EACA,MAAOD,CACT,EAEA,GAAI,CAUFG,GATiB,MAAME,EAAM,QAA6B,CACxD,OAAQ,OACR,IAAK,GAAG,KAAK,OAAO,WAAW,GAAG,oBAClC,KAAMD,EACN,QAAS,CACP,CAACE,CAA4B,EAAG,kBAAkBC,EAAQ,OAAO,GACjE,CAACC,CAA0B,EAAG,KAAK,OAAO,WAC5C,CACF,CAAC,GAC8B,IACjC,MAAiB,CACf,OAAOC,EACL,IAAI,MACF,yFACF,CACF,CACF,CAEA,GAAI,CAAC,KAAK,uBAAuBN,CAAmB,EAClD,OAAOM,EACL,IAAI,MACF,gGACF,CACF,EAEF,MAAMC,EAA2B,CAC/B,YAAaP,EAAoB,cACjC,WAAYA,EAAoB,UAClC,EAEA,OAAOQ,EAAMD,CAAM,CACrB,CAEQ,uBAAuBE,EAA0C,CACvE,OACEA,GAAO,MACP,OAAOA,GAAO,UACd,kBAAmBA,GACnBA,EAAI,eAAiB,MACrB,OAAOA,EAAI,eAAiB,UAC5B,eAAgBA,GAChBA,EAAI,YAAc,MAClB,OAAOA,EAAI,YAAc,QAE7B,CACF,EAlEad,EAANe,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAY,MAAM,IAFjBnB",
6
- "names": ["axios", "inject", "injectable", "Left", "Right", "configTypes", "LEDGER_CLIENT_VERSION_HEADER", "LEDGER_ORIGIN_TOKEN_HEADER", "PACKAGE", "HttpTransactionCheckDataSource", "config", "chainId", "rawTx", "from", "transactionCheckDto", "requestDto", "axios", "LEDGER_CLIENT_VERSION_HEADER", "PACKAGE", "LEDGER_ORIGIN_TOKEN_HEADER", "Left", "result", "Right", "dto", "__decorateClass", "injectable", "__decorateParam", "inject", "configTypes"]
4
+ "sourcesContent": ["import { DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { networkTypes } from \"@/network/di/networkTypes\";\n\nimport { TransactionCheckDto } from \"./dto/TransactionCheckDto\";\nimport {\n GetTransactionCheckParams,\n TransactionCheck,\n} from \"./TransactionCheckDataSource\";\n\n@injectable()\nexport class HttpTransactionCheckDataSource {\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n @inject(networkTypes.NetworkClient)\n private readonly http: DmkNetworkClient,\n ) {}\n\n public async getTransactionCheck({\n chainId,\n rawTx,\n from,\n }: GetTransactionCheckParams): Promise<Either<Error, TransactionCheck>> {\n let transactionCheckDto: TransactionCheckDto;\n const requestDto = {\n tx: {\n from,\n raw: rawTx,\n },\n chain: chainId,\n };\n\n try {\n transactionCheckDto = (await this.http.post(\n `${this.config.web3checks.url}/ethereum/scan/tx`,\n requestDto,\n )) as TransactionCheckDto;\n } catch (_error) {\n return Left(\n new Error(\n \"[ContextModule] HttpTransactionCheckDataSource: Failed to fetch web3 checks information\",\n ),\n );\n }\n\n if (!this._isTransactionCheckDto(transactionCheckDto)) {\n return Left(\n new Error(\n \"[ContextModule] HttpTransactionCheckDataSource: Cannot exploit transaction check data received\",\n ),\n );\n }\n const result: TransactionCheck = {\n publicKeyId: transactionCheckDto.public_key_id,\n descriptor: transactionCheckDto.descriptor,\n };\n\n return Right(result);\n }\n\n private _isTransactionCheckDto(dto: unknown): dto is TransactionCheckDto {\n return (\n dto != null &&\n typeof dto == \"object\" &&\n \"public_key_id\" in dto &&\n dto.public_key_id != null &&\n typeof dto.public_key_id == \"string\" &&\n \"descriptor\" in dto &&\n dto.descriptor != null &&\n typeof dto.descriptor == \"string\"\n );\n }\n}\n"],
5
+ "mappings": "iOACA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YACnC,OAAiB,QAAAC,EAAM,SAAAC,MAAa,YAEpC,OAAS,eAAAC,MAAmB,0BAE5B,OAAS,gBAAAC,MAAoB,4BAStB,IAAMC,EAAN,KAAqC,CAC1C,YAEmBC,EAEAC,EACjB,CAHiB,YAAAD,EAEA,UAAAC,CAChB,CAEH,MAAa,oBAAoB,CAC/B,QAAAC,EACA,MAAAC,EACA,KAAAC,CACF,EAAwE,CACtE,IAAIC,EACJ,MAAMC,EAAa,CACjB,GAAI,CACF,KAAAF,EACA,IAAKD,CACP,EACA,MAAOD,CACT,EAEA,GAAI,CACFG,EAAuB,MAAM,KAAK,KAAK,KACrC,GAAG,KAAK,OAAO,WAAW,GAAG,oBAC7BC,CACF,CACF,MAAiB,CACf,OAAOC,EACL,IAAI,MACF,yFACF,CACF,CACF,CAEA,GAAI,CAAC,KAAK,uBAAuBF,CAAmB,EAClD,OAAOE,EACL,IAAI,MACF,gGACF,CACF,EAEF,MAAMC,EAA2B,CAC/B,YAAaH,EAAoB,cACjC,WAAYA,EAAoB,UAClC,EAEA,OAAOI,EAAMD,CAAM,CACrB,CAEQ,uBAAuBE,EAA0C,CACvE,OACEA,GAAO,MACP,OAAOA,GAAO,UACd,kBAAmBA,GACnBA,EAAI,eAAiB,MACrB,OAAOA,EAAI,eAAiB,UAC5B,eAAgBA,GAChBA,EAAI,YAAc,MAClB,OAAOA,EAAI,YAAc,QAE7B,CACF,EA9DaX,EAANY,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAY,MAAM,GAEzBF,EAAA,EAAAC,EAAOE,EAAa,aAAa,IAJzBjB",
6
+ "names": ["inject", "injectable", "Left", "Right", "configTypes", "networkTypes", "HttpTransactionCheckDataSource", "config", "http", "chainId", "rawTx", "from", "transactionCheckDto", "requestDto", "Left", "result", "Right", "dto", "__decorateClass", "injectable", "__decorateParam", "inject", "configTypes", "networkTypes"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import a from"axios";import{Left as s,Right as i}from"purify-ts";import{LEDGER_CLIENT_VERSION_HEADER as d,LEDGER_ORIGIN_TOKEN_HEADER as u}from"../../shared/constant/HttpHeaders";import{HttpTransactionCheckDataSource as c}from"../../transaction-check/data/HttpTransactionCheckDataSource";import h from"../../../package.json";vi.mock("axios");describe("HttpTransactionCheckDataSource",()=>{const o={web3checks:{url:"web3checksUrl"},originToken:"originToken"};beforeEach(()=>{vi.resetAllMocks()}),describe("getTransactionCheck",()=>{it("should return an object if the request is successful",async()=>{const e={from:"0x1234567890123456789012345678901234567890",rawTx:"0xabcdef",chainId:1},t={public_key_id:"test-key-id",descriptor:"test-descriptor"};vi.spyOn(a,"request").mockResolvedValueOnce({data:t});const r=await new c(o).getTransactionCheck(e);expect(r).toEqual(i({publicKeyId:"test-key-id",descriptor:"test-descriptor"}))}),it("should return an error if the request fails",async()=>{const e={from:"0x1234567890123456789012345678901234567890",rawTx:"0xabcdef",chainId:1};vi.spyOn(a,"request").mockRejectedValue(new Error("error"));const n=await new c(o).getTransactionCheck(e);expect(n).toEqual(s(new Error("[ContextModule] HttpTransactionCheckDataSource: Failed to fetch web3 checks information")))}),it("should return an error if the response is invalid",async()=>{const e={from:"0x1234567890123456789012345678901234567890",rawTx:"0xabcdef",chainId:1},t={};vi.spyOn(a,"request").mockResolvedValue({data:t});const r=await new c(o).getTransactionCheck(e);expect(r).toEqual(s(new Error("[ContextModule] HttpTransactionCheckDataSource: Cannot exploit transaction check data received")))}),it("should return an error if public_key_id is missing",async()=>{const e={from:"0x1234567890123456789012345678901234567890",rawTx:"0xabcdef",chainId:1},t={descriptor:"test-descriptor"};vi.spyOn(a,"request").mockResolvedValue({data:t});const r=await new c(o).getTransactionCheck(e);expect(r).toEqual(s(new Error("[ContextModule] HttpTransactionCheckDataSource: Cannot exploit transaction check data received")))}),it("should return an error if descriptor is missing",async()=>{const e={from:"0x1234567890123456789012345678901234567890",rawTx:"0xabcdef",chainId:1},t={public_key_id:"test-key-id"};vi.spyOn(a,"request").mockResolvedValue({data:t});const r=await new c(o).getTransactionCheck(e);expect(r).toEqual(s(new Error("[ContextModule] HttpTransactionCheckDataSource: Cannot exploit transaction check data received")))}),it("should call axios with the correct headers",async()=>{const e={from:"0x1234567890123456789012345678901234567890",rawTx:"0xabcdef",chainId:1};vi.spyOn(a,"request").mockResolvedValueOnce({data:{}}),await new c(o).getTransactionCheck(e),expect(a.request).toHaveBeenCalledWith(expect.objectContaining({headers:{[d]:`context-module/${h.version}`,[u]:o.originToken}}))}),it("should call axios with the correct URL and method",async()=>{const e={from:"0x1234567890123456789012345678901234567890",rawTx:"0xabcdef",chainId:1};vi.spyOn(a,"request").mockResolvedValueOnce({data:{}}),await new c(o).getTransactionCheck(e),expect(a.request).toHaveBeenCalledWith(expect.objectContaining({method:"POST",url:`${o.web3checks.url}/ethereum/scan/tx`}))}),it("should call axios with the correct request data",async()=>{const e={from:"0x1234567890123456789012345678901234567890",rawTx:"0xabcdef",chainId:1};vi.spyOn(a,"request").mockResolvedValueOnce({data:{}}),await new c(o).getTransactionCheck(e),expect(a.request).toHaveBeenCalledWith(expect.objectContaining({data:{tx:{from:"0x1234567890123456789012345678901234567890",raw:"0xabcdef"},chain:1}}))})})});
1
+ import{Left as r,Right as s}from"purify-ts";import{HttpTransactionCheckDataSource as i}from"../../transaction-check/data/HttpTransactionCheckDataSource";describe("HttpTransactionCheckDataSource",()=>{const c={web3checks:{url:"https://web3checks.test"},originToken:"originToken"};let t,o;beforeEach(()=>{vi.resetAllMocks(),t={post:vi.fn()},o=new i(c,t)}),describe("getTransactionCheck",()=>{it("should return an object if the request is successful",async()=>{const e={from:"0x1234567890123456789012345678901234567890",rawTx:"0xabcdef",chainId:1},a={public_key_id:"test-key-id",descriptor:"test-descriptor"};t.post.mockResolvedValueOnce(a);const n=await o.getTransactionCheck(e);expect(n).toEqual(s({publicKeyId:"test-key-id",descriptor:"test-descriptor"}))}),it("should return an error if the request fails",async()=>{const e={from:"0x1234567890123456789012345678901234567890",rawTx:"0xabcdef",chainId:1};t.post.mockRejectedValue(new Error("error"));const a=await o.getTransactionCheck(e);expect(a).toEqual(r(new Error("[ContextModule] HttpTransactionCheckDataSource: Failed to fetch web3 checks information")))}),it("should return an error if the response is invalid",async()=>{const e={from:"0x1234567890123456789012345678901234567890",rawTx:"0xabcdef",chainId:1};t.post.mockResolvedValue({});const a=await o.getTransactionCheck(e);expect(a).toEqual(r(new Error("[ContextModule] HttpTransactionCheckDataSource: Cannot exploit transaction check data received")))}),it("should return an error if public_key_id is missing",async()=>{const e={from:"0x1234567890123456789012345678901234567890",rawTx:"0xabcdef",chainId:1};t.post.mockResolvedValue({descriptor:"test-descriptor"});const a=await o.getTransactionCheck(e);expect(a).toEqual(r(new Error("[ContextModule] HttpTransactionCheckDataSource: Cannot exploit transaction check data received")))}),it("should return an error if descriptor is missing",async()=>{const e={from:"0x1234567890123456789012345678901234567890",rawTx:"0xabcdef",chainId:1};t.post.mockResolvedValue({public_key_id:"test-key-id"});const a=await o.getTransactionCheck(e);expect(a).toEqual(r(new Error("[ContextModule] HttpTransactionCheckDataSource: Cannot exploit transaction check data received")))}),it("should call http.post with the correct URL and body",async()=>{const e={from:"0x1234567890123456789012345678901234567890",rawTx:"0xabcdef",chainId:1};t.post.mockResolvedValueOnce({}),await o.getTransactionCheck(e),expect(t.post).toHaveBeenCalledWith(`${c.web3checks.url}/ethereum/scan/tx`,{tx:{from:"0x1234567890123456789012345678901234567890",raw:"0xabcdef"},chain:1})})})});
2
2
  //# sourceMappingURL=HttpTransactionCheckDataSource.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/transaction-check/data/HttpTransactionCheckDataSource.test.ts"],
4
- "sourcesContent": ["import axios from \"axios\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport {\n LEDGER_CLIENT_VERSION_HEADER,\n LEDGER_ORIGIN_TOKEN_HEADER,\n} from \"@/shared/constant/HttpHeaders\";\nimport { type TransactionCheckDto } from \"@/transaction-check/data/dto/TransactionCheckDto\";\nimport { HttpTransactionCheckDataSource } from \"@/transaction-check/data/HttpTransactionCheckDataSource\";\nimport { type GetTransactionCheckParams } from \"@/transaction-check/data/TransactionCheckDataSource\";\nimport PACKAGE from \"@root/package.json\";\n\nvi.mock(\"axios\");\n\ndescribe(\"HttpTransactionCheckDataSource\", () => {\n const config = {\n web3checks: {\n url: \"web3checksUrl\",\n },\n originToken: \"originToken\",\n } as ContextModuleServiceConfig;\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"getTransactionCheck\", () => {\n it(\"should return an object if the request is successful\", async () => {\n // GIVEN\n const params: GetTransactionCheckParams = {\n from: \"0x1234567890123456789012345678901234567890\",\n rawTx: \"0xabcdef\",\n chainId: 1,\n };\n const dto: TransactionCheckDto = {\n public_key_id: \"test-key-id\",\n descriptor: \"test-descriptor\",\n };\n vi.spyOn(axios, \"request\").mockResolvedValueOnce({ data: dto });\n\n // WHEN\n const dataSource = new HttpTransactionCheckDataSource(config);\n const result = await dataSource.getTransactionCheck(params);\n\n // THEN\n expect(result).toEqual(\n Right({\n publicKeyId: \"test-key-id\",\n descriptor: \"test-descriptor\",\n }),\n );\n });\n\n it(\"should return an error if the request fails\", async () => {\n // GIVEN\n const params: GetTransactionCheckParams = {\n from: \"0x1234567890123456789012345678901234567890\",\n rawTx: \"0xabcdef\",\n chainId: 1,\n };\n vi.spyOn(axios, \"request\").mockRejectedValue(new Error(\"error\"));\n\n // WHEN\n const dataSource = new HttpTransactionCheckDataSource(config);\n const result = await dataSource.getTransactionCheck(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTransactionCheckDataSource: Failed to fetch web3 checks information\",\n ),\n ),\n );\n });\n\n it(\"should return an error if the response is invalid\", async () => {\n // GIVEN\n const params: GetTransactionCheckParams = {\n from: \"0x1234567890123456789012345678901234567890\",\n rawTx: \"0xabcdef\",\n chainId: 1,\n };\n const dto = {};\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: dto });\n\n // WHEN\n const dataSource = new HttpTransactionCheckDataSource(config);\n const result = await dataSource.getTransactionCheck(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTransactionCheckDataSource: Cannot exploit transaction check data received\",\n ),\n ),\n );\n });\n\n it(\"should return an error if public_key_id is missing\", async () => {\n // GIVEN\n const params: GetTransactionCheckParams = {\n from: \"0x1234567890123456789012345678901234567890\",\n rawTx: \"0xabcdef\",\n chainId: 1,\n };\n const dto = {\n descriptor: \"test-descriptor\",\n };\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: dto });\n\n // WHEN\n const dataSource = new HttpTransactionCheckDataSource(config);\n const result = await dataSource.getTransactionCheck(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTransactionCheckDataSource: Cannot exploit transaction check data received\",\n ),\n ),\n );\n });\n\n it(\"should return an error if descriptor is missing\", async () => {\n // GIVEN\n const params: GetTransactionCheckParams = {\n from: \"0x1234567890123456789012345678901234567890\",\n rawTx: \"0xabcdef\",\n chainId: 1,\n };\n const dto = {\n public_key_id: \"test-key-id\",\n };\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: dto });\n\n // WHEN\n const dataSource = new HttpTransactionCheckDataSource(config);\n const result = await dataSource.getTransactionCheck(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTransactionCheckDataSource: Cannot exploit transaction check data received\",\n ),\n ),\n );\n });\n\n it(\"should call axios with the correct headers\", async () => {\n // GIVEN\n const params: GetTransactionCheckParams = {\n from: \"0x1234567890123456789012345678901234567890\",\n rawTx: \"0xabcdef\",\n chainId: 1,\n };\n vi.spyOn(axios, \"request\").mockResolvedValueOnce({ data: {} });\n\n // WHEN\n const dataSource = new HttpTransactionCheckDataSource(config);\n await dataSource.getTransactionCheck(params);\n\n // THEN\n expect(axios.request).toHaveBeenCalledWith(\n expect.objectContaining({\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n [LEDGER_ORIGIN_TOKEN_HEADER]: config.originToken,\n },\n }),\n );\n });\n\n it(\"should call axios with the correct URL and method\", async () => {\n // GIVEN\n const params: GetTransactionCheckParams = {\n from: \"0x1234567890123456789012345678901234567890\",\n rawTx: \"0xabcdef\",\n chainId: 1,\n };\n vi.spyOn(axios, \"request\").mockResolvedValueOnce({ data: {} });\n\n // WHEN\n const dataSource = new HttpTransactionCheckDataSource(config);\n await dataSource.getTransactionCheck(params);\n\n // THEN\n expect(axios.request).toHaveBeenCalledWith(\n expect.objectContaining({\n method: \"POST\",\n url: `${config.web3checks.url}/ethereum/scan/tx`,\n }),\n );\n });\n\n it(\"should call axios with the correct request data\", async () => {\n // GIVEN\n const params: GetTransactionCheckParams = {\n from: \"0x1234567890123456789012345678901234567890\",\n rawTx: \"0xabcdef\",\n chainId: 1,\n };\n vi.spyOn(axios, \"request\").mockResolvedValueOnce({ data: {} });\n\n // WHEN\n const dataSource = new HttpTransactionCheckDataSource(config);\n await dataSource.getTransactionCheck(params);\n\n // THEN\n expect(axios.request).toHaveBeenCalledWith(\n expect.objectContaining({\n data: {\n tx: {\n from: \"0x1234567890123456789012345678901234567890\",\n raw: \"0xabcdef\",\n },\n chain: 1,\n },\n }),\n );\n });\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["axios", "Left", "Right", "LEDGER_CLIENT_VERSION_HEADER", "LEDGER_ORIGIN_TOKEN_HEADER", "HttpTransactionCheckDataSource", "PACKAGE", "config", "params", "dto", "result"]
4
+ "sourcesContent": ["import { type DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { type TransactionCheckDto } from \"@/transaction-check/data/dto/TransactionCheckDto\";\nimport { HttpTransactionCheckDataSource } from \"@/transaction-check/data/HttpTransactionCheckDataSource\";\nimport { type GetTransactionCheckParams } from \"@/transaction-check/data/TransactionCheckDataSource\";\n\ndescribe(\"HttpTransactionCheckDataSource\", () => {\n const config = {\n web3checks: {\n url: \"https://web3checks.test\",\n },\n originToken: \"originToken\",\n } as ContextModuleServiceConfig;\n\n let httpMock: { post: ReturnType<typeof vi.fn> };\n let dataSource: HttpTransactionCheckDataSource;\n\n beforeEach(() => {\n vi.resetAllMocks();\n httpMock = { post: vi.fn() };\n dataSource = new HttpTransactionCheckDataSource(\n config,\n httpMock as unknown as DmkNetworkClient,\n );\n });\n\n describe(\"getTransactionCheck\", () => {\n it(\"should return an object if the request is successful\", async () => {\n // GIVEN\n const params: GetTransactionCheckParams = {\n from: \"0x1234567890123456789012345678901234567890\",\n rawTx: \"0xabcdef\",\n chainId: 1,\n };\n const dto: TransactionCheckDto = {\n public_key_id: \"test-key-id\",\n descriptor: \"test-descriptor\",\n };\n httpMock.post.mockResolvedValueOnce(dto);\n\n // WHEN\n const result = await dataSource.getTransactionCheck(params);\n\n // THEN\n expect(result).toEqual(\n Right({\n publicKeyId: \"test-key-id\",\n descriptor: \"test-descriptor\",\n }),\n );\n });\n\n it(\"should return an error if the request fails\", async () => {\n // GIVEN\n const params: GetTransactionCheckParams = {\n from: \"0x1234567890123456789012345678901234567890\",\n rawTx: \"0xabcdef\",\n chainId: 1,\n };\n httpMock.post.mockRejectedValue(new Error(\"error\"));\n\n // WHEN\n const result = await dataSource.getTransactionCheck(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTransactionCheckDataSource: Failed to fetch web3 checks information\",\n ),\n ),\n );\n });\n\n it(\"should return an error if the response is invalid\", async () => {\n // GIVEN\n const params: GetTransactionCheckParams = {\n from: \"0x1234567890123456789012345678901234567890\",\n rawTx: \"0xabcdef\",\n chainId: 1,\n };\n httpMock.post.mockResolvedValue({});\n\n // WHEN\n const result = await dataSource.getTransactionCheck(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTransactionCheckDataSource: Cannot exploit transaction check data received\",\n ),\n ),\n );\n });\n\n it(\"should return an error if public_key_id is missing\", async () => {\n // GIVEN\n const params: GetTransactionCheckParams = {\n from: \"0x1234567890123456789012345678901234567890\",\n rawTx: \"0xabcdef\",\n chainId: 1,\n };\n httpMock.post.mockResolvedValue({\n descriptor: \"test-descriptor\",\n });\n\n // WHEN\n const result = await dataSource.getTransactionCheck(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTransactionCheckDataSource: Cannot exploit transaction check data received\",\n ),\n ),\n );\n });\n\n it(\"should return an error if descriptor is missing\", async () => {\n // GIVEN\n const params: GetTransactionCheckParams = {\n from: \"0x1234567890123456789012345678901234567890\",\n rawTx: \"0xabcdef\",\n chainId: 1,\n };\n httpMock.post.mockResolvedValue({\n public_key_id: \"test-key-id\",\n });\n\n // WHEN\n const result = await dataSource.getTransactionCheck(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTransactionCheckDataSource: Cannot exploit transaction check data received\",\n ),\n ),\n );\n });\n\n it(\"should call http.post with the correct URL and body\", async () => {\n // GIVEN\n const params: GetTransactionCheckParams = {\n from: \"0x1234567890123456789012345678901234567890\",\n rawTx: \"0xabcdef\",\n chainId: 1,\n };\n httpMock.post.mockResolvedValueOnce({});\n\n // WHEN\n await dataSource.getTransactionCheck(params);\n\n // THEN\n expect(httpMock.post).toHaveBeenCalledWith(\n `${config.web3checks.url}/ethereum/scan/tx`,\n {\n tx: {\n from: \"0x1234567890123456789012345678901234567890\",\n raw: \"0xabcdef\",\n },\n chain: 1,\n },\n );\n });\n });\n});\n"],
5
+ "mappings": "AACA,OAAS,QAAAA,EAAM,SAAAC,MAAa,YAI5B,OAAS,kCAAAC,MAAsC,0DAG/C,SAAS,iCAAkC,IAAM,CAC/C,MAAMC,EAAS,CACb,WAAY,CACV,IAAK,yBACP,EACA,YAAa,aACf,EAEA,IAAIC,EACAC,EAEJ,WAAW,IAAM,CACf,GAAG,cAAc,EACjBD,EAAW,CAAE,KAAM,GAAG,GAAG,CAAE,EAC3BC,EAAa,IAAIH,EACfC,EACAC,CACF,CACF,CAAC,EAED,SAAS,sBAAuB,IAAM,CACpC,GAAG,uDAAwD,SAAY,CAErE,MAAME,EAAoC,CACxC,KAAM,6CACN,MAAO,WACP,QAAS,CACX,EACMC,EAA2B,CAC/B,cAAe,cACf,WAAY,iBACd,EACAH,EAAS,KAAK,sBAAsBG,CAAG,EAGvC,MAAMC,EAAS,MAAMH,EAAW,oBAAoBC,CAAM,EAG1D,OAAOE,CAAM,EAAE,QACbP,EAAM,CACJ,YAAa,cACb,WAAY,iBACd,CAAC,CACH,CACF,CAAC,EAED,GAAG,8CAA+C,SAAY,CAE5D,MAAMK,EAAoC,CACxC,KAAM,6CACN,MAAO,WACP,QAAS,CACX,EACAF,EAAS,KAAK,kBAAkB,IAAI,MAAM,OAAO,CAAC,EAGlD,MAAMI,EAAS,MAAMH,EAAW,oBAAoBC,CAAM,EAG1D,OAAOE,CAAM,EAAE,QACbR,EACE,IAAI,MACF,yFACF,CACF,CACF,CACF,CAAC,EAED,GAAG,oDAAqD,SAAY,CAElE,MAAMM,EAAoC,CACxC,KAAM,6CACN,MAAO,WACP,QAAS,CACX,EACAF,EAAS,KAAK,kBAAkB,CAAC,CAAC,EAGlC,MAAMI,EAAS,MAAMH,EAAW,oBAAoBC,CAAM,EAG1D,OAAOE,CAAM,EAAE,QACbR,EACE,IAAI,MACF,gGACF,CACF,CACF,CACF,CAAC,EAED,GAAG,qDAAsD,SAAY,CAEnE,MAAMM,EAAoC,CACxC,KAAM,6CACN,MAAO,WACP,QAAS,CACX,EACAF,EAAS,KAAK,kBAAkB,CAC9B,WAAY,iBACd,CAAC,EAGD,MAAMI,EAAS,MAAMH,EAAW,oBAAoBC,CAAM,EAG1D,OAAOE,CAAM,EAAE,QACbR,EACE,IAAI,MACF,gGACF,CACF,CACF,CACF,CAAC,EAED,GAAG,kDAAmD,SAAY,CAEhE,MAAMM,EAAoC,CACxC,KAAM,6CACN,MAAO,WACP,QAAS,CACX,EACAF,EAAS,KAAK,kBAAkB,CAC9B,cAAe,aACjB,CAAC,EAGD,MAAMI,EAAS,MAAMH,EAAW,oBAAoBC,CAAM,EAG1D,OAAOE,CAAM,EAAE,QACbR,EACE,IAAI,MACF,gGACF,CACF,CACF,CACF,CAAC,EAED,GAAG,sDAAuD,SAAY,CAEpE,MAAMM,EAAoC,CACxC,KAAM,6CACN,MAAO,WACP,QAAS,CACX,EACAF,EAAS,KAAK,sBAAsB,CAAC,CAAC,EAGtC,MAAMC,EAAW,oBAAoBC,CAAM,EAG3C,OAAOF,EAAS,IAAI,EAAE,qBACpB,GAAGD,EAAO,WAAW,GAAG,oBACxB,CACE,GAAI,CACF,KAAM,6CACN,IAAK,UACP,EACA,MAAO,CACT,CACF,CACF,CAAC,CACH,CAAC,CACH,CAAC",
6
+ "names": ["Left", "Right", "HttpTransactionCheckDataSource", "config", "httpMock", "dataSource", "params", "dto", "result"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var y=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var n=(i,e,o,t)=>{for(var r=t>1?void 0:t?h(e,o):e,a=i.length-1,c;a>=0;a--)(c=i[a])&&(r=(t?c(e,o,r):c(r))||r);return t&&r&&y(e,o,r),r},s=(i,e)=>(o,t)=>e(o,t,i);import m from"axios";import{inject as l,injectable as u}from"inversify";import{Left as d,Right as D}from"purify-ts";import{configTypes as C}from"../../config/di/configTypes";import{LEDGER_CLIENT_VERSION_HEADER as f,LEDGER_ORIGIN_TOKEN_HEADER as k}from"../../shared/constant/HttpHeaders";import T from"../../../package.json";let p=class{constructor(e){this.config=e}async getTypedDataCheck({from:e,data:o}){let t;const r={msg:{from:e,data:o}};try{t=(await m.request({method:"POST",url:`${this.config.web3checks.url}/ethereum/scan/eip-712`,data:r,headers:{[f]:`context-module/${T.version}`,[k]:this.config.originToken}})).data}catch{return d(new Error("[ContextModule] HttpTypedDataCheckDataSource: Failed to fetch typed data check information"))}if(!this._isTypedDataCheckDto(t))return d(new Error("[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received"));const a={publicKeyId:t.public_key_id,descriptor:t.descriptor};return D(a)}_isTypedDataCheckDto(e){return e!=null&&typeof e=="object"&&"public_key_id"in e&&e.public_key_id!=null&&typeof e.public_key_id=="string"&&"descriptor"in e&&e.descriptor!=null&&typeof e.descriptor=="string"}};p=n([u(),s(0,l(C.Config))],p);export{p as HttpTypedDataCheckDataSource};
1
+ var l=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var s=(i,e,o,t)=>{for(var r=t>1?void 0:t?h(e,o):e,a=i.length-1,c;a>=0;a--)(c=i[a])&&(r=(t?c(e,o,r):c(r))||r);return t&&r&&l(e,o,r),r},n=(i,e)=>(o,t)=>e(o,t,i);import{inject as d,injectable as k}from"inversify";import{Left as y,Right as m}from"purify-ts";import{configTypes as C}from"../../config/di/configTypes";import{networkTypes as D}from"../../network/di/networkTypes";let p=class{constructor(e,o){this.config=e;this.http=o}async getTypedDataCheck({from:e,data:o}){let t;const r={msg:{from:e,data:o}};try{t=await this.http.post(`${this.config.web3checks.url}/ethereum/scan/eip-712`,r)}catch{return y(new Error("[ContextModule] HttpTypedDataCheckDataSource: Failed to fetch typed data check information"))}if(!this._isTypedDataCheckDto(t))return y(new Error("[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received"));const a={publicKeyId:t.public_key_id,descriptor:t.descriptor};return m(a)}_isTypedDataCheckDto(e){return e!=null&&typeof e=="object"&&"public_key_id"in e&&e.public_key_id!=null&&typeof e.public_key_id=="string"&&"descriptor"in e&&e.descriptor!=null&&typeof e.descriptor=="string"}};p=s([k(),n(0,d(C.Config)),n(1,d(D.NetworkClient))],p);export{p as HttpTypedDataCheckDataSource};
2
2
  //# sourceMappingURL=HttpTypedDataCheckDataSource.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/transaction-check/data/HttpTypedDataCheckDataSource.ts"],
4
- "sourcesContent": ["import axios from \"axios\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport {\n LEDGER_CLIENT_VERSION_HEADER,\n LEDGER_ORIGIN_TOKEN_HEADER,\n} from \"@/shared/constant/HttpHeaders\";\nimport PACKAGE from \"@root/package.json\";\n\nimport { TypedDataCheckDto } from \"./dto/TypedDataCheckDto\";\nimport {\n GetTypedDataCheckParams,\n TypedDataCheck,\n TypedDataCheckDataSource,\n} from \"./TypedDataCheckDataSource\";\n\n@injectable()\nexport class HttpTypedDataCheckDataSource implements TypedDataCheckDataSource {\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n ) {}\n\n public async getTypedDataCheck({\n from,\n data,\n }: GetTypedDataCheckParams): Promise<Either<Error, TypedDataCheck>> {\n let typedDataCheckDto: TypedDataCheckDto;\n const requestDto = {\n msg: {\n from,\n data,\n },\n };\n\n try {\n const response = await axios.request<TypedDataCheckDto>({\n method: \"POST\",\n url: `${this.config.web3checks.url}/ethereum/scan/eip-712`,\n data: requestDto,\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n [LEDGER_ORIGIN_TOKEN_HEADER]: this.config.originToken,\n },\n });\n typedDataCheckDto = response.data;\n } catch (_error) {\n return Left(\n new Error(\n \"[ContextModule] HttpTypedDataCheckDataSource: Failed to fetch typed data check information\",\n ),\n );\n }\n\n if (!this._isTypedDataCheckDto(typedDataCheckDto)) {\n return Left(\n new Error(\n \"[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received\",\n ),\n );\n }\n\n const result: TypedDataCheck = {\n publicKeyId: typedDataCheckDto.public_key_id,\n descriptor: typedDataCheckDto.descriptor,\n };\n\n return Right(result);\n }\n\n private _isTypedDataCheckDto(dto: unknown): dto is TypedDataCheckDto {\n return (\n dto != null &&\n typeof dto == \"object\" &&\n \"public_key_id\" in dto &&\n dto.public_key_id != null &&\n typeof dto.public_key_id == \"string\" &&\n \"descriptor\" in dto &&\n dto.descriptor != null &&\n typeof dto.descriptor == \"string\"\n );\n }\n}\n"],
5
- "mappings": "iOAAA,OAAOA,MAAW,QAClB,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,YACnC,OAAiB,QAAAC,EAAM,SAAAC,MAAa,YAEpC,OAAS,eAAAC,MAAmB,0BAE5B,OACE,gCAAAC,EACA,8BAAAC,MACK,gCACP,OAAOC,MAAa,qBAUb,IAAMC,EAAN,KAAuE,CAC5E,YAEmBC,EACjB,CADiB,YAAAA,CAChB,CAEH,MAAa,kBAAkB,CAC7B,KAAAC,EACA,KAAAC,CACF,EAAoE,CAClE,IAAIC,EACJ,MAAMC,EAAa,CACjB,IAAK,CACH,KAAAH,EACA,KAAAC,CACF,CACF,EAEA,GAAI,CAUFC,GATiB,MAAME,EAAM,QAA2B,CACtD,OAAQ,OACR,IAAK,GAAG,KAAK,OAAO,WAAW,GAAG,yBAClC,KAAMD,EACN,QAAS,CACP,CAACE,CAA4B,EAAG,kBAAkBC,EAAQ,OAAO,GACjE,CAACC,CAA0B,EAAG,KAAK,OAAO,WAC5C,CACF,CAAC,GAC4B,IAC/B,MAAiB,CACf,OAAOC,EACL,IAAI,MACF,4FACF,CACF,CACF,CAEA,GAAI,CAAC,KAAK,qBAAqBN,CAAiB,EAC9C,OAAOM,EACL,IAAI,MACF,6FACF,CACF,EAGF,MAAMC,EAAyB,CAC7B,YAAaP,EAAkB,cAC/B,WAAYA,EAAkB,UAChC,EAEA,OAAOQ,EAAMD,CAAM,CACrB,CAEQ,qBAAqBE,EAAwC,CACnE,OACEA,GAAO,MACP,OAAOA,GAAO,UACd,kBAAmBA,GACnBA,EAAI,eAAiB,MACrB,OAAOA,EAAI,eAAiB,UAC5B,eAAgBA,GAChBA,EAAI,YAAc,MAClB,OAAOA,EAAI,YAAc,QAE7B,CACF,EAjEab,EAANc,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAY,MAAM,IAFjBlB",
6
- "names": ["axios", "inject", "injectable", "Left", "Right", "configTypes", "LEDGER_CLIENT_VERSION_HEADER", "LEDGER_ORIGIN_TOKEN_HEADER", "PACKAGE", "HttpTypedDataCheckDataSource", "config", "from", "data", "typedDataCheckDto", "requestDto", "axios", "LEDGER_CLIENT_VERSION_HEADER", "PACKAGE", "LEDGER_ORIGIN_TOKEN_HEADER", "Left", "result", "Right", "dto", "__decorateClass", "injectable", "__decorateParam", "inject", "configTypes"]
4
+ "sourcesContent": ["import { DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { networkTypes } from \"@/network/di/networkTypes\";\n\nimport { TypedDataCheckDto } from \"./dto/TypedDataCheckDto\";\nimport {\n GetTypedDataCheckParams,\n TypedDataCheck,\n TypedDataCheckDataSource,\n} from \"./TypedDataCheckDataSource\";\n\n@injectable()\nexport class HttpTypedDataCheckDataSource implements TypedDataCheckDataSource {\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n @inject(networkTypes.NetworkClient)\n private readonly http: DmkNetworkClient,\n ) {}\n\n public async getTypedDataCheck({\n from,\n data,\n }: GetTypedDataCheckParams): Promise<Either<Error, TypedDataCheck>> {\n let typedDataCheckDto: TypedDataCheckDto;\n const requestDto = {\n msg: {\n from,\n data,\n },\n };\n\n try {\n typedDataCheckDto = (await this.http.post(\n `${this.config.web3checks.url}/ethereum/scan/eip-712`,\n requestDto,\n )) as TypedDataCheckDto;\n } catch (_error) {\n return Left(\n new Error(\n \"[ContextModule] HttpTypedDataCheckDataSource: Failed to fetch typed data check information\",\n ),\n );\n }\n\n if (!this._isTypedDataCheckDto(typedDataCheckDto)) {\n return Left(\n new Error(\n \"[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received\",\n ),\n );\n }\n\n const result: TypedDataCheck = {\n publicKeyId: typedDataCheckDto.public_key_id,\n descriptor: typedDataCheckDto.descriptor,\n };\n\n return Right(result);\n }\n\n private _isTypedDataCheckDto(dto: unknown): dto is TypedDataCheckDto {\n return (\n dto != null &&\n typeof dto == \"object\" &&\n \"public_key_id\" in dto &&\n dto.public_key_id != null &&\n typeof dto.public_key_id == \"string\" &&\n \"descriptor\" in dto &&\n dto.descriptor != null &&\n typeof dto.descriptor == \"string\"\n );\n }\n}\n"],
5
+ "mappings": "iOACA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YACnC,OAAiB,QAAAC,EAAM,SAAAC,MAAa,YAEpC,OAAS,eAAAC,MAAmB,0BAE5B,OAAS,gBAAAC,MAAoB,4BAUtB,IAAMC,EAAN,KAAuE,CAC5E,YAEmBC,EAEAC,EACjB,CAHiB,YAAAD,EAEA,UAAAC,CAChB,CAEH,MAAa,kBAAkB,CAC7B,KAAAC,EACA,KAAAC,CACF,EAAoE,CAClE,IAAIC,EACJ,MAAMC,EAAa,CACjB,IAAK,CACH,KAAAH,EACA,KAAAC,CACF,CACF,EAEA,GAAI,CACFC,EAAqB,MAAM,KAAK,KAAK,KACnC,GAAG,KAAK,OAAO,WAAW,GAAG,yBAC7BC,CACF,CACF,MAAiB,CACf,OAAOC,EACL,IAAI,MACF,4FACF,CACF,CACF,CAEA,GAAI,CAAC,KAAK,qBAAqBF,CAAiB,EAC9C,OAAOE,EACL,IAAI,MACF,6FACF,CACF,EAGF,MAAMC,EAAyB,CAC7B,YAAaH,EAAkB,cAC/B,WAAYA,EAAkB,UAChC,EAEA,OAAOI,EAAMD,CAAM,CACrB,CAEQ,qBAAqBE,EAAwC,CACnE,OACEA,GAAO,MACP,OAAOA,GAAO,UACd,kBAAmBA,GACnBA,EAAI,eAAiB,MACrB,OAAOA,EAAI,eAAiB,UAC5B,eAAgBA,GAChBA,EAAI,YAAc,MAClB,OAAOA,EAAI,YAAc,QAE7B,CACF,EA7DaV,EAANW,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAY,MAAM,GAEzBF,EAAA,EAAAC,EAAOE,EAAa,aAAa,IAJzBhB",
6
+ "names": ["inject", "injectable", "Left", "Right", "configTypes", "networkTypes", "HttpTypedDataCheckDataSource", "config", "http", "from", "data", "typedDataCheckDto", "requestDto", "Left", "result", "Right", "dto", "__decorateClass", "injectable", "__decorateParam", "inject", "configTypes", "networkTypes"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import t from"axios";import{Left as s,Right as i}from"purify-ts";import{LEDGER_CLIENT_VERSION_HEADER as p,LEDGER_ORIGIN_TOKEN_HEADER as u}from"../../shared/constant/HttpHeaders";import{HttpTypedDataCheckDataSource as d}from"../../transaction-check/data/HttpTypedDataCheckDataSource";import l from"../../../package.json";vi.mock("axios");describe("HttpTypedDataCheckDataSource",()=>{const a={web3checks:{url:"web3checksUrl"},originToken:"originToken"};beforeEach(()=>{vi.resetAllMocks()}),describe("getTypedDataCheck",()=>{const r={from:"0x1234567890123456789012345678901234567890",data:{domain:{name:"Test Domain",version:"1",chainId:1,verifyingContract:"0x1234567890123456789012345678901234567890"},types:{EIP712Domain:[{name:"name",type:"string"},{name:"version",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"}],Person:[{name:"name",type:"string"},{name:"wallet",type:"address"}]},primaryType:"Person",message:{name:"Alice",wallet:"0x1234567890123456789012345678901234567890"}}};it("should return an object if the request is successful",async()=>{const e={public_key_id:"test-key-id",descriptor:"test-descriptor"};vi.spyOn(t,"request").mockResolvedValueOnce({data:e});const o=await new d(a).getTypedDataCheck(r);expect(o).toEqual(i({publicKeyId:"test-key-id",descriptor:"test-descriptor"}))}),it("should return an error if the request fails",async()=>{vi.spyOn(t,"request").mockRejectedValue(new Error("error"));const c=await new d(a).getTypedDataCheck(r);expect(c).toEqual(s(new Error("[ContextModule] HttpTypedDataCheckDataSource: Failed to fetch typed data check information")))}),it("should return an error if the response is invalid",async()=>{const e={};vi.spyOn(t,"request").mockResolvedValue({data:e});const o=await new d(a).getTypedDataCheck(r);expect(o).toEqual(s(new Error("[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received")))}),it("should return an error if public_key_id is missing",async()=>{const e={descriptor:"test-descriptor"};vi.spyOn(t,"request").mockResolvedValue({data:e});const o=await new d(a).getTypedDataCheck(r);expect(o).toEqual(s(new Error("[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received")))}),it("should return an error if descriptor is missing",async()=>{const e={public_key_id:"test-key-id"};vi.spyOn(t,"request").mockResolvedValue({data:e});const o=await new d(a).getTypedDataCheck(r);expect(o).toEqual(s(new Error("[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received")))}),it("should return an error if public_key_id is null",async()=>{const e={public_key_id:null,descriptor:"test-descriptor"};vi.spyOn(t,"request").mockResolvedValue({data:e});const o=await new d(a).getTypedDataCheck(r);expect(o).toEqual(s(new Error("[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received")))}),it("should return an error if descriptor is null",async()=>{const e={public_key_id:"test-key-id",descriptor:null};vi.spyOn(t,"request").mockResolvedValue({data:e});const o=await new d(a).getTypedDataCheck(r);expect(o).toEqual(s(new Error("[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received")))}),it("should call axios with the correct headers",async()=>{const e={public_key_id:"test-key-id",descriptor:"test-descriptor"};vi.spyOn(t,"request").mockResolvedValueOnce({data:e}),await new d(a).getTypedDataCheck(r),expect(t.request).toHaveBeenCalledWith(expect.objectContaining({headers:{[p]:`context-module/${l.version}`,[u]:a.originToken}}))}),it("should call axios with the correct URL and method",async()=>{const e={public_key_id:"test-key-id",descriptor:"test-descriptor"};vi.spyOn(t,"request").mockResolvedValueOnce({data:e}),await new d(a).getTypedDataCheck(r),expect(t.request).toHaveBeenCalledWith(expect.objectContaining({method:"POST",url:`${a.web3checks.url}/ethereum/scan/eip-712`}))}),it("should call axios with the correct request data",async()=>{const e={public_key_id:"test-key-id",descriptor:"test-descriptor"};vi.spyOn(t,"request").mockResolvedValueOnce({data:e}),await new d(a).getTypedDataCheck(r),expect(t.request).toHaveBeenCalledWith(expect.objectContaining({data:{msg:{from:r.from,data:r.data}}}))}),it("should handle empty typed data",async()=>{const c={from:"0x1234567890123456789012345678901234567890",data:{domain:{},types:{},primaryType:"",message:{}}},o={public_key_id:"test-key-id",descriptor:"test-descriptor"};vi.spyOn(t,"request").mockResolvedValueOnce({data:o});const n=await new d(a).getTypedDataCheck(c);expect(n).toEqual(i({publicKeyId:"test-key-id",descriptor:"test-descriptor"}))})})});
1
+ import{Left as r,Right as d}from"purify-ts";import{HttpTypedDataCheckDataSource as n}from"../../transaction-check/data/HttpTypedDataCheckDataSource";describe("HttpTypedDataCheckDataSource",()=>{const s={web3checks:{url:"https://web3checks.test"},originToken:"originToken"};let t,a;beforeEach(()=>{vi.resetAllMocks(),t={post:vi.fn()},a=new n(s,t)}),describe("getTypedDataCheck",()=>{const o={from:"0x1234567890123456789012345678901234567890",data:{domain:{name:"Test Domain",version:"1",chainId:1,verifyingContract:"0x1234567890123456789012345678901234567890"},types:{EIP712Domain:[{name:"name",type:"string"},{name:"version",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"}],Person:[{name:"name",type:"string"},{name:"wallet",type:"address"}]},primaryType:"Person",message:{name:"Alice",wallet:"0x1234567890123456789012345678901234567890"}}};it("should return an object if the request is successful",async()=>{const e={public_key_id:"test-key-id",descriptor:"test-descriptor"};t.post.mockResolvedValueOnce(e);const c=await a.getTypedDataCheck(o);expect(c).toEqual(d({publicKeyId:"test-key-id",descriptor:"test-descriptor"}))}),it("should return an error if the request fails",async()=>{t.post.mockRejectedValue(new Error("error"));const e=await a.getTypedDataCheck(o);expect(e).toEqual(r(new Error("[ContextModule] HttpTypedDataCheckDataSource: Failed to fetch typed data check information")))}),it("should return an error if the response is invalid",async()=>{t.post.mockResolvedValue({});const e=await a.getTypedDataCheck(o);expect(e).toEqual(r(new Error("[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received")))}),it("should return an error if public_key_id is missing",async()=>{t.post.mockResolvedValue({descriptor:"test-descriptor"});const e=await a.getTypedDataCheck(o);expect(e).toEqual(r(new Error("[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received")))}),it("should return an error if descriptor is missing",async()=>{t.post.mockResolvedValue({public_key_id:"test-key-id"});const e=await a.getTypedDataCheck(o);expect(e).toEqual(r(new Error("[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received")))}),it("should return an error if public_key_id is null",async()=>{t.post.mockResolvedValue({public_key_id:null,descriptor:"test-descriptor"});const e=await a.getTypedDataCheck(o);expect(e).toEqual(r(new Error("[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received")))}),it("should return an error if descriptor is null",async()=>{t.post.mockResolvedValue({public_key_id:"test-key-id",descriptor:null});const e=await a.getTypedDataCheck(o);expect(e).toEqual(r(new Error("[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received")))}),it("should call http.post with the correct URL and body",async()=>{const e={public_key_id:"test-key-id",descriptor:"test-descriptor"};t.post.mockResolvedValueOnce(e),await a.getTypedDataCheck(o),expect(t.post).toHaveBeenCalledWith(`${s.web3checks.url}/ethereum/scan/eip-712`,{msg:{from:o.from,data:o.data}})}),it("should handle empty typed data",async()=>{const c={from:"0x1234567890123456789012345678901234567890",data:{domain:{},types:{},primaryType:"",message:{}}},i={public_key_id:"test-key-id",descriptor:"test-descriptor"};t.post.mockResolvedValueOnce(i);const p=await a.getTypedDataCheck(c);expect(p).toEqual(d({publicKeyId:"test-key-id",descriptor:"test-descriptor"}))})})});
2
2
  //# sourceMappingURL=HttpTypedDataCheckDataSource.test.js.map