@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/proxy/di/proxyModuleFactory.test.ts"],
4
- "sourcesContent": ["import { Container } from \"inversify\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { pkiTypes } from \"@/pki/di/pkiTypes\";\nimport { type PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport { HttpProxyDataSource } from \"@/proxy/data/HttpProxyDataSource\";\nimport { HttpSafeProxyDataSource } from \"@/proxy/data/HttpSafeProxyDataSource\";\nimport { ProxyContextFieldLoader } from \"@/proxy/domain/ProxyContextFieldLoader\";\n\nimport { proxyModuleFactory } from \"./proxyModuleFactory\";\nimport { proxyTypes } from \"./proxyTypes\";\n\ndescribe(\"proxyModuleFactory\", () => {\n let container: Container;\n const mockConfig: ContextModuleServiceConfig = {\n metadataServiceDomain: {\n url: \"https://metadata.api.live.ledger.com\",\n },\n originToken: \"test-origin-token\",\n } as ContextModuleServiceConfig;\n\n const mockPkiCertificateLoader: PkiCertificateLoader = {\n loadCertificate: vi.fn(),\n };\n\n beforeEach(() => {\n container = new Container();\n container.bind(configTypes.Config).toConstantValue(mockConfig);\n container\n .bind(pkiTypes.PkiCertificateLoader)\n .toConstantValue(mockPkiCertificateLoader);\n });\n\n describe(\"when datasource config is undefined\", () => {\n it(\"should bind HttpProxyDataSource as the default ProxyDataSource\", () => {\n const module = proxyModuleFactory();\n container.load(module);\n\n const proxyDataSource = container.get(proxyTypes.ProxyDataSource);\n expect(proxyDataSource).toBeInstanceOf(HttpProxyDataSource);\n });\n\n it(\"should bind ProxyContextFieldLoader\", () => {\n const module = proxyModuleFactory();\n container.load(module);\n\n const proxyContextFieldLoader = container.get(\n proxyTypes.ProxyContextFieldLoader,\n );\n expect(proxyContextFieldLoader).toBeInstanceOf(ProxyContextFieldLoader);\n });\n });\n\n describe(\"when datasource.proxy is 'safe'\", () => {\n it(\"should bind HttpSafeProxyDataSource as the ProxyDataSource\", () => {\n const module = proxyModuleFactory({ proxy: \"safe\" });\n container.load(module);\n\n const proxyDataSource = container.get(proxyTypes.ProxyDataSource);\n expect(proxyDataSource).toBeInstanceOf(HttpSafeProxyDataSource);\n });\n\n it(\"should bind ProxyContextFieldLoader\", () => {\n const module = proxyModuleFactory({ proxy: \"safe\" });\n container.load(module);\n\n const proxyContextFieldLoader = container.get(\n proxyTypes.ProxyContextFieldLoader,\n );\n expect(proxyContextFieldLoader).toBeInstanceOf(ProxyContextFieldLoader);\n });\n });\n\n describe(\"when datasource.proxy is 'default'\", () => {\n it(\"should bind HttpProxyDataSource as the ProxyDataSource\", () => {\n const module = proxyModuleFactory({ proxy: \"default\" });\n container.load(module);\n\n const proxyDataSource = container.get(proxyTypes.ProxyDataSource);\n expect(proxyDataSource).toBeInstanceOf(HttpProxyDataSource);\n });\n });\n\n describe(\"when datasource has no proxy set\", () => {\n it(\"should bind HttpProxyDataSource as the default ProxyDataSource\", () => {\n const module = proxyModuleFactory({});\n container.load(module);\n\n const proxyDataSource = container.get(proxyTypes.ProxyDataSource);\n expect(proxyDataSource).toBeInstanceOf(HttpProxyDataSource);\n });\n });\n\n describe(\"when datasource.proxy is an unexpected value\", () => {\n it(\"should bind HttpProxyDataSource as the default ProxyDataSource\", () => {\n const module = proxyModuleFactory({\n proxy: \"unknown\" as unknown as \"safe\" | \"default\",\n });\n container.load(module);\n\n const proxyDataSource = container.get(proxyTypes.ProxyDataSource);\n expect(proxyDataSource).toBeInstanceOf(HttpProxyDataSource);\n });\n });\n});\n"],
5
- "mappings": "aAAA,IAAAA,EAA0B,qBAE1BC,EAA4B,mCAE5BC,EAAyB,6BAEzBC,EAAoC,4CACpCC,EAAwC,gDACxCC,EAAwC,kDAExCC,EAAmC,gCACnCC,EAA2B,wBAE3B,SAAS,qBAAsB,IAAM,CACnC,IAAIC,EACJ,MAAMC,EAAyC,CAC7C,sBAAuB,CACrB,IAAK,sCACP,EACA,YAAa,mBACf,EAEMC,EAAiD,CACrD,gBAAiB,GAAG,GAAG,CACzB,EAEA,WAAW,IAAM,CACfF,EAAY,IAAI,YAChBA,EAAU,KAAK,cAAY,MAAM,EAAE,gBAAgBC,CAAU,EAC7DD,EACG,KAAK,WAAS,oBAAoB,EAClC,gBAAgBE,CAAwB,CAC7C,CAAC,EAED,SAAS,sCAAuC,IAAM,CACpD,GAAG,iEAAkE,IAAM,CACzE,MAAMC,KAAS,sBAAmB,EAClCH,EAAU,KAAKG,CAAM,EAErB,MAAMC,EAAkBJ,EAAU,IAAI,aAAW,eAAe,EAChE,OAAOI,CAAe,EAAE,eAAe,qBAAmB,CAC5D,CAAC,EAED,GAAG,sCAAuC,IAAM,CAC9C,MAAMD,KAAS,sBAAmB,EAClCH,EAAU,KAAKG,CAAM,EAErB,MAAME,EAA0BL,EAAU,IACxC,aAAW,uBACb,EACA,OAAOK,CAAuB,EAAE,eAAe,yBAAuB,CACxE,CAAC,CACH,CAAC,EAED,SAAS,kCAAmC,IAAM,CAChD,GAAG,6DAA8D,IAAM,CACrE,MAAMF,KAAS,sBAAmB,CAAE,MAAO,MAAO,CAAC,EACnDH,EAAU,KAAKG,CAAM,EAErB,MAAMC,EAAkBJ,EAAU,IAAI,aAAW,eAAe,EAChE,OAAOI,CAAe,EAAE,eAAe,yBAAuB,CAChE,CAAC,EAED,GAAG,sCAAuC,IAAM,CAC9C,MAAMD,KAAS,sBAAmB,CAAE,MAAO,MAAO,CAAC,EACnDH,EAAU,KAAKG,CAAM,EAErB,MAAME,EAA0BL,EAAU,IACxC,aAAW,uBACb,EACA,OAAOK,CAAuB,EAAE,eAAe,yBAAuB,CACxE,CAAC,CACH,CAAC,EAED,SAAS,qCAAsC,IAAM,CACnD,GAAG,yDAA0D,IAAM,CACjE,MAAMF,KAAS,sBAAmB,CAAE,MAAO,SAAU,CAAC,EACtDH,EAAU,KAAKG,CAAM,EAErB,MAAMC,EAAkBJ,EAAU,IAAI,aAAW,eAAe,EAChE,OAAOI,CAAe,EAAE,eAAe,qBAAmB,CAC5D,CAAC,CACH,CAAC,EAED,SAAS,mCAAoC,IAAM,CACjD,GAAG,iEAAkE,IAAM,CACzE,MAAMD,KAAS,sBAAmB,CAAC,CAAC,EACpCH,EAAU,KAAKG,CAAM,EAErB,MAAMC,EAAkBJ,EAAU,IAAI,aAAW,eAAe,EAChE,OAAOI,CAAe,EAAE,eAAe,qBAAmB,CAC5D,CAAC,CACH,CAAC,EAED,SAAS,+CAAgD,IAAM,CAC7D,GAAG,iEAAkE,IAAM,CACzE,MAAMD,KAAS,sBAAmB,CAChC,MAAO,SACT,CAAC,EACDH,EAAU,KAAKG,CAAM,EAErB,MAAMC,EAAkBJ,EAAU,IAAI,aAAW,eAAe,EAChE,OAAOI,CAAe,EAAE,eAAe,qBAAmB,CAC5D,CAAC,CACH,CAAC,CACH,CAAC",
6
- "names": ["import_inversify", "import_configTypes", "import_pkiTypes", "import_HttpProxyDataSource", "import_HttpSafeProxyDataSource", "import_ProxyContextFieldLoader", "import_proxyModuleFactory", "import_proxyTypes", "container", "mockConfig", "mockPkiCertificateLoader", "module", "proxyDataSource", "proxyContextFieldLoader"]
4
+ "sourcesContent": ["import { type DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { Container } from \"inversify\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { networkTypes } from \"@/network/di/networkTypes\";\nimport { pkiTypes } from \"@/pki/di/pkiTypes\";\nimport { type PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport { HttpProxyDataSource } from \"@/proxy/data/HttpProxyDataSource\";\nimport { HttpSafeProxyDataSource } from \"@/proxy/data/HttpSafeProxyDataSource\";\nimport { ProxyContextFieldLoader } from \"@/proxy/domain/ProxyContextFieldLoader\";\n\nimport { proxyModuleFactory } from \"./proxyModuleFactory\";\nimport { proxyTypes } from \"./proxyTypes\";\n\ndescribe(\"proxyModuleFactory\", () => {\n let container: Container;\n const mockConfig: ContextModuleServiceConfig = {\n metadataServiceDomain: {\n url: \"https://metadata.api.live.ledger.com\",\n },\n originToken: \"test-origin-token\",\n } as ContextModuleServiceConfig;\n\n const mockPkiCertificateLoader: PkiCertificateLoader = {\n loadCertificate: vi.fn(),\n };\n\n beforeEach(() => {\n container = new Container();\n container.bind(configTypes.Config).toConstantValue(mockConfig);\n container\n .bind(pkiTypes.PkiCertificateLoader)\n .toConstantValue(mockPkiCertificateLoader);\n container.bind(networkTypes.NetworkClient).toConstantValue({\n get: vi.fn(),\n post: vi.fn(),\n } as unknown as DmkNetworkClient);\n });\n\n describe(\"when datasource config is undefined\", () => {\n it(\"should bind HttpProxyDataSource as the default ProxyDataSource\", () => {\n const module = proxyModuleFactory();\n container.load(module);\n\n const proxyDataSource = container.get(proxyTypes.ProxyDataSource);\n expect(proxyDataSource).toBeInstanceOf(HttpProxyDataSource);\n });\n\n it(\"should bind ProxyContextFieldLoader\", () => {\n const module = proxyModuleFactory();\n container.load(module);\n\n const proxyContextFieldLoader = container.get(\n proxyTypes.ProxyContextFieldLoader,\n );\n expect(proxyContextFieldLoader).toBeInstanceOf(ProxyContextFieldLoader);\n });\n });\n\n describe(\"when datasource.proxy is 'safe'\", () => {\n it(\"should bind HttpSafeProxyDataSource as the ProxyDataSource\", () => {\n const module = proxyModuleFactory({ proxy: \"safe\" });\n container.load(module);\n\n const proxyDataSource = container.get(proxyTypes.ProxyDataSource);\n expect(proxyDataSource).toBeInstanceOf(HttpSafeProxyDataSource);\n });\n\n it(\"should bind ProxyContextFieldLoader\", () => {\n const module = proxyModuleFactory({ proxy: \"safe\" });\n container.load(module);\n\n const proxyContextFieldLoader = container.get(\n proxyTypes.ProxyContextFieldLoader,\n );\n expect(proxyContextFieldLoader).toBeInstanceOf(ProxyContextFieldLoader);\n });\n });\n\n describe(\"when datasource.proxy is 'default'\", () => {\n it(\"should bind HttpProxyDataSource as the ProxyDataSource\", () => {\n const module = proxyModuleFactory({ proxy: \"default\" });\n container.load(module);\n\n const proxyDataSource = container.get(proxyTypes.ProxyDataSource);\n expect(proxyDataSource).toBeInstanceOf(HttpProxyDataSource);\n });\n });\n\n describe(\"when datasource has no proxy set\", () => {\n it(\"should bind HttpProxyDataSource as the default ProxyDataSource\", () => {\n const module = proxyModuleFactory({});\n container.load(module);\n\n const proxyDataSource = container.get(proxyTypes.ProxyDataSource);\n expect(proxyDataSource).toBeInstanceOf(HttpProxyDataSource);\n });\n });\n\n describe(\"when datasource.proxy is an unexpected value\", () => {\n it(\"should bind HttpProxyDataSource as the default ProxyDataSource\", () => {\n const module = proxyModuleFactory({\n proxy: \"unknown\" as unknown as \"safe\" | \"default\",\n });\n container.load(module);\n\n const proxyDataSource = container.get(proxyTypes.ProxyDataSource);\n expect(proxyDataSource).toBeInstanceOf(HttpProxyDataSource);\n });\n });\n});\n"],
5
+ "mappings": "aACA,IAAAA,EAA0B,qBAE1BC,EAA4B,mCAE5BC,EAA6B,qCAC7BC,EAAyB,6BAEzBC,EAAoC,4CACpCC,EAAwC,gDACxCC,EAAwC,kDAExCC,EAAmC,gCACnCC,EAA2B,wBAE3B,SAAS,qBAAsB,IAAM,CACnC,IAAIC,EACJ,MAAMC,EAAyC,CAC7C,sBAAuB,CACrB,IAAK,sCACP,EACA,YAAa,mBACf,EAEMC,EAAiD,CACrD,gBAAiB,GAAG,GAAG,CACzB,EAEA,WAAW,IAAM,CACfF,EAAY,IAAI,YAChBA,EAAU,KAAK,cAAY,MAAM,EAAE,gBAAgBC,CAAU,EAC7DD,EACG,KAAK,WAAS,oBAAoB,EAClC,gBAAgBE,CAAwB,EAC3CF,EAAU,KAAK,eAAa,aAAa,EAAE,gBAAgB,CACzD,IAAK,GAAG,GAAG,EACX,KAAM,GAAG,GAAG,CACd,CAAgC,CAClC,CAAC,EAED,SAAS,sCAAuC,IAAM,CACpD,GAAG,iEAAkE,IAAM,CACzE,MAAMG,KAAS,sBAAmB,EAClCH,EAAU,KAAKG,CAAM,EAErB,MAAMC,EAAkBJ,EAAU,IAAI,aAAW,eAAe,EAChE,OAAOI,CAAe,EAAE,eAAe,qBAAmB,CAC5D,CAAC,EAED,GAAG,sCAAuC,IAAM,CAC9C,MAAMD,KAAS,sBAAmB,EAClCH,EAAU,KAAKG,CAAM,EAErB,MAAME,EAA0BL,EAAU,IACxC,aAAW,uBACb,EACA,OAAOK,CAAuB,EAAE,eAAe,yBAAuB,CACxE,CAAC,CACH,CAAC,EAED,SAAS,kCAAmC,IAAM,CAChD,GAAG,6DAA8D,IAAM,CACrE,MAAMF,KAAS,sBAAmB,CAAE,MAAO,MAAO,CAAC,EACnDH,EAAU,KAAKG,CAAM,EAErB,MAAMC,EAAkBJ,EAAU,IAAI,aAAW,eAAe,EAChE,OAAOI,CAAe,EAAE,eAAe,yBAAuB,CAChE,CAAC,EAED,GAAG,sCAAuC,IAAM,CAC9C,MAAMD,KAAS,sBAAmB,CAAE,MAAO,MAAO,CAAC,EACnDH,EAAU,KAAKG,CAAM,EAErB,MAAME,EAA0BL,EAAU,IACxC,aAAW,uBACb,EACA,OAAOK,CAAuB,EAAE,eAAe,yBAAuB,CACxE,CAAC,CACH,CAAC,EAED,SAAS,qCAAsC,IAAM,CACnD,GAAG,yDAA0D,IAAM,CACjE,MAAMF,KAAS,sBAAmB,CAAE,MAAO,SAAU,CAAC,EACtDH,EAAU,KAAKG,CAAM,EAErB,MAAMC,EAAkBJ,EAAU,IAAI,aAAW,eAAe,EAChE,OAAOI,CAAe,EAAE,eAAe,qBAAmB,CAC5D,CAAC,CACH,CAAC,EAED,SAAS,mCAAoC,IAAM,CACjD,GAAG,iEAAkE,IAAM,CACzE,MAAMD,KAAS,sBAAmB,CAAC,CAAC,EACpCH,EAAU,KAAKG,CAAM,EAErB,MAAMC,EAAkBJ,EAAU,IAAI,aAAW,eAAe,EAChE,OAAOI,CAAe,EAAE,eAAe,qBAAmB,CAC5D,CAAC,CACH,CAAC,EAED,SAAS,+CAAgD,IAAM,CAC7D,GAAG,iEAAkE,IAAM,CACzE,MAAMD,KAAS,sBAAmB,CAChC,MAAO,SACT,CAAC,EACDH,EAAU,KAAKG,CAAM,EAErB,MAAMC,EAAkBJ,EAAU,IAAI,aAAW,eAAe,EAChE,OAAOI,CAAe,EAAE,eAAe,qBAAmB,CAC5D,CAAC,CACH,CAAC,CACH,CAAC",
6
+ "names": ["import_inversify", "import_configTypes", "import_networkTypes", "import_pkiTypes", "import_HttpProxyDataSource", "import_HttpSafeProxyDataSource", "import_ProxyContextFieldLoader", "import_proxyModuleFactory", "import_proxyTypes", "container", "mockConfig", "mockPkiCertificateLoader", "module", "proxyDataSource", "proxyContextFieldLoader"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var t=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var p=(i,n,g,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let e of l(n))!d.call(i,e)&&e!==g&&t(i,e,{get:()=>n[e],enumerable:!(r=o(n,e))||r.enumerable});return i};var a=i=>p(t({},"__esModule",{value:!0}),i);var s={};module.exports=a(s);
1
+ "use strict";var t=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var d=(i,n,g,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let e of l(n))!p.call(i,e)&&e!==g&&t(i,e,{get:()=>n[e],enumerable:!(r=o(n,e))||r.enumerable});return i};var s=i=>d(t({},"__esModule",{value:!0}),i);var a={};module.exports=s(a);
2
2
  //# sourceMappingURL=BlindSigningReporterDatasource.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/reporter/data/BlindSigningReporterDatasource.ts"],
