@ledgerhq/context-module 1.16.0 → 1.17.0

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 (286) 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/nft/data/HttpNftDataSource.js +1 -1
  49. package/lib/cjs/src/nft/data/HttpNftDataSource.js.map +3 -3
  50. package/lib/cjs/src/nft/data/HttpNftDataSource.test.js +1 -1
  51. package/lib/cjs/src/nft/data/HttpNftDataSource.test.js.map +3 -3
  52. package/lib/cjs/src/pki/data/HttpPkiCertificateDataSource.js +1 -1
  53. package/lib/cjs/src/pki/data/HttpPkiCertificateDataSource.js.map +3 -3
  54. package/lib/cjs/src/pki/data/HttpPkiCertificateDataSource.test.js +1 -1
  55. package/lib/cjs/src/pki/data/HttpPkiCertificateDataSource.test.js.map +3 -3
  56. package/lib/cjs/src/proxy/data/HttpProxyDataSource.js +1 -1
  57. package/lib/cjs/src/proxy/data/HttpProxyDataSource.js.map +3 -3
  58. package/lib/cjs/src/proxy/data/HttpProxyDataSource.test.js +1 -1
  59. package/lib/cjs/src/proxy/data/HttpProxyDataSource.test.js.map +3 -3
  60. package/lib/cjs/src/proxy/data/HttpSafeProxyDataSource.js +1 -1
  61. package/lib/cjs/src/proxy/data/HttpSafeProxyDataSource.js.map +3 -3
  62. package/lib/cjs/src/proxy/data/HttpSafeProxyDataSource.test.js +1 -1
  63. package/lib/cjs/src/proxy/data/HttpSafeProxyDataSource.test.js.map +3 -3
  64. package/lib/cjs/src/proxy/di/proxyModuleFactory.test.js +1 -1
  65. package/lib/cjs/src/proxy/di/proxyModuleFactory.test.js.map +3 -3
  66. package/lib/cjs/src/reporter/data/BlindSigningReporterDatasource.js +1 -1
  67. package/lib/cjs/src/reporter/data/BlindSigningReporterDatasource.js.map +1 -1
  68. package/lib/cjs/src/reporter/data/HttpBlindSigningReporterDatasource.js +1 -1
  69. package/lib/cjs/src/reporter/data/HttpBlindSigningReporterDatasource.js.map +3 -3
  70. package/lib/cjs/src/reporter/data/HttpBlindSigningReporterDatasource.test.js +1 -1
  71. package/lib/cjs/src/reporter/data/HttpBlindSigningReporterDatasource.test.js.map +3 -3
  72. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.js +1 -1
  73. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.js.map +3 -3
  74. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.test.js +1 -1
  75. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.test.js.map +3 -3
  76. package/lib/cjs/src/shared/model/ClearSignContext.js +1 -1
  77. package/lib/cjs/src/shared/model/ClearSignContext.js.map +2 -2
  78. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.js +1 -1
  79. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.js.map +3 -3
  80. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js +1 -1
  81. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js.map +3 -3
  82. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.js +1 -1
  83. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.js.map +3 -3
  84. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js +1 -1
  85. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js.map +3 -3
  86. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.js +1 -1
  87. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.js.map +3 -3
  88. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.test.js +6 -6
  89. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.test.js.map +3 -3
  90. package/lib/cjs/src/token/data/HttpTokenDataSource.js +1 -1
  91. package/lib/cjs/src/token/data/HttpTokenDataSource.js.map +3 -3
  92. package/lib/cjs/src/token/data/HttpTokenDataSource.test.js +1 -1
  93. package/lib/cjs/src/token/data/HttpTokenDataSource.test.js.map +3 -3
  94. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.js +1 -1
  95. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.js.map +3 -3
  96. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.test.js +1 -1
  97. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.test.js.map +3 -3
  98. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.js +1 -1
  99. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.js.map +3 -3
  100. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js +1 -1
  101. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js.map +3 -3
  102. package/lib/cjs/src/trusted-name/data/HttpTrustedNameDataSource.js +1 -1
  103. package/lib/cjs/src/trusted-name/data/HttpTrustedNameDataSource.js.map +3 -3
  104. package/lib/cjs/src/trusted-name/data/HttpTrustedNameDataSource.test.js +1 -1
  105. package/lib/cjs/src/trusted-name/data/HttpTrustedNameDataSource.test.js.map +3 -3
  106. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.js +1 -1
  107. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.js.map +3 -3
  108. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.test.js +1 -1
  109. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.test.js.map +3 -3
  110. package/lib/esm/package.json +2 -3
  111. package/lib/esm/src/DefaultContextModule.js +1 -1
  112. package/lib/esm/src/DefaultContextModule.js.map +3 -3
  113. package/lib/esm/src/account-ownership/data/AccountOwnershipDataSource.js +1 -0
  114. package/lib/esm/src/account-ownership/data/AccountOwnershipDataSource.js.map +7 -0
  115. package/lib/esm/src/account-ownership/data/AccountOwnershipError.js +2 -0
  116. package/lib/esm/src/account-ownership/data/AccountOwnershipError.js.map +7 -0
  117. package/lib/esm/src/account-ownership/data/HttpAccountOwnershipDataSource.js +2 -0
  118. package/lib/esm/src/account-ownership/data/HttpAccountOwnershipDataSource.js.map +7 -0
  119. package/lib/esm/src/account-ownership/data/HttpAccountOwnershipDataSource.test.js +2 -0
  120. package/lib/esm/src/account-ownership/data/HttpAccountOwnershipDataSource.test.js.map +7 -0
  121. package/lib/esm/src/account-ownership/data/dto/AccountOwnershipDto.js +1 -0
  122. package/lib/esm/src/account-ownership/data/dto/AccountOwnershipDto.js.map +7 -0
  123. package/lib/esm/src/account-ownership/di/accountOwnershipModuleFactory.js +2 -0
  124. package/lib/esm/src/account-ownership/di/accountOwnershipModuleFactory.js.map +7 -0
  125. package/lib/esm/src/account-ownership/di/accountOwnershipTypes.js +2 -0
  126. package/lib/esm/src/account-ownership/di/accountOwnershipTypes.js.map +7 -0
  127. package/lib/esm/src/account-ownership/domain/AccountOwnershipContextLoader.js +2 -0
  128. package/lib/esm/src/account-ownership/domain/AccountOwnershipContextLoader.js.map +7 -0
  129. package/lib/esm/src/account-ownership/domain/AccountOwnershipContextLoader.test.js +2 -0
  130. package/lib/esm/src/account-ownership/domain/AccountOwnershipContextLoader.test.js.map +7 -0
  131. package/lib/esm/src/calldata/data/HttpCalldataDescriptorDataSource.js +1 -1
  132. package/lib/esm/src/calldata/data/HttpCalldataDescriptorDataSource.js.map +3 -3
  133. package/lib/esm/src/calldata/data/HttpCalldataDescriptorDataSource.test.js +1 -1
  134. package/lib/esm/src/calldata/data/HttpCalldataDescriptorDataSource.test.js.map +3 -3
  135. package/lib/esm/src/calldata/di/calldataModuleFactory.js +1 -1
  136. package/lib/esm/src/calldata/di/calldataModuleFactory.js.map +3 -3
  137. package/lib/esm/src/di.js +1 -1
  138. package/lib/esm/src/di.js.map +3 -3
  139. package/lib/esm/src/dynamic-network/data/HttpDynamicNetworkDataSource.js +1 -1
  140. package/lib/esm/src/dynamic-network/data/HttpDynamicNetworkDataSource.js.map +3 -3
  141. package/lib/esm/src/dynamic-network/data/HttpDynamicNetworkDataSource.test.js +1 -1
  142. package/lib/esm/src/dynamic-network/data/HttpDynamicNetworkDataSource.test.js.map +3 -3
  143. package/lib/esm/src/external-plugin/data/HttpExternalPluginDataSource.js +1 -1
  144. package/lib/esm/src/external-plugin/data/HttpExternalPluginDataSource.js.map +3 -3
  145. package/lib/esm/src/external-plugin/data/HttpExternalPluginDataSource.test.js +1 -1
  146. package/lib/esm/src/external-plugin/data/HttpExternalPluginDataSource.test.js.map +3 -3
  147. package/lib/esm/src/gated-signing/data/HttpGatedDescriptorDataSource.js +1 -1
  148. package/lib/esm/src/gated-signing/data/HttpGatedDescriptorDataSource.js.map +3 -3
  149. package/lib/esm/src/gated-signing/data/HttpGatedDescriptorDataSource.test.js +1 -1
  150. package/lib/esm/src/gated-signing/data/HttpGatedDescriptorDataSource.test.js.map +3 -3
  151. package/lib/esm/src/index.js +1 -1
  152. package/lib/esm/src/index.js.map +2 -2
  153. package/lib/esm/src/network/di/networkModuleFactory.js +2 -0
  154. package/lib/esm/src/network/di/networkModuleFactory.js.map +7 -0
  155. package/lib/esm/src/network/di/networkTypes.js +2 -0
  156. package/lib/esm/src/network/di/networkTypes.js.map +7 -0
  157. package/lib/esm/src/nft/data/HttpNftDataSource.js +1 -1
  158. package/lib/esm/src/nft/data/HttpNftDataSource.js.map +3 -3
  159. package/lib/esm/src/nft/data/HttpNftDataSource.test.js +1 -1
  160. package/lib/esm/src/nft/data/HttpNftDataSource.test.js.map +3 -3
  161. package/lib/esm/src/pki/data/HttpPkiCertificateDataSource.js +1 -1
  162. package/lib/esm/src/pki/data/HttpPkiCertificateDataSource.js.map +3 -3
  163. package/lib/esm/src/pki/data/HttpPkiCertificateDataSource.test.js +1 -1
  164. package/lib/esm/src/pki/data/HttpPkiCertificateDataSource.test.js.map +3 -3
  165. package/lib/esm/src/proxy/data/HttpProxyDataSource.js +1 -1
  166. package/lib/esm/src/proxy/data/HttpProxyDataSource.js.map +3 -3
  167. package/lib/esm/src/proxy/data/HttpProxyDataSource.test.js +1 -1
  168. package/lib/esm/src/proxy/data/HttpProxyDataSource.test.js.map +3 -3
  169. package/lib/esm/src/proxy/data/HttpSafeProxyDataSource.js +1 -1
  170. package/lib/esm/src/proxy/data/HttpSafeProxyDataSource.js.map +3 -3
  171. package/lib/esm/src/proxy/data/HttpSafeProxyDataSource.test.js +1 -1
  172. package/lib/esm/src/proxy/data/HttpSafeProxyDataSource.test.js.map +3 -3
  173. package/lib/esm/src/proxy/di/proxyModuleFactory.test.js +1 -1
  174. package/lib/esm/src/proxy/di/proxyModuleFactory.test.js.map +3 -3
  175. package/lib/esm/src/reporter/data/HttpBlindSigningReporterDatasource.js +1 -1
  176. package/lib/esm/src/reporter/data/HttpBlindSigningReporterDatasource.js.map +3 -3
  177. package/lib/esm/src/reporter/data/HttpBlindSigningReporterDatasource.test.js +1 -1
  178. package/lib/esm/src/reporter/data/HttpBlindSigningReporterDatasource.test.js.map +3 -3
  179. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.js +1 -1
  180. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.js.map +3 -3
  181. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.test.js +1 -1
  182. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.test.js.map +3 -3
  183. package/lib/esm/src/shared/model/ClearSignContext.js +1 -1
  184. package/lib/esm/src/shared/model/ClearSignContext.js.map +2 -2
  185. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.js +1 -1
  186. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.js.map +3 -3
  187. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js +1 -1
  188. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js.map +3 -3
  189. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.js +1 -1
  190. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.js.map +3 -3
  191. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js +1 -1
  192. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js.map +3 -3
  193. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.js +1 -1
  194. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.js.map +3 -3
  195. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.test.js +6 -6
  196. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.test.js.map +3 -3
  197. package/lib/esm/src/token/data/HttpTokenDataSource.js +1 -1
  198. package/lib/esm/src/token/data/HttpTokenDataSource.js.map +3 -3
  199. package/lib/esm/src/token/data/HttpTokenDataSource.test.js +1 -1
  200. package/lib/esm/src/token/data/HttpTokenDataSource.test.js.map +3 -3
  201. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.js +1 -1
  202. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.js.map +3 -3
  203. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.test.js +1 -1
  204. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.test.js.map +3 -3
  205. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.js +1 -1
  206. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.js.map +3 -3
  207. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js +1 -1
  208. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js.map +3 -3
  209. package/lib/esm/src/trusted-name/data/HttpTrustedNameDataSource.js +1 -1
  210. package/lib/esm/src/trusted-name/data/HttpTrustedNameDataSource.js.map +3 -3
  211. package/lib/esm/src/trusted-name/data/HttpTrustedNameDataSource.test.js +1 -1
  212. package/lib/esm/src/trusted-name/data/HttpTrustedNameDataSource.test.js.map +3 -3
  213. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.js +1 -1
  214. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.js.map +3 -3
  215. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.test.js +1 -1
  216. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.test.js.map +3 -3
  217. package/lib/types/src/DefaultContextModule.d.ts.map +1 -1
  218. package/lib/types/src/account-ownership/data/AccountOwnershipDataSource.d.ts +17 -0
  219. package/lib/types/src/account-ownership/data/AccountOwnershipDataSource.d.ts.map +1 -0
  220. package/lib/types/src/account-ownership/data/AccountOwnershipError.d.ts +17 -0
  221. package/lib/types/src/account-ownership/data/AccountOwnershipError.d.ts.map +1 -0
  222. package/lib/types/src/account-ownership/data/HttpAccountOwnershipDataSource.d.ts +30 -0
  223. package/lib/types/src/account-ownership/data/HttpAccountOwnershipDataSource.d.ts.map +1 -0
  224. package/lib/types/src/account-ownership/data/HttpAccountOwnershipDataSource.test.d.ts +2 -0
  225. package/lib/types/src/account-ownership/data/HttpAccountOwnershipDataSource.test.d.ts.map +1 -0
  226. package/lib/types/src/account-ownership/data/dto/AccountOwnershipDto.d.ts +6 -0
  227. package/lib/types/src/account-ownership/data/dto/AccountOwnershipDto.d.ts.map +1 -0
  228. package/lib/types/src/account-ownership/di/accountOwnershipModuleFactory.d.ts +3 -0
  229. package/lib/types/src/account-ownership/di/accountOwnershipModuleFactory.d.ts.map +1 -0
  230. package/lib/types/src/account-ownership/di/accountOwnershipTypes.d.ts +5 -0
  231. package/lib/types/src/account-ownership/di/accountOwnershipTypes.d.ts.map +1 -0
  232. package/lib/types/src/account-ownership/domain/AccountOwnershipContextLoader.d.ts +20 -0
  233. package/lib/types/src/account-ownership/domain/AccountOwnershipContextLoader.d.ts.map +1 -0
  234. package/lib/types/src/account-ownership/domain/AccountOwnershipContextLoader.test.d.ts +2 -0
  235. package/lib/types/src/account-ownership/domain/AccountOwnershipContextLoader.test.d.ts.map +1 -0
  236. package/lib/types/src/calldata/data/HttpCalldataDescriptorDataSource.d.ts +3 -1
  237. package/lib/types/src/calldata/data/HttpCalldataDescriptorDataSource.d.ts.map +1 -1
  238. package/lib/types/src/calldata/di/calldataModuleFactory.d.ts.map +1 -1
  239. package/lib/types/src/di.d.ts.map +1 -1
  240. package/lib/types/src/dynamic-network/data/HttpDynamicNetworkDataSource.d.ts +3 -1
  241. package/lib/types/src/dynamic-network/data/HttpDynamicNetworkDataSource.d.ts.map +1 -1
  242. package/lib/types/src/external-plugin/data/HttpExternalPluginDataSource.d.ts +3 -1
  243. package/lib/types/src/external-plugin/data/HttpExternalPluginDataSource.d.ts.map +1 -1
  244. package/lib/types/src/gated-signing/data/HttpGatedDescriptorDataSource.d.ts +3 -1
  245. package/lib/types/src/gated-signing/data/HttpGatedDescriptorDataSource.d.ts.map +1 -1
  246. package/lib/types/src/index.d.ts +4 -0
  247. package/lib/types/src/index.d.ts.map +1 -1
  248. package/lib/types/src/network/di/networkModuleFactory.d.ts +4 -0
  249. package/lib/types/src/network/di/networkModuleFactory.d.ts.map +1 -0
  250. package/lib/types/src/network/di/networkTypes.d.ts +4 -0
  251. package/lib/types/src/network/di/networkTypes.d.ts.map +1 -0
  252. package/lib/types/src/nft/data/HttpNftDataSource.d.ts +3 -1
  253. package/lib/types/src/nft/data/HttpNftDataSource.d.ts.map +1 -1
  254. package/lib/types/src/pki/data/HttpPkiCertificateDataSource.d.ts +4 -1
  255. package/lib/types/src/pki/data/HttpPkiCertificateDataSource.d.ts.map +1 -1
  256. package/lib/types/src/proxy/data/HttpProxyDataSource.d.ts +3 -1
  257. package/lib/types/src/proxy/data/HttpProxyDataSource.d.ts.map +1 -1
  258. package/lib/types/src/proxy/data/HttpSafeProxyDataSource.d.ts +3 -1
  259. package/lib/types/src/proxy/data/HttpSafeProxyDataSource.d.ts.map +1 -1
  260. package/lib/types/src/reporter/data/BlindSigningReporterDatasource.d.ts +7 -1
  261. package/lib/types/src/reporter/data/BlindSigningReporterDatasource.d.ts.map +1 -1
  262. package/lib/types/src/reporter/data/HttpBlindSigningReporterDatasource.d.ts +3 -1
  263. package/lib/types/src/reporter/data/HttpBlindSigningReporterDatasource.d.ts.map +1 -1
  264. package/lib/types/src/safe/data/HttpSafeAccountDataSource.d.ts +3 -1
  265. package/lib/types/src/safe/data/HttpSafeAccountDataSource.d.ts.map +1 -1
  266. package/lib/types/src/shared/model/ClearSignContext.d.ts +2 -1
  267. package/lib/types/src/shared/model/ClearSignContext.d.ts.map +1 -1
  268. package/lib/types/src/solana/data/HttpSolanaOwnerInfoDataSource.d.ts +3 -1
  269. package/lib/types/src/solana/data/HttpSolanaOwnerInfoDataSource.d.ts.map +1 -1
  270. package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.d.ts +3 -2
  271. package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.d.ts.map +1 -1
  272. package/lib/types/src/solanaToken/data/HttpSolanaTokenDataSource.d.ts +3 -1
  273. package/lib/types/src/solanaToken/data/HttpSolanaTokenDataSource.d.ts.map +1 -1
  274. package/lib/types/src/token/data/HttpTokenDataSource.d.ts +3 -1
  275. package/lib/types/src/token/data/HttpTokenDataSource.d.ts.map +1 -1
  276. package/lib/types/src/transaction-check/data/HttpTransactionCheckDataSource.d.ts +3 -1
  277. package/lib/types/src/transaction-check/data/HttpTransactionCheckDataSource.d.ts.map +1 -1
  278. package/lib/types/src/transaction-check/data/HttpTypedDataCheckDataSource.d.ts +3 -1
  279. package/lib/types/src/transaction-check/data/HttpTypedDataCheckDataSource.d.ts.map +1 -1
  280. package/lib/types/src/trusted-name/data/HttpTrustedNameDataSource.d.ts +3 -1
  281. package/lib/types/src/trusted-name/data/HttpTrustedNameDataSource.d.ts.map +1 -1
  282. package/lib/types/src/typed-data/data/HttpTypedDataDataSource.d.ts +3 -1
  283. package/lib/types/src/typed-data/data/HttpTypedDataDataSource.d.ts.map +1 -1
  284. package/lib/types/src/typed-data/data/HttpTypedDataDataSource.test.d.ts.map +1 -1
  285. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  286. package/package.json +5 -6
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/DefaultContextModule.ts"],
4
- "sourcesContent": ["import { type Container } from \"inversify\";\nimport { Left } from \"purify-ts\";\n\nimport { calldataTypes } from \"@/calldata/di/calldataTypes\";\nimport { dynamicNetworkTypes } from \"@/dynamic-network/di/dynamicNetworkTypes\";\nimport { type BlindSigningReportParams } from \"@/reporter/data/BlindSigningReporterDatasource\";\nimport { reporterTypes } from \"@/reporter/di/reporterTypes\";\nimport { type BlindSigningReporter } from \"@/reporter/domain/BlindSigningReporter\";\nimport type { TypedDataClearSignContext } from \"@/shared/model/TypedDataClearSignContext\";\nimport type { TypedDataContext } from \"@/shared/model/TypedDataContext\";\nimport { trustedNameTypes } from \"@/trusted-name/di/trustedNameTypes\";\n\nimport {\n type ContextModuleLoaderConfig,\n type ContextModuleServiceConfig,\n} from \"./config/model/ContextModuleConfig\";\nimport { externalPluginTypes } from \"./external-plugin/di/externalPluginTypes\";\nimport { gatedSigningTypes } from \"./gated-signing/di/gatedSigningTypes\";\nimport { nftTypes } from \"./nft/di/nftTypes\";\nimport { proxyTypes } from \"./proxy/di/proxyTypes\";\nimport { safeTypes } from \"./safe/di/safeTypes\";\nimport { type ContextFieldLoader } from \"./shared/domain/ContextFieldLoader\";\nimport { type ContextLoader } from \"./shared/domain/ContextLoader\";\nimport {\n type ClearSignContext,\n ClearSignContextType,\n} from \"./shared/model/ClearSignContext\";\nimport { type SolanaTransactionContext } from \"./shared/model/SolanaTransactionContext\";\nimport { solanaContextTypes } from \"./solana/di/solanaContextTypes\";\nimport { type SolanaContextLoader } from \"./solana/domain/SolanaContextLoader\";\nimport { type SolanaTransactionContextResult } from \"./solana/domain/solanaContextTypes\";\nimport { tokenTypes } from \"./token/di/tokenTypes\";\nimport { transactionCheckTypes } from \"./transaction-check/di/transactionCheckTypes\";\nimport { typedDataTypes } from \"./typed-data/di/typedDataTypes\";\nimport type { TypedDataContextLoader } from \"./typed-data/domain/TypedDataContextLoader\";\nimport { type ContextModule } from \"./ContextModule\";\nimport { makeContainer } from \"./di\";\n\nexport class DefaultContextModule implements ContextModule {\n private _container: Container;\n private _loaders: ContextLoader<unknown>[];\n private _typedDataLoader: TypedDataContextLoader;\n private _solanaLoader: SolanaContextLoader;\n private _fieldLoaders: ContextFieldLoader<unknown>[];\n private _blindSigningReporter: BlindSigningReporter;\n\n constructor(args: ContextModuleServiceConfig & ContextModuleLoaderConfig) {\n this._container = makeContainer({ config: args });\n\n this._loaders = args.defaultLoaders ? this._getDefaultLoaders() : [];\n this._loaders.push(...args.customLoaders);\n\n this._fieldLoaders = args.defaultFieldLoaders\n ? this._getDefaultFieldLoaders()\n : [];\n this._fieldLoaders.push(...args.customFieldLoaders);\n\n this._typedDataLoader =\n args.customTypedDataLoader ?? this._getDefaultTypedDataLoader();\n this._solanaLoader = args.customSolanaLoader ?? this._getSolanaLoader();\n this._blindSigningReporter =\n args.customBlindSigningReporter ?? this._getBlindSigningReporter();\n }\n\n private _getDefaultFieldLoaders(): ContextFieldLoader[] {\n return [\n this._container.get<ContextFieldLoader>(nftTypes.NftContextFieldLoader),\n this._container.get<ContextFieldLoader>(\n tokenTypes.TokenContextFieldLoader,\n ),\n this._container.get<ContextFieldLoader>(\n trustedNameTypes.TrustedNameContextFieldLoader,\n ),\n this._container.get<ContextFieldLoader>(\n proxyTypes.ProxyContextFieldLoader,\n ),\n ];\n }\n\n private _getDefaultLoaders(): ContextLoader<unknown>[] {\n return [\n this._container.get<ContextLoader>(\n externalPluginTypes.ExternalPluginContextLoader,\n ),\n this._container.get<ContextLoader>(\n trustedNameTypes.TrustedNameContextLoader,\n ),\n this._container.get<ContextLoader>(nftTypes.NftContextLoader),\n this._container.get<ContextLoader>(tokenTypes.TokenContextLoader),\n this._container.get<ContextLoader>(calldataTypes.CalldataContextLoader),\n this._container.get<ContextLoader>(\n dynamicNetworkTypes.DynamicNetworkContextLoader,\n ),\n this._container.get<ContextLoader>(safeTypes.SafeAddressLoader),\n this._container.get<ContextLoader>(\n gatedSigningTypes.GatedSigningContextLoader,\n ),\n this._container.get<ContextLoader>(\n gatedSigningTypes.GatedSigningTypedDataContextLoader,\n ),\n this._container.get<ContextLoader>(\n transactionCheckTypes.TransactionCheckContextLoader,\n ),\n this._container.get<ContextLoader>(\n transactionCheckTypes.TypedDataCheckContextLoader,\n ),\n ];\n }\n\n private _getDefaultTypedDataLoader(): TypedDataContextLoader {\n return this._container.get<TypedDataContextLoader>(\n typedDataTypes.TypedDataContextLoader,\n );\n }\n\n private _getBlindSigningReporter(): BlindSigningReporter {\n return this._container.get<BlindSigningReporter>(\n reporterTypes.BlindSigningReporter,\n );\n }\n\n private _getSolanaLoader(): SolanaContextLoader {\n try {\n return this._container.get<SolanaContextLoader>(\n solanaContextTypes.SolanaContextLoader,\n );\n } catch {\n return {\n load: async (_ctx) =>\n Left(\n new Error(\n \"[ContextModule] - DefaultContextModule: no SolanaContextLoader bound\",\n ),\n ),\n };\n }\n }\n\n public async getContexts(\n input: unknown,\n expectedTypes?: ClearSignContextType[],\n ): Promise<ClearSignContext[]> {\n const allContextTypes = Object.values(ClearSignContextType);\n const loaders = this._loaders.filter((l) =>\n l.canHandle(input, expectedTypes ?? allContextTypes),\n );\n const promises = loaders.map((fetcher) => fetcher.load(input));\n const responses = await Promise.all(promises);\n return responses.flat();\n }\n\n public async getFieldContext<TInput>(\n field: TInput,\n expectedType: ClearSignContextType,\n ): Promise<ClearSignContext> {\n const loaders = this._fieldLoaders.filter((l) =>\n l.canHandle(field, expectedType),\n );\n if (loaders.length === 0) {\n return Promise.resolve({\n type: ClearSignContextType.ERROR,\n error: new Error(\n `Loader not found for field: ${field} and expected type: ${expectedType}`,\n ),\n });\n }\n\n for (const loader of loaders) {\n const context = await loader.loadField(field);\n if (context.type !== ClearSignContextType.ERROR) {\n return context;\n }\n }\n\n return {\n type: ClearSignContextType.ERROR,\n error: new Error(\n `Loader not found for field: ${field} and expected type: ${expectedType}`,\n ),\n };\n }\n\n public async getTypedDataFilters(\n typedData: TypedDataContext,\n ): Promise<TypedDataClearSignContext> {\n return this._typedDataLoader.load(typedData);\n }\n\n public async getSolanaContext(\n transactionContext: SolanaTransactionContext,\n ): Promise<SolanaTransactionContextResult> {\n return await this._solanaLoader.load(transactionContext);\n }\n\n public async report(params: BlindSigningReportParams): Promise<void> {\n await this._blindSigningReporter.report(params);\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["Left", "calldataTypes", "dynamicNetworkTypes", "reporterTypes", "trustedNameTypes", "externalPluginTypes", "gatedSigningTypes", "nftTypes", "proxyTypes", "safeTypes", "ClearSignContextType", "solanaContextTypes", "tokenTypes", "transactionCheckTypes", "typedDataTypes", "makeContainer", "DefaultContextModule", "args", "_ctx", "input", "expectedTypes", "allContextTypes", "promises", "l", "fetcher", "field", "expectedType", "loaders", "loader", "context", "typedData", "transactionContext", "params"]
4
+ "sourcesContent": ["import { type Container } from \"inversify\";\nimport { Left } from \"purify-ts\";\n\nimport { accountOwnershipTypes } from \"@/account-ownership/di/accountOwnershipTypes\";\nimport { calldataTypes } from \"@/calldata/di/calldataTypes\";\nimport { dynamicNetworkTypes } from \"@/dynamic-network/di/dynamicNetworkTypes\";\nimport { type BlindSigningReportParams } from \"@/reporter/data/BlindSigningReporterDatasource\";\nimport { reporterTypes } from \"@/reporter/di/reporterTypes\";\nimport { type BlindSigningReporter } from \"@/reporter/domain/BlindSigningReporter\";\nimport type { TypedDataClearSignContext } from \"@/shared/model/TypedDataClearSignContext\";\nimport type { TypedDataContext } from \"@/shared/model/TypedDataContext\";\nimport { trustedNameTypes } from \"@/trusted-name/di/trustedNameTypes\";\n\nimport {\n type ContextModuleLoaderConfig,\n type ContextModuleServiceConfig,\n} from \"./config/model/ContextModuleConfig\";\nimport { externalPluginTypes } from \"./external-plugin/di/externalPluginTypes\";\nimport { gatedSigningTypes } from \"./gated-signing/di/gatedSigningTypes\";\nimport { nftTypes } from \"./nft/di/nftTypes\";\nimport { proxyTypes } from \"./proxy/di/proxyTypes\";\nimport { safeTypes } from \"./safe/di/safeTypes\";\nimport { type ContextFieldLoader } from \"./shared/domain/ContextFieldLoader\";\nimport { type ContextLoader } from \"./shared/domain/ContextLoader\";\nimport {\n type ClearSignContext,\n ClearSignContextType,\n} from \"./shared/model/ClearSignContext\";\nimport { type SolanaTransactionContext } from \"./shared/model/SolanaTransactionContext\";\nimport { solanaContextTypes } from \"./solana/di/solanaContextTypes\";\nimport { type SolanaContextLoader } from \"./solana/domain/SolanaContextLoader\";\nimport { type SolanaTransactionContextResult } from \"./solana/domain/solanaContextTypes\";\nimport { tokenTypes } from \"./token/di/tokenTypes\";\nimport { transactionCheckTypes } from \"./transaction-check/di/transactionCheckTypes\";\nimport { typedDataTypes } from \"./typed-data/di/typedDataTypes\";\nimport type { TypedDataContextLoader } from \"./typed-data/domain/TypedDataContextLoader\";\nimport { type ContextModule } from \"./ContextModule\";\nimport { makeContainer } from \"./di\";\n\nexport class DefaultContextModule implements ContextModule {\n private _container: Container;\n private _loaders: ContextLoader<unknown>[];\n private _typedDataLoader: TypedDataContextLoader;\n private _solanaLoader: SolanaContextLoader;\n private _fieldLoaders: ContextFieldLoader<unknown>[];\n private _blindSigningReporter: BlindSigningReporter;\n\n constructor(args: ContextModuleServiceConfig & ContextModuleLoaderConfig) {\n this._container = makeContainer({ config: args });\n\n this._loaders = args.defaultLoaders ? this._getDefaultLoaders() : [];\n this._loaders.push(...args.customLoaders);\n\n this._fieldLoaders = args.defaultFieldLoaders\n ? this._getDefaultFieldLoaders()\n : [];\n this._fieldLoaders.push(...args.customFieldLoaders);\n\n this._typedDataLoader =\n args.customTypedDataLoader ?? this._getDefaultTypedDataLoader();\n this._solanaLoader = args.customSolanaLoader ?? this._getSolanaLoader();\n this._blindSigningReporter =\n args.customBlindSigningReporter ?? this._getBlindSigningReporter();\n }\n\n private _getDefaultFieldLoaders(): ContextFieldLoader[] {\n return [\n this._container.get<ContextFieldLoader>(nftTypes.NftContextFieldLoader),\n this._container.get<ContextFieldLoader>(\n tokenTypes.TokenContextFieldLoader,\n ),\n this._container.get<ContextFieldLoader>(\n trustedNameTypes.TrustedNameContextFieldLoader,\n ),\n this._container.get<ContextFieldLoader>(\n proxyTypes.ProxyContextFieldLoader,\n ),\n ];\n }\n\n private _getDefaultLoaders(): ContextLoader<unknown>[] {\n return [\n this._container.get<ContextLoader>(\n accountOwnershipTypes.AccountOwnershipContextLoader,\n ),\n this._container.get<ContextLoader>(\n externalPluginTypes.ExternalPluginContextLoader,\n ),\n this._container.get<ContextLoader>(\n trustedNameTypes.TrustedNameContextLoader,\n ),\n this._container.get<ContextLoader>(nftTypes.NftContextLoader),\n this._container.get<ContextLoader>(tokenTypes.TokenContextLoader),\n this._container.get<ContextLoader>(calldataTypes.CalldataContextLoader),\n this._container.get<ContextLoader>(\n dynamicNetworkTypes.DynamicNetworkContextLoader,\n ),\n this._container.get<ContextLoader>(safeTypes.SafeAddressLoader),\n this._container.get<ContextLoader>(\n gatedSigningTypes.GatedSigningContextLoader,\n ),\n this._container.get<ContextLoader>(\n gatedSigningTypes.GatedSigningTypedDataContextLoader,\n ),\n this._container.get<ContextLoader>(\n transactionCheckTypes.TransactionCheckContextLoader,\n ),\n this._container.get<ContextLoader>(\n transactionCheckTypes.TypedDataCheckContextLoader,\n ),\n ];\n }\n\n private _getDefaultTypedDataLoader(): TypedDataContextLoader {\n return this._container.get<TypedDataContextLoader>(\n typedDataTypes.TypedDataContextLoader,\n );\n }\n\n private _getBlindSigningReporter(): BlindSigningReporter {\n return this._container.get<BlindSigningReporter>(\n reporterTypes.BlindSigningReporter,\n );\n }\n\n private _getSolanaLoader(): SolanaContextLoader {\n try {\n return this._container.get<SolanaContextLoader>(\n solanaContextTypes.SolanaContextLoader,\n );\n } catch {\n return {\n load: async (_ctx) =>\n Left(\n new Error(\n \"[ContextModule] - DefaultContextModule: no SolanaContextLoader bound\",\n ),\n ),\n };\n }\n }\n\n public async getContexts(\n input: unknown,\n expectedTypes?: ClearSignContextType[],\n ): Promise<ClearSignContext[]> {\n const allContextTypes = Object.values(ClearSignContextType);\n const loaders = this._loaders.filter((l) =>\n l.canHandle(input, expectedTypes ?? allContextTypes),\n );\n const promises = loaders.map((fetcher) => fetcher.load(input));\n const responses = await Promise.all(promises);\n return responses.flat();\n }\n\n public async getFieldContext<TInput>(\n field: TInput,\n expectedType: ClearSignContextType,\n ): Promise<ClearSignContext> {\n const loaders = this._fieldLoaders.filter((l) =>\n l.canHandle(field, expectedType),\n );\n if (loaders.length === 0) {\n return Promise.resolve({\n type: ClearSignContextType.ERROR,\n error: new Error(\n `Loader not found for field: ${field} and expected type: ${expectedType}`,\n ),\n });\n }\n\n for (const loader of loaders) {\n const context = await loader.loadField(field);\n if (context.type !== ClearSignContextType.ERROR) {\n return context;\n }\n }\n\n return {\n type: ClearSignContextType.ERROR,\n error: new Error(\n `Loader not found for field: ${field} and expected type: ${expectedType}`,\n ),\n };\n }\n\n public async getTypedDataFilters(\n typedData: TypedDataContext,\n ): Promise<TypedDataClearSignContext> {\n return this._typedDataLoader.load(typedData);\n }\n\n public async getSolanaContext(\n transactionContext: SolanaTransactionContext,\n ): Promise<SolanaTransactionContextResult> {\n return await this._solanaLoader.load(transactionContext);\n }\n\n public async report(params: BlindSigningReportParams): Promise<void> {\n await this._blindSigningReporter.report(params);\n }\n}\n"],
5
+ "mappings": "AACA,OAAS,QAAAA,MAAY,YAErB,OAAS,yBAAAC,MAA6B,+CACtC,OAAS,iBAAAC,MAAqB,8BAC9B,OAAS,uBAAAC,MAA2B,2CAEpC,OAAS,iBAAAC,MAAqB,8BAI9B,OAAS,oBAAAC,MAAwB,qCAMjC,OAAS,uBAAAC,MAA2B,2CACpC,OAAS,qBAAAC,MAAyB,uCAClC,OAAS,YAAAC,MAAgB,oBACzB,OAAS,cAAAC,MAAkB,wBAC3B,OAAS,aAAAC,MAAiB,sBAG1B,OAEE,wBAAAC,MACK,kCAEP,OAAS,sBAAAC,MAA0B,iCAGnC,OAAS,cAAAC,MAAkB,wBAC3B,OAAS,yBAAAC,MAA6B,+CACtC,OAAS,kBAAAC,MAAsB,iCAG/B,OAAS,iBAAAC,MAAqB,OAEvB,MAAMC,CAA8C,CACjD,WACA,SACA,iBACA,cACA,cACA,sBAER,YAAYC,EAA8D,CACxE,KAAK,WAAaF,EAAc,CAAE,OAAQE,CAAK,CAAC,EAEhD,KAAK,SAAWA,EAAK,eAAiB,KAAK,mBAAmB,EAAI,CAAC,EACnE,KAAK,SAAS,KAAK,GAAGA,EAAK,aAAa,EAExC,KAAK,cAAgBA,EAAK,oBACtB,KAAK,wBAAwB,EAC7B,CAAC,EACL,KAAK,cAAc,KAAK,GAAGA,EAAK,kBAAkB,EAElD,KAAK,iBACHA,EAAK,uBAAyB,KAAK,2BAA2B,EAChE,KAAK,cAAgBA,EAAK,oBAAsB,KAAK,iBAAiB,EACtE,KAAK,sBACHA,EAAK,4BAA8B,KAAK,yBAAyB,CACrE,CAEQ,yBAAgD,CACtD,MAAO,CACL,KAAK,WAAW,IAAwBV,EAAS,qBAAqB,EACtE,KAAK,WAAW,IACdK,EAAW,uBACb,EACA,KAAK,WAAW,IACdR,EAAiB,6BACnB,EACA,KAAK,WAAW,IACdI,EAAW,uBACb,CACF,CACF,CAEQ,oBAA+C,CACrD,MAAO,CACL,KAAK,WAAW,IACdR,EAAsB,6BACxB,EACA,KAAK,WAAW,IACdK,EAAoB,2BACtB,EACA,KAAK,WAAW,IACdD,EAAiB,wBACnB,EACA,KAAK,WAAW,IAAmBG,EAAS,gBAAgB,EAC5D,KAAK,WAAW,IAAmBK,EAAW,kBAAkB,EAChE,KAAK,WAAW,IAAmBX,EAAc,qBAAqB,EACtE,KAAK,WAAW,IACdC,EAAoB,2BACtB,EACA,KAAK,WAAW,IAAmBO,EAAU,iBAAiB,EAC9D,KAAK,WAAW,IACdH,EAAkB,yBACpB,EACA,KAAK,WAAW,IACdA,EAAkB,kCACpB,EACA,KAAK,WAAW,IACdO,EAAsB,6BACxB,EACA,KAAK,WAAW,IACdA,EAAsB,2BACxB,CACF,CACF,CAEQ,4BAAqD,CAC3D,OAAO,KAAK,WAAW,IACrBC,EAAe,sBACjB,CACF,CAEQ,0BAAiD,CACvD,OAAO,KAAK,WAAW,IACrBX,EAAc,oBAChB,CACF,CAEQ,kBAAwC,CAC9C,GAAI,CACF,OAAO,KAAK,WAAW,IACrBQ,EAAmB,mBACrB,CACF,MAAQ,CACN,MAAO,CACL,KAAM,MAAOO,GACXnB,EACE,IAAI,MACF,sEACF,CACF,CACJ,CACF,CACF,CAEA,MAAa,YACXoB,EACAC,EAC6B,CAC7B,MAAMC,EAAkB,OAAO,OAAOX,CAAoB,EAIpDY,EAHU,KAAK,SAAS,OAAQC,GACpCA,EAAE,UAAUJ,EAAOC,GAAiBC,CAAe,CACrD,EACyB,IAAKG,GAAYA,EAAQ,KAAKL,CAAK,CAAC,EAE7D,OADkB,MAAM,QAAQ,IAAIG,CAAQ,GAC3B,KAAK,CACxB,CAEA,MAAa,gBACXG,EACAC,EAC2B,CAC3B,MAAMC,EAAU,KAAK,cAAc,OAAQJ,GACzCA,EAAE,UAAUE,EAAOC,CAAY,CACjC,EACA,GAAIC,EAAQ,SAAW,EACrB,OAAO,QAAQ,QAAQ,CACrB,KAAMjB,EAAqB,MAC3B,MAAO,IAAI,MACT,+BAA+Be,CAAK,uBAAuBC,CAAY,EACzE,CACF,CAAC,EAGH,UAAWE,KAAUD,EAAS,CAC5B,MAAME,EAAU,MAAMD,EAAO,UAAUH,CAAK,EAC5C,GAAII,EAAQ,OAASnB,EAAqB,MACxC,OAAOmB,CAEX,CAEA,MAAO,CACL,KAAMnB,EAAqB,MAC3B,MAAO,IAAI,MACT,+BAA+Be,CAAK,uBAAuBC,CAAY,EACzE,CACF,CACF,CAEA,MAAa,oBACXI,EACoC,CACpC,OAAO,KAAK,iBAAiB,KAAKA,CAAS,CAC7C,CAEA,MAAa,iBACXC,EACyC,CACzC,OAAO,MAAM,KAAK,cAAc,KAAKA,CAAkB,CACzD,CAEA,MAAa,OAAOC,EAAiD,CACnE,MAAM,KAAK,sBAAsB,OAAOA,CAAM,CAChD,CACF",
6
+ "names": ["Left", "accountOwnershipTypes", "calldataTypes", "dynamicNetworkTypes", "reporterTypes", "trustedNameTypes", "externalPluginTypes", "gatedSigningTypes", "nftTypes", "proxyTypes", "safeTypes", "ClearSignContextType", "solanaContextTypes", "tokenTypes", "transactionCheckTypes", "typedDataTypes", "makeContainer", "DefaultContextModule", "args", "_ctx", "input", "expectedTypes", "allContextTypes", "promises", "l", "fetcher", "field", "expectedType", "loaders", "loader", "context", "typedData", "transactionContext", "params"]
7
7
  }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=AccountOwnershipDataSource.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,2 @@
