@ledgerhq/context-module 0.0.0-multisig-20250926152730 → 0.0.0-ng5-ble-ids-20260105102514

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 (460) hide show
  1. package/lib/cjs/package.json +38 -34
  2. package/lib/cjs/src/ContextModule.js +1 -1
  3. package/lib/cjs/src/ContextModule.js.map +1 -1
  4. package/lib/cjs/src/ContextModuleBuilder.js +1 -1
  5. package/lib/cjs/src/ContextModuleBuilder.js.map +2 -2
  6. package/lib/cjs/src/ContextModuleBuilder.test.js +1 -1
  7. package/lib/cjs/src/ContextModuleBuilder.test.js.map +2 -2
  8. package/lib/cjs/src/DefaultContextModule.js +1 -1
  9. package/lib/cjs/src/DefaultContextModule.js.map +3 -3
  10. package/lib/cjs/src/DefaultContextModule.test.js +1 -1
  11. package/lib/cjs/src/DefaultContextModule.test.js.map +3 -3
  12. package/lib/cjs/src/config/model/ContextModuleConfig.js +1 -1
  13. package/lib/cjs/src/config/model/ContextModuleConfig.js.map +1 -1
  14. package/lib/cjs/src/di.js +1 -1
  15. package/lib/cjs/src/di.js.map +3 -3
  16. package/lib/cjs/src/external-plugin/domain/ExternalPluginContextLoader.js +1 -1
  17. package/lib/cjs/src/external-plugin/domain/ExternalPluginContextLoader.js.map +3 -3
  18. package/lib/cjs/src/external-plugin/domain/ExternalPluginContextLoader.test.js +1 -1
  19. package/lib/cjs/src/external-plugin/domain/ExternalPluginContextLoader.test.js.map +3 -3
  20. package/lib/cjs/src/index.js +1 -1
  21. package/lib/cjs/src/index.js.map +2 -2
  22. package/lib/cjs/src/pki/model/KeyUsage.js +1 -1
  23. package/lib/cjs/src/pki/model/KeyUsage.js.map +2 -2
  24. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.js +2 -0
  25. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.js.map +7 -0
  26. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.test.js +2 -0
  27. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.test.js.map +7 -0
  28. package/lib/cjs/src/safe/data/SafeAccountDataSource.js +2 -0
  29. package/lib/cjs/src/safe/data/SafeAccountDataSource.js.map +7 -0
  30. package/lib/cjs/src/safe/data/dto/SafeAccountDto.js +2 -0
  31. package/lib/cjs/src/safe/data/dto/SafeAccountDto.js.map +7 -0
  32. package/lib/cjs/src/safe/di/safeModuleFactory.js +2 -0
  33. package/lib/cjs/src/safe/di/safeModuleFactory.js.map +7 -0
  34. package/lib/cjs/src/safe/di/safeModuleFactory.test.js +2 -0
  35. package/lib/cjs/src/safe/di/safeModuleFactory.test.js.map +7 -0
  36. package/lib/cjs/src/safe/di/safeTypes.js +2 -0
  37. package/lib/cjs/src/safe/di/safeTypes.js.map +7 -0
  38. package/lib/cjs/src/safe/domain/SafeAddressLoader.js +2 -0
  39. package/lib/cjs/src/safe/domain/SafeAddressLoader.js.map +7 -0
  40. package/lib/cjs/src/safe/domain/SafeAddressLoader.test.js +2 -0
  41. package/lib/cjs/src/safe/domain/SafeAddressLoader.test.js.map +7 -0
  42. package/lib/cjs/src/shared/domain/ContextFieldLoader.js +1 -1
  43. package/lib/cjs/src/shared/domain/ContextFieldLoader.js.map +1 -1
  44. package/lib/cjs/src/shared/model/ClearSignContext.js +1 -1
  45. package/lib/cjs/src/shared/model/ClearSignContext.js.map +2 -2
  46. package/lib/cjs/src/shared/model/SolanaContextTypes.js +2 -0
  47. package/lib/cjs/src/shared/model/SolanaContextTypes.js.map +7 -0
  48. package/lib/cjs/src/shared/model/SolanaTransactionContext.js +1 -1
  49. package/lib/cjs/src/shared/model/SolanaTransactionContext.js.map +1 -1
  50. package/lib/cjs/src/shared/model/TypedDataClearSignContext.js +1 -1
  51. package/lib/cjs/src/shared/model/TypedDataClearSignContext.js.map +2 -2
  52. package/lib/cjs/src/shared/utils/KeyUsageMapper.js +1 -1
  53. package/lib/cjs/src/shared/utils/KeyUsageMapper.js.map +2 -2
  54. package/lib/cjs/src/shared/utils/KeyUsageMapper.test.js +1 -1
  55. package/lib/cjs/src/shared/utils/KeyUsageMapper.test.js.map +2 -2
  56. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.js +1 -1
  57. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.js.map +3 -3
  58. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js +1 -1
  59. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js.map +2 -2
  60. package/lib/cjs/src/solana/data/SolanaDataSource.js +1 -1
  61. package/lib/cjs/src/solana/data/SolanaDataSource.js.map +1 -1
  62. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.js +1 -1
  63. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.js.map +3 -3
  64. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.test.js +1 -1
  65. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.test.js.map +3 -3
  66. package/lib/cjs/src/solana/domain/solanaContextTypes.js +1 -1
  67. package/lib/cjs/src/solana/domain/solanaContextTypes.js.map +1 -1
  68. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.js +2 -0
  69. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.js.map +7 -0
  70. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js +2 -0
  71. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js.map +7 -0
  72. package/lib/cjs/src/solanaLifi/data/SolanaLifiDataSource.js +2 -0
  73. package/lib/cjs/src/solanaLifi/data/SolanaLifiDataSource.js.map +7 -0
  74. package/lib/cjs/src/solanaLifi/di/lifiModuleFactory.js +2 -0
  75. package/lib/cjs/src/solanaLifi/di/lifiModuleFactory.js.map +7 -0
  76. package/lib/cjs/src/solanaLifi/di/solanaLifiTypes.js +2 -0
  77. package/lib/cjs/src/solanaLifi/di/solanaLifiTypes.js.map +7 -0
  78. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.js +2 -0
  79. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.js.map +7 -0
  80. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.test.js +2 -0
  81. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.test.js.map +7 -0
  82. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.js +2 -0
  83. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.js.map +7 -0
  84. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.test.js +7 -0
  85. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.test.js.map +7 -0
  86. package/lib/cjs/src/solanaToken/data/SolanaTokenDataSource.js +2 -0
  87. package/lib/cjs/src/solanaToken/data/SolanaTokenDataSource.js.map +7 -0
  88. package/lib/cjs/src/solanaToken/di/solanaTokenTypes.js +2 -0
  89. package/lib/cjs/src/solanaToken/di/solanaTokenTypes.js.map +7 -0
  90. package/lib/cjs/src/solanaToken/di/tokenModuleFactory.js +2 -0
  91. package/lib/cjs/src/solanaToken/di/tokenModuleFactory.js.map +7 -0
  92. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.js +2 -0
  93. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.js.map +7 -0
  94. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.test.js +2 -0
  95. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.test.js.map +7 -0
  96. package/lib/cjs/src/token/data/HttpTokenDataSource.js +1 -1
  97. package/lib/cjs/src/token/data/HttpTokenDataSource.js.map +2 -2
  98. package/lib/cjs/src/token/data/HttpTokenDataSource.test.js +1 -1
  99. package/lib/cjs/src/token/data/HttpTokenDataSource.test.js.map +2 -2
  100. package/lib/cjs/src/token/domain/TokenContextFieldLoader.js +1 -1
  101. package/lib/cjs/src/token/domain/TokenContextFieldLoader.js.map +3 -3
  102. package/lib/cjs/src/token/domain/TokenContextFieldLoader.test.js +1 -1
  103. package/lib/cjs/src/token/domain/TokenContextFieldLoader.test.js.map +3 -3
  104. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.js +2 -0
  105. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.js.map +7 -0
  106. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.test.js +2 -0
  107. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.test.js.map +7 -0
  108. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.js +2 -0
  109. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.js.map +7 -0
  110. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js +2 -0
  111. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js.map +7 -0
  112. package/lib/cjs/src/transaction-check/data/TransactionCheckDataSource.js +2 -0
  113. package/lib/cjs/src/transaction-check/data/TransactionCheckDataSource.js.map +7 -0
  114. package/lib/cjs/src/transaction-check/data/TypedDataCheckDataSource.js +2 -0
  115. package/lib/cjs/src/transaction-check/data/TypedDataCheckDataSource.js.map +7 -0
  116. package/lib/cjs/src/transaction-check/data/dto/TransactionCheckDto.js +2 -0
  117. package/lib/cjs/src/transaction-check/data/dto/TransactionCheckDto.js.map +7 -0
  118. package/lib/cjs/src/transaction-check/data/dto/TypedDataCheckDto.js +2 -0
  119. package/lib/cjs/src/transaction-check/data/dto/TypedDataCheckDto.js.map +7 -0
  120. package/lib/cjs/src/transaction-check/di/transactionCheckModuleFactory.js +2 -0
  121. package/lib/cjs/src/transaction-check/di/transactionCheckModuleFactory.js.map +7 -0
  122. package/lib/cjs/src/transaction-check/di/transactionCheckTypes.js +2 -0
  123. package/lib/cjs/src/transaction-check/di/transactionCheckTypes.js.map +7 -0
  124. package/lib/cjs/src/transaction-check/domain/TransactionCheckContextLoader.js +2 -0
  125. package/lib/cjs/src/transaction-check/domain/TransactionCheckContextLoader.js.map +7 -0
  126. package/lib/cjs/src/transaction-check/domain/TransactionCheckContextLoader.test.js +2 -0
  127. package/lib/cjs/src/transaction-check/domain/TransactionCheckContextLoader.test.js.map +7 -0
  128. package/lib/cjs/src/transaction-check/domain/TypedDataCheckContextLoader.js +2 -0
  129. package/lib/cjs/src/transaction-check/domain/TypedDataCheckContextLoader.js.map +7 -0
  130. package/lib/cjs/src/transaction-check/domain/TypedDataCheckContextLoader.test.js +2 -0
  131. package/lib/cjs/src/transaction-check/domain/TypedDataCheckContextLoader.test.js.map +7 -0
  132. package/lib/cjs/src/typed-data/data/FiltersDto.js.map +1 -1
  133. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.js +1 -1
  134. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.js.map +2 -2
  135. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.test.js +1 -1
  136. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.test.js.map +2 -2
  137. package/lib/cjs/src/typed-data/domain/DefaultTypedDataContextLoader.js +1 -1
  138. package/lib/cjs/src/typed-data/domain/DefaultTypedDataContextLoader.js.map +3 -3
  139. package/lib/cjs/src/typed-data/domain/DefaultTypedDataContextLoader.test.js +1 -1
  140. package/lib/cjs/src/typed-data/domain/DefaultTypedDataContextLoader.test.js.map +2 -2
  141. package/lib/cjs/src/uniswap/constants/uniswap.js +1 -1
  142. package/lib/cjs/src/uniswap/constants/uniswap.js.map +3 -3
  143. package/lib/cjs/src/uniswap/domain/UniswapContextLoader.js +1 -1
  144. package/lib/cjs/src/uniswap/domain/UniswapContextLoader.js.map +3 -3
  145. package/lib/cjs/src/uniswap/domain/UniswapContextLoader.test.js +1 -1
  146. package/lib/cjs/src/uniswap/domain/UniswapContextLoader.test.js.map +2 -2
  147. package/lib/esm/package.json +38 -34
  148. package/lib/esm/src/ContextModuleBuilder.js +1 -1
  149. package/lib/esm/src/ContextModuleBuilder.js.map +2 -2
  150. package/lib/esm/src/ContextModuleBuilder.test.js +1 -1
  151. package/lib/esm/src/ContextModuleBuilder.test.js.map +2 -2
  152. package/lib/esm/src/DefaultContextModule.js +1 -1
  153. package/lib/esm/src/DefaultContextModule.js.map +3 -3
  154. package/lib/esm/src/DefaultContextModule.test.js +1 -1
  155. package/lib/esm/src/DefaultContextModule.test.js.map +3 -3
  156. package/lib/esm/src/di.js +1 -1
  157. package/lib/esm/src/di.js.map +3 -3
  158. package/lib/esm/src/external-plugin/domain/ExternalPluginContextLoader.js +1 -1
  159. package/lib/esm/src/external-plugin/domain/ExternalPluginContextLoader.js.map +3 -3
  160. package/lib/esm/src/external-plugin/domain/ExternalPluginContextLoader.test.js +1 -1
  161. package/lib/esm/src/external-plugin/domain/ExternalPluginContextLoader.test.js.map +3 -3
  162. package/lib/esm/src/index.js +1 -1
  163. package/lib/esm/src/index.js.map +2 -2
  164. package/lib/esm/src/pki/model/KeyUsage.js +1 -1
  165. package/lib/esm/src/pki/model/KeyUsage.js.map +2 -2
  166. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.js +2 -0
  167. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.js.map +7 -0
  168. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.test.js +2 -0
  169. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.test.js.map +7 -0
  170. package/lib/esm/src/safe/data/SafeAccountDataSource.js +1 -0
  171. package/lib/esm/src/safe/data/dto/SafeAccountDto.js +1 -0
  172. package/lib/esm/src/safe/di/safeModuleFactory.js +2 -0
  173. package/lib/esm/src/safe/di/safeModuleFactory.js.map +7 -0
  174. package/lib/esm/src/safe/di/safeModuleFactory.test.js +2 -0
  175. package/lib/esm/src/safe/di/safeModuleFactory.test.js.map +7 -0
  176. package/lib/esm/src/safe/di/safeTypes.js +2 -0
  177. package/lib/esm/src/safe/di/safeTypes.js.map +7 -0
  178. package/lib/esm/src/safe/domain/SafeAddressLoader.js +2 -0
  179. package/lib/esm/src/safe/domain/SafeAddressLoader.js.map +7 -0
  180. package/lib/esm/src/safe/domain/SafeAddressLoader.test.js +2 -0
  181. package/lib/esm/src/safe/domain/SafeAddressLoader.test.js.map +7 -0
  182. package/lib/esm/src/shared/model/ClearSignContext.js +1 -1
  183. package/lib/esm/src/shared/model/ClearSignContext.js.map +2 -2
  184. package/lib/esm/src/shared/model/SolanaContextTypes.js +2 -0
  185. package/lib/esm/src/shared/model/SolanaContextTypes.js.map +7 -0
  186. package/lib/esm/src/shared/model/TypedDataClearSignContext.js.map +2 -2
  187. package/lib/esm/src/shared/utils/KeyUsageMapper.js +1 -1
  188. package/lib/esm/src/shared/utils/KeyUsageMapper.js.map +2 -2
  189. package/lib/esm/src/shared/utils/KeyUsageMapper.test.js +1 -1
  190. package/lib/esm/src/shared/utils/KeyUsageMapper.test.js.map +2 -2
  191. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.js +1 -1
  192. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.js.map +3 -3
  193. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js +1 -1
  194. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js.map +2 -2
  195. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.js +1 -1
  196. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.js.map +3 -3
  197. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.test.js +1 -1
  198. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.test.js.map +3 -3
  199. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.js +2 -0
  200. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.js.map +7 -0
  201. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js +2 -0
  202. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js.map +7 -0
  203. package/lib/esm/src/solanaLifi/data/SolanaLifiDataSource.js +1 -0
  204. package/lib/esm/src/solanaLifi/di/lifiModuleFactory.js +2 -0
  205. package/lib/esm/src/solanaLifi/di/lifiModuleFactory.js.map +7 -0
  206. package/lib/esm/src/solanaLifi/di/solanaLifiTypes.js +2 -0
  207. package/lib/esm/src/solanaLifi/di/solanaLifiTypes.js.map +7 -0
  208. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.js +2 -0
  209. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.js.map +7 -0
  210. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.test.js +2 -0
  211. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.test.js.map +7 -0
  212. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.js +2 -0
  213. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.js.map +7 -0
  214. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.test.js +7 -0
  215. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.test.js.map +7 -0
  216. package/lib/esm/src/solanaToken/data/SolanaTokenDataSource.js +1 -0
  217. package/lib/esm/src/solanaToken/di/solanaTokenTypes.js +2 -0
  218. package/lib/esm/src/solanaToken/di/solanaTokenTypes.js.map +7 -0
  219. package/lib/esm/src/solanaToken/di/tokenModuleFactory.js +2 -0
  220. package/lib/esm/src/solanaToken/di/tokenModuleFactory.js.map +7 -0
  221. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.js +2 -0
  222. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.js.map +7 -0
  223. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.test.js +2 -0
  224. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.test.js.map +7 -0
  225. package/lib/esm/src/token/data/HttpTokenDataSource.js +1 -1
  226. package/lib/esm/src/token/data/HttpTokenDataSource.js.map +2 -2
  227. package/lib/esm/src/token/data/HttpTokenDataSource.test.js +1 -1
  228. package/lib/esm/src/token/data/HttpTokenDataSource.test.js.map +2 -2
  229. package/lib/esm/src/token/domain/TokenContextFieldLoader.js +1 -1
  230. package/lib/esm/src/token/domain/TokenContextFieldLoader.js.map +3 -3
  231. package/lib/esm/src/token/domain/TokenContextFieldLoader.test.js +1 -1
  232. package/lib/esm/src/token/domain/TokenContextFieldLoader.test.js.map +3 -3
  233. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.js +2 -0
  234. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.js.map +7 -0
  235. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.test.js +2 -0
  236. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.test.js.map +7 -0
  237. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.js +2 -0
  238. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.js.map +7 -0
  239. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js +2 -0
  240. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js.map +7 -0
  241. package/lib/esm/src/transaction-check/data/TransactionCheckDataSource.js +1 -0
  242. package/lib/esm/src/transaction-check/data/TransactionCheckDataSource.js.map +7 -0
  243. package/lib/esm/src/transaction-check/data/TypedDataCheckDataSource.js +1 -0
  244. package/lib/esm/src/transaction-check/data/TypedDataCheckDataSource.js.map +7 -0
  245. package/lib/esm/src/transaction-check/data/dto/TransactionCheckDto.js +1 -0
  246. package/lib/esm/src/transaction-check/data/dto/TransactionCheckDto.js.map +7 -0
  247. package/lib/esm/src/transaction-check/data/dto/TypedDataCheckDto.js +1 -0
  248. package/lib/esm/src/transaction-check/data/dto/TypedDataCheckDto.js.map +7 -0
  249. package/lib/esm/src/transaction-check/di/transactionCheckModuleFactory.js +2 -0
  250. package/lib/esm/src/transaction-check/di/transactionCheckModuleFactory.js.map +7 -0
  251. package/lib/esm/src/transaction-check/di/transactionCheckTypes.js +2 -0
  252. package/lib/esm/src/transaction-check/di/transactionCheckTypes.js.map +7 -0
  253. package/lib/esm/src/transaction-check/domain/TransactionCheckContextLoader.js +2 -0
  254. package/lib/esm/src/transaction-check/domain/TransactionCheckContextLoader.js.map +7 -0
  255. package/lib/esm/src/transaction-check/domain/TransactionCheckContextLoader.test.js +2 -0
  256. package/lib/esm/src/transaction-check/domain/TransactionCheckContextLoader.test.js.map +7 -0
  257. package/lib/esm/src/transaction-check/domain/TypedDataCheckContextLoader.js +2 -0
  258. package/lib/esm/src/transaction-check/domain/TypedDataCheckContextLoader.js.map +7 -0
  259. package/lib/esm/src/transaction-check/domain/TypedDataCheckContextLoader.test.js +2 -0
  260. package/lib/esm/src/transaction-check/domain/TypedDataCheckContextLoader.test.js.map +7 -0
  261. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.js +1 -1
  262. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.js.map +2 -2
  263. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.test.js +1 -1
  264. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.test.js.map +2 -2
  265. package/lib/esm/src/typed-data/domain/DefaultTypedDataContextLoader.js +1 -1
  266. package/lib/esm/src/typed-data/domain/DefaultTypedDataContextLoader.js.map +3 -3
  267. package/lib/esm/src/typed-data/domain/DefaultTypedDataContextLoader.test.js +1 -1
  268. package/lib/esm/src/typed-data/domain/DefaultTypedDataContextLoader.test.js.map +2 -2
  269. package/lib/esm/src/uniswap/constants/uniswap.js +1 -1
  270. package/lib/esm/src/uniswap/constants/uniswap.js.map +3 -3
  271. package/lib/esm/src/uniswap/domain/UniswapContextLoader.js +1 -1
  272. package/lib/esm/src/uniswap/domain/UniswapContextLoader.js.map +3 -3
  273. package/lib/esm/src/uniswap/domain/UniswapContextLoader.test.js +1 -1
  274. package/lib/esm/src/uniswap/domain/UniswapContextLoader.test.js.map +3 -3
  275. package/lib/types/src/ContextModule.d.ts +0 -2
  276. package/lib/types/src/ContextModule.d.ts.map +1 -1
  277. package/lib/types/src/ContextModuleBuilder.d.ts +0 -9
  278. package/lib/types/src/ContextModuleBuilder.d.ts.map +1 -1
  279. package/lib/types/src/DefaultContextModule.d.ts +1 -5
  280. package/lib/types/src/DefaultContextModule.d.ts.map +1 -1
  281. package/lib/types/src/config/model/ContextModuleConfig.d.ts +0 -2
  282. package/lib/types/src/config/model/ContextModuleConfig.d.ts.map +1 -1
  283. package/lib/types/src/di.d.ts.map +1 -1
  284. package/lib/types/src/external-plugin/domain/ExternalPluginContextLoader.d.ts +9 -1
  285. package/lib/types/src/external-plugin/domain/ExternalPluginContextLoader.d.ts.map +1 -1
  286. package/lib/types/src/index.d.ts +2 -5
  287. package/lib/types/src/index.d.ts.map +1 -1
  288. package/lib/types/src/pki/model/KeyUsage.d.ts +2 -1
  289. package/lib/types/src/pki/model/KeyUsage.d.ts.map +1 -1
  290. package/lib/types/src/safe/data/HttpSafeAccountDataSource.d.ts +11 -0
  291. package/lib/types/src/safe/data/HttpSafeAccountDataSource.d.ts.map +1 -0
  292. package/lib/types/src/safe/data/HttpSafeAccountDataSource.test.d.ts +2 -0
  293. package/lib/types/src/safe/data/HttpSafeAccountDataSource.test.d.ts.map +1 -0
  294. package/lib/types/src/safe/data/SafeAccountDataSource.d.ts +20 -0
  295. package/lib/types/src/safe/data/SafeAccountDataSource.d.ts.map +1 -0
  296. package/lib/types/src/safe/data/dto/SafeAccountDto.d.ts +10 -0
  297. package/lib/types/src/safe/data/dto/SafeAccountDto.d.ts.map +1 -0
  298. package/lib/types/src/safe/di/safeModuleFactory.d.ts +3 -0
  299. package/lib/types/src/safe/di/safeModuleFactory.d.ts.map +1 -0
  300. package/lib/types/src/safe/di/safeModuleFactory.test.d.ts +2 -0
  301. package/lib/types/src/safe/di/safeModuleFactory.test.d.ts.map +1 -0
  302. package/lib/types/src/safe/di/safeTypes.d.ts +5 -0
  303. package/lib/types/src/safe/di/safeTypes.d.ts.map +1 -0
  304. package/lib/types/src/safe/domain/SafeAddressLoader.d.ts +19 -0
  305. package/lib/types/src/safe/domain/SafeAddressLoader.d.ts.map +1 -0
  306. package/lib/types/src/safe/domain/SafeAddressLoader.test.d.ts +2 -0
  307. package/lib/types/src/safe/domain/SafeAddressLoader.test.d.ts.map +1 -0
  308. package/lib/types/src/shared/domain/ContextFieldLoader.d.ts +14 -4
  309. package/lib/types/src/shared/domain/ContextFieldLoader.d.ts.map +1 -1
  310. package/lib/types/src/shared/model/ClearSignContext.d.ts +63 -34
  311. package/lib/types/src/shared/model/ClearSignContext.d.ts.map +1 -1
  312. package/lib/types/src/shared/model/SolanaContextTypes.d.ts +47 -0
  313. package/lib/types/src/shared/model/SolanaContextTypes.d.ts.map +1 -0
  314. package/lib/types/src/shared/model/SolanaTransactionContext.d.ts +2 -0
  315. package/lib/types/src/shared/model/SolanaTransactionContext.d.ts.map +1 -1
  316. package/lib/types/src/shared/model/TypedDataClearSignContext.d.ts +2 -0
  317. package/lib/types/src/shared/model/TypedDataClearSignContext.d.ts.map +1 -1
  318. package/lib/types/src/shared/utils/KeyUsageMapper.d.ts.map +1 -1
  319. package/lib/types/src/solana/data/HttpSolanaOwnerInfoDataSource.d.ts.map +1 -1
  320. package/lib/types/src/solana/data/SolanaDataSource.d.ts +1 -4
  321. package/lib/types/src/solana/data/SolanaDataSource.d.ts.map +1 -1
  322. package/lib/types/src/solana/domain/DefaultSolanaContextLoader.d.ts +5 -3
  323. package/lib/types/src/solana/domain/DefaultSolanaContextLoader.d.ts.map +1 -1
  324. package/lib/types/src/solana/domain/solanaContextTypes.d.ts +7 -5
  325. package/lib/types/src/solana/domain/solanaContextTypes.d.ts.map +1 -1
  326. package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.d.ts +9 -0
  327. package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.d.ts.map +1 -0
  328. package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.test.d.ts +2 -0
  329. package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.test.d.ts.map +1 -0
  330. package/lib/types/src/solanaLifi/data/SolanaLifiDataSource.d.ts +13 -0
  331. package/lib/types/src/solanaLifi/data/SolanaLifiDataSource.d.ts.map +1 -0
  332. package/lib/types/src/solanaLifi/di/lifiModuleFactory.d.ts +3 -0
  333. package/lib/types/src/solanaLifi/di/lifiModuleFactory.d.ts.map +1 -0
  334. package/lib/types/src/solanaLifi/di/solanaLifiTypes.d.ts +5 -0
  335. package/lib/types/src/solanaLifi/di/solanaLifiTypes.d.ts.map +1 -0
  336. package/lib/types/src/solanaLifi/domain/SolanaLifiContextLoader.d.ts +16 -0
  337. package/lib/types/src/solanaLifi/domain/SolanaLifiContextLoader.d.ts.map +1 -0
  338. package/lib/types/src/solanaLifi/domain/SolanaLifiContextLoader.test.d.ts +2 -0
  339. package/lib/types/src/solanaLifi/domain/SolanaLifiContextLoader.test.d.ts.map +1 -0
  340. package/lib/types/src/solanaToken/data/HttpSolanaTokenDataSource.d.ts +9 -0
  341. package/lib/types/src/solanaToken/data/HttpSolanaTokenDataSource.d.ts.map +1 -0
  342. package/lib/types/src/solanaToken/data/HttpSolanaTokenDataSource.test.d.ts +2 -0
  343. package/lib/types/src/solanaToken/data/HttpSolanaTokenDataSource.test.d.ts.map +1 -0
  344. package/lib/types/src/solanaToken/data/SolanaTokenDataSource.d.ts +44 -0
  345. package/lib/types/src/solanaToken/data/SolanaTokenDataSource.d.ts.map +1 -0
  346. package/lib/types/src/solanaToken/di/solanaTokenTypes.d.ts +5 -0
  347. package/lib/types/src/solanaToken/di/solanaTokenTypes.d.ts.map +1 -0
  348. package/lib/types/src/solanaToken/di/tokenModuleFactory.d.ts +3 -0
  349. package/lib/types/src/solanaToken/di/tokenModuleFactory.d.ts.map +1 -0
  350. package/lib/types/src/solanaToken/domain/SolanaTokenContextLoader.d.ts +22 -0
  351. package/lib/types/src/solanaToken/domain/SolanaTokenContextLoader.d.ts.map +1 -0
  352. package/lib/types/src/solanaToken/domain/SolanaTokenContextLoader.test.d.ts +2 -0
  353. package/lib/types/src/solanaToken/domain/SolanaTokenContextLoader.test.d.ts.map +1 -0
  354. package/lib/types/src/token/data/HttpTokenDataSource.d.ts.map +1 -1
  355. package/lib/types/src/token/domain/TokenContextFieldLoader.d.ts +5 -1
  356. package/lib/types/src/token/domain/TokenContextFieldLoader.d.ts.map +1 -1
  357. package/lib/types/src/transaction-check/data/HttpTransactionCheckDataSource.d.ts +10 -0
  358. package/lib/types/src/transaction-check/data/HttpTransactionCheckDataSource.d.ts.map +1 -0
  359. package/lib/types/src/transaction-check/data/HttpTransactionCheckDataSource.test.d.ts +2 -0
  360. package/lib/types/src/transaction-check/data/HttpTransactionCheckDataSource.test.d.ts.map +1 -0
  361. package/lib/types/src/transaction-check/data/HttpTypedDataCheckDataSource.d.ts +10 -0
  362. package/lib/types/src/transaction-check/data/HttpTypedDataCheckDataSource.d.ts.map +1 -0
  363. package/lib/types/src/transaction-check/data/HttpTypedDataCheckDataSource.test.d.ts +2 -0
  364. package/lib/types/src/transaction-check/data/HttpTypedDataCheckDataSource.test.d.ts.map +1 -0
  365. package/lib/types/src/transaction-check/data/TransactionCheckDataSource.d.ts +14 -0
  366. package/lib/types/src/transaction-check/data/TransactionCheckDataSource.d.ts.map +1 -0
  367. package/lib/types/src/transaction-check/data/TypedDataCheckDataSource.d.ts +28 -0
  368. package/lib/types/src/transaction-check/data/TypedDataCheckDataSource.d.ts.map +1 -0
  369. package/lib/types/src/transaction-check/data/dto/TransactionCheckDto.d.ts +5 -0
  370. package/lib/types/src/transaction-check/data/dto/TransactionCheckDto.d.ts.map +1 -0
  371. package/lib/types/src/transaction-check/data/dto/TypedDataCheckDto.d.ts +5 -0
  372. package/lib/types/src/transaction-check/data/dto/TypedDataCheckDto.d.ts.map +1 -0
  373. package/lib/types/src/transaction-check/di/transactionCheckModuleFactory.d.ts +3 -0
  374. package/lib/types/src/transaction-check/di/transactionCheckModuleFactory.d.ts.map +1 -0
  375. package/lib/types/src/transaction-check/di/transactionCheckTypes.d.ts +7 -0
  376. package/lib/types/src/transaction-check/di/transactionCheckTypes.d.ts.map +1 -0
  377. package/lib/types/src/transaction-check/domain/TransactionCheckContextLoader.d.ts +19 -0
  378. package/lib/types/src/transaction-check/domain/TransactionCheckContextLoader.d.ts.map +1 -0
  379. package/lib/types/src/transaction-check/domain/TransactionCheckContextLoader.test.d.ts +2 -0
  380. package/lib/types/src/transaction-check/domain/TransactionCheckContextLoader.test.d.ts.map +1 -0
  381. package/lib/types/src/transaction-check/domain/TypedDataCheckContextLoader.d.ts +18 -0
  382. package/lib/types/src/transaction-check/domain/TypedDataCheckContextLoader.d.ts.map +1 -0
  383. package/lib/types/src/transaction-check/domain/TypedDataCheckContextLoader.test.d.ts +2 -0
  384. package/lib/types/src/transaction-check/domain/TypedDataCheckContextLoader.test.d.ts.map +1 -0
  385. package/lib/types/src/typed-data/data/FiltersDto.d.ts +0 -4
  386. package/lib/types/src/typed-data/data/FiltersDto.d.ts.map +1 -1
  387. package/lib/types/src/typed-data/data/HttpTypedDataDataSource.test.d.ts.map +1 -1
  388. package/lib/types/src/typed-data/domain/DefaultTypedDataContextLoader.d.ts.map +1 -1
  389. package/lib/types/src/uniswap/constants/uniswap.d.ts +0 -1
  390. package/lib/types/src/uniswap/constants/uniswap.d.ts.map +1 -1
  391. package/lib/types/src/uniswap/domain/UniswapContextLoader.d.ts +0 -8
  392. package/lib/types/src/uniswap/domain/UniswapContextLoader.d.ts.map +1 -1
  393. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  394. package/package.json +36 -32
  395. package/lib/cjs/src/uniswap/constants/plugin.js +0 -2
  396. package/lib/cjs/src/uniswap/constants/plugin.js.map +0 -7
  397. package/lib/cjs/src/web3-check/data/HttpWeb3CheckDataSource.js +0 -2
  398. package/lib/cjs/src/web3-check/data/HttpWeb3CheckDataSource.js.map +0 -7
  399. package/lib/cjs/src/web3-check/data/HttpWeb3CheckDataSource.test.js +0 -2
  400. package/lib/cjs/src/web3-check/data/HttpWeb3CheckDataSource.test.js.map +0 -7
  401. package/lib/cjs/src/web3-check/data/Web3CheckDataSource.js +0 -2
  402. package/lib/cjs/src/web3-check/data/Web3CheckDataSource.js.map +0 -7
  403. package/lib/cjs/src/web3-check/data/Web3CheckDto.js +0 -2
  404. package/lib/cjs/src/web3-check/data/Web3CheckDto.js.map +0 -7
  405. package/lib/cjs/src/web3-check/di/web3CheckModuleFactory.js +0 -2
  406. package/lib/cjs/src/web3-check/di/web3CheckModuleFactory.js.map +0 -7
  407. package/lib/cjs/src/web3-check/di/web3CheckTypes.js +0 -2
  408. package/lib/cjs/src/web3-check/di/web3CheckTypes.js.map +0 -7
  409. package/lib/cjs/src/web3-check/domain/DefaultWeb3CheckLoader.js +0 -2
  410. package/lib/cjs/src/web3-check/domain/DefaultWeb3CheckLoader.js.map +0 -7
  411. package/lib/cjs/src/web3-check/domain/DefaultWeb3CheckLoader.test.js +0 -2
  412. package/lib/cjs/src/web3-check/domain/DefaultWeb3CheckLoader.test.js.map +0 -7
  413. package/lib/cjs/src/web3-check/domain/Web3CheckContextLoader.js +0 -2
  414. package/lib/cjs/src/web3-check/domain/Web3CheckContextLoader.js.map +0 -7
  415. package/lib/cjs/src/web3-check/domain/web3CheckTypes.js +0 -2
  416. package/lib/cjs/src/web3-check/domain/web3CheckTypes.js.map +0 -7
  417. package/lib/esm/src/uniswap/constants/plugin.js +0 -2
  418. package/lib/esm/src/uniswap/constants/plugin.js.map +0 -7
  419. package/lib/esm/src/web3-check/data/HttpWeb3CheckDataSource.js +0 -2
  420. package/lib/esm/src/web3-check/data/HttpWeb3CheckDataSource.js.map +0 -7
  421. package/lib/esm/src/web3-check/data/HttpWeb3CheckDataSource.test.js +0 -2
  422. package/lib/esm/src/web3-check/data/HttpWeb3CheckDataSource.test.js.map +0 -7
  423. package/lib/esm/src/web3-check/data/Web3CheckDataSource.js +0 -1
  424. package/lib/esm/src/web3-check/data/Web3CheckDto.js +0 -1
  425. package/lib/esm/src/web3-check/di/web3CheckModuleFactory.js +0 -2
  426. package/lib/esm/src/web3-check/di/web3CheckModuleFactory.js.map +0 -7
  427. package/lib/esm/src/web3-check/di/web3CheckTypes.js +0 -2
  428. package/lib/esm/src/web3-check/di/web3CheckTypes.js.map +0 -7
  429. package/lib/esm/src/web3-check/domain/DefaultWeb3CheckLoader.js +0 -2
  430. package/lib/esm/src/web3-check/domain/DefaultWeb3CheckLoader.js.map +0 -7
  431. package/lib/esm/src/web3-check/domain/DefaultWeb3CheckLoader.test.js +0 -2
  432. package/lib/esm/src/web3-check/domain/DefaultWeb3CheckLoader.test.js.map +0 -7
  433. package/lib/esm/src/web3-check/domain/Web3CheckContextLoader.js +0 -1
  434. package/lib/esm/src/web3-check/domain/web3CheckTypes.js +0 -1
  435. package/lib/types/src/uniswap/constants/plugin.d.ts +0 -3
  436. package/lib/types/src/uniswap/constants/plugin.d.ts.map +0 -1
  437. package/lib/types/src/web3-check/data/HttpWeb3CheckDataSource.d.ts +0 -14
  438. package/lib/types/src/web3-check/data/HttpWeb3CheckDataSource.d.ts.map +0 -1
  439. package/lib/types/src/web3-check/data/HttpWeb3CheckDataSource.test.d.ts +0 -2
  440. package/lib/types/src/web3-check/data/HttpWeb3CheckDataSource.test.d.ts.map +0 -1
  441. package/lib/types/src/web3-check/data/Web3CheckDataSource.d.ts +0 -6
  442. package/lib/types/src/web3-check/data/Web3CheckDataSource.d.ts.map +0 -1
  443. package/lib/types/src/web3-check/data/Web3CheckDto.d.ts +0 -20
  444. package/lib/types/src/web3-check/data/Web3CheckDto.d.ts.map +0 -1
  445. package/lib/types/src/web3-check/di/web3CheckModuleFactory.d.ts +0 -3
  446. package/lib/types/src/web3-check/di/web3CheckModuleFactory.d.ts.map +0 -1
  447. package/lib/types/src/web3-check/di/web3CheckTypes.d.ts +0 -5
  448. package/lib/types/src/web3-check/di/web3CheckTypes.d.ts.map +0 -1
  449. package/lib/types/src/web3-check/domain/DefaultWeb3CheckLoader.d.ts +0 -10
  450. package/lib/types/src/web3-check/domain/DefaultWeb3CheckLoader.d.ts.map +0 -1
  451. package/lib/types/src/web3-check/domain/DefaultWeb3CheckLoader.test.d.ts +0 -2
  452. package/lib/types/src/web3-check/domain/DefaultWeb3CheckLoader.test.d.ts.map +0 -1
  453. package/lib/types/src/web3-check/domain/Web3CheckContextLoader.d.ts +0 -6
  454. package/lib/types/src/web3-check/domain/Web3CheckContextLoader.d.ts.map +0 -1
  455. package/lib/types/src/web3-check/domain/web3CheckTypes.d.ts +0 -35
  456. package/lib/types/src/web3-check/domain/web3CheckTypes.d.ts.map +0 -1
  457. /package/lib/esm/src/{web3-check/data/Web3CheckDataSource.js.map → safe/data/SafeAccountDataSource.js.map} +0 -0
  458. /package/lib/esm/src/{web3-check/data/Web3CheckDto.js.map → safe/data/dto/SafeAccountDto.js.map} +0 -0
  459. /package/lib/esm/src/{web3-check/domain/Web3CheckContextLoader.js.map → solanaLifi/data/SolanaLifiDataSource.js.map} +0 -0
  460. /package/lib/esm/src/{web3-check/domain/web3CheckTypes.js.map → solanaToken/data/SolanaTokenDataSource.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/solana/data/HttpSolanaOwnerInfoDataSource.test.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n DeviceModelId,\n hexaStringToBuffer,\n} from \"@ledgerhq/device-management-kit\";\nimport axios from \"axios\";\nimport { Left } from \"purify-ts\";\n\nimport type { ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport { LEDGER_CLIENT_VERSION_HEADER } from \"@/shared/constant/HttpHeaders\";\nimport { HttpSolanaOwnerInfoDataSource } from \"@/solana/data/HttpSolanaOwnerInfoDataSource\";\nimport type { SolanaTransactionContext } from \"@/solana/domain/solanaContextTypes\";\nimport PACKAGE from \"@root/package.json\";\n\nvi.mock(\"axios\");\n\nfunction stringToHex(str: string): string {\n const encoder = new TextEncoder();\n const bytes = encoder.encode(str); // Uint8Array\n return Array.from(bytes)\n .map((byte) => byte.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n\ndescribe(\"HttpSolanaOwnerInfoDataSource\", () => {\n const config = {\n metadataServiceDomain: { url: \"https://some.doma.in\" },\n originToken: \"mock-origin-token\",\n } as ContextModuleConfig;\n\n const signedDescriptorHex = stringToHex(\"mock-descriptor\");\n const responseData = {\n tokenAccount: \"token-account\",\n owner: \"owner-address\",\n contract: \"contract-address\",\n signedDescriptor: signedDescriptorHex,\n };\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"should fetch address metadata via tokenAddress\", async () => {\n const context: SolanaTransactionContext = {\n deviceModelId: DeviceModelId.FLEX,\n tokenAddress: \"some-token\",\n challenge: \"random\",\n createATA: undefined,\n };\n vi.spyOn(axios, \"request\").mockResolvedValueOnce({ data: responseData });\n\n const dataSource = new HttpSolanaOwnerInfoDataSource(config);\n const result = await dataSource.getOwnerInfo(context);\n\n expect(result.isRight()).toBe(true);\n expect(result.extract()).toEqual({\n descriptor: hexaStringToBuffer(signedDescriptorHex),\n tokenAccount: \"token-account\",\n owner: \"owner-address\",\n contract: \"contract-address\",\n });\n });\n\n it(\"should compute address when tokenAddress is not provided\", async () => {\n const context: SolanaTransactionContext = {\n deviceModelId: DeviceModelId.FLEX,\n tokenAddress: undefined,\n challenge: \"random\",\n createATA: {\n address: \"some-address\",\n mintAddress: \"some-mint\",\n },\n };\n vi.spyOn(axios, \"request\").mockResolvedValueOnce({ data: responseData });\n\n const dataSource = new HttpSolanaOwnerInfoDataSource(config);\n const result = await dataSource.getOwnerInfo(context);\n\n expect(result.isRight()).toBe(true);\n expect((result.extract() as any).tokenAccount).toBe(\"token-account\");\n });\n\n it(\"should return an error if both tokenAddress and createATA are missing or invalid\", async () => {\n const context: SolanaTransactionContext = {\n deviceModelId: DeviceModelId.FLEX,\n tokenAddress: undefined,\n challenge: \"random\",\n createATA: undefined,\n };\n\n const dataSource = new HttpSolanaOwnerInfoDataSource(config);\n const result = await dataSource.getOwnerInfo(context);\n\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: either tokenAddress or valid createATA must be provided\",\n ),\n ),\n );\n });\n\n it(\"should return an error if challenge is missing\", async () => {\n const context: SolanaTransactionContext = {\n deviceModelId: DeviceModelId.FLEX,\n tokenAddress: \"some-token\",\n challenge: undefined,\n createATA: undefined,\n };\n\n const dataSource = new HttpSolanaOwnerInfoDataSource(config);\n const result = await dataSource.getOwnerInfo(context);\n\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: challenge is required\",\n ),\n ),\n );\n });\n\n it(\"should return an error if the descriptor is not valid base64\", async () => {\n vi.spyOn(axios, \"request\").mockResolvedValueOnce({\n data: { ...responseData, signedDescriptor: \"!!!not-valid-base64!!!\" },\n });\n const context: SolanaTransactionContext = {\n deviceModelId: DeviceModelId.FLEX,\n tokenAddress: \"some-token\",\n challenge: \"random\",\n createATA: undefined,\n };\n\n const dataSource = new HttpSolanaOwnerInfoDataSource(config);\n const result = await dataSource.getOwnerInfo(context);\n\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid base64 descriptor received\",\n ),\n ),\n );\n });\n\n it(\"should return an error if the metadata request fails\", async () => {\n vi.spyOn(axios, \"request\").mockRejectedValueOnce(\n new Error(\"Network error\"),\n );\n const context: SolanaTransactionContext = {\n deviceModelId: DeviceModelId.FLEX,\n tokenAddress: \"some-token\",\n challenge: \"random\",\n createATA: undefined,\n };\n\n const dataSource = new HttpSolanaOwnerInfoDataSource(config);\n const result = await dataSource.getOwnerInfo(context);\n\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: Failed to fetch address metadata\",\n ),\n ),\n );\n });\n\n it(\"should return an error if axios request return wrong shape for fetchAddressMetadata\", async () => {\n vi.spyOn(axios, \"request\").mockResolvedValueOnce({\n data: { wrong: \"field\" },\n });\n\n const context: SolanaTransactionContext = {\n deviceModelId: DeviceModelId.FLEX,\n tokenAddress: \"some-token\",\n challenge: \"random\",\n createATA: undefined,\n };\n\n const dataSource = new HttpSolanaOwnerInfoDataSource(config);\n const result = await dataSource.getOwnerInfo(context);\n\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid fetchAddressMetadata response shape\",\n ),\n ),\n );\n });\n\n it(\"should return an error if axios request return wrong shape for computeAddressMetadata\", async () => {\n vi.spyOn(axios, \"request\").mockResolvedValueOnce({\n data: { wrong: \"field\" },\n });\n\n const context: SolanaTransactionContext = {\n deviceModelId: DeviceModelId.FLEX,\n tokenAddress: undefined,\n challenge: \"random\",\n createATA: {\n address: \"some-address\",\n mintAddress: \"some-mint\",\n },\n };\n\n const dataSource = new HttpSolanaOwnerInfoDataSource(config);\n const result = await dataSource.getOwnerInfo(context);\n\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid computeAddressMetadata response shape\",\n ),\n ),\n );\n });\n\n it(\"should throw if originToken is missing\", () => {\n expect(() => {\n new HttpSolanaOwnerInfoDataSource({\n ...config,\n originToken: undefined,\n } as any);\n }).toThrow(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: origin token is required\",\n );\n });\n\n it(\"should call axios with correct headers\", async () => {\n const context: SolanaTransactionContext = {\n deviceModelId: DeviceModelId.FLEX,\n tokenAddress: \"some-token\",\n challenge: \"random\",\n createATA: undefined,\n };\n const spy = vi\n .spyOn(axios, \"request\")\n .mockResolvedValueOnce({ data: responseData });\n\n const dataSource = new HttpSolanaOwnerInfoDataSource(config);\n await dataSource.getOwnerInfo(context);\n\n expect(spy).toHaveBeenCalledWith(\n expect.objectContaining({\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n \"X-Ledger-Client-Origin\": config.originToken,\n },\n }),\n );\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n DeviceModelId,\n hexaStringToBuffer,\n} from \"@ledgerhq/device-management-kit\";\nimport axios from \"axios\";\nimport { Left } from \"purify-ts\";\n\nimport type { ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport { LEDGER_CLIENT_VERSION_HEADER } from \"@/shared/constant/HttpHeaders\";\nimport { HttpSolanaOwnerInfoDataSource } from \"@/solana/data/HttpSolanaOwnerInfoDataSource\";\nimport type { SolanaTransactionContext } from \"@/solana/domain/solanaContextTypes\";\nimport PACKAGE from \"@root/package.json\";\n\nvi.mock(\"axios\");\n\nfunction stringToHex(str: string): string {\n const encoder = new TextEncoder();\n const bytes = encoder.encode(str); // Uint8Array\n return Array.from(bytes)\n .map((byte) => byte.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n\ndescribe(\"HttpSolanaOwnerInfoDataSource\", () => {\n const config = {\n metadataServiceDomain: { url: \"https://some.doma.in\" },\n originToken: \"mock-origin-token\",\n } as ContextModuleConfig;\n\n const signedDescriptorHex = stringToHex(\"mock-descriptor\");\n const responseData = {\n tokenAccount: \"token-account\",\n owner: \"owner-address\",\n contract: \"contract-address\",\n signedDescriptor: signedDescriptorHex,\n };\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"should fetch address metadata via tokenAddress\", async () => {\n const context: SolanaTransactionContext = {\n deviceModelId: DeviceModelId.FLEX,\n tokenAddress: \"some-token\",\n challenge: \"random\",\n createATA: undefined,\n };\n vi.spyOn(axios, \"request\").mockResolvedValueOnce({ data: responseData });\n\n const dataSource = new HttpSolanaOwnerInfoDataSource(config);\n const result = await dataSource.getOwnerInfo(context);\n\n expect(result.isRight()).toBe(true);\n expect(result.extract()).toEqual({\n tlvDescriptor: hexaStringToBuffer(signedDescriptorHex),\n });\n });\n\n it(\"should return an error if both tokenAddress and createATA are missing or invalid\", async () => {\n const context: SolanaTransactionContext = {\n deviceModelId: DeviceModelId.FLEX,\n tokenAddress: undefined,\n challenge: \"random\",\n createATA: undefined,\n };\n\n const dataSource = new HttpSolanaOwnerInfoDataSource(config);\n const result = await dataSource.getOwnerInfo(context);\n\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: either tokenAddress or valid createATA must be provided\",\n ),\n ),\n );\n });\n\n it(\"should return an error if challenge is missing\", async () => {\n const context: SolanaTransactionContext = {\n deviceModelId: DeviceModelId.FLEX,\n tokenAddress: \"some-token\",\n challenge: undefined,\n createATA: undefined,\n };\n\n const dataSource = new HttpSolanaOwnerInfoDataSource(config);\n const result = await dataSource.getOwnerInfo(context);\n\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: challenge is required\",\n ),\n ),\n );\n });\n\n it(\"should return an error if the descriptor is not valid base64\", async () => {\n vi.spyOn(axios, \"request\").mockResolvedValueOnce({\n data: { ...responseData, signedDescriptor: \"!!!not-valid-base64!!!\" },\n });\n const context: SolanaTransactionContext = {\n deviceModelId: DeviceModelId.FLEX,\n tokenAddress: \"some-token\",\n challenge: \"random\",\n createATA: undefined,\n };\n\n const dataSource = new HttpSolanaOwnerInfoDataSource(config);\n const result = await dataSource.getOwnerInfo(context);\n\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid base64 tlvDescriptor received\",\n ),\n ),\n );\n });\n\n it(\"should return an error if the metadata request fails\", async () => {\n vi.spyOn(axios, \"request\").mockRejectedValueOnce(\n new Error(\"Network error\"),\n );\n const context: SolanaTransactionContext = {\n deviceModelId: DeviceModelId.FLEX,\n tokenAddress: \"some-token\",\n challenge: \"random\",\n createATA: undefined,\n };\n\n const dataSource = new HttpSolanaOwnerInfoDataSource(config);\n const result = await dataSource.getOwnerInfo(context);\n\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: Failed to fetch address metadata\",\n ),\n ),\n );\n });\n\n it(\"should return an error if axios request return wrong shape for fetchAddressMetadata\", async () => {\n vi.spyOn(axios, \"request\").mockResolvedValueOnce({\n data: { wrong: \"field\" },\n });\n\n const context: SolanaTransactionContext = {\n deviceModelId: DeviceModelId.FLEX,\n tokenAddress: \"some-token\",\n challenge: \"random\",\n createATA: undefined,\n };\n\n const dataSource = new HttpSolanaOwnerInfoDataSource(config);\n const result = await dataSource.getOwnerInfo(context);\n\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid fetchAddressMetadata response shape\",\n ),\n ),\n );\n });\n\n it(\"should return an error if axios request return wrong shape for computeAddressMetadata\", async () => {\n vi.spyOn(axios, \"request\").mockResolvedValueOnce({\n data: { wrong: \"field\" },\n });\n\n const context: SolanaTransactionContext = {\n deviceModelId: DeviceModelId.FLEX,\n tokenAddress: undefined,\n challenge: \"random\",\n createATA: {\n address: \"some-address\",\n mintAddress: \"some-mint\",\n },\n };\n\n const dataSource = new HttpSolanaOwnerInfoDataSource(config);\n const result = await dataSource.getOwnerInfo(context);\n\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid computeAddressMetadata response shape\",\n ),\n ),\n );\n });\n\n it(\"should throw if originToken is missing\", () => {\n expect(() => {\n new HttpSolanaOwnerInfoDataSource({\n ...config,\n originToken: undefined,\n } as any);\n }).toThrow(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: origin token is required\",\n );\n });\n\n it(\"should call axios with correct headers\", async () => {\n const context: SolanaTransactionContext = {\n deviceModelId: DeviceModelId.FLEX,\n tokenAddress: \"some-token\",\n challenge: \"random\",\n createATA: undefined,\n };\n const spy = vi\n .spyOn(axios, \"request\")\n .mockResolvedValueOnce({ data: responseData });\n\n const dataSource = new HttpSolanaOwnerInfoDataSource(config);\n await dataSource.getOwnerInfo(context);\n\n expect(spy).toHaveBeenCalledWith(\n expect.objectContaining({\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n \"X-Ledger-Client-Origin\": config.originToken,\n },\n }),\n );\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": ["import_device_management_kit", "import_axios", "import_purify_ts", "import_HttpHeaders", "import_HttpSolanaOwnerInfoDataSource", "import_package", "stringToHex", "str", "bytes", "byte", "config", "signedDescriptorHex", "responseData", "context", "axios", "result", "spy", "PACKAGE"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var n=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var c=(o,t,e,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of s(t))!p.call(o,r)&&r!==e&&n(o,r,{get:()=>t[r],enumerable:!(a=i(t,r))||a.enumerable});return o};var l=o=>c(n({},"__esModule",{value:!0}),o);var S={};module.exports=l(S);