4
- "sourcesContent": ["import { type Either } from \"purify-ts\";\n\nimport {\n type BlindSigningMethod,\n type BlindSignReason,\n type ClearSigningType,\n} from \"@/reporter/model/BlindSigningEvent\";\nimport { type BlindSigningModelId } from \"@/reporter/model/BlindSigningModelId\";\n\nexport type BlindSigningReportEthContext = {\n clearSigningType: ClearSigningType;\n partialContextErrors: number;\n};\n\nexport type BlindSigningReportParams = {\n signatureId: string;\n signingMethod: BlindSigningMethod;\n isBlindSign: boolean;\n chainId: number | null;\n targetAddress: string | null;\n blindSignReason: BlindSignReason | null;\n modelId: BlindSigningModelId;\n signerAppVersion: string;\n deviceVersion: string | null;\n ethContext: BlindSigningReportEthContext | null;\n};\n\nexport interface BlindSigningReporterDatasource {\n report(params: BlindSigningReportParams): Promise<Either<Error, void>>;\n}\n"],
4
+ "sourcesContent": ["import { type Either } from \"purify-ts\";\n\nimport {\n type BlindSigningMethod,\n type BlindSigningPlatform,\n type BlindSignReason,\n type ClearSigningType,\n} from \"@/reporter/model/BlindSigningEvent\";\nimport { type BlindSigningModelId } from \"@/reporter/model/BlindSigningModelId\";\n\nexport type BlindSigningReportEthContext = {\n clearSigningType: ClearSigningType;\n partialContextErrors: number;\n};\n\nexport type BlindSigningReportParams = {\n signatureId: string;\n signingMethod: BlindSigningMethod;\n isBlindSign: boolean;\n chainId: number | null;\n targetAddress: string | null;\n blindSignReason: BlindSignReason | null;\n modelId: BlindSigningModelId;\n signerAppVersion: string;\n deviceVersion: string | null;\n ethContext: BlindSigningReportEthContext | null;\n platform?: BlindSigningPlatform;\n appVersion?: string;\n platformOS?: string;\n platformVersion?: string;\n liveAppContext?: string | null;\n sessionId?: string | null;\n};\n\nexport interface BlindSigningReporterDatasource {\n report(params: BlindSigningReportParams): Promise<Either<Error, void>>;\n}\n"],
5
5
  "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
6
  "names": ["BlindSigningReporterDatasource_exports", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var C=Object.create;var n=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var S=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var x=(e,r)=>{for(var o in r)n(e,o,{get:r[o],enumerable:!0})},d=(e,r,o,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of v(r))!_.call(e,i)&&i!==o&&n(e,i,{get:()=>r[i],enumerable:!(t=g(r,i))||t.enumerable});return e};var E=(e,r,o)=>(o=e!=null?C(S(e)):{},d(r||!e||!e.__esModule?n(o,"default",{value:e,enumerable:!0}):o,e)),P=e=>d(n({},"__esModule",{value:!0}),e),l=(e,r,o,t)=>{for(var i=t>1?void 0:t?g(r,o):r,c=e.length-1,f;c>=0;c--)(f=e[c])&&(i=(t?f(r,o,i):f(i))||i);return t&&i&&n(r,o,i),i},u=(e,r)=>(o,t)=>r(o,t,e);var T={};x(T,{HttpBlindSigningReporterDatasource:()=>m});module.exports=P(T);var h=E(require("axios")),p=require("inversify"),s=require("purify-ts"),R=require("../../config/di/configTypes"),a=require("../../shared/constant/HttpHeaders"),y=E(require("../../../package.json"));let m=class{constructor(r){this.config=r}async report(r){try{await h.default.request({method:"POST",url:`${this.config.reporter.url}/blind-signing-events`,data:{...r,source:this.config.appSource},headers:{[a.LEDGER_CLIENT_VERSION_HEADER]:`context-module/${y.default.version}`,[a.LEDGER_ORIGIN_TOKEN_HEADER]:this.config.originToken}})}catch{return(0,s.Left)(new Error("[ContextModule] HttpBlindSigningReporterDatasource: Failed to report blind signing event"))}return(0,s.Right)(void 0)}};m=l([(0,p.injectable)(),u(0,(0,p.inject)(R.configTypes.Config))],m);0&&(module.exports={HttpBlindSigningReporterDatasource});
1
+ "use strict";var m=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var k=(e,r)=>{for(var t in r)m(e,t,{get:r[t],enumerable:!0})},v=(e,r,t,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of C(r))!u.call(e,o)&&o!==t&&m(e,o,{get:()=>r[o],enumerable:!(i=f(r,o))||i.enumerable});return e};var w=e=>v(m({},"__esModule",{value:!0}),e),g=(e,r,t,i)=>{for(var o=i>1?void 0:i?f(r,t):r,l=e.length-1,a;l>=0;l--)(a=e[l])&&(o=(i?a(r,t,o):a(o))||o);return i&&o&&m(r,t,o),o},c=(e,r)=>(t,i)=>r(t,i,e);var S={};k(S,{HttpBlindSigningReporterDatasource:()=>n});module.exports=w(S);var p=require("inversify"),s=require("purify-ts"),d=require("../../config/di/configTypes"),y=require("../../network/di/networkTypes"),h=require("../../network/networkClientFactory");let n=class{constructor(r,t){this.config=r;this.http=t??(0,h.networkClientFactory)(r)}http;async report(r){try{await this.http.post(`${this.config.reporter.url}/blind-signing-events`,{...r,source:this.config.appSource},{responseType:"void"})}catch{return(0,s.Left)(new Error("[ContextModule] HttpBlindSigningReporterDatasource: Failed to report blind signing event"))}return(0,s.Right)(void 0)}};n=g([(0,p.injectable)(),c(0,(0,p.inject)(d.configTypes.Config)),c(1,(0,p.inject)(y.networkTypes.NetworkClient))],n);0&&(module.exports={HttpBlindSigningReporterDatasource});
2
2
  //# sourceMappingURL=HttpBlindSigningReporterDatasource.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/reporter/data/HttpBlindSigningReporterDatasource.ts"],
4
- "sourcesContent": ["import axios from \"axios\";\nimport { inject, injectable } from \"inversify\";\nimport { type 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 {\n type BlindSigningReporterDatasource,\n type BlindSigningReportParams,\n} from \"./BlindSigningReporterDatasource\";\n\n@injectable()\nexport class HttpBlindSigningReporterDatasource\n implements BlindSigningReporterDatasource\n{\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n ) {}\n\n async report(params: BlindSigningReportParams): Promise<Either<Error, void>> {\n try {\n await axios.request({\n method: \"POST\",\n url: `${this.config.reporter.url}/blind-signing-events`,\n data: { ...params, source: this.config.appSource },\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n [LEDGER_ORIGIN_TOKEN_HEADER]: this.config.originToken,\n },\n });\n } catch (_error) {\n return Left(\n new Error(\n \"[ContextModule] HttpBlindSigningReporterDatasource: Failed to report blind signing event\",\n ),\n );\n }\n\n return Right(undefined);\n }\n}\n"],
5
- "mappings": "qtBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAkB,oBAClBC,EAAmC,qBACnCC,EAAyC,qBAEzCC,EAA4B,mCAE5BC,EAGO,yCACPC,EAAoB,iCAQb,IAAMC,EAAN,KAEP,CACE,YAEmBC,EACjB,CADiB,YAAAA,CAChB,CAEH,MAAM,OAAOC,EAAgE,CAC3E,GAAI,CACF,MAAM,EAAAC,QAAM,QAAQ,CAClB,OAAQ,OACR,IAAK,GAAG,KAAK,OAAO,SAAS,GAAG,wBAChC,KAAM,CAAE,GAAGD,EAAQ,OAAQ,KAAK,OAAO,SAAU,EACjD,QAAS,CACP,CAAC,8BAA4B,EAAG,kBAAkB,EAAAE,QAAQ,OAAO,GACjE,CAAC,4BAA0B,EAAG,KAAK,OAAO,WAC5C,CACF,CAAC,CACH,MAAiB,CACf,SAAO,QACL,IAAI,MACF,0FACF,CACF,CACF,CAEA,SAAO,SAAM,MAAS,CACxB,CACF,EA7BaJ,EAANK,EAAA,IADN,cAAW,EAKPC,EAAA,eAAO,cAAY,MAAM,IAJjBN",
6
- "names": ["HttpBlindSigningReporterDatasource_exports", "__export", "HttpBlindSigningReporterDatasource", "__toCommonJS", "import_axios", "import_inversify", "import_purify_ts", "import_configTypes", "import_HttpHeaders", "import_package", "HttpBlindSigningReporterDatasource", "config", "params", "axios", "PACKAGE", "__decorateClass", "__decorateParam"]
4
+ "sourcesContent": ["import { DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { type 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\";\n\nimport {\n type BlindSigningReporterDatasource,\n type BlindSigningReportParams,\n} from \"./BlindSigningReporterDatasource\";\n\n@injectable()\nexport class HttpBlindSigningReporterDatasource\n implements BlindSigningReporterDatasource\n{\n private readonly http: DmkNetworkClient;\n\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 async report(params: BlindSigningReportParams): Promise<Either<Error, void>> {\n try {\n await this.http.post(\n `${this.config.reporter.url}/blind-signing-events`,\n { ...params, source: this.config.appSource },\n { responseType: \"void\" },\n );\n } catch (_error) {\n return Left(\n new Error(\n \"[ContextModule] HttpBlindSigningReporterDatasource: Failed to report blind signing event\",\n ),\n );\n }\n\n return Right(undefined);\n }\n}\n"],
5
+ "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wCAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAAmC,qBACnCC,EAAyC,qBAEzCC,EAA4B,mCAE5BC,EAA6B,qCAC7BC,EAAqC,0CAQ9B,IAAMC,EAAN,KAEP,CAGE,YAEmBC,EAEjBC,EACA,CAHiB,YAAAD,EAIjB,KAAK,KAAOC,MAAiB,wBAAqBD,CAAM,CAC1D,CATiB,KAWjB,MAAM,OAAOE,EAAgE,CAC3E,GAAI,CACF,MAAM,KAAK,KAAK,KACd,GAAG,KAAK,OAAO,SAAS,GAAG,wBAC3B,CAAE,GAAGA,EAAQ,OAAQ,KAAK,OAAO,SAAU,EAC3C,CAAE,aAAc,MAAO,CACzB,CACF,MAAiB,CACf,SAAO,QACL,IAAI,MACF,0FACF,CACF,CACF,CAEA,SAAO,SAAM,MAAS,CACxB,CACF,EA/BaH,EAANI,EAAA,IADN,cAAW,EAOPC,EAAA,eAAO,cAAY,MAAM,GAEzBA,EAAA,eAAO,eAAa,aAAa,IARzBL",
6
+ "names": ["HttpBlindSigningReporterDatasource_exports", "__export", "HttpBlindSigningReporterDatasource", "__toCommonJS", "import_inversify", "import_purify_ts", "import_configTypes", "import_networkTypes", "import_networkClientFactory", "HttpBlindSigningReporterDatasource", "config", "networkClient", "params", "__decorateClass", "__decorateParam"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var m=Object.create;var l=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var E=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty;var v=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of h(t))!R.call(e,s)&&s!==o&&l(e,s,{get:()=>t[s],enumerable:!(n=S(t,s))||n.enumerable});return e};var p=(e,t,o)=>(o=e!=null?m(E(e)):{},v(t||!e||!e.__esModule?l(o,"default",{value:e,enumerable:!0}):o,e));var r=p(require("axios")),c=require("purify-ts"),i=require("../../reporter/data/HttpBlindSigningReporterDatasource"),a=require("../../reporter/model/BlindSigningEvent"),u=require("../../reporter/model/BlindSigningModelId"),d=require("../../shared/constant/HttpHeaders"),g=p(require("../../../package.json"));vi.mock("axios");describe("HttpBlindSigningReporterDatasource",()=>{const e={reporter:{url:"https://reporter.test"},originToken:"originToken",appSource:"third-party"},t={signatureId:"a3f8Kb-1738850400000",signingMethod:a.BlindSigningMethod.ETH_SIGN_TRANSACTION,isBlindSign:!0,chainId:1,targetAddress:"0xdAC17F958D2ee523a2206206994597C13D831ec7",blindSignReason:a.BlindSignReason.NO_CLEAR_SIGNING_CONTEXT,modelId:u.BlindSigningModelId.NANO_X,signerAppVersion:"1.12.1",deviceVersion:"2.2.3",ethContext:{clearSigningType:a.ClearSigningType.EIP7730,partialContextErrors:0}};beforeEach(()=>{vi.resetAllMocks()}),describe("report",()=>{it("should return Right(undefined) on success",async()=>{vi.spyOn(r.default,"request").mockResolvedValueOnce({data:{}});const n=await new i.HttpBlindSigningReporterDatasource(e).report(t);expect(n).toEqual((0,c.Right)(void 0))}),it("should return Left(Error) when the request fails",async()=>{vi.spyOn(r.default,"request").mockRejectedValueOnce(new Error("network error"));const n=await new i.HttpBlindSigningReporterDatasource(e).report(t);expect(n).toEqual((0,c.Left)(new Error("[ContextModule] HttpBlindSigningReporterDatasource: Failed to report blind signing event")))}),it("should call axios with the correct URL and method",async()=>{vi.spyOn(r.default,"request").mockResolvedValueOnce({data:{}}),await new i.HttpBlindSigningReporterDatasource(e).report(t),expect(r.default.request).toHaveBeenCalledWith(expect.objectContaining({method:"POST",url:`${e.reporter.url}/blind-signing-events`}))}),it("should call axios with the correct headers",async()=>{vi.spyOn(r.default,"request").mockResolvedValueOnce({data:{}}),await new i.HttpBlindSigningReporterDatasource(e).report(t),expect(r.default.request).toHaveBeenCalledWith(expect.objectContaining({headers:{[d.LEDGER_CLIENT_VERSION_HEADER]:`context-module/${g.default.version}`,[d.LEDGER_ORIGIN_TOKEN_HEADER]:e.originToken}}))}),it("should call axios with the event payload and injected source as data",async()=>{vi.spyOn(r.default,"request").mockResolvedValueOnce({data:{}}),await new i.HttpBlindSigningReporterDatasource(e).report(t),expect(r.default.request).toHaveBeenCalledWith(expect.objectContaining({data:{...t,source:e.appSource}}))})})});
1
+ "use strict";var s=require("purify-ts"),p=require("../../reporter/data/HttpBlindSigningReporterDatasource"),t=require("../../reporter/model/BlindSigningEvent"),a=require("../../reporter/model/BlindSigningModelId");describe("HttpBlindSigningReporterDatasource",()=>{const n={reporter:{url:"https://reporter.test"},originToken:"originToken",appSource:"third-party"},r={signatureId:"a3f8Kb-1738850400000",signingMethod:t.BlindSigningMethod.ETH_SIGN_TRANSACTION,isBlindSign:!0,chainId:1,targetAddress:"0xdAC17F958D2ee523a2206206994597C13D831ec7",blindSignReason:t.BlindSignReason.NO_CLEAR_SIGNING_CONTEXT,modelId:a.BlindSigningModelId.NANO_X,signerAppVersion:"1.12.1",deviceVersion:"2.2.3",ethContext:{clearSigningType:t.ClearSigningType.EIP7730,partialContextErrors:0}};let e,i;beforeEach(()=>{vi.resetAllMocks(),e={post:vi.fn()},i=new p.HttpBlindSigningReporterDatasource(n,e)}),describe("report",()=>{it("should return Right(undefined) on success",async()=>{e.post.mockResolvedValueOnce(void 0);const o=await i.report(r);expect(o).toEqual((0,s.Right)(void 0))}),it("should return Left(Error) when the request fails",async()=>{e.post.mockRejectedValueOnce(new Error("network error"));const o=await i.report(r);expect(o).toEqual((0,s.Left)(new Error("[ContextModule] HttpBlindSigningReporterDatasource: Failed to report blind signing event")))}),it("should call http.post with the correct URL, body and options",async()=>{e.post.mockResolvedValueOnce(void 0),await i.report(r),expect(e.post).toHaveBeenCalledWith(`${n.reporter.url}/blind-signing-events`,{...r,source:n.appSource},{responseType:"void"})}),it("should forward optional DTO fields when provided",async()=>{e.post.mockResolvedValueOnce(void 0);const o={...r,platform:t.BlindSigningPlatform.DESKTOP,appVersion:"2.80.0",platformOS:"macOS",platformVersion:"14.5",liveAppContext:"swap",sessionId:"session-123"};await i.report(o),expect(e.post).toHaveBeenCalledWith(`${n.reporter.url}/blind-signing-events`,{...o,source:n.appSource},{responseType:"void"})})})});
2
2
  //# sourceMappingURL=HttpBlindSigningReporterDatasource.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/reporter/data/HttpBlindSigningReporterDatasource.test.ts"],