1
+ class e extends Error{kind;constructor(r,n){super(n),this.name="AccountOwnershipError",this.kind=r}}export{e as AccountOwnershipError};
2
+ //# sourceMappingURL=AccountOwnershipError.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/account-ownership/data/AccountOwnershipError.ts"],
4
+ "sourcesContent": ["/**\n * Classification for errors returned by the trusted metadata service when\n * fetching an account-ownership descriptor.\n *\n * - `verification_failed`: the service was reached and actively refused the\n * pubkey \u2192 address mapping (HTTP 4xx). Treat as a terminal, non-retryable\n * verification failure.\n * - `service_unavailable`: the service could not answer (network failure,\n * HTTP 5xx, malformed response). Treat as transient; fallback UI may be\n * appropriate.\n */\nexport type AccountOwnershipErrorKind =\n | \"verification_failed\"\n | \"service_unavailable\";\n\nexport class AccountOwnershipError extends Error {\n readonly kind: AccountOwnershipErrorKind;\n\n constructor(kind: AccountOwnershipErrorKind, message: string) {\n super(message);\n this.name = \"AccountOwnershipError\";\n this.kind = kind;\n }\n}\n"],
5
+ "mappings": "AAeO,MAAMA,UAA8B,KAAM,CACtC,KAET,YAAYC,EAAiCC,EAAiB,CAC5D,MAAMA,CAAO,EACb,KAAK,KAAO,wBACZ,KAAK,KAAOD,CACd,CACF",
6
+ "names": ["AccountOwnershipError", "kind", "message"]
7
+ }
@@ -0,0 +1,2 @@
1
+ var f=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var g=(o,e,t,r)=>{for(var s=r>1?void 0:r?y(e,t):e,n=o.length-1,a;n>=0;n--)(a=o[n])&&(s=(r?a(e,t,s):a(s))||s);return r&&s&&f(e,t,s),s},p=(o,e)=>(t,r)=>e(t,r,o);import{inject as m,injectable as w}from"inversify";import{Left as u,Right as h}from"purify-ts";import{AccountOwnershipError as i}from"../../account-ownership/data/AccountOwnershipError";import{configTypes as d}from"../../config/di/configTypes";import{networkTypes as l}from"../../network/di/networkTypes";let c=class{constructor(e,t){this.config=e;this.http=t}async getDescriptor({publicKey:e,address:t,challenge:r,network:s}){try{const n=await this.http.get(`${this.config.metadataServiceDomain.url}/v2/concordium/owner/${e}/${t}`,{params:{challenge:r,network:s}});return n?this.isAccountOwnershipDto(n)?h({signedDescriptor:n.signedDescriptor,keyId:n.keyId,keyUsage:n.keyUsage}):u(new i("service_unavailable","[ContextModule] HttpAccountOwnershipDataSource: invalid response format")):u(new i("service_unavailable","[ContextModule] HttpAccountOwnershipDataSource: unexpected empty response"))}catch(n){return u(this.classifyError(n))}}classifyError(e){if(this.hasNumericStatus(e)){const t=e.status,r=this.extractErrorMessage(e);return this.classifyFromStatus(t,r)}return new i("service_unavailable","[ContextModule] HttpAccountOwnershipDataSource: Failed to fetch account ownership descriptor")}classifyFromStatus(e,t){return e>=400&&e<500?new i("verification_failed",t):new i("service_unavailable",`[ContextModule] HttpAccountOwnershipDataSource: backend ${e}: ${t}`)}hasNumericStatus(e){return typeof e=="object"&&e!==null&&"status"in e&&typeof e.status=="number"}extractErrorMessage(e){const t=this.extractResponseBodyMessage(e);return t!==null?t:typeof e=="object"&&e!==null&&"message"in e&&typeof e.message=="string"&&e.message.length>0?e.message:typeof e=="string"?e:"Unknown error"}extractResponseBodyMessage(e){if(typeof e!="object"||e===null||!("responseBody"in e)||typeof e.responseBody!="string")return null;const t=e.responseBody;if(t.length===0)return null;try{const r=JSON.parse(t);if(typeof r=="object"&&r!==null&&"message"in r&&typeof r.message=="string"&&r.message.length>0)return r.message}catch{}return t}isAccountOwnershipDto(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=g([w(),p(0,m(d.Config)),p(1,m(l.NetworkClient))],c);export{c as HttpAccountOwnershipDataSource};
2
+ //# sourceMappingURL=HttpAccountOwnershipDataSource.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/account-ownership/data/HttpAccountOwnershipDataSource.ts"],
4
+ "sourcesContent": ["import { DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { type Either, Left, Right } from \"purify-ts\";\n\nimport {\n type AccountOwnershipDataSource,\n type AccountOwnershipDescriptor,\n type GetAccountOwnershipParams,\n} from \"@/account-ownership/data/AccountOwnershipDataSource\";\nimport { AccountOwnershipError } from \"@/account-ownership/data/AccountOwnershipError\";\nimport { type AccountOwnershipDto } from \"@/account-ownership/data/dto/AccountOwnershipDto\";\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { networkTypes } from \"@/network/di/networkTypes\";\n\n@injectable()\nexport class HttpAccountOwnershipDataSource\n implements AccountOwnershipDataSource\n{\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n @inject(networkTypes.NetworkClient)\n private readonly http: DmkNetworkClient,\n ) {}\n\n async getDescriptor({\n publicKey,\n address,\n challenge,\n network,\n }: GetAccountOwnershipParams): Promise<\n Either<Error, AccountOwnershipDescriptor>\n > {\n try {\n const data = (await this.http.get(\n `${this.config.metadataServiceDomain.url}/v2/concordium/owner/${publicKey}/${address}`,\n {\n params: { challenge, network },\n },\n )) as AccountOwnershipDto | null;\n\n if (!data) {\n return Left(\n new AccountOwnershipError(\n \"service_unavailable\",\n \"[ContextModule] HttpAccountOwnershipDataSource: unexpected empty response\",\n ),\n );\n }\n\n if (!this.isAccountOwnershipDto(data)) {\n return Left(\n new AccountOwnershipError(\n \"service_unavailable\",\n \"[ContextModule] HttpAccountOwnershipDataSource: invalid response format\",\n ),\n );\n }\n\n return Right({\n signedDescriptor: data.signedDescriptor,\n keyId: data.keyId,\n keyUsage: data.keyUsage,\n });\n } catch (error) {\n return Left(this.classifyError(error));\n }\n }\n\n /**\n * Classifies a caught request error into an {@link AccountOwnershipError}:\n * HTTP 4xx responses carry the backend's `message` verbatim and are marked\n * as `verification_failed`; everything else (network failure, 5xx,\n * unrecognized errors) is marked as `service_unavailable`.\n *\n * Errors with a numeric `.status` field are treated as HTTP-shaped\n * failures. `DmkNetworkClientError` exposes `.status` and a raw\n * `.responseBody` string; the backend's human-readable message is\n * extracted from the error's own `.message` first, then from the JSON\n * body on `.responseBody`, and finally from the raw body as a\n * last resort.\n */\n private classifyError(error: unknown): AccountOwnershipError {\n if (this.hasNumericStatus(error)) {\n const status = error.status;\n const message = this.extractErrorMessage(error);\n return this.classifyFromStatus(status, message);\n }\n\n return new AccountOwnershipError(\n \"service_unavailable\",\n \"[ContextModule] HttpAccountOwnershipDataSource: Failed to fetch account ownership descriptor\",\n );\n }\n\n private classifyFromStatus(\n status: number,\n message: string,\n ): AccountOwnershipError {\n if (status >= 400 && status < 500) {\n return new AccountOwnershipError(\"verification_failed\", message);\n }\n return new AccountOwnershipError(\n \"service_unavailable\",\n `[ContextModule] HttpAccountOwnershipDataSource: backend ${status}: ${message}`,\n );\n }\n\n private hasNumericStatus(value: unknown): value is { status: number } {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"status\" in value &&\n typeof (value as { status: unknown }).status === \"number\"\n );\n }\n\n private extractErrorMessage(value: unknown): string {\n const fromBody = this.extractResponseBodyMessage(value);\n if (fromBody !== null) {\n return fromBody;\n }\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"message\" in value &&\n typeof (value as { message: unknown }).message === \"string\" &&\n (value as { message: string }).message.length > 0\n ) {\n return (value as { message: string }).message;\n }\n if (typeof value === \"string\") {\n return value;\n }\n return \"Unknown error\";\n }\n\n private extractResponseBodyMessage(value: unknown): string | null {\n if (\n typeof value !== \"object\" ||\n value === null ||\n !(\"responseBody\" in value) ||\n typeof (value as { responseBody: unknown }).responseBody !== \"string\"\n ) {\n return null;\n }\n const body = (value as { responseBody: string }).responseBody;\n if (body.length === 0) {\n return null;\n }\n try {\n const parsed = JSON.parse(body) as unknown;\n if (\n typeof parsed === \"object\" &&\n parsed !== null &&\n \"message\" in parsed &&\n typeof (parsed as { message: unknown }).message === \"string\" &&\n (parsed as { message: string }).message.length > 0\n ) {\n return (parsed as { message: string }).message;\n }\n } catch {\n // body is not JSON; fall through to use it as plain text\n }\n return body;\n }\n\n private isAccountOwnershipDto(value: unknown): value is AccountOwnershipDto {\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": "iOACA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YACnC,OAAsB,QAAAC,EAAM,SAAAC,MAAa,YAOzC,OAAS,yBAAAC,MAA6B,iDAEtC,OAAS,eAAAC,MAAmB,0BAE5B,OAAS,gBAAAC,MAAoB,4BAGtB,IAAMC,EAAN,KAEP,CACE,YAEmBC,EAEAC,EACjB,CAHiB,YAAAD,EAEA,UAAAC,CAChB,CAEH,MAAM,cAAc,CAClB,UAAAC,EACA,QAAAC,EACA,UAAAC,EACA,QAAAC,CACF,EAEE,CACA,GAAI,CACF,MAAMC,EAAQ,MAAM,KAAK,KAAK,IAC5B,GAAG,KAAK,OAAO,sBAAsB,GAAG,wBAAwBJ,CAAS,IAAIC,CAAO,GACpF,CACE,OAAQ,CAAE,UAAAC,EAAW,QAAAC,CAAQ,CAC/B,CACF,EAEA,OAAKC,EASA,KAAK,sBAAsBA,CAAI,EAS7BC,EAAM,CACX,iBAAkBD,EAAK,iBACvB,MAAOA,EAAK,MACZ,SAAUA,EAAK,QACjB,CAAC,EAZQE,EACL,IAAIC,EACF,sBACA,yEACF,CACF,EAdOD,EACL,IAAIC,EACF,sBACA,2EACF,CACF,CAiBJ,OAASC,EAAO,CACd,OAAOF,EAAK,KAAK,cAAcE,CAAK,CAAC,CACvC,CACF,CAeQ,cAAcA,EAAuC,CAC3D,GAAI,KAAK,iBAAiBA,CAAK,EAAG,CAChC,MAAMC,EAASD,EAAM,OACfE,EAAU,KAAK,oBAAoBF,CAAK,EAC9C,OAAO,KAAK,mBAAmBC,EAAQC,CAAO,CAChD,CAEA,OAAO,IAAIH,EACT,sBACA,8FACF,CACF,CAEQ,mBACNE,EACAC,EACuB,CACvB,OAAID,GAAU,KAAOA,EAAS,IACrB,IAAIF,EAAsB,sBAAuBG,CAAO,EAE1D,IAAIH,EACT,sBACA,2DAA2DE,CAAM,KAAKC,CAAO,EAC/E,CACF,CAEQ,iBAAiBC,EAA6C,CACpE,OACE,OAAOA,GAAU,UACjBA,IAAU,MACV,WAAYA,GACZ,OAAQA,EAA8B,QAAW,QAErD,CAEQ,oBAAoBA,EAAwB,CAClD,MAAMC,EAAW,KAAK,2BAA2BD,CAAK,EACtD,OAAIC,IAAa,KACRA,EAGP,OAAOD,GAAU,UACjBA,IAAU,MACV,YAAaA,GACb,OAAQA,EAA+B,SAAY,UAClDA,EAA8B,QAAQ,OAAS,EAExCA,EAA8B,QAEpC,OAAOA,GAAU,SACZA,EAEF,eACT,CAEQ,2BAA2BA,EAA+B,CAChE,GACE,OAAOA,GAAU,UACjBA,IAAU,MACV,EAAE,iBAAkBA,IACpB,OAAQA,EAAoC,cAAiB,SAE7D,OAAO,KAET,MAAME,EAAQF,EAAmC,aACjD,GAAIE,EAAK,SAAW,EAClB,OAAO,KAET,GAAI,CACF,MAAMC,EAAS,KAAK,MAAMD,CAAI,EAC9B,GACE,OAAOC,GAAW,UAClBA,IAAW,MACX,YAAaA,GACb,OAAQA,EAAgC,SAAY,UACnDA,EAA+B,QAAQ,OAAS,EAEjD,OAAQA,EAA+B,OAE3C,MAAQ,CAER,CACA,OAAOD,CACT,CAEQ,sBAAsBF,EAA8C,CAC1E,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,EApKad,EAANkB,EAAA,CADNC,EAAW,EAKPC,EAAA,EAAAC,EAAOC,EAAY,MAAM,GAEzBF,EAAA,EAAAC,EAAOE,EAAa,aAAa,IANzBvB",
6
+ "names": ["inject", "injectable", "Left", "Right", "AccountOwnershipError", "configTypes", "networkTypes", "HttpAccountOwnershipDataSource", "config", "http", "publicKey", "address", "challenge", "network", "data", "Right", "Left", "AccountOwnershipError", "error", "status", "message", "value", "fromBody", "body", "parsed", "__decorateClass", "injectable", "__decorateParam", "inject", "configTypes", "networkTypes"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{Left as d,Right as g}from"purify-ts";import{AccountOwnershipError as u}from"../../account-ownership/data/AccountOwnershipError";import{HttpAccountOwnershipDataSource as p}from"./HttpAccountOwnershipDataSource";function i(n){const c=new Error(n.message??"HTTP error");return n.status!==void 0&&(c.status=n.status),n.responseBody!==void 0&&(c.responseBody=n.responseBody),c}describe("HttpAccountOwnershipDataSource",()=>{const n={metadataServiceDomain:{url:"https://nft.api.live.ledger-test.com"},originToken:"test-origin-token"},c={signedDescriptor:"signed-descriptor-data",keyId:"domain_metadata_key",keyUsage:"trusted_name"},r={publicKey:"abcdef1234567890",address:"3kFkntk2H5FGMzeR3GjQKPhdZK9LShKdPHsj2fiGKCdmDXj2WB",challenge:"0xabcdef",network:"mainnet"};let s,o;beforeEach(()=>{vi.clearAllMocks(),s={get:vi.fn()},o=new p(n,s)}),describe("getDescriptor",()=>{it("should return descriptor on successful request",async()=>{s.get.mockResolvedValue(c);const t=await o.getDescriptor(r);expect(s.get).toHaveBeenCalledWith(`${n.metadataServiceDomain.url}/v2/concordium/owner/${r.publicKey}/${r.address}`,{params:{challenge:r.challenge,network:r.network}}),expect(t).toEqual(g(c))}),it("should pass testnet network parameter",async()=>{s.get.mockResolvedValue(c),await o.getDescriptor({...r,network:"testnet"}),expect(s.get).toHaveBeenCalledWith(expect.any(String),{params:{challenge:r.challenge,network:"testnet"}})}),it("should classify empty response as service_unavailable",async()=>{s.get.mockResolvedValue(null);const t=await o.getDescriptor(r);expect(t.isLeft()).toBe(!0);const e=t.extract();expect(e).toBeInstanceOf(u),expect(e.kind).toBe("service_unavailable"),expect(e.message).toContain("unexpected empty response")}),it.each([["signedDescriptor missing",{keyId:"k",keyUsage:"u"}],["keyId missing",{signedDescriptor:"s",keyUsage:"u"}],["keyUsage missing",{signedDescriptor:"s",keyId:"k"}],["wrong field type",{signedDescriptor:"s",keyId:123,keyUsage:"u"}]])("should classify malformed response (%s) as service_unavailable",async(t,e)=>{s.get.mockResolvedValue(e);const a=await o.getDescriptor(r);expect(a.isLeft()).toBe(!0);const l=a.extract();expect(l).toBeInstanceOf(u),expect(l.kind).toBe("service_unavailable"),expect(l.message).toContain("invalid response format")}),it("should classify 422 with { message } body as verification_failed and forward backend message",async()=>{const t="Address ByteVector(32 bytes, 0xa63c) is not associated with the given public key ByteVector(32 bytes, 0x9dc1) on the network Testnet";s.get.mockRejectedValue(i({status:422,message:"HTTP error 422",responseBody:JSON.stringify({message:t})}));const e=await o.getDescriptor(r);expect(e.isLeft()).toBe(!0);const a=e.extract();expect(a).toBeInstanceOf(u),expect(a.kind).toBe("verification_failed"),expect(a.message).toBe(t)}),it.each([400,401,403,404,429])("should classify HTTP %s as verification_failed with forwarded message",async t=>{s.get.mockRejectedValue(i({status:t,message:`HTTP error ${t}`,responseBody:JSON.stringify({message:"refused"})}));const a=(await o.getDescriptor(r)).extract();expect(a.kind).toBe("verification_failed"),expect(a.message).toBe("refused")}),it("should classify 500 as service_unavailable with status prefix",async()=>{s.get.mockRejectedValue(i({status:500,message:"HTTP error 500",responseBody:JSON.stringify({message:"internal error"})}));const e=(await o.getDescriptor(r)).extract();expect(e.kind).toBe("service_unavailable"),expect(e.message).toContain("backend 500"),expect(e.message).toContain("internal error")}),it.each([502,503,504])("should classify HTTP %s as service_unavailable",async t=>{s.get.mockRejectedValue(i({status:t,message:`HTTP error ${t}`,responseBody:JSON.stringify({message:"down"})}));const a=(await o.getDescriptor(r)).extract();expect(a.kind).toBe("service_unavailable"),expect(a.message).toContain(`backend ${t}`),expect(a.message).toContain("down")}),it("should accept plain-text response body and forward it on 4xx",async()=>{s.get.mockRejectedValue(i({status:422,message:"HTTP error 422",responseBody:"plain text reason"}));const e=(await o.getDescriptor(r)).extract();expect(e.kind).toBe("verification_failed"),expect(e.message).toBe("plain text reason")}),it("should fall back to the client error message when response body is empty",async()=>{s.get.mockRejectedValue(i({status:422,message:"HTTP error 422",responseBody:""}));const e=(await o.getDescriptor(r)).extract();expect(e.kind).toBe("verification_failed"),expect(e.message).toBe("HTTP error 422")}),it("should classify network errors (no status) as service_unavailable",async()=>{s.get.mockRejectedValue(new Error("Network error"));const t=await o.getDescriptor(r);expect(t).toEqual(d(new u("service_unavailable","[ContextModule] HttpAccountOwnershipDataSource: Failed to fetch account ownership descriptor")))}),describe("errors with numeric .status",()=>{it.each([400,401,403,404,422,429])("should classify HTTP %s on .status as verification_failed and forward .message",async t=>{const e="Address ByteVector(...) is not associated with the given public key ByteVector(...)";s.get.mockRejectedValue(i({status:t,message:e}));const l=(await o.getDescriptor(r)).extract();expect(l.kind).toBe("verification_failed"),expect(l.message).toBe(e)}),it.each([500,502,503,504])("should classify HTTP %s on .status as service_unavailable with status prefix",async t=>{s.get.mockRejectedValue(i({status:t,message:"down"}));const a=(await o.getDescriptor(r)).extract();expect(a.kind).toBe("service_unavailable"),expect(a.message).toContain(`backend ${t}`),expect(a.message).toContain("down")}),it("should ignore non-numeric .status and fall through to service_unavailable fallback",async()=>{const t=new Error("bad");t.status="422",s.get.mockRejectedValue(t);const e=await o.getDescriptor(r);expect(e).toEqual(d(new u("service_unavailable","[ContextModule] HttpAccountOwnershipDataSource: Failed to fetch account ownership descriptor")))}),it("should forward .message from plain object errors (not Error instances)",async()=>{s.get.mockRejectedValue({status:422,message:"plain object message"});const e=(await o.getDescriptor(r)).extract();expect(e.kind).toBe("verification_failed"),expect(e.message).toBe("plain object message")}),it("should use an 'Unknown error' fallback when the object has no usable message",async()=>{s.get.mockRejectedValue({status:422});const e=(await o.getDescriptor(r)).extract();expect(e.kind).toBe("verification_failed"),expect(e.message).toBe("Unknown error")})}),it("should use correct metadata service URL from config",async()=>{const t={metadataServiceDomain:{url:"https://custom-metadata.example.com"},originToken:"custom-token"},e=new p(t,s);s.get.mockResolvedValue(c),await e.getDescriptor(r),expect(s.get).toHaveBeenCalledWith("https://custom-metadata.example.com/v2/concordium/owner/abcdef1234567890/3kFkntk2H5FGMzeR3GjQKPhdZK9LShKdPHsj2fiGKCdmDXj2WB",expect.anything())})})});
2
+ //# sourceMappingURL=HttpAccountOwnershipDataSource.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/account-ownership/data/HttpAccountOwnershipDataSource.test.ts"],
4
+ "sourcesContent": ["import { type DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { AccountOwnershipError } from \"@/account-ownership/data/AccountOwnershipError\";\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\n\nimport { HttpAccountOwnershipDataSource } from \"./HttpAccountOwnershipDataSource\";\n\n/**\n * Build an error that quacks like a {@link DmkNetworkClientError}: a real\n * `Error` with numeric `.status` and raw `.responseBody` text. Callers can\n * omit fields to simulate specific shapes.\n */\nfunction makeHttpError(options: {\n status?: number;\n message?: string;\n responseBody?: string;\n}): Error {\n const err = new Error(options.message ?? \"HTTP error\");\n if (options.status !== undefined) {\n (err as unknown as { status: number }).status = options.status;\n }\n if (options.responseBody !== undefined) {\n (err as unknown as { responseBody: string }).responseBody =\n options.responseBody;\n }\n return err;\n}\n\ndescribe(\"HttpAccountOwnershipDataSource\", () => {\n const config: ContextModuleServiceConfig = {\n metadataServiceDomain: {\n url: \"https://nft.api.live.ledger-test.com\",\n },\n originToken: \"test-origin-token\",\n } as ContextModuleServiceConfig;\n\n const validDto = {\n signedDescriptor: \"signed-descriptor-data\",\n keyId: \"domain_metadata_key\",\n keyUsage: \"trusted_name\",\n };\n\n const baseParams = {\n publicKey: \"abcdef1234567890\",\n address: \"3kFkntk2H5FGMzeR3GjQKPhdZK9LShKdPHsj2fiGKCdmDXj2WB\",\n challenge: \"0xabcdef\",\n network: \"mainnet\" as const,\n };\n\n let httpMock: { get: ReturnType<typeof vi.fn> };\n let datasource: HttpAccountOwnershipDataSource;\n\n beforeEach(() => {\n vi.clearAllMocks();\n httpMock = { get: vi.fn() };\n datasource = new HttpAccountOwnershipDataSource(\n config,\n httpMock as unknown as DmkNetworkClient,\n );\n });\n\n describe(\"getDescriptor\", () => {\n it(\"should return descriptor on successful request\", async () => {\n httpMock.get.mockResolvedValue(validDto);\n\n const result = await datasource.getDescriptor(baseParams);\n\n expect(httpMock.get).toHaveBeenCalledWith(\n `${config.metadataServiceDomain.url}/v2/concordium/owner/${baseParams.publicKey}/${baseParams.address}`,\n {\n params: {\n challenge: baseParams.challenge,\n network: baseParams.network,\n },\n },\n );\n expect(result).toEqual(Right(validDto));\n });\n\n it(\"should pass testnet network parameter\", async () => {\n httpMock.get.mockResolvedValue(validDto);\n\n await datasource.getDescriptor({ ...baseParams, network: \"testnet\" });\n\n expect(httpMock.get).toHaveBeenCalledWith(expect.any(String), {\n params: { challenge: baseParams.challenge, network: \"testnet\" },\n });\n });\n\n it(\"should classify empty response as service_unavailable\", async () => {\n httpMock.get.mockResolvedValue(null);\n\n const result = await datasource.getDescriptor(baseParams);\n\n expect(result.isLeft()).toBe(true);\n const err = result.extract() as AccountOwnershipError;\n expect(err).toBeInstanceOf(AccountOwnershipError);\n expect(err.kind).toBe(\"service_unavailable\");\n expect(err.message).toContain(\"unexpected empty response\");\n });\n\n it.each([\n [\"signedDescriptor missing\", { keyId: \"k\", keyUsage: \"u\" }],\n [\"keyId missing\", { signedDescriptor: \"s\", keyUsage: \"u\" }],\n [\"keyUsage missing\", { signedDescriptor: \"s\", keyId: \"k\" }],\n [\n \"wrong field type\",\n { signedDescriptor: \"s\", keyId: 123, keyUsage: \"u\" },\n ],\n ])(\n \"should classify malformed response (%s) as service_unavailable\",\n async (_label, data) => {\n httpMock.get.mockResolvedValue(data);\n\n const result = await datasource.getDescriptor(baseParams);\n\n expect(result.isLeft()).toBe(true);\n const err = result.extract() as AccountOwnershipError;\n expect(err).toBeInstanceOf(AccountOwnershipError);\n expect(err.kind).toBe(\"service_unavailable\");\n expect(err.message).toContain(\"invalid response format\");\n },\n );\n\n it(\"should classify 422 with { message } body as verification_failed and forward backend message\", async () => {\n const backendMessage =\n \"Address ByteVector(32 bytes, 0xa63c) is not associated with the given public key ByteVector(32 bytes, 0x9dc1) on the network Testnet\";\n httpMock.get.mockRejectedValue(\n makeHttpError({\n status: 422,\n message: \"HTTP error 422\",\n responseBody: JSON.stringify({ message: backendMessage }),\n }),\n );\n\n const result = await datasource.getDescriptor(baseParams);\n\n expect(result.isLeft()).toBe(true);\n const err = result.extract() as AccountOwnershipError;\n expect(err).toBeInstanceOf(AccountOwnershipError);\n expect(err.kind).toBe(\"verification_failed\");\n expect(err.message).toBe(backendMessage);\n });\n\n it.each([400, 401, 403, 404, 429])(\n \"should classify HTTP %s as verification_failed with forwarded message\",\n async (status) => {\n httpMock.get.mockRejectedValue(\n makeHttpError({\n status,\n message: `HTTP error ${status}`,\n responseBody: JSON.stringify({ message: \"refused\" }),\n }),\n );\n\n const result = await datasource.getDescriptor(baseParams);\n\n const err = result.extract() as AccountOwnershipError;\n expect(err.kind).toBe(\"verification_failed\");\n expect(err.message).toBe(\"refused\");\n },\n );\n\n it(\"should classify 500 as service_unavailable with status prefix\", async () => {\n httpMock.get.mockRejectedValue(\n makeHttpError({\n status: 500,\n message: \"HTTP error 500\",\n responseBody: JSON.stringify({ message: \"internal error\" }),\n }),\n );\n\n const result = await datasource.getDescriptor(baseParams);\n\n const err = result.extract() as AccountOwnershipError;\n expect(err.kind).toBe(\"service_unavailable\");\n expect(err.message).toContain(\"backend 500\");\n expect(err.message).toContain(\"internal error\");\n });\n\n it.each([502, 503, 504])(\n \"should classify HTTP %s as service_unavailable\",\n async (status) => {\n httpMock.get.mockRejectedValue(\n makeHttpError({\n status,\n message: `HTTP error ${status}`,\n responseBody: JSON.stringify({ message: \"down\" }),\n }),\n );\n\n const result = await datasource.getDescriptor(baseParams);\n\n const err = result.extract() as AccountOwnershipError;\n expect(err.kind).toBe(\"service_unavailable\");\n expect(err.message).toContain(`backend ${status}`);\n expect(err.message).toContain(\"down\");\n },\n );\n\n it(\"should accept plain-text response body and forward it on 4xx\", async () => {\n httpMock.get.mockRejectedValue(\n makeHttpError({\n status: 422,\n message: \"HTTP error 422\",\n responseBody: \"plain text reason\",\n }),\n );\n\n const result = await datasource.getDescriptor(baseParams);\n\n const err = result.extract() as AccountOwnershipError;\n expect(err.kind).toBe(\"verification_failed\");\n expect(err.message).toBe(\"plain text reason\");\n });\n\n it(\"should fall back to the client error message when response body is empty\", async () => {\n httpMock.get.mockRejectedValue(\n makeHttpError({\n status: 422,\n message: \"HTTP error 422\",\n responseBody: \"\",\n }),\n );\n\n const result = await datasource.getDescriptor(baseParams);\n\n const err = result.extract() as AccountOwnershipError;\n expect(err.kind).toBe(\"verification_failed\");\n expect(err.message).toBe(\"HTTP error 422\");\n });\n\n it(\"should classify network errors (no status) as service_unavailable\", async () => {\n httpMock.get.mockRejectedValue(new Error(\"Network error\"));\n\n const result = await datasource.getDescriptor(baseParams);\n\n expect(result).toEqual(\n Left(\n new AccountOwnershipError(\n \"service_unavailable\",\n \"[ContextModule] HttpAccountOwnershipDataSource: Failed to fetch account ownership descriptor\",\n ),\n ),\n );\n });\n\n // Errors surfaced by the network client (or any wrapping layer) that\n // expose a numeric `.status` field must still be classified, even if\n // they are not true `DmkNetworkClientError` instances.\n describe(\"errors with numeric .status\", () => {\n it.each([400, 401, 403, 404, 422, 429])(\n \"should classify HTTP %s on .status as verification_failed and forward .message\",\n async (status) => {\n const backendMessage =\n \"Address ByteVector(...) is not associated with the given public key ByteVector(...)\";\n httpMock.get.mockRejectedValue(\n makeHttpError({ status, message: backendMessage }),\n );\n\n const result = await datasource.getDescriptor(baseParams);\n\n const err = result.extract() as AccountOwnershipError;\n expect(err.kind).toBe(\"verification_failed\");\n expect(err.message).toBe(backendMessage);\n },\n );\n\n it.each([500, 502, 503, 504])(\n \"should classify HTTP %s on .status as service_unavailable with status prefix\",\n async (status) => {\n httpMock.get.mockRejectedValue(\n makeHttpError({ status, message: \"down\" }),\n );\n\n const result = await datasource.getDescriptor(baseParams);\n\n const err = result.extract() as AccountOwnershipError;\n expect(err.kind).toBe(\"service_unavailable\");\n expect(err.message).toContain(`backend ${status}`);\n expect(err.message).toContain(\"down\");\n },\n );\n\n it(\"should ignore non-numeric .status and fall through to service_unavailable fallback\", async () => {\n const err = new Error(\"bad\");\n (err as unknown as { status: string }).status = \"422\";\n httpMock.get.mockRejectedValue(err);\n\n const result = await datasource.getDescriptor(baseParams);\n\n expect(result).toEqual(\n Left(\n new AccountOwnershipError(\n \"service_unavailable\",\n \"[ContextModule] HttpAccountOwnershipDataSource: Failed to fetch account ownership descriptor\",\n ),\n ),\n );\n });\n\n it(\"should forward .message from plain object errors (not Error instances)\", async () => {\n httpMock.get.mockRejectedValue({\n status: 422,\n message: \"plain object message\",\n });\n\n const result = await datasource.getDescriptor(baseParams);\n\n const err = result.extract() as AccountOwnershipError;\n expect(err.kind).toBe(\"verification_failed\");\n expect(err.message).toBe(\"plain object message\");\n });\n\n it(\"should use an 'Unknown error' fallback when the object has no usable message\", async () => {\n httpMock.get.mockRejectedValue({ status: 422 });\n\n const result = await datasource.getDescriptor(baseParams);\n\n const err = result.extract() as AccountOwnershipError;\n expect(err.kind).toBe(\"verification_failed\");\n expect(err.message).toBe(\"Unknown error\");\n });\n });\n\n it(\"should use correct metadata service URL from config\", async () => {\n const customConfig: ContextModuleServiceConfig = {\n metadataServiceDomain: {\n url: \"https://custom-metadata.example.com\",\n },\n originToken: \"custom-token\",\n } as ContextModuleServiceConfig;\n const customDatasource = new HttpAccountOwnershipDataSource(\n customConfig,\n httpMock as unknown as DmkNetworkClient,\n );\n httpMock.get.mockResolvedValue(validDto);\n\n await customDatasource.getDescriptor(baseParams);\n\n expect(httpMock.get).toHaveBeenCalledWith(\n \"https://custom-metadata.example.com/v2/concordium/owner/abcdef1234567890/3kFkntk2H5FGMzeR3GjQKPhdZK9LShKdPHsj2fiGKCdmDXj2WB\",\n expect.anything(),\n );\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["Left", "Right", "AccountOwnershipError", "HttpAccountOwnershipDataSource", "makeHttpError", "options", "err", "config", "validDto", "baseParams", "httpMock", "datasource", "result", "_label", "data", "backendMessage", "status", "customConfig", "customDatasource"]
7
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=AccountOwnershipDto.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,2 @@
1
+ import{ContainerModule as r}from"inversify";import{HttpAccountOwnershipDataSource as e}from"../../account-ownership/data/HttpAccountOwnershipDataSource";import{AccountOwnershipContextLoader as n}from"../../account-ownership/domain/AccountOwnershipContextLoader";import{accountOwnershipTypes as t}from"./accountOwnershipTypes";const u=()=>new r(({bind:o})=>{o(t.AccountOwnershipDataSource).to(e),o(t.AccountOwnershipContextLoader).to(n)});export{u as accountOwnershipModuleFactory};
2
+ //# sourceMappingURL=accountOwnershipModuleFactory.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/account-ownership/di/accountOwnershipModuleFactory.ts"],
4
+ "sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { HttpAccountOwnershipDataSource } from \"@/account-ownership/data/HttpAccountOwnershipDataSource\";\nimport { AccountOwnershipContextLoader } from \"@/account-ownership/domain/AccountOwnershipContextLoader\";\n\nimport { accountOwnershipTypes } from \"./accountOwnershipTypes\";\n\nexport const accountOwnershipModuleFactory = () =>\n new ContainerModule(({ bind }) => {\n bind(accountOwnershipTypes.AccountOwnershipDataSource).to(\n HttpAccountOwnershipDataSource,\n );\n bind(accountOwnershipTypes.AccountOwnershipContextLoader).to(\n AccountOwnershipContextLoader,\n );\n });\n"],
5
+ "mappings": "AAAA,OAAS,mBAAAA,MAAuB,YAEhC,OAAS,kCAAAC,MAAsC,0DAC/C,OAAS,iCAAAC,MAAqC,2DAE9C,OAAS,yBAAAC,MAA6B,0BAE/B,MAAMC,EAAgC,IAC3C,IAAIJ,EAAgB,CAAC,CAAE,KAAAK,CAAK,IAAM,CAChCA,EAAKF,EAAsB,0BAA0B,EAAE,GACrDF,CACF,EACAI,EAAKF,EAAsB,6BAA6B,EAAE,GACxDD,CACF,CACF,CAAC",
6
+ "names": ["ContainerModule", "HttpAccountOwnershipDataSource", "AccountOwnershipContextLoader", "accountOwnershipTypes", "accountOwnershipModuleFactory", "bind"]
7
+ }
@@ -0,0 +1,2 @@
1
+ const o={AccountOwnershipDataSource:Symbol.for("AccountOwnershipDataSource"),AccountOwnershipContextLoader:Symbol.for("AccountOwnershipContextLoader")};export{o as accountOwnershipTypes};
2
+ //# sourceMappingURL=accountOwnershipTypes.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/account-ownership/di/accountOwnershipTypes.ts"],
4
+ "sourcesContent": ["export const accountOwnershipTypes = {\n AccountOwnershipDataSource: Symbol.for(\"AccountOwnershipDataSource\"),\n AccountOwnershipContextLoader: Symbol.for(\"AccountOwnershipContextLoader\"),\n};\n"],
5
+ "mappings": "AAAO,MAAMA,EAAwB,CACnC,2BAA4B,OAAO,IAAI,4BAA4B,EACnE,8BAA+B,OAAO,IAAI,+BAA+B,CAC3E",
6
+ "names": ["accountOwnershipTypes"]
7
+ }
@@ -0,0 +1,2 @@
1
+ var g=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var l=(i,e,t,r)=>{for(var o=r>1?void 0:r?C(e,t):e,n=i.length-1,c;n>=0;n--)(c=i[n])&&(o=(r?c(e,t,o):c(o))||o);return r&&o&&g(e,t,o),o},d=(i,e)=>(t,r)=>e(t,r,i);import{inject as y,injectable as m}from"inversify";import{accountOwnershipTypes as f}from"../../account-ownership/di/accountOwnershipTypes";import{pkiTypes as h}from"../../pki/di/pkiTypes";import{ClearSignContextType as p}from"../../shared/model/ClearSignContext";const w=[p.ACCOUNT_OWNERSHIP];let s=class{constructor(e,t){this._dataSource=e;this._certificateLoader=t}canHandle(e,t){return w.every(r=>t.includes(r))&&typeof e=="object"&&e!==null&&"publicKey"in e&&typeof e.publicKey=="string"&&e.publicKey.length>0&&"address"in e&&typeof e.address=="string"&&e.address.length>0&&"network"in e&&(e.network==="mainnet"||e.network==="testnet")&&"deviceModelId"in e&&e.deviceModelId!==void 0&&"challenge"in e&&typeof e.challenge=="string"&&e.challenge.length>0}async load({publicKey:e,address:t,network:r,deviceModelId:o,challenge:n}){return(await this._dataSource.getDescriptor({publicKey:e,address:t,challenge:n,network:r})).caseOf({Left:a=>Promise.resolve([{type:p.ERROR,error:a}]),Right:async a=>[{type:p.ACCOUNT_OWNERSHIP,payload:a.signedDescriptor,certificate:await this._certificateLoader.loadCertificate({keyId:a.keyId,keyUsage:a.keyUsage,targetDevice:o})}]})}};s=l([m(),d(0,y(f.AccountOwnershipDataSource)),d(1,y(h.PkiCertificateLoader))],s);export{s as AccountOwnershipContextLoader};
2
+ //# sourceMappingURL=AccountOwnershipContextLoader.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/account-ownership/domain/AccountOwnershipContextLoader.ts"],
4
+ "sourcesContent": ["import { type DeviceModelId } from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport type {\n AccountOwnershipDataSource,\n AccountOwnershipNetwork,\n} from \"@/account-ownership/data/AccountOwnershipDataSource\";\nimport { accountOwnershipTypes } from \"@/account-ownership/di/accountOwnershipTypes\";\nimport { pkiTypes } from \"@/pki/di/pkiTypes\";\nimport { type PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport { type ContextLoader } from \"@/shared/domain/ContextLoader\";\nimport {\n type ClearSignContext,\n ClearSignContextType,\n} from \"@/shared/model/ClearSignContext\";\n\nexport type AccountOwnershipContextInput = {\n publicKey: string;\n address: string;\n network: AccountOwnershipNetwork;\n deviceModelId: DeviceModelId;\n challenge: string;\n};\n\nconst SUPPORTED_TYPES: ClearSignContextType[] = [\n ClearSignContextType.ACCOUNT_OWNERSHIP,\n];\n\n@injectable()\nexport class AccountOwnershipContextLoader\n implements ContextLoader<AccountOwnershipContextInput>\n{\n constructor(\n @inject(accountOwnershipTypes.AccountOwnershipDataSource)\n private readonly _dataSource: AccountOwnershipDataSource,\n @inject(pkiTypes.PkiCertificateLoader)\n private readonly _certificateLoader: PkiCertificateLoader,\n ) {}\n\n canHandle(\n input: unknown,\n expectedTypes: ClearSignContextType[],\n ): input is AccountOwnershipContextInput {\n return (\n SUPPORTED_TYPES.every((type) => expectedTypes.includes(type)) &&\n typeof input === \"object\" &&\n input !== null &&\n \"publicKey\" in input &&\n typeof input.publicKey === \"string\" &&\n input.publicKey.length > 0 &&\n \"address\" in input &&\n typeof input.address === \"string\" &&\n input.address.length > 0 &&\n \"network\" in input &&\n (input.network === \"mainnet\" || input.network === \"testnet\") &&\n \"deviceModelId\" in input &&\n input.deviceModelId !== undefined &&\n \"challenge\" in input &&\n typeof input.challenge === \"string\" &&\n input.challenge.length > 0\n );\n }\n\n async load({\n publicKey,\n address,\n network,\n deviceModelId,\n challenge,\n }: AccountOwnershipContextInput): Promise<ClearSignContext[]> {\n const descriptor = await this._dataSource.getDescriptor({\n publicKey,\n address,\n challenge,\n network,\n });\n\n return descriptor.caseOf({\n Left: (error): Promise<ClearSignContext[]> =>\n Promise.resolve([\n {\n type: ClearSignContextType.ERROR,\n error,\n },\n ]),\n Right: async (result): Promise<ClearSignContext[]> => [\n {\n type: ClearSignContextType.ACCOUNT_OWNERSHIP,\n payload: result.signedDescriptor,\n certificate: await this._certificateLoader.loadCertificate({\n keyId: result.keyId,\n keyUsage: result.keyUsage,\n targetDevice: deviceModelId,\n }),\n },\n ],\n });\n }\n}\n"],
5
+ "mappings": "iOACA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YAMnC,OAAS,yBAAAC,MAA6B,+CACtC,OAAS,YAAAC,MAAgB,oBAGzB,OAEE,wBAAAC,MACK,kCAUP,MAAMC,EAA0C,CAC9CC,EAAqB,iBACvB,EAGO,IAAMC,EAAN,KAEP,CACE,YAEmBC,EAEAC,EACjB,CAHiB,iBAAAD,EAEA,wBAAAC,CAChB,CAEH,UACEC,EACAC,EACuC,CACvC,OACEN,EAAgB,MAAOO,GAASD,EAAc,SAASC,CAAI,CAAC,GAC5D,OAAOF,GAAU,UACjBA,IAAU,MACV,cAAeA,GACf,OAAOA,EAAM,WAAc,UAC3BA,EAAM,UAAU,OAAS,GACzB,YAAaA,GACb,OAAOA,EAAM,SAAY,UACzBA,EAAM,QAAQ,OAAS,GACvB,YAAaA,IACZA,EAAM,UAAY,WAAaA,EAAM,UAAY,YAClD,kBAAmBA,GACnBA,EAAM,gBAAkB,QACxB,cAAeA,GACf,OAAOA,EAAM,WAAc,UAC3BA,EAAM,UAAU,OAAS,CAE7B,CAEA,MAAM,KAAK,CACT,UAAAG,EACA,QAAAC,EACA,QAAAC,EACA,cAAAC,EACA,UAAAC,CACF,EAA8D,CAQ5D,OAPmB,MAAM,KAAK,YAAY,cAAc,CACtD,UAAAJ,EACA,QAAAC,EACA,UAAAG,EACA,QAAAF,CACF,CAAC,GAEiB,OAAO,CACvB,KAAOG,GACL,QAAQ,QAAQ,CACd,CACE,KAAMZ,EAAqB,MAC3B,MAAAY,CACF,CACF,CAAC,EACH,MAAO,MAAOC,GAAwC,CACpD,CACE,KAAMb,EAAqB,kBAC3B,QAASa,EAAO,iBAChB,YAAa,MAAM,KAAK,mBAAmB,gBAAgB,CACzD,MAAOA,EAAO,MACd,SAAUA,EAAO,SACjB,aAAcH,CAChB,CAAC,CACH,CACF,CACF,CAAC,CACH,CACF,EArEaT,EAANa,EAAA,CADNC,EAAW,EAKPC,EAAA,EAAAC,EAAOC,EAAsB,0BAA0B,GAEvDF,EAAA,EAAAC,EAAOE,EAAS,oBAAoB,IAN5BlB",
6
+ "names": ["inject", "injectable", "accountOwnershipTypes", "pkiTypes", "ClearSignContextType", "SUPPORTED_TYPES", "ClearSignContextType", "AccountOwnershipContextLoader", "_dataSource", "_certificateLoader", "input", "expectedTypes", "type", "publicKey", "address", "network", "deviceModelId", "challenge", "error", "result", "__decorateClass", "injectable", "__decorateParam", "inject", "accountOwnershipTypes", "pkiTypes"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{DeviceModelId as a}from"@ledgerhq/device-management-kit";import{Left as p,Right as s}from"purify-ts";import{AccountOwnershipContextLoader as u}from"../../account-ownership/domain/AccountOwnershipContextLoader";import{ClearSignContextType as o}from"../../shared/model/ClearSignContext";describe("AccountOwnershipContextLoader",()=>{const i={getDescriptor:vi.fn()},c={loadCertificate:vi.fn()},n=new u(i,c),l={keyUsageNumber:4,payload:new Uint8Array([1,2,3])},d={signedDescriptor:"account-ownership-descriptor-payload",keyId:"domain_metadata_key",keyUsage:"trusted_name"};beforeEach(()=>{vi.clearAllMocks(),vi.spyOn(c,"loadCertificate").mockResolvedValue(l)}),describe("canHandle",()=>{const e={publicKey:"abcdef1234567890",address:"3kFkntk2H5FGMzeR3GjQKPhdZK9LShKdPHsj2fiGKCdmDXj2WB",network:"mainnet",deviceModelId:a.FLEX,challenge:"0xabcdef"};it("should return true for valid input with ACCOUNT_OWNERSHIP type",()=>{expect(n.canHandle(e,[o.ACCOUNT_OWNERSHIP])).toBe(!0)}),it("should return false when expected types include unsupported types",()=>{expect(n.canHandle(e,[o.TOKEN])).toBe(!1),expect(n.canHandle(e,[o.TRUSTED_NAME])).toBe(!1)}),it("should return true when expected types include ACCOUNT_OWNERSHIP among others",()=>{expect(n.canHandle(e,[o.ACCOUNT_OWNERSHIP,o.TOKEN])).toBe(!0)}),it.each([[null,"null input"],[void 0,"undefined input"],[{},"empty object"],["string","string input"],[123,"number input"]])("should return false for %s",(t,r)=>{expect(n.canHandle(t,[o.ACCOUNT_OWNERSHIP])).toBe(!1)}),it.each([[{...e,publicKey:void 0},"missing publicKey"],[{...e,address:void 0},"missing address"],[{...e,network:void 0},"missing network"],[{...e,deviceModelId:void 0},"missing deviceModelId"],[{...e,challenge:void 0},"missing challenge"]])("should return false for %s",(t,r)=>{expect(n.canHandle(t,[o.ACCOUNT_OWNERSHIP])).toBe(!1)}),it.each([[{...e,publicKey:""},"empty publicKey"],[{...e,address:""},"empty address"],[{...e,challenge:""},"empty challenge"]])("should return false for %s",(t,r)=>{expect(n.canHandle(t,[o.ACCOUNT_OWNERSHIP])).toBe(!1)}),it("should return false for invalid network value",()=>{expect(n.canHandle({...e,network:"devnet"},[o.ACCOUNT_OWNERSHIP])).toBe(!1)}),it("should return true for testnet network",()=>{expect(n.canHandle({...e,network:"testnet"},[o.ACCOUNT_OWNERSHIP])).toBe(!0)}),it("should return true for different device models",()=>{for(const t of[a.NANO_S,a.NANO_SP,a.NANO_X,a.STAX,a.FLEX])expect(n.canHandle({...e,deviceModelId:t},[o.ACCOUNT_OWNERSHIP])).toBe(!0)})}),describe("load",()=>{const e={publicKey:"abcdef1234567890",address:"3kFkntk2H5FGMzeR3GjQKPhdZK9LShKdPHsj2fiGKCdmDXj2WB",network:"mainnet",deviceModelId:a.FLEX,challenge:"0xabcdef"};it("should return ACCOUNT_OWNERSHIP context with certificate",async()=>{vi.spyOn(i,"getDescriptor").mockResolvedValue(s(d));const t=await n.load(e);expect(i.getDescriptor).toHaveBeenCalledWith({publicKey:"abcdef1234567890",address:"3kFkntk2H5FGMzeR3GjQKPhdZK9LShKdPHsj2fiGKCdmDXj2WB",challenge:"0xabcdef",network:"mainnet"}),expect(c.loadCertificate).toHaveBeenCalledWith({keyId:"domain_metadata_key",keyUsage:"trusted_name",targetDevice:a.FLEX}),expect(t).toEqual([{type:o.ACCOUNT_OWNERSHIP,payload:"account-ownership-descriptor-payload",certificate:l}])}),it("should return ACCOUNT_OWNERSHIP context without certificate when loadCertificate returns undefined",async()=>{vi.spyOn(i,"getDescriptor").mockResolvedValue(s(d)),vi.spyOn(c,"loadCertificate").mockResolvedValue(void 0);const t=await n.load(e);expect(t).toEqual([{type:o.ACCOUNT_OWNERSHIP,payload:"account-ownership-descriptor-payload",certificate:void 0}])}),it("should return ERROR context when data source returns Left",async()=>{const t=new Error("Failed to get descriptor");vi.spyOn(i,"getDescriptor").mockResolvedValue(p(t));const r=await n.load(e);expect(r).toEqual([{type:o.ERROR,error:t}]),expect(c.loadCertificate).not.toHaveBeenCalled()}),it("should pass correct device model to certificate loader",async()=>{const t={...e,deviceModelId:a.NANO_X};vi.spyOn(i,"getDescriptor").mockResolvedValue(s(d)),await n.load(t),expect(c.loadCertificate).toHaveBeenCalledWith(expect.objectContaining({targetDevice:a.NANO_X}))}),it("should pass testnet network to data source",async()=>{const t={...e,network:"testnet"};vi.spyOn(i,"getDescriptor").mockResolvedValue(s(d)),await n.load(t),expect(i.getDescriptor).toHaveBeenCalledWith(expect.objectContaining({network:"testnet"}))}),it("should handle long descriptor payloads",async()=>{const t="a".repeat(1e3);vi.spyOn(i,"getDescriptor").mockResolvedValue(s({...d,signedDescriptor:t}));const r=await n.load(e);expect(r[0].payload).toBe(t)})})});
2
+ //# sourceMappingURL=AccountOwnershipContextLoader.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/account-ownership/domain/AccountOwnershipContextLoader.test.ts"],
4
+ "sourcesContent": ["import { DeviceModelId } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\n\nimport type {\n AccountOwnershipDataSource,\n AccountOwnershipDescriptor,\n} from \"@/account-ownership/data/AccountOwnershipDataSource\";\nimport {\n type AccountOwnershipContextInput,\n AccountOwnershipContextLoader,\n} from \"@/account-ownership/domain/AccountOwnershipContextLoader\";\nimport { type PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport { type PkiCertificate } from \"@/pki/model/PkiCertificate\";\nimport {\n type ClearSignContextSuccess,\n ClearSignContextType,\n} from \"@/shared/model/ClearSignContext\";\n\ndescribe(\"AccountOwnershipContextLoader\", () => {\n const mockDataSource: AccountOwnershipDataSource = {\n getDescriptor: vi.fn(),\n };\n const mockPkiCertificateLoader: PkiCertificateLoader = {\n loadCertificate: vi.fn(),\n };\n const loader = new AccountOwnershipContextLoader(\n mockDataSource,\n mockPkiCertificateLoader,\n );\n\n const mockCertificate: PkiCertificate = {\n keyUsageNumber: 4,\n payload: new Uint8Array([1, 2, 3]),\n };\n\n const mockDescriptor: AccountOwnershipDescriptor = {\n signedDescriptor: \"account-ownership-descriptor-payload\",\n keyId: \"domain_metadata_key\",\n keyUsage: \"trusted_name\",\n };\n\n beforeEach(() => {\n vi.clearAllMocks();\n vi.spyOn(mockPkiCertificateLoader, \"loadCertificate\").mockResolvedValue(\n mockCertificate,\n );\n });\n\n describe(\"canHandle\", () => {\n const validInput: AccountOwnershipContextInput = {\n publicKey: \"abcdef1234567890\",\n address: \"3kFkntk2H5FGMzeR3GjQKPhdZK9LShKdPHsj2fiGKCdmDXj2WB\",\n network: \"mainnet\",\n deviceModelId: DeviceModelId.FLEX,\n challenge: \"0xabcdef\",\n };\n\n it(\"should return true for valid input with ACCOUNT_OWNERSHIP type\", () => {\n expect(\n loader.canHandle(validInput, [ClearSignContextType.ACCOUNT_OWNERSHIP]),\n ).toBe(true);\n });\n\n it(\"should return false when expected types include unsupported types\", () => {\n expect(loader.canHandle(validInput, [ClearSignContextType.TOKEN])).toBe(\n false,\n );\n expect(\n loader.canHandle(validInput, [ClearSignContextType.TRUSTED_NAME]),\n ).toBe(false);\n });\n\n it(\"should return true when expected types include ACCOUNT_OWNERSHIP among others\", () => {\n expect(\n loader.canHandle(validInput, [\n ClearSignContextType.ACCOUNT_OWNERSHIP,\n ClearSignContextType.TOKEN,\n ]),\n ).toBe(true);\n });\n\n it.each([\n [null, \"null input\"],\n [undefined, \"undefined input\"],\n [{}, \"empty object\"],\n [\"string\", \"string input\"],\n [123, \"number input\"],\n ])(\"should return false for %s\", (input, _description) => {\n expect(\n loader.canHandle(input, [ClearSignContextType.ACCOUNT_OWNERSHIP]),\n ).toBe(false);\n });\n\n it.each([\n [{ ...validInput, publicKey: undefined }, \"missing publicKey\"],\n [{ ...validInput, address: undefined }, \"missing address\"],\n [{ ...validInput, network: undefined }, \"missing network\"],\n [{ ...validInput, deviceModelId: undefined }, \"missing deviceModelId\"],\n [{ ...validInput, challenge: undefined }, \"missing challenge\"],\n ])(\"should return false for %s\", (input, _description) => {\n expect(\n loader.canHandle(input, [ClearSignContextType.ACCOUNT_OWNERSHIP]),\n ).toBe(false);\n });\n\n it.each([\n [{ ...validInput, publicKey: \"\" }, \"empty publicKey\"],\n [{ ...validInput, address: \"\" }, \"empty address\"],\n [{ ...validInput, challenge: \"\" }, \"empty challenge\"],\n ])(\"should return false for %s\", (input, _description) => {\n expect(\n loader.canHandle(input, [ClearSignContextType.ACCOUNT_OWNERSHIP]),\n ).toBe(false);\n });\n\n it(\"should return false for invalid network value\", () => {\n expect(\n loader.canHandle({ ...validInput, network: \"devnet\" }, [\n ClearSignContextType.ACCOUNT_OWNERSHIP,\n ]),\n ).toBe(false);\n });\n\n it(\"should return true for testnet network\", () => {\n expect(\n loader.canHandle({ ...validInput, network: \"testnet\" }, [\n ClearSignContextType.ACCOUNT_OWNERSHIP,\n ]),\n ).toBe(true);\n });\n\n it(\"should return true for different device models\", () => {\n for (const deviceModelId of [\n DeviceModelId.NANO_S,\n DeviceModelId.NANO_SP,\n DeviceModelId.NANO_X,\n DeviceModelId.STAX,\n DeviceModelId.FLEX,\n ]) {\n expect(\n loader.canHandle({ ...validInput, deviceModelId }, [\n ClearSignContextType.ACCOUNT_OWNERSHIP,\n ]),\n ).toBe(true);\n }\n });\n });\n\n describe(\"load\", () => {\n const input: AccountOwnershipContextInput = {\n publicKey: \"abcdef1234567890\",\n address: \"3kFkntk2H5FGMzeR3GjQKPhdZK9LShKdPHsj2fiGKCdmDXj2WB\",\n network: \"mainnet\",\n deviceModelId: DeviceModelId.FLEX,\n challenge: \"0xabcdef\",\n };\n\n it(\"should return ACCOUNT_OWNERSHIP context with certificate\", async () => {\n // GIVEN\n vi.spyOn(mockDataSource, \"getDescriptor\").mockResolvedValue(\n Right(mockDescriptor),\n );\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(mockDataSource.getDescriptor).toHaveBeenCalledWith({\n publicKey: \"abcdef1234567890\",\n address: \"3kFkntk2H5FGMzeR3GjQKPhdZK9LShKdPHsj2fiGKCdmDXj2WB\",\n challenge: \"0xabcdef\",\n network: \"mainnet\",\n });\n expect(mockPkiCertificateLoader.loadCertificate).toHaveBeenCalledWith({\n keyId: \"domain_metadata_key\",\n keyUsage: \"trusted_name\",\n targetDevice: DeviceModelId.FLEX,\n });\n expect(result).toEqual([\n {\n type: ClearSignContextType.ACCOUNT_OWNERSHIP,\n payload: \"account-ownership-descriptor-payload\",\n certificate: mockCertificate,\n },\n ]);\n });\n\n it(\"should return ACCOUNT_OWNERSHIP context without certificate when loadCertificate returns undefined\", async () => {\n // GIVEN\n vi.spyOn(mockDataSource, \"getDescriptor\").mockResolvedValue(\n Right(mockDescriptor),\n );\n vi.spyOn(mockPkiCertificateLoader, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(result).toEqual([\n {\n type: ClearSignContextType.ACCOUNT_OWNERSHIP,\n payload: \"account-ownership-descriptor-payload\",\n certificate: undefined,\n },\n ]);\n });\n\n it(\"should return ERROR context when data source returns Left\", async () => {\n // GIVEN\n const error = new Error(\"Failed to get descriptor\");\n vi.spyOn(mockDataSource, \"getDescriptor\").mockResolvedValue(Left(error));\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(result).toEqual([\n {\n type: ClearSignContextType.ERROR,\n error,\n },\n ]);\n expect(mockPkiCertificateLoader.loadCertificate).not.toHaveBeenCalled();\n });\n\n it(\"should pass correct device model to certificate loader\", async () => {\n // GIVEN\n const inputNanoX = { ...input, deviceModelId: DeviceModelId.NANO_X };\n vi.spyOn(mockDataSource, \"getDescriptor\").mockResolvedValue(\n Right(mockDescriptor),\n );\n\n // WHEN\n await loader.load(inputNanoX);\n\n // THEN\n expect(mockPkiCertificateLoader.loadCertificate).toHaveBeenCalledWith(\n expect.objectContaining({\n targetDevice: DeviceModelId.NANO_X,\n }),\n );\n });\n\n it(\"should pass testnet network to data source\", async () => {\n // GIVEN\n const inputTestnet = { ...input, network: \"testnet\" as const };\n vi.spyOn(mockDataSource, \"getDescriptor\").mockResolvedValue(\n Right(mockDescriptor),\n );\n\n // WHEN\n await loader.load(inputTestnet);\n\n // THEN\n expect(mockDataSource.getDescriptor).toHaveBeenCalledWith(\n expect.objectContaining({\n network: \"testnet\",\n }),\n );\n });\n\n it(\"should handle long descriptor payloads\", async () => {\n // GIVEN\n const longPayload = \"a\".repeat(1000);\n vi.spyOn(mockDataSource, \"getDescriptor\").mockResolvedValue(\n Right({ ...mockDescriptor, signedDescriptor: longPayload }),\n );\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect((result[0] as ClearSignContextSuccess).payload).toBe(longPayload);\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["DeviceModelId", "Left", "Right", "AccountOwnershipContextLoader", "ClearSignContextType", "mockDataSource", "mockPkiCertificateLoader", "loader", "mockCertificate", "mockDescriptor", "validInput", "input", "_description", "deviceModelId", "result", "error", "inputNanoX", "inputTestnet", "longPayload"]
7
+ }
@@ -1,2 +1,2 @@
1
- var S=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var h=(l,e,t,r)=>{for(var i=r>1?void 0:r?I(e,t):e,n=l.length-1,o;n>=0;n--)(o=l[n])&&(i=(r?o(e,t,i):o(i))||i);return r&&i&&S(e,t,i),i},y=(l,e)=>(t,r)=>e(t,r,l);import M from"axios";import{inject as m,injectable as R}from"inversify";import{Left as c,Right as L}from"purify-ts";import{configTypes as x}from"../../config/di/configTypes";import{pkiTypes as O}from"../../pki/di/pkiTypes";import{KeyId as F}from"../../pki/model/KeyId";import{KeyUsage as G}from"../../pki/model/KeyUsage";import{LEDGER_CLIENT_VERSION_HEADER as k,LEDGER_ORIGIN_TOKEN_HEADER as U}from"../../shared/constant/HttpHeaders";import{ClearSignContextReferenceType as a,ClearSignContextType as f}from"../../shared/model/ClearSignContext";import{INFO_SIGNATURE_TAG as D}from"../../shared/model/SignatureTags";import{HexStringUtils as E}from"../../shared/utils/HexStringUtils";import j from"../../../package.json";let u=class{constructor(e,t,r){this.config=e;this._certificateLoader=t;this.endpoint=r}async getCalldataDescriptors({chainId:e,address:t,selector:r,deviceModelId:i}){let n;try{n=(await M.request({method:"GET",url:`${this.config.cal.url}/${this.endpoint}`,params:{output:"descriptors_calldata",chain_id:e,contracts:t,contract_address:t,ref:`branch:${this.config.cal.branch}`},headers:{[k]:`context-module/${j.version}`,[U]:this.config.originToken}})).data}catch(o){return c(new Error(`[ContextModule] HttpCalldataDescriptorDataSource: Failed to fetch calldata descriptors: ${o}`))}if(!Array.isArray(n))return c(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Response is not an array"));if(n.length===0)return c(new Error(`[ContextModule] HttpCalldataDescriptorDataSource: No data for contract ${t} and selector ${r}`));for(const o of n){t=t.toLowerCase(),r=`0x${r.slice(2).toLowerCase()}`;const s=o.descriptors_calldata?.[t]?.[r];if(!s||!this.isCalldataDescriptorV1(s,this.config.cal.mode))continue;const V=s.transaction_info.descriptor.data,T=s.transaction_info.descriptor.signatures[this.config.cal.mode],g={targetDevice:i,keyUsage:G.Calldata,keyId:F.CalCalldataKey},C=await this._certificateLoader.loadCertificate(g),A={type:f.TRANSACTION_INFO,payload:E.appendSignatureToPayload(V,T,D),certificate:C},d=[];for(const[p,v]of Object.entries(s.enums))for(const[b,{data:P,signatures:N}]of Object.entries(v))d.push({type:f.ENUM,id:Number(p),value:Number(b),payload:E.appendSignatureToPayload(P,N[this.config.cal.mode],D),certificate:C});const _=s.fields.map(p=>({type:f.TRANSACTION_FIELD_DESCRIPTION,payload:p.descriptor,reference:this.getReference(p.param)}));return L([A,...d,..._])}return c(new Error(`[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract ${t} and selector ${r}`))}getReference(e){if(e.type==="TOKEN_AMOUNT"&&e.token!==void 0&&e.token.type==="path")return{type:a.TOKEN,valuePath:this.toGenericPath(e.token.binary_path)};if(e.type==="TOKEN_AMOUNT"&&e.token!==void 0&&e.token.type==="constant")return{type:a.TOKEN,value:e.token.value};if(e.type==="NFT"&&e.collection.type==="path")return{type:a.NFT,valuePath:this.toGenericPath(e.collection.binary_path)};if(e.type==="NFT"&&e.collection.type==="constant")return{type:a.NFT,value:e.collection.value};if(e.type==="TRUSTED_NAME"&&e.value.type==="path")return{type:a.TRUSTED_NAME,valuePath:this.toGenericPath(e.value.binary_path),types:e.types,sources:e.sources};if(e.type==="ENUM"&&e.value.type==="path")return{type:a.ENUM,valuePath:this.toGenericPath(e.value.binary_path),id:e.id};if(e.type==="CALLDATA"&&e.value.type==="path"&&e.callee.type==="path")return{type:a.CALLDATA,valuePath:this.toGenericPath(e.value.binary_path),callee:this.toGenericPath(e.callee.binary_path),selector:e.selector?.type==="path"?this.toGenericPath(e.selector.binary_path):void 0,amount:e.amount?.type==="path"?this.toGenericPath(e.amount.binary_path):void 0,spender:e.spender?.type==="path"?this.toGenericPath(e.spender.binary_path):void 0,chainId:e.chainId?.type==="path"?this.toGenericPath(e.chainId.binary_path):void 0}}toGenericPath(e){return e.type==="CONTAINER"?e.value:e.elements.map(t=>{if(t.type==="ARRAY"){const{weight:r,...i}=t;return{itemSize:r,...i}}else if(t.type==="LEAF"){const{leaf_type:r,...i}=t;return{leafType:r,...i}}return t})}isCalldataDescriptorV1(e,t){return typeof e=="object"&&e.type==="calldata"&&e.version==="v1"&&this.isTransactionInfoV1(e.transaction_info,t)&&this.isEnumV1(e.enums,t)&&Array.isArray(e.fields)&&e.fields.every(r=>this.isFieldV1(r))}isTransactionInfoV1(e,t){return typeof e=="object"&&typeof e.descriptor=="object"&&typeof e.descriptor.data=="string"&&typeof e.descriptor.signatures=="object"&&typeof e.descriptor.signatures[t]=="string"}isEnumV1(e,t){return typeof e=="object"&&Object.entries(e).every(([r,i])=>typeof r=="string"&&typeof i=="object"&&Object.entries(i).every(([n,o])=>typeof n=="string"&&typeof o=="object"&&typeof o.data=="string"&&o.signatures!==void 0&&this.isCalldataSignatures(o.signatures,t)))}isCalldataSignatures(e,t){return typeof e=="object"&&typeof e[t]=="string"}isFieldV1(e){return typeof e=="object"&&typeof e.descriptor=="string"&&typeof e.param=="object"&&typeof e.param.value=="object"&&this.isDescriptorValueV1(e.param.value)&&(e.param.type==="RAW"||e.param.type==="AMOUNT"||e.param.type==="DATETIME"||e.param.type==="DURATION"||e.param.type==="UNIT"||e.param.type==="ENUM"||e.param.type==="NFT"&&this.isDescriptorValueV1(e.param.collection)||e.param.type==="TOKEN_AMOUNT"&&(e.param.token===void 0||this.isDescriptorValueV1(e.param.token))||e.param.type==="TRUSTED_NAME"&&Array.isArray(e.param.types)&&Array.isArray(e.param.sources)&&e.param.types.every(t=>typeof t=="string")&&e.param.sources.every(t=>typeof t=="string")||e.param.type==="CALLDATA"&&this.isDescriptorValueV1(e.param.value)&&this.isDescriptorValueV1(e.param.callee)&&(e.param.selector===void 0||this.isDescriptorValueV1(e.param.selector))&&(e.param.amount===void 0||this.isDescriptorValueV1(e.param.amount))&&(e.param.spender===void 0||this.isDescriptorValueV1(e.param.spender))&&(e.param.chainId===void 0||this.isDescriptorValueV1(e.param.chainId)))}isDescriptorValueV1(e){return typeof e=="object"&&typeof e.type_family=="string"&&["UINT","INT","UFIXED","FIXED","ADDRESS","BOOL","BYTES","STRING"].includes(e.type_family)&&(typeof e.type_size>"u"||typeof e.type_size=="number")&&(e.type==="path"&&this.isCalldataDescriptorValueBinaryPathV1(e)||e.type==="constant"&&this.isCalldataDescriptorValueConstantV1(e))}isCalldataDescriptorValueConstantV1(e){return typeof e=="object"&&e.type==="constant"&&typeof e.value=="string"}isCalldataDescriptorValueBinaryPathV1(e){return typeof e=="object"&&(e.type==="path"&&e.binary_path.type==="CONTAINER"&&["FROM","TO","VALUE"].includes(e.binary_path.value)||e.binary_path.type==="DATA"&&Array.isArray(e.binary_path.elements)&&e.binary_path.elements.every(t=>this.isPathElementV1(t)))}isPathElementV1(e){return typeof e=="object"&&(e.type==="REF"||e.type==="TUPLE"&&typeof e.offset=="number"||e.type==="ARRAY"&&typeof e.weight=="number"&&(typeof e.start>"u"||typeof e.start=="number")&&(typeof e.end>"u"||typeof e.end=="number")||e.type==="LEAF"&&typeof e.leaf_type=="string"&&["ARRAY_LEAF","TUPLE_LEAF","STATIC_LEAF","DYNAMIC_LEAF"].includes(e.leaf_type)||e.type==="SLICE"&&(typeof e.start>"u"||typeof e.start=="number")&&(typeof e.end>"u"||typeof e.end=="number"))}};u=h([R(),y(0,m(x.Config)),y(1,m(O.PkiCertificateLoader))],u);export{u as HttpCalldataDescriptorDataSource};
1
+ var S=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var m=(l,e,t,r)=>{for(var i=r>1?void 0:r?I(e,t):e,n=l.length-1,o;n>=0;n--)(o=l[n])&&(i=(r?o(e,t,i):o(i))||i);return r&&i&&S(e,t,i),i},c=(l,e)=>(t,r)=>e(t,r,l);import{inject as f,injectable as M}from"inversify";import{Left as y,Right as R}from"purify-ts";import{configTypes as k}from"../../config/di/configTypes";import{networkTypes as x}from"../../network/di/networkTypes";import{pkiTypes as L}from"../../pki/di/pkiTypes";import{KeyId as O}from"../../pki/model/KeyId";import{KeyUsage as F}from"../../pki/model/KeyUsage";import{ClearSignContextReferenceType as a,ClearSignContextType as C}from"../../shared/model/ClearSignContext";import{INFO_SIGNATURE_TAG as D}from"../../shared/model/SignatureTags";import{HexStringUtils as V}from"../../shared/utils/HexStringUtils";let u=class{constructor(e,t,r,i){this.config=e;this._certificateLoader=t;this.endpoint=r;this.http=i}async getCalldataDescriptors({chainId:e,address:t,selector:r,deviceModelId:i}){let n;try{n=await this.http.get(`${this.config.cal.url}/${this.endpoint}`,{params:{output:"descriptors_calldata",chain_id:e,contracts:t,contract_address:t,ref:`branch:${this.config.cal.branch}`}})}catch(o){return y(new Error(`[ContextModule] HttpCalldataDescriptorDataSource: Failed to fetch calldata descriptors: ${o}`))}if(!Array.isArray(n))return y(new Error("[ContextModule] HttpCalldataDescriptorDataSource: Response is not an array"));if(n.length===0)return y(new Error(`[ContextModule] HttpCalldataDescriptorDataSource: No data for contract ${t} and selector ${r}`));for(const o of n){t=t.toLowerCase(),r=`0x${r.slice(2).toLowerCase()}`;const s=o.descriptors_calldata?.[t]?.[r];if(!s||!this.isCalldataDescriptorV1(s,this.config.cal.mode))continue;const g=s.transaction_info.descriptor.data,T=s.transaction_info.descriptor.signatures[this.config.cal.mode],A={targetDevice:i,keyUsage:F.Calldata,keyId:O.CalCalldataKey},d=await this._certificateLoader.loadCertificate(A),E={type:C.TRANSACTION_INFO,payload:V.appendSignatureToPayload(g,T,D),certificate:d},h=[];for(const[p,_]of Object.entries(s.enums))for(const[b,{data:P,signatures:N}]of Object.entries(_))h.push({type:C.ENUM,id:Number(p),value:Number(b),payload:V.appendSignatureToPayload(P,N[this.config.cal.mode],D),certificate:d});const v=s.fields.map(p=>({type:C.TRANSACTION_FIELD_DESCRIPTION,payload:p.descriptor,reference:this.getReference(p.param)}));return R([E,...h,...v])}return y(new Error(`[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract ${t} and selector ${r}`))}getReference(e){if(e.type==="TOKEN_AMOUNT"&&e.token!==void 0&&e.token.type==="path")return{type:a.TOKEN,valuePath:this.toGenericPath(e.token.binary_path)};if(e.type==="TOKEN_AMOUNT"&&e.token!==void 0&&e.token.type==="constant")return{type:a.TOKEN,value:e.token.value};if(e.type==="NFT"&&e.collection.type==="path")return{type:a.NFT,valuePath:this.toGenericPath(e.collection.binary_path)};if(e.type==="NFT"&&e.collection.type==="constant")return{type:a.NFT,value:e.collection.value};if(e.type==="TRUSTED_NAME"&&e.value.type==="path")return{type:a.TRUSTED_NAME,valuePath:this.toGenericPath(e.value.binary_path),types:e.types,sources:e.sources};if(e.type==="ENUM"&&e.value.type==="path")return{type:a.ENUM,valuePath:this.toGenericPath(e.value.binary_path),id:e.id};if(e.type==="CALLDATA"&&e.value.type==="path"&&e.callee.type==="path")return{type:a.CALLDATA,valuePath:this.toGenericPath(e.value.binary_path),callee:this.toGenericPath(e.callee.binary_path),selector:e.selector?.type==="path"?this.toGenericPath(e.selector.binary_path):void 0,amount:e.amount?.type==="path"?this.toGenericPath(e.amount.binary_path):void 0,spender:e.spender?.type==="path"?this.toGenericPath(e.spender.binary_path):void 0,chainId:e.chainId?.type==="path"?this.toGenericPath(e.chainId.binary_path):void 0}}toGenericPath(e){return e.type==="CONTAINER"?e.value:e.elements.map(t=>{if(t.type==="ARRAY"){const{weight:r,...i}=t;return{itemSize:r,...i}}else if(t.type==="LEAF"){const{leaf_type:r,...i}=t;return{leafType:r,...i}}return t})}isCalldataDescriptorV1(e,t){return typeof e=="object"&&e.type==="calldata"&&e.version==="v1"&&this.isTransactionInfoV1(e.transaction_info,t)&&this.isEnumV1(e.enums,t)&&Array.isArray(e.fields)&&e.fields.every(r=>this.isFieldV1(r))}isTransactionInfoV1(e,t){return typeof e=="object"&&typeof e.descriptor=="object"&&typeof e.descriptor.data=="string"&&typeof e.descriptor.signatures=="object"&&typeof e.descriptor.signatures[t]=="string"}isEnumV1(e,t){return typeof e=="object"&&Object.entries(e).every(([r,i])=>typeof r=="string"&&typeof i=="object"&&Object.entries(i).every(([n,o])=>typeof n=="string"&&typeof o=="object"&&typeof o.data=="string"&&o.signatures!==void 0&&this.isCalldataSignatures(o.signatures,t)))}isCalldataSignatures(e,t){return typeof e=="object"&&typeof e[t]=="string"}isFieldV1(e){return typeof e=="object"&&typeof e.descriptor=="string"&&typeof e.param=="object"&&typeof e.param.value=="object"&&this.isDescriptorValueV1(e.param.value)&&(e.param.type==="RAW"||e.param.type==="AMOUNT"||e.param.type==="DATETIME"||e.param.type==="DURATION"||e.param.type==="UNIT"||e.param.type==="ENUM"||e.param.type==="NFT"&&this.isDescriptorValueV1(e.param.collection)||e.param.type==="TOKEN_AMOUNT"&&(e.param.token===void 0||this.isDescriptorValueV1(e.param.token))||e.param.type==="TRUSTED_NAME"&&Array.isArray(e.param.types)&&Array.isArray(e.param.sources)&&e.param.types.every(t=>typeof t=="string")&&e.param.sources.every(t=>typeof t=="string")||e.param.type==="CALLDATA"&&this.isDescriptorValueV1(e.param.value)&&this.isDescriptorValueV1(e.param.callee)&&(e.param.selector===void 0||this.isDescriptorValueV1(e.param.selector))&&(e.param.amount===void 0||this.isDescriptorValueV1(e.param.amount))&&(e.param.spender===void 0||this.isDescriptorValueV1(e.param.spender))&&(e.param.chainId===void 0||this.isDescriptorValueV1(e.param.chainId)))}isDescriptorValueV1(e){return typeof e=="object"&&typeof e.type_family=="string"&&["UINT","INT","UFIXED","FIXED","ADDRESS","BOOL","BYTES","STRING"].includes(e.type_family)&&(typeof e.type_size>"u"||typeof e.type_size=="number")&&(e.type==="path"&&this.isCalldataDescriptorValueBinaryPathV1(e)||e.type==="constant"&&this.isCalldataDescriptorValueConstantV1(e))}isCalldataDescriptorValueConstantV1(e){return typeof e=="object"&&e.type==="constant"&&typeof e.value=="string"}isCalldataDescriptorValueBinaryPathV1(e){return typeof e=="object"&&(e.type==="path"&&e.binary_path.type==="CONTAINER"&&["FROM","TO","VALUE"].includes(e.binary_path.value)||e.binary_path.type==="DATA"&&Array.isArray(e.binary_path.elements)&&e.binary_path.elements.every(t=>this.isPathElementV1(t)))}isPathElementV1(e){return typeof e=="object"&&(e.type==="REF"||e.type==="TUPLE"&&typeof e.offset=="number"||e.type==="ARRAY"&&typeof e.weight=="number"&&(typeof e.start>"u"||typeof e.start=="number")&&(typeof e.end>"u"||typeof e.end=="number")||e.type==="LEAF"&&typeof e.leaf_type=="string"&&["ARRAY_LEAF","TUPLE_LEAF","STATIC_LEAF","DYNAMIC_LEAF"].includes(e.leaf_type)||e.type==="SLICE"&&(typeof e.start>"u"||typeof e.start=="number")&&(typeof e.end>"u"||typeof e.end=="number"))}};u=m([M(),c(0,f(k.Config)),c(1,f(L.PkiCertificateLoader)),c(3,f(x.NetworkClient))],u);export{u as HttpCalldataDescriptorDataSource};
2
2
  //# sourceMappingURL=HttpCalldataDescriptorDataSource.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/calldata/data/HttpCalldataDescriptorDataSource.ts"],
4
- "sourcesContent": ["import axios from \"axios\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport {\n type ContextModuleCalMode,\n type ContextModuleServiceConfig,\n} from \"@/config/model/ContextModuleConfig\";\nimport { pkiTypes } from \"@/pki/di/pkiTypes\";\nimport { type PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport { KeyId } from \"@/pki/model/KeyId\";\nimport { KeyUsage } from \"@/pki/model/KeyUsage\";\nimport { PkiCertificate } from \"@/pki/model/PkiCertificate\";\nimport { PkiCertificateInfo } from \"@/pki/model/PkiCertificateInfo\";\nimport {\n LEDGER_CLIENT_VERSION_HEADER,\n LEDGER_ORIGIN_TOKEN_HEADER,\n} from \"@/shared/constant/HttpHeaders\";\nimport {\n ClearSignContextReference,\n ClearSignContextReferenceType,\n ClearSignContextSuccess,\n ClearSignContextType,\n} from \"@/shared/model/ClearSignContext\";\nimport { GenericPath } from \"@/shared/model/GenericPath\";\nimport { INFO_SIGNATURE_TAG } from \"@/shared/model/SignatureTags\";\nimport { HexStringUtils } from \"@/shared/utils/HexStringUtils\";\nimport PACKAGE from \"@root/package.json\";\n\nimport {\n CalldataDescriptor,\n CalldataDescriptorContainerPathV1,\n CalldataDescriptorParam,\n CalldataDescriptorPathElementsV1,\n CalldataDescriptorPathElementV1,\n CalldataDescriptorV1,\n CalldataDescriptorValueBinaryPathV1,\n CalldataDescriptorValueConstantV1,\n CalldataDescriptorValueV1,\n CalldataDto,\n CalldataEnumV1,\n CalldataFieldV1,\n CalldataSignatures,\n CalldataTransactionDescriptor,\n CalldataTransactionInfoV1,\n} from \"./dto/CalldataDto\";\nimport {\n CalldataDescriptorDataSource,\n GetCalldataDescriptorsParams,\n} from \"./CalldataDescriptorDataSource\";\n\n@injectable()\nexport class HttpCalldataDescriptorDataSource\n implements CalldataDescriptorDataSource\n{\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n @inject(pkiTypes.PkiCertificateLoader)\n private readonly _certificateLoader: PkiCertificateLoader,\n private readonly endpoint: string,\n ) {}\n\n public async getCalldataDescriptors({\n chainId,\n address,\n selector,\n deviceModelId,\n }: GetCalldataDescriptorsParams): Promise<\n Either<Error, ClearSignContextSuccess[]>\n > {\n let dto: CalldataDto[] | undefined;\n try {\n const response = await axios.request<CalldataDto[]>({\n method: \"GET\",\n url: `${this.config.cal.url}/${this.endpoint}`,\n params: {\n output: \"descriptors_calldata\",\n chain_id: chainId,\n contracts: address, // used for dapps\n contract_address: address, // used for tokens\n ref: `branch:${this.config.cal.branch}`,\n },\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n [LEDGER_ORIGIN_TOKEN_HEADER]: this.config.originToken,\n },\n });\n dto = response.data;\n } catch (error) {\n return Left(\n new Error(\n `[ContextModule] HttpCalldataDescriptorDataSource: Failed to fetch calldata descriptors: ${error}`,\n ),\n );\n }\n\n if (!Array.isArray(dto)) {\n return Left(\n new Error(\n `[ContextModule] HttpCalldataDescriptorDataSource: Response is not an array`,\n ),\n );\n }\n\n if (dto.length === 0) {\n return Left(\n new Error(\n `[ContextModule] HttpCalldataDescriptorDataSource: No data for contract ${address} and selector ${selector}`,\n ),\n );\n }\n\n for (const calldata of dto) {\n // Normalize the address and selector\n address = address.toLowerCase();\n selector = `0x${selector.slice(2).toLowerCase()}`;\n const calldataDescriptor =\n calldata.descriptors_calldata?.[address]?.[selector];\n\n if (\n !calldataDescriptor ||\n !this.isCalldataDescriptorV1(calldataDescriptor, this.config.cal.mode)\n ) {\n continue;\n }\n\n const infoData = calldataDescriptor.transaction_info.descriptor.data;\n const infoSignature =\n calldataDescriptor.transaction_info.descriptor.signatures[\n this.config.cal.mode\n ];\n\n const certificateInfos: PkiCertificateInfo = {\n targetDevice: deviceModelId,\n keyUsage: KeyUsage.Calldata,\n keyId: KeyId.CalCalldataKey,\n };\n const certificate: PkiCertificate | undefined =\n await this._certificateLoader.loadCertificate(certificateInfos);\n\n const info: ClearSignContextSuccess = {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: HexStringUtils.appendSignatureToPayload(\n infoData,\n infoSignature,\n INFO_SIGNATURE_TAG,\n ),\n certificate,\n };\n\n const enums: ClearSignContextSuccess[] = [];\n for (const [id, values] of Object.entries(calldataDescriptor.enums)) {\n for (const [\n value,\n { data, signatures },\n ] of Object.entries<CalldataTransactionDescriptor>(values)) {\n enums.push({\n type: ClearSignContextType.ENUM,\n id: Number(id),\n value: Number(value),\n payload: HexStringUtils.appendSignatureToPayload(\n data,\n signatures[this.config.cal.mode]!,\n INFO_SIGNATURE_TAG,\n ),\n certificate,\n });\n }\n }\n\n const fields: ClearSignContextSuccess[] = calldataDescriptor.fields.map(\n (field) => ({\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: field.descriptor,\n reference: this.getReference(field.param),\n }),\n );\n return Right([info, ...enums, ...fields]);\n }\n\n return Left(\n new Error(\n `[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract ${address} and selector ${selector}`,\n ),\n );\n }\n\n private getReference(\n param: CalldataDescriptorParam,\n ): ClearSignContextReference | undefined {\n if (\n param.type === \"TOKEN_AMOUNT\" &&\n param.token !== undefined &&\n param.token.type === \"path\"\n ) {\n return {\n type: ClearSignContextReferenceType.TOKEN,\n valuePath: this.toGenericPath(param.token.binary_path),\n };\n } else if (\n param.type === \"TOKEN_AMOUNT\" &&\n param.token !== undefined &&\n param.token.type === \"constant\"\n ) {\n return {\n type: ClearSignContextReferenceType.TOKEN,\n value: param.token.value,\n };\n } else if (param.type === \"NFT\" && param.collection.type === \"path\") {\n return {\n type: ClearSignContextReferenceType.NFT,\n valuePath: this.toGenericPath(param.collection.binary_path),\n };\n } else if (param.type === \"NFT\" && param.collection.type === \"constant\") {\n return {\n type: ClearSignContextReferenceType.NFT,\n value: param.collection.value,\n };\n } else if (param.type === \"TRUSTED_NAME\" && param.value.type === \"path\") {\n return {\n type: ClearSignContextReferenceType.TRUSTED_NAME,\n valuePath: this.toGenericPath(param.value.binary_path),\n types: param.types,\n sources: param.sources,\n };\n } else if (param.type === \"ENUM\" && param.value.type === \"path\") {\n return {\n type: ClearSignContextReferenceType.ENUM,\n valuePath: this.toGenericPath(param.value.binary_path),\n id: param.id,\n };\n } else if (\n param.type === \"CALLDATA\" &&\n param.value.type === \"path\" &&\n param.callee.type === \"path\"\n ) {\n return {\n type: ClearSignContextReferenceType.CALLDATA,\n valuePath: this.toGenericPath(param.value.binary_path),\n callee: this.toGenericPath(param.callee.binary_path),\n selector:\n param.selector?.type === \"path\"\n ? this.toGenericPath(param.selector.binary_path)\n : undefined,\n amount:\n param.amount?.type === \"path\"\n ? this.toGenericPath(param.amount.binary_path)\n : undefined,\n spender:\n param.spender?.type === \"path\"\n ? this.toGenericPath(param.spender.binary_path)\n : undefined,\n chainId:\n param.chainId?.type === \"path\"\n ? this.toGenericPath(param.chainId.binary_path)\n : undefined,\n };\n }\n return undefined;\n }\n\n private toGenericPath(\n path: CalldataDescriptorContainerPathV1 | CalldataDescriptorPathElementsV1,\n ): GenericPath {\n if (path.type === \"CONTAINER\") {\n return path.value;\n }\n return path.elements.map((element) => {\n if (element.type === \"ARRAY\") {\n const { weight: itemSize, ...rest } = element;\n return {\n itemSize,\n ...rest,\n };\n } else if (element.type === \"LEAF\") {\n const { leaf_type: leafType, ...rest } = element;\n return {\n leafType,\n ...rest,\n };\n }\n return element;\n });\n }\n\n private isCalldataDescriptorV1(\n data: CalldataDescriptor,\n mode: ContextModuleCalMode,\n ): data is CalldataDescriptorV1 & {\n transaction_info: {\n descriptor: {\n signatures: { [_key in ContextModuleCalMode]: string };\n };\n };\n } {\n return (\n typeof data === \"object\" &&\n data.type === \"calldata\" &&\n data.version === \"v1\" &&\n this.isTransactionInfoV1(data.transaction_info, mode) &&\n this.isEnumV1(data.enums, mode) &&\n Array.isArray(data.fields) &&\n data.fields.every((f) => this.isFieldV1(f))\n );\n }\n\n private isTransactionInfoV1(\n data: CalldataTransactionInfoV1,\n mode: ContextModuleCalMode,\n ): data is CalldataTransactionInfoV1 & {\n descriptor: {\n signatures: { [_key in ContextModuleCalMode]: string };\n };\n } {\n return (\n typeof data === \"object\" &&\n typeof data.descriptor === \"object\" &&\n typeof data.descriptor.data === \"string\" &&\n typeof data.descriptor.signatures === \"object\" &&\n typeof data.descriptor.signatures[mode] === \"string\"\n );\n }\n\n private isEnumV1(\n calldata: CalldataEnumV1,\n mode: ContextModuleCalMode,\n ): calldata is CalldataEnumV1 {\n return (\n typeof calldata === \"object\" &&\n Object.entries(calldata).every(\n ([id, values]) =>\n typeof id === \"string\" &&\n typeof values === \"object\" &&\n Object.entries<CalldataTransactionDescriptor>(values).every(\n ([value, obj]) =>\n typeof value === \"string\" &&\n typeof obj === \"object\" &&\n typeof obj.data === \"string\" &&\n obj.signatures !== undefined &&\n this.isCalldataSignatures(obj.signatures, mode),\n ),\n )\n );\n }\n\n private isCalldataSignatures(\n data: CalldataSignatures,\n mode: ContextModuleCalMode,\n ): data is CalldataSignatures & { [_key in ContextModuleCalMode]: string } {\n return typeof data === \"object\" && typeof data[mode] === \"string\";\n }\n\n private isFieldV1(data: CalldataFieldV1): boolean {\n return (\n typeof data === \"object\" &&\n typeof data.descriptor === \"string\" &&\n typeof data.param === \"object\" &&\n typeof data.param.value === \"object\" &&\n this.isDescriptorValueV1(data.param.value) &&\n (data.param.type === \"RAW\" ||\n data.param.type === \"AMOUNT\" ||\n data.param.type === \"DATETIME\" ||\n data.param.type === \"DURATION\" ||\n data.param.type === \"UNIT\" ||\n data.param.type === \"ENUM\" ||\n (data.param.type === \"NFT\" &&\n this.isDescriptorValueV1(data.param.collection)) ||\n (data.param.type === \"TOKEN_AMOUNT\" &&\n (data.param.token === undefined ||\n this.isDescriptorValueV1(data.param.token))) ||\n (data.param.type === \"TRUSTED_NAME\" &&\n Array.isArray(data.param.types) &&\n Array.isArray(data.param.sources) &&\n data.param.types.every((t) => typeof t === \"string\") &&\n data.param.sources.every((t) => typeof t === \"string\")) ||\n (data.param.type === \"CALLDATA\" &&\n this.isDescriptorValueV1(data.param.value) &&\n this.isDescriptorValueV1(data.param.callee) &&\n (data.param.selector === undefined ||\n this.isDescriptorValueV1(data.param.selector)) &&\n (data.param.amount === undefined ||\n this.isDescriptorValueV1(data.param.amount)) &&\n (data.param.spender === undefined ||\n this.isDescriptorValueV1(data.param.spender)) &&\n (data.param.chainId === undefined ||\n this.isDescriptorValueV1(data.param.chainId))))\n );\n }\n\n private isDescriptorValueV1(data: CalldataDescriptorValueV1): boolean {\n return (\n typeof data === \"object\" &&\n typeof data.type_family === \"string\" &&\n [\n \"UINT\",\n \"INT\",\n \"UFIXED\",\n \"FIXED\",\n \"ADDRESS\",\n \"BOOL\",\n \"BYTES\",\n \"STRING\",\n ].includes(data.type_family) &&\n (typeof data.type_size === \"undefined\" ||\n typeof data.type_size === \"number\") &&\n ((data.type === \"path\" &&\n this.isCalldataDescriptorValueBinaryPathV1(data)) ||\n (data.type === \"constant\" &&\n this.isCalldataDescriptorValueConstantV1(data)))\n );\n }\n\n private isCalldataDescriptorValueConstantV1(\n data: CalldataDescriptorValueConstantV1,\n ): boolean {\n return (\n typeof data === \"object\" &&\n data.type === \"constant\" &&\n typeof data.value === \"string\"\n );\n }\n\n private isCalldataDescriptorValueBinaryPathV1(\n data: CalldataDescriptorValueBinaryPathV1,\n ): boolean {\n return (\n typeof data === \"object\" &&\n ((data.type === \"path\" &&\n data.binary_path.type === \"CONTAINER\" &&\n [\"FROM\", \"TO\", \"VALUE\"].includes(data.binary_path.value)) ||\n (data.binary_path.type === \"DATA\" &&\n Array.isArray(data.binary_path.elements) &&\n data.binary_path.elements.every((e) => this.isPathElementV1(e))))\n );\n }\n\n private isPathElementV1(data: CalldataDescriptorPathElementV1): boolean {\n return (\n typeof data === \"object\" &&\n (data.type === \"REF\" ||\n (data.type === \"TUPLE\" && typeof data.offset === \"number\") ||\n (data.type === \"ARRAY\" &&\n typeof data.weight === \"number\" &&\n (typeof data.start === \"undefined\" ||\n typeof data.start === \"number\") &&\n (typeof data.end === \"undefined\" || typeof data.end === \"number\")) ||\n (data.type === \"LEAF\" &&\n typeof data.leaf_type === \"string\" &&\n [\"ARRAY_LEAF\", \"TUPLE_LEAF\", \"STATIC_LEAF\", \"DYNAMIC_LEAF\"].includes(\n data.leaf_type,\n )) ||\n (data.type === \"SLICE\" &&\n (typeof data.start === \"undefined\" ||\n typeof data.start === \"number\") &&\n (typeof data.end === \"undefined\" || typeof data.end === \"number\")))\n );\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["axios", "inject", "injectable", "Left", "Right", "configTypes", "pkiTypes", "KeyId", "KeyUsage", "LEDGER_CLIENT_VERSION_HEADER", "LEDGER_ORIGIN_TOKEN_HEADER", "ClearSignContextReferenceType", "ClearSignContextType", "INFO_SIGNATURE_TAG", "HexStringUtils", "PACKAGE", "HttpCalldataDescriptorDataSource", "config", "_certificateLoader", "endpoint", "chainId", "address", "selector", "deviceModelId", "dto", "axios", "LEDGER_CLIENT_VERSION_HEADER", "PACKAGE", "LEDGER_ORIGIN_TOKEN_HEADER", "error", "Left", "calldata", "calldataDescriptor", "infoData", "infoSignature", "certificateInfos", "KeyUsage", "KeyId", "certificate", "info", "ClearSignContextType", "HexStringUtils", "INFO_SIGNATURE_TAG", "enums", "id", "values", "value", "data", "signatures", "fields", "field", "Right", "param", "ClearSignContextReferenceType", "path", "element", "itemSize", "rest", "leafType", "mode", "f", "obj", "e", "__decorateClass", "injectable", "__decorateParam", "inject", "configTypes", "pkiTypes"]
4
+ "sourcesContent": ["import { DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport {\n type ContextModuleCalMode,\n type ContextModuleServiceConfig,\n} from \"@/config/model/ContextModuleConfig\";\nimport { networkTypes } from \"@/network/di/networkTypes\";\nimport { pkiTypes } from \"@/pki/di/pkiTypes\";\nimport { type PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport { KeyId } from \"@/pki/model/KeyId\";\nimport { KeyUsage } from \"@/pki/model/KeyUsage\";\nimport { PkiCertificate } from \"@/pki/model/PkiCertificate\";\nimport { PkiCertificateInfo } from \"@/pki/model/PkiCertificateInfo\";\nimport {\n ClearSignContextReference,\n ClearSignContextReferenceType,\n ClearSignContextSuccess,\n ClearSignContextType,\n} from \"@/shared/model/ClearSignContext\";\nimport { GenericPath } from \"@/shared/model/GenericPath\";\nimport { INFO_SIGNATURE_TAG } from \"@/shared/model/SignatureTags\";\nimport { HexStringUtils } from \"@/shared/utils/HexStringUtils\";\n\nimport {\n CalldataDescriptor,\n CalldataDescriptorContainerPathV1,\n CalldataDescriptorParam,\n CalldataDescriptorPathElementsV1,\n CalldataDescriptorPathElementV1,\n CalldataDescriptorV1,\n CalldataDescriptorValueBinaryPathV1,\n CalldataDescriptorValueConstantV1,\n CalldataDescriptorValueV1,\n CalldataDto,\n CalldataEnumV1,\n CalldataFieldV1,\n CalldataSignatures,\n CalldataTransactionDescriptor,\n CalldataTransactionInfoV1,\n} from \"./dto/CalldataDto\";\nimport {\n CalldataDescriptorDataSource,\n GetCalldataDescriptorsParams,\n} from \"./CalldataDescriptorDataSource\";\n\n@injectable()\nexport class HttpCalldataDescriptorDataSource\n implements CalldataDescriptorDataSource\n{\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n @inject(pkiTypes.PkiCertificateLoader)\n private readonly _certificateLoader: PkiCertificateLoader,\n private readonly endpoint: string,\n @inject(networkTypes.NetworkClient)\n private readonly http: DmkNetworkClient,\n ) {}\n\n public async getCalldataDescriptors({\n chainId,\n address,\n selector,\n deviceModelId,\n }: GetCalldataDescriptorsParams): Promise<\n Either<Error, ClearSignContextSuccess[]>\n > {\n let dto: CalldataDto[] | undefined;\n try {\n dto = (await this.http.get(`${this.config.cal.url}/${this.endpoint}`, {\n params: {\n output: \"descriptors_calldata\",\n chain_id: chainId,\n contracts: address,\n contract_address: address,\n ref: `branch:${this.config.cal.branch}`,\n },\n })) as CalldataDto[];\n } catch (error) {\n return Left(\n new Error(\n `[ContextModule] HttpCalldataDescriptorDataSource: Failed to fetch calldata descriptors: ${error}`,\n ),\n );\n }\n\n if (!Array.isArray(dto)) {\n return Left(\n new Error(\n `[ContextModule] HttpCalldataDescriptorDataSource: Response is not an array`,\n ),\n );\n }\n\n if (dto.length === 0) {\n return Left(\n new Error(\n `[ContextModule] HttpCalldataDescriptorDataSource: No data for contract ${address} and selector ${selector}`,\n ),\n );\n }\n\n for (const calldata of dto) {\n // Normalize the address and selector\n address = address.toLowerCase();\n selector = `0x${selector.slice(2).toLowerCase()}`;\n const calldataDescriptor =\n calldata.descriptors_calldata?.[address]?.[selector];\n\n if (\n !calldataDescriptor ||\n !this.isCalldataDescriptorV1(calldataDescriptor, this.config.cal.mode)\n ) {\n continue;\n }\n\n const infoData = calldataDescriptor.transaction_info.descriptor.data;\n const infoSignature =\n calldataDescriptor.transaction_info.descriptor.signatures[\n this.config.cal.mode\n ];\n\n const certificateInfos: PkiCertificateInfo = {\n targetDevice: deviceModelId,\n keyUsage: KeyUsage.Calldata,\n keyId: KeyId.CalCalldataKey,\n };\n const certificate: PkiCertificate | undefined =\n await this._certificateLoader.loadCertificate(certificateInfos);\n\n const info: ClearSignContextSuccess = {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: HexStringUtils.appendSignatureToPayload(\n infoData,\n infoSignature,\n INFO_SIGNATURE_TAG,\n ),\n certificate,\n };\n\n const enums: ClearSignContextSuccess[] = [];\n for (const [id, values] of Object.entries(calldataDescriptor.enums)) {\n for (const [\n value,\n { data, signatures },\n ] of Object.entries<CalldataTransactionDescriptor>(values)) {\n enums.push({\n type: ClearSignContextType.ENUM,\n id: Number(id),\n value: Number(value),\n payload: HexStringUtils.appendSignatureToPayload(\n data,\n signatures[this.config.cal.mode]!,\n INFO_SIGNATURE_TAG,\n ),\n certificate,\n });\n }\n }\n\n const fields: ClearSignContextSuccess[] = calldataDescriptor.fields.map(\n (field) => ({\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: field.descriptor,\n reference: this.getReference(field.param),\n }),\n );\n return Right([info, ...enums, ...fields]);\n }\n\n return Left(\n new Error(\n `[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract ${address} and selector ${selector}`,\n ),\n );\n }\n\n private getReference(\n param: CalldataDescriptorParam,\n ): ClearSignContextReference | undefined {\n if (\n param.type === \"TOKEN_AMOUNT\" &&\n param.token !== undefined &&\n param.token.type === \"path\"\n ) {\n return {\n type: ClearSignContextReferenceType.TOKEN,\n valuePath: this.toGenericPath(param.token.binary_path),\n };\n } else if (\n param.type === \"TOKEN_AMOUNT\" &&\n param.token !== undefined &&\n param.token.type === \"constant\"\n ) {\n return {\n type: ClearSignContextReferenceType.TOKEN,\n value: param.token.value,\n };\n } else if (param.type === \"NFT\" && param.collection.type === \"path\") {\n return {\n type: ClearSignContextReferenceType.NFT,\n valuePath: this.toGenericPath(param.collection.binary_path),\n };\n } else if (param.type === \"NFT\" && param.collection.type === \"constant\") {\n return {\n type: ClearSignContextReferenceType.NFT,\n value: param.collection.value,\n };\n } else if (param.type === \"TRUSTED_NAME\" && param.value.type === \"path\") {\n return {\n type: ClearSignContextReferenceType.TRUSTED_NAME,\n valuePath: this.toGenericPath(param.value.binary_path),\n types: param.types,\n sources: param.sources,\n };\n } else if (param.type === \"ENUM\" && param.value.type === \"path\") {\n return {\n type: ClearSignContextReferenceType.ENUM,\n valuePath: this.toGenericPath(param.value.binary_path),\n id: param.id,\n };\n } else if (\n param.type === \"CALLDATA\" &&\n param.value.type === \"path\" &&\n param.callee.type === \"path\"\n ) {\n return {\n type: ClearSignContextReferenceType.CALLDATA,\n valuePath: this.toGenericPath(param.value.binary_path),\n callee: this.toGenericPath(param.callee.binary_path),\n selector:\n param.selector?.type === \"path\"\n ? this.toGenericPath(param.selector.binary_path)\n : undefined,\n amount:\n param.amount?.type === \"path\"\n ? this.toGenericPath(param.amount.binary_path)\n : undefined,\n spender:\n param.spender?.type === \"path\"\n ? this.toGenericPath(param.spender.binary_path)\n : undefined,\n chainId:\n param.chainId?.type === \"path\"\n ? this.toGenericPath(param.chainId.binary_path)\n : undefined,\n };\n }\n return undefined;\n }\n\n private toGenericPath(\n path: CalldataDescriptorContainerPathV1 | CalldataDescriptorPathElementsV1,\n ): GenericPath {\n if (path.type === \"CONTAINER\") {\n return path.value;\n }\n return path.elements.map((element) => {\n if (element.type === \"ARRAY\") {\n const { weight: itemSize, ...rest } = element;\n return {\n itemSize,\n ...rest,\n };\n } else if (element.type === \"LEAF\") {\n const { leaf_type: leafType, ...rest } = element;\n return {\n leafType,\n ...rest,\n };\n }\n return element;\n });\n }\n\n private isCalldataDescriptorV1(\n data: CalldataDescriptor,\n mode: ContextModuleCalMode,\n ): data is CalldataDescriptorV1 & {\n transaction_info: {\n descriptor: {\n signatures: { [_key in ContextModuleCalMode]: string };\n };\n };\n } {\n return (\n typeof data === \"object\" &&\n data.type === \"calldata\" &&\n data.version === \"v1\" &&\n this.isTransactionInfoV1(data.transaction_info, mode) &&\n this.isEnumV1(data.enums, mode) &&\n Array.isArray(data.fields) &&\n data.fields.every((f) => this.isFieldV1(f))\n );\n }\n\n private isTransactionInfoV1(\n data: CalldataTransactionInfoV1,\n mode: ContextModuleCalMode,\n ): data is CalldataTransactionInfoV1 & {\n descriptor: {\n signatures: { [_key in ContextModuleCalMode]: string };\n };\n } {\n return (\n typeof data === \"object\" &&\n typeof data.descriptor === \"object\" &&\n typeof data.descriptor.data === \"string\" &&\n typeof data.descriptor.signatures === \"object\" &&\n typeof data.descriptor.signatures[mode] === \"string\"\n );\n }\n\n private isEnumV1(\n calldata: CalldataEnumV1,\n mode: ContextModuleCalMode,\n ): calldata is CalldataEnumV1 {\n return (\n typeof calldata === \"object\" &&\n Object.entries(calldata).every(\n ([id, values]) =>\n typeof id === \"string\" &&\n typeof values === \"object\" &&\n Object.entries<CalldataTransactionDescriptor>(values).every(\n ([value, obj]) =>\n typeof value === \"string\" &&\n typeof obj === \"object\" &&\n typeof obj.data === \"string\" &&\n obj.signatures !== undefined &&\n this.isCalldataSignatures(obj.signatures, mode),\n ),\n )\n );\n }\n\n private isCalldataSignatures(\n data: CalldataSignatures,\n mode: ContextModuleCalMode,\n ): data is CalldataSignatures & { [_key in ContextModuleCalMode]: string } {\n return typeof data === \"object\" && typeof data[mode] === \"string\";\n }\n\n private isFieldV1(data: CalldataFieldV1): boolean {\n return (\n typeof data === \"object\" &&\n typeof data.descriptor === \"string\" &&\n typeof data.param === \"object\" &&\n typeof data.param.value === \"object\" &&\n this.isDescriptorValueV1(data.param.value) &&\n (data.param.type === \"RAW\" ||\n data.param.type === \"AMOUNT\" ||\n data.param.type === \"DATETIME\" ||\n data.param.type === \"DURATION\" ||\n data.param.type === \"UNIT\" ||\n data.param.type === \"ENUM\" ||\n (data.param.type === \"NFT\" &&\n this.isDescriptorValueV1(data.param.collection)) ||\n (data.param.type === \"TOKEN_AMOUNT\" &&\n (data.param.token === undefined ||\n this.isDescriptorValueV1(data.param.token))) ||\n (data.param.type === \"TRUSTED_NAME\" &&\n Array.isArray(data.param.types) &&\n Array.isArray(data.param.sources) &&\n data.param.types.every((t) => typeof t === \"string\") &&\n data.param.sources.every((t) => typeof t === \"string\")) ||\n (data.param.type === \"CALLDATA\" &&\n this.isDescriptorValueV1(data.param.value) &&\n this.isDescriptorValueV1(data.param.callee) &&\n (data.param.selector === undefined ||\n this.isDescriptorValueV1(data.param.selector)) &&\n (data.param.amount === undefined ||\n this.isDescriptorValueV1(data.param.amount)) &&\n (data.param.spender === undefined ||\n this.isDescriptorValueV1(data.param.spender)) &&\n (data.param.chainId === undefined ||\n this.isDescriptorValueV1(data.param.chainId))))\n );\n }\n\n private isDescriptorValueV1(data: CalldataDescriptorValueV1): boolean {\n return (\n typeof data === \"object\" &&\n typeof data.type_family === \"string\" &&\n [\n \"UINT\",\n \"INT\",\n \"UFIXED\",\n \"FIXED\",\n \"ADDRESS\",\n \"BOOL\",\n \"BYTES\",\n \"STRING\",\n ].includes(data.type_family) &&\n (typeof data.type_size === \"undefined\" ||\n typeof data.type_size === \"number\") &&\n ((data.type === \"path\" &&\n this.isCalldataDescriptorValueBinaryPathV1(data)) ||\n (data.type === \"constant\" &&\n this.isCalldataDescriptorValueConstantV1(data)))\n );\n }\n\n private isCalldataDescriptorValueConstantV1(\n data: CalldataDescriptorValueConstantV1,\n ): boolean {\n return (\n typeof data === \"object\" &&\n data.type === \"constant\" &&\n typeof data.value === \"string\"\n );\n }\n\n private isCalldataDescriptorValueBinaryPathV1(\n data: CalldataDescriptorValueBinaryPathV1,\n ): boolean {\n return (\n typeof data === \"object\" &&\n ((data.type === \"path\" &&\n data.binary_path.type === \"CONTAINER\" &&\n [\"FROM\", \"TO\", \"VALUE\"].includes(data.binary_path.value)) ||\n (data.binary_path.type === \"DATA\" &&\n Array.isArray(data.binary_path.elements) &&\n data.binary_path.elements.every((e) => this.isPathElementV1(e))))\n );\n }\n\n private isPathElementV1(data: CalldataDescriptorPathElementV1): boolean {\n return (\n typeof data === \"object\" &&\n (data.type === \"REF\" ||\n (data.type === \"TUPLE\" && typeof data.offset === \"number\") ||\n (data.type === \"ARRAY\" &&\n typeof data.weight === \"number\" &&\n (typeof data.start === \"undefined\" ||\n typeof data.start === \"number\") &&\n (typeof data.end === \"undefined\" || typeof data.end === \"number\")) ||\n (data.type === \"LEAF\" &&\n typeof data.leaf_type === \"string\" &&\n [\"ARRAY_LEAF\", \"TUPLE_LEAF\", \"STATIC_LEAF\", \"DYNAMIC_LEAF\"].includes(\n data.leaf_type,\n )) ||\n (data.type === \"SLICE\" &&\n (typeof data.start === \"undefined\" ||\n typeof data.start === \"number\") &&\n (typeof data.end === \"undefined\" || typeof data.end === \"number\")))\n );\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["inject", "injectable", "Left", "Right", "configTypes", "networkTypes", "pkiTypes", "KeyId", "KeyUsage", "ClearSignContextReferenceType", "ClearSignContextType", "INFO_SIGNATURE_TAG", "HexStringUtils", "HttpCalldataDescriptorDataSource", "config", "_certificateLoader", "endpoint", "http", "chainId", "address", "selector", "deviceModelId", "dto", "error", "Left", "calldata", "calldataDescriptor", "infoData", "infoSignature", "certificateInfos", "KeyUsage", "KeyId", "certificate", "info", "ClearSignContextType", "HexStringUtils", "INFO_SIGNATURE_TAG", "enums", "id", "values", "value", "data", "signatures", "fields", "field", "Right", "param", "ClearSignContextReferenceType", "path", "element", "itemSize", "rest", "leafType", "mode", "f", "obj", "e", "__decorateClass", "injectable", "__decorateParam", "inject", "configTypes", "pkiTypes", "networkTypes"]
7
7
  }