@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/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": ["import_axios", "import_purify_ts", "import_HttpHeaders", "import_HttpTransactionCheckDataSource", "import_package", "config", "params", "dto", "axios", "result", "PACKAGE"]
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,IAAAA,EAA4B,qBAI5BC,EAA+C,mEAG/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,IAAI,iCACfF,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,WACb,SAAM,CACJ,YAAa,cACb,WAAY,iBACd,CAAC,CACH,CACF,CAAC,EAED,GAAG,8CAA+C,SAAY,CAE5D,MAAMF,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,WACb,QACE,IAAI,MACF,yFACF,CACF,CACF,CACF,CAAC,EAED,GAAG,oDAAqD,SAAY,CAElE,MAAMF,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,WACb,QACE,IAAI,MACF,gGACF,CACF,CACF,CACF,CAAC,EAED,GAAG,qDAAsD,SAAY,CAEnE,MAAMF,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,WACb,QACE,IAAI,MACF,gGACF,CACF,CACF,CACF,CAAC,EAED,GAAG,kDAAmD,SAAY,CAEhE,MAAMF,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,WACb,QACE,IAAI,MACF,gGACF,CACF,CACF,CACF,CAAC,EAED,GAAG,sDAAuD,SAAY,CAEpE,MAAMF,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": ["import_purify_ts", "import_HttpTransactionCheckDataSource", "config", "httpMock", "dataSource", "params", "dto", "result"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var T=Object.create;var p=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var b=(t,e)=>{for(var r in e)p(t,r,{get:e[r],enumerable:!0})},m=(t,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of E(e))!g.call(t,o)&&o!==r&&p(t,o,{get:()=>e[o],enumerable:!(i=h(e,o))||i.enumerable});return t};var l=(t,e,r)=>(r=t!=null?T(_(t)):{},m(e||!t||!t.__esModule?p(r,"default",{value:t,enumerable:!0}):r,t)),x=t=>m(p({},"__esModule",{value:!0}),t),u=(t,e,r,i)=>{for(var o=i>1?void 0:i?h(e,r):e,a=t.length-1,c;a>=0;a--)(c=t[a])&&(o=(i?c(e,r,o):c(o))||o);return i&&o&&p(e,r,o),o},D=(t,e)=>(r,i)=>e(r,i,t);var R={};b(R,{HttpTypedDataCheckDataSource:()=>n});module.exports=x(R);var C=l(require("axios")),d=require("inversify"),s=require("purify-ts"),f=require("../../config/di/configTypes"),y=require("../../shared/constant/HttpHeaders"),k=l(require("../../../package.json"));let n=class{constructor(e){this.config=e}async getTypedDataCheck({from:e,data:r}){let i;const o={msg:{from:e,data:r}};try{i=(await C.default.request({method:"POST",url:`${this.config.web3checks.url}/ethereum/scan/eip-712`,data:o,headers:{[y.LEDGER_CLIENT_VERSION_HEADER]:`context-module/${k.default.version}`,[y.LEDGER_ORIGIN_TOKEN_HEADER]:this.config.originToken}})).data}catch{return(0,s.Left)(new Error("[ContextModule] HttpTypedDataCheckDataSource: Failed to fetch typed data check information"))}if(!this._isTypedDataCheckDto(i))return(0,s.Left)(new Error("[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received"));const a={publicKeyId:i.public_key_id,descriptor:i.descriptor};return(0,s.Right)(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"}};n=u([(0,d.injectable)(),D(0,(0,d.inject)(f.configTypes.Config))],n);0&&(module.exports={HttpTypedDataCheckDataSource});
1
+ "use strict";var d=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var D=Object.prototype.hasOwnProperty;var u=(o,e)=>{for(var i in e)d(o,i,{get:e[i],enumerable:!0})},f=(o,e,i,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of C(e))!D.call(o,t)&&t!==i&&d(o,t,{get:()=>e[t],enumerable:!(r=l(e,t))||r.enumerable});return o};var T=o=>f(d({},"__esModule",{value:!0}),o),h=(o,e,i,r)=>{for(var t=r>1?void 0:r?l(e,i):e,a=o.length-1,s;a>=0;a--)(s=o[a])&&(t=(r?s(e,i,t):s(t))||t);return r&&t&&d(e,i,t),t},y=(o,e)=>(i,r)=>e(i,r,o);var g={};u(g,{HttpTypedDataCheckDataSource:()=>c});module.exports=T(g);var p=require("inversify"),n=require("purify-ts"),k=require("../../config/di/configTypes"),m=require("../../network/di/networkTypes");let c=class{constructor(e,i){this.config=e;this.http=i}async getTypedDataCheck({from:e,data:i}){let r;const t={msg:{from:e,data:i}};try{r=await this.http.post(`${this.config.web3checks.url}/ethereum/scan/eip-712`,t)}catch{return(0,n.Left)(new Error("[ContextModule] HttpTypedDataCheckDataSource: Failed to fetch typed data check information"))}if(!this._isTypedDataCheckDto(r))return(0,n.Left)(new Error("[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received"));const a={publicKeyId:r.public_key_id,descriptor:r.descriptor};return(0,n.Right)(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"}};c=h([(0,p.injectable)(),y(0,(0,p.inject)(k.configTypes.Config)),y(1,(0,p.inject)(m.networkTypes.NetworkClient))],c);0&&(module.exports={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": "qtBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAkB,oBAClBC,EAAmC,qBACnCC,EAAoC,qBAEpCC,EAA4B,mCAE5BC,EAGO,yCACPC,EAAoB,iCAUb,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,MAAM,EAAAE,QAAM,QAA2B,CACtD,OAAQ,OACR,IAAK,GAAG,KAAK,OAAO,WAAW,GAAG,yBAClC,KAAMD,EACN,QAAS,CACP,CAAC,8BAA4B,EAAG,kBAAkB,EAAAE,QAAQ,OAAO,GACjE,CAAC,4BAA0B,EAAG,KAAK,OAAO,WAC5C,CACF,CAAC,GAC4B,IAC/B,MAAiB,CACf,SAAO,QACL,IAAI,MACF,4FACF,CACF,CACF,CAEA,GAAI,CAAC,KAAK,qBAAqBH,CAAiB,EAC9C,SAAO,QACL,IAAI,MACF,6FACF,CACF,EAGF,MAAMI,EAAyB,CAC7B,YAAaJ,EAAkB,cAC/B,WAAYA,EAAkB,UAChC,EAEA,SAAO,SAAMI,CAAM,CACrB,CAEQ,qBAAqBC,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,EAjEaT,EAANU,EAAA,IADN,cAAW,EAGPC,EAAA,eAAO,cAAY,MAAM,IAFjBX",
6
- "names": ["HttpTypedDataCheckDataSource_exports", "__export", "HttpTypedDataCheckDataSource", "__toCommonJS", "import_axios", "import_inversify", "import_purify_ts", "import_configTypes", "import_HttpHeaders", "import_package", "HttpTypedDataCheckDataSource", "config", "from", "data", "typedDataCheckDto", "requestDto", "axios", "PACKAGE", "result", "dto", "__decorateClass", "__decorateParam"]
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": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kCAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAAmC,qBACnCC,EAAoC,qBAEpCC,EAA4B,mCAE5BC,EAA6B,qCAUtB,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,SAAO,QACL,IAAI,MACF,4FACF,CACF,CACF,CAEA,GAAI,CAAC,KAAK,qBAAqBD,CAAiB,EAC9C,SAAO,QACL,IAAI,MACF,6FACF,CACF,EAGF,MAAME,EAAyB,CAC7B,YAAaF,EAAkB,cAC/B,WAAYA,EAAkB,UAChC,EAEA,SAAO,SAAME,CAAM,CACrB,CAEQ,qBAAqBC,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,EA7DaR,EAANS,EAAA,IADN,cAAW,EAGPC,EAAA,eAAO,cAAY,MAAM,GAEzBA,EAAA,eAAO,eAAa,aAAa,IAJzBV",
6
+ "names": ["HttpTypedDataCheckDataSource_exports", "__export", "HttpTypedDataCheckDataSource", "__toCommonJS", "import_inversify", "import_purify_ts", "import_configTypes", "import_networkTypes", "HttpTypedDataCheckDataSource", "config", "http", "from", "data", "typedDataCheckDto", "requestDto", "result", "dto", "__decorateClass", "__decorateParam"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var h=Object.create;var p=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var D=Object.getPrototypeOf,C=Object.prototype.hasOwnProperty;var T=(e,i,a,t)=>{if(i&&typeof i=="object"||typeof i=="function")for(let o of m(i))!C.call(e,o)&&o!==a&&p(e,o,{get:()=>i[o],enumerable:!(t=k(i,o))||t.enumerable});return e};var u=(e,i,a)=>(a=e!=null?h(D(e)):{},T(i||!e||!e.__esModule?p(a,"default",{value:e,enumerable:!0}):a,e));var r=u(require("axios")),s=require("purify-ts"),n=require("../../shared/constant/HttpHeaders"),d=require("../../transaction-check/data/HttpTypedDataCheckDataSource"),l=u(require("../../../package.json"));vi.mock("axios");describe("HttpTypedDataCheckDataSource",()=>{const e={web3checks:{url:"web3checksUrl"},originToken:"originToken"};beforeEach(()=>{vi.resetAllMocks()}),describe("getTypedDataCheck",()=>{const a={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 t={public_key_id:"test-key-id",descriptor:"test-descriptor"};vi.spyOn(r.default,"request").mockResolvedValueOnce({data:t});const c=await new d.HttpTypedDataCheckDataSource(e).getTypedDataCheck(a);expect(c).toEqual((0,s.Right)({publicKeyId:"test-key-id",descriptor:"test-descriptor"}))}),it("should return an error if the request fails",async()=>{vi.spyOn(r.default,"request").mockRejectedValue(new Error("error"));const o=await new d.HttpTypedDataCheckDataSource(e).getTypedDataCheck(a);expect(o).toEqual((0,s.Left)(new Error("[ContextModule] HttpTypedDataCheckDataSource: Failed to fetch typed data check information")))}),it("should return an error if the response is invalid",async()=>{const t={};vi.spyOn(r.default,"request").mockResolvedValue({data:t});const c=await new d.HttpTypedDataCheckDataSource(e).getTypedDataCheck(a);expect(c).toEqual((0,s.Left)(new Error("[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received")))}),it("should return an error if public_key_id is missing",async()=>{const t={descriptor:"test-descriptor"};vi.spyOn(r.default,"request").mockResolvedValue({data:t});const c=await new d.HttpTypedDataCheckDataSource(e).getTypedDataCheck(a);expect(c).toEqual((0,s.Left)(new Error("[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received")))}),it("should return an error if descriptor is missing",async()=>{const t={public_key_id:"test-key-id"};vi.spyOn(r.default,"request").mockResolvedValue({data:t});const c=await new d.HttpTypedDataCheckDataSource(e).getTypedDataCheck(a);expect(c).toEqual((0,s.Left)(new Error("[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received")))}),it("should return an error if public_key_id is null",async()=>{const t={public_key_id:null,descriptor:"test-descriptor"};vi.spyOn(r.default,"request").mockResolvedValue({data:t});const c=await new d.HttpTypedDataCheckDataSource(e).getTypedDataCheck(a);expect(c).toEqual((0,s.Left)(new Error("[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received")))}),it("should return an error if descriptor is null",async()=>{const t={public_key_id:"test-key-id",descriptor:null};vi.spyOn(r.default,"request").mockResolvedValue({data:t});const c=await new d.HttpTypedDataCheckDataSource(e).getTypedDataCheck(a);expect(c).toEqual((0,s.Left)(new Error("[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received")))}),it("should call axios with the correct headers",async()=>{const t={public_key_id:"test-key-id",descriptor:"test-descriptor"};vi.spyOn(r.default,"request").mockResolvedValueOnce({data:t}),await new d.HttpTypedDataCheckDataSource(e).getTypedDataCheck(a),expect(r.default.request).toHaveBeenCalledWith(expect.objectContaining({headers:{[n.LEDGER_CLIENT_VERSION_HEADER]:`context-module/${l.default.version}`,[n.LEDGER_ORIGIN_TOKEN_HEADER]:e.originToken}}))}),it("should call axios with the correct URL and method",async()=>{const t={public_key_id:"test-key-id",descriptor:"test-descriptor"};vi.spyOn(r.default,"request").mockResolvedValueOnce({data:t}),await new d.HttpTypedDataCheckDataSource(e).getTypedDataCheck(a),expect(r.default.request).toHaveBeenCalledWith(expect.objectContaining({method:"POST",url:`${e.web3checks.url}/ethereum/scan/eip-712`}))}),it("should call axios with the correct request data",async()=>{const t={public_key_id:"test-key-id",descriptor:"test-descriptor"};vi.spyOn(r.default,"request").mockResolvedValueOnce({data:t}),await new d.HttpTypedDataCheckDataSource(e).getTypedDataCheck(a),expect(r.default.request).toHaveBeenCalledWith(expect.objectContaining({data:{msg:{from:a.from,data:a.data}}}))}),it("should handle empty typed data",async()=>{const o={from:"0x1234567890123456789012345678901234567890",data:{domain:{},types:{},primaryType:"",message:{}}},c={public_key_id:"test-key-id",descriptor:"test-descriptor"};vi.spyOn(r.default,"request").mockResolvedValueOnce({data:c});const y=await new d.HttpTypedDataCheckDataSource(e).getTypedDataCheck(o);expect(y).toEqual((0,s.Right)({publicKeyId:"test-key-id",descriptor:"test-descriptor"}))})})});
1
+ "use strict";var r=require("purify-ts"),d=require("../../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 d.HttpTypedDataCheckDataSource(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((0,r.Right)({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((0,r.Left)(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((0,r.Left)(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((0,r.Left)(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((0,r.Left)(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((0,r.Left)(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((0,r.Left)(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((0,r.Right)({publicKeyId:"test-key-id",descriptor:"test-descriptor"}))})})});
2
2
  //# sourceMappingURL=HttpTypedDataCheckDataSource.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/transaction-check/data/HttpTypedDataCheckDataSource.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 TypedDataCheckDto } from \"@/transaction-check/data/dto/TypedDataCheckDto\";\nimport { HttpTypedDataCheckDataSource } from \"@/transaction-check/data/HttpTypedDataCheckDataSource\";\nimport {\n type GetTypedDataCheckParams,\n type TypedData,\n} from \"@/transaction-check/data/TypedDataCheckDataSource\";\nimport PACKAGE from \"@root/package.json\";\n\nvi.mock(\"axios\");\n\ndescribe(\"HttpTypedDataCheckDataSource\", () => {\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(\"getTypedDataCheck\", () => {\n const validTypedData: TypedData = {\n domain: {\n name: \"Test Domain\",\n version: \"1\",\n chainId: 1,\n verifyingContract: \"0x1234567890123456789012345678901234567890\",\n },\n types: {\n EIP712Domain: [\n { name: \"name\", type: \"string\" },\n { name: \"version\", type: \"string\" },\n { name: \"chainId\", type: \"uint256\" },\n { name: \"verifyingContract\", type: \"address\" },\n ],\n Person: [\n { name: \"name\", type: \"string\" },\n { name: \"wallet\", type: \"address\" },\n ],\n },\n primaryType: \"Person\",\n message: {\n name: \"Alice\",\n wallet: \"0x1234567890123456789012345678901234567890\",\n },\n };\n\n const params: GetTypedDataCheckParams = {\n from: \"0x1234567890123456789012345678901234567890\",\n data: validTypedData,\n };\n\n it(\"should return an object if the request is successful\", async () => {\n // GIVEN\n const dto: TypedDataCheckDto = {\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 HttpTypedDataCheckDataSource(config);\n const result = await dataSource.getTypedDataCheck(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 vi.spyOn(axios, \"request\").mockRejectedValue(new Error(\"error\"));\n\n // WHEN\n const dataSource = new HttpTypedDataCheckDataSource(config);\n const result = await dataSource.getTypedDataCheck(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTypedDataCheckDataSource: Failed to fetch typed data check information\",\n ),\n ),\n );\n });\n\n it(\"should return an error if the response is invalid\", async () => {\n // GIVEN\n const dto = {};\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: dto });\n\n // WHEN\n const dataSource = new HttpTypedDataCheckDataSource(config);\n const result = await dataSource.getTypedDataCheck(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data 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 dto = {\n descriptor: \"test-descriptor\",\n };\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: dto });\n\n // WHEN\n const dataSource = new HttpTypedDataCheckDataSource(config);\n const result = await dataSource.getTypedDataCheck(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received\",\n ),\n ),\n );\n });\n\n it(\"should return an error if descriptor is missing\", async () => {\n // GIVEN\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 HttpTypedDataCheckDataSource(config);\n const result = await dataSource.getTypedDataCheck(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received\",\n ),\n ),\n );\n });\n\n it(\"should return an error if public_key_id is null\", async () => {\n // GIVEN\n const dto = {\n public_key_id: null,\n descriptor: \"test-descriptor\",\n };\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: dto });\n\n // WHEN\n const dataSource = new HttpTypedDataCheckDataSource(config);\n const result = await dataSource.getTypedDataCheck(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received\",\n ),\n ),\n );\n });\n\n it(\"should return an error if descriptor is null\", async () => {\n // GIVEN\n const dto = {\n public_key_id: \"test-key-id\",\n descriptor: null,\n };\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: dto });\n\n // WHEN\n const dataSource = new HttpTypedDataCheckDataSource(config);\n const result = await dataSource.getTypedDataCheck(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received\",\n ),\n ),\n );\n });\n\n it(\"should call axios with the correct headers\", async () => {\n // GIVEN\n const dto: TypedDataCheckDto = {\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 HttpTypedDataCheckDataSource(config);\n await dataSource.getTypedDataCheck(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 dto: TypedDataCheckDto = {\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 HttpTypedDataCheckDataSource(config);\n await dataSource.getTypedDataCheck(params);\n\n // THEN\n expect(axios.request).toHaveBeenCalledWith(\n expect.objectContaining({\n method: \"POST\",\n url: `${config.web3checks.url}/ethereum/scan/eip-712`,\n }),\n );\n });\n\n it(\"should call axios with the correct request data\", async () => {\n // GIVEN\n const dto: TypedDataCheckDto = {\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 HttpTypedDataCheckDataSource(config);\n await dataSource.getTypedDataCheck(params);\n\n // THEN\n expect(axios.request).toHaveBeenCalledWith(\n expect.objectContaining({\n data: {\n msg: {\n from: params.from,\n data: params.data,\n },\n },\n }),\n );\n });\n\n it(\"should handle empty typed data\", async () => {\n // GIVEN\n const emptyTypedData: TypedData = {\n domain: {},\n types: {},\n primaryType: \"\",\n message: {},\n };\n const paramsWithEmptyData: GetTypedDataCheckParams = {\n from: \"0x1234567890123456789012345678901234567890\",\n data: emptyTypedData,\n };\n const dto: TypedDataCheckDto = {\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 HttpTypedDataCheckDataSource(config);\n const result = await dataSource.getTypedDataCheck(paramsWithEmptyData);\n\n // THEN\n expect(result).toEqual(\n Right({\n publicKeyId: \"test-key-id\",\n descriptor: \"test-descriptor\",\n }),\n );\n });\n });\n});\n"],
5
- "mappings": "wdAAA,IAAAA,EAAkB,oBAClBC,EAA4B,qBAG5BC,EAGO,yCAEPC,EAA6C,iEAK7CC,EAAoB,iCAEpB,GAAG,KAAK,OAAO,EAEf,SAAS,+BAAgC,IAAM,CAC7C,MAAMC,EAAS,CACb,WAAY,CACV,IAAK,eACP,EACA,YAAa,aACf,EAEA,WAAW,IAAM,CACf,GAAG,cAAc,CACnB,CAAC,EAED,SAAS,oBAAqB,IAAM,CA2BlC,MAAMC,EAAkC,CACtC,KAAM,6CACN,KA5BgC,CAChC,OAAQ,CACN,KAAM,cACN,QAAS,IACT,QAAS,EACT,kBAAmB,4CACrB,EACA,MAAO,CACL,aAAc,CACZ,CAAE,KAAM,OAAQ,KAAM,QAAS,EAC/B,CAAE,KAAM,UAAW,KAAM,QAAS,EAClC,CAAE,KAAM,UAAW,KAAM,SAAU,EACnC,CAAE,KAAM,oBAAqB,KAAM,SAAU,CAC/C,EACA,OAAQ,CACN,CAAE,KAAM,OAAQ,KAAM,QAAS,EAC/B,CAAE,KAAM,SAAU,KAAM,SAAU,CACpC,CACF,EACA,YAAa,SACb,QAAS,CACP,KAAM,QACN,OAAQ,4CACV,CACF,CAKA,EAEA,GAAG,uDAAwD,SAAY,CAErE,MAAMC,EAAyB,CAC7B,cAAe,cACf,WAAY,iBACd,EACA,GAAG,MAAM,EAAAC,QAAO,SAAS,EAAE,sBAAsB,CAAE,KAAMD,CAAI,CAAC,EAI9D,MAAME,EAAS,MADI,IAAI,+BAA6BJ,CAAM,EAC1B,kBAAkBC,CAAM,EAGxD,OAAOG,CAAM,EAAE,WACb,SAAM,CACJ,YAAa,cACb,WAAY,iBACd,CAAC,CACH,CACF,CAAC,EAED,GAAG,8CAA+C,SAAY,CAE5D,GAAG,MAAM,EAAAD,QAAO,SAAS,EAAE,kBAAkB,IAAI,MAAM,OAAO,CAAC,EAI/D,MAAMC,EAAS,MADI,IAAI,+BAA6BJ,CAAM,EAC1B,kBAAkBC,CAAM,EAGxD,OAAOG,CAAM,EAAE,WACb,QACE,IAAI,MACF,4FACF,CACF,CACF,CACF,CAAC,EAED,GAAG,oDAAqD,SAAY,CAElE,MAAMF,EAAM,CAAC,EACb,GAAG,MAAM,EAAAC,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAMD,CAAI,CAAC,EAI1D,MAAME,EAAS,MADI,IAAI,+BAA6BJ,CAAM,EAC1B,kBAAkBC,CAAM,EAGxD,OAAOG,CAAM,EAAE,WACb,QACE,IAAI,MACF,6FACF,CACF,CACF,CACF,CAAC,EAED,GAAG,qDAAsD,SAAY,CAEnE,MAAMF,EAAM,CACV,WAAY,iBACd,EACA,GAAG,MAAM,EAAAC,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAMD,CAAI,CAAC,EAI1D,MAAME,EAAS,MADI,IAAI,+BAA6BJ,CAAM,EAC1B,kBAAkBC,CAAM,EAGxD,OAAOG,CAAM,EAAE,WACb,QACE,IAAI,MACF,6FACF,CACF,CACF,CACF,CAAC,EAED,GAAG,kDAAmD,SAAY,CAEhE,MAAMF,EAAM,CACV,cAAe,aACjB,EACA,GAAG,MAAM,EAAAC,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAMD,CAAI,CAAC,EAI1D,MAAME,EAAS,MADI,IAAI,+BAA6BJ,CAAM,EAC1B,kBAAkBC,CAAM,EAGxD,OAAOG,CAAM,EAAE,WACb,QACE,IAAI,MACF,6FACF,CACF,CACF,CACF,CAAC,EAED,GAAG,kDAAmD,SAAY,CAEhE,MAAMF,EAAM,CACV,cAAe,KACf,WAAY,iBACd,EACA,GAAG,MAAM,EAAAC,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAMD,CAAI,CAAC,EAI1D,MAAME,EAAS,MADI,IAAI,+BAA6BJ,CAAM,EAC1B,kBAAkBC,CAAM,EAGxD,OAAOG,CAAM,EAAE,WACb,QACE,IAAI,MACF,6FACF,CACF,CACF,CACF,CAAC,EAED,GAAG,+CAAgD,SAAY,CAE7D,MAAMF,EAAM,CACV,cAAe,cACf,WAAY,IACd,EACA,GAAG,MAAM,EAAAC,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAMD,CAAI,CAAC,EAI1D,MAAME,EAAS,MADI,IAAI,+BAA6BJ,CAAM,EAC1B,kBAAkBC,CAAM,EAGxD,OAAOG,CAAM,EAAE,WACb,QACE,IAAI,MACF,6FACF,CACF,CACF,CACF,CAAC,EAED,GAAG,6CAA8C,SAAY,CAE3D,MAAMF,EAAyB,CAC7B,cAAe,cACf,WAAY,iBACd,EACA,GAAG,MAAM,EAAAC,QAAO,SAAS,EAAE,sBAAsB,CAAE,KAAMD,CAAI,CAAC,EAI9D,MADmB,IAAI,+BAA6BF,CAAM,EACzC,kBAAkBC,CAAM,EAGzC,OAAO,EAAAE,QAAM,OAAO,EAAE,qBACpB,OAAO,iBAAiB,CACtB,QAAS,CACP,CAAC,8BAA4B,EAAG,kBAAkB,EAAAE,QAAQ,OAAO,GACjE,CAAC,4BAA0B,EAAGL,EAAO,WACvC,CACF,CAAC,CACH,CACF,CAAC,EAED,GAAG,oDAAqD,SAAY,CAElE,MAAME,EAAyB,CAC7B,cAAe,cACf,WAAY,iBACd,EACA,GAAG,MAAM,EAAAC,QAAO,SAAS,EAAE,sBAAsB,CAAE,KAAMD,CAAI,CAAC,EAI9D,MADmB,IAAI,+BAA6BF,CAAM,EACzC,kBAAkBC,CAAM,EAGzC,OAAO,EAAAE,QAAM,OAAO,EAAE,qBACpB,OAAO,iBAAiB,CACtB,OAAQ,OACR,IAAK,GAAGH,EAAO,WAAW,GAAG,wBAC/B,CAAC,CACH,CACF,CAAC,EAED,GAAG,kDAAmD,SAAY,CAEhE,MAAME,EAAyB,CAC7B,cAAe,cACf,WAAY,iBACd,EACA,GAAG,MAAM,EAAAC,QAAO,SAAS,EAAE,sBAAsB,CAAE,KAAMD,CAAI,CAAC,EAI9D,MADmB,IAAI,+BAA6BF,CAAM,EACzC,kBAAkBC,CAAM,EAGzC,OAAO,EAAAE,QAAM,OAAO,EAAE,qBACpB,OAAO,iBAAiB,CACtB,KAAM,CACJ,IAAK,CACH,KAAMF,EAAO,KACb,KAAMA,EAAO,IACf,CACF,CACF,CAAC,CACH,CACF,CAAC,EAED,GAAG,iCAAkC,SAAY,CAQ/C,MAAMK,EAA+C,CACnD,KAAM,6CACN,KARgC,CAChC,OAAQ,CAAC,EACT,MAAO,CAAC,EACR,YAAa,GACb,QAAS,CAAC,CACZ,CAIA,EACMJ,EAAyB,CAC7B,cAAe,cACf,WAAY,iBACd,EACA,GAAG,MAAM,EAAAC,QAAO,SAAS,EAAE,sBAAsB,CAAE,KAAMD,CAAI,CAAC,EAI9D,MAAME,EAAS,MADI,IAAI,+BAA6BJ,CAAM,EAC1B,kBAAkBM,CAAmB,EAGrE,OAAOF,CAAM,EAAE,WACb,SAAM,CACJ,YAAa,cACb,WAAY,iBACd,CAAC,CACH,CACF,CAAC,CACH,CAAC,CACH,CAAC",
6
- "names": ["import_axios", "import_purify_ts", "import_HttpHeaders", "import_HttpTypedDataCheckDataSource", "import_package", "config", "params", "dto", "axios", "result", "PACKAGE", "paramsWithEmptyData"]
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 TypedDataCheckDto } from \"@/transaction-check/data/dto/TypedDataCheckDto\";\nimport { HttpTypedDataCheckDataSource } from \"@/transaction-check/data/HttpTypedDataCheckDataSource\";\nimport {\n type GetTypedDataCheckParams,\n type TypedData,\n} from \"@/transaction-check/data/TypedDataCheckDataSource\";\n\ndescribe(\"HttpTypedDataCheckDataSource\", () => {\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: HttpTypedDataCheckDataSource;\n\n beforeEach(() => {\n vi.resetAllMocks();\n httpMock = { post: vi.fn() };\n dataSource = new HttpTypedDataCheckDataSource(\n config,\n httpMock as unknown as DmkNetworkClient,\n );\n });\n\n describe(\"getTypedDataCheck\", () => {\n const validTypedData: TypedData = {\n domain: {\n name: \"Test Domain\",\n version: \"1\",\n chainId: 1,\n verifyingContract: \"0x1234567890123456789012345678901234567890\",\n },\n types: {\n EIP712Domain: [\n { name: \"name\", type: \"string\" },\n { name: \"version\", type: \"string\" },\n { name: \"chainId\", type: \"uint256\" },\n { name: \"verifyingContract\", type: \"address\" },\n ],\n Person: [\n { name: \"name\", type: \"string\" },\n { name: \"wallet\", type: \"address\" },\n ],\n },\n primaryType: \"Person\",\n message: {\n name: \"Alice\",\n wallet: \"0x1234567890123456789012345678901234567890\",\n },\n };\n\n const params: GetTypedDataCheckParams = {\n from: \"0x1234567890123456789012345678901234567890\",\n data: validTypedData,\n };\n\n it(\"should return an object if the request is successful\", async () => {\n // GIVEN\n const dto: TypedDataCheckDto = {\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.getTypedDataCheck(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 httpMock.post.mockRejectedValue(new Error(\"error\"));\n\n // WHEN\n const result = await dataSource.getTypedDataCheck(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTypedDataCheckDataSource: Failed to fetch typed data check information\",\n ),\n ),\n );\n });\n\n it(\"should return an error if the response is invalid\", async () => {\n // GIVEN\n httpMock.post.mockResolvedValue({});\n\n // WHEN\n const result = await dataSource.getTypedDataCheck(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received\",\n ),\n ),\n );\n });\n\n it(\"should return an error if public_key_id is missing\", async () => {\n // GIVEN\n httpMock.post.mockResolvedValue({\n descriptor: \"test-descriptor\",\n });\n\n // WHEN\n const result = await dataSource.getTypedDataCheck(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received\",\n ),\n ),\n );\n });\n\n it(\"should return an error if descriptor is missing\", async () => {\n // GIVEN\n httpMock.post.mockResolvedValue({\n public_key_id: \"test-key-id\",\n });\n\n // WHEN\n const result = await dataSource.getTypedDataCheck(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received\",\n ),\n ),\n );\n });\n\n it(\"should return an error if public_key_id is null\", async () => {\n // GIVEN\n httpMock.post.mockResolvedValue({\n public_key_id: null,\n descriptor: \"test-descriptor\",\n });\n\n // WHEN\n const result = await dataSource.getTypedDataCheck(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data check data received\",\n ),\n ),\n );\n });\n\n it(\"should return an error if descriptor is null\", async () => {\n // GIVEN\n httpMock.post.mockResolvedValue({\n public_key_id: \"test-key-id\",\n descriptor: null,\n });\n\n // WHEN\n const result = await dataSource.getTypedDataCheck(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTypedDataCheckDataSource: Cannot exploit typed data 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 dto: TypedDataCheckDto = {\n public_key_id: \"test-key-id\",\n descriptor: \"test-descriptor\",\n };\n httpMock.post.mockResolvedValueOnce(dto);\n\n // WHEN\n await dataSource.getTypedDataCheck(params);\n\n // THEN\n expect(httpMock.post).toHaveBeenCalledWith(\n `${config.web3checks.url}/ethereum/scan/eip-712`,\n {\n msg: {\n from: params.from,\n data: params.data,\n },\n },\n );\n });\n\n it(\"should handle empty typed data\", async () => {\n // GIVEN\n const emptyTypedData: TypedData = {\n domain: {},\n types: {},\n primaryType: \"\",\n message: {},\n };\n const paramsWithEmptyData: GetTypedDataCheckParams = {\n from: \"0x1234567890123456789012345678901234567890\",\n data: emptyTypedData,\n };\n const dto: TypedDataCheckDto = {\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.getTypedDataCheck(paramsWithEmptyData);\n\n // THEN\n expect(result).toEqual(\n Right({\n publicKeyId: \"test-key-id\",\n descriptor: \"test-descriptor\",\n }),\n );\n });\n });\n});\n"],
5
+ "mappings": "aACA,IAAAA,EAA4B,qBAI5BC,EAA6C,iEAM7C,SAAS,+BAAgC,IAAM,CAC7C,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,IAAI,+BACfF,EACAC,CACF,CACF,CAAC,EAED,SAAS,oBAAqB,IAAM,CA2BlC,MAAME,EAAkC,CACtC,KAAM,6CACN,KA5BgC,CAChC,OAAQ,CACN,KAAM,cACN,QAAS,IACT,QAAS,EACT,kBAAmB,4CACrB,EACA,MAAO,CACL,aAAc,CACZ,CAAE,KAAM,OAAQ,KAAM,QAAS,EAC/B,CAAE,KAAM,UAAW,KAAM,QAAS,EAClC,CAAE,KAAM,UAAW,KAAM,SAAU,EACnC,CAAE,KAAM,oBAAqB,KAAM,SAAU,CAC/C,EACA,OAAQ,CACN,CAAE,KAAM,OAAQ,KAAM,QAAS,EAC/B,CAAE,KAAM,SAAU,KAAM,SAAU,CACpC,CACF,EACA,YAAa,SACb,QAAS,CACP,KAAM,QACN,OAAQ,4CACV,CACF,CAKA,EAEA,GAAG,uDAAwD,SAAY,CAErE,MAAMC,EAAyB,CAC7B,cAAe,cACf,WAAY,iBACd,EACAH,EAAS,KAAK,sBAAsBG,CAAG,EAGvC,MAAMC,EAAS,MAAMH,EAAW,kBAAkBC,CAAM,EAGxD,OAAOE,CAAM,EAAE,WACb,SAAM,CACJ,YAAa,cACb,WAAY,iBACd,CAAC,CACH,CACF,CAAC,EAED,GAAG,8CAA+C,SAAY,CAE5DJ,EAAS,KAAK,kBAAkB,IAAI,MAAM,OAAO,CAAC,EAGlD,MAAMI,EAAS,MAAMH,EAAW,kBAAkBC,CAAM,EAGxD,OAAOE,CAAM,EAAE,WACb,QACE,IAAI,MACF,4FACF,CACF,CACF,CACF,CAAC,EAED,GAAG,oDAAqD,SAAY,CAElEJ,EAAS,KAAK,kBAAkB,CAAC,CAAC,EAGlC,MAAMI,EAAS,MAAMH,EAAW,kBAAkBC,CAAM,EAGxD,OAAOE,CAAM,EAAE,WACb,QACE,IAAI,MACF,6FACF,CACF,CACF,CACF,CAAC,EAED,GAAG,qDAAsD,SAAY,CAEnEJ,EAAS,KAAK,kBAAkB,CAC9B,WAAY,iBACd,CAAC,EAGD,MAAMI,EAAS,MAAMH,EAAW,kBAAkBC,CAAM,EAGxD,OAAOE,CAAM,EAAE,WACb,QACE,IAAI,MACF,6FACF,CACF,CACF,CACF,CAAC,EAED,GAAG,kDAAmD,SAAY,CAEhEJ,EAAS,KAAK,kBAAkB,CAC9B,cAAe,aACjB,CAAC,EAGD,MAAMI,EAAS,MAAMH,EAAW,kBAAkBC,CAAM,EAGxD,OAAOE,CAAM,EAAE,WACb,QACE,IAAI,MACF,6FACF,CACF,CACF,CACF,CAAC,EAED,GAAG,kDAAmD,SAAY,CAEhEJ,EAAS,KAAK,kBAAkB,CAC9B,cAAe,KACf,WAAY,iBACd,CAAC,EAGD,MAAMI,EAAS,MAAMH,EAAW,kBAAkBC,CAAM,EAGxD,OAAOE,CAAM,EAAE,WACb,QACE,IAAI,MACF,6FACF,CACF,CACF,CACF,CAAC,EAED,GAAG,+CAAgD,SAAY,CAE7DJ,EAAS,KAAK,kBAAkB,CAC9B,cAAe,cACf,WAAY,IACd,CAAC,EAGD,MAAMI,EAAS,MAAMH,EAAW,kBAAkBC,CAAM,EAGxD,OAAOE,CAAM,EAAE,WACb,QACE,IAAI,MACF,6FACF,CACF,CACF,CACF,CAAC,EAED,GAAG,sDAAuD,SAAY,CAEpE,MAAMD,EAAyB,CAC7B,cAAe,cACf,WAAY,iBACd,EACAH,EAAS,KAAK,sBAAsBG,CAAG,EAGvC,MAAMF,EAAW,kBAAkBC,CAAM,EAGzC,OAAOF,EAAS,IAAI,EAAE,qBACpB,GAAGD,EAAO,WAAW,GAAG,yBACxB,CACE,IAAK,CACH,KAAMG,EAAO,KACb,KAAMA,EAAO,IACf,CACF,CACF,CACF,CAAC,EAED,GAAG,iCAAkC,SAAY,CAQ/C,MAAMG,EAA+C,CACnD,KAAM,6CACN,KARgC,CAChC,OAAQ,CAAC,EACT,MAAO,CAAC,EACR,YAAa,GACb,QAAS,CAAC,CACZ,CAIA,EACMF,EAAyB,CAC7B,cAAe,cACf,WAAY,iBACd,EACAH,EAAS,KAAK,sBAAsBG,CAAG,EAGvC,MAAMC,EAAS,MAAMH,EAAW,kBAAkBI,CAAmB,EAGrE,OAAOD,CAAM,EAAE,WACb,SAAM,CACJ,YAAa,cACb,WAAY,iBACd,CAAC,CACH,CACF,CAAC,CACH,CAAC,CACH,CAAC",
6
+ "names": ["import_purify_ts", "import_HttpTypedDataCheckDataSource", "config", "httpMock", "dataSource", "params", "dto", "result", "paramsWithEmptyData"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var k=Object.create;var m=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var I=Object.getPrototypeOf,x=Object.prototype.hasOwnProperty;var P=(o,e)=>{for(var t in e)m(o,t,{get:e[t],enumerable:!0})},D=(o,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of C(e))!x.call(o,r)&&r!==t&&m(o,r,{get:()=>e[r],enumerable:!(n=l(e,r))||n.enumerable});return o};var N=(o,e,t)=>(t=o!=null?k(I(o)):{},D(e||!o||!o.__esModule?m(t,"default",{value:o,enumerable:!0}):t,o)),S=o=>D(m({},"__esModule",{value:!0}),o),T=(o,e,t,n)=>{for(var r=n>1?void 0:n?l(e,t):e,i=o.length-1,s;i>=0;i--)(s=o[i])&&(r=(n?s(e,t,r):s(r))||r);return n&&r&&m(e,t,r),r},h=(o,e)=>(t,n)=>e(t,n,o);var w={};P(w,{HttpTrustedNameDataSource:()=>c});module.exports=S(w);var g=N(require("axios")),u=require("inversify"),a=require("purify-ts"),$=require("../../config/di/configTypes"),d=require("../../shared/constant/HttpHeaders"),f=N(require("../../../package.json"));let c=class{constructor(e){this.config=e}async getDomainNamePayload({chainId:e,domain:t,challenge:n}){let r;try{r=(await g.default.request({method:"GET",url:`${this.config.metadataServiceDomain.url}/v2/names/ethereum/${e}/forward/${t}?types=eoa&sources=ens&challenge=${n}`,headers:{[d.LEDGER_CLIENT_VERSION_HEADER]:`context-module/${f.default.version}`,[d.LEDGER_ORIGIN_TOKEN_HEADER]:this.config.originToken}})).data}catch{return(0,a.Left)(new Error("[ContextModule] HttpTrustedNameDataSource: Failed to fetch domain name"))}return r?this.isTrustedNameDto(r)?(0,a.Right)({data:r.signedDescriptor.data,keyId:r.keyId,keyUsage:r.keyUsage}):(0,a.Left)(new Error(`[ContextModule] HttpTrustedNameDataSource: Invalid trusted name response format for domain ${t} on chain ${e}`)):(0,a.Left)(new Error(`[ContextModule] HttpTrustedNameDataSource: No data received for domain ${t} on chain ${e}`))}async getTrustedNamePayload({chainId:e,address:t,challenge:n,sources:r,types:i}){let s;try{r=r.filter(y=>y==="ens"||y==="crypto_asset_list"),s=(await g.default.request({method:"GET",url:`${this.config.metadataServiceDomain.url}/v2/names/ethereum/${e}/reverse/${t}?types=${i.join(",")}&sources=${r.join(",")}&challenge=${n}`,headers:{[d.LEDGER_CLIENT_VERSION_HEADER]:`context-module/${f.default.version}`,[d.LEDGER_ORIGIN_TOKEN_HEADER]:this.config.originToken}})).data}catch{return(0,a.Left)(new Error("[ContextModule] HttpTrustedNameDataSource: Failed to fetch trusted name"))}if(!s)return(0,a.Left)(new Error(`[ContextModule] HttpTrustedNameDataSource: No data received for address ${t} on chain ${e}`));if(!this.isTrustedNameDto(s))return(0,a.Left)(new Error(`[ContextModule] HttpTrustedNameDataSource: Invalid trusted name response format for address ${t} on chain ${e}`));if(typeof s.signedDescriptor.signatures[this.config.cal.mode]!="string")return(0,a.Right)({data:s.signedDescriptor.data,keyId:s.keyId,keyUsage:s.keyUsage});const p=s.signedDescriptor.signatures[this.config.cal.mode];return(0,a.Right)({data:this.formatTrustedName(s.signedDescriptor.data,p),keyId:s.keyId,keyUsage:s.keyUsage})}formatTrustedName(e,t){t.length%2!==0&&(t="0"+t);const n="15",r=(t.length/2).toString(16);return`${e}${n}${r}${t}`}isTrustedNameDto(e){return typeof e=="object"&&e!==null&&"signedDescriptor"in e&&"keyId"in e&&"keyUsage"in e&&typeof e.keyId=="string"&&typeof e.keyUsage=="string"&&typeof e.signedDescriptor=="object"&&e.signedDescriptor!==null&&"data"in e.signedDescriptor&&"signatures"in e.signedDescriptor&&typeof e.signedDescriptor.data=="string"&&typeof e.signedDescriptor.signatures=="object"}};c=T([(0,u.injectable)(),h(0,(0,u.inject)($.configTypes.Config))],c);0&&(module.exports={HttpTrustedNameDataSource});
1
+ "use strict";var c=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var k=Object.prototype.hasOwnProperty;var T=(s,e)=>{for(var t in e)c(s,t,{get:e[t],enumerable:!0})},C=(s,e,t,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of h(e))!k.call(s,r)&&r!==t&&c(s,r,{get:()=>e[r],enumerable:!(a=f(e,r))||a.enumerable});return s};var $=s=>C(c({},"__esModule",{value:!0}),s),g=(s,e,t,a)=>{for(var r=a>1?void 0:a?f(e,t):e,i=s.length-1,o;i>=0;i--)(o=s[i])&&(r=(a?o(e,t,r):o(r))||r);return a&&r&&c(e,t,r),r},u=(s,e)=>(t,a)=>e(t,a,s);var w={};T(w,{HttpTrustedNameDataSource:()=>d});module.exports=$(w);var m=require("inversify"),n=require("purify-ts"),y=require("../../config/di/configTypes"),l=require("../../network/di/networkTypes"),D=require("../../network/networkClientFactory");let d=class{constructor(e,t){this.config=e;this.http=t??(0,D.networkClientFactory)(e)}http;async getDomainNamePayload({chainId:e,domain:t,challenge:a}){let r;try{r=await this.http.get(`${this.config.metadataServiceDomain.url}/v2/names/ethereum/${e}/forward/${t}`,{params:{types:"eoa",sources:"ens",challenge:a}})}catch{return(0,n.Left)(new Error("[ContextModule] HttpTrustedNameDataSource: Failed to fetch domain name"))}return r?this.isTrustedNameDto(r)?(0,n.Right)({data:r.signedDescriptor.data,keyId:r.keyId,keyUsage:r.keyUsage}):(0,n.Left)(new Error(`[ContextModule] HttpTrustedNameDataSource: Invalid trusted name response format for domain ${t} on chain ${e}`)):(0,n.Left)(new Error(`[ContextModule] HttpTrustedNameDataSource: No data received for domain ${t} on chain ${e}`))}async getTrustedNamePayload({chainId:e,address:t,challenge:a,sources:r,types:i}){let o;try{r=r.filter(p=>p==="ens"||p==="crypto_asset_list"),o=await this.http.get(`${this.config.metadataServiceDomain.url}/v2/names/ethereum/${e}/reverse/${t}`,{params:{types:i.join(","),sources:r.join(","),challenge:a}})}catch{return(0,n.Left)(new Error("[ContextModule] HttpTrustedNameDataSource: Failed to fetch trusted name"))}if(!o)return(0,n.Left)(new Error(`[ContextModule] HttpTrustedNameDataSource: No data received for address ${t} on chain ${e}`));if(!this.isTrustedNameDto(o))return(0,n.Left)(new Error(`[ContextModule] HttpTrustedNameDataSource: Invalid trusted name response format for address ${t} on chain ${e}`));if(typeof o.signedDescriptor.signatures[this.config.cal.mode]!="string")return(0,n.Right)({data:o.signedDescriptor.data,keyId:o.keyId,keyUsage:o.keyUsage});const N=o.signedDescriptor.signatures[this.config.cal.mode];return(0,n.Right)({data:this.formatTrustedName(o.signedDescriptor.data,N),keyId:o.keyId,keyUsage:o.keyUsage})}formatTrustedName(e,t){t.length%2!==0&&(t="0"+t);const a="15",r=(t.length/2).toString(16);return`${e}${a}${r}${t}`}isTrustedNameDto(e){return typeof e=="object"&&e!==null&&"signedDescriptor"in e&&"keyId"in e&&"keyUsage"in e&&typeof e.keyId=="string"&&typeof e.keyUsage=="string"&&typeof e.signedDescriptor=="object"&&e.signedDescriptor!==null&&"data"in e.signedDescriptor&&"signatures"in e.signedDescriptor&&typeof e.signedDescriptor.data=="string"&&typeof e.signedDescriptor.signatures=="object"}};d=g([(0,m.injectable)(),u(0,(0,m.inject)(y.configTypes.Config)),u(1,(0,m.inject)(l.networkTypes.NetworkClient))],d);0&&(module.exports={HttpTrustedNameDataSource});
2
2
  //# sourceMappingURL=HttpTrustedNameDataSource.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/trusted-name/data/HttpTrustedNameDataSource.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 {\n GetDomainNameInfosParams,\n GetTrustedNameInfosParams,\n TrustedNameDataSource,\n TrustedNamePayload,\n} from \"@/trusted-name/data/TrustedNameDataSource\";\nimport PACKAGE from \"@root/package.json\";\n\nimport { TrustedNameDto } from \"./TrustedNameDto\";\n\n@injectable()\nexport class HttpTrustedNameDataSource implements TrustedNameDataSource {\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n ) {}\n\n public async getDomainNamePayload({\n chainId,\n domain,\n challenge,\n }: GetDomainNameInfosParams): Promise<Either<Error, TrustedNamePayload>> {\n let dto: TrustedNameDto | undefined;\n try {\n const type = \"eoa\"; // Externally owned account\n const source = \"ens\"; // Ethereum name service\n const response = await axios.request<TrustedNameDto>({\n method: \"GET\",\n url: `${this.config.metadataServiceDomain.url}/v2/names/ethereum/${chainId}/forward/${domain}?types=${type}&sources=${source}&challenge=${challenge}`,\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n [LEDGER_ORIGIN_TOKEN_HEADER]: this.config.originToken,\n },\n });\n dto = response.data;\n } catch (_error) {\n return Left(\n new Error(\n \"[ContextModule] HttpTrustedNameDataSource: Failed to fetch domain name\",\n ),\n );\n }\n\n if (!dto) {\n return Left(\n new Error(\n `[ContextModule] HttpTrustedNameDataSource: No data received for domain ${domain} on chain ${chainId}`,\n ),\n );\n }\n\n if (!this.isTrustedNameDto(dto)) {\n return Left(\n new Error(\n `[ContextModule] HttpTrustedNameDataSource: Invalid trusted name response format for domain ${domain} on chain ${chainId}`,\n ),\n );\n }\n\n return Right({\n data: dto.signedDescriptor.data,\n keyId: dto.keyId,\n keyUsage: dto.keyUsage,\n });\n }\n\n public async getTrustedNamePayload({\n chainId,\n address,\n challenge,\n sources,\n types,\n }: GetTrustedNameInfosParams): Promise<Either<Error, TrustedNamePayload>> {\n let dto: TrustedNameDto | undefined;\n try {\n // TODO remove that filtering once https://ledgerhq.atlassian.net/browse/BACK-8075 is done\n // For now we have to filter or trusted names won't work with the generic parser, because transaction\n // fields descriptors can contain unsupported sources.\n sources = sources.filter(\n (source) => source === \"ens\" || source === \"crypto_asset_list\",\n );\n const response = await axios.request<TrustedNameDto>({\n method: \"GET\",\n url: `${this.config.metadataServiceDomain.url}/v2/names/ethereum/${chainId}/reverse/${address}?types=${types.join(\",\")}&sources=${sources.join(\",\")}&challenge=${challenge}`,\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n [LEDGER_ORIGIN_TOKEN_HEADER]: this.config.originToken,\n },\n });\n dto = response.data;\n } catch (_error) {\n return Left(\n new Error(\n \"[ContextModule] HttpTrustedNameDataSource: Failed to fetch trusted name\",\n ),\n );\n }\n\n if (!dto) {\n return Left(\n new Error(\n `[ContextModule] HttpTrustedNameDataSource: No data received for address ${address} on chain ${chainId}`,\n ),\n );\n }\n\n if (!this.isTrustedNameDto(dto)) {\n return Left(\n new Error(\n `[ContextModule] HttpTrustedNameDataSource: Invalid trusted name response format for address ${address} on chain ${chainId}`,\n ),\n );\n }\n\n if (\n typeof dto.signedDescriptor.signatures[this.config.cal.mode] !== \"string\"\n ) {\n // If we have no separated signature but a valid descriptor, it may mean the descriptor was\n // signed on-the-fly for dynamic sources such as ens\n return Right({\n data: dto.signedDescriptor.data,\n keyId: dto.keyId,\n keyUsage: dto.keyUsage,\n });\n }\n\n const signature = dto.signedDescriptor.signatures[this.config.cal.mode]!;\n return Right({\n data: this.formatTrustedName(dto.signedDescriptor.data, signature),\n keyId: dto.keyId,\n keyUsage: dto.keyUsage,\n });\n }\n\n private formatTrustedName(payload: string, signature: string): string {\n // Ensure correct padding\n if (signature.length % 2 !== 0) {\n signature = \"0\" + signature;\n }\n // TLV encoding as according to trusted name documentation\n const signatureTag = \"15\";\n const signatureLength = (signature.length / 2).toString(16);\n return `${payload}${signatureTag}${signatureLength}${signature}`;\n }\n /**\n * Type guard to validate ProxyDelegateCallDto\n */\n private isTrustedNameDto(value: unknown): value is TrustedNameDto {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"signedDescriptor\" in value &&\n \"keyId\" in value &&\n \"keyUsage\" in value &&\n typeof value.keyId === \"string\" &&\n typeof value.keyUsage === \"string\" &&\n typeof value.signedDescriptor === \"object\" &&\n value.signedDescriptor !== null &&\n \"data\" in value.signedDescriptor &&\n \"signatures\" in value.signedDescriptor &&\n typeof value.signedDescriptor.data === \"string\" &&\n typeof value.signedDescriptor.signatures === \"object\"\n );\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["HttpTrustedNameDataSource_exports", "__export", "HttpTrustedNameDataSource", "__toCommonJS", "import_axios", "import_inversify", "import_purify_ts", "import_configTypes", "import_HttpHeaders", "import_package", "HttpTrustedNameDataSource", "config", "chainId", "domain", "challenge", "dto", "axios", "PACKAGE", "address", "sources", "types", "source", "signature", "payload", "signatureTag", "signatureLength", "value", "__decorateClass", "__decorateParam"]
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\";\nimport { networkClientFactory } from \"@/network/networkClientFactory\";\nimport {\n GetDomainNameInfosParams,\n GetTrustedNameInfosParams,\n TrustedNameDataSource,\n TrustedNamePayload,\n} from \"@/trusted-name/data/TrustedNameDataSource\";\n\nimport { TrustedNameDto } from \"./TrustedNameDto\";\n\n@injectable()\nexport class HttpTrustedNameDataSource implements TrustedNameDataSource {\n private readonly http: DmkNetworkClient;\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n @inject(networkTypes.NetworkClient)\n networkClient?: DmkNetworkClient,\n ) {\n this.http = networkClient ?? networkClientFactory(config);\n }\n\n public async getDomainNamePayload({\n chainId,\n domain,\n challenge,\n }: GetDomainNameInfosParams): Promise<Either<Error, TrustedNamePayload>> {\n let dto: TrustedNameDto | undefined;\n try {\n const type = \"eoa\"; // Externally owned account\n const source = \"ens\"; // Ethereum name service\n dto = (await this.http.get(\n `${this.config.metadataServiceDomain.url}/v2/names/ethereum/${chainId}/forward/${domain}`,\n {\n params: { types: type, sources: source, challenge },\n },\n )) as TrustedNameDto;\n } catch (_error) {\n return Left(\n new Error(\n \"[ContextModule] HttpTrustedNameDataSource: Failed to fetch domain name\",\n ),\n );\n }\n\n if (!dto) {\n return Left(\n new Error(\n `[ContextModule] HttpTrustedNameDataSource: No data received for domain ${domain} on chain ${chainId}`,\n ),\n );\n }\n\n if (!this.isTrustedNameDto(dto)) {\n return Left(\n new Error(\n `[ContextModule] HttpTrustedNameDataSource: Invalid trusted name response format for domain ${domain} on chain ${chainId}`,\n ),\n );\n }\n\n return Right({\n data: dto.signedDescriptor.data,\n keyId: dto.keyId,\n keyUsage: dto.keyUsage,\n });\n }\n\n public async getTrustedNamePayload({\n chainId,\n address,\n challenge,\n sources,\n types,\n }: GetTrustedNameInfosParams): Promise<Either<Error, TrustedNamePayload>> {\n let dto: TrustedNameDto | undefined;\n try {\n // TODO remove that filtering once https://ledgerhq.atlassian.net/browse/BACK-8075 is done\n // For now we have to filter or trusted names won't work with the generic parser, because transaction\n // fields descriptors can contain unsupported sources.\n sources = sources.filter(\n (source) => source === \"ens\" || source === \"crypto_asset_list\",\n );\n dto = (await this.http.get(\n `${this.config.metadataServiceDomain.url}/v2/names/ethereum/${chainId}/reverse/${address}`,\n {\n params: {\n types: types.join(\",\"),\n sources: sources.join(\",\"),\n challenge,\n },\n },\n )) as TrustedNameDto;\n } catch (_error) {\n return Left(\n new Error(\n \"[ContextModule] HttpTrustedNameDataSource: Failed to fetch trusted name\",\n ),\n );\n }\n\n if (!dto) {\n return Left(\n new Error(\n `[ContextModule] HttpTrustedNameDataSource: No data received for address ${address} on chain ${chainId}`,\n ),\n );\n }\n\n if (!this.isTrustedNameDto(dto)) {\n return Left(\n new Error(\n `[ContextModule] HttpTrustedNameDataSource: Invalid trusted name response format for address ${address} on chain ${chainId}`,\n ),\n );\n }\n\n if (\n typeof dto.signedDescriptor.signatures[this.config.cal.mode] !== \"string\"\n ) {\n // If we have no separated signature but a valid descriptor, it may mean the descriptor was\n // signed on-the-fly for dynamic sources such as ens\n return Right({\n data: dto.signedDescriptor.data,\n keyId: dto.keyId,\n keyUsage: dto.keyUsage,\n });\n }\n\n const signature = dto.signedDescriptor.signatures[this.config.cal.mode]!;\n return Right({\n data: this.formatTrustedName(dto.signedDescriptor.data, signature),\n keyId: dto.keyId,\n keyUsage: dto.keyUsage,\n });\n }\n\n private formatTrustedName(payload: string, signature: string): string {\n // Ensure correct padding\n if (signature.length % 2 !== 0) {\n signature = \"0\" + signature;\n }\n // TLV encoding as according to trusted name documentation\n const signatureTag = \"15\";\n const signatureLength = (signature.length / 2).toString(16);\n return `${payload}${signatureTag}${signatureLength}${signature}`;\n }\n /**\n * Type guard to validate ProxyDelegateCallDto\n */\n private isTrustedNameDto(value: unknown): value is TrustedNameDto {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"signedDescriptor\" in value &&\n \"keyId\" in value &&\n \"keyUsage\" in value &&\n typeof value.keyId === \"string\" &&\n typeof value.keyUsage === \"string\" &&\n typeof value.signedDescriptor === \"object\" &&\n value.signedDescriptor !== null &&\n \"data\" in value.signedDescriptor &&\n \"signatures\" in value.signedDescriptor &&\n typeof value.signedDescriptor.data === \"string\" &&\n typeof value.signedDescriptor.signatures === \"object\"\n );\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["HttpTrustedNameDataSource_exports", "__export", "HttpTrustedNameDataSource", "__toCommonJS", "import_inversify", "import_purify_ts", "import_configTypes", "import_networkTypes", "import_networkClientFactory", "HttpTrustedNameDataSource", "config", "networkClient", "chainId", "domain", "challenge", "dto", "address", "sources", "types", "source", "signature", "payload", "signatureTag", "signatureLength", "value", "__decorateClass", "__decorateParam"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var m=Object.create;var c=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var g=Object.getPrototypeOf,v=Object.prototype.hasOwnProperty;var x=(t,e,a,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of h(e))!v.call(t,n)&&n!==a&&c(t,n,{get:()=>e[n],enumerable:!(i=y(e,n))||i.enumerable});return t};var u=(t,e,a)=>(a=t!=null?m(g(t)):{},x(e||!t||!t.__esModule?c(a,"default",{value:t,enumerable:!0}):a,t));var o=u(require("axios")),s=require("purify-ts"),r=require("../../shared/constant/HttpHeaders"),p=require("../../trusted-name/data/HttpTrustedNameDataSource"),l=u(require("../../../package.json"));vi.mock("axios");const d={cal:{url:"https://crypto-assets-service.api.ledger.com/v1",mode:"prod",branch:"main"},metadataServiceDomain:{url:"https://nft.api.live.ledger.com"},originToken:"originToken"};describe("HttpTrustedNameDataSource",()=>{let t;beforeAll(()=>{t=new p.HttpTrustedNameDataSource(d),vi.clearAllMocks()}),describe("getDomainNamePayload",()=>{it("should call axios with the correct url and ledger client version header",async()=>{const e=`context-module/${l.default.version}`,a=vi.fn(()=>Promise.resolve({data:[]}));vi.spyOn(o.default,"request").mockImplementation(a),await t.getDomainNamePayload({chainId:137,challenge:"9876",domain:"hello.eth"}),expect(a).toHaveBeenCalledWith(expect.objectContaining({url:"https://nft.api.live.ledger.com/v2/names/ethereum/137/forward/hello.eth?types=eoa&sources=ens&challenge=9876",headers:{[r.LEDGER_CLIENT_VERSION_HEADER]:e,[r.LEDGER_ORIGIN_TOKEN_HEADER]:d.originToken}}))}),it("should throw an error when axios throws an error",async()=>{vi.spyOn(o.default,"request").mockRejectedValue(new Error);const e=await t.getDomainNamePayload({chainId:137,challenge:"",domain:"hello.eth"});expect(e).toEqual((0,s.Left)(new Error("[ContextModule] HttpTrustedNameDataSource: Failed to fetch domain name")))}),it("should return an error when no payload is returned",async()=>{const e={data:{test:""}};vi.spyOn(o.default,"request").mockResolvedValue(e);const a=await t.getDomainNamePayload({chainId:137,challenge:"",domain:"hello.eth"});expect(a).toEqual((0,s.Left)(new Error("[ContextModule] HttpTrustedNameDataSource: Invalid trusted name response format for domain hello.eth on chain 137")))}),it("should return a payload",async()=>{const e={data:{signedDescriptor:{data:"payload",signatures:{}},keyId:"testKeyId",keyUsage:"testKeyUsage"}};vi.spyOn(o.default,"request").mockResolvedValue(e);const a=await t.getDomainNamePayload({chainId:137,challenge:"challenge",domain:"hello.eth"});expect(a).toEqual((0,s.Right)({data:"payload",keyId:"testKeyId",keyUsage:"testKeyUsage"}))})}),describe("getTrustedNamePayload",()=>{it("should call axios with the correct url and ledger client version header",async()=>{const e=`context-module/${l.default.version}`,a=vi.fn(()=>Promise.resolve({data:[]}));vi.spyOn(o.default,"request").mockImplementation(a),await t.getTrustedNamePayload({chainId:137,address:"0x1234",challenge:"5678",sources:["ens","crypto_asset_list"],types:["eoa"]}),expect(a).toHaveBeenCalledWith(expect.objectContaining({url:"https://nft.api.live.ledger.com/v2/names/ethereum/137/reverse/0x1234?types=eoa&sources=ens,crypto_asset_list&challenge=5678",headers:{[r.LEDGER_CLIENT_VERSION_HEADER]:e,[r.LEDGER_ORIGIN_TOKEN_HEADER]:d.originToken}}))}),it("should throw an error when axios throws an error",async()=>{vi.spyOn(o.default,"request").mockRejectedValue(new Error);const e=await t.getTrustedNamePayload({chainId:137,address:"0x1234",challenge:"",sources:["ens"],types:["eoa"]});expect(e).toEqual((0,s.Left)(new Error("[ContextModule] HttpTrustedNameDataSource: Failed to fetch trusted name")))}),it("should return an error when no payload is returned",async()=>{const e={data:{test:""}};vi.spyOn(o.default,"request").mockResolvedValue(e);const a=await t.getTrustedNamePayload({chainId:137,address:"0x1234",challenge:"",sources:["ens"],types:["eoa"]});expect(a).toEqual((0,s.Left)(new Error("[ContextModule] HttpTrustedNameDataSource: Invalid trusted name response format for address 0x1234 on chain 137")))}),it("should return an error when no keys are returned",async()=>{const e={data:{signedDescriptor:{data:"payload",signatures:{prod:"12345"}}}};vi.spyOn(o.default,"request").mockResolvedValue(e);const a=await t.getTrustedNamePayload({chainId:137,address:"0x1234",challenge:"",sources:["ens"],types:["eoa"]});expect(a).toEqual((0,s.Left)(new Error("[ContextModule] HttpTrustedNameDataSource: Invalid trusted name response format for address 0x1234 on chain 137")))}),it("should return a payload",async()=>{const e={data:{signedDescriptor:{data:"payload",signatures:{}},keyId:"testKeyId",keyUsage:"testKeyUsage"}};vi.spyOn(o.default,"request").mockResolvedValue(e);const a=await t.getTrustedNamePayload({chainId:137,address:"0x1234",challenge:"",sources:["ens"],types:["eoa"]});expect(a).toEqual((0,s.Right)({data:"payload",keyId:"testKeyId",keyUsage:"testKeyUsage"}))}),it("should return a payload with a signature",async()=>{const e={data:{signedDescriptor:{data:"payload",signatures:{prod:"12345"}},keyId:"testKeyId",keyUsage:"testKeyUsage"}};vi.spyOn(o.default,"request").mockResolvedValue(e);const a=await t.getTrustedNamePayload({chainId:137,address:"0x1234",challenge:"",sources:["ens"],types:["eoa"]});expect(a).toEqual((0,s.Right)({data:"payload153012345",keyId:"testKeyId",keyUsage:"testKeyUsage"}))})})});
1
+ "use strict";var o=require("purify-ts"),n=require("../../trusted-name/data/HttpTrustedNameDataSource");const r={cal:{url:"https://crypto-assets-service.api.ledger.com/v1",mode:"prod",branch:"main"},metadataServiceDomain:{url:"https://nft.api.live.ledger.com"},originToken:"originToken"};describe("HttpTrustedNameDataSource",()=>{let t,a;beforeEach(()=>{vi.clearAllMocks(),a={get:vi.fn()},t=new n.HttpTrustedNameDataSource(r,a)}),describe("getDomainNamePayload",()=>{it("should call http.get with the correct url and params",async()=>{a.get.mockResolvedValue([]),await t.getDomainNamePayload({chainId:137,challenge:"9876",domain:"hello.eth"}),expect(a.get).toHaveBeenCalledWith(`${r.metadataServiceDomain.url}/v2/names/ethereum/137/forward/hello.eth`,{params:{types:"eoa",sources:"ens",challenge:"9876"}})}),it("should throw an error when http.get throws an error",async()=>{a.get.mockRejectedValue(new Error);const e=await t.getDomainNamePayload({chainId:137,challenge:"",domain:"hello.eth"});expect(e).toEqual((0,o.Left)(new Error("[ContextModule] HttpTrustedNameDataSource: Failed to fetch domain name")))}),it("should return an error when no payload is returned",async()=>{a.get.mockResolvedValue({test:""});const e=await t.getDomainNamePayload({chainId:137,challenge:"",domain:"hello.eth"});expect(e).toEqual((0,o.Left)(new Error("[ContextModule] HttpTrustedNameDataSource: Invalid trusted name response format for domain hello.eth on chain 137")))}),it("should return a payload",async()=>{const e={signedDescriptor:{data:"payload",signatures:{}},keyId:"testKeyId",keyUsage:"testKeyUsage"};a.get.mockResolvedValue(e);const s=await t.getDomainNamePayload({chainId:137,challenge:"challenge",domain:"hello.eth"});expect(s).toEqual((0,o.Right)({data:"payload",keyId:"testKeyId",keyUsage:"testKeyUsage"}))})}),describe("getTrustedNamePayload",()=>{it("should call http.get with the correct url and params",async()=>{a.get.mockResolvedValue([]),await t.getTrustedNamePayload({chainId:137,address:"0x1234",challenge:"5678",sources:["ens","crypto_asset_list"],types:["eoa"]}),expect(a.get).toHaveBeenCalledWith(`${r.metadataServiceDomain.url}/v2/names/ethereum/137/reverse/0x1234`,{params:{types:"eoa",sources:"ens,crypto_asset_list",challenge:"5678"}})}),it("should throw an error when http.get throws an error",async()=>{a.get.mockRejectedValue(new Error);const e=await t.getTrustedNamePayload({chainId:137,address:"0x1234",challenge:"",sources:["ens"],types:["eoa"]});expect(e).toEqual((0,o.Left)(new Error("[ContextModule] HttpTrustedNameDataSource: Failed to fetch trusted name")))}),it("should return an error when no payload is returned",async()=>{a.get.mockResolvedValue({test:""});const e=await t.getTrustedNamePayload({chainId:137,address:"0x1234",challenge:"",sources:["ens"],types:["eoa"]});expect(e).toEqual((0,o.Left)(new Error("[ContextModule] HttpTrustedNameDataSource: Invalid trusted name response format for address 0x1234 on chain 137")))}),it("should return an error when no keys are returned",async()=>{const e={signedDescriptor:{data:"payload",signatures:{prod:"12345"}}};a.get.mockResolvedValue(e);const s=await t.getTrustedNamePayload({chainId:137,address:"0x1234",challenge:"",sources:["ens"],types:["eoa"]});expect(s).toEqual((0,o.Left)(new Error("[ContextModule] HttpTrustedNameDataSource: Invalid trusted name response format for address 0x1234 on chain 137")))}),it("should return a payload",async()=>{const e={signedDescriptor:{data:"payload",signatures:{}},keyId:"testKeyId",keyUsage:"testKeyUsage"};a.get.mockResolvedValue(e);const s=await t.getTrustedNamePayload({chainId:137,address:"0x1234",challenge:"",sources:["ens"],types:["eoa"]});expect(s).toEqual((0,o.Right)({data:"payload",keyId:"testKeyId",keyUsage:"testKeyUsage"}))}),it("should return a payload with a signature",async()=>{const e={signedDescriptor:{data:"payload",signatures:{prod:"12345"}},keyId:"testKeyId",keyUsage:"testKeyUsage"};a.get.mockResolvedValue(e);const s=await t.getTrustedNamePayload({chainId:137,address:"0x1234",challenge:"",sources:["ens"],types:["eoa"]});expect(s).toEqual((0,o.Right)({data:"payload153012345",keyId:"testKeyId",keyUsage:"testKeyUsage"}))})})});
2
2
  //# sourceMappingURL=HttpTrustedNameDataSource.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/trusted-name/data/HttpTrustedNameDataSource.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 { HttpTrustedNameDataSource } from \"@/trusted-name/data/HttpTrustedNameDataSource\";\nimport { type TrustedNameDataSource } from \"@/trusted-name/data/TrustedNameDataSource\";\nimport PACKAGE from \"@root/package.json\";\n\nvi.mock(\"axios\");\n\nconst config = {\n cal: {\n url: \"https://crypto-assets-service.api.ledger.com/v1\",\n mode: \"prod\",\n branch: \"main\",\n },\n metadataServiceDomain: {\n url: \"https://nft.api.live.ledger.com\",\n },\n originToken: \"originToken\",\n} as ContextModuleServiceConfig;\ndescribe(\"HttpTrustedNameDataSource\", () => {\n let datasource: TrustedNameDataSource;\n\n beforeAll(() => {\n datasource = new HttpTrustedNameDataSource(config);\n vi.clearAllMocks();\n });\n\n describe(\"getDomainNamePayload\", () => {\n it(\"should call axios with the correct url and 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.getDomainNamePayload({\n chainId: 137,\n challenge: \"9876\",\n domain: \"hello.eth\",\n });\n\n // THEN\n expect(requestSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n url: `https://nft.api.live.ledger.com/v2/names/ethereum/137/forward/hello.eth?types=eoa&sources=ens&challenge=9876`,\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: version,\n [LEDGER_ORIGIN_TOKEN_HEADER]: config.originToken,\n },\n }),\n );\n });\n\n it(\"should throw 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.getDomainNamePayload({\n chainId: 137,\n challenge: \"\",\n domain: \"hello.eth\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTrustedNameDataSource: Failed to fetch domain name\",\n ),\n ),\n );\n });\n\n it(\"should return an error when no payload is returned\", async () => {\n // GIVEN\n const response = { data: { test: \"\" } };\n vi.spyOn(axios, \"request\").mockResolvedValue(response);\n\n // WHEN\n const result = await datasource.getDomainNamePayload({\n chainId: 137,\n challenge: \"\",\n domain: \"hello.eth\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTrustedNameDataSource: Invalid trusted name response format for domain hello.eth on chain 137\",\n ),\n ),\n );\n });\n\n it(\"should return a payload\", async () => {\n // GIVEN\n const response = {\n data: {\n signedDescriptor: { data: \"payload\", signatures: {} },\n keyId: \"testKeyId\",\n keyUsage: \"testKeyUsage\",\n },\n };\n vi.spyOn(axios, \"request\").mockResolvedValue(response);\n\n // WHEN\n const result = await datasource.getDomainNamePayload({\n chainId: 137,\n challenge: \"challenge\",\n domain: \"hello.eth\",\n });\n\n // THEN\n expect(result).toEqual(\n Right({\n data: \"payload\",\n keyId: \"testKeyId\",\n keyUsage: \"testKeyUsage\",\n }),\n );\n });\n });\n\n describe(\"getTrustedNamePayload\", () => {\n it(\"should call axios with the correct url and 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.getTrustedNamePayload({\n chainId: 137,\n address: \"0x1234\",\n challenge: \"5678\",\n sources: [\"ens\", \"crypto_asset_list\"],\n types: [\"eoa\"],\n });\n\n // THEN\n expect(requestSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n url: `https://nft.api.live.ledger.com/v2/names/ethereum/137/reverse/0x1234?types=eoa&sources=ens,crypto_asset_list&challenge=5678`,\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: version,\n [LEDGER_ORIGIN_TOKEN_HEADER]: config.originToken,\n },\n }),\n );\n });\n\n it(\"should throw 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.getTrustedNamePayload({\n chainId: 137,\n address: \"0x1234\",\n challenge: \"\",\n sources: [\"ens\"],\n types: [\"eoa\"],\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTrustedNameDataSource: Failed to fetch trusted name\",\n ),\n ),\n );\n });\n\n it(\"should return an error when no payload is returned\", async () => {\n // GIVEN\n const response = { data: { test: \"\" } };\n vi.spyOn(axios, \"request\").mockResolvedValue(response);\n\n // WHEN\n const result = await datasource.getTrustedNamePayload({\n chainId: 137,\n address: \"0x1234\",\n challenge: \"\",\n sources: [\"ens\"],\n types: [\"eoa\"],\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTrustedNameDataSource: Invalid trusted name response format for address 0x1234 on chain 137\",\n ),\n ),\n );\n });\n\n it(\"should return an error when no keys are returned\", async () => {\n // GIVEN\n const response = {\n data: {\n signedDescriptor: { data: \"payload\", signatures: { prod: \"12345\" } },\n },\n };\n vi.spyOn(axios, \"request\").mockResolvedValue(response);\n\n // WHEN\n const result = await datasource.getTrustedNamePayload({\n chainId: 137,\n address: \"0x1234\",\n challenge: \"\",\n sources: [\"ens\"],\n types: [\"eoa\"],\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTrustedNameDataSource: Invalid trusted name response format for address 0x1234 on chain 137\",\n ),\n ),\n );\n });\n\n it(\"should return a payload\", async () => {\n // GIVEN\n const response = {\n data: {\n signedDescriptor: { data: \"payload\", signatures: {} },\n keyId: \"testKeyId\",\n keyUsage: \"testKeyUsage\",\n },\n };\n vi.spyOn(axios, \"request\").mockResolvedValue(response);\n\n // WHEN\n const result = await datasource.getTrustedNamePayload({\n chainId: 137,\n address: \"0x1234\",\n challenge: \"\",\n sources: [\"ens\"],\n types: [\"eoa\"],\n });\n\n // THEN\n expect(result).toEqual(\n Right({\n data: \"payload\",\n keyId: \"testKeyId\",\n keyUsage: \"testKeyUsage\",\n }),\n );\n });\n\n it(\"should return a payload with a signature\", async () => {\n // GIVEN\n const response = {\n data: {\n signedDescriptor: { data: \"payload\", signatures: { prod: \"12345\" } },\n keyId: \"testKeyId\",\n keyUsage: \"testKeyUsage\",\n },\n };\n vi.spyOn(axios, \"request\").mockResolvedValue(response);\n\n // WHEN\n const result = await datasource.getTrustedNamePayload({\n chainId: 137,\n address: \"0x1234\",\n challenge: \"\",\n sources: [\"ens\"],\n types: [\"eoa\"],\n });\n\n // THEN\n expect(result).toEqual(\n Right({\n data: \"payload153012345\",\n keyId: \"testKeyId\",\n keyUsage: \"testKeyUsage\",\n }),\n );\n });\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["import_axios", "import_purify_ts", "import_HttpHeaders", "import_HttpTrustedNameDataSource", "import_package", "config", "datasource", "version", "PACKAGE", "requestSpy", "axios", "result", "response"]
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 { HttpTrustedNameDataSource } from \"@/trusted-name/data/HttpTrustedNameDataSource\";\nimport { type TrustedNameDataSource } from \"@/trusted-name/data/TrustedNameDataSource\";\n\nconst config = {\n cal: {\n url: \"https://crypto-assets-service.api.ledger.com/v1\",\n mode: \"prod\",\n branch: \"main\",\n },\n metadataServiceDomain: {\n url: \"https://nft.api.live.ledger.com\",\n },\n originToken: \"originToken\",\n} as ContextModuleServiceConfig;\n\ndescribe(\"HttpTrustedNameDataSource\", () => {\n let datasource: TrustedNameDataSource;\n let httpMock: { get: ReturnType<typeof vi.fn> };\n\n beforeEach(() => {\n vi.clearAllMocks();\n httpMock = { get: vi.fn() };\n datasource = new HttpTrustedNameDataSource(\n config,\n httpMock as unknown as DmkNetworkClient,\n );\n });\n\n describe(\"getDomainNamePayload\", () => {\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.getDomainNamePayload({\n chainId: 137,\n challenge: \"9876\",\n domain: \"hello.eth\",\n });\n\n // THEN\n expect(httpMock.get).toHaveBeenCalledWith(\n `${config.metadataServiceDomain.url}/v2/names/ethereum/137/forward/hello.eth`,\n {\n params: { types: \"eoa\", sources: \"ens\", challenge: \"9876\" },\n },\n );\n });\n\n it(\"should throw an error when http.get throws an error\", async () => {\n // GIVEN\n httpMock.get.mockRejectedValue(new Error());\n\n // WHEN\n const result = await datasource.getDomainNamePayload({\n chainId: 137,\n challenge: \"\",\n domain: \"hello.eth\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTrustedNameDataSource: Failed to fetch domain name\",\n ),\n ),\n );\n });\n\n it(\"should return an error when no payload is returned\", async () => {\n // GIVEN\n httpMock.get.mockResolvedValue({ test: \"\" });\n\n // WHEN\n const result = await datasource.getDomainNamePayload({\n chainId: 137,\n challenge: \"\",\n domain: \"hello.eth\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTrustedNameDataSource: Invalid trusted name response format for domain hello.eth on chain 137\",\n ),\n ),\n );\n });\n\n it(\"should return a payload\", async () => {\n // GIVEN\n const responseData = {\n signedDescriptor: { data: \"payload\", signatures: {} },\n keyId: \"testKeyId\",\n keyUsage: \"testKeyUsage\",\n };\n httpMock.get.mockResolvedValue(responseData);\n\n // WHEN\n const result = await datasource.getDomainNamePayload({\n chainId: 137,\n challenge: \"challenge\",\n domain: \"hello.eth\",\n });\n\n // THEN\n expect(result).toEqual(\n Right({\n data: \"payload\",\n keyId: \"testKeyId\",\n keyUsage: \"testKeyUsage\",\n }),\n );\n });\n });\n\n describe(\"getTrustedNamePayload\", () => {\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.getTrustedNamePayload({\n chainId: 137,\n address: \"0x1234\",\n challenge: \"5678\",\n sources: [\"ens\", \"crypto_asset_list\"],\n types: [\"eoa\"],\n });\n\n // THEN\n expect(httpMock.get).toHaveBeenCalledWith(\n `${config.metadataServiceDomain.url}/v2/names/ethereum/137/reverse/0x1234`,\n {\n params: {\n types: \"eoa\",\n sources: \"ens,crypto_asset_list\",\n challenge: \"5678\",\n },\n },\n );\n });\n\n it(\"should throw an error when http.get throws an error\", async () => {\n // GIVEN\n httpMock.get.mockRejectedValue(new Error());\n\n // WHEN\n const result = await datasource.getTrustedNamePayload({\n chainId: 137,\n address: \"0x1234\",\n challenge: \"\",\n sources: [\"ens\"],\n types: [\"eoa\"],\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTrustedNameDataSource: Failed to fetch trusted name\",\n ),\n ),\n );\n });\n\n it(\"should return an error when no payload is returned\", async () => {\n // GIVEN\n httpMock.get.mockResolvedValue({ test: \"\" });\n\n // WHEN\n const result = await datasource.getTrustedNamePayload({\n chainId: 137,\n address: \"0x1234\",\n challenge: \"\",\n sources: [\"ens\"],\n types: [\"eoa\"],\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTrustedNameDataSource: Invalid trusted name response format for address 0x1234 on chain 137\",\n ),\n ),\n );\n });\n\n it(\"should return an error when no keys are returned\", async () => {\n // GIVEN\n const responseData = {\n signedDescriptor: { data: \"payload\", signatures: { prod: \"12345\" } },\n };\n httpMock.get.mockResolvedValue(responseData);\n\n // WHEN\n const result = await datasource.getTrustedNamePayload({\n chainId: 137,\n address: \"0x1234\",\n challenge: \"\",\n sources: [\"ens\"],\n types: [\"eoa\"],\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTrustedNameDataSource: Invalid trusted name response format for address 0x1234 on chain 137\",\n ),\n ),\n );\n });\n\n it(\"should return a payload\", async () => {\n // GIVEN\n const responseData = {\n signedDescriptor: { data: \"payload\", signatures: {} },\n keyId: \"testKeyId\",\n keyUsage: \"testKeyUsage\",\n };\n httpMock.get.mockResolvedValue(responseData);\n\n // WHEN\n const result = await datasource.getTrustedNamePayload({\n chainId: 137,\n address: \"0x1234\",\n challenge: \"\",\n sources: [\"ens\"],\n types: [\"eoa\"],\n });\n\n // THEN\n expect(result).toEqual(\n Right({\n data: \"payload\",\n keyId: \"testKeyId\",\n keyUsage: \"testKeyUsage\",\n }),\n );\n });\n\n it(\"should return a payload with a signature\", async () => {\n // GIVEN\n const responseData = {\n signedDescriptor: { data: \"payload\", signatures: { prod: \"12345\" } },\n keyId: \"testKeyId\",\n keyUsage: \"testKeyUsage\",\n };\n httpMock.get.mockResolvedValue(responseData);\n\n // WHEN\n const result = await datasource.getTrustedNamePayload({\n chainId: 137,\n address: \"0x1234\",\n challenge: \"\",\n sources: [\"ens\"],\n types: [\"eoa\"],\n });\n\n // THEN\n expect(result).toEqual(\n Right({\n data: \"payload153012345\",\n keyId: \"testKeyId\",\n keyUsage: \"testKeyUsage\",\n }),\n );\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["import_purify_ts", "import_HttpTrustedNameDataSource", "config", "datasource", "httpMock", "result", "responseData"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var b=Object.create;var p=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var V=Object.getOwnPropertyNames;var E=Object.getPrototypeOf,N=Object.prototype.hasOwnProperty;var P=(i,e)=>{for(var n in e)p(i,n,{get:e[n],enumerable:!0})},C=(i,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of V(e))!N.call(i,r)&&r!==n&&p(i,r,{get:()=>e[r],enumerable:!(o=h(e,r))||o.enumerable});return i};var I=(i,e,n)=>(n=i!=null?b(E(i)):{},C(e||!i||!i.__esModule?p(n,"default",{value:i,enumerable:!0}):n,i)),j=i=>C(p({},"__esModule",{value:!0}),i),F=(i,e,n,o)=>{for(var r=o>1?void 0:o?h(e,n):e,s=i.length-1,a;s>=0;s--)(a=i[s])&&(r=(o?a(e,n,r):a(r))||r);return o&&r&&p(e,n,r),r},M=(i,e)=>(n,o)=>e(n,o,i);var S={};P(S,{HttpTypedDataDataSource:()=>d});module.exports=j(S);var x=I(require("axios")),y=require("inversify"),l=require("purify-ts"),D=require("../../config/di/configTypes"),g=require("../../shared/constant/HttpHeaders"),u=require("../../shared/model/TypedDataClearSignContext"),v=require("../../typed-data/utils/getSchemaHash"),T=I(require("../../../package.json"));let d=class{constructor(e){this.config=e}async getTypedDataFilters({chainId:e,address:n,schema:o,version:r}){let s;try{const a=await x.default.request({method:"GET",url:`${this.config.cal.url}/dapps`,params:{contracts:n,chain_id:e,output:"descriptors_eip712",descriptors_eip712_version:r,descriptors_eip712:"<set>",ref:`branch:${this.config.cal.branch}`},headers:{[g.LEDGER_CLIENT_VERSION_HEADER]:`context-module/${T.default.version}`,[g.LEDGER_ORIGIN_TOKEN_HEADER]:this.config.originToken}}),c=(0,v.getSchemaHash)(o);n=n.toLowerCase();const m=(a.data??[]).map(t=>t?.descriptors_eip712?.[n]?.[c]).find(Boolean);if(!m)return(0,l.Left)(new Error(`[ContextModule] HttpTypedDataDataSource: no typed data filters for address ${n} on chain ${e} for schema ${c}`));if(!Array.isArray(m.instructions))return(0,l.Left)(new Error(`[ContextModule] HttpTypedDataDataSource: no message info for address ${n} on chain ${e} for schema ${c}`));const f=[],_={};for(const t of m.instructions)if(this.isInstructionContractInfo(t,this.config.cal.mode))s={displayName:t.display_name,signature:t.signatures[this.config.cal.mode],filtersCount:t.field_mappers_count};else if(r==="v1"&&this.isInstructionFieldV1(t,this.config.cal.mode))f.push({type:"raw",displayName:t.display_name,path:t.field_path,signature:t.signatures[this.config.cal.mode]});else if(this.isInstructionFieldV2(t,this.config.cal.mode))f.push({type:t.format,displayName:t.display_name,path:t.field_path,signature:t.signatures[this.config.cal.mode]});else if(this.isInstructionFieldV2WithCoinRef(t,this.config.cal.mode))f.push({type:t.format,displayName:t.display_name,path:t.field_path,signature:t.signatures[this.config.cal.mode],tokenIndex:t.coin_ref});else if(this.isInstructionFieldV2WithName(t,this.config.cal.mode))f.push({type:t.format,displayName:t.display_name,path:t.field_path,signature:t.signatures[this.config.cal.mode],types:t.name_types,sources:t.name_sources,typesAndSourcesPayload:this.formatTrustedNameTypesAndSources(t)});else if(this.isInstructionCalldataInfo(t,this.config.cal.mode))_[t.calldata_index]={displayName:t.display_name,calldataIndex:t.calldata_index,valueFlag:t.value_filter_flag,calleeFlag:this.convertCalldataPresenceFlag(t.callee_filter_flag),amountFlag:t.amount_filter_flag,spenderFlag:this.convertCalldataPresenceFlag(t.spender_filter_flag),chainIdFlag:t.chain_id_filter_flag,selectorFlag:t.selector_filter_flag,signature:t.signatures[this.config.cal.mode]};else if(this.isInstructionFieldV2Calldata(t,this.config.cal.mode))f.push({type:t.format,displayName:t.display_name,path:t.field_path,signature:t.signatures[this.config.cal.mode],calldataIndex:t.calldata_index});else return(0,l.Left)(new Error(`[ContextModule] HttpTypedDataDataSource: invalid typed data field for address ${n} on chain ${e} for schema ${c}`));return s?(0,l.Right)({messageInfo:s,filters:f,calldatasInfos:_}):(0,l.Left)(new Error(`[ContextModule] HttpTypedDataDataSource: no message info for address ${n} on chain ${e} for schema ${c}`))}catch{return(0,l.Left)(new Error("[ContextModule] HttpTypedDataDataSource: Failed to fetch typed data informations"))}}convertCalldataPresenceFlag(e){switch(e){case"none":return u.TypedDataCalldataParamPresence.None;case"present":return u.TypedDataCalldataParamPresence.Present;case"verifying_contract":return u.TypedDataCalldataParamPresence.VerifyingContract;default:{const n=e;throw new Error(`Unhandled flag: ${n}`)}}}formatTrustedNameTypesAndSources(e){const n=e.name_types.length,o=e.name_sources.length,r=e.descriptor.slice((n+o)*2*-1,o*2*-1),s=e.descriptor.slice(o*2*-1),a=n.toString(16).padStart(2,"0"),c=o.toString(16).padStart(2,"0");return a+r+c+s}isInstructionFieldV1(e,n){return typeof e=="object"&&typeof e.display_name=="string"&&typeof e.field_path=="string"&&typeof e.signatures=="object"&&typeof e.signatures[n]=="string"}isInstructionFieldV2(e,n){return typeof e=="object"&&typeof e.display_name=="string"&&typeof e.field_path=="string"&&typeof e.signatures=="object"&&typeof e.signatures[n]=="string"&&typeof e.format=="string"&&["raw","datetime"].includes(e.format)&&e.coin_ref===void 0}isInstructionFieldV2WithCoinRef(e,n){return typeof e=="object"&&typeof e.display_name=="string"&&typeof e.field_path=="string"&&typeof e.signatures=="object"&&typeof e.signatures[n]=="string"&&typeof e.format=="string"&&["token","amount"].includes(e.format)&&typeof e.coin_ref=="number"}isInstructionFieldV2WithName(e,n){return typeof e=="object"&&typeof e.display_name=="string"&&typeof e.field_path=="string"&&typeof e.signatures=="object"&&typeof e.signatures[n]=="string"&&typeof e.format=="string"&&e.format==="trusted-name"&&e.coin_ref===void 0&&Array.isArray(e.name_types)&&Array.isArray(e.name_sources)&&e.name_types.every(o=>typeof o=="string")&&e.name_sources.every(o=>typeof o=="string")}isInstructionContractInfo(e,n){return typeof e=="object"&&typeof e.display_name=="string"&&typeof e.field_mappers_count=="number"&&typeof e.signatures=="object"&&typeof e.signatures[n]=="string"&&e.field_path===void 0}isInstructionCalldataInfo(e,n){return typeof e=="object"&&typeof e.type=="string"&&e.type==="calldata"&&typeof e.display_name=="string"&&typeof e.calldata_index=="number"&&typeof e.value_filter_flag=="boolean"&&typeof e.chain_id_filter_flag=="boolean"&&typeof e.selector_filter_flag=="boolean"&&typeof e.amount_filter_flag=="boolean"&&["none","present","verifying_contract"].includes(e.callee_filter_flag)&&["none","present","verifying_contract"].includes(e.spender_filter_flag)&&typeof e.signatures=="object"&&typeof e.signatures[n]=="string"}isInstructionFieldV2Calldata(e,n){return typeof e=="object"&&typeof e.display_name=="string"&&typeof e.field_path=="string"&&typeof e.signatures=="object"&&typeof e.signatures[n]=="string"&&typeof e.format=="string"&&["calldata-value","calldata-callee","calldata-chain-id","calldata-selector","calldata-amount","calldata-spender"].includes(e.format)&&typeof e.calldata_index=="number"}};d=F([(0,y.injectable)(),M(0,(0,y.inject)(D.configTypes.Config))],d);0&&(module.exports={HttpTypedDataDataSource});
1
+ "use strict";var u=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var v=Object.prototype.hasOwnProperty;var D=(r,e)=>{for(var n in e)u(r,n,{get:e[n],enumerable:!0})},b=(r,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of x(e))!v.call(r,o)&&o!==n&&u(r,o,{get:()=>e[o],enumerable:!(i=h(e,o))||i.enumerable});return r};var T=r=>b(u({},"__esModule",{value:!0}),r),C=(r,e,n,i)=>{for(var o=i>1?void 0:i?h(e,n):e,s=r.length-1,a;s>=0;s--)(a=r[s])&&(o=(i?a(e,n,o):a(o))||o);return i&&o&&u(e,n,o),o},m=(r,e)=>(n,i)=>e(n,i,r);var V={};D(V,{HttpTypedDataDataSource:()=>p});module.exports=T(V);var d=require("inversify"),l=require("purify-ts"),I=require("../../config/di/configTypes"),F=require("../../network/di/networkTypes"),y=require("../../shared/model/TypedDataClearSignContext"),M=require("../../typed-data/utils/getSchemaHash");let p=class{constructor(e,n){this.config=e;this.http=n}async getTypedDataFilters({chainId:e,address:n,schema:i,version:o}){let s;try{const a=await this.http.get(`${this.config.cal.url}/dapps`,{params:{contracts:n,chain_id:e,output:"descriptors_eip712",descriptors_eip712_version:o,descriptors_eip712:"<set>",ref:`branch:${this.config.cal.branch}`}}),c=(0,M.getSchemaHash)(i);n=n.toLowerCase();const g=(a??[]).map(t=>t?.descriptors_eip712?.[n]?.[c]).find(Boolean);if(!g)return(0,l.Left)(new Error(`[ContextModule] HttpTypedDataDataSource: no typed data filters for address ${n} on chain ${e} for schema ${c}`));if(!Array.isArray(g.instructions))return(0,l.Left)(new Error(`[ContextModule] HttpTypedDataDataSource: no message info for address ${n} on chain ${e} for schema ${c}`));const f=[],_={};for(const t of g.instructions)if(this.isInstructionContractInfo(t,this.config.cal.mode))s={displayName:t.display_name,signature:t.signatures[this.config.cal.mode],filtersCount:t.field_mappers_count};else if(o==="v1"&&this.isInstructionFieldV1(t,this.config.cal.mode))f.push({type:"raw",displayName:t.display_name,path:t.field_path,signature:t.signatures[this.config.cal.mode]});else if(this.isInstructionFieldV2(t,this.config.cal.mode))f.push({type:t.format,displayName:t.display_name,path:t.field_path,signature:t.signatures[this.config.cal.mode]});else if(this.isInstructionFieldV2WithCoinRef(t,this.config.cal.mode))f.push({type:t.format,displayName:t.display_name,path:t.field_path,signature:t.signatures[this.config.cal.mode],tokenIndex:t.coin_ref});else if(this.isInstructionFieldV2WithName(t,this.config.cal.mode))f.push({type:t.format,displayName:t.display_name,path:t.field_path,signature:t.signatures[this.config.cal.mode],types:t.name_types,sources:t.name_sources,typesAndSourcesPayload:this.formatTrustedNameTypesAndSources(t)});else if(this.isInstructionCalldataInfo(t,this.config.cal.mode))_[t.calldata_index]={displayName:t.display_name,calldataIndex:t.calldata_index,valueFlag:t.value_filter_flag,calleeFlag:this.convertCalldataPresenceFlag(t.callee_filter_flag),amountFlag:t.amount_filter_flag,spenderFlag:this.convertCalldataPresenceFlag(t.spender_filter_flag),chainIdFlag:t.chain_id_filter_flag,selectorFlag:t.selector_filter_flag,signature:t.signatures[this.config.cal.mode]};else if(this.isInstructionFieldV2Calldata(t,this.config.cal.mode))f.push({type:t.format,displayName:t.display_name,path:t.field_path,signature:t.signatures[this.config.cal.mode],calldataIndex:t.calldata_index});else return(0,l.Left)(new Error(`[ContextModule] HttpTypedDataDataSource: invalid typed data field for address ${n} on chain ${e} for schema ${c}`));return s?(0,l.Right)({messageInfo:s,filters:f,calldatasInfos:_}):(0,l.Left)(new Error(`[ContextModule] HttpTypedDataDataSource: no message info for address ${n} on chain ${e} for schema ${c}`))}catch{return(0,l.Left)(new Error("[ContextModule] HttpTypedDataDataSource: Failed to fetch typed data informations"))}}convertCalldataPresenceFlag(e){switch(e){case"none":return y.TypedDataCalldataParamPresence.None;case"present":return y.TypedDataCalldataParamPresence.Present;case"verifying_contract":return y.TypedDataCalldataParamPresence.VerifyingContract;default:{const n=e;throw new Error(`Unhandled flag: ${n}`)}}}formatTrustedNameTypesAndSources(e){const n=e.name_types.length,i=e.name_sources.length,o=e.descriptor.slice((n+i)*2*-1,i*2*-1),s=e.descriptor.slice(i*2*-1),a=n.toString(16).padStart(2,"0"),c=i.toString(16).padStart(2,"0");return a+o+c+s}isInstructionFieldV1(e,n){return typeof e=="object"&&typeof e.display_name=="string"&&typeof e.field_path=="string"&&typeof e.signatures=="object"&&typeof e.signatures[n]=="string"}isInstructionFieldV2(e,n){return typeof e=="object"&&typeof e.display_name=="string"&&typeof e.field_path=="string"&&typeof e.signatures=="object"&&typeof e.signatures[n]=="string"&&typeof e.format=="string"&&["raw","datetime"].includes(e.format)&&e.coin_ref===void 0}isInstructionFieldV2WithCoinRef(e,n){return typeof e=="object"&&typeof e.display_name=="string"&&typeof e.field_path=="string"&&typeof e.signatures=="object"&&typeof e.signatures[n]=="string"&&typeof e.format=="string"&&["token","amount"].includes(e.format)&&typeof e.coin_ref=="number"}isInstructionFieldV2WithName(e,n){return typeof e=="object"&&typeof e.display_name=="string"&&typeof e.field_path=="string"&&typeof e.signatures=="object"&&typeof e.signatures[n]=="string"&&typeof e.format=="string"&&e.format==="trusted-name"&&e.coin_ref===void 0&&Array.isArray(e.name_types)&&Array.isArray(e.name_sources)&&e.name_types.every(i=>typeof i=="string")&&e.name_sources.every(i=>typeof i=="string")}isInstructionContractInfo(e,n){return typeof e=="object"&&typeof e.display_name=="string"&&typeof e.field_mappers_count=="number"&&typeof e.signatures=="object"&&typeof e.signatures[n]=="string"&&e.field_path===void 0}isInstructionCalldataInfo(e,n){return typeof e=="object"&&typeof e.type=="string"&&e.type==="calldata"&&typeof e.display_name=="string"&&typeof e.calldata_index=="number"&&typeof e.value_filter_flag=="boolean"&&typeof e.chain_id_filter_flag=="boolean"&&typeof e.selector_filter_flag=="boolean"&&typeof e.amount_filter_flag=="boolean"&&["none","present","verifying_contract"].includes(e.callee_filter_flag)&&["none","present","verifying_contract"].includes(e.spender_filter_flag)&&typeof e.signatures=="object"&&typeof e.signatures[n]=="string"}isInstructionFieldV2Calldata(e,n){return typeof e=="object"&&typeof e.display_name=="string"&&typeof e.field_path=="string"&&typeof e.signatures=="object"&&typeof e.signatures[n]=="string"&&typeof e.format=="string"&&["calldata-value","calldata-callee","calldata-chain-id","calldata-selector","calldata-amount","calldata-spender"].includes(e.format)&&typeof e.calldata_index=="number"}};p=C([(0,d.injectable)(),m(0,(0,d.inject)(I.configTypes.Config)),m(1,(0,d.inject)(F.networkTypes.NetworkClient))],p);0&&(module.exports={HttpTypedDataDataSource});
2
2
  //# sourceMappingURL=HttpTypedDataDataSource.js.map