1
+ "use strict";var e=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var s=(a,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of i(t))!l.call(a,o)&&o!==n&&e(a,o,{get:()=>t[o],enumerable:!(r=p(t,o))||r.enumerable});return a};var S=a=>s(e({},"__esModule",{value:!0}),a);var c={};module.exports=S(c);
2
2
  //# sourceMappingURL=SolanaDataSource.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/solana/data/SolanaDataSource.ts"],
4
- "sourcesContent": ["import { type Either } from \"purify-ts\";\n\nimport type { SolanaTransactionContext } from \"@/solana/domain/solanaContextTypes\";\n\nexport type HttpSolanaOwnerInfoDataSourceResult = {\n descriptor: Uint8Array;\n tokenAccount: string;\n owner: string;\n contract: string;\n};\n\nexport interface SolanaDataSource {\n getOwnerInfo(\n params: SolanaTransactionContext,\n ): Promise<Either<Error, HttpSolanaOwnerInfoDataSourceResult>>;\n}\n"],
4
+ "sourcesContent": ["import { type Either } from \"purify-ts\";\n\nimport type { SolanaTransactionContext } from \"@/solana/domain/solanaContextTypes\";\n\nexport type HttpSolanaOwnerInfoDataSourceResult = {\n tlvDescriptor: Uint8Array;\n};\n\nexport interface SolanaDataSource {\n getOwnerInfo(\n params: SolanaTransactionContext,\n ): Promise<Either<Error, HttpSolanaOwnerInfoDataSourceResult>>;\n}\n"],
5
5
  "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