4
- "sourcesContent": ["import axios from \"axios\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { type BlindSigningReportParams } from \"@/reporter/data/BlindSigningReporterDatasource\";\nimport { HttpBlindSigningReporterDatasource } from \"@/reporter/data/HttpBlindSigningReporterDatasource\";\nimport {\n BlindSigningMethod,\n BlindSignReason,\n ClearSigningType,\n} from \"@/reporter/model/BlindSigningEvent\";\nimport { BlindSigningModelId } from \"@/reporter/model/BlindSigningModelId\";\nimport {\n LEDGER_CLIENT_VERSION_HEADER,\n LEDGER_ORIGIN_TOKEN_HEADER,\n} from \"@/shared/constant/HttpHeaders\";\nimport PACKAGE from \"@root/package.json\";\n\nvi.mock(\"axios\");\n\ndescribe(\"HttpBlindSigningReporterDatasource\", () => {\n const config = {\n reporter: {\n url: \"https://reporter.test\",\n },\n originToken: \"originToken\",\n appSource: \"third-party\",\n } as ContextModuleServiceConfig;\n\n const params: BlindSigningReportParams = {\n signatureId: \"a3f8Kb-1738850400000\",\n signingMethod: BlindSigningMethod.ETH_SIGN_TRANSACTION,\n isBlindSign: true,\n chainId: 1,\n targetAddress: \"0xdAC17F958D2ee523a2206206994597C13D831ec7\",\n blindSignReason: BlindSignReason.NO_CLEAR_SIGNING_CONTEXT,\n modelId: BlindSigningModelId.NANO_X,\n signerAppVersion: \"1.12.1\",\n deviceVersion: \"2.2.3\",\n ethContext: {\n clearSigningType: ClearSigningType.EIP7730,\n partialContextErrors: 0,\n },\n };\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"report\", () => {\n it(\"should return Right(undefined) on success\", async () => {\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValueOnce({ data: {} });\n\n // WHEN\n const dataSource = new HttpBlindSigningReporterDatasource(config);\n const result = await dataSource.report(params);\n\n // THEN\n expect(result).toEqual(Right(undefined));\n });\n\n it(\"should return Left(Error) when the request fails\", async () => {\n // GIVEN\n vi.spyOn(axios, \"request\").mockRejectedValueOnce(\n new Error(\"network error\"),\n );\n\n // WHEN\n const dataSource = new HttpBlindSigningReporterDatasource(config);\n const result = await dataSource.report(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpBlindSigningReporterDatasource: Failed to report blind signing event\",\n ),\n ),\n );\n });\n\n it(\"should call axios with the correct URL and method\", async () => {\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValueOnce({ data: {} });\n\n // WHEN\n const dataSource = new HttpBlindSigningReporterDatasource(config);\n await dataSource.report(params);\n\n // THEN\n expect(axios.request).toHaveBeenCalledWith(\n expect.objectContaining({\n method: \"POST\",\n url: `${config.reporter!.url}/blind-signing-events`,\n }),\n );\n });\n\n it(\"should call axios with the correct headers\", async () => {\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValueOnce({ data: {} });\n\n // WHEN\n const dataSource = new HttpBlindSigningReporterDatasource(config);\n await dataSource.report(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 event payload and injected source as data\", async () => {\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValueOnce({ data: {} });\n\n // WHEN\n const dataSource = new HttpBlindSigningReporterDatasource(config);\n await dataSource.report(params);\n\n // THEN\n expect(axios.request).toHaveBeenCalledWith(\n expect.objectContaining({\n data: { ...params, source: config.appSource },\n }),\n );\n });\n });\n});\n"],
5
- "mappings": "wdAAA,IAAAA,EAAkB,oBAClBC,EAA4B,qBAI5BC,EAAmD,8DACnDC,EAIO,8CACPC,EAAoC,gDACpCC,EAGO,yCACPC,EAAoB,iCAEpB,GAAG,KAAK,OAAO,EAEf,SAAS,qCAAsC,IAAM,CACnD,MAAMC,EAAS,CACb,SAAU,CACR,IAAK,uBACP,EACA,YAAa,cACb,UAAW,aACb,EAEMC,EAAmC,CACvC,YAAa,uBACb,cAAe,qBAAmB,qBAClC,YAAa,GACb,QAAS,EACT,cAAe,6CACf,gBAAiB,kBAAgB,yBACjC,QAAS,sBAAoB,OAC7B,iBAAkB,SAClB,cAAe,QACf,WAAY,CACV,iBAAkB,mBAAiB,QACnC,qBAAsB,CACxB,CACF,EAEA,WAAW,IAAM,CACf,GAAG,cAAc,CACnB,CAAC,EAED,SAAS,SAAU,IAAM,CACvB,GAAG,4CAA6C,SAAY,CAE1D,GAAG,MAAM,EAAAC,QAAO,SAAS,EAAE,sBAAsB,CAAE,KAAM,CAAC,CAAE,CAAC,EAI7D,MAAMC,EAAS,MADI,IAAI,qCAAmCH,CAAM,EAChC,OAAOC,CAAM,EAG7C,OAAOE,CAAM,EAAE,WAAQ,SAAM,MAAS,CAAC,CACzC,CAAC,EAED,GAAG,mDAAoD,SAAY,CAEjE,GAAG,MAAM,EAAAD,QAAO,SAAS,EAAE,sBACzB,IAAI,MAAM,eAAe,CAC3B,EAIA,MAAMC,EAAS,MADI,IAAI,qCAAmCH,CAAM,EAChC,OAAOC,CAAM,EAG7C,OAAOE,CAAM,EAAE,WACb,QACE,IAAI,MACF,0FACF,CACF,CACF,CACF,CAAC,EAED,GAAG,oDAAqD,SAAY,CAElE,GAAG,MAAM,EAAAD,QAAO,SAAS,EAAE,sBAAsB,CAAE,KAAM,CAAC,CAAE,CAAC,EAI7D,MADmB,IAAI,qCAAmCF,CAAM,EAC/C,OAAOC,CAAM,EAG9B,OAAO,EAAAC,QAAM,OAAO,EAAE,qBACpB,OAAO,iBAAiB,CACtB,OAAQ,OACR,IAAK,GAAGF,EAAO,SAAU,GAAG,uBAC9B,CAAC,CACH,CACF,CAAC,EAED,GAAG,6CAA8C,SAAY,CAE3D,GAAG,MAAM,EAAAE,QAAO,SAAS,EAAE,sBAAsB,CAAE,KAAM,CAAC,CAAE,CAAC,EAI7D,MADmB,IAAI,qCAAmCF,CAAM,EAC/C,OAAOC,CAAM,EAG9B,OAAO,EAAAC,QAAM,OAAO,EAAE,qBACpB,OAAO,iBAAiB,CACtB,QAAS,CACP,CAAC,8BAA4B,EAAG,kBAAkB,EAAAE,QAAQ,OAAO,GACjE,CAAC,4BAA0B,EAAGJ,EAAO,WACvC,CACF,CAAC,CACH,CACF,CAAC,EAED,GAAG,uEAAwE,SAAY,CAErF,GAAG,MAAM,EAAAE,QAAO,SAAS,EAAE,sBAAsB,CAAE,KAAM,CAAC,CAAE,CAAC,EAI7D,MADmB,IAAI,qCAAmCF,CAAM,EAC/C,OAAOC,CAAM,EAG9B,OAAO,EAAAC,QAAM,OAAO,EAAE,qBACpB,OAAO,iBAAiB,CACtB,KAAM,CAAE,GAAGD,EAAQ,OAAQD,EAAO,SAAU,CAC9C,CAAC,CACH,CACF,CAAC,CACH,CAAC,CACH,CAAC",
6
- "names": ["import_axios", "import_purify_ts", "import_HttpBlindSigningReporterDatasource", "import_BlindSigningEvent", "import_BlindSigningModelId", "import_HttpHeaders", "import_package", "config", "params", "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 BlindSigningReportParams } from \"@/reporter/data/BlindSigningReporterDatasource\";\nimport { HttpBlindSigningReporterDatasource } from \"@/reporter/data/HttpBlindSigningReporterDatasource\";\nimport {\n BlindSigningMethod,\n BlindSigningPlatform,\n BlindSignReason,\n ClearSigningType,\n} from \"@/reporter/model/BlindSigningEvent\";\nimport { BlindSigningModelId } from \"@/reporter/model/BlindSigningModelId\";\n\ndescribe(\"HttpBlindSigningReporterDatasource\", () => {\n const config = {\n reporter: {\n url: \"https://reporter.test\",\n },\n originToken: \"originToken\",\n appSource: \"third-party\",\n } as ContextModuleServiceConfig;\n\n const params: BlindSigningReportParams = {\n signatureId: \"a3f8Kb-1738850400000\",\n signingMethod: BlindSigningMethod.ETH_SIGN_TRANSACTION,\n isBlindSign: true,\n chainId: 1,\n targetAddress: \"0xdAC17F958D2ee523a2206206994597C13D831ec7\",\n blindSignReason: BlindSignReason.NO_CLEAR_SIGNING_CONTEXT,\n modelId: BlindSigningModelId.NANO_X,\n signerAppVersion: \"1.12.1\",\n deviceVersion: \"2.2.3\",\n ethContext: {\n clearSigningType: ClearSigningType.EIP7730,\n partialContextErrors: 0,\n },\n };\n\n let httpMock: { post: ReturnType<typeof vi.fn> };\n let dataSource: HttpBlindSigningReporterDatasource;\n\n beforeEach(() => {\n vi.resetAllMocks();\n httpMock = { post: vi.fn() };\n dataSource = new HttpBlindSigningReporterDatasource(\n config,\n httpMock as unknown as DmkNetworkClient,\n );\n });\n\n describe(\"report\", () => {\n it(\"should return Right(undefined) on success\", async () => {\n // GIVEN\n httpMock.post.mockResolvedValueOnce(undefined);\n\n // WHEN\n const result = await dataSource.report(params);\n\n // THEN\n expect(result).toEqual(Right(undefined));\n });\n\n it(\"should return Left(Error) when the request fails\", async () => {\n // GIVEN\n httpMock.post.mockRejectedValueOnce(new Error(\"network error\"));\n\n // WHEN\n const result = await dataSource.report(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpBlindSigningReporterDatasource: Failed to report blind signing event\",\n ),\n ),\n );\n });\n\n it(\"should call http.post with the correct URL, body and options\", async () => {\n // GIVEN\n httpMock.post.mockResolvedValueOnce(undefined);\n\n // WHEN\n await dataSource.report(params);\n\n // THEN\n expect(httpMock.post).toHaveBeenCalledWith(\n `${config.reporter!.url}/blind-signing-events`,\n { ...params, source: config.appSource },\n { responseType: \"void\" },\n );\n });\n\n it(\"should forward optional DTO fields when provided\", async () => {\n // GIVEN\n httpMock.post.mockResolvedValueOnce(undefined);\n const paramsWithOptionalFields: BlindSigningReportParams = {\n ...params,\n platform: BlindSigningPlatform.DESKTOP,\n appVersion: \"2.80.0\",\n platformOS: \"macOS\",\n platformVersion: \"14.5\",\n liveAppContext: \"swap\",\n sessionId: \"session-123\",\n };\n\n // WHEN\n await dataSource.report(paramsWithOptionalFields);\n\n // THEN\n expect(httpMock.post).toHaveBeenCalledWith(\n `${config.reporter!.url}/blind-signing-events`,\n { ...paramsWithOptionalFields, source: config.appSource },\n { responseType: \"void\" },\n );\n });\n });\n});\n"],
5
+ "mappings": "aACA,IAAAA,EAA4B,qBAI5BC,EAAmD,8DACnDC,EAKO,8CACPC,EAAoC,gDAEpC,SAAS,qCAAsC,IAAM,CACnD,MAAMC,EAAS,CACb,SAAU,CACR,IAAK,uBACP,EACA,YAAa,cACb,UAAW,aACb,EAEMC,EAAmC,CACvC,YAAa,uBACb,cAAe,qBAAmB,qBAClC,YAAa,GACb,QAAS,EACT,cAAe,6CACf,gBAAiB,kBAAgB,yBACjC,QAAS,sBAAoB,OAC7B,iBAAkB,SAClB,cAAe,QACf,WAAY,CACV,iBAAkB,mBAAiB,QACnC,qBAAsB,CACxB,CACF,EAEA,IAAIC,EACAC,EAEJ,WAAW,IAAM,CACf,GAAG,cAAc,EACjBD,EAAW,CAAE,KAAM,GAAG,GAAG,CAAE,EAC3BC,EAAa,IAAI,qCACfH,EACAE,CACF,CACF,CAAC,EAED,SAAS,SAAU,IAAM,CACvB,GAAG,4CAA6C,SAAY,CAE1DA,EAAS,KAAK,sBAAsB,MAAS,EAG7C,MAAME,EAAS,MAAMD,EAAW,OAAOF,CAAM,EAG7C,OAAOG,CAAM,EAAE,WAAQ,SAAM,MAAS,CAAC,CACzC,CAAC,EAED,GAAG,mDAAoD,SAAY,CAEjEF,EAAS,KAAK,sBAAsB,IAAI,MAAM,eAAe,CAAC,EAG9D,MAAME,EAAS,MAAMD,EAAW,OAAOF,CAAM,EAG7C,OAAOG,CAAM,EAAE,WACb,QACE,IAAI,MACF,0FACF,CACF,CACF,CACF,CAAC,EAED,GAAG,+DAAgE,SAAY,CAE7EF,EAAS,KAAK,sBAAsB,MAAS,EAG7C,MAAMC,EAAW,OAAOF,CAAM,EAG9B,OAAOC,EAAS,IAAI,EAAE,qBACpB,GAAGF,EAAO,SAAU,GAAG,wBACvB,CAAE,GAAGC,EAAQ,OAAQD,EAAO,SAAU,EACtC,CAAE,aAAc,MAAO,CACzB,CACF,CAAC,EAED,GAAG,mDAAoD,SAAY,CAEjEE,EAAS,KAAK,sBAAsB,MAAS,EAC7C,MAAMG,EAAqD,CACzD,GAAGJ,EACH,SAAU,uBAAqB,QAC/B,WAAY,SACZ,WAAY,QACZ,gBAAiB,OACjB,eAAgB,OAChB,UAAW,aACb,EAGA,MAAME,EAAW,OAAOE,CAAwB,EAGhD,OAAOH,EAAS,IAAI,EAAE,qBACpB,GAAGF,EAAO,SAAU,GAAG,wBACvB,CAAE,GAAGK,EAA0B,OAAQL,EAAO,SAAU,EACxD,CAAE,aAAc,MAAO,CACzB,CACF,CAAC,CACH,CAAC,CACH,CAAC",
6
+ "names": ["import_purify_ts", "import_HttpBlindSigningReporterDatasource", "import_BlindSigningEvent", "import_BlindSigningModelId", "config", "params", "httpMock", "dataSource", "result", "paramsWithOptionalFields"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var A=Object.create;var c=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var C=Object.getPrototypeOf,I=Object.prototype.hasOwnProperty;var x=(r,e)=>{for(var o in e)c(r,o,{get:e[o],enumerable:!0})},d=(r,e,o,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of h(e))!I.call(r,t)&&t!==o&&c(r,t,{get:()=>e[t],enumerable:!(i=D(e,t))||i.enumerable});return r};var u=(r,e,o)=>(o=r!=null?A(C(r)):{},d(e||!r||!r.__esModule?c(o,"default",{value:r,enumerable:!0}):o,r)),G=r=>d(c({},"__esModule",{value:!0}),r),g=(r,e,o,i)=>{for(var t=i>1?void 0:i?D(e,o):e,p=r.length-1,f;p>=0;p--)(f=r[p])&&(t=(i?f(e,o,t):f(t))||t);return i&&t&&c(e,o,t),t},m=(r,e)=>(o,i)=>e(o,i,r);var R={};x(R,{HttpSafeAccountDataSource:()=>n});module.exports=G(R);var y=u(require("axios")),S=require("inversify"),s=require("purify-ts"),E=require("../../config/di/configTypes"),a=require("../../shared/constant/HttpHeaders"),k=u(require("../../../package.json"));let n=class{constructor(e){this.config=e}async getDescriptors({safeContractAddress:e,chainId:o,challenge:i}){try{const t=await y.default.request({method:"GET",url:`${this.config.metadataServiceDomain.url}/v2/ethereum/${o}/safe/account/${e}`,params:{challenge:i},headers:{[a.LEDGER_CLIENT_VERSION_HEADER]:`context-module/${k.default.version}`,[a.LEDGER_ORIGIN_TOKEN_HEADER]:this.config.originToken}});return t.data?this.isSafeAccountDto(t.data)?(0,s.Right)({account:{signedDescriptor:t.data.accountDescriptor.signedDescriptor,keyId:t.data.accountDescriptor.keyId,keyUsage:t.data.accountDescriptor.keyUsage},signers:{signedDescriptor:t.data.signersDescriptor.signedDescriptor,keyId:t.data.signersDescriptor.keyId,keyUsage:t.data.signersDescriptor.keyUsage}}):(0,s.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: invalid safe account response format")):(0,s.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: unexpected empty response"))}catch{return(0,s.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: Failed to fetch safe account descriptors"))}}isSafeAccountDto(e){return typeof e=="object"&&e!==null&&"accountDescriptor"in e&&"signersDescriptor"in e&&typeof e.accountDescriptor=="object"&&typeof e.signersDescriptor=="object"&&this.isSafeDescriptorDto(e.accountDescriptor)&&this.isSafeDescriptorDto(e.signersDescriptor)}isSafeDescriptorDto(e){return typeof e=="object"&&e!==null&&"signedDescriptor"in e&&"keyId"in e&&"keyUsage"in e&&typeof e.signedDescriptor=="string"&&typeof e.keyId=="string"&&typeof e.keyUsage=="string"}};n=g([m(0,(0,S.inject)(E.configTypes.Config))],n);0&&(module.exports={HttpSafeAccountDataSource});
1
+ "use strict";var n=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var S=Object.prototype.hasOwnProperty;var k=(r,e)=>{for(var o in e)n(r,o,{get:e[o],enumerable:!0})},h=(r,e,o,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of d(e))!S.call(r,t)&&t!==o&&n(r,t,{get:()=>e[t],enumerable:!(i=g(e,t))||i.enumerable});return r};var A=r=>h(n({},"__esModule",{value:!0}),r),y=(r,e,o,i)=>{for(var t=i>1?void 0:i?g(e,o):e,p=r.length-1,a;p>=0;p--)(a=r[p])&&(t=(i?a(e,o,t):a(t))||t);return i&&t&&n(e,o,t),t},f=(r,e)=>(o,i)=>e(o,i,r);var C={};k(C,{HttpSafeAccountDataSource:()=>c});module.exports=A(C);var D=require("inversify"),s=require("purify-ts"),u=require("../../config/di/configTypes"),m=require("../../network/di/networkTypes");let c=class{constructor(e,o){this.config=e;this.http=o}async getDescriptors({safeContractAddress:e,chainId:o,challenge:i}){try{const t=await this.http.get(`${this.config.metadataServiceDomain.url}/v2/ethereum/${o}/safe/account/${e}`,{params:{challenge:i}});return t?this.isSafeAccountDto(t)?(0,s.Right)({account:{signedDescriptor:t.accountDescriptor.signedDescriptor,keyId:t.accountDescriptor.keyId,keyUsage:t.accountDescriptor.keyUsage},signers:{signedDescriptor:t.signersDescriptor.signedDescriptor,keyId:t.signersDescriptor.keyId,keyUsage:t.signersDescriptor.keyUsage}}):(0,s.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: invalid safe account response format")):(0,s.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: unexpected empty response"))}catch{return(0,s.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: Failed to fetch safe account descriptors"))}}isSafeAccountDto(e){return typeof e=="object"&&e!==null&&"accountDescriptor"in e&&"signersDescriptor"in e&&typeof e.accountDescriptor=="object"&&typeof e.signersDescriptor=="object"&&this.isSafeDescriptorDto(e.accountDescriptor)&&this.isSafeDescriptorDto(e.signersDescriptor)}isSafeDescriptorDto(e){return typeof e=="object"&&e!==null&&"signedDescriptor"in e&&"keyId"in e&&"keyUsage"in e&&typeof e.signedDescriptor=="string"&&typeof e.keyId=="string"&&typeof e.keyUsage=="string"}};c=y([f(0,(0,D.inject)(u.configTypes.Config)),f(1,(0,D.inject)(m.networkTypes.NetworkClient))],c);0&&(module.exports={HttpSafeAccountDataSource});
2
2
  //# sourceMappingURL=HttpSafeAccountDataSource.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/safe/data/HttpSafeAccountDataSource.ts"],
4
- "sourcesContent": ["import axios from \"axios\";\nimport { inject } from \"inversify\";\nimport { type 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 { SafeAccountDto, SafeDescriptorDto } from \"./dto/SafeAccountDto\";\nimport {\n type GetSafeAccountParams,\n type GetSafeAccountResponse,\n type SafeAccountDataSource,\n} from \"./SafeAccountDataSource\";\n\nexport class HttpSafeAccountDataSource implements SafeAccountDataSource {\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n ) {}\n\n async getDescriptors({\n safeContractAddress,\n chainId,\n challenge,\n }: GetSafeAccountParams): Promise<Either<Error, GetSafeAccountResponse>> {\n try {\n const response = await axios.request<SafeAccountDto>({\n method: \"GET\",\n url: `${this.config.metadataServiceDomain.url}/v2/ethereum/${chainId}/safe/account/${safeContractAddress}`,\n params: {\n challenge,\n },\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n [LEDGER_ORIGIN_TOKEN_HEADER]: this.config.originToken,\n },\n });\n\n if (!response.data) {\n return Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: unexpected empty response\",\n ),\n );\n }\n\n if (!this.isSafeAccountDto(response.data)) {\n return Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: invalid safe account response format\",\n ),\n );\n }\n\n return Right({\n account: {\n signedDescriptor: response.data.accountDescriptor.signedDescriptor,\n keyId: response.data.accountDescriptor.keyId,\n keyUsage: response.data.accountDescriptor.keyUsage,\n },\n signers: {\n signedDescriptor: response.data.signersDescriptor.signedDescriptor,\n keyId: response.data.signersDescriptor.keyId,\n keyUsage: response.data.signersDescriptor.keyUsage,\n },\n });\n } catch (_error) {\n return Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: Failed to fetch safe account descriptors\",\n ),\n );\n }\n }\n\n private isSafeAccountDto(value: unknown): value is SafeAccountDto {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"accountDescriptor\" in value &&\n \"signersDescriptor\" in value &&\n typeof value.accountDescriptor === \"object\" &&\n typeof value.signersDescriptor === \"object\" &&\n this.isSafeDescriptorDto(value.accountDescriptor) &&\n this.isSafeDescriptorDto(value.signersDescriptor)\n );\n }\n\n private isSafeDescriptorDto(value: unknown): value is SafeDescriptorDto {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"signedDescriptor\" in value &&\n \"keyId\" in value &&\n \"keyUsage\" in value &&\n typeof value.signedDescriptor === \"string\" &&\n typeof value.keyId === \"string\" &&\n typeof value.keyUsage === \"string\"\n );\n }\n}\n"],
5
- "mappings": "qtBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,+BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAkB,oBAClBC,EAAuB,qBACvBC,EAAyC,qBAEzCC,EAA4B,mCAE5BC,EAGO,yCACPC,EAAoB,iCASb,IAAMC,EAAN,KAAiE,CACtE,YAEmBC,EACjB,CADiB,YAAAA,CAChB,CAEH,MAAM,eAAe,CACnB,oBAAAC,EACA,QAAAC,EACA,UAAAC,CACF,EAAyE,CACvE,GAAI,CACF,MAAMC,EAAW,MAAM,EAAAC,QAAM,QAAwB,CACnD,OAAQ,MACR,IAAK,GAAG,KAAK,OAAO,sBAAsB,GAAG,gBAAgBH,CAAO,iBAAiBD,CAAmB,GACxG,OAAQ,CACN,UAAAE,CACF,EACA,QAAS,CACP,CAAC,8BAA4B,EAAG,kBAAkB,EAAAG,QAAQ,OAAO,GACjE,CAAC,4BAA0B,EAAG,KAAK,OAAO,WAC5C,CACF,CAAC,EAED,OAAKF,EAAS,KAQT,KAAK,iBAAiBA,EAAS,IAAI,KAQjC,SAAM,CACX,QAAS,CACP,iBAAkBA,EAAS,KAAK,kBAAkB,iBAClD,MAAOA,EAAS,KAAK,kBAAkB,MACvC,SAAUA,EAAS,KAAK,kBAAkB,QAC5C,EACA,QAAS,CACP,iBAAkBA,EAAS,KAAK,kBAAkB,iBAClD,MAAOA,EAAS,KAAK,kBAAkB,MACvC,SAAUA,EAAS,KAAK,kBAAkB,QAC5C,CACF,CAAC,KAlBQ,QACL,IAAI,MACF,iFACF,CACF,KAZO,QACL,IAAI,MACF,sEACF,CACF,CAuBJ,MAAiB,CACf,SAAO,QACL,IAAI,MACF,qFACF,CACF,CACF,CACF,CAEQ,iBAAiBG,EAAyC,CAChE,OACE,OAAOA,GAAU,UACjBA,IAAU,MACV,sBAAuBA,GACvB,sBAAuBA,GACvB,OAAOA,EAAM,mBAAsB,UACnC,OAAOA,EAAM,mBAAsB,UACnC,KAAK,oBAAoBA,EAAM,iBAAiB,GAChD,KAAK,oBAAoBA,EAAM,iBAAiB,CAEpD,CAEQ,oBAAoBA,EAA4C,CACtE,OACE,OAAOA,GAAU,UACjBA,IAAU,MACV,qBAAsBA,GACtB,UAAWA,GACX,aAAcA,GACd,OAAOA,EAAM,kBAAqB,UAClC,OAAOA,EAAM,OAAU,UACvB,OAAOA,EAAM,UAAa,QAE9B,CACF,EAtFaR,EAANS,EAAA,CAEFC,EAAA,eAAO,cAAY,MAAM,IAFjBV",
6
- "names": ["HttpSafeAccountDataSource_exports", "__export", "HttpSafeAccountDataSource", "__toCommonJS", "import_axios", "import_inversify", "import_purify_ts", "import_configTypes", "import_HttpHeaders", "import_package", "HttpSafeAccountDataSource", "config", "safeContractAddress", "chainId", "challenge", "response", "axios", "PACKAGE", "value", "__decorateClass", "__decorateParam"]
4
+ "sourcesContent": ["import { DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { inject } from \"inversify\";\nimport { type 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 { SafeAccountDto, SafeDescriptorDto } from \"./dto/SafeAccountDto\";\nimport {\n type GetSafeAccountParams,\n type GetSafeAccountResponse,\n type SafeAccountDataSource,\n} from \"./SafeAccountDataSource\";\n\nexport class HttpSafeAccountDataSource implements SafeAccountDataSource {\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n @inject(networkTypes.NetworkClient)\n private readonly http: DmkNetworkClient,\n ) {}\n\n async getDescriptors({\n safeContractAddress,\n chainId,\n challenge,\n }: GetSafeAccountParams): Promise<Either<Error, GetSafeAccountResponse>> {\n try {\n const data = (await this.http.get(\n `${this.config.metadataServiceDomain.url}/v2/ethereum/${chainId}/safe/account/${safeContractAddress}`,\n { params: { challenge } },\n )) as SafeAccountDto;\n\n if (!data) {\n return Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: unexpected empty response\",\n ),\n );\n }\n\n if (!this.isSafeAccountDto(data)) {\n return Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: invalid safe account response format\",\n ),\n );\n }\n\n return Right({\n account: {\n signedDescriptor: data.accountDescriptor.signedDescriptor,\n keyId: data.accountDescriptor.keyId,\n keyUsage: data.accountDescriptor.keyUsage,\n },\n signers: {\n signedDescriptor: data.signersDescriptor.signedDescriptor,\n keyId: data.signersDescriptor.keyId,\n keyUsage: data.signersDescriptor.keyUsage,\n },\n });\n } catch (_error) {\n return Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: Failed to fetch safe account descriptors\",\n ),\n );\n }\n }\n\n private isSafeAccountDto(value: unknown): value is SafeAccountDto {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"accountDescriptor\" in value &&\n \"signersDescriptor\" in value &&\n typeof value.accountDescriptor === \"object\" &&\n typeof value.signersDescriptor === \"object\" &&\n this.isSafeDescriptorDto(value.accountDescriptor) &&\n this.isSafeDescriptorDto(value.signersDescriptor)\n );\n }\n\n private isSafeDescriptorDto(value: unknown): value is SafeDescriptorDto {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"signedDescriptor\" in value &&\n \"keyId\" in value &&\n \"keyUsage\" in value &&\n typeof value.signedDescriptor === \"string\" &&\n typeof value.keyId === \"string\" &&\n typeof value.keyUsage === \"string\"\n );\n }\n}\n"],
5
+ "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,+BAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAAuB,qBACvBC,EAAyC,qBAEzCC,EAA4B,mCAE5BC,EAA6B,qCAStB,IAAMC,EAAN,KAAiE,CACtE,YAEmBC,EAEAC,EACjB,CAHiB,YAAAD,EAEA,UAAAC,CAChB,CAEH,MAAM,eAAe,CACnB,oBAAAC,EACA,QAAAC,EACA,UAAAC,CACF,EAAyE,CACvE,GAAI,CACF,MAAMC,EAAQ,MAAM,KAAK,KAAK,IAC5B,GAAG,KAAK,OAAO,sBAAsB,GAAG,gBAAgBF,CAAO,iBAAiBD,CAAmB,GACnG,CAAE,OAAQ,CAAE,UAAAE,CAAU,CAAE,CAC1B,EAEA,OAAKC,EAQA,KAAK,iBAAiBA,CAAI,KAQxB,SAAM,CACX,QAAS,CACP,iBAAkBA,EAAK,kBAAkB,iBACzC,MAAOA,EAAK,kBAAkB,MAC9B,SAAUA,EAAK,kBAAkB,QACnC,EACA,QAAS,CACP,iBAAkBA,EAAK,kBAAkB,iBACzC,MAAOA,EAAK,kBAAkB,MAC9B,SAAUA,EAAK,kBAAkB,QACnC,CACF,CAAC,KAlBQ,QACL,IAAI,MACF,iFACF,CACF,KAZO,QACL,IAAI,MACF,sEACF,CACF,CAuBJ,MAAiB,CACf,SAAO,QACL,IAAI,MACF,qFACF,CACF,CACF,CACF,CAEQ,iBAAiBC,EAAyC,CAChE,OACE,OAAOA,GAAU,UACjBA,IAAU,MACV,sBAAuBA,GACvB,sBAAuBA,GACvB,OAAOA,EAAM,mBAAsB,UACnC,OAAOA,EAAM,mBAAsB,UACnC,KAAK,oBAAoBA,EAAM,iBAAiB,GAChD,KAAK,oBAAoBA,EAAM,iBAAiB,CAEpD,CAEQ,oBAAoBA,EAA4C,CACtE,OACE,OAAOA,GAAU,UACjBA,IAAU,MACV,qBAAsBA,GACtB,UAAWA,GACX,aAAcA,GACd,OAAOA,EAAM,kBAAqB,UAClC,OAAOA,EAAM,OAAU,UACvB,OAAOA,EAAM,UAAa,QAE9B,CACF,EAjFaP,EAANQ,EAAA,CAEFC,EAAA,eAAO,cAAY,MAAM,GAEzBA,EAAA,eAAO,eAAa,aAAa,IAJzBT",
6
+ "names": ["HttpSafeAccountDataSource_exports", "__export", "HttpSafeAccountDataSource", "__toCommonJS", "import_inversify", "import_purify_ts", "import_configTypes", "import_networkTypes", "HttpSafeAccountDataSource", "config", "http", "safeContractAddress", "chainId", "challenge", "data", "value", "__decorateClass", "__decorateParam"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var g=Object.create;var d=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var h=Object.getPrototypeOf,y=Object.prototype.hasOwnProperty;var D=(s,c,r,e)=>{if(c&&typeof c=="object"||typeof c=="function")for(let t of m(c))!y.call(s,t)&&t!==r&&d(s,t,{get:()=>c[t],enumerable:!(e=f(c,t))||e.enumerable});return s};var u=(s,c,r)=>(r=s!=null?g(h(s)):{},D(c||!s||!s.__esModule?d(r,"default",{value:s,enumerable:!0}):r,s));var a=u(require("axios")),n=require("purify-ts"),o=require("../../safe/data/HttpSafeAccountDataSource"),i=require("../../shared/constant/HttpHeaders"),l=u(require("../../../package.json"));vi.mock("axios");describe("HttpSafeAccountDataSource",()=>{const s={metadataServiceDomain:{url:"https://metadata.ledger.com"},originToken:"test-origin-token"},c={accountDescriptor:{signedDescriptor:"account-signed-descriptor-data",keyId:"account-key-id",keyUsage:"account-key-usage"},signersDescriptor:{signedDescriptor:"signers-signed-descriptor-data",keyId:"signers-key-id",keyUsage:"signers-key-usage"}},r="0x1234567890123456789012345678901234567890";beforeEach(()=>{vi.clearAllMocks()}),describe("getDescriptors",()=>{it("should return safe account descriptors on successful request",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:c});const t=await new o.HttpSafeAccountDataSource(s).getDescriptors(e);expect(a.default.request).toHaveBeenCalledWith({method:"GET",url:"https://metadata.ledger.com/v2/ethereum/1/safe/account/0x1234567890123456789012345678901234567890",params:{challenge:"0xabcdef"},headers:{[i.LEDGER_CLIENT_VERSION_HEADER]:`context-module/${l.default.version}`,[i.LEDGER_ORIGIN_TOKEN_HEADER]:"test-origin-token"}}),expect(t).toEqual((0,n.Right)({account:{signedDescriptor:"account-signed-descriptor-data",keyId:"account-key-id",keyUsage:"account-key-usage"},signers:{signedDescriptor:"signers-signed-descriptor-data",keyId:"signers-key-id",keyUsage:"signers-key-usage"}}))}),it("should work with different chain IDs",async()=>{const e={safeContractAddress:r,chainId:137,challenge:"0xabcdef"};vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:c}),await new o.HttpSafeAccountDataSource(s).getDescriptors(e),expect(a.default.request).toHaveBeenCalledWith(expect.objectContaining({url:"https://metadata.ledger.com/v2/ethereum/137/safe/account/0x1234567890123456789012345678901234567890"}))}),it("should work with different safe addresses",async()=>{const e={safeContractAddress:"0xabcdefabcdefabcdefabcdefabcdefabcdefabcd",chainId:1,challenge:"0xabcdef"};vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:c}),await new o.HttpSafeAccountDataSource(s).getDescriptors(e),expect(a.default.request).toHaveBeenCalledWith(expect.objectContaining({url:"https://metadata.ledger.com/v2/ethereum/1/safe/account/0xabcdefabcdefabcdefabcdefabcdefabcdefabcd"}))}),it("should work with different challenges",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0x123456789"};vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:c}),await new o.HttpSafeAccountDataSource(s).getDescriptors(e),expect(a.default.request).toHaveBeenCalledWith(expect.objectContaining({params:{challenge:"0x123456789"}}))}),it("should return error when response data is empty",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:null});const t=await new o.HttpSafeAccountDataSource(s).getDescriptors(e);expect(t).toEqual((0,n.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: unexpected empty response")))}),it("should return error when response data is undefined",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:void 0});const t=await new o.HttpSafeAccountDataSource(s).getDescriptors(e);expect(t).toEqual((0,n.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: unexpected empty response")))}),it("should return error when accountDescriptor is missing",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:{signersDescriptor:c.signersDescriptor}});const t=await new o.HttpSafeAccountDataSource(s).getDescriptors(e);expect(t).toEqual((0,n.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: invalid safe account response format")))}),it("should return error when signersDescriptor is missing",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:{accountDescriptor:c.accountDescriptor}});const t=await new o.HttpSafeAccountDataSource(s).getDescriptors(e);expect(t).toEqual((0,n.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: invalid safe account response format")))}),it("should return error when accountDescriptor.signedDescriptor is missing",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:{accountDescriptor:{keyId:"account-key-id",keyUsage:"account-key-usage"},signersDescriptor:c.signersDescriptor}});const t=await new o.HttpSafeAccountDataSource(s).getDescriptors(e);expect(t).toEqual((0,n.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: invalid safe account response format")))}),it("should return error when accountDescriptor.keyId is missing",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:{accountDescriptor:{signedDescriptor:"account-signed-descriptor-data",keyUsage:"account-key-usage"},signersDescriptor:c.signersDescriptor}});const t=await new o.HttpSafeAccountDataSource(s).getDescriptors(e);expect(t).toEqual((0,n.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: invalid safe account response format")))}),it("should return error when accountDescriptor.keyUsage is missing",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:{accountDescriptor:{signedDescriptor:"account-signed-descriptor-data",keyId:"account-key-id"},signersDescriptor:c.signersDescriptor}});const t=await new o.HttpSafeAccountDataSource(s).getDescriptors(e);expect(t).toEqual((0,n.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: invalid safe account response format")))}),it("should return error when signersDescriptor fields are invalid",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:{accountDescriptor:c.accountDescriptor,signersDescriptor:{signedDescriptor:"signers-signed-descriptor-data",keyId:123,keyUsage:"signers-key-usage"}}});const t=await new o.HttpSafeAccountDataSource(s).getDescriptors(e);expect(t).toEqual((0,n.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: invalid safe account response format")))}),it("should return error when accountDescriptor is not an object",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:{accountDescriptor:"invalid-string",signersDescriptor:c.signersDescriptor}});const t=await new o.HttpSafeAccountDataSource(s).getDescriptors(e);expect(t).toEqual((0,n.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: invalid safe account response format")))}),it("should return error when signersDescriptor is not an object",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:{accountDescriptor:c.accountDescriptor,signersDescriptor:null}});const t=await new o.HttpSafeAccountDataSource(s).getDescriptors(e);expect(t).toEqual((0,n.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: invalid safe account response format")))}),it("should return error when axios request fails",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};vi.spyOn(a.default,"request").mockRejectedValue(new Error("Network error"));const t=await new o.HttpSafeAccountDataSource(s).getDescriptors(e);expect(t).toEqual((0,n.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: Failed to fetch safe account descriptors")))}),it("should return error when axios throws an exception",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};vi.spyOn(a.default,"request").mockRejectedValue(new Error("timeout"));const t=await new o.HttpSafeAccountDataSource(s).getDescriptors(e);expect(t).toEqual((0,n.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: Failed to fetch safe account descriptors")))}),it("should handle empty string values in descriptors",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:{accountDescriptor:{signedDescriptor:"",keyId:"",keyUsage:""},signersDescriptor:{signedDescriptor:"",keyId:"",keyUsage:""}}});const t=await new o.HttpSafeAccountDataSource(s).getDescriptors(e);expect(t).toEqual((0,n.Right)({account:{signedDescriptor:"",keyId:"",keyUsage:""},signers:{signedDescriptor:"",keyId:"",keyUsage:""}}))}),it("should correctly parse response with long descriptor values",async()=>{const e="a".repeat(1e3),t={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:{accountDescriptor:{signedDescriptor:e,keyId:"account-key-id",keyUsage:"account-key-usage"},signersDescriptor:{signedDescriptor:e,keyId:"signers-key-id",keyUsage:"signers-key-usage"}}});const p=await new o.HttpSafeAccountDataSource(s).getDescriptors(t);expect(p).toEqual((0,n.Right)({account:{signedDescriptor:e,keyId:"account-key-id",keyUsage:"account-key-usage"},signers:{signedDescriptor:e,keyId:"signers-key-id",keyUsage:"signers-key-usage"}}))}),it("should use correct origin token from config",async()=>{const e={metadataServiceDomain:{url:"https://metadata.ledger.com"},originToken:"custom-origin-token"},t={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:c}),await new o.HttpSafeAccountDataSource(e).getDescriptors(t),expect(a.default.request).toHaveBeenCalledWith(expect.objectContaining({headers:expect.objectContaining({[i.LEDGER_ORIGIN_TOKEN_HEADER]:"custom-origin-token"})}))}),it("should use correct metadata service URL from config",async()=>{const e={metadataServiceDomain:{url:"https://custom-metadata.example.com"},originToken:"test-token"},t={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};vi.spyOn(a.default,"request").mockResolvedValue({status:200,data:c}),await new o.HttpSafeAccountDataSource(e).getDescriptors(t),expect(a.default.request).toHaveBeenCalledWith(expect.objectContaining({url:"https://custom-metadata.example.com/v2/ethereum/1/safe/account/0x1234567890123456789012345678901234567890"}))})})});
1
+ "use strict";var c=require("purify-ts"),i=require("../../safe/data/HttpSafeAccountDataSource");describe("HttpSafeAccountDataSource",()=>{const d={metadataServiceDomain:{url:"https://metadata.ledger.com"},originToken:"test-origin-token"},o={accountDescriptor:{signedDescriptor:"account-signed-descriptor-data",keyId:"account-key-id",keyUsage:"account-key-usage"},signersDescriptor:{signedDescriptor:"signers-signed-descriptor-data",keyId:"signers-key-id",keyUsage:"signers-key-usage"}},r="0x1234567890123456789012345678901234567890";let s,a;beforeEach(()=>{vi.clearAllMocks(),s={get:vi.fn()},a=new i.HttpSafeAccountDataSource(d,s)}),describe("getDescriptors",()=>{it("should return safe account descriptors on successful request",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};s.get.mockResolvedValue(o);const t=await a.getDescriptors(e);expect(s.get).toHaveBeenCalledWith("https://metadata.ledger.com/v2/ethereum/1/safe/account/0x1234567890123456789012345678901234567890",{params:{challenge:"0xabcdef"}}),expect(t).toEqual((0,c.Right)({account:{signedDescriptor:"account-signed-descriptor-data",keyId:"account-key-id",keyUsage:"account-key-usage"},signers:{signedDescriptor:"signers-signed-descriptor-data",keyId:"signers-key-id",keyUsage:"signers-key-usage"}}))}),it("should work with different chain IDs",async()=>{const e={safeContractAddress:r,chainId:137,challenge:"0xabcdef"};s.get.mockResolvedValue(o),await a.getDescriptors(e),expect(s.get).toHaveBeenCalledWith("https://metadata.ledger.com/v2/ethereum/137/safe/account/0x1234567890123456789012345678901234567890",{params:{challenge:"0xabcdef"}})}),it("should work with different safe addresses",async()=>{const e={safeContractAddress:"0xabcdefabcdefabcdefabcdefabcdefabcdefabcd",chainId:1,challenge:"0xabcdef"};s.get.mockResolvedValue(o),await a.getDescriptors(e),expect(s.get).toHaveBeenCalledWith("https://metadata.ledger.com/v2/ethereum/1/safe/account/0xabcdefabcdefabcdefabcdefabcdefabcdefabcd",{params:{challenge:"0xabcdef"}})}),it("should work with different challenges",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0x123456789"};s.get.mockResolvedValue(o),await a.getDescriptors(e),expect(s.get).toHaveBeenCalledWith(expect.any(String),{params:{challenge:"0x123456789"}})}),it("should return error when response data is empty",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};s.get.mockResolvedValue(null);const t=await a.getDescriptors(e);expect(t).toEqual((0,c.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: unexpected empty response")))}),it("should return error when response data is undefined",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};s.get.mockResolvedValue(void 0);const t=await a.getDescriptors(e);expect(t).toEqual((0,c.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: unexpected empty response")))}),it("should return error when accountDescriptor is missing",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};s.get.mockResolvedValue({signersDescriptor:o.signersDescriptor});const t=await a.getDescriptors(e);expect(t).toEqual((0,c.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: invalid safe account response format")))}),it("should return error when signersDescriptor is missing",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};s.get.mockResolvedValue({accountDescriptor:o.accountDescriptor});const t=await a.getDescriptors(e);expect(t).toEqual((0,c.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: invalid safe account response format")))}),it("should return error when accountDescriptor.signedDescriptor is missing",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};s.get.mockResolvedValue({accountDescriptor:{keyId:"account-key-id",keyUsage:"account-key-usage"},signersDescriptor:o.signersDescriptor});const t=await a.getDescriptors(e);expect(t).toEqual((0,c.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: invalid safe account response format")))}),it("should return error when accountDescriptor.keyId is missing",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};s.get.mockResolvedValue({accountDescriptor:{signedDescriptor:"account-signed-descriptor-data",keyUsage:"account-key-usage"},signersDescriptor:o.signersDescriptor});const t=await a.getDescriptors(e);expect(t).toEqual((0,c.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: invalid safe account response format")))}),it("should return error when accountDescriptor.keyUsage is missing",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};s.get.mockResolvedValue({accountDescriptor:{signedDescriptor:"account-signed-descriptor-data",keyId:"account-key-id"},signersDescriptor:o.signersDescriptor});const t=await a.getDescriptors(e);expect(t).toEqual((0,c.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: invalid safe account response format")))}),it("should return error when signersDescriptor fields are invalid",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};s.get.mockResolvedValue({accountDescriptor:o.accountDescriptor,signersDescriptor:{signedDescriptor:"signers-signed-descriptor-data",keyId:123,keyUsage:"signers-key-usage"}});const t=await a.getDescriptors(e);expect(t).toEqual((0,c.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: invalid safe account response format")))}),it("should return error when accountDescriptor is not an object",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};s.get.mockResolvedValue({accountDescriptor:"invalid-string",signersDescriptor:o.signersDescriptor});const t=await a.getDescriptors(e);expect(t).toEqual((0,c.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: invalid safe account response format")))}),it("should return error when signersDescriptor is not an object",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};s.get.mockResolvedValue({accountDescriptor:o.accountDescriptor,signersDescriptor:null});const t=await a.getDescriptors(e);expect(t).toEqual((0,c.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: invalid safe account response format")))}),it("should return error when network client rejects",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};s.get.mockRejectedValue(new Error("Network error"));const t=await a.getDescriptors(e);expect(t).toEqual((0,c.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: Failed to fetch safe account descriptors")))}),it("should return error when network client throws an exception",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};s.get.mockRejectedValue(new Error("timeout"));const t=await a.getDescriptors(e);expect(t).toEqual((0,c.Left)(new Error("[ContextModule] HttpSafeAccountDataSource: Failed to fetch safe account descriptors")))}),it("should handle empty string values in descriptors",async()=>{const e={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};s.get.mockResolvedValue({accountDescriptor:{signedDescriptor:"",keyId:"",keyUsage:""},signersDescriptor:{signedDescriptor:"",keyId:"",keyUsage:""}});const t=await a.getDescriptors(e);expect(t).toEqual((0,c.Right)({account:{signedDescriptor:"",keyId:"",keyUsage:""},signers:{signedDescriptor:"",keyId:"",keyUsage:""}}))}),it("should correctly parse response with long descriptor values",async()=>{const e="a".repeat(1e3),t={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};s.get.mockResolvedValue({accountDescriptor:{signedDescriptor:e,keyId:"account-key-id",keyUsage:"account-key-usage"},signersDescriptor:{signedDescriptor:e,keyId:"signers-key-id",keyUsage:"signers-key-usage"}});const n=await a.getDescriptors(t);expect(n).toEqual((0,c.Right)({account:{signedDescriptor:e,keyId:"account-key-id",keyUsage:"account-key-usage"},signers:{signedDescriptor:e,keyId:"signers-key-id",keyUsage:"signers-key-usage"}}))}),it("should use correct metadata service URL from config",async()=>{const e={metadataServiceDomain:{url:"https://custom-metadata.example.com"},originToken:"test-token"},t=new i.HttpSafeAccountDataSource(e,s),n={safeContractAddress:r,chainId:1,challenge:"0xabcdef"};s.get.mockResolvedValue(o),await t.getDescriptors(n),expect(s.get).toHaveBeenCalledWith("https://custom-metadata.example.com/v2/ethereum/1/safe/account/0x1234567890123456789012345678901234567890",{params:{challenge:"0xabcdef"}})})})});
2
2
  //# sourceMappingURL=HttpSafeAccountDataSource.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/safe/data/HttpSafeAccountDataSource.test.ts"],
4
- "sourcesContent": ["import { type HexaString } from \"@ledgerhq/device-management-kit\";\nimport axios from \"axios\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { HttpSafeAccountDataSource } from \"@/safe/data/HttpSafeAccountDataSource\";\nimport {\n LEDGER_CLIENT_VERSION_HEADER,\n LEDGER_ORIGIN_TOKEN_HEADER,\n} from \"@/shared/constant/HttpHeaders\";\nimport PACKAGE from \"@root/package.json\";\n\nvi.mock(\"axios\");\n\ndescribe(\"HttpSafeAccountDataSource\", () => {\n const config: ContextModuleServiceConfig = {\n metadataServiceDomain: {\n url: \"https://metadata.ledger.com\",\n },\n originToken: \"test-origin-token\",\n } as ContextModuleServiceConfig;\n\n const validSafeAccountDto = {\n accountDescriptor: {\n signedDescriptor: \"account-signed-descriptor-data\",\n keyId: \"account-key-id\",\n keyUsage: \"account-key-usage\",\n },\n signersDescriptor: {\n signedDescriptor: \"signers-signed-descriptor-data\",\n keyId: \"signers-key-id\",\n keyUsage: \"signers-key-usage\",\n },\n };\n\n const validsafeContractAddress: HexaString =\n \"0x1234567890123456789012345678901234567890\";\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n describe(\"getDescriptors\", () => {\n it(\"should return safe account descriptors on successful request\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: validSafeAccountDto,\n });\n\n // WHEN\n const result = await new HttpSafeAccountDataSource(config).getDescriptors(\n params,\n );\n\n // THEN\n expect(axios.request).toHaveBeenCalledWith({\n method: \"GET\",\n url: \"https://metadata.ledger.com/v2/ethereum/1/safe/account/0x1234567890123456789012345678901234567890\",\n params: {\n challenge: \"0xabcdef\",\n },\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n [LEDGER_ORIGIN_TOKEN_HEADER]: \"test-origin-token\",\n },\n });\n expect(result).toEqual(\n Right({\n account: {\n signedDescriptor: \"account-signed-descriptor-data\",\n keyId: \"account-key-id\",\n keyUsage: \"account-key-usage\",\n },\n signers: {\n signedDescriptor: \"signers-signed-descriptor-data\",\n keyId: \"signers-key-id\",\n keyUsage: \"signers-key-usage\",\n },\n }),\n );\n });\n\n it(\"should work with different chain IDs\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 137, // Polygon\n challenge: \"0xabcdef\",\n };\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: validSafeAccountDto,\n });\n\n // WHEN\n await new HttpSafeAccountDataSource(config).getDescriptors(params);\n\n // THEN\n expect(axios.request).toHaveBeenCalledWith(\n expect.objectContaining({\n url: \"https://metadata.ledger.com/v2/ethereum/137/safe/account/0x1234567890123456789012345678901234567890\",\n }),\n );\n });\n\n it(\"should work with different safe addresses\", async () => {\n // GIVEN\n const params = {\n safeContractAddress:\n \"0xabcdefabcdefabcdefabcdefabcdefabcdefabcd\" as HexaString,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: validSafeAccountDto,\n });\n\n // WHEN\n await new HttpSafeAccountDataSource(config).getDescriptors(params);\n\n // THEN\n expect(axios.request).toHaveBeenCalledWith(\n expect.objectContaining({\n url: \"https://metadata.ledger.com/v2/ethereum/1/safe/account/0xabcdefabcdefabcdefabcdefabcdefabcdefabcd\",\n }),\n );\n });\n\n it(\"should work with different challenges\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0x123456789\",\n };\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: validSafeAccountDto,\n });\n\n // WHEN\n await new HttpSafeAccountDataSource(config).getDescriptors(params);\n\n // THEN\n expect(axios.request).toHaveBeenCalledWith(\n expect.objectContaining({\n params: {\n challenge: \"0x123456789\",\n },\n }),\n );\n });\n\n it(\"should return error when response data is empty\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: null,\n });\n\n // WHEN\n const result = await new HttpSafeAccountDataSource(config).getDescriptors(\n params,\n );\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: unexpected empty response\",\n ),\n ),\n );\n });\n\n it(\"should return error when response data is undefined\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: undefined,\n });\n\n // WHEN\n const result = await new HttpSafeAccountDataSource(config).getDescriptors(\n params,\n );\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: unexpected empty response\",\n ),\n ),\n );\n });\n\n it(\"should return error when accountDescriptor is missing\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: {\n signersDescriptor: validSafeAccountDto.signersDescriptor,\n },\n });\n\n // WHEN\n const result = await new HttpSafeAccountDataSource(config).getDescriptors(\n params,\n );\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: invalid safe account response format\",\n ),\n ),\n );\n });\n\n it(\"should return error when signersDescriptor is missing\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: {\n accountDescriptor: validSafeAccountDto.accountDescriptor,\n },\n });\n\n // WHEN\n const result = await new HttpSafeAccountDataSource(config).getDescriptors(\n params,\n );\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: invalid safe account response format\",\n ),\n ),\n );\n });\n\n it(\"should return error when accountDescriptor.signedDescriptor is missing\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: {\n accountDescriptor: {\n keyId: \"account-key-id\",\n keyUsage: \"account-key-usage\",\n },\n signersDescriptor: validSafeAccountDto.signersDescriptor,\n },\n });\n\n // WHEN\n const result = await new HttpSafeAccountDataSource(config).getDescriptors(\n params,\n );\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: invalid safe account response format\",\n ),\n ),\n );\n });\n\n it(\"should return error when accountDescriptor.keyId is missing\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: {\n accountDescriptor: {\n signedDescriptor: \"account-signed-descriptor-data\",\n keyUsage: \"account-key-usage\",\n },\n signersDescriptor: validSafeAccountDto.signersDescriptor,\n },\n });\n\n // WHEN\n const result = await new HttpSafeAccountDataSource(config).getDescriptors(\n params,\n );\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: invalid safe account response format\",\n ),\n ),\n );\n });\n\n it(\"should return error when accountDescriptor.keyUsage is missing\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: {\n accountDescriptor: {\n signedDescriptor: \"account-signed-descriptor-data\",\n keyId: \"account-key-id\",\n },\n signersDescriptor: validSafeAccountDto.signersDescriptor,\n },\n });\n\n // WHEN\n const result = await new HttpSafeAccountDataSource(config).getDescriptors(\n params,\n );\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: invalid safe account response format\",\n ),\n ),\n );\n });\n\n it(\"should return error when signersDescriptor fields are invalid\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: {\n accountDescriptor: validSafeAccountDto.accountDescriptor,\n signersDescriptor: {\n signedDescriptor: \"signers-signed-descriptor-data\",\n keyId: 123, // wrong type\n keyUsage: \"signers-key-usage\",\n },\n },\n });\n\n // WHEN\n const result = await new HttpSafeAccountDataSource(config).getDescriptors(\n params,\n );\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: invalid safe account response format\",\n ),\n ),\n );\n });\n\n it(\"should return error when accountDescriptor is not an object\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: {\n accountDescriptor: \"invalid-string\",\n signersDescriptor: validSafeAccountDto.signersDescriptor,\n },\n });\n\n // WHEN\n const result = await new HttpSafeAccountDataSource(config).getDescriptors(\n params,\n );\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: invalid safe account response format\",\n ),\n ),\n );\n });\n\n it(\"should return error when signersDescriptor is not an object\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: {\n accountDescriptor: validSafeAccountDto.accountDescriptor,\n signersDescriptor: null,\n },\n });\n\n // WHEN\n const result = await new HttpSafeAccountDataSource(config).getDescriptors(\n params,\n );\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: invalid safe account response format\",\n ),\n ),\n );\n });\n\n it(\"should return error when axios request fails\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n vi.spyOn(axios, \"request\").mockRejectedValue(new Error(\"Network error\"));\n\n // WHEN\n const result = await new HttpSafeAccountDataSource(config).getDescriptors(\n params,\n );\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: Failed to fetch safe account descriptors\",\n ),\n ),\n );\n });\n\n it(\"should return error when axios throws an exception\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n vi.spyOn(axios, \"request\").mockRejectedValue(new Error(\"timeout\"));\n\n // WHEN\n const result = await new HttpSafeAccountDataSource(config).getDescriptors(\n params,\n );\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: Failed to fetch safe account descriptors\",\n ),\n ),\n );\n });\n\n it(\"should handle empty string values in descriptors\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: {\n accountDescriptor: {\n signedDescriptor: \"\",\n keyId: \"\",\n keyUsage: \"\",\n },\n signersDescriptor: {\n signedDescriptor: \"\",\n keyId: \"\",\n keyUsage: \"\",\n },\n },\n });\n\n // WHEN\n const result = await new HttpSafeAccountDataSource(config).getDescriptors(\n params,\n );\n\n // THEN\n expect(result).toEqual(\n Right({\n account: {\n signedDescriptor: \"\",\n keyId: \"\",\n keyUsage: \"\",\n },\n signers: {\n signedDescriptor: \"\",\n keyId: \"\",\n keyUsage: \"\",\n },\n }),\n );\n });\n\n it(\"should correctly parse response with long descriptor values\", async () => {\n // GIVEN\n const longValue = \"a\".repeat(1000);\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: {\n accountDescriptor: {\n signedDescriptor: longValue,\n keyId: \"account-key-id\",\n keyUsage: \"account-key-usage\",\n },\n signersDescriptor: {\n signedDescriptor: longValue,\n keyId: \"signers-key-id\",\n keyUsage: \"signers-key-usage\",\n },\n },\n });\n\n // WHEN\n const result = await new HttpSafeAccountDataSource(config).getDescriptors(\n params,\n );\n\n // THEN\n expect(result).toEqual(\n Right({\n account: {\n signedDescriptor: longValue,\n keyId: \"account-key-id\",\n keyUsage: \"account-key-usage\",\n },\n signers: {\n signedDescriptor: longValue,\n keyId: \"signers-key-id\",\n keyUsage: \"signers-key-usage\",\n },\n }),\n );\n });\n\n it(\"should use correct origin token from config\", async () => {\n // GIVEN\n const customConfig: ContextModuleServiceConfig = {\n metadataServiceDomain: {\n url: \"https://metadata.ledger.com\",\n },\n originToken: \"custom-origin-token\",\n } as ContextModuleServiceConfig;\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: validSafeAccountDto,\n });\n\n // WHEN\n await new HttpSafeAccountDataSource(customConfig).getDescriptors(params);\n\n // THEN\n expect(axios.request).toHaveBeenCalledWith(\n expect.objectContaining({\n headers: expect.objectContaining({\n [LEDGER_ORIGIN_TOKEN_HEADER]: \"custom-origin-token\",\n }),\n }),\n );\n });\n\n it(\"should use correct metadata service URL from config\", async () => {\n // GIVEN\n const customConfig: ContextModuleServiceConfig = {\n metadataServiceDomain: {\n url: \"https://custom-metadata.example.com\",\n },\n originToken: \"test-token\",\n } as ContextModuleServiceConfig;\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n vi.spyOn(axios, \"request\").mockResolvedValue({\n status: 200,\n data: validSafeAccountDto,\n });\n\n // WHEN\n await new HttpSafeAccountDataSource(customConfig).getDescriptors(params);\n\n // THEN\n expect(axios.request).toHaveBeenCalledWith(\n expect.objectContaining({\n url: \"https://custom-metadata.example.com/v2/ethereum/1/safe/account/0x1234567890123456789012345678901234567890\",\n }),\n );\n });\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["import_axios", "import_purify_ts", "import_HttpSafeAccountDataSource", "import_HttpHeaders", "import_package", "config", "validSafeAccountDto", "validsafeContractAddress", "params", "axios", "result", "PACKAGE", "longValue", "customConfig"]
4
+ "sourcesContent": ["import {\n type DmkNetworkClient,\n type HexaString,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { HttpSafeAccountDataSource } from \"@/safe/data/HttpSafeAccountDataSource\";\n\ndescribe(\"HttpSafeAccountDataSource\", () => {\n const config: ContextModuleServiceConfig = {\n metadataServiceDomain: {\n url: \"https://metadata.ledger.com\",\n },\n originToken: \"test-origin-token\",\n } as ContextModuleServiceConfig;\n\n const validSafeAccountDto = {\n accountDescriptor: {\n signedDescriptor: \"account-signed-descriptor-data\",\n keyId: \"account-key-id\",\n keyUsage: \"account-key-usage\",\n },\n signersDescriptor: {\n signedDescriptor: \"signers-signed-descriptor-data\",\n keyId: \"signers-key-id\",\n keyUsage: \"signers-key-usage\",\n },\n };\n\n const validsafeContractAddress: HexaString =\n \"0x1234567890123456789012345678901234567890\";\n\n let httpMock: { get: ReturnType<typeof vi.fn> };\n let datasource: HttpSafeAccountDataSource;\n\n beforeEach(() => {\n vi.clearAllMocks();\n httpMock = { get: vi.fn() };\n datasource = new HttpSafeAccountDataSource(\n config,\n httpMock as unknown as DmkNetworkClient,\n );\n });\n\n describe(\"getDescriptors\", () => {\n it(\"should return safe account descriptors on successful request\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n httpMock.get.mockResolvedValue(validSafeAccountDto);\n\n // WHEN\n const result = await datasource.getDescriptors(params);\n\n // THEN\n expect(httpMock.get).toHaveBeenCalledWith(\n \"https://metadata.ledger.com/v2/ethereum/1/safe/account/0x1234567890123456789012345678901234567890\",\n { params: { challenge: \"0xabcdef\" } },\n );\n expect(result).toEqual(\n Right({\n account: {\n signedDescriptor: \"account-signed-descriptor-data\",\n keyId: \"account-key-id\",\n keyUsage: \"account-key-usage\",\n },\n signers: {\n signedDescriptor: \"signers-signed-descriptor-data\",\n keyId: \"signers-key-id\",\n keyUsage: \"signers-key-usage\",\n },\n }),\n );\n });\n\n it(\"should work with different chain IDs\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 137, // Polygon\n challenge: \"0xabcdef\",\n };\n httpMock.get.mockResolvedValue(validSafeAccountDto);\n\n // WHEN\n await datasource.getDescriptors(params);\n\n // THEN\n expect(httpMock.get).toHaveBeenCalledWith(\n \"https://metadata.ledger.com/v2/ethereum/137/safe/account/0x1234567890123456789012345678901234567890\",\n { params: { challenge: \"0xabcdef\" } },\n );\n });\n\n it(\"should work with different safe addresses\", async () => {\n // GIVEN\n const params = {\n safeContractAddress:\n \"0xabcdefabcdefabcdefabcdefabcdefabcdefabcd\" as HexaString,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n httpMock.get.mockResolvedValue(validSafeAccountDto);\n\n // WHEN\n await datasource.getDescriptors(params);\n\n // THEN\n expect(httpMock.get).toHaveBeenCalledWith(\n \"https://metadata.ledger.com/v2/ethereum/1/safe/account/0xabcdefabcdefabcdefabcdefabcdefabcdefabcd\",\n { params: { challenge: \"0xabcdef\" } },\n );\n });\n\n it(\"should work with different challenges\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0x123456789\",\n };\n httpMock.get.mockResolvedValue(validSafeAccountDto);\n\n // WHEN\n await datasource.getDescriptors(params);\n\n // THEN\n expect(httpMock.get).toHaveBeenCalledWith(expect.any(String), {\n params: { challenge: \"0x123456789\" },\n });\n });\n\n it(\"should return error when response data is empty\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n httpMock.get.mockResolvedValue(null);\n\n // WHEN\n const result = await datasource.getDescriptors(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: unexpected empty response\",\n ),\n ),\n );\n });\n\n it(\"should return error when response data is undefined\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n httpMock.get.mockResolvedValue(undefined);\n\n // WHEN\n const result = await datasource.getDescriptors(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: unexpected empty response\",\n ),\n ),\n );\n });\n\n it(\"should return error when accountDescriptor is missing\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n httpMock.get.mockResolvedValue({\n signersDescriptor: validSafeAccountDto.signersDescriptor,\n });\n\n // WHEN\n const result = await datasource.getDescriptors(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: invalid safe account response format\",\n ),\n ),\n );\n });\n\n it(\"should return error when signersDescriptor is missing\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n httpMock.get.mockResolvedValue({\n accountDescriptor: validSafeAccountDto.accountDescriptor,\n });\n\n // WHEN\n const result = await datasource.getDescriptors(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: invalid safe account response format\",\n ),\n ),\n );\n });\n\n it(\"should return error when accountDescriptor.signedDescriptor is missing\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n httpMock.get.mockResolvedValue({\n accountDescriptor: {\n keyId: \"account-key-id\",\n keyUsage: \"account-key-usage\",\n },\n signersDescriptor: validSafeAccountDto.signersDescriptor,\n });\n\n // WHEN\n const result = await datasource.getDescriptors(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: invalid safe account response format\",\n ),\n ),\n );\n });\n\n it(\"should return error when accountDescriptor.keyId is missing\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n httpMock.get.mockResolvedValue({\n accountDescriptor: {\n signedDescriptor: \"account-signed-descriptor-data\",\n keyUsage: \"account-key-usage\",\n },\n signersDescriptor: validSafeAccountDto.signersDescriptor,\n });\n\n // WHEN\n const result = await datasource.getDescriptors(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: invalid safe account response format\",\n ),\n ),\n );\n });\n\n it(\"should return error when accountDescriptor.keyUsage is missing\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n httpMock.get.mockResolvedValue({\n accountDescriptor: {\n signedDescriptor: \"account-signed-descriptor-data\",\n keyId: \"account-key-id\",\n },\n signersDescriptor: validSafeAccountDto.signersDescriptor,\n });\n\n // WHEN\n const result = await datasource.getDescriptors(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: invalid safe account response format\",\n ),\n ),\n );\n });\n\n it(\"should return error when signersDescriptor fields are invalid\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n httpMock.get.mockResolvedValue({\n accountDescriptor: validSafeAccountDto.accountDescriptor,\n signersDescriptor: {\n signedDescriptor: \"signers-signed-descriptor-data\",\n keyId: 123, // wrong type\n keyUsage: \"signers-key-usage\",\n },\n });\n\n // WHEN\n const result = await datasource.getDescriptors(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: invalid safe account response format\",\n ),\n ),\n );\n });\n\n it(\"should return error when accountDescriptor is not an object\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n httpMock.get.mockResolvedValue({\n accountDescriptor: \"invalid-string\",\n signersDescriptor: validSafeAccountDto.signersDescriptor,\n });\n\n // WHEN\n const result = await datasource.getDescriptors(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: invalid safe account response format\",\n ),\n ),\n );\n });\n\n it(\"should return error when signersDescriptor is not an object\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n httpMock.get.mockResolvedValue({\n accountDescriptor: validSafeAccountDto.accountDescriptor,\n signersDescriptor: null,\n });\n\n // WHEN\n const result = await datasource.getDescriptors(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: invalid safe account response format\",\n ),\n ),\n );\n });\n\n it(\"should return error when network client rejects\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n httpMock.get.mockRejectedValue(new Error(\"Network error\"));\n\n // WHEN\n const result = await datasource.getDescriptors(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: Failed to fetch safe account descriptors\",\n ),\n ),\n );\n });\n\n it(\"should return error when network client throws an exception\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n httpMock.get.mockRejectedValue(new Error(\"timeout\"));\n\n // WHEN\n const result = await datasource.getDescriptors(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSafeAccountDataSource: Failed to fetch safe account descriptors\",\n ),\n ),\n );\n });\n\n it(\"should handle empty string values in descriptors\", async () => {\n // GIVEN\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n httpMock.get.mockResolvedValue({\n accountDescriptor: {\n signedDescriptor: \"\",\n keyId: \"\",\n keyUsage: \"\",\n },\n signersDescriptor: {\n signedDescriptor: \"\",\n keyId: \"\",\n keyUsage: \"\",\n },\n });\n\n // WHEN\n const result = await datasource.getDescriptors(params);\n\n // THEN\n expect(result).toEqual(\n Right({\n account: {\n signedDescriptor: \"\",\n keyId: \"\",\n keyUsage: \"\",\n },\n signers: {\n signedDescriptor: \"\",\n keyId: \"\",\n keyUsage: \"\",\n },\n }),\n );\n });\n\n it(\"should correctly parse response with long descriptor values\", async () => {\n // GIVEN\n const longValue = \"a\".repeat(1000);\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n httpMock.get.mockResolvedValue({\n accountDescriptor: {\n signedDescriptor: longValue,\n keyId: \"account-key-id\",\n keyUsage: \"account-key-usage\",\n },\n signersDescriptor: {\n signedDescriptor: longValue,\n keyId: \"signers-key-id\",\n keyUsage: \"signers-key-usage\",\n },\n });\n\n // WHEN\n const result = await datasource.getDescriptors(params);\n\n // THEN\n expect(result).toEqual(\n Right({\n account: {\n signedDescriptor: longValue,\n keyId: \"account-key-id\",\n keyUsage: \"account-key-usage\",\n },\n signers: {\n signedDescriptor: longValue,\n keyId: \"signers-key-id\",\n keyUsage: \"signers-key-usage\",\n },\n }),\n );\n });\n\n it(\"should use correct metadata service URL from config\", async () => {\n // GIVEN\n const customConfig: ContextModuleServiceConfig = {\n metadataServiceDomain: {\n url: \"https://custom-metadata.example.com\",\n },\n originToken: \"test-token\",\n } as ContextModuleServiceConfig;\n const customDatasource = new HttpSafeAccountDataSource(\n customConfig,\n httpMock as unknown as DmkNetworkClient,\n );\n const params = {\n safeContractAddress: validsafeContractAddress,\n chainId: 1,\n challenge: \"0xabcdef\",\n };\n httpMock.get.mockResolvedValue(validSafeAccountDto);\n\n // WHEN\n await customDatasource.getDescriptors(params);\n\n // THEN\n expect(httpMock.get).toHaveBeenCalledWith(\n \"https://custom-metadata.example.com/v2/ethereum/1/safe/account/0x1234567890123456789012345678901234567890\",\n { params: { challenge: \"0xabcdef\" } },\n );\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["import_purify_ts", "import_HttpSafeAccountDataSource", "config", "validSafeAccountDto", "validsafeContractAddress", "httpMock", "datasource", "params", "result", "longValue", "customConfig", "customDatasource"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var i=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var N=(n,t)=>{for(var c in t)i(n,c,{get:t[c],enumerable:!0})},u=(n,t,c,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of S(t))!T.call(n,r)&&r!==c&&i(n,r,{get:()=>t[r],enumerable:!(s=l(t,r))||s.enumerable});return n};var y=n=>u(i({},"__esModule",{value:!0}),n);var p={};N(p,{ClearSignContextReferenceType:()=>o,ClearSignContextType:()=>C});module.exports=y(p);var C=(e=>(e.TOKEN="token",e.NFT="nft",e.TRUSTED_NAME="trustedName",e.PLUGIN="plugin",e.EXTERNAL_PLUGIN="externalPlugin",e.TRANSACTION_INFO="transactionInfo",e.PROXY_INFO="proxyInfo",e.ENUM="enum",e.TRANSACTION_FIELD_DESCRIPTION="transactionFieldDescription",e.TRANSACTION_CHECK="transactionCheck",e.DYNAMIC_NETWORK="dynamicNetwork",e.DYNAMIC_NETWORK_ICON="dynamicNetworkIcon",e.ERROR="error",e.SAFE="safe",e.SIGNER="signer",e.GATED_SIGNING="gatedSigning",e))(C||{}),o=(a=>(a.TOKEN="token",a.NFT="nft",a.TRUSTED_NAME="trustedName",a.ENUM="enum",a.CALLDATA="calldata",a))(o||{});0&&(module.exports={ClearSignContextReferenceType,ClearSignContextType});
1
+ "use strict";var i=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var N=(n,t)=>{for(var c in t)i(n,c,{get:t[c],enumerable:!0})},u=(n,t,c,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of S(t))!T.call(n,r)&&r!==c&&i(n,r,{get:()=>t[r],enumerable:!(s=l(t,r))||s.enumerable});return n};var p=n=>u(i({},"__esModule",{value:!0}),n);var y={};N(y,{ClearSignContextReferenceType:()=>o,ClearSignContextType:()=>C});module.exports=p(y);var C=(e=>(e.TOKEN="token",e.NFT="nft",e.TRUSTED_NAME="trustedName",e.PLUGIN="plugin",e.EXTERNAL_PLUGIN="externalPlugin",e.TRANSACTION_INFO="transactionInfo",e.PROXY_INFO="proxyInfo",e.ENUM="enum",e.TRANSACTION_FIELD_DESCRIPTION="transactionFieldDescription",e.TRANSACTION_CHECK="transactionCheck",e.DYNAMIC_NETWORK="dynamicNetwork",e.DYNAMIC_NETWORK_ICON="dynamicNetworkIcon",e.ERROR="error",e.SAFE="safe",e.SIGNER="signer",e.GATED_SIGNING="gatedSigning",e.ACCOUNT_OWNERSHIP="accountOwnership",e))(C||{}),o=(a=>(a.TOKEN="token",a.NFT="nft",a.TRUSTED_NAME="trustedName",a.ENUM="enum",a.CALLDATA="calldata",a))(o||{});0&&(module.exports={ClearSignContextReferenceType,ClearSignContextType});
2
2
  //# sourceMappingURL=ClearSignContext.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/shared/model/ClearSignContext.ts"],
4
- "sourcesContent": ["import { type PkiCertificate } from \"@/pki/model/PkiCertificate\";\n\nimport { type GenericPath } from \"./GenericPath\";\n\nexport enum ClearSignContextType {\n TOKEN = \"token\",\n NFT = \"nft\",\n TRUSTED_NAME = \"trustedName\",\n PLUGIN = \"plugin\",\n EXTERNAL_PLUGIN = \"externalPlugin\",\n TRANSACTION_INFO = \"transactionInfo\",\n PROXY_INFO = \"proxyInfo\",\n ENUM = \"enum\",\n TRANSACTION_FIELD_DESCRIPTION = \"transactionFieldDescription\",\n TRANSACTION_CHECK = \"transactionCheck\",\n DYNAMIC_NETWORK = \"dynamicNetwork\",\n DYNAMIC_NETWORK_ICON = \"dynamicNetworkIcon\",\n ERROR = \"error\",\n SAFE = \"safe\",\n SIGNER = \"signer\",\n GATED_SIGNING = \"gatedSigning\",\n}\n\nexport enum ClearSignContextReferenceType {\n TOKEN = ClearSignContextType.TOKEN,\n NFT = ClearSignContextType.NFT,\n TRUSTED_NAME = ClearSignContextType.TRUSTED_NAME,\n ENUM = ClearSignContextType.ENUM,\n CALLDATA = \"calldata\",\n}\n\ntype PathOnly = {\n valuePath: GenericPath;\n value?: never;\n callee?: GenericPath;\n selector?: GenericPath;\n amount?: GenericPath;\n spender?: GenericPath;\n chainId?: GenericPath;\n};\n\ntype ValueOnly = {\n value: string;\n valuePath?: never;\n};\n\ntype PathOrValue = PathOnly | ValueOnly;\n\n// per-type payloads for references\ntype ClearSignContextReferencePayloads = {\n [ClearSignContextReferenceType.ENUM]: {\n valuePath: GenericPath;\n id: number; // enum id to reference\n };\n [ClearSignContextReferenceType.TRUSTED_NAME]: {\n valuePath: GenericPath;\n types: string[];\n sources: string[];\n };\n [ClearSignContextReferenceType.CALLDATA]: {\n callee: GenericPath;\n valuePath: GenericPath;\n selector?: GenericPath;\n amount?: GenericPath;\n spender?: GenericPath;\n chainId?: GenericPath;\n };\n [ClearSignContextReferenceType.TOKEN]: PathOrValue;\n [ClearSignContextReferenceType.NFT]: PathOrValue;\n};\n\n// discriminated union of all reference shapes, built from the payload map\ntype ClearSignContextReferenceUnion = {\n [T in ClearSignContextReferenceType]: {\n type: T;\n } & ClearSignContextReferencePayloads[T];\n}[ClearSignContextReferenceType];\n\nexport type ClearSignContextReference<\n T extends ClearSignContextReferenceType = ClearSignContextReferenceType,\n> = Extract<ClearSignContextReferenceUnion, { type: T }>;\n\nexport type ClearSignContextSuccessType = Exclude<\n ClearSignContextType,\n ClearSignContextType.ERROR\n>;\n\n// base payload shared by most success contexts\ntype ClearSignContextSuccessBase = {\n payload: string;\n certificate?: PkiCertificate;\n};\n\n// map from ClearSign success type to payload\ntype ClearSignContextSuccessPayloadsBase = {\n [K in ClearSignContextSuccessType]: ClearSignContextSuccessBase;\n};\n\n// special cases overrides for certain context types\ntype ClearSignContextSuccessPayloadOverrides = {\n [ClearSignContextType.ENUM]: ClearSignContextSuccessBase & {\n id: number;\n value: number;\n };\n [ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION]: ClearSignContextSuccessBase & {\n reference?: ClearSignContextReference;\n };\n};\n\ntype ClearSignContextSuccessPayloads = Omit<\n ClearSignContextSuccessPayloadsBase,\n ClearSignContextType.ENUM | ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION\n> &\n ClearSignContextSuccessPayloadOverrides;\n\n// union of all success contexts, built from the payload map.\ntype ClearSignContextSuccessUnion = {\n [T in ClearSignContextSuccessType]: {\n type: T;\n } & ClearSignContextSuccessPayloads[T];\n}[ClearSignContextSuccessType];\n\nexport type ClearSignContextSuccess<\n T extends ClearSignContextSuccessType = ClearSignContextSuccessType,\n> = Extract<ClearSignContextSuccessUnion, { type: T }>;\n\nexport type ClearSignContextError = {\n type: ClearSignContextType.ERROR;\n error: Error;\n};\n\nexport type ClearSignContext = ClearSignContextSuccess | ClearSignContextError;\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mCAAAE,EAAA,yBAAAC,IAAA,eAAAC,EAAAJ,GAIO,IAAKG,OACVA,EAAA,MAAQ,QACRA,EAAA,IAAM,MACNA,EAAA,aAAe,cACfA,EAAA,OAAS,SACTA,EAAA,gBAAkB,iBAClBA,EAAA,iBAAmB,kBACnBA,EAAA,WAAa,YACbA,EAAA,KAAO,OACPA,EAAA,8BAAgC,8BAChCA,EAAA,kBAAoB,mBACpBA,EAAA,gBAAkB,iBAClBA,EAAA,qBAAuB,qBACvBA,EAAA,MAAQ,QACRA,EAAA,KAAO,OACPA,EAAA,OAAS,SACTA,EAAA,cAAgB,eAhBNA,OAAA,IAmBAD,OACVA,EAAA,MAAQ,QACRA,EAAA,IAAM,MACNA,EAAA,aAAe,cACfA,EAAA,KAAO,OACPA,EAAA,SAAW,WALDA,OAAA",
4
+ "sourcesContent": ["import { type PkiCertificate } from \"@/pki/model/PkiCertificate\";\n\nimport { type GenericPath } from \"./GenericPath\";\n\nexport enum ClearSignContextType {\n TOKEN = \"token\",\n NFT = \"nft\",\n TRUSTED_NAME = \"trustedName\",\n PLUGIN = \"plugin\",\n EXTERNAL_PLUGIN = \"externalPlugin\",\n TRANSACTION_INFO = \"transactionInfo\",\n PROXY_INFO = \"proxyInfo\",\n ENUM = \"enum\",\n TRANSACTION_FIELD_DESCRIPTION = \"transactionFieldDescription\",\n TRANSACTION_CHECK = \"transactionCheck\",\n DYNAMIC_NETWORK = \"dynamicNetwork\",\n DYNAMIC_NETWORK_ICON = \"dynamicNetworkIcon\",\n ERROR = \"error\",\n SAFE = \"safe\",\n SIGNER = \"signer\",\n GATED_SIGNING = \"gatedSigning\",\n ACCOUNT_OWNERSHIP = \"accountOwnership\",\n}\n\nexport enum ClearSignContextReferenceType {\n TOKEN = ClearSignContextType.TOKEN,\n NFT = ClearSignContextType.NFT,\n TRUSTED_NAME = ClearSignContextType.TRUSTED_NAME,\n ENUM = ClearSignContextType.ENUM,\n CALLDATA = \"calldata\",\n}\n\ntype PathOnly = {\n valuePath: GenericPath;\n value?: never;\n callee?: GenericPath;\n selector?: GenericPath;\n amount?: GenericPath;\n spender?: GenericPath;\n chainId?: GenericPath;\n};\n\ntype ValueOnly = {\n value: string;\n valuePath?: never;\n};\n\ntype PathOrValue = PathOnly | ValueOnly;\n\n// per-type payloads for references\ntype ClearSignContextReferencePayloads = {\n [ClearSignContextReferenceType.ENUM]: {\n valuePath: GenericPath;\n id: number; // enum id to reference\n };\n [ClearSignContextReferenceType.TRUSTED_NAME]: {\n valuePath: GenericPath;\n types: string[];\n sources: string[];\n };\n [ClearSignContextReferenceType.CALLDATA]: {\n callee: GenericPath;\n valuePath: GenericPath;\n selector?: GenericPath;\n amount?: GenericPath;\n spender?: GenericPath;\n chainId?: GenericPath;\n };\n [ClearSignContextReferenceType.TOKEN]: PathOrValue;\n [ClearSignContextReferenceType.NFT]: PathOrValue;\n};\n\n// discriminated union of all reference shapes, built from the payload map\ntype ClearSignContextReferenceUnion = {\n [T in ClearSignContextReferenceType]: {\n type: T;\n } & ClearSignContextReferencePayloads[T];\n}[ClearSignContextReferenceType];\n\nexport type ClearSignContextReference<\n T extends ClearSignContextReferenceType = ClearSignContextReferenceType,\n> = Extract<ClearSignContextReferenceUnion, { type: T }>;\n\nexport type ClearSignContextSuccessType = Exclude<\n ClearSignContextType,\n ClearSignContextType.ERROR\n>;\n\n// base payload shared by most success contexts\ntype ClearSignContextSuccessBase = {\n payload: string;\n certificate?: PkiCertificate;\n};\n\n// map from ClearSign success type to payload\ntype ClearSignContextSuccessPayloadsBase = {\n [K in ClearSignContextSuccessType]: ClearSignContextSuccessBase;\n};\n\n// special cases overrides for certain context types\ntype ClearSignContextSuccessPayloadOverrides = {\n [ClearSignContextType.ENUM]: ClearSignContextSuccessBase & {\n id: number;\n value: number;\n };\n [ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION]: ClearSignContextSuccessBase & {\n reference?: ClearSignContextReference;\n };\n};\n\ntype ClearSignContextSuccessPayloads = Omit<\n ClearSignContextSuccessPayloadsBase,\n ClearSignContextType.ENUM | ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION\n> &\n ClearSignContextSuccessPayloadOverrides;\n\n// union of all success contexts, built from the payload map.\ntype ClearSignContextSuccessUnion = {\n [T in ClearSignContextSuccessType]: {\n type: T;\n } & ClearSignContextSuccessPayloads[T];\n}[ClearSignContextSuccessType];\n\nexport type ClearSignContextSuccess<\n T extends ClearSignContextSuccessType = ClearSignContextSuccessType,\n> = Extract<ClearSignContextSuccessUnion, { type: T }>;\n\nexport type ClearSignContextError = {\n type: ClearSignContextType.ERROR;\n error: Error;\n};\n\nexport type ClearSignContext = ClearSignContextSuccess | ClearSignContextError;\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mCAAAE,EAAA,yBAAAC,IAAA,eAAAC,EAAAJ,GAIO,IAAKG,OACVA,EAAA,MAAQ,QACRA,EAAA,IAAM,MACNA,EAAA,aAAe,cACfA,EAAA,OAAS,SACTA,EAAA,gBAAkB,iBAClBA,EAAA,iBAAmB,kBACnBA,EAAA,WAAa,YACbA,EAAA,KAAO,OACPA,EAAA,8BAAgC,8BAChCA,EAAA,kBAAoB,mBACpBA,EAAA,gBAAkB,iBAClBA,EAAA,qBAAuB,qBACvBA,EAAA,MAAQ,QACRA,EAAA,KAAO,OACPA,EAAA,OAAS,SACTA,EAAA,cAAgB,eAChBA,EAAA,kBAAoB,mBAjBVA,OAAA,IAoBAD,OACVA,EAAA,MAAQ,QACRA,EAAA,IAAM,MACNA,EAAA,aAAe,cACfA,EAAA,KAAO,OACPA,EAAA,SAAW,WALDA,OAAA",
6
6
  "names": ["ClearSignContext_exports", "__export", "ClearSignContextReferenceType", "ClearSignContextType", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var A=Object.create;var d=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var D=Object.getPrototypeOf,v=Object.prototype.hasOwnProperty;var x=(o,e)=>{for(var t in e)d(o,t,{get:e[t],enumerable:!0})},w=(o,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of C(e))!v.call(o,r)&&r!==t&&d(o,r,{get:()=>e[r],enumerable:!(n=p(e,r))||n.enumerable});return o};var g=(o,e,t)=>(t=o!=null?A(D(o)):{},w(e||!o||!o.__esModule?d(t,"default",{value:o,enumerable:!0}):t,o)),M=o=>w(d({},"__esModule",{value:!0}),o),h=(o,e,t,n)=>{for(var r=n>1?void 0:n?p(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&&d(e,t,r),r},E=(o,e)=>(t,n)=>e(t,n,o);var L={};x(L,{HttpSolanaOwnerInfoDataSource:()=>c});module.exports=M(L);var I=require("@ledgerhq/device-management-kit"),u=g(require("axios")),f=require("inversify"),a=require("purify-ts"),O=require("../../config/di/configTypes"),l=require("../../shared/constant/HttpHeaders"),S=g(require("../../../package.json"));let c=class{constructor(e){this.config=e;if(!this.config.originToken)throw new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: origin token is required")}isSolanaSPLOwnerInfo(e){return typeof e!="object"||e===null?!1:typeof e.tokenAccount=="string"&&typeof e.owner=="string"&&typeof e.contract=="string"&&typeof e.signedDescriptor=="string"}async fetchAddressMetadata(e,t){return await u.default.request({method:"GET",url:`${this.config.metadataServiceDomain.url}/v2/solana/owner/${e}?challenge=${t}`,headers:{[l.LEDGER_CLIENT_VERSION_HEADER]:`context-module/${S.default.version}`,[l.LEDGER_ORIGIN_TOKEN_HEADER]:this.config.originToken}}).then(n=>this.isSolanaSPLOwnerInfo(n.data)?(0,a.Right)(n.data):(0,a.Left)(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid fetchAddressMetadata response shape"))).catch(()=>(0,a.Left)(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: Failed to fetch address metadata")))}async computeAddressMetadata(e,t,n){return await u.default.request({method:"GET",url:`${this.config.metadataServiceDomain.url}/v2/solana/computed-token-account/${e}/${t}?challenge=${n}`,headers:{[l.LEDGER_CLIENT_VERSION_HEADER]:`context-module/${S.default.version}`,"X-Ledger-Client-Origin":this.config.originToken}}).then(r=>this.isSolanaSPLOwnerInfo(r.data)?(0,a.Right)(r.data):(0,a.Left)(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid computeAddressMetadata response shape"))).catch(()=>(0,a.Left)(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: Failed to compute address metadata")))}async getOwnerInfo(e){const{tokenAddress:t,challenge:n,createATA:r}=e;if(!n)return(0,a.Left)(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: challenge is required"));let i;if(t)i=await this.fetchAddressMetadata(t,n);else if(r?.address&&r?.mintAddress)i=await this.computeAddressMetadata(r.address,r.mintAddress,n);else return(0,a.Left)(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: either tokenAddress or valid createATA must be provided"));return i.chain(s=>{const m=(0,I.hexaStringToBuffer)(s.signedDescriptor);return m?(0,a.Right)({tlvDescriptor:m}):(0,a.Left)(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid base64 tlvDescriptor received"))})}};c=h([(0,f.injectable)(),E(0,(0,f.inject)(O.configTypes.Config))],c);0&&(module.exports={HttpSolanaOwnerInfoDataSource});