6
  "names": ["SolanaDataSource_exports", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var s=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var k=Object.prototype.hasOwnProperty;var L=(o,e)=>{for(var a in e)s(o,a,{get:e[a],enumerable:!0})},T=(o,e,a,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of C(e))!k.call(o,t)&&t!==a&&s(o,t,{get:()=>e[t],enumerable:!(r=f(e,t))||r.enumerable});return o};var _=o=>T(s({},"__esModule",{value:!0}),o),p=(o,e,a,r)=>{for(var t=r>1?void 0:r?f(e,a):e,i=o.length-1,n;i>=0;i--)(n=o[i])&&(t=(r?n(e,a,t):n(t))||t);return r&&t&&s(e,a,t),t},d=(o,e)=>(a,r)=>e(a,r,o);var x={};L(x,{DefaultSolanaContextLoader:()=>c});module.exports=_(x);var m=require("inversify"),l=require("purify-ts"),S=require("../../pki/di/pkiTypes"),u=require("../../pki/model/KeyUsage"),y=require("../../solana/di/solanaContextTypes");let c=class{constructor(e,a){this._certificateLoader=a;this._dataSource=e}_dataSource;async load(e){const a=await this._certificateLoader.loadCertificate({keyId:"domain_metadata_key",keyUsage:u.KeyUsage.TrustedName,targetDevice:e.deviceModelId});return a?(await this._dataSource.getOwnerInfo(e)).map(({descriptor:r,tokenAccount:t,owner:i,contract:n})=>({descriptor:r,tokenAccount:t,owner:i,contract:n,certificate:a})):(0,l.Left)(new Error("[ContextModule] - DefaultSolanaContextLoader: CAL certificate is undefined"))}};c=p([(0,m.injectable)(),d(0,(0,m.inject)(y.solanaContextTypes.SolanaDataSource)),d(1,(0,m.inject)(S.pkiTypes.PkiCertificateLoader))],c);0&&(module.exports={DefaultSolanaContextLoader});
1
+ "use strict";var c=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var N=Object.prototype.hasOwnProperty;var E=(o,e)=>{for(var a in e)c(o,a,{get:e[a],enumerable:!0})},A=(o,e,a,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of x(e))!N.call(o,t)&&t!==a&&c(o,t,{get:()=>e[t],enumerable:!(r=u(e,t))||r.enumerable});return o};var O=o=>A(c({},"__esModule",{value:!0}),o),L=(o,e,a,r)=>{for(var t=r>1?void 0:r?u(e,a):e,s=o.length-1,l;s>=0;s--)(l=o[s])&&(t=(r?l(e,a,t):l(t))||t);return r&&t&&c(e,a,t),t},m=(o,e)=>(a,r)=>e(a,r,o);var R={};E(R,{DefaultSolanaContextLoader:()=>d});module.exports=O(R);var n=require("inversify"),S=require("purify-ts"),T=require("../../pki/di/pkiTypes"),y=require("../../pki/model/KeyUsage"),p=require("../../shared/model/SolanaContextTypes"),k=require("../../solana/di/solanaContextTypes"),C=require("../../solanaToken/di/solanaTokenTypes");let d=class{constructor(e,a,r){this._dataSource=e;this._certificateLoader=a;this._solanaTokenLoader=r}async load(e){const{deviceModelId:a}=e,r=await this._certificateLoader.loadCertificate({keyId:"domain_metadata_key",keyUsage:y.KeyUsage.TrustedName,targetDevice:a});if(!r)return(0,S.Left)(new Error("[ContextModule] DefaultSolanaContextLoader: trustedNamePKICertificate is missing"));const s=[{loader:this._solanaTokenLoader,expectedType:p.SolanaContextTypes.SOLANA_TOKEN}].map(({loader:i,expectedType:f})=>{if(i.canHandle(e,f))return i.loadField(e)}).filter(i=>i!==void 0),_=(await Promise.allSettled(s)).map(i=>i.status==="fulfilled"?i.value:void 0).filter(i=>i!==void 0).sort((i,f)=>{const P=i.type===p.SolanaContextTypes.SOLANA_TOKEN?0:1,v=f.type===p.SolanaContextTypes.SOLANA_TOKEN?0:1;return P-v});return(await this._dataSource.getOwnerInfo(e)).map(({tlvDescriptor:i})=>({trustedNamePKICertificate:r,tlvDescriptor:i,loadersResults:_}))}};d=L([(0,n.injectable)(),m(0,(0,n.inject)(k.solanaContextTypes.SolanaDataSource)),m(1,(0,n.inject)(T.pkiTypes.PkiCertificateLoader)),m(2,(0,n.inject)(C.solanaTokenTypes.SolanaTokenContextLoader))],d);0&&(module.exports={DefaultSolanaContextLoader});
2
2
  //# sourceMappingURL=DefaultSolanaContextLoader.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/solana/domain/DefaultSolanaContextLoader.ts"],