1
+ "use strict";var d=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var I=(o,e)=>{for(var r in e)d(o,r,{get:e[r],enumerable:!0})},D=(o,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of g(e))!C.call(o,t)&&t!==r&&d(o,t,{get:()=>e[t],enumerable:!(n=p(e,t))||n.enumerable});return o};var O=o=>D(d({},"__esModule",{value:!0}),o),S=(o,e,r,n)=>{for(var t=n>1?void 0:n?p(e,r):e,i=o.length-1,s;i>=0;i--)(s=o[i])&&(t=(n?s(e,r,t):s(t))||t);return n&&t&&d(e,r,t),t},f=(o,e)=>(r,n)=>e(r,n,o);var k={};I(k,{HttpSolanaOwnerInfoDataSource:()=>c});module.exports=O(k);var w=require("@ledgerhq/device-management-kit"),l=require("inversify"),a=require("purify-ts"),m=require("../../config/di/configTypes"),h=require("../../network/di/networkTypes");let c=class{constructor(e,r){this.config=e;this.http=r;if(!this.config.originToken)throw new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: origin token is required")}isSolanaSPLOwnerInfo(e){return typeof e!="object"||e===null?!1:typeof e.tokenAccount=="string"&&typeof e.owner=="string"&&typeof e.contract=="string"&&typeof e.signedDescriptor=="string"}async fetchAddressMetadata(e,r){try{const n=await this.http.get(`${this.config.metadataServiceDomain.url}/v2/solana/owner/${e}`,{params:{challenge:r}});return this.isSolanaSPLOwnerInfo(n)?(0,a.Right)(n):(0,a.Left)(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid fetchAddressMetadata response shape"))}catch{return(0,a.Left)(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: Failed to fetch address metadata"))}}async computeAddressMetadata(e,r,n){try{const t=await this.http.get(`${this.config.metadataServiceDomain.url}/v2/solana/computed-token-account/${e}/${r}`,{params:{challenge:n}});return this.isSolanaSPLOwnerInfo(t)?(0,a.Right)(t):(0,a.Left)(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid computeAddressMetadata response shape"))}catch{return(0,a.Left)(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: Failed to compute address metadata"))}}async getOwnerInfo(e){const{tokenAddress:r,challenge:n,createATA:t}=e;if(!n)return(0,a.Left)(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: challenge is required"));let i;if(r)i=await this.fetchAddressMetadata(r,n);else if(t?.address&&t?.mintAddress)i=await this.computeAddressMetadata(t.address,t.mintAddress,n);else return(0,a.Left)(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: either tokenAddress or valid createATA must be provided"));return i.chain(s=>{const u=(0,w.hexaStringToBuffer)(s.signedDescriptor);return u?(0,a.Right)({tlvDescriptor:u}):(0,a.Left)(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid base64 tlvDescriptor received"))})}};c=S([(0,l.injectable)(),f(0,(0,l.inject)(m.configTypes.Config)),f(1,(0,l.inject)(h.networkTypes.NetworkClient))],c);0&&(module.exports={HttpSolanaOwnerInfoDataSource});
2
2
  //# sourceMappingURL=HttpSolanaOwnerInfoDataSource.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/solana/data/HttpSolanaOwnerInfoDataSource.ts"],