4
- "sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport { Left } from \"purify-ts\";\n\nimport { pkiTypes } from \"@/pki/di/pkiTypes\";\nimport { type PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport { KeyUsage } from \"@/pki/model/KeyUsage\";\nimport { type SolanaDataSource } from \"@/solana/data/SolanaDataSource\";\nimport { solanaContextTypes } from \"@/solana/di/solanaContextTypes\";\n\nimport { SolanaContextLoader } from \"./SolanaContextLoader\";\nimport {\n SolanaTransactionContext,\n SolanaTransactionContextResult,\n} from \"./solanaContextTypes\";\n\n@injectable()\nexport class DefaultSolanaContextLoader implements SolanaContextLoader {\n private _dataSource: SolanaDataSource;\n\n constructor(\n @inject(solanaContextTypes.SolanaDataSource)\n dataSource: SolanaDataSource,\n @inject(pkiTypes.PkiCertificateLoader)\n private readonly _certificateLoader: PkiCertificateLoader,\n ) {\n this._dataSource = dataSource;\n }\n\n async load(\n solanaContext: SolanaTransactionContext,\n ): Promise<SolanaTransactionContextResult> {\n // load the CAL certificate\n const certificate = await this._certificateLoader.loadCertificate({\n keyId: \"domain_metadata_key\",\n keyUsage: KeyUsage.TrustedName,\n targetDevice: solanaContext.deviceModelId,\n });\n if (!certificate) {\n return Left(\n new Error(\n \"[ContextModule] - DefaultSolanaContextLoader: CAL certificate is undefined\",\n ),\n );\n }\n\n // fetch the Solana context\n return (await this._dataSource.getOwnerInfo(solanaContext)).map(\n ({ descriptor, tokenAccount, owner, contract }) => ({\n descriptor,\n tokenAccount,\n owner,\n contract,\n certificate,\n }),\n );\n }\n}\n"],
5
- "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBACnCC,EAAqB,qBAErBC,EAAyB,6BAEzBC,EAAyB,gCAEzBC,EAAmC,0CAS5B,IAAMC,EAAN,KAAgE,CAGrE,YAEEC,EAEiBC,EACjB,CADiB,wBAAAA,EAEjB,KAAK,YAAcD,CACrB,CATQ,YAWR,MAAM,KACJE,EACyC,CAEzC,MAAMC,EAAc,MAAM,KAAK,mBAAmB,gBAAgB,CAChE,MAAO,sBACP,SAAU,WAAS,YACnB,aAAcD,EAAc,aAC9B,CAAC,EACD,OAAKC,GASG,MAAM,KAAK,YAAY,aAAaD,CAAa,GAAG,IAC1D,CAAC,CAAE,WAAAE,EAAY,aAAAC,EAAc,MAAAC,EAAO,SAAAC,CAAS,KAAO,CAClD,WAAAH,EACA,aAAAC,EACA,MAAAC,EACA,SAAAC,EACA,YAAAJ,CACF,EACF,KAhBS,QACL,IAAI,MACF,4EACF,CACF,CAaJ,CACF,EAxCaJ,EAANS,EAAA,IADN,cAAW,EAKPC,EAAA,eAAO,qBAAmB,gBAAgB,GAE1CA,EAAA,eAAO,WAAS,oBAAoB,IAN5BV",
6
- "names": ["DefaultSolanaContextLoader_exports", "__export", "DefaultSolanaContextLoader", "__toCommonJS", "import_inversify", "import_purify_ts", "import_pkiTypes", "import_KeyUsage", "import_solanaContextTypes", "DefaultSolanaContextLoader", "dataSource", "_certificateLoader", "solanaContext", "certificate", "descriptor", "tokenAccount", "owner", "contract", "__decorateClass", "__decorateParam"]
4
+ "sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport { Left } from \"purify-ts\";\n\nimport { pkiTypes } from \"@/pki/di/pkiTypes\";\nimport { type PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport { KeyUsage } from \"@/pki/model/KeyUsage\";\nimport {\n LoaderResult,\n SolanaContextTypes,\n} from \"@/shared/model/SolanaContextTypes\";\nimport { type SolanaDataSource } from \"@/solana/data/SolanaDataSource\";\nimport { solanaContextTypes } from \"@/solana/di/solanaContextTypes\";\n// import { lifiTypes } from \"@/solanaLifi/di/solanaLifiTypes\";\n// import { SolanaLifiContextLoader } from \"@/solanaLifi/domain/SolanaLifiContextLoader\";\nimport { solanaTokenTypes } from \"@/solanaToken/di/solanaTokenTypes\";\nimport { SolanaTokenContextLoader } from \"@/solanaToken/domain/SolanaTokenContextLoader\";\n\nimport { type SolanaContextLoader } from \"./SolanaContextLoader\";\nimport {\n SolanaTransactionContext,\n SolanaTransactionContextResult,\n} from \"./solanaContextTypes\";\n\n@injectable()\nexport class DefaultSolanaContextLoader implements SolanaContextLoader {\n constructor(\n @inject(solanaContextTypes.SolanaDataSource)\n private readonly _dataSource: SolanaDataSource,\n @inject(pkiTypes.PkiCertificateLoader)\n private readonly _certificateLoader: PkiCertificateLoader,\n @inject(solanaTokenTypes.SolanaTokenContextLoader)\n private readonly _solanaTokenLoader: SolanaTokenContextLoader,\n // @inject(lifiTypes.SolanaLifiContextLoader)\n // private readonly _solanaLifiLoader: SolanaLifiContextLoader,\n ) {}\n\n async load(\n solanaContext: SolanaTransactionContext,\n ): Promise<SolanaTransactionContextResult> {\n const { deviceModelId } = solanaContext;\n\n const trustedNamePKICertificate =\n await this._certificateLoader.loadCertificate({\n keyId: \"domain_metadata_key\",\n keyUsage: KeyUsage.TrustedName,\n targetDevice: deviceModelId,\n });\n\n if (!trustedNamePKICertificate) {\n return Left(\n new Error(\n \"[ContextModule] DefaultSolanaContextLoader: trustedNamePKICertificate is missing\",\n ),\n );\n }\n\n const loaderEntries = [\n {\n loader: this._solanaTokenLoader,\n expectedType: SolanaContextTypes.SOLANA_TOKEN,\n },\n // TODO LIFI\n // Lifi loader currently disabled as WIP\n // {\n // loader: this._solanaLifiLoader,\n // expectedType: SolanaContextTypes.SOLANA_LIFI,\n // },\n ] as const;\n\n const loaderPromises: Promise<LoaderResult>[] = loaderEntries\n .map(({ loader, expectedType }) => {\n if (loader.canHandle(solanaContext, expectedType)) {\n return loader.loadField(solanaContext);\n }\n return undefined;\n })\n .filter((p): p is Promise<LoaderResult> => p !== undefined);\n\n const settledLoaders = await Promise.allSettled(loaderPromises);\n\n const loadersResults = settledLoaders\n .map((r) => (r.status === \"fulfilled\" ? r.value : undefined))\n .filter((v): v is LoaderResult => v !== undefined)\n // always sort with SOLANA_TOKEN first\n .sort((a, b) => {\n const A = a.type === SolanaContextTypes.SOLANA_TOKEN ? 0 : 1;\n const B = b.type === SolanaContextTypes.SOLANA_TOKEN ? 0 : 1;\n return A - B;\n });\n\n const tlvDescriptorEither =\n await this._dataSource.getOwnerInfo(solanaContext);\n\n return tlvDescriptorEither.map(({ tlvDescriptor }) => ({\n trustedNamePKICertificate,\n tlvDescriptor,\n loadersResults,\n }));\n }\n}\n"],
5
+ "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBACnCC,EAAqB,qBAErBC,EAAyB,6BAEzBC,EAAyB,gCACzBC,EAGO,6CAEPC,EAAmC,0CAGnCC,EAAiC,6CAU1B,IAAMC,EAAN,KAAgE,CACrE,YAEmBC,EAEAC,EAEAC,EAGjB,CAPiB,iBAAAF,EAEA,wBAAAC,EAEA,wBAAAC,CAGhB,CAEH,MAAM,KACJC,EACyC,CACzC,KAAM,CAAE,cAAAC,CAAc,EAAID,EAEpBE,EACJ,MAAM,KAAK,mBAAmB,gBAAgB,CAC5C,MAAO,sBACP,SAAU,WAAS,YACnB,aAAcD,CAChB,CAAC,EAEH,GAAI,CAACC,EACH,SAAO,QACL,IAAI,MACF,kFACF,CACF,EAgBF,MAAMC,EAbgB,CACpB,CACE,OAAQ,KAAK,mBACb,aAAc,qBAAmB,YACnC,CAOF,EAGG,IAAI,CAAC,CAAE,OAAAC,EAAQ,aAAAC,CAAa,IAAM,CACjC,GAAID,EAAO,UAAUJ,EAAeK,CAAY,EAC9C,OAAOD,EAAO,UAAUJ,CAAa,CAGzC,CAAC,EACA,OAAQM,GAAkCA,IAAM,MAAS,EAItDC,GAFiB,MAAM,QAAQ,WAAWJ,CAAc,GAG3D,IAAKK,GAAOA,EAAE,SAAW,YAAcA,EAAE,MAAQ,MAAU,EAC3D,OAAQC,GAAyBA,IAAM,MAAS,EAEhD,KAAK,CAACC,EAAGC,IAAM,CACd,MAAMC,EAAIF,EAAE,OAAS,qBAAmB,aAAe,EAAI,EACrDG,EAAIF,EAAE,OAAS,qBAAmB,aAAe,EAAI,EAC3D,OAAOC,EAAIC,CACb,CAAC,EAKH,OAFE,MAAM,KAAK,YAAY,aAAab,CAAa,GAExB,IAAI,CAAC,CAAE,cAAAc,CAAc,KAAO,CACrD,0BAAAZ,EACA,cAAAY,EACA,eAAAP,CACF,EAAE,CACJ,CACF,EA3EaX,EAANmB,EAAA,IADN,cAAW,EAGPC,EAAA,eAAO,qBAAmB,gBAAgB,GAE1CA,EAAA,eAAO,WAAS,oBAAoB,GAEpCA,EAAA,eAAO,mBAAiB,wBAAwB,IANxCpB",
6
+ "names": ["DefaultSolanaContextLoader_exports", "__export", "DefaultSolanaContextLoader", "__toCommonJS", "import_inversify", "import_purify_ts", "import_pkiTypes", "import_KeyUsage", "import_SolanaContextTypes", "import_solanaContextTypes", "import_solanaTokenTypes", "DefaultSolanaContextLoader", "_dataSource", "_certificateLoader", "_solanaTokenLoader", "solanaContext", "deviceModelId", "trustedNamePKICertificate", "loaderPromises", "loader", "expectedType", "p", "loadersResults", "r", "v", "a", "b", "A", "B", "tlvDescriptor", "__decorateClass", "__decorateParam"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var l=require("@ledgerhq/device-management-kit"),a=require("purify-ts"),i=require("../../pki/model/KeyUsage"),s=require("../../solana/domain/DefaultSolanaContextLoader");describe("DefaultSolanaContextLoader",()=>{let o,e,n;const r={deviceModelId:l.DeviceModelId.FLEX,tokenAddress:"token-addr",challenge:"challenge-str"},c={descriptor:"cert-desc",signature:"cert-sig",keyUsageNumber:0,payload:new Uint8Array};beforeEach(()=>{vi.resetAllMocks(),o={getOwnerInfo:vi.fn()},e={loadCertificate:vi.fn()},n=new s.DefaultSolanaContextLoader(o,e)}),it("should call dataSource.getSolanaContext and certificateLoader.loadCertificate with correct args",async()=>{e.loadCertificate.mockResolvedValue(c),o.getOwnerInfo.mockResolvedValue((0,a.Right)({descriptor:Buffer.from("d"),tokenAccount:"tkn",owner:"own",contract:"ctr"})),await n.load(r),expect(e.loadCertificate).toHaveBeenCalledWith({keyId:"domain_metadata_key",keyUsage:i.KeyUsage.TrustedName,targetDevice:r.deviceModelId}),expect(o.getOwnerInfo).toHaveBeenCalledWith(r)}),it("should return Left if certificate loader returns undefined",async()=>{e.loadCertificate.mockResolvedValue(void 0);const t=await n.load(r);expect(t).toEqual((0,a.Left)(new Error("[ContextModule] - DefaultSolanaContextLoader: CAL certificate is undefined")))}),it("should propagate Left from dataSource.getSolanaContext",async()=>{e.loadCertificate.mockResolvedValue(c);const t=new Error("DS failure");o.getOwnerInfo.mockResolvedValue((0,a.Left)(t));const d=await n.load(r);expect(d).toEqual((0,a.Left)(t))}),it("should return Right with merged data and certificate on success",async()=>{e.loadCertificate.mockResolvedValue(c);const t={descriptor:Buffer.from("dd"),tokenAccount:"tokenAcct",owner:"ownerAddr",contract:"contractAddr",certificate:c};o.getOwnerInfo.mockResolvedValue((0,a.Right)(t));const d=await n.load(r);expect(d.isRight()).toBe(!0),expect(d.extract()).toEqual({...t,certificate:c})})});
1
+ "use strict";var p=require("@ledgerhq/device-management-kit"),l=require("purify-ts"),e=require("vitest"),u=require("../../pki/model/KeyUsage"),n=require("../../shared/model/SolanaContextTypes"),f=require("../../solanaToken/domain/SolanaTokenContextLoader");(0,e.describe)("SolanaTokenContextLoader",()=>{let s,d;const i=new Uint8Array([240,202,204,26]),t={descriptor:{data:{symbol:"SOL",name:"Solana",decimals:9},signatures:{prod:"prod-sig",test:"test-sig"}}},c={tokenInternalId:"token-1",deviceModelId:p.DeviceModelId.FLEX};(0,e.beforeEach)(()=>{e.vi.restoreAllMocks(),s={getTokenInfosPayload:e.vi.fn()},d={loadCertificate:e.vi.fn()}});const r=a=>{const o={cal:{mode:a}};return new f.SolanaTokenContextLoader(s,o,d)};(0,e.describe)("canHandle",()=>{(0,e.it)("returns true when tokenInternalId is provided",()=>{const a=r("prod");(0,e.expect)(a.canHandle({tokenInternalId:"abc123"},n.SolanaContextTypes.SOLANA_TOKEN)).toBe(!0)}),(0,e.it)("returns false when tokenInternalId is missing or falsy",()=>{const a=r("prod");(0,e.expect)(a.canHandle({tokenInternalId:""},n.SolanaContextTypes.SOLANA_TOKEN)).toBe(!1),(0,e.expect)(a.canHandle({tokenInternalId:void 0},n.SolanaContextTypes.SOLANA_TOKEN)).toBe(!1),(0,e.expect)(a.canHandle({},n.SolanaContextTypes.SOLANA_TOKEN)).toBe(!1)})}),(0,e.describe)("loadField",()=>{(0,e.it)("returns an error when datasource returns Left(error) and still fetched certificate beforehand",async()=>{const a=r("prod"),o=new Error("datasource failed");e.vi.spyOn(s,"getTokenInfosPayload").mockResolvedValue((0,l.Left)(o)),e.vi.spyOn(d,"loadCertificate").mockResolvedValue({keyUsageNumber:0,payload:i});const k=await a.loadField(c);(0,e.expect)(s.getTokenInfosPayload).toHaveBeenCalledWith({tokenInternalId:"token-1"}),(0,e.expect)(d.loadCertificate).toHaveBeenCalledWith({keyId:"token_metadata_key",keyUsage:u.KeyUsage.CoinMeta,targetDevice:c.deviceModelId}),(0,e.expect)(k).toEqual({type:n.SolanaContextTypes.ERROR,error:o})}),(0,e.it)("returns SOLANA_TOKEN with prod signature by default (falsy mode), and includes certificate",async()=>{const a=r("");e.vi.spyOn(s,"getTokenInfosPayload").mockResolvedValue((0,l.Right)(t)),e.vi.spyOn(d,"loadCertificate").mockResolvedValue({keyUsageNumber:0,payload:i});const o=await a.loadField({...c,tokenInternalId:"token-2"});(0,e.expect)(o).toEqual({type:n.SolanaContextTypes.SOLANA_TOKEN,payload:{solanaTokenDescriptor:{data:t.descriptor.data,signature:"prod-sig"}},certificate:{keyUsageNumber:0,payload:i}})}),(0,e.it)("returns SOLANA_TOKEN with signature matching config.cal.mode",async()=>{const a=r("test");e.vi.spyOn(s,"getTokenInfosPayload").mockResolvedValue((0,l.Right)(t)),e.vi.spyOn(d,"loadCertificate").mockResolvedValue({keyUsageNumber:1,payload:i});const o=await a.loadField({...c,tokenInternalId:"token-3"});(0,e.expect)(o).toEqual({type:n.SolanaContextTypes.SOLANA_TOKEN,payload:{solanaTokenDescriptor:{data:t.descriptor.data,signature:"test-sig"}},certificate:{keyUsageNumber:1,payload:i}})}),(0,e.it)("works even if certificate loader returns undefined (certificate omitted)",async()=>{const a=r("prod");e.vi.spyOn(s,"getTokenInfosPayload").mockResolvedValue((0,l.Right)(t)),e.vi.spyOn(d,"loadCertificate").mockResolvedValue(void 0);const o=await a.loadField(c);(0,e.expect)(o).toEqual({type:n.SolanaContextTypes.SOLANA_TOKEN,payload:{solanaTokenDescriptor:{data:t.descriptor.data,signature:"prod-sig"}},certificate:void 0})})}),(0,e.describe)("pluckTokenData (private)",()=>{(0,e.it)("picks the signature for the configured mode",()=>{const a=r("test"),k=a.pluckTokenData.bind(a)(t);(0,e.expect)(k).toEqual({solanaTokenDescriptor:{data:t.descriptor.data,signature:"test-sig"}})}),(0,e.it)("falls back to 'prod' when config.cal.mode is falsy",()=>{const o=r(void 0).pluckTokenData(t);(0,e.expect)(o).toEqual({solanaTokenDescriptor:{data:t.descriptor.data,signature:"prod-sig"}})})})});
2
2
  //# sourceMappingURL=DefaultSolanaContextLoader.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/solana/domain/DefaultSolanaContextLoader.test.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { DeviceModelId } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { KeyUsage } from \"@/pki/model/KeyUsage\";\nimport { DefaultSolanaContextLoader } from \"@/solana/domain/DefaultSolanaContextLoader\";\nimport type {\n SolanaTransactionContext,\n SolanaTransactionContextResultSuccess,\n} from \"@/solana/domain/solanaContextTypes\";\n\ndescribe(\"DefaultSolanaContextLoader\", () => {\n let mockDataSource: {\n getOwnerInfo: any;\n };\n let mockCertLoader: {\n loadCertificate: any;\n };\n let loader: DefaultSolanaContextLoader;\n\n const context: SolanaTransactionContext = {\n deviceModelId: DeviceModelId.FLEX,\n tokenAddress: \"token-addr\",\n challenge: \"challenge-str\",\n } as any;\n\n const fakeCert = {\n descriptor: \"cert-desc\",\n signature: \"cert-sig\",\n keyUsageNumber: 0,\n payload: new Uint8Array(),\n };\n\n beforeEach(() => {\n vi.resetAllMocks();\n mockDataSource = {\n getOwnerInfo: vi.fn(),\n };\n mockCertLoader = {\n loadCertificate: vi.fn(),\n };\n\n loader = new DefaultSolanaContextLoader(\n mockDataSource as any,\n mockCertLoader as any,\n );\n });\n\n it(\"should call dataSource.getSolanaContext and certificateLoader.loadCertificate with correct args\", async () => {\n // given\n mockCertLoader.loadCertificate.mockResolvedValue(fakeCert);\n mockDataSource.getOwnerInfo.mockResolvedValue(\n Right({\n descriptor: Buffer.from(\"d\"),\n tokenAccount: \"tkn\",\n owner: \"own\",\n contract: \"ctr\",\n }),\n );\n\n // when\n await loader.load(context);\n\n // then\n expect(mockCertLoader.loadCertificate).toHaveBeenCalledWith({\n keyId: \"domain_metadata_key\",\n keyUsage: KeyUsage.TrustedName,\n targetDevice: context.deviceModelId,\n });\n expect(mockDataSource.getOwnerInfo).toHaveBeenCalledWith(context);\n });\n\n it(\"should return Left if certificate loader returns undefined\", async () => {\n mockCertLoader.loadCertificate.mockResolvedValue(undefined);\n\n const result = await loader.load(context);\n\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] - DefaultSolanaContextLoader: CAL certificate is undefined\",\n ),\n ),\n );\n });\n\n it(\"should propagate Left from dataSource.getSolanaContext\", async () => {\n mockCertLoader.loadCertificate.mockResolvedValue(fakeCert);\n const dsError = new Error(\"DS failure\");\n mockDataSource.getOwnerInfo.mockResolvedValue(Left(dsError));\n\n const result = await loader.load(context);\n\n expect(result).toEqual(Left(dsError));\n });\n\n it(\"should return Right with merged data and certificate on success\", async () => {\n mockCertLoader.loadCertificate.mockResolvedValue(fakeCert);\n\n const dsPayload: SolanaTransactionContextResultSuccess = {\n descriptor: Buffer.from(\"dd\"),\n tokenAccount: \"tokenAcct\",\n owner: \"ownerAddr\",\n contract: \"contractAddr\",\n certificate: fakeCert,\n };\n mockDataSource.getOwnerInfo.mockResolvedValue(Right(dsPayload));\n\n const result = await loader.load(context);\n\n expect(result.isRight()).toBe(true);\n expect(result.extract()).toEqual({\n ...dsPayload,\n certificate: fakeCert,\n });\n });\n});\n"],
5
- "mappings": "aACA,IAAAA,EAA8B,2CAC9BC,EAA4B,qBAE5BC,EAAyB,gCACzBC,EAA2C,sDAM3C,SAAS,6BAA8B,IAAM,CAC3C,IAAIC,EAGAC,EAGAC,EAEJ,MAAMC,EAAoC,CACxC,cAAe,gBAAc,KAC7B,aAAc,aACd,UAAW,eACb,EAEMC,EAAW,CACf,WAAY,YACZ,UAAW,WACX,eAAgB,EAChB,QAAS,IAAI,UACf,EAEA,WAAW,IAAM,CACf,GAAG,cAAc,EACjBJ,EAAiB,CACf,aAAc,GAAG,GAAG,CACtB,EACAC,EAAiB,CACf,gBAAiB,GAAG,GAAG,CACzB,EAEAC,EAAS,IAAI,6BACXF,EACAC,CACF,CACF,CAAC,EAED,GAAG,kGAAmG,SAAY,CAEhHA,EAAe,gBAAgB,kBAAkBG,CAAQ,EACzDJ,EAAe,aAAa,qBAC1B,SAAM,CACJ,WAAY,OAAO,KAAK,GAAG,EAC3B,aAAc,MACd,MAAO,MACP,SAAU,KACZ,CAAC,CACH,EAGA,MAAME,EAAO,KAAKC,CAAO,EAGzB,OAAOF,EAAe,eAAe,EAAE,qBAAqB,CAC1D,MAAO,sBACP,SAAU,WAAS,YACnB,aAAcE,EAAQ,aACxB,CAAC,EACD,OAAOH,EAAe,YAAY,EAAE,qBAAqBG,CAAO,CAClE,CAAC,EAED,GAAG,6DAA8D,SAAY,CAC3EF,EAAe,gBAAgB,kBAAkB,MAAS,EAE1D,MAAMI,EAAS,MAAMH,EAAO,KAAKC,CAAO,EAExC,OAAOE,CAAM,EAAE,WACb,QACE,IAAI,MACF,4EACF,CACF,CACF,CACF,CAAC,EAED,GAAG,yDAA0D,SAAY,CACvEJ,EAAe,gBAAgB,kBAAkBG,CAAQ,EACzD,MAAME,EAAU,IAAI,MAAM,YAAY,EACtCN,EAAe,aAAa,qBAAkB,QAAKM,CAAO,CAAC,EAE3D,MAAMD,EAAS,MAAMH,EAAO,KAAKC,CAAO,EAExC,OAAOE,CAAM,EAAE,WAAQ,QAAKC,CAAO,CAAC,CACtC,CAAC,EAED,GAAG,kEAAmE,SAAY,CAChFL,EAAe,gBAAgB,kBAAkBG,CAAQ,EAEzD,MAAMG,EAAmD,CACvD,WAAY,OAAO,KAAK,IAAI,EAC5B,aAAc,YACd,MAAO,YACP,SAAU,eACV,YAAaH,CACf,EACAJ,EAAe,aAAa,qBAAkB,SAAMO,CAAS,CAAC,EAE9D,MAAMF,EAAS,MAAMH,EAAO,KAAKC,CAAO,EAExC,OAAOE,EAAO,QAAQ,CAAC,EAAE,KAAK,EAAI,EAClC,OAAOA,EAAO,QAAQ,CAAC,EAAE,QAAQ,CAC/B,GAAGE,EACH,YAAaH,CACf,CAAC,CACH,CAAC,CACH,CAAC",
6
- "names": ["import_device_management_kit", "import_purify_ts", "import_KeyUsage", "import_DefaultSolanaContextLoader", "mockDataSource", "mockCertLoader", "loader", "context", "fakeCert", "result", "dsError", "dsPayload"]
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport { DeviceModelId } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport type { PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport { KeyUsage } from \"@/pki/model/KeyUsage\";\nimport { SolanaContextTypes } from \"@/shared/model/SolanaContextTypes\";\nimport type { SolanaTransactionContext } from \"@/solana/domain/solanaContextTypes\";\nimport {\n type SolanaTokenDataSource,\n type TokenDataResponse,\n} from \"@/solanaToken/data/SolanaTokenDataSource\";\nimport { SolanaTokenContextLoader } from \"@/solanaToken/domain/SolanaTokenContextLoader\";\n\ndescribe(\"SolanaTokenContextLoader\", () => {\n let mockDataSource: SolanaTokenDataSource;\n let mockCertLoader: PkiCertificateLoader;\n\n const bytes = new Uint8Array([0xf0, 0xca, 0xcc, 0x1a]);\n\n const tokenDataResponse: TokenDataResponse = {\n descriptor: {\n data: { symbol: \"SOL\", name: \"Solana\", decimals: 9 } as any,\n signatures: {\n prod: \"prod-sig\",\n test: \"test-sig\",\n } as any,\n },\n } as any;\n\n const baseCtx = {\n tokenInternalId: \"token-1\",\n deviceModelId: DeviceModelId.FLEX,\n } as any;\n\n beforeEach(() => {\n vi.restoreAllMocks();\n\n mockDataSource = {\n getTokenInfosPayload: vi.fn(),\n } as unknown as SolanaTokenDataSource;\n\n mockCertLoader = {\n loadCertificate: vi.fn(),\n } as unknown as PkiCertificateLoader;\n });\n\n const makeLoader = (mode?: string) => {\n const config = { cal: { mode } } as unknown as ContextModuleConfig;\n return new SolanaTokenContextLoader(mockDataSource, config, mockCertLoader);\n };\n\n describe(\"canHandle\", () => {\n it(\"returns true when tokenInternalId is provided\", () => {\n const loader = makeLoader(\"prod\");\n\n expect(\n loader.canHandle(\n {\n tokenInternalId: \"abc123\",\n } as SolanaTransactionContext,\n SolanaContextTypes.SOLANA_TOKEN,\n ),\n ).toBe(true);\n });\n\n it(\"returns false when tokenInternalId is missing or falsy\", () => {\n const loader = makeLoader(\"prod\");\n\n expect(\n loader.canHandle(\n { tokenInternalId: \"\" } as any,\n SolanaContextTypes.SOLANA_TOKEN,\n ),\n ).toBe(false);\n expect(\n loader.canHandle(\n { tokenInternalId: undefined } as any,\n SolanaContextTypes.SOLANA_TOKEN,\n ),\n ).toBe(false);\n expect(loader.canHandle({} as any, SolanaContextTypes.SOLANA_TOKEN)).toBe(\n false,\n );\n });\n });\n\n describe(\"loadField\", () => {\n it(\"returns an error when datasource returns Left(error) and still fetched certificate beforehand\", async () => {\n const loader = makeLoader(\"prod\");\n const error = new Error(\"datasource failed\");\n\n vi.spyOn(mockDataSource, \"getTokenInfosPayload\").mockResolvedValue(\n Left(error),\n );\n vi.spyOn(mockCertLoader, \"loadCertificate\").mockResolvedValue({\n keyUsageNumber: 0,\n payload: bytes,\n });\n\n const result = await loader.loadField(baseCtx);\n\n expect(mockDataSource.getTokenInfosPayload).toHaveBeenCalledWith({\n tokenInternalId: \"token-1\",\n });\n expect(mockCertLoader.loadCertificate).toHaveBeenCalledWith({\n keyId: \"token_metadata_key\",\n keyUsage: KeyUsage.CoinMeta,\n targetDevice: baseCtx.deviceModelId,\n });\n expect(result).toEqual({\n type: SolanaContextTypes.ERROR,\n error,\n });\n });\n\n it(\"returns SOLANA_TOKEN with prod signature by default (falsy mode), and includes certificate\", async () => {\n const loader = makeLoader(\"\"); // falsy -> default 'prod'\n\n vi.spyOn(mockDataSource, \"getTokenInfosPayload\").mockResolvedValue(\n Right(tokenDataResponse),\n );\n vi.spyOn(mockCertLoader, \"loadCertificate\").mockResolvedValue({\n keyUsageNumber: 0,\n payload: bytes,\n });\n\n const result = await loader.loadField({\n ...baseCtx,\n tokenInternalId: \"token-2\",\n });\n\n expect(result).toEqual({\n type: SolanaContextTypes.SOLANA_TOKEN,\n payload: {\n solanaTokenDescriptor: {\n data: tokenDataResponse.descriptor.data,\n signature: \"prod-sig\",\n },\n },\n certificate: { keyUsageNumber: 0, payload: bytes },\n });\n });\n\n it(\"returns SOLANA_TOKEN with signature matching config.cal.mode\", async () => {\n const loader = makeLoader(\"test\");\n\n vi.spyOn(mockDataSource, \"getTokenInfosPayload\").mockResolvedValue(\n Right(tokenDataResponse),\n );\n vi.spyOn(mockCertLoader, \"loadCertificate\").mockResolvedValue({\n keyUsageNumber: 1,\n payload: bytes,\n });\n\n const result = await loader.loadField({\n ...baseCtx,\n tokenInternalId: \"token-3\",\n });\n\n expect(result).toEqual({\n type: SolanaContextTypes.SOLANA_TOKEN,\n payload: {\n solanaTokenDescriptor: {\n data: tokenDataResponse.descriptor.data,\n signature: \"test-sig\",\n },\n },\n certificate: { keyUsageNumber: 1, payload: bytes },\n });\n });\n\n it(\"works even if certificate loader returns undefined (certificate omitted)\", async () => {\n const loader = makeLoader(\"prod\");\n\n vi.spyOn(mockDataSource, \"getTokenInfosPayload\").mockResolvedValue(\n Right(tokenDataResponse),\n );\n vi.spyOn(mockCertLoader, \"loadCertificate\").mockResolvedValue(undefined);\n\n const result = await loader.loadField(baseCtx);\n\n expect(result).toEqual({\n type: SolanaContextTypes.SOLANA_TOKEN,\n payload: {\n solanaTokenDescriptor: {\n data: tokenDataResponse.descriptor.data,\n signature: \"prod-sig\",\n },\n },\n certificate: undefined,\n });\n });\n });\n\n describe(\"pluckTokenData (private)\", () => {\n it(\"picks the signature for the configured mode\", () => {\n const loader = makeLoader(\"test\");\n const pluck = (loader as any).pluckTokenData.bind(loader);\n\n const result = pluck(tokenDataResponse);\n\n expect(result).toEqual({\n solanaTokenDescriptor: {\n data: tokenDataResponse.descriptor.data,\n signature: \"test-sig\",\n },\n });\n });\n\n it(\"falls back to 'prod' when config.cal.mode is falsy\", () => {\n const loader = makeLoader(undefined as any);\n const result = (loader as any).pluckTokenData(tokenDataResponse);\n\n expect(result).toEqual({\n solanaTokenDescriptor: {\n data: tokenDataResponse.descriptor.data,\n signature: \"prod-sig\",\n },\n });\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["import_device_management_kit", "import_purify_ts", "import_vitest", "import_KeyUsage", "import_SolanaContextTypes", "import_SolanaTokenContextLoader", "mockDataSource", "mockCertLoader", "bytes", "tokenDataResponse", "baseCtx", "makeLoader", "mode", "config", "loader", "error", "result"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var o=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var p=(e,t,i,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of a(t))!c.call(e,r)&&r!==i&&o(e,r,{get:()=>t[r],enumerable:!(n=s(t,r))||n.enumerable});return e};var d=e=>p(o({},"__esModule",{value:!0}),e);var g={};module.exports=d(g);
1
+ "use strict";var r=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(e,t,a,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of i(t))!l.call(e,o)&&o!==a&&r(e,o,{get:()=>t[o],enumerable:!(n=s(t,o))||n.enumerable});return e};var p=e=>c(r({},"__esModule",{value:!0}),e);var d={};module.exports=p(d);
2
2
  //# sourceMappingURL=solanaContextTypes.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/solana/domain/solanaContextTypes.ts"],
4
- "sourcesContent": ["import { type DeviceModelId } from \"@ledgerhq/device-management-kit\";\nimport { type Either } from \"purify-ts\";\n\nimport { type PkiCertificate } from \"@/pki/model/PkiCertificate\";\n\nexport type SolanaTransactionContext = {\n deviceModelId: DeviceModelId;\n challenge?: string;\n tokenAddress?: string;\n createATA?: {\n address: string;\n mintAddress: string;\n };\n};\n\nexport type SolanaSPLOwnerInfo = {\n tokenAccount: string;\n owner: string;\n contract: string;\n signedDescriptor: string;\n};\n\nexport type SolanaTransactionContextResultSuccess = {\n descriptor: Uint8Array;\n tokenAccount: string;\n owner: string;\n contract: string;\n certificate: PkiCertificate;\n};\n\nexport type SolanaTransactionContextResult = Either<\n Error,\n SolanaTransactionContextResultSuccess\n>;\n"],
4
+ "sourcesContent": ["import { type DeviceModelId } from \"@ledgerhq/device-management-kit\";\nimport { type Either } from \"purify-ts\";\n\nimport { type PkiCertificate } from \"@/pki/model/PkiCertificate\";\nimport {\n type SolanaLifiContextResult,\n type SolanaTokenContextResult,\n} from \"@/shared/model/SolanaContextTypes\";\n\nexport type SolanaTransactionContext = {\n deviceModelId: DeviceModelId;\n challenge?: string;\n tokenAddress?: string;\n tokenInternalId?: string;\n templateId?: string;\n createATA?: {\n address: string;\n mintAddress: string;\n };\n};\n\nexport type SolanaSPLOwnerInfo = {\n tokenAccount: string;\n owner: string;\n contract: string;\n signedDescriptor: string;\n};\n\nexport type SolanaContextLoaderResults = Array<\n SolanaTokenContextResult | SolanaLifiContextResult\n>;\n\nexport type SolanaTransactionContextResultSuccess = {\n trustedNamePKICertificate: PkiCertificate;\n tlvDescriptor: Uint8Array;\n loadersResults: SolanaContextLoaderResults;\n};\n\nexport type SolanaTransactionContextResult = Either<\n Error,\n SolanaTransactionContextResultSuccess\n>;\n"],
5
5
  "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
6
  "names": ["solanaContextTypes_exports", "__toCommonJS"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ "use strict";var T=Object.create;var s=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var x=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty;var _=(t,r)=>{for(var o in r)s(t,o,{get:r[o],enumerable:!0})},d=(t,r,o,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let e of G(r))!R.call(t,e)&&e!==o&&s(t,e,{get:()=>r[e],enumerable:!(i=f(r,e))||i.enumerable});return t};var l=(t,r,o)=>(o=t!=null?T(x(t)):{},d(r||!t||!t.__esModule?s(o,"default",{value:t,enumerable:!0}):o,t)),y=t=>d(s({},"__esModule",{value:!0}),t),u=(t,r,o,i)=>{for(var e=i>1?void 0:i?f(r,o):r,p=t.length-1,m;p>=0;p--)(m=t[p])&&(e=(i?m(r,o,e):m(e))||e);return i&&e&&s(r,o,e),e},E=(t,r)=>(o,i)=>r(o,i,t);var b={};_(b,{HttpSolanaLifiDataSource:()=>n});module.exports=y(b);var h=l(require("axios")),c=require("inversify"),a=require("purify-ts"),g=require("../../config/di/configTypes"),C=require("../../shared/constant/HttpHeaders"),D=l(require("../../../package.json"));let n=class{constructor(r){this.config=r}async getTransactionDescriptorsPayload({templateId:r}){try{const{data:o}=await h.default.request({method:"GET",url:`${this.config.cal.url}/swap_templates`,params:{template_id:r,output:"id,chain_id,instructions,descriptors",ref:"ref=commit:866b6e7633a7a806fab7f9941bcc3df7ee640784"},headers:{[C.LEDGER_CLIENT_VERSION_HEADER]:`context-module/${D.default.version}`}});return!o||o.length===0||!o[0]?(0,a.Left)(new Error(`[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${r}`)):(0,a.Right)(o[0])}catch{return(0,a.Left)(new Error("[ContextModule] HttpSolanaLifiDataSource: Failed to fetch transaction descriptors"))}}};n=u([(0,c.injectable)(),E(0,(0,c.inject)(g.configTypes.Config))],n);0&&(module.exports={HttpSolanaLifiDataSource});
2
+ //# sourceMappingURL=HttpSolanaLifiDataSource.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/solanaLifi/data/HttpSolanaLifiDataSource.ts"],
4
+ "sourcesContent": ["import axios from \"axios\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport { LEDGER_CLIENT_VERSION_HEADER } from \"@/shared/constant/HttpHeaders\";\nimport PACKAGE from \"@root/package.json\";\n\nimport {\n GetTransactionDescriptorsParams,\n GetTransactionDescriptorsResponse,\n SolanaLifiDataSource,\n} from \"./SolanaLifiDataSource\";\n\n@injectable()\nexport class HttpSolanaLifiDataSource implements SolanaLifiDataSource {\n constructor(\n @inject(configTypes.Config) private readonly config: ContextModuleConfig,\n ) {}\n public async getTransactionDescriptorsPayload({\n templateId,\n }: GetTransactionDescriptorsParams): Promise<\n Either<Error, GetTransactionDescriptorsResponse>\n > {\n try {\n const { data } = await axios.request<GetTransactionDescriptorsResponse[]>(\n {\n method: \"GET\",\n url: `${this.config.cal.url}/swap_templates`,\n params: {\n template_id: templateId,\n output: \"id,chain_id,instructions,descriptors\",\n // TODO LIFI\n // REVERT WHEN CAL SUPPORTS IT\n ref: \"ref=commit:866b6e7633a7a806fab7f9941bcc3df7ee640784\",\n },\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n },\n },\n );\n\n if (!data || data.length === 0 || !data[0]) {\n return Left(\n new Error(\n `[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${templateId}`,\n ),\n );\n }\n\n return Right(data[0]);\n } catch (_error) {\n return Left(\n new Error(\n \"[ContextModule] HttpSolanaLifiDataSource: Failed to fetch transaction descriptors\",\n ),\n );\n }\n }\n}\n"],
5
+ "mappings": "qtBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAkB,oBAClBC,EAAmC,qBACnCC,EAAoC,qBAEpCC,EAA4B,mCAE5BC,EAA6C,yCAC7CC,EAAoB,iCASb,IAAMC,EAAN,KAA+D,CACpE,YAC+CC,EAC7C,CAD6C,YAAAA,CAC5C,CACH,MAAa,iCAAiC,CAC5C,WAAAC,CACF,EAEE,CACA,GAAI,CACF,KAAM,CAAE,KAAAC,CAAK,EAAI,MAAM,EAAAC,QAAM,QAC3B,CACE,OAAQ,MACR,IAAK,GAAG,KAAK,OAAO,IAAI,GAAG,kBAC3B,OAAQ,CACN,YAAaF,EACb,OAAQ,uCAGR,IAAK,qDACP,EACA,QAAS,CACP,CAAC,8BAA4B,EAAG,kBAAkB,EAAAG,QAAQ,OAAO,EACnE,CACF,CACF,EAEA,MAAI,CAACF,GAAQA,EAAK,SAAW,GAAK,CAACA,EAAK,CAAC,KAChC,QACL,IAAI,MACF,+EAA+ED,CAAU,EAC3F,CACF,KAGK,SAAMC,EAAK,CAAC,CAAC,CACtB,MAAiB,CACf,SAAO,QACL,IAAI,MACF,mFACF,CACF,CACF,CACF,CACF,EA5CaH,EAANM,EAAA,IADN,cAAW,EAGPC,EAAA,eAAO,cAAY,MAAM,IAFjBP",
6
+ "names": ["HttpSolanaLifiDataSource_exports", "__export", "HttpSolanaLifiDataSource", "__toCommonJS", "import_axios", "import_inversify", "import_purify_ts", "import_configTypes", "import_HttpHeaders", "import_package", "HttpSolanaLifiDataSource", "config", "templateId", "data", "axios", "PACKAGE", "__decorateClass", "__decorateParam"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var m=Object.create;var c=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var h=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty;var E=(a,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of y(t))!w.call(a,s)&&s!==r&&c(a,s,{get:()=>t[s],enumerable:!(o=f(t,s))||o.enumerable});return a};var l=(a,t,r)=>(r=a!=null?m(h(a)):{},E(t||!a||!a.__esModule?c(r,"default",{value:a,enumerable:!0}):r,a));var n=l(require("axios")),i=require("purify-ts"),e=require("vitest"),d=require("../../shared/constant/HttpHeaders"),p=l(require("../../../package.json")),u=require("./HttpSolanaLifiDataSource");e.vi.mock("axios");(0,e.describe)("HttpSolanaLifiDataSource",()=>{let a;const t="tpl-123",r={cal:{url:"https://crypto-assets-service.api.ledger.com/v1",mode:"prod",branch:"main"}};(0,e.beforeAll)(()=>{a=new u.HttpSolanaLifiDataSource(r)}),(0,e.beforeEach)(()=>{e.vi.clearAllMocks()}),(0,e.it)("should call axios with the ledger client version header and correct params",async()=>{const o=e.vi.fn(()=>Promise.resolve({data:[]}));e.vi.spyOn(n.default,"request").mockImplementation(o),await a.getTransactionDescriptorsPayload({templateId:t}),(0,e.expect)(o).toHaveBeenCalledTimes(1),(0,e.expect)(o).toHaveBeenCalledWith(e.expect.objectContaining({method:"GET",url:`${r.cal.url}/swap_templates`,params:{template_id:t,output:"id,chain_id,instructions,descriptors",ref:"ref=commit:866b6e7633a7a806fab7f9941bcc3df7ee640784"},headers:{[d.LEDGER_CLIENT_VERSION_HEADER]:`context-module/${p.default.version}`}}))}),(0,e.it)("should return Right(data[0]) when axios responds with a non-empty array",async()=>{const o={descriptors:{swap:{programId:"SwapProgram",accounts:[],data:"abcd"}}};e.vi.spyOn(n.default,"request").mockResolvedValue({data:[o]});const s=await a.getTransactionDescriptorsPayload({templateId:t});(0,e.expect)(s).toEqual((0,i.Right)(o))}),(0,e.it)("should return an error when data is undefined",async()=>{e.vi.spyOn(n.default,"request").mockResolvedValue({data:void 0});const o=await a.getTransactionDescriptorsPayload({templateId:t});(0,e.expect)(o).toEqual((0,i.Left)(new Error(`[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${t}`)))}),(0,e.it)("should return an error when data array is empty",async()=>{e.vi.spyOn(n.default,"request").mockResolvedValue({data:[]});const o=await a.getTransactionDescriptorsPayload({templateId:t});(0,e.expect)(o).toEqual((0,i.Left)(new Error(`[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${t}`)))}),(0,e.it)("should return an error when first element is falsy",async()=>{e.vi.spyOn(n.default,"request").mockResolvedValue({data:[void 0]});const o=await a.getTransactionDescriptorsPayload({templateId:t});(0,e.expect)(o).toEqual((0,i.Left)(new Error(`[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${t}`)))}),(0,e.it)("should return an error when axios throws",async()=>{e.vi.spyOn(n.default,"request").mockRejectedValue(new Error("network"));const o=await a.getTransactionDescriptorsPayload({templateId:t});(0,e.expect)(o).toEqual((0,i.Left)(new Error("[ContextModule] HttpSolanaLifiDataSource: Failed to fetch transaction descriptors")))})});
2
+ //# sourceMappingURL=HttpSolanaLifiDataSource.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/solanaLifi/data/HttpSolanaLifiDataSource.test.ts"],
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport axios from \"axios\";\nimport { Left, Right } from \"purify-ts\";\nimport { beforeAll, beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport { LEDGER_CLIENT_VERSION_HEADER } from \"@/shared/constant/HttpHeaders\";\nimport PACKAGE from \"@root/package.json\";\n\nimport { HttpSolanaLifiDataSource } from \"./HttpSolanaLifiDataSource\";\nimport {\n type GetTransactionDescriptorsResponse,\n type SolanaLifiDataSource,\n} from \"./SolanaLifiDataSource\";\n\nvi.mock(\"axios\");\n\ndescribe(\"HttpSolanaLifiDataSource\", () => {\n let datasource: SolanaLifiDataSource;\n const templateId = \"tpl-123\";\n const config: ContextModuleConfig = {\n cal: {\n url: \"https://crypto-assets-service.api.ledger.com/v1\",\n mode: \"prod\",\n branch: \"main\",\n },\n } as ContextModuleConfig;\n\n beforeAll(() => {\n datasource = new HttpSolanaLifiDataSource(config);\n });\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should call axios with the ledger client version header and correct params\", async () => {\n // given\n const requestSpy = vi.fn(() => Promise.resolve({ data: [] }));\n vi.spyOn(axios, \"request\").mockImplementation(requestSpy);\n\n // when\n await datasource.getTransactionDescriptorsPayload({ templateId });\n\n // then\n expect(requestSpy).toHaveBeenCalledTimes(1);\n expect(requestSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n method: \"GET\",\n url: `${config.cal.url}/swap_templates`,\n params: {\n template_id: templateId,\n output: \"id,chain_id,instructions,descriptors\",\n // TODO LIFI\n // REVERT WHEN CAL SUPPORTS IT\n ref: \"ref=commit:866b6e7633a7a806fab7f9941bcc3df7ee640784\",\n },\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n },\n }),\n );\n });\n\n it(\"should return Right(data[0]) when axios responds with a non-empty array\", async () => {\n // given\n const response0: GetTransactionDescriptorsResponse = {\n descriptors: {\n swap: { programId: \"SwapProgram\", accounts: [], data: \"abcd\" } as any,\n },\n } as any;\n\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [response0] });\n\n // when\n const result = await datasource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n // then\n expect(result).toEqual(Right(response0));\n });\n\n it(\"should return an error when data is undefined\", async () => {\n // given\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: undefined });\n\n // when\n const result = await datasource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n // then\n expect(result).toEqual(\n Left(\n new Error(\n `[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${templateId}`,\n ),\n ),\n );\n });\n\n it(\"should return an error when data array is empty\", async () => {\n // given\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [] });\n\n // when\n const result = await datasource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n // then\n expect(result).toEqual(\n Left(\n new Error(\n `[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${templateId}`,\n ),\n ),\n );\n });\n\n it(\"should return an error when first element is falsy\", async () => {\n // given\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [undefined] });\n\n // when\n const result = await datasource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n // then\n expect(result).toEqual(\n Left(\n new Error(\n `[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${templateId}`,\n ),\n ),\n );\n });\n\n it(\"should return an error when axios throws\", async () => {\n // given\n vi.spyOn(axios, \"request\").mockRejectedValue(new Error(\"network\"));\n\n // when\n const result = await datasource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n // then\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSolanaLifiDataSource: Failed to fetch transaction descriptors\",\n ),\n ),\n );\n });\n});\n"],
5
+ "mappings": "wdAEA,IAAAA,EAAkB,oBAClBC,EAA4B,qBAC5BC,EAAgE,kBAGhEC,EAA6C,yCAC7CC,EAAoB,iCAEpBC,EAAyC,sCAMzC,KAAG,KAAK,OAAO,KAEf,YAAS,2BAA4B,IAAM,CACzC,IAAIC,EACJ,MAAMC,EAAa,UACbC,EAA8B,CAClC,IAAK,CACH,IAAK,kDACL,KAAM,OACN,OAAQ,MACV,CACF,KAEA,aAAU,IAAM,CACdF,EAAa,IAAI,2BAAyBE,CAAM,CAClD,CAAC,KAED,cAAW,IAAM,CACf,KAAG,cAAc,CACnB,CAAC,KAED,MAAG,6EAA8E,SAAY,CAE3F,MAAMC,EAAa,KAAG,GAAG,IAAM,QAAQ,QAAQ,CAAE,KAAM,CAAC,CAAE,CAAC,CAAC,EAC5D,KAAG,MAAM,EAAAC,QAAO,SAAS,EAAE,mBAAmBD,CAAU,EAGxD,MAAMH,EAAW,iCAAiC,CAAE,WAAAC,CAAW,CAAC,KAGhE,UAAOE,CAAU,EAAE,sBAAsB,CAAC,KAC1C,UAAOA,CAAU,EAAE,qBACjB,SAAO,iBAAiB,CACtB,OAAQ,MACR,IAAK,GAAGD,EAAO,IAAI,GAAG,kBACtB,OAAQ,CACN,YAAaD,EACb,OAAQ,uCAGR,IAAK,qDACP,EACA,QAAS,CACP,CAAC,8BAA4B,EAAG,kBAAkB,EAAAI,QAAQ,OAAO,EACnE,CACF,CAAC,CACH,CACF,CAAC,KAED,MAAG,0EAA2E,SAAY,CAExF,MAAMC,EAA+C,CACnD,YAAa,CACX,KAAM,CAAE,UAAW,cAAe,SAAU,CAAC,EAAG,KAAM,MAAO,CAC/D,CACF,EAEA,KAAG,MAAM,EAAAF,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAM,CAACE,CAAS,CAAE,CAAC,EAGlE,MAAMC,EAAS,MAAMP,EAAW,iCAAiC,CAC/D,WAAAC,CACF,CAAC,KAGD,UAAOM,CAAM,EAAE,WAAQ,SAAMD,CAAS,CAAC,CACzC,CAAC,KAED,MAAG,gDAAiD,SAAY,CAE9D,KAAG,MAAM,EAAAF,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAM,MAAU,CAAC,EAGhE,MAAMG,EAAS,MAAMP,EAAW,iCAAiC,CAC/D,WAAAC,CACF,CAAC,KAGD,UAAOM,CAAM,EAAE,WACb,QACE,IAAI,MACF,+EAA+EN,CAAU,EAC3F,CACF,CACF,CACF,CAAC,KAED,MAAG,kDAAmD,SAAY,CAEhE,KAAG,MAAM,EAAAG,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAM,CAAC,CAAE,CAAC,EAGzD,MAAMG,EAAS,MAAMP,EAAW,iCAAiC,CAC/D,WAAAC,CACF,CAAC,KAGD,UAAOM,CAAM,EAAE,WACb,QACE,IAAI,MACF,+EAA+EN,CAAU,EAC3F,CACF,CACF,CACF,CAAC,KAED,MAAG,qDAAsD,SAAY,CAEnE,KAAG,MAAM,EAAAG,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAM,CAAC,MAAS,CAAE,CAAC,EAGlE,MAAMG,EAAS,MAAMP,EAAW,iCAAiC,CAC/D,WAAAC,CACF,CAAC,KAGD,UAAOM,CAAM,EAAE,WACb,QACE,IAAI,MACF,+EAA+EN,CAAU,EAC3F,CACF,CACF,CACF,CAAC,KAED,MAAG,2CAA4C,SAAY,CAEzD,KAAG,MAAM,EAAAG,QAAO,SAAS,EAAE,kBAAkB,IAAI,MAAM,SAAS,CAAC,EAGjE,MAAMG,EAAS,MAAMP,EAAW,iCAAiC,CAC/D,WAAAC,CACF,CAAC,KAGD,UAAOM,CAAM,EAAE,WACb,QACE,IAAI,MACF,mFACF,CACF,CACF,CACF,CAAC,CACH,CAAC",
6
+ "names": ["import_axios", "import_purify_ts", "import_vitest", "import_HttpHeaders", "import_package", "import_HttpSolanaLifiDataSource", "datasource", "templateId", "config", "requestSpy", "axios", "PACKAGE", "response0", "result"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var a=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var n=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var c=(t,r,o,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let e of n(r))!p.call(t,e)&&e!==o&&a(t,e,{get:()=>r[e],enumerable:!(s=i(r,e))||s.enumerable});return t};var m=t=>c(a({},"__esModule",{value:!0}),t);var D={};module.exports=m(D);
2
+ //# sourceMappingURL=SolanaLifiDataSource.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/solanaLifi/data/SolanaLifiDataSource.ts"],
4
+ "sourcesContent": ["import { type Either } from \"purify-ts\";\n\nimport { type SolanaTransactionDescriptorList } from \"@/shared/model/SolanaContextTypes\";\n\nexport type GetTransactionDescriptorsParams = {\n templateId: string;\n};\n\nexport type GetTransactionDescriptorsResponse = {\n [key: string]: unknown;\n descriptors: SolanaTransactionDescriptorList;\n};\n\nexport interface SolanaLifiDataSource {\n getTransactionDescriptorsPayload(\n params: GetTransactionDescriptorsParams,\n ): Promise<Either<Error, GetTransactionDescriptorsResponse>>;\n}\n"],
5
+ "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
+ "names": ["SolanaLifiDataSource_exports", "__toCommonJS"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var r=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var S=Object.prototype.hasOwnProperty;var c=(o,a)=>{for(var i in a)r(o,i,{get:a[i],enumerable:!0})},u=(o,a,i,f)=>{if(a&&typeof a=="object"||typeof a=="function")for(let t of L(a))!S.call(o,t)&&t!==i&&r(o,t,{get:()=>a[t],enumerable:!(f=p(a,t))||f.enumerable});return o};var d=o=>u(r({},"__esModule",{value:!0}),o);var x={};c(x,{solanaLifiModuleFactory:()=>s});module.exports=d(x);var n=require("inversify"),l=require("../../solanaLifi/data/HttpSolanaLifiDataSource"),m=require("../../solanaLifi/domain/SolanaLifiContextLoader"),e=require("./solanaLifiTypes");const s=()=>new n.ContainerModule(({bind:o})=>{o(e.lifiTypes.SolanaLifiDataSource).to(l.HttpSolanaLifiDataSource),o(e.lifiTypes.SolanaLifiContextLoader).to(m.SolanaLifiContextLoader)});0&&(module.exports={solanaLifiModuleFactory});
2
+ //# sourceMappingURL=lifiModuleFactory.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/solanaLifi/di/lifiModuleFactory.ts"],
4
+ "sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { HttpSolanaLifiDataSource } from \"@/solanaLifi/data/HttpSolanaLifiDataSource\";\nimport { SolanaLifiContextLoader } from \"@/solanaLifi/domain/SolanaLifiContextLoader\";\n\nimport { lifiTypes } from \"./solanaLifiTypes\";\n\nexport const solanaLifiModuleFactory = () =>\n new ContainerModule(({ bind }) => {\n bind(lifiTypes.SolanaLifiDataSource).to(HttpSolanaLifiDataSource);\n bind(lifiTypes.SolanaLifiContextLoader).to(SolanaLifiContextLoader);\n });\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAgC,qBAEhCC,EAAyC,sDACzCC,EAAwC,uDAExCC,EAA0B,6BAEnB,MAAML,EAA0B,IACrC,IAAI,kBAAgB,CAAC,CAAE,KAAAM,CAAK,IAAM,CAChCA,EAAK,YAAU,oBAAoB,EAAE,GAAG,0BAAwB,EAChEA,EAAK,YAAU,uBAAuB,EAAE,GAAG,yBAAuB,CACpE,CAAC",
6
+ "names": ["lifiModuleFactory_exports", "__export", "solanaLifiModuleFactory", "__toCommonJS", "import_inversify", "import_HttpSolanaLifiDataSource", "import_SolanaLifiContextLoader", "import_solanaLifiTypes", "bind"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var t=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var n=Object.prototype.hasOwnProperty;var r=(a,o)=>{for(var e in o)t(a,e,{get:o[e],enumerable:!0})},L=(a,o,e,S)=>{if(o&&typeof o=="object"||typeof o=="function")for(let i of l(o))!n.call(a,i)&&i!==e&&t(a,i,{get:()=>o[i],enumerable:!(S=f(o,i))||S.enumerable});return a};var c=a=>L(t({},"__esModule",{value:!0}),a);var y={};r(y,{lifiTypes:()=>x});module.exports=c(y);const x={SolanaLifiDataSource:Symbol.for("SolanaLifiDataSource"),SolanaLifiContextLoader:Symbol.for("SolanaLifiContextLoader")};0&&(module.exports={lifiTypes});
2
+ //# sourceMappingURL=solanaLifiTypes.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/solanaLifi/di/solanaLifiTypes.ts"],
4
+ "sourcesContent": ["export const lifiTypes = {\n SolanaLifiDataSource: Symbol.for(\"SolanaLifiDataSource\"),\n SolanaLifiContextLoader: Symbol.for(\"SolanaLifiContextLoader\"),\n};\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,eAAAE,IAAA,eAAAC,EAAAH,GAAO,MAAME,EAAY,CACvB,qBAAsB,OAAO,IAAI,sBAAsB,EACvD,wBAAyB,OAAO,IAAI,yBAAyB,CAC/D",
6
+ "names": ["solanaLifiTypes_exports", "__export", "lifiTypes", "__toCommonJS"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var r=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var L=(n,t)=>{for(var e in t)r(n,e,{get:t[e],enumerable:!0})},I=(n,t,e,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of d(t))!y.call(n,a)&&a!==e&&r(n,a,{get:()=>t[a],enumerable:!(o=u(t,a))||o.enumerable});return n};var T=n=>I(r({},"__esModule",{value:!0}),n),S=(n,t,e,o)=>{for(var a=o>1?void 0:o?u(t,e):t,p=n.length-1,c;p>=0;p--)(c=n[p])&&(a=(o?c(t,e,a):c(a))||a);return o&&a&&r(t,e,a),a},f=(n,t)=>(e,o)=>t(e,o,n);var R={};L(R,{SolanaLifiContextLoader:()=>i});module.exports=T(R);var s=require("inversify"),l=require("../../shared/model/SolanaContextTypes"),m=require("../../solanaLifi/di/solanaLifiTypes");let i=class{constructor(t){this.dataSource=t}canHandle(t,e){if(e!==l.SolanaContextTypes.SOLANA_LIFI)return!1;if(typeof t=="object"&&t!==null&&"templateId"in t){const o=t.templateId;return typeof o=="string"&&o.length>0}return!1}async loadField(t){const{templateId:e}=t;return(await this.dataSource.getTransactionDescriptorsPayload({templateId:e})).caseOf({Left:a=>({type:l.SolanaContextTypes.ERROR,error:a}),Right:a=>({type:l.SolanaContextTypes.SOLANA_LIFI,payload:this.pluckTransactionData(a)})})}pluckTransactionData(t){return{...t.descriptors}}};i=S([(0,s.injectable)(),f(0,(0,s.inject)(m.lifiTypes.SolanaLifiDataSource))],i);0&&(module.exports={SolanaLifiContextLoader});
2
+ //# sourceMappingURL=SolanaLifiContextLoader.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/solanaLifi/domain/SolanaLifiContextLoader.ts"],
4
+ "sourcesContent": ["import { inject, injectable } from \"inversify\";\n\nimport { ContextFieldLoader } from \"@/shared/domain/ContextFieldLoader\";\nimport {\n SolanaContextTypes,\n SolanaLifiContextResult,\n SolanaTransactionDescriptorList,\n} from \"@/shared/model/SolanaContextTypes\";\nimport { SolanaTransactionContext } from \"@/solana/domain/solanaContextTypes\";\nimport {\n GetTransactionDescriptorsResponse,\n type SolanaLifiDataSource,\n} from \"@/solanaLifi/data/SolanaLifiDataSource\";\nimport { lifiTypes } from \"@/solanaLifi/di/solanaLifiTypes\";\n\ntype SolanaLifiFieldInput = SolanaTransactionContext & {\n templateId: string;\n};\n\n@injectable()\nexport class SolanaLifiContextLoader\n implements\n ContextFieldLoader<\n SolanaLifiFieldInput,\n SolanaContextTypes,\n SolanaLifiContextResult\n >\n{\n constructor(\n @inject(lifiTypes.SolanaLifiDataSource)\n private readonly dataSource: SolanaLifiDataSource,\n ) {}\n\n public canHandle(\n field: unknown,\n expectedType: SolanaContextTypes,\n ): field is SolanaLifiFieldInput {\n if (expectedType !== SolanaContextTypes.SOLANA_LIFI) return false;\n\n if (typeof field === \"object\" && field !== null && \"templateId\" in field) {\n const templateId = (field as { templateId: unknown }).templateId;\n return typeof templateId === \"string\" && templateId.length > 0;\n }\n\n return false;\n }\n\n public async loadField(\n solanaTokenContextInput: SolanaLifiFieldInput,\n ): Promise<SolanaLifiContextResult> {\n const { templateId } = solanaTokenContextInput;\n\n const payload = await this.dataSource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n return payload.caseOf({\n Left: (error): SolanaLifiContextResult => ({\n type: SolanaContextTypes.ERROR,\n error,\n }),\n Right: (value): SolanaLifiContextResult => ({\n type: SolanaContextTypes.SOLANA_LIFI,\n payload: this.pluckTransactionData(value),\n }),\n });\n }\n\n private pluckTransactionData(\n tokenData: GetTransactionDescriptorsResponse,\n ): SolanaTransactionDescriptorList {\n return {\n ...tokenData.descriptors,\n };\n }\n}\n"],
5
+ "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBAGnCC,EAIO,6CAMPC,EAA0B,2CAOnB,IAAMC,EAAN,KAOP,CACE,YAEmBC,EACjB,CADiB,gBAAAA,CAChB,CAEI,UACLC,EACAC,EAC+B,CAC/B,GAAIA,IAAiB,qBAAmB,YAAa,MAAO,GAE5D,GAAI,OAAOD,GAAU,UAAYA,IAAU,MAAQ,eAAgBA,EAAO,CACxE,MAAME,EAAcF,EAAkC,WACtD,OAAO,OAAOE,GAAe,UAAYA,EAAW,OAAS,CAC/D,CAEA,MAAO,EACT,CAEA,MAAa,UACXC,EACkC,CAClC,KAAM,CAAE,WAAAD,CAAW,EAAIC,EAMvB,OAJgB,MAAM,KAAK,WAAW,iCAAiC,CACrE,WAAAD,CACF,CAAC,GAEc,OAAO,CACpB,KAAOE,IAAoC,CACzC,KAAM,qBAAmB,MACzB,MAAAA,CACF,GACA,MAAQC,IAAoC,CAC1C,KAAM,qBAAmB,YACzB,QAAS,KAAK,qBAAqBA,CAAK,CAC1C,EACF,CAAC,CACH,CAEQ,qBACNC,EACiC,CACjC,MAAO,CACL,GAAGA,EAAU,WACf,CACF,CACF,EAvDaR,EAANS,EAAA,IADN,cAAW,EAUPC,EAAA,eAAO,YAAU,oBAAoB,IAT7BV",
6
+ "names": ["SolanaLifiContextLoader_exports", "__export", "SolanaLifiContextLoader", "__toCommonJS", "import_inversify", "import_SolanaContextTypes", "import_solanaLifiTypes", "SolanaLifiContextLoader", "dataSource", "field", "expectedType", "templateId", "solanaTokenContextInput", "error", "value", "tokenData", "__decorateClass", "__decorateParam"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var l=require("purify-ts"),a=require("vitest"),t=require("../../shared/model/SolanaContextTypes"),d=require("./SolanaLifiContextLoader");(0,a.describe)("SolanaLifiContextLoader",()=>{let o;const c={swap:{programId:"SomeProgram",accounts:[],data:"abc123"},bridge:{programId:"AnotherProgram",accounts:[],data:"def456"}},i={descriptors:c};(0,a.beforeEach)(()=>{a.vi.restoreAllMocks(),o={getTransactionDescriptorsPayload:a.vi.fn()}});const r=()=>new d.SolanaLifiContextLoader(o);(0,a.describe)("canHandle",()=>{(0,a.it)("returns true when templateId is provided",()=>{const e=r();(0,a.expect)(e.canHandle({templateId:"tpl-123",deviceModelId:"nanoS"},t.SolanaContextTypes.SOLANA_LIFI)).toBe(!0)}),(0,a.it)("returns false when templateId is missing or falsy",()=>{const e=r();(0,a.expect)(e.canHandle({templateId:""},t.SolanaContextTypes.SOLANA_LIFI)).toBe(!1),(0,a.expect)(e.canHandle({templateId:void 0},t.SolanaContextTypes.SOLANA_LIFI)).toBe(!1),(0,a.expect)(e.canHandle({},t.SolanaContextTypes.SOLANA_LIFI)).toBe(!1)})}),(0,a.describe)("loadField",()=>{(0,a.it)("returns an error when datasource returns Left(error)",async()=>{const e=r(),n=new Error("boom");a.vi.spyOn(o,"getTransactionDescriptorsPayload").mockResolvedValue((0,l.Left)(n));const s={templateId:"tpl-err",deviceModelId:"nanoS"},p=await e.loadField(s);(0,a.expect)(o.getTransactionDescriptorsPayload).toHaveBeenCalledWith({templateId:"tpl-err"}),(0,a.expect)(p).toEqual({type:t.SolanaContextTypes.ERROR,error:n})}),(0,a.it)("returns SOLANA_LIFI with plucked descriptors when datasource returns Right(value)",async()=>{const e=r();a.vi.spyOn(o,"getTransactionDescriptorsPayload").mockResolvedValue((0,l.Right)(i));const n={templateId:"tpl-ok",deviceModelId:"nanoS"},s=await e.loadField(n);(0,a.expect)(o.getTransactionDescriptorsPayload).toHaveBeenCalledWith({templateId:"tpl-ok"}),(0,a.expect)(s).toEqual({type:t.SolanaContextTypes.SOLANA_LIFI,payload:c})})}),(0,a.describe)("pluckTransactionData (private)",()=>{(0,a.it)("simply returns the descriptors object from the response",()=>{const e=r(),s=e.pluckTransactionData.bind(e)(i);(0,a.expect)(s).toEqual(c)})})});
2
+ //# sourceMappingURL=SolanaLifiContextLoader.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/solanaLifi/domain/SolanaLifiContextLoader.test.ts"],
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport { Left, Right } from \"purify-ts\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport {\n SolanaContextTypes,\n type SolanaTransactionDescriptorList,\n} from \"@/shared/model/SolanaContextTypes\";\nimport {\n type GetTransactionDescriptorsResponse,\n type SolanaLifiDataSource,\n} from \"@/solanaLifi/data/SolanaLifiDataSource\";\n\nimport { SolanaLifiContextLoader } from \"./SolanaLifiContextLoader\";\n\ndescribe(\"SolanaLifiContextLoader\", () => {\n let mockDataSource: SolanaLifiDataSource;\n\n const descriptors: SolanaTransactionDescriptorList = {\n // Shape not important for the loader: it's plucked verbatim\n swap: { programId: \"SomeProgram\", accounts: [], data: \"abc123\" } as any,\n bridge: {\n programId: \"AnotherProgram\",\n accounts: [],\n data: \"def456\",\n } as any,\n };\n\n const txDescriptorsResponse: GetTransactionDescriptorsResponse = {\n descriptors,\n } as any;\n\n beforeEach(() => {\n vi.restoreAllMocks();\n mockDataSource = {\n getTransactionDescriptorsPayload: vi.fn(),\n } as unknown as SolanaLifiDataSource;\n });\n\n const makeLoader = () => new SolanaLifiContextLoader(mockDataSource);\n\n describe(\"canHandle\", () => {\n it(\"returns true when templateId is provided\", () => {\n const loader = makeLoader();\n\n expect(\n loader.canHandle(\n {\n templateId: \"tpl-123\",\n deviceModelId: \"nanoS\" as any,\n },\n SolanaContextTypes.SOLANA_LIFI,\n ),\n ).toBe(true);\n });\n\n it(\"returns false when templateId is missing or falsy\", () => {\n const loader = makeLoader();\n\n expect(\n loader.canHandle(\n { templateId: \"\" } as any,\n SolanaContextTypes.SOLANA_LIFI,\n ),\n ).toBe(false);\n expect(\n loader.canHandle(\n { templateId: undefined } as any,\n SolanaContextTypes.SOLANA_LIFI,\n ),\n ).toBe(false);\n expect(loader.canHandle({} as any, SolanaContextTypes.SOLANA_LIFI)).toBe(\n false,\n );\n });\n });\n\n describe(\"loadField\", () => {\n it(\"returns an error when datasource returns Left(error)\", async () => {\n const loader = makeLoader();\n const error = new Error(\"boom\");\n vi.spyOn(\n mockDataSource,\n \"getTransactionDescriptorsPayload\",\n ).mockResolvedValue(Left(error));\n const input = { templateId: \"tpl-err\", deviceModelId: \"nanoS\" as any };\n const result = await loader.loadField(input);\n\n expect(\n mockDataSource.getTransactionDescriptorsPayload,\n ).toHaveBeenCalledWith({\n templateId: \"tpl-err\",\n });\n expect(result).toEqual({\n type: SolanaContextTypes.ERROR,\n error,\n });\n });\n\n it(\"returns SOLANA_LIFI with plucked descriptors when datasource returns Right(value)\", async () => {\n const loader = makeLoader();\n vi.spyOn(\n mockDataSource,\n \"getTransactionDescriptorsPayload\",\n ).mockResolvedValue(Right(txDescriptorsResponse));\n const input = { templateId: \"tpl-ok\", deviceModelId: \"nanoS\" as any };\n const result = await loader.loadField(input);\n\n expect(\n mockDataSource.getTransactionDescriptorsPayload,\n ).toHaveBeenCalledWith({\n templateId: \"tpl-ok\",\n });\n expect(result).toEqual({\n type: SolanaContextTypes.SOLANA_LIFI,\n payload: descriptors,\n });\n });\n });\n\n describe(\"pluckTransactionData (private)\", () => {\n it(\"simply returns the descriptors object from the response\", () => {\n const loader = makeLoader();\n const pluck = (loader as any).pluckTransactionData.bind(loader);\n\n const result = pluck(txDescriptorsResponse);\n\n expect(result).toEqual(descriptors);\n });\n });\n});\n"],
5
+ "mappings": "aAIA,IAAAA,EAA4B,qBAC5BC,EAAqD,kBAErDC,EAGO,6CAMPC,EAAwC,wCAExC,YAAS,0BAA2B,IAAM,CACxC,IAAIC,EAEJ,MAAMC,EAA+C,CAEnD,KAAM,CAAE,UAAW,cAAe,SAAU,CAAC,EAAG,KAAM,QAAS,EAC/D,OAAQ,CACN,UAAW,iBACX,SAAU,CAAC,EACX,KAAM,QACR,CACF,EAEMC,EAA2D,CAC/D,YAAAD,CACF,KAEA,cAAW,IAAM,CACf,KAAG,gBAAgB,EACnBD,EAAiB,CACf,iCAAkC,KAAG,GAAG,CAC1C,CACF,CAAC,EAED,MAAMG,EAAa,IAAM,IAAI,0BAAwBH,CAAc,KAEnE,YAAS,YAAa,IAAM,IAC1B,MAAG,2CAA4C,IAAM,CACnD,MAAMI,EAASD,EAAW,KAE1B,UACEC,EAAO,UACL,CACE,WAAY,UACZ,cAAe,OACjB,EACA,qBAAmB,WACrB,CACF,EAAE,KAAK,EAAI,CACb,CAAC,KAED,MAAG,oDAAqD,IAAM,CAC5D,MAAMA,EAASD,EAAW,KAE1B,UACEC,EAAO,UACL,CAAE,WAAY,EAAG,EACjB,qBAAmB,WACrB,CACF,EAAE,KAAK,EAAK,KACZ,UACEA,EAAO,UACL,CAAE,WAAY,MAAU,EACxB,qBAAmB,WACrB,CACF,EAAE,KAAK,EAAK,KACZ,UAAOA,EAAO,UAAU,CAAC,EAAU,qBAAmB,WAAW,CAAC,EAAE,KAClE,EACF,CACF,CAAC,CACH,CAAC,KAED,YAAS,YAAa,IAAM,IAC1B,MAAG,uDAAwD,SAAY,CACrE,MAAMA,EAASD,EAAW,EACpBE,EAAQ,IAAI,MAAM,MAAM,EAC9B,KAAG,MACDL,EACA,kCACF,EAAE,qBAAkB,QAAKK,CAAK,CAAC,EAC/B,MAAMC,EAAQ,CAAE,WAAY,UAAW,cAAe,OAAe,EAC/DC,EAAS,MAAMH,EAAO,UAAUE,CAAK,KAE3C,UACEN,EAAe,gCACjB,EAAE,qBAAqB,CACrB,WAAY,SACd,CAAC,KACD,UAAOO,CAAM,EAAE,QAAQ,CACrB,KAAM,qBAAmB,MACzB,MAAAF,CACF,CAAC,CACH,CAAC,KAED,MAAG,oFAAqF,SAAY,CAClG,MAAMD,EAASD,EAAW,EAC1B,KAAG,MACDH,EACA,kCACF,EAAE,qBAAkB,SAAME,CAAqB,CAAC,EAChD,MAAMI,EAAQ,CAAE,WAAY,SAAU,cAAe,OAAe,EAC9DC,EAAS,MAAMH,EAAO,UAAUE,CAAK,KAE3C,UACEN,EAAe,gCACjB,EAAE,qBAAqB,CACrB,WAAY,QACd,CAAC,KACD,UAAOO,CAAM,EAAE,QAAQ,CACrB,KAAM,qBAAmB,YACzB,QAASN,CACX,CAAC,CACH,CAAC,CACH,CAAC,KAED,YAAS,iCAAkC,IAAM,IAC/C,MAAG,0DAA2D,IAAM,CAClE,MAAMG,EAASD,EAAW,EAGpBI,EAFSH,EAAe,qBAAqB,KAAKA,CAAM,EAEzCF,CAAqB,KAE1C,UAAOK,CAAM,EAAE,QAAQN,CAAW,CACpC,CAAC,CACH,CAAC,CACH,CAAC",
6
+ "names": ["import_purify_ts", "import_vitest", "import_SolanaContextTypes", "import_SolanaLifiContextLoader", "mockDataSource", "descriptors", "txDescriptorsResponse", "makeLoader", "loader", "error", "input", "result"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var T=Object.create;var a=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var y=Object.getPrototypeOf,C=Object.prototype.hasOwnProperty;var R=(e,o)=>{for(var r in o)a(e,r,{get:o[r],enumerable:!0})},p=(e,o,r,n)=>{if(o&&typeof o=="object"||typeof o=="function")for(let t of x(o))!C.call(e,t)&&t!==r&&a(e,t,{get:()=>o[t],enumerable:!(n=l(o,t))||n.enumerable});return e};var d=(e,o,r)=>(r=e!=null?T(y(e)):{},p(o||!e||!e.__esModule?a(r,"default",{value:e,enumerable:!0}):r,e)),b=e=>p(a({},"__esModule",{value:!0}),e),u=(e,o,r,n)=>{for(var t=n>1?void 0:n?l(o,r):o,m=e.length-1,f;m>=0;m--)(f=e[m])&&(t=(n?f(o,r,t):f(t))||t);return n&&t&&a(o,r,t),t},h=(e,o)=>(r,n)=>o(r,n,e);var w={};R(w,{HttpSolanaTokenDataSource:()=>i});module.exports=b(w);var _=d(require("axios")),c=require("inversify"),s=require("purify-ts"),g=require("../../config/di/configTypes"),k=require("../../shared/constant/HttpHeaders"),E=d(require("../../../package.json"));let i=class{constructor(o){this.config=o}async getTokenInfosPayload({tokenInternalId:o}){try{const{data:r}=await _.default.request({method:"GET",url:`${this.config.cal.url}/tokens`,params:{id:o,output:"id,name,network,network_family,network_type,exchange_app_config_serialized,live_signature,ticker,decimals,blockchain_name,chain_id,contract_address,descriptor,descriptor_exchange_app,units,symbol",ref:`branch:${this.config.cal.branch}`},headers:{[k.LEDGER_CLIENT_VERSION_HEADER]:`context-module/${E.default.version}`}});return!r||r.length===0||!r[0]?(0,s.Left)(new Error(`[ContextModule] HttpSolanaTokenDataSource: no token metadata for id ${o}`)):(0,s.Right)(r[0])}catch{return(0,s.Left)(new Error("[ContextModule] HttpSolanaTokenDataSource: Failed to fetch token informations"))}}};i=u([(0,c.injectable)(),h(0,(0,c.inject)(g.configTypes.Config))],i);0&&(module.exports={HttpSolanaTokenDataSource});
2
+ //# sourceMappingURL=HttpSolanaTokenDataSource.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/solanaToken/data/HttpSolanaTokenDataSource.ts"],
4
+ "sourcesContent": ["import axios from \"axios\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport { LEDGER_CLIENT_VERSION_HEADER } from \"@/shared/constant/HttpHeaders\";\nimport PACKAGE from \"@root/package.json\";\n\nimport {\n GetSolanaTokenInfosParams,\n SolanaTokenDataSource,\n TokenDataResponse,\n} from \"./SolanaTokenDataSource\";\n\n@injectable()\nexport class HttpSolanaTokenDataSource implements SolanaTokenDataSource {\n constructor(\n @inject(configTypes.Config) private readonly config: ContextModuleConfig,\n ) {}\n public async getTokenInfosPayload({\n tokenInternalId,\n }: GetSolanaTokenInfosParams): Promise<Either<Error, TokenDataResponse>> {\n try {\n const { data } = await axios.request<TokenDataResponse[]>({\n method: \"GET\",\n url: `${this.config.cal.url}/tokens`,\n params: {\n id: tokenInternalId,\n output:\n \"id,name,network,network_family,network_type,exchange_app_config_serialized,live_signature,ticker,decimals,blockchain_name,chain_id,contract_address,descriptor,descriptor_exchange_app,units,symbol\",\n ref: `branch:${this.config.cal.branch}`,\n },\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n },\n });\n\n if (!data || data.length === 0 || !data[0]) {\n return Left(\n new Error(\n `[ContextModule] HttpSolanaTokenDataSource: no token metadata for id ${tokenInternalId}`,\n ),\n );\n }\n\n return Right(data[0]);\n } catch (_error) {\n return Left(\n new Error(\n \"[ContextModule] HttpSolanaTokenDataSource: Failed to fetch token informations\",\n ),\n );\n }\n }\n}\n"],
5
+ "mappings": "qtBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,+BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAkB,oBAClBC,EAAmC,qBACnCC,EAAoC,qBAEpCC,EAA4B,mCAE5BC,EAA6C,yCAC7CC,EAAoB,iCASb,IAAMC,EAAN,KAAiE,CACtE,YAC+CC,EAC7C,CAD6C,YAAAA,CAC5C,CACH,MAAa,qBAAqB,CAChC,gBAAAC,CACF,EAAyE,CACvE,GAAI,CACF,KAAM,CAAE,KAAAC,CAAK,EAAI,MAAM,EAAAC,QAAM,QAA6B,CACxD,OAAQ,MACR,IAAK,GAAG,KAAK,OAAO,IAAI,GAAG,UAC3B,OAAQ,CACN,GAAIF,EACJ,OACE,sMACF,IAAK,UAAU,KAAK,OAAO,IAAI,MAAM,EACvC,EACA,QAAS,CACP,CAAC,8BAA4B,EAAG,kBAAkB,EAAAG,QAAQ,OAAO,EACnE,CACF,CAAC,EAED,MAAI,CAACF,GAAQA,EAAK,SAAW,GAAK,CAACA,EAAK,CAAC,KAChC,QACL,IAAI,MACF,uEAAuED,CAAe,EACxF,CACF,KAGK,SAAMC,EAAK,CAAC,CAAC,CACtB,MAAiB,CACf,SAAO,QACL,IAAI,MACF,+EACF,CACF,CACF,CACF,CACF,EAvCaH,EAANM,EAAA,IADN,cAAW,EAGPC,EAAA,eAAO,cAAY,MAAM,IAFjBP",
6
+ "names": ["HttpSolanaTokenDataSource_exports", "__export", "HttpSolanaTokenDataSource", "__toCommonJS", "import_axios", "import_inversify", "import_purify_ts", "import_configTypes", "import_HttpHeaders", "import_package", "HttpSolanaTokenDataSource", "config", "tokenInternalId", "data", "axios", "PACKAGE", "__decorateClass", "__decorateParam"]
7
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";var h=Object.create;var c=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var g=Object.getPrototypeOf,E=Object.prototype.hasOwnProperty;var S=(a,t,n,l)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of k(t))!E.call(a,o)&&o!==n&&c(a,o,{get:()=>t[o],enumerable:!(l=y(t,o))||l.enumerable});return a};var d=(a,t,n)=>(n=a!=null?h(g(a)):{},S(t||!a||!a.__esModule?c(n,"default",{value:a,enumerable:!0}):n,a));var r=d(require("axios")),s=require("purify-ts"),e=require("vitest"),u=require("../../shared/constant/HttpHeaders"),m=d(require("../../../package.json")),p=require("./HttpSolanaTokenDataSource");e.vi.mock("axios");(0,e.describe)("HttpSolanaTokenDataSource",()=>{let a;const t="sol:usdc",n={cal:{url:"https://crypto-assets-service.api.ledger.com/v1",mode:"prod",branch:"main"}},l=o=>`[ContextModule] HttpSolanaTokenDataSource: no token metadata for id ${o}`;(0,e.beforeAll)(()=>{a=new p.HttpSolanaTokenDataSource(n)}),(0,e.beforeEach)(()=>{e.vi.clearAllMocks()}),(0,e.it)("should call axios with the ledger client version header and correct params",async()=>{const o=e.vi.fn(()=>Promise.resolve({data:[]}));e.vi.spyOn(r.default,"request").mockImplementation(o),await a.getTokenInfosPayload({tokenInternalId:t}),(0,e.expect)(o).toHaveBeenCalledTimes(1),(0,e.expect)(o).toHaveBeenCalledWith(e.expect.objectContaining({method:"GET",url:`${n.cal.url}/tokens`,params:e.expect.objectContaining({id:t,ref:`branch:${n.cal.branch}`}),headers:{[u.LEDGER_CLIENT_VERSION_HEADER]:`context-module/${m.default.version}`}}))}),(0,e.it)("should return Right(data[0]) when axios responds with a non-empty array",async()=>{const o={descriptor:{data:"ABCD",signatures:{prod:"SIG-PROD",test:"SIG-TEST"}}};e.vi.spyOn(r.default,"request").mockResolvedValue({data:[o]});const i=await a.getTokenInfosPayload({tokenInternalId:t});(0,e.expect)(i).toEqual((0,s.Right)(o))}),e.describe.each`
2
+ caseName | apiResponse
3
+ ${"data is undefined"} | ${{data:void 0}}
4
+ ${"data array is empty"} | ${{data:[]}}
5
+ ${"first element is falsy"} | ${{data:[void 0]}}
6
+ `("Error cases",({caseName:o,apiResponse:i})=>{(0,e.it)(`should return an error when ${o}`,async()=>{e.vi.spyOn(r.default,"request").mockResolvedValue(i);const f=await a.getTokenInfosPayload({tokenInternalId:t});(0,e.expect)(f).toEqual((0,s.Left)(new Error(l(t))))})}),(0,e.it)("should return an error when axios throws",async()=>{e.vi.spyOn(r.default,"request").mockRejectedValue(new Error("network"));const o=await a.getTokenInfosPayload({tokenInternalId:t});(0,e.expect)(o).toEqual((0,s.Left)(new Error("[ContextModule] HttpSolanaTokenDataSource: Failed to fetch token informations")))})});
7
+ //# sourceMappingURL=HttpSolanaTokenDataSource.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/solanaToken/data/HttpSolanaTokenDataSource.test.ts"],
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport axios from \"axios\";\nimport { Left, Right } from \"purify-ts\";\nimport { beforeAll, beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport { LEDGER_CLIENT_VERSION_HEADER } from \"@/shared/constant/HttpHeaders\";\nimport PACKAGE from \"@root/package.json\";\n\nimport { HttpSolanaTokenDataSource } from \"./HttpSolanaTokenDataSource\";\nimport {\n type SolanaTokenDataSource,\n type TokenDataResponse,\n} from \"./SolanaTokenDataSource\";\n\nvi.mock(\"axios\");\n\ndescribe(\"HttpSolanaTokenDataSource\", () => {\n let datasource: SolanaTokenDataSource;\n const tokenInternalId = \"sol:usdc\";\n const config: ContextModuleConfig = {\n cal: {\n url: \"https://crypto-assets-service.api.ledger.com/v1\",\n mode: \"prod\",\n branch: \"main\",\n },\n } as ContextModuleConfig;\n\n const errorMessage = (id: string) =>\n `[ContextModule] HttpSolanaTokenDataSource: no token metadata for id ${id}`;\n\n beforeAll(() => {\n datasource = new HttpSolanaTokenDataSource(config);\n });\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should call axios with the ledger client version header and correct params\", async () => {\n // given\n const requestSpy = vi.fn(() => Promise.resolve({ data: [] }));\n vi.spyOn(axios, \"request\").mockImplementation(requestSpy);\n\n // when\n await datasource.getTokenInfosPayload({ tokenInternalId });\n\n // then\n expect(requestSpy).toHaveBeenCalledTimes(1);\n expect(requestSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n method: \"GET\",\n url: `${config.cal.url}/tokens`,\n params: expect.objectContaining({\n id: tokenInternalId,\n ref: `branch:${config.cal.branch}`,\n }),\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n },\n }),\n );\n });\n\n it(\"should return Right(data[0]) when axios responds with a non-empty array\", async () => {\n // given\n const response0: TokenDataResponse = {\n descriptor: {\n data: \"ABCD\",\n signatures: {\n prod: \"SIG-PROD\",\n test: \"SIG-TEST\",\n } as any,\n },\n } as any;\n\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [response0] });\n\n // when\n const result = await datasource.getTokenInfosPayload({ tokenInternalId });\n\n // then\n expect(result).toEqual(Right(response0));\n });\n\n describe.each`\n caseName | apiResponse\n ${\"data is undefined\"} | ${{ data: undefined }}\n ${\"data array is empty\"} | ${{ data: [] }}\n ${\"first element is falsy\"} | ${{ data: [undefined] }}\n `(\"Error cases\", ({ caseName, apiResponse }) => {\n it(`should return an error when ${caseName}`, async () => {\n // given\n vi.spyOn(axios, \"request\").mockResolvedValue(apiResponse);\n\n // when\n const result = await datasource.getTokenInfosPayload({ tokenInternalId });\n\n // then\n expect(result).toEqual(Left(new Error(errorMessage(tokenInternalId))));\n });\n });\n\n it(\"should return an error when axios throws\", async () => {\n // given\n vi.spyOn(axios, \"request\").mockRejectedValue(new Error(\"network\"));\n\n // when\n const result = await datasource.getTokenInfosPayload({ tokenInternalId });\n\n // then\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSolanaTokenDataSource: Failed to fetch token informations\",\n ),\n ),\n );\n });\n});\n"],
5
+ "mappings": "wdAEA,IAAAA,EAAkB,oBAClBC,EAA4B,qBAC5BC,EAAgE,kBAGhEC,EAA6C,yCAC7CC,EAAoB,iCAEpBC,EAA0C,uCAM1C,KAAG,KAAK,OAAO,KAEf,YAAS,4BAA6B,IAAM,CAC1C,IAAIC,EACJ,MAAMC,EAAkB,WAClBC,EAA8B,CAClC,IAAK,CACH,IAAK,kDACL,KAAM,OACN,OAAQ,MACV,CACF,EAEMC,EAAgBC,GACpB,uEAAuEA,CAAE,MAE3E,aAAU,IAAM,CACdJ,EAAa,IAAI,4BAA0BE,CAAM,CACnD,CAAC,KAED,cAAW,IAAM,CACf,KAAG,cAAc,CACnB,CAAC,KAED,MAAG,6EAA8E,SAAY,CAE3F,MAAMG,EAAa,KAAG,GAAG,IAAM,QAAQ,QAAQ,CAAE,KAAM,CAAC,CAAE,CAAC,CAAC,EAC5D,KAAG,MAAM,EAAAC,QAAO,SAAS,EAAE,mBAAmBD,CAAU,EAGxD,MAAML,EAAW,qBAAqB,CAAE,gBAAAC,CAAgB,CAAC,KAGzD,UAAOI,CAAU,EAAE,sBAAsB,CAAC,KAC1C,UAAOA,CAAU,EAAE,qBACjB,SAAO,iBAAiB,CACtB,OAAQ,MACR,IAAK,GAAGH,EAAO,IAAI,GAAG,UACtB,OAAQ,SAAO,iBAAiB,CAC9B,GAAID,EACJ,IAAK,UAAUC,EAAO,IAAI,MAAM,EAClC,CAAC,EACD,QAAS,CACP,CAAC,8BAA4B,EAAG,kBAAkB,EAAAK,QAAQ,OAAO,EACnE,CACF,CAAC,CACH,CACF,CAAC,KAED,MAAG,0EAA2E,SAAY,CAExF,MAAMC,EAA+B,CACnC,WAAY,CACV,KAAM,OACN,WAAY,CACV,KAAM,WACN,KAAM,UACR,CACF,CACF,EAEA,KAAG,MAAM,EAAAF,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAM,CAACE,CAAS,CAAE,CAAC,EAGlE,MAAMC,EAAS,MAAMT,EAAW,qBAAqB,CAAE,gBAAAC,CAAgB,CAAC,KAGxE,UAAOQ,CAAM,EAAE,WAAQ,SAAMD,CAAS,CAAC,CACzC,CAAC,EAED,WAAS;AAAA;AAAA,MAEL,mBAAmB,WAAW,CAAE,KAAM,MAAU,CAAC;AAAA,MACjD,qBAAqB,SAAS,CAAE,KAAM,CAAC,CAAE,CAAC;AAAA,MAC1C,wBAAwB,MAAM,CAAE,KAAM,CAAC,MAAS,CAAE,CAAC;AAAA,IACrD,cAAe,CAAC,CAAE,SAAAE,EAAU,YAAAC,CAAY,IAAM,IAC9C,MAAG,+BAA+BD,CAAQ,GAAI,SAAY,CAExD,KAAG,MAAM,EAAAJ,QAAO,SAAS,EAAE,kBAAkBK,CAAW,EAGxD,MAAMF,EAAS,MAAMT,EAAW,qBAAqB,CAAE,gBAAAC,CAAgB,CAAC,KAGxE,UAAOQ,CAAM,EAAE,WAAQ,QAAK,IAAI,MAAMN,EAAaF,CAAe,CAAC,CAAC,CAAC,CACvE,CAAC,CACH,CAAC,KAED,MAAG,2CAA4C,SAAY,CAEzD,KAAG,MAAM,EAAAK,QAAO,SAAS,EAAE,kBAAkB,IAAI,MAAM,SAAS,CAAC,EAGjE,MAAMG,EAAS,MAAMT,EAAW,qBAAqB,CAAE,gBAAAC,CAAgB,CAAC,KAGxE,UAAOQ,CAAM,EAAE,WACb,QACE,IAAI,MACF,+EACF,CACF,CACF,CACF,CAAC,CACH,CAAC",
6
+ "names": ["import_axios", "import_purify_ts", "import_vitest", "import_HttpHeaders", "import_package", "import_HttpSolanaTokenDataSource", "datasource", "tokenInternalId", "config", "errorMessage", "id", "requestSpy", "axios", "PACKAGE", "response0", "result", "caseName", "apiResponse"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var s=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var o=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var p=(e,t,i,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of o(t))!g.call(e,n)&&n!==i&&s(e,n,{get:()=>t[n],enumerable:!(r=a(t,n))||r.enumerable});return e};var d=e=>p(s({},"__esModule",{value:!0}),e);var c={};module.exports=d(c);
2
+ //# sourceMappingURL=SolanaTokenDataSource.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/solanaToken/data/SolanaTokenDataSource.ts"],
4
+ "sourcesContent": ["import { type Either } from \"purify-ts\";\n\nexport type GetSolanaTokenInfosParams = {\n tokenInternalId: string;\n};\n\nexport type Unit = {\n code: string;\n name: string;\n magnitude: number;\n};\n\nexport type TokenDataResponse = {\n id: string;\n blockchain_name: string;\n chain_id?: number;\n contract_address: string;\n decimals: number;\n descriptor: {\n data: string;\n descriptorType: string;\n signatures: {\n prod: string;\n test: string;\n };\n };\n descriptor_exchange_app: {\n data: string;\n descriptorType: string;\n signatures: {\n prod: string;\n test: string;\n };\n };\n exchange_app_config_serialized: string;\n name: string;\n network: string;\n network_family: string;\n network_type: \"main\" | \"test\";\n symbol: string;\n ticker: string;\n units: Unit[];\n};\n\nexport interface SolanaTokenDataSource {\n getTokenInfosPayload(\n params: GetSolanaTokenInfosParams,\n ): Promise<Either<Error, TokenDataResponse>>;\n}\n"],
5
+ "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
+ "names": ["SolanaTokenDataSource_exports", "__toCommonJS"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var t=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var k=(a,o)=>{for(var n in o)t(a,n,{get:o[n],enumerable:!0})},c=(a,o,n,S)=>{if(o&&typeof o=="object"||typeof o=="function")for(let e of r(o))!T.call(a,e)&&e!==n&&t(a,e,{get:()=>o[e],enumerable:!(S=l(o,e))||S.enumerable});return a};var s=a=>c(t({},"__esModule",{value:!0}),a);var y={};k(y,{solanaTokenTypes:()=>x});module.exports=s(y);const x={SolanaTokenDataSource:Symbol.for("SolanaTokenDataSource"),SolanaTokenContextLoader:Symbol.for("SolanaTokenContextLoader")};0&&(module.exports={solanaTokenTypes});
2
+ //# sourceMappingURL=solanaTokenTypes.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/solanaToken/di/solanaTokenTypes.ts"],
4
+ "sourcesContent": ["export const solanaTokenTypes = {\n SolanaTokenDataSource: Symbol.for(\"SolanaTokenDataSource\"),\n SolanaTokenContextLoader: Symbol.for(\"SolanaTokenContextLoader\"),\n};\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,IAAA,eAAAC,EAAAH,GAAO,MAAME,EAAmB,CAC9B,sBAAuB,OAAO,IAAI,uBAAuB,EACzD,yBAA0B,OAAO,IAAI,0BAA0B,CACjE",
6
+ "names": ["solanaTokenTypes_exports", "__export", "solanaTokenTypes", "__toCommonJS"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var n=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var f=(o,a)=>{for(var t in a)n(o,t,{get:a[t],enumerable:!0})},i=(o,a,t,l)=>{if(a&&typeof a=="object"||typeof a=="function")for(let e of S(a))!c.call(o,e)&&e!==t&&n(o,e,{get:()=>a[e],enumerable:!(l=k(a,e))||l.enumerable});return o};var s=o=>i(n({},"__esModule",{value:!0}),o);var d={};f(d,{solanaTokenModuleFactory:()=>u});module.exports=s(d);var m=require("inversify"),p=require("../../solanaToken/data/HttpSolanaTokenDataSource"),r=require("../../solanaToken/di/solanaTokenTypes"),T=require("../../solanaToken/domain/SolanaTokenContextLoader");const u=()=>new m.ContainerModule(({bind:o})=>{o(r.solanaTokenTypes.SolanaTokenDataSource).to(p.HttpSolanaTokenDataSource),o(r.solanaTokenTypes.SolanaTokenContextLoader).to(T.SolanaTokenContextLoader)});0&&(module.exports={solanaTokenModuleFactory});
2
+ //# sourceMappingURL=tokenModuleFactory.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/solanaToken/di/tokenModuleFactory.ts"],
4
+ "sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { HttpSolanaTokenDataSource } from \"@/solanaToken/data/HttpSolanaTokenDataSource\";\nimport { solanaTokenTypes } from \"@/solanaToken/di/solanaTokenTypes\";\nimport { SolanaTokenContextLoader } from \"@/solanaToken/domain/SolanaTokenContextLoader\";\n\nexport const solanaTokenModuleFactory = () =>\n new ContainerModule(({ bind }) => {\n bind(solanaTokenTypes.SolanaTokenDataSource).to(HttpSolanaTokenDataSource);\n bind(solanaTokenTypes.SolanaTokenContextLoader).to(\n SolanaTokenContextLoader,\n );\n });\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAgC,qBAEhCC,EAA0C,wDAC1CC,EAAiC,6CACjCC,EAAyC,yDAElC,MAAML,EAA2B,IACtC,IAAI,kBAAgB,CAAC,CAAE,KAAAM,CAAK,IAAM,CAChCA,EAAK,mBAAiB,qBAAqB,EAAE,GAAG,2BAAyB,EACzEA,EAAK,mBAAiB,wBAAwB,EAAE,GAC9C,0BACF,CACF,CAAC",
6
+ "names": ["tokenModuleFactory_exports", "__export", "solanaTokenModuleFactory", "__toCommonJS", "import_inversify", "import_HttpSolanaTokenDataSource", "import_solanaTokenTypes", "import_SolanaTokenContextLoader", "bind"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var s=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var C=(n,e)=>{for(var t in e)s(n,t,{get:e[t],enumerable:!0})},g=(n,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of S(e))!I.call(n,a)&&a!==t&&s(n,a,{get:()=>e[a],enumerable:!(o=k(e,a))||o.enumerable});return n};var x=n=>g(s({},"__esModule",{value:!0}),n),f=(n,e,t,o)=>{for(var a=o>1?void 0:o?k(e,t):e,l=n.length-1,i;l>=0;l--)(i=n[l])&&(a=(o?i(e,t,a):i(a))||a);return o&&a&&s(e,t,a),a},c=(n,e)=>(t,o)=>e(t,o,n);var D={};C(D,{SolanaTokenContextLoader:()=>p});module.exports=x(D);var r=require("inversify"),u=require("../../config/di/configTypes"),m=require("../../pki/di/pkiTypes"),T=require("../../pki/model/KeyUsage"),d=require("../../shared/model/SolanaContextTypes"),y=require("../../solanaToken/di/solanaTokenTypes");let p=class{constructor(e,t,o){this.dataSource=e;this.config=t;this._certificateLoader=o}canHandle(e,t){if(t!==d.SolanaContextTypes.SOLANA_TOKEN||typeof e!="object"||e===null||!("tokenInternalId"in e))return!1;const o=e.tokenInternalId;return typeof o=="string"&&o.length>0}async loadField(e){const{tokenInternalId:t,deviceModelId:o}=e,a=await this.dataSource.getTokenInfosPayload({tokenInternalId:t}),l=await this._certificateLoader.loadCertificate({keyId:"token_metadata_key",keyUsage:T.KeyUsage.CoinMeta,targetDevice:o});return a.caseOf({Left:i=>({type:d.SolanaContextTypes.ERROR,error:i}),Right:i=>({type:d.SolanaContextTypes.SOLANA_TOKEN,payload:this.pluckTokenData(i),certificate:l})})}pluckTokenData(e){const t=this.config.cal.mode||"prod";return{solanaTokenDescriptor:{data:e.descriptor.data,signature:e.descriptor.signatures[t]}}}};p=f([(0,r.injectable)(),c(0,(0,r.inject)(y.solanaTokenTypes.SolanaTokenDataSource)),c(1,(0,r.inject)(u.configTypes.Config)),c(2,(0,r.inject)(m.pkiTypes.PkiCertificateLoader))],p);0&&(module.exports={SolanaTokenContextLoader});
2
+ //# sourceMappingURL=SolanaTokenContextLoader.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/solanaToken/domain/SolanaTokenContextLoader.ts"],
4
+ "sourcesContent": ["import { DeviceModelId } from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport { pkiTypes } from \"@/pki/di/pkiTypes\";\nimport { type PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport { KeyUsage } from \"@/pki/model/KeyUsage\";\nimport { PkiCertificate } from \"@/pki/model/PkiCertificate\";\nimport { ContextFieldLoader } from \"@/shared/domain/ContextFieldLoader\";\nimport {\n SolanaContextTypes,\n SolanaTokenContextResult,\n SolanaTokenData,\n} from \"@/shared/model/SolanaContextTypes\";\nimport { SolanaTransactionContext } from \"@/solana/domain/solanaContextTypes\";\nimport {\n type SolanaTokenDataSource,\n type TokenDataResponse,\n} from \"@/solanaToken/data/SolanaTokenDataSource\";\nimport { solanaTokenTypes } from \"@/solanaToken/di/solanaTokenTypes\";\n\ntype SolanaTokenFieldInput = SolanaTransactionContext & {\n deviceModelId: DeviceModelId;\n tokenInternalId: string;\n};\n\n@injectable()\nexport class SolanaTokenContextLoader\n implements\n ContextFieldLoader<\n SolanaTokenFieldInput,\n SolanaContextTypes,\n SolanaTokenContextResult\n >\n{\n constructor(\n @inject(solanaTokenTypes.SolanaTokenDataSource)\n private readonly dataSource: SolanaTokenDataSource,\n @inject(configTypes.Config) private readonly config: ContextModuleConfig,\n @inject(pkiTypes.PkiCertificateLoader)\n private readonly _certificateLoader: PkiCertificateLoader,\n ) {}\n\n public canHandle(\n field: unknown,\n expectedType: SolanaContextTypes,\n ): field is SolanaTokenFieldInput {\n if (expectedType !== SolanaContextTypes.SOLANA_TOKEN) {\n return false;\n }\n\n if (\n typeof field !== \"object\" ||\n field === null ||\n !(\"tokenInternalId\" in field)\n ) {\n return false;\n }\n\n const tokenInternalId = (field as { tokenInternalId: unknown })\n .tokenInternalId;\n\n return typeof tokenInternalId === \"string\" && tokenInternalId.length > 0;\n }\n\n public async loadField(\n solanaTokenContextInput: SolanaTokenFieldInput,\n ): Promise<SolanaTokenContextResult> {\n const { tokenInternalId, deviceModelId } = solanaTokenContextInput;\n\n const payload = await this.dataSource.getTokenInfosPayload({\n tokenInternalId,\n });\n\n const certificate: PkiCertificate | undefined =\n await this._certificateLoader.loadCertificate({\n keyId: \"token_metadata_key\",\n keyUsage: KeyUsage.CoinMeta,\n targetDevice: deviceModelId,\n });\n\n return payload.caseOf({\n Left: (error): SolanaTokenContextResult => ({\n type: SolanaContextTypes.ERROR,\n error,\n }),\n Right: (value): SolanaTokenContextResult => ({\n type: SolanaContextTypes.SOLANA_TOKEN,\n payload: this.pluckTokenData(value),\n certificate,\n }),\n });\n }\n\n private pluckTokenData(tokenData: TokenDataResponse): SolanaTokenData {\n const signatureKind = this.config.cal.mode || \"prod\";\n return {\n solanaTokenDescriptor: {\n data: tokenData.descriptor.data,\n signature: tokenData.descriptor.signatures[signatureKind],\n },\n };\n }\n}\n"],
5
+ "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8BAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAAmC,qBAEnCC,EAA4B,mCAE5BC,EAAyB,6BAEzBC,EAAyB,gCAGzBC,EAIO,6CAMPC,EAAiC,6CAQ1B,IAAMC,EAAN,KAOP,CACE,YAEmBC,EAC4BC,EAE5BC,EACjB,CAJiB,gBAAAF,EAC4B,YAAAC,EAE5B,wBAAAC,CAChB,CAEI,UACLC,EACAC,EACgC,CAKhC,GAJIA,IAAiB,qBAAmB,cAKtC,OAAOD,GAAU,UACjBA,IAAU,MACV,EAAE,oBAAqBA,GAEvB,MAAO,GAGT,MAAME,EAAmBF,EACtB,gBAEH,OAAO,OAAOE,GAAoB,UAAYA,EAAgB,OAAS,CACzE,CAEA,MAAa,UACXC,EACmC,CACnC,KAAM,CAAE,gBAAAD,EAAiB,cAAAE,CAAc,EAAID,EAErCE,EAAU,MAAM,KAAK,WAAW,qBAAqB,CACzD,gBAAAH,CACF,CAAC,EAEKI,EACJ,MAAM,KAAK,mBAAmB,gBAAgB,CAC5C,MAAO,qBACP,SAAU,WAAS,SACnB,aAAcF,CAChB,CAAC,EAEH,OAAOC,EAAQ,OAAO,CACpB,KAAOE,IAAqC,CAC1C,KAAM,qBAAmB,MACzB,MAAAA,CACF,GACA,MAAQC,IAAqC,CAC3C,KAAM,qBAAmB,aACzB,QAAS,KAAK,eAAeA,CAAK,EAClC,YAAAF,CACF,EACF,CAAC,CACH,CAEQ,eAAeG,EAA+C,CACpE,MAAMC,EAAgB,KAAK,OAAO,IAAI,MAAQ,OAC9C,MAAO,CACL,sBAAuB,CACrB,KAAMD,EAAU,WAAW,KAC3B,UAAWA,EAAU,WAAW,WAAWC,CAAa,CAC1D,CACF,CACF,CACF,EA5Ead,EAANe,EAAA,IADN,cAAW,EAUPC,EAAA,eAAO,mBAAiB,qBAAqB,GAE7CA,EAAA,eAAO,cAAY,MAAM,GACzBA,EAAA,eAAO,WAAS,oBAAoB,IAZ5BhB",
6
+ "names": ["SolanaTokenContextLoader_exports", "__export", "SolanaTokenContextLoader", "__toCommonJS", "import_inversify", "import_configTypes", "import_pkiTypes", "import_KeyUsage", "import_SolanaContextTypes", "import_solanaTokenTypes", "SolanaTokenContextLoader", "dataSource", "config", "_certificateLoader", "field", "expectedType", "tokenInternalId", "solanaTokenContextInput", "deviceModelId", "payload", "certificate", "error", "value", "tokenData", "signatureKind", "__decorateClass", "__decorateParam"]
7
+ }