4
- "sourcesContent": ["import { hexaStringToBuffer } from \"@ledgerhq/device-management-kit\";\nimport axios from \"axios\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport type { ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport {\n LEDGER_CLIENT_VERSION_HEADER,\n LEDGER_ORIGIN_TOKEN_HEADER,\n} from \"@/shared/constant/HttpHeaders\";\nimport {\n SolanaSPLOwnerInfo,\n type SolanaTransactionContext,\n} from \"@/solana/domain/solanaContextTypes\";\nimport PACKAGE from \"@root/package.json\";\n\nimport {\n HttpSolanaOwnerInfoDataSourceResult,\n SolanaDataSource,\n} from \"./SolanaDataSource\";\n\n@injectable()\nexport class HttpSolanaOwnerInfoDataSource implements SolanaDataSource {\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n ) {\n if (!this.config.originToken) {\n throw new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: origin token is required\",\n );\n }\n }\n\n private isSolanaSPLOwnerInfo(data: {\n tokenAccount?: unknown;\n owner?: unknown;\n contract?: unknown;\n signedDescriptor?: unknown;\n }): data is SolanaSPLOwnerInfo {\n if (typeof data !== \"object\" || data === null) return false;\n return (\n typeof data.tokenAccount === \"string\" &&\n typeof data.owner === \"string\" &&\n typeof data.contract === \"string\" &&\n typeof data.signedDescriptor === \"string\"\n );\n }\n\n async fetchAddressMetadata(\n tokenAddress: string,\n challenge: string,\n ): Promise<Either<Error, SolanaSPLOwnerInfo>> {\n return await axios\n .request<SolanaSPLOwnerInfo>({\n method: \"GET\",\n url: `${this.config.metadataServiceDomain.url}/v2/solana/owner/${tokenAddress}?challenge=${challenge}`,\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n [LEDGER_ORIGIN_TOKEN_HEADER]: this.config.originToken,\n },\n })\n .then((res) => {\n if (!this.isSolanaSPLOwnerInfo(res.data))\n return Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid fetchAddressMetadata response shape\",\n ),\n );\n return Right(res.data);\n })\n .catch(() =>\n Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: Failed to fetch address metadata\",\n ),\n ),\n );\n }\n\n async computeAddressMetadata(\n address: string,\n mintAddress: string,\n challenge: string,\n ): Promise<Either<Error, SolanaSPLOwnerInfo>> {\n return await axios\n .request<SolanaSPLOwnerInfo>({\n method: \"GET\",\n url: `${this.config.metadataServiceDomain.url}/v2/solana/computed-token-account/${address}/${mintAddress}?challenge=${challenge}`,\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n \"X-Ledger-Client-Origin\": this.config.originToken,\n },\n })\n .then((res) => {\n if (!this.isSolanaSPLOwnerInfo(res.data))\n return Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid computeAddressMetadata response shape\",\n ),\n );\n return Right(res.data);\n })\n .catch(() =>\n Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: Failed to compute address metadata\",\n ),\n ),\n );\n }\n\n async getOwnerInfo(\n context: SolanaTransactionContext,\n ): Promise<Either<Error, HttpSolanaOwnerInfoDataSourceResult>> {\n const { tokenAddress, challenge, createATA } = context;\n\n if (!challenge) {\n return Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: challenge is required\",\n ),\n );\n }\n\n let ownerInfoResult: Either<Error, SolanaSPLOwnerInfo>;\n\n if (tokenAddress) {\n ownerInfoResult = await this.fetchAddressMetadata(\n tokenAddress,\n challenge,\n );\n } else if (createATA?.address && createATA?.mintAddress) {\n ownerInfoResult = await this.computeAddressMetadata(\n createATA.address,\n createATA.mintAddress,\n challenge,\n );\n } else {\n return Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: either tokenAddress or valid createATA must be provided\",\n ),\n );\n }\n\n return ownerInfoResult.chain((ownerInfo) => {\n const tlvDescriptor = hexaStringToBuffer(ownerInfo.signedDescriptor);\n if (!tlvDescriptor) {\n return Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid base64 tlvDescriptor received\",\n ),\n );\n }\n return Right({\n tlvDescriptor,\n });\n });\n }\n}\n"],
5
- "mappings": "qtBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,2CACnCC,EAAkB,oBAClBC,EAAmC,qBACnCC,EAAoC,qBAEpCC,EAA4B,mCAE5BC,EAGO,yCAKPC,EAAoB,iCAQb,IAAMC,EAAN,KAAgE,CACrE,YAEmBC,EACjB,CADiB,YAAAA,EAEjB,GAAI,CAAC,KAAK,OAAO,YACf,MAAM,IAAI,MACR,2EACF,CAEJ,CAEQ,qBAAqBC,EAKE,CAC7B,OAAI,OAAOA,GAAS,UAAYA,IAAS,KAAa,GAEpD,OAAOA,EAAK,cAAiB,UAC7B,OAAOA,EAAK,OAAU,UACtB,OAAOA,EAAK,UAAa,UACzB,OAAOA,EAAK,kBAAqB,QAErC,CAEA,MAAM,qBACJC,EACAC,EAC4C,CAC5C,OAAO,MAAM,EAAAC,QACV,QAA4B,CAC3B,OAAQ,MACR,IAAK,GAAG,KAAK,OAAO,sBAAsB,GAAG,oBAAoBF,CAAY,cAAcC,CAAS,GACpG,QAAS,CACP,CAAC,8BAA4B,EAAG,kBAAkB,EAAAE,QAAQ,OAAO,GACjE,CAAC,4BAA0B,EAAG,KAAK,OAAO,WAC5C,CACF,CAAC,EACA,KAAMC,GACA,KAAK,qBAAqBA,EAAI,IAAI,KAMhC,SAAMA,EAAI,IAAI,KALZ,QACL,IAAI,MACF,8FACF,CACF,CAEH,EACA,MAAM,OACL,QACE,IAAI,MACF,mFACF,CACF,CACF,CACJ,CAEA,MAAM,uBACJC,EACAC,EACAL,EAC4C,CAC5C,OAAO,MAAM,EAAAC,QACV,QAA4B,CAC3B,OAAQ,MACR,IAAK,GAAG,KAAK,OAAO,sBAAsB,GAAG,qCAAqCG,CAAO,IAAIC,CAAW,cAAcL,CAAS,GAC/H,QAAS,CACP,CAAC,8BAA4B,EAAG,kBAAkB,EAAAE,QAAQ,OAAO,GACjE,yBAA0B,KAAK,OAAO,WACxC,CACF,CAAC,EACA,KAAMC,GACA,KAAK,qBAAqBA,EAAI,IAAI,KAMhC,SAAMA,EAAI,IAAI,KALZ,QACL,IAAI,MACF,gGACF,CACF,CAEH,EACA,MAAM,OACL,QACE,IAAI,MACF,qFACF,CACF,CACF,CACJ,CAEA,MAAM,aACJG,EAC6D,CAC7D,KAAM,CAAE,aAAAP,EAAc,UAAAC,EAAW,UAAAO,CAAU,EAAID,EAE/C,GAAI,CAACN,EACH,SAAO,QACL,IAAI,MACF,wEACF,CACF,EAGF,IAAIQ,EAEJ,GAAIT,EACFS,EAAkB,MAAM,KAAK,qBAC3BT,EACAC,CACF,UACSO,GAAW,SAAWA,GAAW,YAC1CC,EAAkB,MAAM,KAAK,uBAC3BD,EAAU,QACVA,EAAU,YACVP,CACF,MAEA,UAAO,QACL,IAAI,MACF,0GACF,CACF,EAGF,OAAOQ,EAAgB,MAAOC,GAAc,CAC1C,MAAMC,KAAgB,sBAAmBD,EAAU,gBAAgB,EACnE,OAAKC,KAOE,SAAM,CACX,cAAAA,CACF,CAAC,KARQ,QACL,IAAI,MACF,wFACF,CACF,CAKJ,CAAC,CACH,CACF,EA1Iad,EAANe,EAAA,IADN,cAAW,EAGPC,EAAA,eAAO,cAAY,MAAM,IAFjBhB",
6
- "names": ["HttpSolanaOwnerInfoDataSource_exports", "__export", "HttpSolanaOwnerInfoDataSource", "__toCommonJS", "import_device_management_kit", "import_axios", "import_inversify", "import_purify_ts", "import_configTypes", "import_HttpHeaders", "import_package", "HttpSolanaOwnerInfoDataSource", "config", "data", "tokenAddress", "challenge", "axios", "PACKAGE", "res", "address", "mintAddress", "context", "createATA", "ownerInfoResult", "ownerInfo", "tlvDescriptor", "__decorateClass", "__decorateParam"]
4
+ "sourcesContent": ["import {\n DmkNetworkClient,\n hexaStringToBuffer,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport type { ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { networkTypes } from \"@/network/di/networkTypes\";\nimport {\n SolanaSPLOwnerInfo,\n type SolanaTransactionContext,\n} from \"@/solana/domain/solanaContextTypes\";\n\nimport {\n HttpSolanaOwnerInfoDataSourceResult,\n SolanaDataSource,\n} from \"./SolanaDataSource\";\n\n@injectable()\nexport class HttpSolanaOwnerInfoDataSource implements SolanaDataSource {\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n @inject(networkTypes.NetworkClient)\n private readonly http: DmkNetworkClient,\n ) {\n if (!this.config.originToken) {\n throw new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: origin token is required\",\n );\n }\n }\n\n private isSolanaSPLOwnerInfo(data: {\n tokenAccount?: unknown;\n owner?: unknown;\n contract?: unknown;\n signedDescriptor?: unknown;\n }): data is SolanaSPLOwnerInfo {\n if (typeof data !== \"object\" || data === null) return false;\n return (\n typeof data.tokenAccount === \"string\" &&\n typeof data.owner === \"string\" &&\n typeof data.contract === \"string\" &&\n typeof data.signedDescriptor === \"string\"\n );\n }\n\n async fetchAddressMetadata(\n tokenAddress: string,\n challenge: string,\n ): Promise<Either<Error, SolanaSPLOwnerInfo>> {\n try {\n const data = (await this.http.get(\n `${this.config.metadataServiceDomain.url}/v2/solana/owner/${tokenAddress}`,\n { params: { challenge } },\n )) as SolanaSPLOwnerInfo;\n if (!this.isSolanaSPLOwnerInfo(data))\n return Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid fetchAddressMetadata response shape\",\n ),\n );\n return Right(data);\n } catch {\n return Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: Failed to fetch address metadata\",\n ),\n );\n }\n }\n\n async computeAddressMetadata(\n address: string,\n mintAddress: string,\n challenge: string,\n ): Promise<Either<Error, SolanaSPLOwnerInfo>> {\n try {\n const data = (await this.http.get(\n `${this.config.metadataServiceDomain.url}/v2/solana/computed-token-account/${address}/${mintAddress}`,\n { params: { challenge } },\n )) as SolanaSPLOwnerInfo;\n if (!this.isSolanaSPLOwnerInfo(data))\n return Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid computeAddressMetadata response shape\",\n ),\n );\n return Right(data);\n } catch {\n return Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: Failed to compute address metadata\",\n ),\n );\n }\n }\n\n async getOwnerInfo(\n context: SolanaTransactionContext,\n ): Promise<Either<Error, HttpSolanaOwnerInfoDataSourceResult>> {\n const { tokenAddress, challenge, createATA } = context;\n\n if (!challenge) {\n return Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: challenge is required\",\n ),\n );\n }\n\n let ownerInfoResult: Either<Error, SolanaSPLOwnerInfo>;\n\n if (tokenAddress) {\n ownerInfoResult = await this.fetchAddressMetadata(\n tokenAddress,\n challenge,\n );\n } else if (createATA?.address && createATA?.mintAddress) {\n ownerInfoResult = await this.computeAddressMetadata(\n createATA.address,\n createATA.mintAddress,\n challenge,\n );\n } else {\n return Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: either tokenAddress or valid createATA must be provided\",\n ),\n );\n }\n\n return ownerInfoResult.chain((ownerInfo) => {\n const tlvDescriptor = hexaStringToBuffer(ownerInfo.signedDescriptor);\n if (!tlvDescriptor) {\n return Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid base64 tlvDescriptor received\",\n ),\n );\n }\n return Right({\n tlvDescriptor,\n });\n });\n }\n}\n"],
5
+ "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAGO,2CACPC,EAAmC,qBACnCC,EAAoC,qBAEpCC,EAA4B,mCAE5BC,EAA6B,qCAYtB,IAAMC,EAAN,KAAgE,CACrE,YAEmBC,EAEAC,EACjB,CAHiB,YAAAD,EAEA,UAAAC,EAEjB,GAAI,CAAC,KAAK,OAAO,YACf,MAAM,IAAI,MACR,2EACF,CAEJ,CAEQ,qBAAqBC,EAKE,CAC7B,OAAI,OAAOA,GAAS,UAAYA,IAAS,KAAa,GAEpD,OAAOA,EAAK,cAAiB,UAC7B,OAAOA,EAAK,OAAU,UACtB,OAAOA,EAAK,UAAa,UACzB,OAAOA,EAAK,kBAAqB,QAErC,CAEA,MAAM,qBACJC,EACAC,EAC4C,CAC5C,GAAI,CACF,MAAMF,EAAQ,MAAM,KAAK,KAAK,IAC5B,GAAG,KAAK,OAAO,sBAAsB,GAAG,oBAAoBC,CAAY,GACxE,CAAE,OAAQ,CAAE,UAAAC,CAAU,CAAE,CAC1B,EACA,OAAK,KAAK,qBAAqBF,CAAI,KAM5B,SAAMA,CAAI,KALR,QACL,IAAI,MACF,8FACF,CACF,CAEJ,MAAQ,CACN,SAAO,QACL,IAAI,MACF,mFACF,CACF,CACF,CACF,CAEA,MAAM,uBACJG,EACAC,EACAF,EAC4C,CAC5C,GAAI,CACF,MAAMF,EAAQ,MAAM,KAAK,KAAK,IAC5B,GAAG,KAAK,OAAO,sBAAsB,GAAG,qCAAqCG,CAAO,IAAIC,CAAW,GACnG,CAAE,OAAQ,CAAE,UAAAF,CAAU,CAAE,CAC1B,EACA,OAAK,KAAK,qBAAqBF,CAAI,KAM5B,SAAMA,CAAI,KALR,QACL,IAAI,MACF,gGACF,CACF,CAEJ,MAAQ,CACN,SAAO,QACL,IAAI,MACF,qFACF,CACF,CACF,CACF,CAEA,MAAM,aACJK,EAC6D,CAC7D,KAAM,CAAE,aAAAJ,EAAc,UAAAC,EAAW,UAAAI,CAAU,EAAID,EAE/C,GAAI,CAACH,EACH,SAAO,QACL,IAAI,MACF,wEACF,CACF,EAGF,IAAIK,EAEJ,GAAIN,EACFM,EAAkB,MAAM,KAAK,qBAC3BN,EACAC,CACF,UACSI,GAAW,SAAWA,GAAW,YAC1CC,EAAkB,MAAM,KAAK,uBAC3BD,EAAU,QACVA,EAAU,YACVJ,CACF,MAEA,UAAO,QACL,IAAI,MACF,0GACF,CACF,EAGF,OAAOK,EAAgB,MAAOC,GAAc,CAC1C,MAAMC,KAAgB,sBAAmBD,EAAU,gBAAgB,EACnE,OAAKC,KAOE,SAAM,CACX,cAAAA,CACF,CAAC,KARQ,QACL,IAAI,MACF,wFACF,CACF,CAKJ,CAAC,CACH,CACF,EAhIaZ,EAANa,EAAA,IADN,cAAW,EAGPC,EAAA,eAAO,cAAY,MAAM,GAEzBA,EAAA,eAAO,eAAa,aAAa,IAJzBd",
6
+ "names": ["HttpSolanaOwnerInfoDataSource_exports", "__export", "HttpSolanaOwnerInfoDataSource", "__toCommonJS", "import_device_management_kit", "import_inversify", "import_purify_ts", "import_configTypes", "import_networkTypes", "HttpSolanaOwnerInfoDataSource", "config", "http", "data", "tokenAddress", "challenge", "address", "mintAddress", "context", "createATA", "ownerInfoResult", "ownerInfo", "tlvDescriptor", "__decorateClass", "__decorateParam"]
7
7
  }