@ledgerhq/context-module 0.0.0-wrong-error-when-in-experimental-provider-20251021162636 → 0.0.0-z-intent-queue-7-20251204111630

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 (314) 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/index.js +1 -1
  17. package/lib/cjs/src/index.js.map +2 -2
  18. package/lib/cjs/src/shared/domain/ContextFieldLoader.js +1 -1
  19. package/lib/cjs/src/shared/domain/ContextFieldLoader.js.map +1 -1
  20. package/lib/cjs/src/shared/model/ClearSignContext.js +1 -1
  21. package/lib/cjs/src/shared/model/ClearSignContext.js.map +2 -2
  22. package/lib/cjs/src/shared/model/SolanaContextTypes.js +2 -0
  23. package/lib/cjs/src/shared/model/SolanaContextTypes.js.map +7 -0
  24. package/lib/cjs/src/shared/model/SolanaTransactionContext.js +1 -1
  25. package/lib/cjs/src/shared/model/SolanaTransactionContext.js.map +1 -1
  26. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.js +1 -1
  27. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.js.map +3 -3
  28. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js +1 -1
  29. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js.map +2 -2
  30. package/lib/cjs/src/solana/data/SolanaDataSource.js +1 -1
  31. package/lib/cjs/src/solana/data/SolanaDataSource.js.map +1 -1
  32. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.js +1 -1
  33. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.js.map +3 -3
  34. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.test.js +1 -1
  35. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.test.js.map +3 -3
  36. package/lib/cjs/src/solana/domain/solanaContextTypes.js +1 -1
  37. package/lib/cjs/src/solana/domain/solanaContextTypes.js.map +1 -1
  38. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.js +2 -0
  39. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.js.map +7 -0
  40. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js +2 -0
  41. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js.map +7 -0
  42. package/lib/cjs/src/solanaLifi/data/SolanaLifiDataSource.js +2 -0
  43. package/lib/cjs/src/solanaLifi/data/SolanaLifiDataSource.js.map +7 -0
  44. package/lib/cjs/src/solanaLifi/di/lifiModuleFactory.js +2 -0
  45. package/lib/cjs/src/solanaLifi/di/lifiModuleFactory.js.map +7 -0
  46. package/lib/cjs/src/solanaLifi/di/solanaLifiTypes.js +2 -0
  47. package/lib/cjs/src/solanaLifi/di/solanaLifiTypes.js.map +7 -0
  48. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.js +2 -0
  49. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.js.map +7 -0
  50. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.test.js +2 -0
  51. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.test.js.map +7 -0
  52. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.js +2 -0
  53. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.js.map +7 -0
  54. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.test.js +7 -0
  55. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.test.js.map +7 -0
  56. package/lib/cjs/src/solanaToken/data/SolanaTokenDataSource.js +2 -0
  57. package/lib/cjs/src/solanaToken/data/SolanaTokenDataSource.js.map +7 -0
  58. package/lib/cjs/src/solanaToken/di/solanaTokenTypes.js +2 -0
  59. package/lib/cjs/src/solanaToken/di/solanaTokenTypes.js.map +7 -0
  60. package/lib/cjs/src/solanaToken/di/tokenModuleFactory.js +2 -0
  61. package/lib/cjs/src/solanaToken/di/tokenModuleFactory.js.map +7 -0
  62. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.js +2 -0
  63. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.js.map +7 -0
  64. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.test.js +2 -0
  65. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.test.js.map +7 -0
  66. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.js +2 -0
  67. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.js.map +7 -0
  68. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.test.js +2 -0
  69. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.test.js.map +7 -0
  70. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.js +2 -0
  71. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.js.map +7 -0
  72. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js +2 -0
  73. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js.map +7 -0
  74. package/lib/cjs/src/transaction-check/data/TransactionCheckDataSource.js +2 -0
  75. package/lib/cjs/src/transaction-check/data/TransactionCheckDataSource.js.map +7 -0
  76. package/lib/cjs/src/transaction-check/data/TypedDataCheckDataSource.js +2 -0
  77. package/lib/cjs/src/transaction-check/data/TypedDataCheckDataSource.js.map +7 -0
  78. package/lib/cjs/src/transaction-check/data/dto/TransactionCheckDto.js +2 -0
  79. package/lib/cjs/src/transaction-check/data/dto/TransactionCheckDto.js.map +7 -0
  80. package/lib/cjs/src/transaction-check/data/dto/TypedDataCheckDto.js +2 -0
  81. package/lib/cjs/src/transaction-check/data/dto/TypedDataCheckDto.js.map +7 -0
  82. package/lib/cjs/src/transaction-check/di/transactionCheckModuleFactory.js +2 -0
  83. package/lib/cjs/src/transaction-check/di/transactionCheckModuleFactory.js.map +7 -0
  84. package/lib/cjs/src/transaction-check/di/transactionCheckTypes.js +2 -0
  85. package/lib/cjs/src/transaction-check/di/transactionCheckTypes.js.map +7 -0
  86. package/lib/cjs/src/transaction-check/domain/TransactionCheckContextLoader.js +2 -0
  87. package/lib/cjs/src/transaction-check/domain/TransactionCheckContextLoader.js.map +7 -0
  88. package/lib/cjs/src/transaction-check/domain/TransactionCheckContextLoader.test.js +2 -0
  89. package/lib/cjs/src/transaction-check/domain/TransactionCheckContextLoader.test.js.map +7 -0
  90. package/lib/cjs/src/transaction-check/domain/TypedDataCheckContextLoader.js +2 -0
  91. package/lib/cjs/src/transaction-check/domain/TypedDataCheckContextLoader.js.map +7 -0
  92. package/lib/cjs/src/transaction-check/domain/TypedDataCheckContextLoader.test.js +2 -0
  93. package/lib/cjs/src/transaction-check/domain/TypedDataCheckContextLoader.test.js.map +7 -0
  94. package/lib/esm/package.json +38 -34
  95. package/lib/esm/src/ContextModuleBuilder.js +1 -1
  96. package/lib/esm/src/ContextModuleBuilder.js.map +2 -2
  97. package/lib/esm/src/ContextModuleBuilder.test.js +1 -1
  98. package/lib/esm/src/ContextModuleBuilder.test.js.map +2 -2
  99. package/lib/esm/src/DefaultContextModule.js +1 -1
  100. package/lib/esm/src/DefaultContextModule.js.map +3 -3
  101. package/lib/esm/src/DefaultContextModule.test.js +1 -1
  102. package/lib/esm/src/DefaultContextModule.test.js.map +3 -3
  103. package/lib/esm/src/di.js +1 -1
  104. package/lib/esm/src/di.js.map +3 -3
  105. package/lib/esm/src/index.js +1 -1
  106. package/lib/esm/src/index.js.map +2 -2
  107. package/lib/esm/src/shared/model/ClearSignContext.js +1 -1
  108. package/lib/esm/src/shared/model/ClearSignContext.js.map +2 -2
  109. package/lib/esm/src/shared/model/SolanaContextTypes.js +2 -0
  110. package/lib/esm/src/shared/model/SolanaContextTypes.js.map +7 -0
  111. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.js +1 -1
  112. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.js.map +3 -3
  113. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js +1 -1
  114. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js.map +2 -2
  115. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.js +1 -1
  116. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.js.map +3 -3
  117. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.test.js +1 -1
  118. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.test.js.map +3 -3
  119. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.js +2 -0
  120. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.js.map +7 -0
  121. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js +2 -0
  122. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js.map +7 -0
  123. package/lib/esm/src/solanaLifi/data/SolanaLifiDataSource.js +1 -0
  124. package/lib/esm/src/solanaLifi/di/lifiModuleFactory.js +2 -0
  125. package/lib/esm/src/solanaLifi/di/lifiModuleFactory.js.map +7 -0
  126. package/lib/esm/src/solanaLifi/di/solanaLifiTypes.js +2 -0
  127. package/lib/esm/src/solanaLifi/di/solanaLifiTypes.js.map +7 -0
  128. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.js +2 -0
  129. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.js.map +7 -0
  130. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.test.js +2 -0
  131. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.test.js.map +7 -0
  132. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.js +2 -0
  133. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.js.map +7 -0
  134. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.test.js +7 -0
  135. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.test.js.map +7 -0
  136. package/lib/esm/src/solanaToken/data/SolanaTokenDataSource.js +1 -0
  137. package/lib/esm/src/solanaToken/di/solanaTokenTypes.js +2 -0
  138. package/lib/esm/src/solanaToken/di/solanaTokenTypes.js.map +7 -0
  139. package/lib/esm/src/solanaToken/di/tokenModuleFactory.js +2 -0
  140. package/lib/esm/src/solanaToken/di/tokenModuleFactory.js.map +7 -0
  141. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.js +2 -0
  142. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.js.map +7 -0
  143. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.test.js +2 -0
  144. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.test.js.map +7 -0
  145. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.js +2 -0
  146. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.js.map +7 -0
  147. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.test.js +2 -0
  148. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.test.js.map +7 -0
  149. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.js +2 -0
  150. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.js.map +7 -0
  151. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js +2 -0
  152. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js.map +7 -0
  153. package/lib/esm/src/transaction-check/data/TransactionCheckDataSource.js +1 -0
  154. package/lib/esm/src/transaction-check/data/TypedDataCheckDataSource.js +1 -0
  155. package/lib/esm/src/transaction-check/data/dto/TransactionCheckDto.js +1 -0
  156. package/lib/esm/src/transaction-check/data/dto/TransactionCheckDto.js.map +7 -0
  157. package/lib/esm/src/transaction-check/data/dto/TypedDataCheckDto.js +1 -0
  158. package/lib/esm/src/transaction-check/data/dto/TypedDataCheckDto.js.map +7 -0
  159. package/lib/esm/src/transaction-check/di/transactionCheckModuleFactory.js +2 -0
  160. package/lib/esm/src/transaction-check/di/transactionCheckModuleFactory.js.map +7 -0
  161. package/lib/esm/src/transaction-check/di/transactionCheckTypes.js +2 -0
  162. package/lib/esm/src/transaction-check/di/transactionCheckTypes.js.map +7 -0
  163. package/lib/esm/src/transaction-check/domain/TransactionCheckContextLoader.js +2 -0
  164. package/lib/esm/src/transaction-check/domain/TransactionCheckContextLoader.js.map +7 -0
  165. package/lib/esm/src/transaction-check/domain/TransactionCheckContextLoader.test.js +2 -0
  166. package/lib/esm/src/transaction-check/domain/TransactionCheckContextLoader.test.js.map +7 -0
  167. package/lib/esm/src/transaction-check/domain/TypedDataCheckContextLoader.js +2 -0
  168. package/lib/esm/src/transaction-check/domain/TypedDataCheckContextLoader.js.map +7 -0
  169. package/lib/esm/src/transaction-check/domain/TypedDataCheckContextLoader.test.js +2 -0
  170. package/lib/esm/src/transaction-check/domain/TypedDataCheckContextLoader.test.js.map +7 -0
  171. package/lib/types/src/ContextModule.d.ts +0 -2
  172. package/lib/types/src/ContextModule.d.ts.map +1 -1
  173. package/lib/types/src/ContextModuleBuilder.d.ts +0 -9
  174. package/lib/types/src/ContextModuleBuilder.d.ts.map +1 -1
  175. package/lib/types/src/DefaultContextModule.d.ts +1 -5
  176. package/lib/types/src/DefaultContextModule.d.ts.map +1 -1
  177. package/lib/types/src/config/model/ContextModuleConfig.d.ts +0 -2
  178. package/lib/types/src/config/model/ContextModuleConfig.d.ts.map +1 -1
  179. package/lib/types/src/di.d.ts.map +1 -1
  180. package/lib/types/src/index.d.ts +2 -5
  181. package/lib/types/src/index.d.ts.map +1 -1
  182. package/lib/types/src/shared/domain/ContextFieldLoader.d.ts +14 -4
  183. package/lib/types/src/shared/domain/ContextFieldLoader.d.ts.map +1 -1
  184. package/lib/types/src/shared/model/ClearSignContext.d.ts +60 -33
  185. package/lib/types/src/shared/model/ClearSignContext.d.ts.map +1 -1
  186. package/lib/types/src/shared/model/SolanaContextTypes.d.ts +47 -0
  187. package/lib/types/src/shared/model/SolanaContextTypes.d.ts.map +1 -0
  188. package/lib/types/src/shared/model/SolanaTransactionContext.d.ts +2 -0
  189. package/lib/types/src/shared/model/SolanaTransactionContext.d.ts.map +1 -1
  190. package/lib/types/src/solana/data/HttpSolanaOwnerInfoDataSource.d.ts.map +1 -1
  191. package/lib/types/src/solana/data/SolanaDataSource.d.ts +1 -4
  192. package/lib/types/src/solana/data/SolanaDataSource.d.ts.map +1 -1
  193. package/lib/types/src/solana/domain/DefaultSolanaContextLoader.d.ts +5 -3
  194. package/lib/types/src/solana/domain/DefaultSolanaContextLoader.d.ts.map +1 -1
  195. package/lib/types/src/solana/domain/solanaContextTypes.d.ts +7 -5
  196. package/lib/types/src/solana/domain/solanaContextTypes.d.ts.map +1 -1
  197. package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.d.ts +9 -0
  198. package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.d.ts.map +1 -0
  199. package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.test.d.ts +2 -0
  200. package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.test.d.ts.map +1 -0
  201. package/lib/types/src/solanaLifi/data/SolanaLifiDataSource.d.ts +13 -0
  202. package/lib/types/src/solanaLifi/data/SolanaLifiDataSource.d.ts.map +1 -0
  203. package/lib/types/src/solanaLifi/di/lifiModuleFactory.d.ts +3 -0
  204. package/lib/types/src/solanaLifi/di/lifiModuleFactory.d.ts.map +1 -0
  205. package/lib/types/src/solanaLifi/di/solanaLifiTypes.d.ts +5 -0
  206. package/lib/types/src/solanaLifi/di/solanaLifiTypes.d.ts.map +1 -0
  207. package/lib/types/src/solanaLifi/domain/SolanaLifiContextLoader.d.ts +16 -0
  208. package/lib/types/src/solanaLifi/domain/SolanaLifiContextLoader.d.ts.map +1 -0
  209. package/lib/types/src/solanaLifi/domain/SolanaLifiContextLoader.test.d.ts +2 -0
  210. package/lib/types/src/solanaLifi/domain/SolanaLifiContextLoader.test.d.ts.map +1 -0
  211. package/lib/types/src/solanaToken/data/HttpSolanaTokenDataSource.d.ts +9 -0
  212. package/lib/types/src/solanaToken/data/HttpSolanaTokenDataSource.d.ts.map +1 -0
  213. package/lib/types/src/solanaToken/data/HttpSolanaTokenDataSource.test.d.ts +2 -0
  214. package/lib/types/src/solanaToken/data/HttpSolanaTokenDataSource.test.d.ts.map +1 -0
  215. package/lib/types/src/solanaToken/data/SolanaTokenDataSource.d.ts +44 -0
  216. package/lib/types/src/solanaToken/data/SolanaTokenDataSource.d.ts.map +1 -0
  217. package/lib/types/src/solanaToken/di/solanaTokenTypes.d.ts +5 -0
  218. package/lib/types/src/solanaToken/di/solanaTokenTypes.d.ts.map +1 -0
  219. package/lib/types/src/solanaToken/di/tokenModuleFactory.d.ts +3 -0
  220. package/lib/types/src/solanaToken/di/tokenModuleFactory.d.ts.map +1 -0
  221. package/lib/types/src/solanaToken/domain/SolanaTokenContextLoader.d.ts +22 -0
  222. package/lib/types/src/solanaToken/domain/SolanaTokenContextLoader.d.ts.map +1 -0
  223. package/lib/types/src/solanaToken/domain/SolanaTokenContextLoader.test.d.ts +2 -0
  224. package/lib/types/src/solanaToken/domain/SolanaTokenContextLoader.test.d.ts.map +1 -0
  225. package/lib/types/src/transaction-check/data/HttpTransactionCheckDataSource.d.ts +10 -0
  226. package/lib/types/src/transaction-check/data/HttpTransactionCheckDataSource.d.ts.map +1 -0
  227. package/lib/types/src/transaction-check/data/HttpTransactionCheckDataSource.test.d.ts +2 -0
  228. package/lib/types/src/transaction-check/data/HttpTransactionCheckDataSource.test.d.ts.map +1 -0
  229. package/lib/types/src/transaction-check/data/HttpTypedDataCheckDataSource.d.ts +10 -0
  230. package/lib/types/src/transaction-check/data/HttpTypedDataCheckDataSource.d.ts.map +1 -0
  231. package/lib/types/src/transaction-check/data/HttpTypedDataCheckDataSource.test.d.ts +2 -0
  232. package/lib/types/src/transaction-check/data/HttpTypedDataCheckDataSource.test.d.ts.map +1 -0
  233. package/lib/types/src/transaction-check/data/TransactionCheckDataSource.d.ts +14 -0
  234. package/lib/types/src/transaction-check/data/TransactionCheckDataSource.d.ts.map +1 -0
  235. package/lib/types/src/transaction-check/data/TypedDataCheckDataSource.d.ts +28 -0
  236. package/lib/types/src/transaction-check/data/TypedDataCheckDataSource.d.ts.map +1 -0
  237. package/lib/types/src/transaction-check/data/dto/TransactionCheckDto.d.ts +5 -0
  238. package/lib/types/src/transaction-check/data/dto/TransactionCheckDto.d.ts.map +1 -0
  239. package/lib/types/src/transaction-check/data/dto/TypedDataCheckDto.d.ts +5 -0
  240. package/lib/types/src/transaction-check/data/dto/TypedDataCheckDto.d.ts.map +1 -0
  241. package/lib/types/src/transaction-check/di/transactionCheckModuleFactory.d.ts +3 -0
  242. package/lib/types/src/transaction-check/di/transactionCheckModuleFactory.d.ts.map +1 -0
  243. package/lib/types/src/transaction-check/di/transactionCheckTypes.d.ts +7 -0
  244. package/lib/types/src/transaction-check/di/transactionCheckTypes.d.ts.map +1 -0
  245. package/lib/types/src/transaction-check/domain/TransactionCheckContextLoader.d.ts +19 -0
  246. package/lib/types/src/transaction-check/domain/TransactionCheckContextLoader.d.ts.map +1 -0
  247. package/lib/types/src/transaction-check/domain/TransactionCheckContextLoader.test.d.ts +2 -0
  248. package/lib/types/src/transaction-check/domain/TransactionCheckContextLoader.test.d.ts.map +1 -0
  249. package/lib/types/src/transaction-check/domain/TypedDataCheckContextLoader.d.ts +18 -0
  250. package/lib/types/src/transaction-check/domain/TypedDataCheckContextLoader.d.ts.map +1 -0
  251. package/lib/types/src/transaction-check/domain/TypedDataCheckContextLoader.test.d.ts +2 -0
  252. package/lib/types/src/transaction-check/domain/TypedDataCheckContextLoader.test.d.ts.map +1 -0
  253. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  254. package/package.json +36 -32
  255. package/lib/cjs/src/web3-check/data/HttpWeb3CheckDataSource.js +0 -2
  256. package/lib/cjs/src/web3-check/data/HttpWeb3CheckDataSource.js.map +0 -7
  257. package/lib/cjs/src/web3-check/data/HttpWeb3CheckDataSource.test.js +0 -2
  258. package/lib/cjs/src/web3-check/data/HttpWeb3CheckDataSource.test.js.map +0 -7
  259. package/lib/cjs/src/web3-check/data/Web3CheckDataSource.js +0 -2
  260. package/lib/cjs/src/web3-check/data/Web3CheckDataSource.js.map +0 -7
  261. package/lib/cjs/src/web3-check/data/Web3CheckDto.js +0 -2
  262. package/lib/cjs/src/web3-check/data/Web3CheckDto.js.map +0 -7
  263. package/lib/cjs/src/web3-check/di/web3CheckModuleFactory.js +0 -2
  264. package/lib/cjs/src/web3-check/di/web3CheckModuleFactory.js.map +0 -7
  265. package/lib/cjs/src/web3-check/di/web3CheckTypes.js +0 -2
  266. package/lib/cjs/src/web3-check/di/web3CheckTypes.js.map +0 -7
  267. package/lib/cjs/src/web3-check/domain/DefaultWeb3CheckLoader.js +0 -2
  268. package/lib/cjs/src/web3-check/domain/DefaultWeb3CheckLoader.js.map +0 -7
  269. package/lib/cjs/src/web3-check/domain/DefaultWeb3CheckLoader.test.js +0 -2
  270. package/lib/cjs/src/web3-check/domain/DefaultWeb3CheckLoader.test.js.map +0 -7
  271. package/lib/cjs/src/web3-check/domain/Web3CheckContextLoader.js +0 -2
  272. package/lib/cjs/src/web3-check/domain/Web3CheckContextLoader.js.map +0 -7
  273. package/lib/cjs/src/web3-check/domain/web3CheckTypes.js +0 -2
  274. package/lib/cjs/src/web3-check/domain/web3CheckTypes.js.map +0 -7
  275. package/lib/esm/src/web3-check/data/HttpWeb3CheckDataSource.js +0 -2
  276. package/lib/esm/src/web3-check/data/HttpWeb3CheckDataSource.js.map +0 -7
  277. package/lib/esm/src/web3-check/data/HttpWeb3CheckDataSource.test.js +0 -2
  278. package/lib/esm/src/web3-check/data/HttpWeb3CheckDataSource.test.js.map +0 -7
  279. package/lib/esm/src/web3-check/data/Web3CheckDataSource.js +0 -1
  280. package/lib/esm/src/web3-check/data/Web3CheckDto.js +0 -1
  281. package/lib/esm/src/web3-check/di/web3CheckModuleFactory.js +0 -2
  282. package/lib/esm/src/web3-check/di/web3CheckModuleFactory.js.map +0 -7
  283. package/lib/esm/src/web3-check/di/web3CheckTypes.js +0 -2
  284. package/lib/esm/src/web3-check/di/web3CheckTypes.js.map +0 -7
  285. package/lib/esm/src/web3-check/domain/DefaultWeb3CheckLoader.js +0 -2
  286. package/lib/esm/src/web3-check/domain/DefaultWeb3CheckLoader.js.map +0 -7
  287. package/lib/esm/src/web3-check/domain/DefaultWeb3CheckLoader.test.js +0 -2
  288. package/lib/esm/src/web3-check/domain/DefaultWeb3CheckLoader.test.js.map +0 -7
  289. package/lib/esm/src/web3-check/domain/Web3CheckContextLoader.js +0 -1
  290. package/lib/esm/src/web3-check/domain/web3CheckTypes.js +0 -1
  291. package/lib/types/src/web3-check/data/HttpWeb3CheckDataSource.d.ts +0 -14
  292. package/lib/types/src/web3-check/data/HttpWeb3CheckDataSource.d.ts.map +0 -1
  293. package/lib/types/src/web3-check/data/HttpWeb3CheckDataSource.test.d.ts +0 -2
  294. package/lib/types/src/web3-check/data/HttpWeb3CheckDataSource.test.d.ts.map +0 -1
  295. package/lib/types/src/web3-check/data/Web3CheckDataSource.d.ts +0 -6
  296. package/lib/types/src/web3-check/data/Web3CheckDataSource.d.ts.map +0 -1
  297. package/lib/types/src/web3-check/data/Web3CheckDto.d.ts +0 -20
  298. package/lib/types/src/web3-check/data/Web3CheckDto.d.ts.map +0 -1
  299. package/lib/types/src/web3-check/di/web3CheckModuleFactory.d.ts +0 -3
  300. package/lib/types/src/web3-check/di/web3CheckModuleFactory.d.ts.map +0 -1
  301. package/lib/types/src/web3-check/di/web3CheckTypes.d.ts +0 -5
  302. package/lib/types/src/web3-check/di/web3CheckTypes.d.ts.map +0 -1
  303. package/lib/types/src/web3-check/domain/DefaultWeb3CheckLoader.d.ts +0 -10
  304. package/lib/types/src/web3-check/domain/DefaultWeb3CheckLoader.d.ts.map +0 -1
  305. package/lib/types/src/web3-check/domain/DefaultWeb3CheckLoader.test.d.ts +0 -2
  306. package/lib/types/src/web3-check/domain/DefaultWeb3CheckLoader.test.d.ts.map +0 -1
  307. package/lib/types/src/web3-check/domain/Web3CheckContextLoader.d.ts +0 -6
  308. package/lib/types/src/web3-check/domain/Web3CheckContextLoader.d.ts.map +0 -1
  309. package/lib/types/src/web3-check/domain/web3CheckTypes.d.ts +0 -35
  310. package/lib/types/src/web3-check/domain/web3CheckTypes.d.ts.map +0 -1
  311. /package/lib/esm/src/{web3-check/data/Web3CheckDataSource.js.map → solanaLifi/data/SolanaLifiDataSource.js.map} +0 -0
  312. /package/lib/esm/src/{web3-check/data/Web3CheckDto.js.map → solanaToken/data/SolanaTokenDataSource.js.map} +0 -0
  313. /package/lib/esm/src/{web3-check/domain/Web3CheckContextLoader.js.map → transaction-check/data/TransactionCheckDataSource.js.map} +0 -0
  314. /package/lib/esm/src/{web3-check/domain/web3CheckTypes.js.map → transaction-check/data/TypedDataCheckDataSource.js.map} +0 -0
@@ -1,2 +1,2 @@
1
- import{DeviceModelId as x}from"@ledgerhq/device-management-kit";import{Left as y,Right as m}from"purify-ts";import{ClearSignContextType as o}from"./shared/model/ClearSignContext";import{DefaultContextModule as d}from"./DefaultContextModule";const u=i=>({load:vi.fn(),canHandle:vi.fn().mockReturnValue(i)}),r=()=>({canHandle:vi.fn(),loadField:vi.fn()});describe("DefaultContextModule",()=>{const i={load:vi.fn()},l={customLoaders:[],defaultLoaders:!1,defaultFieldLoaders:!1,customFieldLoaders:[],customTypedDataLoader:i,cal:{url:"https://cal/v1",mode:"prod",branch:"main"},web3checks:{url:"https://web3checks/v3"},metadataServiceDomain:{url:"https://metadata.com"},originToken:"originToken"};beforeEach(()=>{vi.restoreAllMocks()}),it("should initialize the context module with all the default loaders",async()=>{const t=await new d(l).getContexts({});expect(t).toEqual([])}),it("should return an empty array when no loaders",async()=>{const t=await new d(l).getContexts({});expect(t).toEqual([])}),it("should call all fetch method from metadata fetcher",async()=>{const e=u(!0);await new d({...l,customLoaders:[e,e]}).getContexts({}),expect(e.canHandle).toHaveBeenCalledTimes(2),expect(e.load).toHaveBeenCalledTimes(2)}),it("should return an array of context response",async()=>{const e=u(!0),t=[[{type:"provideERC20Info",payload:"payload1"}],[{type:"provideERC20Info",payload:"payload2"},{type:"plugin",payload:"payload3"}]];vi.spyOn(e,"load").mockResolvedValueOnce(t[0]).mockResolvedValueOnce(t[1]);const n=await new d({...l,customLoaders:[e,e]}).getContexts({});expect(e.canHandle).toHaveBeenCalledTimes(2),expect(e.load).toHaveBeenCalledTimes(2),expect(n).toEqual(t.flat())}),it("should only call loaders that can handle the input",async()=>{const e=u(!0),t=u(!0);vi.spyOn(e,"canHandle").mockReturnValue(!0),vi.spyOn(t,"canHandle").mockReturnValue(!1),vi.spyOn(e,"load").mockResolvedValue([{type:o.TOKEN,payload:"payload1"}]),vi.spyOn(t,"load").mockResolvedValue([{type:o.NFT,payload:"payload2"}]);const a=new d({...l,customLoaders:[e,t]}),n={to:"0x123",selector:"0xabc"},s=await a.getContexts(n);expect(e.canHandle).toHaveBeenCalledWith(n,Object.values(o)),expect(t.canHandle).toHaveBeenCalledWith(n,Object.values(o)),expect(e.load).toHaveBeenCalledWith(n),expect(t.load).not.toHaveBeenCalled(),expect(s).toEqual([{type:"token",payload:"payload1"}])}),it("should use expected types if provided",async()=>{const e=u(!0);vi.spyOn(e,"canHandle").mockReturnValue(!0),vi.spyOn(e,"load").mockResolvedValue([{type:o.TOKEN,payload:"payload1"}]);const t=new d({...l,customLoaders:[e]}),a={to:"0x123",selector:"0xabc"};await t.getContexts(a,[o.TOKEN]),expect(e.canHandle).toHaveBeenCalledWith(a,[o.TOKEN])}),it("should call the typed data loader",async()=>{await new d({...l,customTypedDataLoader:i}).getTypedDataFilters({}),expect(i.load).toHaveBeenCalledTimes(1)}),it("should return a web3 check context",async()=>{const e={load:vi.fn()};vi.spyOn(e,"load").mockResolvedValueOnce(m({descriptor:"payload"}));const a=await new d({...l,customLoaders:[],customWeb3CheckLoader:e}).getWeb3Checks({deviceModelId:x.FLEX,from:"from",rawTx:"rawTx",chainId:1});expect(e.load).toHaveBeenCalledTimes(1),expect(a).toEqual({type:"web3Check",payload:"payload"})}),it("should return null if no web3 check context",async()=>{const e={load:vi.fn()};vi.spyOn(e,"load").mockResolvedValue(y(new Error("error")));const a=await new d({...l,customLoaders:[],customWeb3CheckLoader:e}).getWeb3Checks({deviceModelId:x.FLEX,from:"from",rawTx:"rawTx",chainId:1});expect(e.load).toHaveBeenCalledTimes(1),expect(a).toBeNull()}),it("should throw an error if origin token is not provided",()=>{expect(()=>new d({...l,originToken:void 0})).toThrow("Origin token is required")}),describe("getFieldContext",()=>{it("should return error when no loader can handle the field",async()=>{const e=r();vi.spyOn(e,"canHandle").mockReturnValue(!1);const t=new d({...l,customFieldLoaders:[e]}),a={type:"unknown"},n=await t.getFieldContext(a,o.TOKEN);expect(e.canHandle).toHaveBeenCalledWith(a,o.TOKEN),expect(e.loadField).not.toHaveBeenCalled(),expect(n).toEqual({type:o.ERROR,error:new Error(`Loader not found for field: ${a} and expected type: ${o.TOKEN}`)})}),it("should return context when a loader can handle the field",async()=>{const e=r(),t={type:o.TOKEN,payload:"test-payload"};vi.spyOn(e,"canHandle").mockReturnValue(!0),vi.spyOn(e,"loadField").mockResolvedValue(t);const a=new d({...l,customFieldLoaders:[e]}),n={type:"token",address:"0x123"},s=await a.getFieldContext(n,o.TOKEN);expect(e.canHandle).toHaveBeenCalledWith(n,o.TOKEN),expect(e.loadField).toHaveBeenCalledWith(n),expect(s).toEqual(t)}),it("should return first context when multiple loaders can handle the field",async()=>{const e=r(),t=r(),a={type:o.TOKEN,payload:"first-payload"},n={type:o.NFT,payload:"second-payload"};vi.spyOn(e,"canHandle").mockReturnValue(!0),vi.spyOn(t,"canHandle").mockReturnValue(!0),vi.spyOn(e,"loadField").mockResolvedValue(a),vi.spyOn(t,"loadField").mockResolvedValue(n);const s=new d({...l,customFieldLoaders:[e,t]}),c={type:"multi",address:"0x123"},p=await s.getFieldContext(c,o.TOKEN);expect(e.canHandle).toHaveBeenCalledWith(c,o.TOKEN),expect(t.canHandle).toHaveBeenCalledWith(c,o.TOKEN),expect(e.loadField).toHaveBeenCalledWith(c),expect(t.loadField).not.toHaveBeenCalled(),expect(p).toEqual(a)}),it("should return second context when first context is an error",async()=>{const e=r(),t=r(),a={type:o.ERROR,error:new Error("first-error")},n={type:o.TOKEN,payload:"second-payload"};vi.spyOn(e,"canHandle").mockReturnValue(!0),vi.spyOn(t,"canHandle").mockReturnValue(!0),vi.spyOn(e,"loadField").mockResolvedValue(a),vi.spyOn(t,"loadField").mockResolvedValue(n);const s=new d({...l,customFieldLoaders:[e,t]}),c={type:"error",address:"0x123"},p=await s.getFieldContext(c,o.TOKEN);expect(e.canHandle).toHaveBeenCalledWith(c,o.TOKEN),expect(t.canHandle).toHaveBeenCalledWith(c,o.TOKEN),expect(e.loadField).toHaveBeenCalledWith(c),expect(t.loadField).toHaveBeenCalledWith(c),expect(p).toEqual(n)}),it("should handle loader rejection gracefully",async()=>{const e=r(),t=new Error("Load field failed");vi.spyOn(e,"canHandle").mockReturnValue(!0),vi.spyOn(e,"loadField").mockRejectedValue(t);const a=new d({...l,customFieldLoaders:[e]}),n={type:"error",address:"0x123"};await expect(a.getFieldContext(n,o.TOKEN)).rejects.toThrow("Load field failed"),expect(e.canHandle).toHaveBeenCalledWith(n,o.TOKEN),expect(e.loadField).toHaveBeenCalledWith(n)})})});
1
+ import{ClearSignContextType as o}from"./shared/model/ClearSignContext";import{DefaultContextModule as d}from"./DefaultContextModule";const u=i=>({load:vi.fn(),canHandle:vi.fn().mockReturnValue(i)}),r=()=>({canHandle:vi.fn(),loadField:vi.fn()});describe("DefaultContextModule",()=>{const i={load:vi.fn()},l={customLoaders:[],defaultLoaders:!1,defaultFieldLoaders:!1,customFieldLoaders:[],customTypedDataLoader:i,cal:{url:"https://cal/v1",mode:"prod",branch:"main"},web3checks:{url:"https://web3checks/v3"},metadataServiceDomain:{url:"https://metadata.com"},originToken:"originToken"};beforeEach(()=>{vi.restoreAllMocks()}),it("should initialize the context module with all the default loaders",async()=>{const t=await new d(l).getContexts({});expect(t).toEqual([])}),it("should return an empty array when no loaders",async()=>{const t=await new d(l).getContexts({});expect(t).toEqual([])}),it("should call all fetch method from metadata fetcher",async()=>{const e=u(!0);await new d({...l,customLoaders:[e,e]}).getContexts({}),expect(e.canHandle).toHaveBeenCalledTimes(2),expect(e.load).toHaveBeenCalledTimes(2)}),it("should return an array of context response",async()=>{const e=u(!0),t=[[{type:"provideERC20Info",payload:"payload1"}],[{type:"provideERC20Info",payload:"payload2"},{type:"plugin",payload:"payload3"}]];vi.spyOn(e,"load").mockResolvedValueOnce(t[0]).mockResolvedValueOnce(t[1]);const a=await new d({...l,customLoaders:[e,e]}).getContexts({});expect(e.canHandle).toHaveBeenCalledTimes(2),expect(e.load).toHaveBeenCalledTimes(2),expect(a).toEqual(t.flat())}),it("should only call loaders that can handle the input",async()=>{const e=u(!0),t=u(!0);vi.spyOn(e,"canHandle").mockReturnValue(!0),vi.spyOn(t,"canHandle").mockReturnValue(!1),vi.spyOn(e,"load").mockResolvedValue([{type:o.TOKEN,payload:"payload1"}]),vi.spyOn(t,"load").mockResolvedValue([{type:o.NFT,payload:"payload2"}]);const n=new d({...l,customLoaders:[e,t]}),a={to:"0x123",selector:"0xabc"},s=await n.getContexts(a);expect(e.canHandle).toHaveBeenCalledWith(a,Object.values(o)),expect(t.canHandle).toHaveBeenCalledWith(a,Object.values(o)),expect(e.load).toHaveBeenCalledWith(a),expect(t.load).not.toHaveBeenCalled(),expect(s).toEqual([{type:"token",payload:"payload1"}])}),it("should use expected types if provided",async()=>{const e=u(!0);vi.spyOn(e,"canHandle").mockReturnValue(!0),vi.spyOn(e,"load").mockResolvedValue([{type:o.TOKEN,payload:"payload1"}]);const t=new d({...l,customLoaders:[e]}),n={to:"0x123",selector:"0xabc"};await t.getContexts(n,[o.TOKEN]),expect(e.canHandle).toHaveBeenCalledWith(n,[o.TOKEN])}),it("should call the typed data loader",async()=>{await new d({...l,customTypedDataLoader:i}).getTypedDataFilters({}),expect(i.load).toHaveBeenCalledTimes(1)}),describe("getFieldContext",()=>{it("should return error when no loader can handle the field",async()=>{const e=r();vi.spyOn(e,"canHandle").mockReturnValue(!1);const t=new d({...l,customFieldLoaders:[e]}),n={type:"unknown"},a=await t.getFieldContext(n,o.TOKEN);expect(e.canHandle).toHaveBeenCalledWith(n,o.TOKEN),expect(e.loadField).not.toHaveBeenCalled(),expect(a).toEqual({type:o.ERROR,error:new Error(`Loader not found for field: ${n} and expected type: ${o.TOKEN}`)})}),it("should return context when a loader can handle the field",async()=>{const e=r(),t={type:o.TOKEN,payload:"test-payload"};vi.spyOn(e,"canHandle").mockReturnValue(!0),vi.spyOn(e,"loadField").mockResolvedValue(t);const n=new d({...l,customFieldLoaders:[e]}),a={type:"token",address:"0x123"},s=await n.getFieldContext(a,o.TOKEN);expect(e.canHandle).toHaveBeenCalledWith(a,o.TOKEN),expect(e.loadField).toHaveBeenCalledWith(a),expect(s).toEqual(t)}),it("should return first context when multiple loaders can handle the field",async()=>{const e=r(),t=r(),n={type:o.TOKEN,payload:"first-payload"},a={type:o.NFT,payload:"second-payload"};vi.spyOn(e,"canHandle").mockReturnValue(!0),vi.spyOn(t,"canHandle").mockReturnValue(!0),vi.spyOn(e,"loadField").mockResolvedValue(n),vi.spyOn(t,"loadField").mockResolvedValue(a);const s=new d({...l,customFieldLoaders:[e,t]}),c={type:"multi",address:"0x123"},p=await s.getFieldContext(c,o.TOKEN);expect(e.canHandle).toHaveBeenCalledWith(c,o.TOKEN),expect(t.canHandle).toHaveBeenCalledWith(c,o.TOKEN),expect(e.loadField).toHaveBeenCalledWith(c),expect(t.loadField).not.toHaveBeenCalled(),expect(p).toEqual(n)}),it("should return second context when first context is an error",async()=>{const e=r(),t=r(),n={type:o.ERROR,error:new Error("first-error")},a={type:o.TOKEN,payload:"second-payload"};vi.spyOn(e,"canHandle").mockReturnValue(!0),vi.spyOn(t,"canHandle").mockReturnValue(!0),vi.spyOn(e,"loadField").mockResolvedValue(n),vi.spyOn(t,"loadField").mockResolvedValue(a);const s=new d({...l,customFieldLoaders:[e,t]}),c={type:"error",address:"0x123"},p=await s.getFieldContext(c,o.TOKEN);expect(e.canHandle).toHaveBeenCalledWith(c,o.TOKEN),expect(t.canHandle).toHaveBeenCalledWith(c,o.TOKEN),expect(e.loadField).toHaveBeenCalledWith(c),expect(t.loadField).toHaveBeenCalledWith(c),expect(p).toEqual(a)}),it("should handle loader rejection gracefully",async()=>{const e=r(),t=new Error("Load field failed");vi.spyOn(e,"canHandle").mockReturnValue(!0),vi.spyOn(e,"loadField").mockRejectedValue(t);const n=new d({...l,customFieldLoaders:[e]}),a={type:"error",address:"0x123"};await expect(n.getFieldContext(a,o.TOKEN)).rejects.toThrow("Load field failed"),expect(e.canHandle).toHaveBeenCalledWith(a,o.TOKEN),expect(e.loadField).toHaveBeenCalledWith(a)})})});
2
2
  //# sourceMappingURL=DefaultContextModule.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/DefaultContextModule.test.ts"],
4
- "sourcesContent": ["import { DeviceModelId } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { type ContextModuleConfig } from \"./config/model/ContextModuleConfig\";\nimport { type ContextFieldLoader } from \"./shared/domain/ContextFieldLoader\";\nimport { type ContextLoader } from \"./shared/domain/ContextLoader\";\nimport {\n type ClearSignContext,\n ClearSignContextType,\n} from \"./shared/model/ClearSignContext\";\nimport { type TypedDataContext } from \"./shared/model/TypedDataContext\";\nimport type { TypedDataContextLoader } from \"./typed-data/domain/TypedDataContextLoader\";\nimport { DefaultContextModule } from \"./DefaultContextModule\";\n\nconst contextLoaderStubBuilder = (canHandle: boolean): ContextLoader => {\n return {\n load: vi.fn(),\n canHandle: vi\n .fn()\n .mockReturnValue(canHandle) as unknown as ContextLoader[\"canHandle\"],\n };\n};\n\nconst fieldLoaderStubBuilder = (): ContextFieldLoader => {\n return {\n canHandle: vi.fn(),\n loadField: vi.fn(),\n };\n};\n\ndescribe(\"DefaultContextModule\", () => {\n const typedDataLoader: TypedDataContextLoader = { load: vi.fn() };\n const defaultContextModuleConfig: ContextModuleConfig = {\n customLoaders: [],\n defaultLoaders: false,\n defaultFieldLoaders: false,\n customFieldLoaders: [],\n customTypedDataLoader: typedDataLoader,\n cal: {\n url: \"https://cal/v1\",\n mode: \"prod\",\n branch: \"main\",\n },\n web3checks: {\n url: \"https://web3checks/v3\",\n },\n metadataServiceDomain: {\n url: \"https://metadata.com\",\n },\n originToken: \"originToken\",\n };\n\n beforeEach(() => {\n vi.restoreAllMocks();\n });\n\n it(\"should initialize the context module with all the default loaders\", async () => {\n const contextModule = new DefaultContextModule(defaultContextModuleConfig);\n\n const res = await contextModule.getContexts({});\n\n expect(res).toEqual([]);\n });\n\n it(\"should return an empty array when no loaders\", async () => {\n const contextModule = new DefaultContextModule(defaultContextModuleConfig);\n\n const res = await contextModule.getContexts({});\n\n expect(res).toEqual([]);\n });\n\n it(\"should call all fetch method from metadata fetcher\", async () => {\n const loader = contextLoaderStubBuilder(true);\n const contextModule = new DefaultContextModule({\n ...defaultContextModuleConfig,\n customLoaders: [loader, loader],\n });\n\n await contextModule.getContexts({});\n\n expect(loader.canHandle).toHaveBeenCalledTimes(2);\n expect(loader.load).toHaveBeenCalledTimes(2);\n });\n\n it(\"should return an array of context response\", async () => {\n const loader = contextLoaderStubBuilder(true);\n const responses = [\n [{ type: \"provideERC20Info\", payload: \"payload1\" }],\n [\n { type: \"provideERC20Info\", payload: \"payload2\" },\n { type: \"plugin\", payload: \"payload3\" },\n ],\n ] as ClearSignContext[][];\n vi.spyOn(loader, \"load\")\n .mockResolvedValueOnce(responses[0]!)\n .mockResolvedValueOnce(responses[1]!);\n const contextModule = new DefaultContextModule({\n ...defaultContextModuleConfig,\n customLoaders: [loader, loader],\n });\n\n const res = await contextModule.getContexts({});\n\n expect(loader.canHandle).toHaveBeenCalledTimes(2);\n expect(loader.load).toHaveBeenCalledTimes(2);\n expect(res).toEqual(responses.flat());\n });\n\n it(\"should only call loaders that can handle the input\", async () => {\n const loader1 = contextLoaderStubBuilder(true);\n const loader2 = contextLoaderStubBuilder(true);\n\n vi.spyOn(loader1, \"canHandle\").mockReturnValue(true);\n vi.spyOn(loader2, \"canHandle\").mockReturnValue(false);\n vi.spyOn(loader1, \"load\").mockResolvedValue([\n { type: ClearSignContextType.TOKEN, payload: \"payload1\" },\n ]);\n vi.spyOn(loader2, \"load\").mockResolvedValue([\n { type: ClearSignContextType.NFT, payload: \"payload2\" },\n ]);\n\n const contextModule = new DefaultContextModule({\n ...defaultContextModuleConfig,\n customLoaders: [loader1, loader2],\n });\n\n const testInput = { to: \"0x123\", selector: \"0xabc\" };\n const res = await contextModule.getContexts(testInput);\n\n expect(loader1.canHandle).toHaveBeenCalledWith(\n testInput,\n Object.values(ClearSignContextType),\n );\n expect(loader2.canHandle).toHaveBeenCalledWith(\n testInput,\n Object.values(ClearSignContextType),\n );\n expect(loader1.load).toHaveBeenCalledWith(testInput);\n expect(loader2.load).not.toHaveBeenCalled(); // Should not be called since canHandle returned false\n expect(res).toEqual([{ type: \"token\", payload: \"payload1\" }]);\n });\n\n it(\"should use expected types if provided\", async () => {\n const loader = contextLoaderStubBuilder(true);\n\n vi.spyOn(loader, \"canHandle\").mockReturnValue(true);\n\n vi.spyOn(loader, \"load\").mockResolvedValue([\n { type: ClearSignContextType.TOKEN, payload: \"payload1\" },\n ]);\n\n const contextModule = new DefaultContextModule({\n ...defaultContextModuleConfig,\n customLoaders: [loader],\n });\n\n const testInput = { to: \"0x123\", selector: \"0xabc\" };\n await contextModule.getContexts(testInput, [ClearSignContextType.TOKEN]);\n\n expect(loader.canHandle).toHaveBeenCalledWith(testInput, [\n ClearSignContextType.TOKEN,\n ]);\n });\n\n it(\"should call the typed data loader\", async () => {\n const contextModule = new DefaultContextModule({\n ...defaultContextModuleConfig,\n customTypedDataLoader: typedDataLoader,\n });\n\n await contextModule.getTypedDataFilters({} as TypedDataContext);\n\n expect(typedDataLoader.load).toHaveBeenCalledTimes(1);\n });\n\n it(\"should return a web3 check context\", async () => {\n const loader = { load: vi.fn() }; // Web3CheckLoader doesn't use ContextLoader interface\n vi.spyOn(loader, \"load\").mockResolvedValueOnce(\n Right({ descriptor: \"payload\" }),\n );\n const contextModule = new DefaultContextModule({\n ...defaultContextModuleConfig,\n customLoaders: [],\n customWeb3CheckLoader: loader,\n });\n\n const res = await contextModule.getWeb3Checks({\n deviceModelId: DeviceModelId.FLEX,\n from: \"from\",\n rawTx: \"rawTx\",\n chainId: 1,\n });\n\n expect(loader.load).toHaveBeenCalledTimes(1);\n expect(res).toEqual({ type: \"web3Check\", payload: \"payload\" });\n });\n\n it(\"should return null if no web3 check context\", async () => {\n const loader = { load: vi.fn() }; // Web3CheckLoader doesn't use ContextLoader interface\n vi.spyOn(loader, \"load\").mockResolvedValue(Left(new Error(\"error\")));\n const contextModule = new DefaultContextModule({\n ...defaultContextModuleConfig,\n customLoaders: [],\n customWeb3CheckLoader: loader,\n });\n\n const res = await contextModule.getWeb3Checks({\n deviceModelId: DeviceModelId.FLEX,\n from: \"from\",\n rawTx: \"rawTx\",\n chainId: 1,\n });\n\n expect(loader.load).toHaveBeenCalledTimes(1);\n expect(res).toBeNull();\n });\n\n it(\"should throw an error if origin token is not provided\", () => {\n expect(\n () =>\n new DefaultContextModule({\n ...defaultContextModuleConfig,\n originToken: undefined,\n }),\n ).toThrow(\"Origin token is required\");\n });\n\n describe(\"getFieldContext\", () => {\n it(\"should return error when no loader can handle the field\", async () => {\n // GIVEN\n const fieldLoader = fieldLoaderStubBuilder();\n vi.spyOn(fieldLoader, \"canHandle\").mockReturnValue(false);\n\n const contextModule = new DefaultContextModule({\n ...defaultContextModuleConfig,\n customFieldLoaders: [fieldLoader],\n });\n\n const testField = { type: \"unknown\" };\n\n // WHEN\n const result = await contextModule.getFieldContext(\n testField,\n ClearSignContextType.TOKEN,\n );\n\n // THEN\n expect(fieldLoader.canHandle).toHaveBeenCalledWith(\n testField,\n ClearSignContextType.TOKEN,\n );\n expect(fieldLoader.loadField).not.toHaveBeenCalled();\n expect(result).toEqual({\n type: ClearSignContextType.ERROR,\n error: new Error(\n `Loader not found for field: ${testField} and expected type: ${ClearSignContextType.TOKEN}`,\n ),\n });\n });\n\n it(\"should return context when a loader can handle the field\", async () => {\n // GIVEN\n const fieldLoader = fieldLoaderStubBuilder();\n const mockContext: ClearSignContext = {\n type: ClearSignContextType.TOKEN,\n payload: \"test-payload\",\n };\n\n vi.spyOn(fieldLoader, \"canHandle\").mockReturnValue(true);\n vi.spyOn(fieldLoader, \"loadField\").mockResolvedValue(mockContext);\n\n const contextModule = new DefaultContextModule({\n ...defaultContextModuleConfig,\n customFieldLoaders: [fieldLoader],\n });\n\n const testField = { type: \"token\", address: \"0x123\" };\n\n // WHEN\n const result = await contextModule.getFieldContext(\n testField,\n ClearSignContextType.TOKEN,\n );\n\n // THEN\n expect(fieldLoader.canHandle).toHaveBeenCalledWith(\n testField,\n ClearSignContextType.TOKEN,\n );\n expect(fieldLoader.loadField).toHaveBeenCalledWith(testField);\n expect(result).toEqual(mockContext);\n });\n\n it(\"should return first context when multiple loaders can handle the field\", async () => {\n // GIVEN\n const fieldLoader1 = fieldLoaderStubBuilder();\n const fieldLoader2 = fieldLoaderStubBuilder();\n\n const mockContext1: ClearSignContext = {\n type: ClearSignContextType.TOKEN,\n payload: \"first-payload\",\n };\n const mockContext2: ClearSignContext = {\n type: ClearSignContextType.NFT,\n payload: \"second-payload\",\n };\n\n vi.spyOn(fieldLoader1, \"canHandle\").mockReturnValue(true);\n vi.spyOn(fieldLoader2, \"canHandle\").mockReturnValue(true);\n vi.spyOn(fieldLoader1, \"loadField\").mockResolvedValue(mockContext1);\n vi.spyOn(fieldLoader2, \"loadField\").mockResolvedValue(mockContext2);\n\n const contextModule = new DefaultContextModule({\n ...defaultContextModuleConfig,\n customFieldLoaders: [fieldLoader1, fieldLoader2],\n });\n\n const testField = { type: \"multi\", address: \"0x123\" };\n\n // WHEN\n const result = await contextModule.getFieldContext(\n testField,\n ClearSignContextType.TOKEN,\n );\n\n // THEN\n expect(fieldLoader1.canHandle).toHaveBeenCalledWith(\n testField,\n ClearSignContextType.TOKEN,\n );\n expect(fieldLoader2.canHandle).toHaveBeenCalledWith(\n testField,\n ClearSignContextType.TOKEN,\n );\n expect(fieldLoader1.loadField).toHaveBeenCalledWith(testField);\n expect(fieldLoader2.loadField).not.toHaveBeenCalled();\n expect(result).toEqual(mockContext1); // Should return first context\n });\n\n it(\"should return second context when first context is an error\", async () => {\n // GIVEN\n const fieldLoader1 = fieldLoaderStubBuilder();\n const fieldLoader2 = fieldLoaderStubBuilder();\n const mockContext1: ClearSignContext = {\n type: ClearSignContextType.ERROR,\n error: new Error(\"first-error\"),\n };\n const mockContext2: ClearSignContext = {\n type: ClearSignContextType.TOKEN,\n payload: \"second-payload\",\n };\n vi.spyOn(fieldLoader1, \"canHandle\").mockReturnValue(true);\n vi.spyOn(fieldLoader2, \"canHandle\").mockReturnValue(true);\n vi.spyOn(fieldLoader1, \"loadField\").mockResolvedValue(mockContext1);\n vi.spyOn(fieldLoader2, \"loadField\").mockResolvedValue(mockContext2);\n\n const contextModule = new DefaultContextModule({\n ...defaultContextModuleConfig,\n customFieldLoaders: [fieldLoader1, fieldLoader2],\n });\n\n const testField = { type: \"error\", address: \"0x123\" };\n\n // WHEN\n const result = await contextModule.getFieldContext(\n testField,\n ClearSignContextType.TOKEN,\n );\n\n // THEN\n expect(fieldLoader1.canHandle).toHaveBeenCalledWith(\n testField,\n ClearSignContextType.TOKEN,\n );\n expect(fieldLoader2.canHandle).toHaveBeenCalledWith(\n testField,\n ClearSignContextType.TOKEN,\n );\n expect(fieldLoader1.loadField).toHaveBeenCalledWith(testField);\n expect(fieldLoader2.loadField).toHaveBeenCalledWith(testField);\n expect(result).toEqual(mockContext2);\n });\n\n it(\"should handle loader rejection gracefully\", async () => {\n // GIVEN\n const fieldLoader = fieldLoaderStubBuilder();\n const loadError = new Error(\"Load field failed\");\n\n vi.spyOn(fieldLoader, \"canHandle\").mockReturnValue(true);\n vi.spyOn(fieldLoader, \"loadField\").mockRejectedValue(loadError);\n\n const contextModule = new DefaultContextModule({\n ...defaultContextModuleConfig,\n customFieldLoaders: [fieldLoader],\n });\n\n const testField = { type: \"error\", address: \"0x123\" };\n\n // WHEN & THEN\n await expect(\n contextModule.getFieldContext(testField, ClearSignContextType.TOKEN),\n ).rejects.toThrow(\"Load field failed\");\n\n expect(fieldLoader.canHandle).toHaveBeenCalledWith(\n testField,\n ClearSignContextType.TOKEN,\n );\n expect(fieldLoader.loadField).toHaveBeenCalledWith(testField);\n });\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["DeviceModelId", "Left", "Right", "ClearSignContextType", "DefaultContextModule", "contextLoaderStubBuilder", "canHandle", "fieldLoaderStubBuilder", "typedDataLoader", "defaultContextModuleConfig", "res", "loader", "responses", "loader1", "loader2", "contextModule", "testInput", "fieldLoader", "testField", "result", "mockContext", "fieldLoader1", "fieldLoader2", "mockContext1", "mockContext2", "loadError"]
4
+ "sourcesContent": ["import { type ContextModuleConfig } from \"./config/model/ContextModuleConfig\";\nimport { type ContextFieldLoader } from \"./shared/domain/ContextFieldLoader\";\nimport { type ContextLoader } from \"./shared/domain/ContextLoader\";\nimport {\n type ClearSignContext,\n ClearSignContextType,\n} from \"./shared/model/ClearSignContext\";\nimport { type TypedDataContext } from \"./shared/model/TypedDataContext\";\nimport type { TypedDataContextLoader } from \"./typed-data/domain/TypedDataContextLoader\";\nimport { DefaultContextModule } from \"./DefaultContextModule\";\n\nconst contextLoaderStubBuilder = (canHandle: boolean): ContextLoader => {\n return {\n load: vi.fn(),\n canHandle: vi\n .fn()\n .mockReturnValue(canHandle) as unknown as ContextLoader[\"canHandle\"],\n };\n};\n\nconst fieldLoaderStubBuilder = (): ContextFieldLoader => {\n return {\n canHandle: vi.fn() as unknown as ContextFieldLoader[\"canHandle\"],\n loadField: vi.fn(),\n };\n};\n\ndescribe(\"DefaultContextModule\", () => {\n const typedDataLoader: TypedDataContextLoader = { load: vi.fn() };\n const defaultContextModuleConfig: ContextModuleConfig = {\n customLoaders: [],\n defaultLoaders: false,\n defaultFieldLoaders: false,\n customFieldLoaders: [],\n customTypedDataLoader: typedDataLoader,\n cal: {\n url: \"https://cal/v1\",\n mode: \"prod\",\n branch: \"main\",\n },\n web3checks: {\n url: \"https://web3checks/v3\",\n },\n metadataServiceDomain: {\n url: \"https://metadata.com\",\n },\n originToken: \"originToken\",\n };\n\n beforeEach(() => {\n vi.restoreAllMocks();\n });\n\n it(\"should initialize the context module with all the default loaders\", async () => {\n const contextModule = new DefaultContextModule(defaultContextModuleConfig);\n\n const res = await contextModule.getContexts({});\n\n expect(res).toEqual([]);\n });\n\n it(\"should return an empty array when no loaders\", async () => {\n const contextModule = new DefaultContextModule(defaultContextModuleConfig);\n\n const res = await contextModule.getContexts({});\n\n expect(res).toEqual([]);\n });\n\n it(\"should call all fetch method from metadata fetcher\", async () => {\n const loader = contextLoaderStubBuilder(true);\n const contextModule = new DefaultContextModule({\n ...defaultContextModuleConfig,\n customLoaders: [loader, loader],\n });\n\n await contextModule.getContexts({});\n\n expect(loader.canHandle).toHaveBeenCalledTimes(2);\n expect(loader.load).toHaveBeenCalledTimes(2);\n });\n\n it(\"should return an array of context response\", async () => {\n const loader = contextLoaderStubBuilder(true);\n const responses = [\n [{ type: \"provideERC20Info\", payload: \"payload1\" }],\n [\n { type: \"provideERC20Info\", payload: \"payload2\" },\n { type: \"plugin\", payload: \"payload3\" },\n ],\n ] as ClearSignContext[][];\n vi.spyOn(loader, \"load\")\n .mockResolvedValueOnce(responses[0]!)\n .mockResolvedValueOnce(responses[1]!);\n const contextModule = new DefaultContextModule({\n ...defaultContextModuleConfig,\n customLoaders: [loader, loader],\n });\n\n const res = await contextModule.getContexts({});\n\n expect(loader.canHandle).toHaveBeenCalledTimes(2);\n expect(loader.load).toHaveBeenCalledTimes(2);\n expect(res).toEqual(responses.flat());\n });\n\n it(\"should only call loaders that can handle the input\", async () => {\n const loader1 = contextLoaderStubBuilder(true);\n const loader2 = contextLoaderStubBuilder(true);\n\n vi.spyOn(loader1, \"canHandle\").mockReturnValue(true);\n vi.spyOn(loader2, \"canHandle\").mockReturnValue(false);\n vi.spyOn(loader1, \"load\").mockResolvedValue([\n { type: ClearSignContextType.TOKEN, payload: \"payload1\" },\n ]);\n vi.spyOn(loader2, \"load\").mockResolvedValue([\n { type: ClearSignContextType.NFT, payload: \"payload2\" },\n ]);\n\n const contextModule = new DefaultContextModule({\n ...defaultContextModuleConfig,\n customLoaders: [loader1, loader2],\n });\n\n const testInput = { to: \"0x123\", selector: \"0xabc\" };\n const res = await contextModule.getContexts(testInput);\n\n expect(loader1.canHandle).toHaveBeenCalledWith(\n testInput,\n Object.values(ClearSignContextType),\n );\n expect(loader2.canHandle).toHaveBeenCalledWith(\n testInput,\n Object.values(ClearSignContextType),\n );\n expect(loader1.load).toHaveBeenCalledWith(testInput);\n expect(loader2.load).not.toHaveBeenCalled(); // Should not be called since canHandle returned false\n expect(res).toEqual([{ type: \"token\", payload: \"payload1\" }]);\n });\n\n it(\"should use expected types if provided\", async () => {\n const loader = contextLoaderStubBuilder(true);\n\n vi.spyOn(loader, \"canHandle\").mockReturnValue(true);\n\n vi.spyOn(loader, \"load\").mockResolvedValue([\n { type: ClearSignContextType.TOKEN, payload: \"payload1\" },\n ]);\n\n const contextModule = new DefaultContextModule({\n ...defaultContextModuleConfig,\n customLoaders: [loader],\n });\n\n const testInput = { to: \"0x123\", selector: \"0xabc\" };\n await contextModule.getContexts(testInput, [ClearSignContextType.TOKEN]);\n\n expect(loader.canHandle).toHaveBeenCalledWith(testInput, [\n ClearSignContextType.TOKEN,\n ]);\n });\n\n it(\"should call the typed data loader\", async () => {\n const contextModule = new DefaultContextModule({\n ...defaultContextModuleConfig,\n customTypedDataLoader: typedDataLoader,\n });\n\n await contextModule.getTypedDataFilters({} as TypedDataContext);\n\n expect(typedDataLoader.load).toHaveBeenCalledTimes(1);\n });\n\n describe(\"getFieldContext\", () => {\n it(\"should return error when no loader can handle the field\", async () => {\n // GIVEN\n const fieldLoader = fieldLoaderStubBuilder();\n vi.spyOn(fieldLoader, \"canHandle\").mockReturnValue(false);\n\n const contextModule = new DefaultContextModule({\n ...defaultContextModuleConfig,\n customFieldLoaders: [fieldLoader],\n });\n\n const testField = { type: \"unknown\" };\n\n // WHEN\n const result = await contextModule.getFieldContext(\n testField,\n ClearSignContextType.TOKEN,\n );\n\n // THEN\n expect(fieldLoader.canHandle).toHaveBeenCalledWith(\n testField,\n ClearSignContextType.TOKEN,\n );\n expect(fieldLoader.loadField).not.toHaveBeenCalled();\n expect(result).toEqual({\n type: ClearSignContextType.ERROR,\n error: new Error(\n `Loader not found for field: ${testField} and expected type: ${ClearSignContextType.TOKEN}`,\n ),\n });\n });\n\n it(\"should return context when a loader can handle the field\", async () => {\n // GIVEN\n const fieldLoader = fieldLoaderStubBuilder();\n const mockContext: ClearSignContext = {\n type: ClearSignContextType.TOKEN,\n payload: \"test-payload\",\n };\n\n vi.spyOn(fieldLoader, \"canHandle\").mockReturnValue(true);\n vi.spyOn(fieldLoader, \"loadField\").mockResolvedValue(mockContext);\n\n const contextModule = new DefaultContextModule({\n ...defaultContextModuleConfig,\n customFieldLoaders: [fieldLoader],\n });\n\n const testField = { type: \"token\", address: \"0x123\" };\n\n // WHEN\n const result = await contextModule.getFieldContext(\n testField,\n ClearSignContextType.TOKEN,\n );\n\n // THEN\n expect(fieldLoader.canHandle).toHaveBeenCalledWith(\n testField,\n ClearSignContextType.TOKEN,\n );\n expect(fieldLoader.loadField).toHaveBeenCalledWith(testField);\n expect(result).toEqual(mockContext);\n });\n\n it(\"should return first context when multiple loaders can handle the field\", async () => {\n // GIVEN\n const fieldLoader1 = fieldLoaderStubBuilder();\n const fieldLoader2 = fieldLoaderStubBuilder();\n\n const mockContext1: ClearSignContext = {\n type: ClearSignContextType.TOKEN,\n payload: \"first-payload\",\n };\n const mockContext2: ClearSignContext = {\n type: ClearSignContextType.NFT,\n payload: \"second-payload\",\n };\n\n vi.spyOn(fieldLoader1, \"canHandle\").mockReturnValue(true);\n vi.spyOn(fieldLoader2, \"canHandle\").mockReturnValue(true);\n vi.spyOn(fieldLoader1, \"loadField\").mockResolvedValue(mockContext1);\n vi.spyOn(fieldLoader2, \"loadField\").mockResolvedValue(mockContext2);\n\n const contextModule = new DefaultContextModule({\n ...defaultContextModuleConfig,\n customFieldLoaders: [fieldLoader1, fieldLoader2],\n });\n\n const testField = { type: \"multi\", address: \"0x123\" };\n\n // WHEN\n const result = await contextModule.getFieldContext(\n testField,\n ClearSignContextType.TOKEN,\n );\n\n // THEN\n expect(fieldLoader1.canHandle).toHaveBeenCalledWith(\n testField,\n ClearSignContextType.TOKEN,\n );\n expect(fieldLoader2.canHandle).toHaveBeenCalledWith(\n testField,\n ClearSignContextType.TOKEN,\n );\n expect(fieldLoader1.loadField).toHaveBeenCalledWith(testField);\n expect(fieldLoader2.loadField).not.toHaveBeenCalled();\n expect(result).toEqual(mockContext1); // Should return first context\n });\n\n it(\"should return second context when first context is an error\", async () => {\n // GIVEN\n const fieldLoader1 = fieldLoaderStubBuilder();\n const fieldLoader2 = fieldLoaderStubBuilder();\n const mockContext1: ClearSignContext = {\n type: ClearSignContextType.ERROR,\n error: new Error(\"first-error\"),\n };\n const mockContext2: ClearSignContext = {\n type: ClearSignContextType.TOKEN,\n payload: \"second-payload\",\n };\n vi.spyOn(fieldLoader1, \"canHandle\").mockReturnValue(true);\n vi.spyOn(fieldLoader2, \"canHandle\").mockReturnValue(true);\n vi.spyOn(fieldLoader1, \"loadField\").mockResolvedValue(mockContext1);\n vi.spyOn(fieldLoader2, \"loadField\").mockResolvedValue(mockContext2);\n\n const contextModule = new DefaultContextModule({\n ...defaultContextModuleConfig,\n customFieldLoaders: [fieldLoader1, fieldLoader2],\n });\n\n const testField = { type: \"error\", address: \"0x123\" };\n\n // WHEN\n const result = await contextModule.getFieldContext(\n testField,\n ClearSignContextType.TOKEN,\n );\n\n // THEN\n expect(fieldLoader1.canHandle).toHaveBeenCalledWith(\n testField,\n ClearSignContextType.TOKEN,\n );\n expect(fieldLoader2.canHandle).toHaveBeenCalledWith(\n testField,\n ClearSignContextType.TOKEN,\n );\n expect(fieldLoader1.loadField).toHaveBeenCalledWith(testField);\n expect(fieldLoader2.loadField).toHaveBeenCalledWith(testField);\n expect(result).toEqual(mockContext2);\n });\n\n it(\"should handle loader rejection gracefully\", async () => {\n // GIVEN\n const fieldLoader = fieldLoaderStubBuilder();\n const loadError = new Error(\"Load field failed\");\n\n vi.spyOn(fieldLoader, \"canHandle\").mockReturnValue(true);\n vi.spyOn(fieldLoader, \"loadField\").mockRejectedValue(loadError);\n\n const contextModule = new DefaultContextModule({\n ...defaultContextModuleConfig,\n customFieldLoaders: [fieldLoader],\n });\n\n const testField = { type: \"error\", address: \"0x123\" };\n\n // WHEN & THEN\n await expect(\n contextModule.getFieldContext(testField, ClearSignContextType.TOKEN),\n ).rejects.toThrow(\"Load field failed\");\n\n expect(fieldLoader.canHandle).toHaveBeenCalledWith(\n testField,\n ClearSignContextType.TOKEN,\n );\n expect(fieldLoader.loadField).toHaveBeenCalledWith(testField);\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["ClearSignContextType", "DefaultContextModule", "contextLoaderStubBuilder", "canHandle", "fieldLoaderStubBuilder", "typedDataLoader", "defaultContextModuleConfig", "res", "loader", "responses", "loader1", "loader2", "contextModule", "testInput", "fieldLoader", "testField", "result", "mockContext", "fieldLoader1", "fieldLoader2", "mockContext1", "mockContext2", "loadError"]
7
7
  }
package/lib/esm/src/di.js CHANGED
@@ -1,2 +1,2 @@
1
- import{Container as t}from"inversify";import{calldataModuleFactory as e}from"./calldata/di/calldataModuleFactory";import{configModuleFactory as a}from"./config/di/configModuleFactory";import{dynamicNetworkModuleFactory as m}from"./dynamic-network/di/dynamicNetworkModuleFactory";import{externalPluginModuleFactory as n}from"./external-plugin/di/externalPluginModuleFactory";import{nftModuleFactory as i}from"./nft/di/nftModuleFactory";import{nanoPkiModuleFactory as c}from"./pki/di/pkiModuleFactory";import{proxyModuleFactory as l}from"./proxy/di/proxyModuleFactory";import{safeModuleFactory as p}from"./safe/di/safeModuleFactory";import{solanaContextModuleFactory as d}from"./solana/di/SolanaContextModuleFactory";import{tokenModuleFactory as f}from"./token/di/tokenModuleFactory";import{trustedNameModuleFactory as u}from"./trusted-name/di/trustedNameModuleFactory";import{typedDataModuleFactory as y}from"./typed-data/di/typedDataModuleFactory";import{uniswapModuleFactory as M}from"./uniswap/di/uniswapModuleFactory";import{web3CheckModuleFactory as F}from"./web3-check/di/web3CheckModuleFactory";const v=({config:o})=>{const r=new t;return r.loadSync(a(o),n(),m(),i(),l(o),p(),f(),e(),u(),y(),c(),M(),F(),d()),r};export{v as makeContainer};
1
+ import{Container as t}from"inversify";import{calldataModuleFactory as a}from"./calldata/di/calldataModuleFactory";import{configModuleFactory as e}from"./config/di/configModuleFactory";import{dynamicNetworkModuleFactory as m}from"./dynamic-network/di/dynamicNetworkModuleFactory";import{externalPluginModuleFactory as n}from"./external-plugin/di/externalPluginModuleFactory";import{nftModuleFactory as i}from"./nft/di/nftModuleFactory";import{nanoPkiModuleFactory as l}from"./pki/di/pkiModuleFactory";import{proxyModuleFactory as c}from"./proxy/di/proxyModuleFactory";import{safeModuleFactory as f}from"./safe/di/safeModuleFactory";import{solanaContextModuleFactory as p}from"./solana/di/SolanaContextModuleFactory";import{solanaLifiModuleFactory as d}from"./solanaLifi/di/lifiModuleFactory";import{solanaTokenModuleFactory as u}from"./solanaToken/di/tokenModuleFactory";import{tokenModuleFactory as y}from"./token/di/tokenModuleFactory";import{transactionCheckModuleFactory as M}from"./transaction-check/di/transactionCheckModuleFactory";import{trustedNameModuleFactory as F}from"./trusted-name/di/trustedNameModuleFactory";import{typedDataModuleFactory as s}from"./typed-data/di/typedDataModuleFactory";import{uniswapModuleFactory as C}from"./uniswap/di/uniswapModuleFactory";const B=({config:o})=>{const r=new t;return r.loadSync(e(o),n(),m(),i(),c(o),f(),y(),a(),F(),s(),l(),C(),M(),p(),u(),d()),r};export{B as makeContainer};
2
2
  //# sourceMappingURL=di.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/di.ts"],
4
- "sourcesContent": ["import { Container } from \"inversify\";\n\nimport { calldataModuleFactory } from \"@/calldata/di/calldataModuleFactory\";\nimport { configModuleFactory } from \"@/config/di/configModuleFactory\";\nimport { type ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport { dynamicNetworkModuleFactory } from \"@/dynamic-network/di/dynamicNetworkModuleFactory\";\nimport { externalPluginModuleFactory } from \"@/external-plugin/di/externalPluginModuleFactory\";\nimport { nftModuleFactory } from \"@/nft/di/nftModuleFactory\";\nimport { nanoPkiModuleFactory } from \"@/pki/di/pkiModuleFactory\";\nimport { proxyModuleFactory } from \"@/proxy/di/proxyModuleFactory\";\nimport { safeModuleFactory } from \"@/safe/di/safeModuleFactory\";\nimport { solanaContextModuleFactory } from \"@/solana/di/SolanaContextModuleFactory\";\nimport { tokenModuleFactory } from \"@/token/di/tokenModuleFactory\";\nimport { trustedNameModuleFactory } from \"@/trusted-name/di/trustedNameModuleFactory\";\nimport { typedDataModuleFactory } from \"@/typed-data/di/typedDataModuleFactory\";\nimport { uniswapModuleFactory } from \"@/uniswap/di/uniswapModuleFactory\";\nimport { web3CheckModuleFactory } from \"@/web3-check/di/web3CheckModuleFactory\";\n\ntype MakeContainerArgs = {\n config: ContextModuleConfig;\n};\n\nexport const makeContainer = ({ config }: MakeContainerArgs) => {\n const container = new Container();\n\n container.loadSync(\n configModuleFactory(config),\n externalPluginModuleFactory(),\n dynamicNetworkModuleFactory(),\n nftModuleFactory(),\n proxyModuleFactory(config),\n safeModuleFactory(),\n tokenModuleFactory(),\n calldataModuleFactory(),\n trustedNameModuleFactory(),\n typedDataModuleFactory(),\n nanoPkiModuleFactory(),\n uniswapModuleFactory(),\n web3CheckModuleFactory(),\n solanaContextModuleFactory(),\n );\n\n return container;\n};\n"],
5
- "mappings": "AAAA,OAAS,aAAAA,MAAiB,YAE1B,OAAS,yBAAAC,MAA6B,sCACtC,OAAS,uBAAAC,MAA2B,kCAEpC,OAAS,+BAAAC,MAAmC,mDAC5C,OAAS,+BAAAC,MAAmC,mDAC5C,OAAS,oBAAAC,MAAwB,4BACjC,OAAS,wBAAAC,MAA4B,4BACrC,OAAS,sBAAAC,MAA0B,gCACnC,OAAS,qBAAAC,MAAyB,8BAClC,OAAS,8BAAAC,MAAkC,yCAC3C,OAAS,sBAAAC,MAA0B,gCACnC,OAAS,4BAAAC,MAAgC,6CACzC,OAAS,0BAAAC,MAA8B,yCACvC,OAAS,wBAAAC,MAA4B,oCACrC,OAAS,0BAAAC,MAA8B,yCAMhC,MAAMC,EAAgB,CAAC,CAAE,OAAAC,CAAO,IAAyB,CAC9D,MAAMC,EAAY,IAAIjB,EAEtB,OAAAiB,EAAU,SACRf,EAAoBc,CAAM,EAC1BZ,EAA4B,EAC5BD,EAA4B,EAC5BE,EAAiB,EACjBE,EAAmBS,CAAM,EACzBR,EAAkB,EAClBE,EAAmB,EACnBT,EAAsB,EACtBU,EAAyB,EACzBC,EAAuB,EACvBN,EAAqB,EACrBO,EAAqB,EACrBC,EAAuB,EACvBL,EAA2B,CAC7B,EAEOQ,CACT",
6
- "names": ["Container", "calldataModuleFactory", "configModuleFactory", "dynamicNetworkModuleFactory", "externalPluginModuleFactory", "nftModuleFactory", "nanoPkiModuleFactory", "proxyModuleFactory", "safeModuleFactory", "solanaContextModuleFactory", "tokenModuleFactory", "trustedNameModuleFactory", "typedDataModuleFactory", "uniswapModuleFactory", "web3CheckModuleFactory", "makeContainer", "config", "container"]
4
+ "sourcesContent": ["import { Container } from \"inversify\";\n\nimport { calldataModuleFactory } from \"@/calldata/di/calldataModuleFactory\";\nimport { configModuleFactory } from \"@/config/di/configModuleFactory\";\nimport { type ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport { dynamicNetworkModuleFactory } from \"@/dynamic-network/di/dynamicNetworkModuleFactory\";\nimport { externalPluginModuleFactory } from \"@/external-plugin/di/externalPluginModuleFactory\";\nimport { nftModuleFactory } from \"@/nft/di/nftModuleFactory\";\nimport { nanoPkiModuleFactory } from \"@/pki/di/pkiModuleFactory\";\nimport { proxyModuleFactory } from \"@/proxy/di/proxyModuleFactory\";\nimport { safeModuleFactory } from \"@/safe/di/safeModuleFactory\";\nimport { solanaContextModuleFactory } from \"@/solana/di/SolanaContextModuleFactory\";\nimport { solanaLifiModuleFactory } from \"@/solanaLifi/di/lifiModuleFactory\";\nimport { solanaTokenModuleFactory } from \"@/solanaToken/di/tokenModuleFactory\";\nimport { tokenModuleFactory } from \"@/token/di/tokenModuleFactory\";\nimport { transactionCheckModuleFactory } from \"@/transaction-check/di/transactionCheckModuleFactory\";\nimport { trustedNameModuleFactory } from \"@/trusted-name/di/trustedNameModuleFactory\";\nimport { typedDataModuleFactory } from \"@/typed-data/di/typedDataModuleFactory\";\nimport { uniswapModuleFactory } from \"@/uniswap/di/uniswapModuleFactory\";\n\ntype MakeContainerArgs = {\n config: ContextModuleConfig;\n};\n\nexport const makeContainer = ({ config }: MakeContainerArgs) => {\n const container = new Container();\n\n container.loadSync(\n configModuleFactory(config),\n externalPluginModuleFactory(),\n dynamicNetworkModuleFactory(),\n nftModuleFactory(),\n proxyModuleFactory(config),\n safeModuleFactory(),\n tokenModuleFactory(),\n calldataModuleFactory(),\n trustedNameModuleFactory(),\n typedDataModuleFactory(),\n nanoPkiModuleFactory(),\n uniswapModuleFactory(),\n transactionCheckModuleFactory(),\n solanaContextModuleFactory(),\n solanaTokenModuleFactory(),\n solanaLifiModuleFactory(),\n );\n\n return container;\n};\n"],
5
+ "mappings": "AAAA,OAAS,aAAAA,MAAiB,YAE1B,OAAS,yBAAAC,MAA6B,sCACtC,OAAS,uBAAAC,MAA2B,kCAEpC,OAAS,+BAAAC,MAAmC,mDAC5C,OAAS,+BAAAC,MAAmC,mDAC5C,OAAS,oBAAAC,MAAwB,4BACjC,OAAS,wBAAAC,MAA4B,4BACrC,OAAS,sBAAAC,MAA0B,gCACnC,OAAS,qBAAAC,MAAyB,8BAClC,OAAS,8BAAAC,MAAkC,yCAC3C,OAAS,2BAAAC,MAA+B,oCACxC,OAAS,4BAAAC,MAAgC,sCACzC,OAAS,sBAAAC,MAA0B,gCACnC,OAAS,iCAAAC,MAAqC,uDAC9C,OAAS,4BAAAC,MAAgC,6CACzC,OAAS,0BAAAC,MAA8B,yCACvC,OAAS,wBAAAC,MAA4B,oCAM9B,MAAMC,EAAgB,CAAC,CAAE,OAAAC,CAAO,IAAyB,CAC9D,MAAMC,EAAY,IAAInB,EAEtB,OAAAmB,EAAU,SACRjB,EAAoBgB,CAAM,EAC1Bd,EAA4B,EAC5BD,EAA4B,EAC5BE,EAAiB,EACjBE,EAAmBW,CAAM,EACzBV,EAAkB,EAClBI,EAAmB,EACnBX,EAAsB,EACtBa,EAAyB,EACzBC,EAAuB,EACvBT,EAAqB,EACrBU,EAAqB,EACrBH,EAA8B,EAC9BJ,EAA2B,EAC3BE,EAAyB,EACzBD,EAAwB,CAC1B,EAEOS,CACT",
6
+ "names": ["Container", "calldataModuleFactory", "configModuleFactory", "dynamicNetworkModuleFactory", "externalPluginModuleFactory", "nftModuleFactory", "nanoPkiModuleFactory", "proxyModuleFactory", "safeModuleFactory", "solanaContextModuleFactory", "solanaLifiModuleFactory", "solanaTokenModuleFactory", "tokenModuleFactory", "transactionCheckModuleFactory", "trustedNameModuleFactory", "typedDataModuleFactory", "uniswapModuleFactory", "makeContainer", "config", "container"]
7
7
  }
@@ -1,2 +1,2 @@
1
- export*from"./calldata/data/CalldataDescriptorDataSource";export*from"./calldata/data/HttpCalldataDescriptorDataSource";export*from"./calldata/domain/CalldataContextLoader";export*from"./config/model/ContextModuleConfig";export*from"./ContextModule";export*from"./ContextModuleBuilder";export*from"./DefaultContextModule";export*from"./dynamic-network/data/DynamicNetworkDataSource";export*from"./dynamic-network/data/HttpDynamicNetworkDataSource";export*from"./dynamic-network/domain/DynamicNetworkContextLoader";export*from"./dynamic-network/model/DynamicNetworkConfiguration";export*from"./external-plugin/data/ExternalPluginDataSource";export*from"./external-plugin/data/HttpExternalPluginDataSource";export*from"./external-plugin/domain/ExternalPluginContextLoader";export*from"./nft/data/HttpNftDataSource";export*from"./nft/data/NftDataSource";export*from"./nft/domain/NftContextFieldLoader";export*from"./nft/domain/NftContextLoader";export*from"./pki/data/HttpPkiCertificateDataSource";export*from"./pki/data/PkiCertificateDataSource";export*from"./pki/domain/DefaultPkiCertificateLoader";export*from"./pki/domain/PkiCertificateLoader";export*from"./pki/model/KeyId";export*from"./pki/model/KeyUsage";export*from"./pki/model/PkiCertificate";export*from"./pki/model/PkiCertificateInfo";export*from"./proxy/data/HttpProxyDataSource";export*from"./proxy/data/HttpSafeProxyDataSource";export*from"./proxy/data/ProxyDataSource";export*from"./proxy/domain/ProxyContextFieldLoader";export*from"./shared/domain/ContextFieldLoader";export*from"./shared/domain/ContextLoader";export*from"./shared/model/ClearSignContext";export*from"./shared/model/GenericPath";export*from"./shared/model/TransactionSubset";export*from"./shared/model/TypedDataClearSignContext";export*from"./shared/model/TypedDataContext";export*from"./solana/data/HttpSolanaOwnerInfoDataSource";export*from"./solana/data/SolanaDataSource";export*from"./solana/domain/DefaultSolanaContextLoader";export*from"./solana/domain/SolanaContextLoader";export*from"./token/data/HttpTokenDataSource";export*from"./token/data/TokenDataSource";export*from"./token/domain/TokenContextFieldLoader";export*from"./token/domain/TokenContextLoader";export*from"./trusted-name/data/HttpTrustedNameDataSource";export*from"./trusted-name/data/TrustedNameDataSource";export*from"./trusted-name/domain/TrustedNameContextFieldLoader";export*from"./trusted-name/domain/TrustedNameContextLoader";export*from"./typed-data/data/HttpTypedDataDataSource";export*from"./typed-data/data/TypedDataDataSource";export*from"./typed-data/domain/DefaultTypedDataContextLoader";export*from"./typed-data/domain/TypedDataContextLoader";export*from"./uniswap/data/AbiDecoderDataSource";export*from"./uniswap/data/CommandDecoderDataSource";export*from"./uniswap/data/DefaultCommandDecoderDataSource";export*from"./uniswap/data/EthersAbiDecoderDataSource";export*from"./uniswap/domain/UniswapContextLoader";export*from"./web3-check/data/HttpWeb3CheckDataSource";export*from"./web3-check/data/Web3CheckDataSource";export*from"./web3-check/domain/DefaultWeb3CheckLoader";export*from"./web3-check/domain/Web3CheckContextLoader";export*from"./web3-check/domain/web3CheckTypes";
1
+ export*from"./calldata/data/CalldataDescriptorDataSource";export*from"./calldata/data/HttpCalldataDescriptorDataSource";export*from"./calldata/domain/CalldataContextLoader";export*from"./config/model/ContextModuleConfig";export*from"./ContextModule";export*from"./ContextModuleBuilder";export*from"./DefaultContextModule";export*from"./dynamic-network/data/DynamicNetworkDataSource";export*from"./dynamic-network/data/HttpDynamicNetworkDataSource";export*from"./dynamic-network/domain/DynamicNetworkContextLoader";export*from"./dynamic-network/model/DynamicNetworkConfiguration";export*from"./external-plugin/data/ExternalPluginDataSource";export*from"./external-plugin/data/HttpExternalPluginDataSource";export*from"./external-plugin/domain/ExternalPluginContextLoader";export*from"./nft/data/HttpNftDataSource";export*from"./nft/data/NftDataSource";export*from"./nft/domain/NftContextFieldLoader";export*from"./nft/domain/NftContextLoader";export*from"./pki/data/HttpPkiCertificateDataSource";export*from"./pki/data/PkiCertificateDataSource";export*from"./pki/domain/DefaultPkiCertificateLoader";export*from"./pki/domain/PkiCertificateLoader";export*from"./pki/model/KeyId";export*from"./pki/model/KeyUsage";export*from"./pki/model/PkiCertificate";export*from"./pki/model/PkiCertificateInfo";export*from"./proxy/data/HttpProxyDataSource";export*from"./proxy/data/HttpSafeProxyDataSource";export*from"./proxy/data/ProxyDataSource";export*from"./proxy/domain/ProxyContextFieldLoader";export*from"./shared/domain/ContextFieldLoader";export*from"./shared/domain/ContextLoader";export*from"./shared/model/ClearSignContext";export*from"./shared/model/GenericPath";export*from"./shared/model/SolanaContextTypes";export*from"./shared/model/TransactionSubset";export*from"./shared/model/TypedDataClearSignContext";export*from"./shared/model/TypedDataContext";export*from"./solana/data/HttpSolanaOwnerInfoDataSource";export*from"./solana/data/SolanaDataSource";export*from"./solana/domain/DefaultSolanaContextLoader";export*from"./solana/domain/SolanaContextLoader";export*from"./solana/domain/solanaContextTypes";export*from"./token/data/HttpTokenDataSource";export*from"./token/data/TokenDataSource";export*from"./token/domain/TokenContextFieldLoader";export*from"./token/domain/TokenContextLoader";export*from"./trusted-name/data/HttpTrustedNameDataSource";export*from"./trusted-name/data/TrustedNameDataSource";export*from"./trusted-name/domain/TrustedNameContextFieldLoader";export*from"./trusted-name/domain/TrustedNameContextLoader";export*from"./typed-data/data/HttpTypedDataDataSource";export*from"./typed-data/data/TypedDataDataSource";export*from"./typed-data/domain/DefaultTypedDataContextLoader";export*from"./typed-data/domain/TypedDataContextLoader";export*from"./uniswap/data/AbiDecoderDataSource";export*from"./uniswap/data/CommandDecoderDataSource";export*from"./uniswap/data/DefaultCommandDecoderDataSource";export*from"./uniswap/data/EthersAbiDecoderDataSource";export*from"./uniswap/domain/UniswapContextLoader";
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/index.ts"],
4
- "sourcesContent": ["export * from \"./calldata/data/CalldataDescriptorDataSource\";\nexport * from \"./calldata/data/HttpCalldataDescriptorDataSource\";\nexport * from \"./calldata/domain/CalldataContextLoader\";\nexport * from \"./config/model/ContextModuleConfig\";\nexport * from \"./ContextModule\";\nexport * from \"./ContextModuleBuilder\";\nexport * from \"./DefaultContextModule\";\nexport * from \"./dynamic-network/data/DynamicNetworkDataSource\";\nexport * from \"./dynamic-network/data/HttpDynamicNetworkDataSource\";\nexport * from \"./dynamic-network/domain/DynamicNetworkContextLoader\";\nexport * from \"./dynamic-network/model/DynamicNetworkConfiguration\";\nexport * from \"./external-plugin/data/ExternalPluginDataSource\";\nexport * from \"./external-plugin/data/HttpExternalPluginDataSource\";\nexport * from \"./external-plugin/domain/ExternalPluginContextLoader\";\nexport * from \"./nft/data/HttpNftDataSource\";\nexport * from \"./nft/data/NftDataSource\";\nexport * from \"./nft/domain/NftContextFieldLoader\";\nexport * from \"./nft/domain/NftContextLoader\";\nexport * from \"./pki/data/HttpPkiCertificateDataSource\";\nexport * from \"./pki/data/PkiCertificateDataSource\";\nexport * from \"./pki/domain/DefaultPkiCertificateLoader\";\nexport * from \"./pki/domain/PkiCertificateLoader\";\nexport * from \"./pki/model/KeyId\";\nexport * from \"./pki/model/KeyUsage\";\nexport * from \"./pki/model/PkiCertificate\";\nexport * from \"./pki/model/PkiCertificateInfo\";\nexport * from \"./proxy/data/HttpProxyDataSource\";\nexport * from \"./proxy/data/HttpSafeProxyDataSource\";\nexport * from \"./proxy/data/ProxyDataSource\";\nexport * from \"./proxy/domain/ProxyContextFieldLoader\";\nexport * from \"./shared/domain/ContextFieldLoader\";\nexport * from \"./shared/domain/ContextLoader\";\nexport * from \"./shared/model/ClearSignContext\";\nexport * from \"./shared/model/GenericPath\";\nexport * from \"./shared/model/TransactionSubset\";\nexport * from \"./shared/model/TypedDataClearSignContext\";\nexport * from \"./shared/model/TypedDataContext\";\nexport * from \"./solana/data/HttpSolanaOwnerInfoDataSource\";\nexport * from \"./solana/data/SolanaDataSource\";\nexport * from \"./solana/domain/DefaultSolanaContextLoader\";\nexport * from \"./solana/domain/SolanaContextLoader\";\nexport * from \"./token/data/HttpTokenDataSource\";\nexport * from \"./token/data/TokenDataSource\";\nexport * from \"./token/domain/TokenContextFieldLoader\";\nexport * from \"./token/domain/TokenContextLoader\";\nexport * from \"./trusted-name/data/HttpTrustedNameDataSource\";\nexport * from \"./trusted-name/data/TrustedNameDataSource\";\nexport * from \"./trusted-name/domain/TrustedNameContextFieldLoader\";\nexport * from \"./trusted-name/domain/TrustedNameContextLoader\";\nexport * from \"./typed-data/data/HttpTypedDataDataSource\";\nexport * from \"./typed-data/data/TypedDataDataSource\";\nexport * from \"./typed-data/domain/DefaultTypedDataContextLoader\";\nexport * from \"./typed-data/domain/TypedDataContextLoader\";\nexport * from \"./uniswap/data/AbiDecoderDataSource\";\nexport * from \"./uniswap/data/CommandDecoderDataSource\";\nexport * from \"./uniswap/data/DefaultCommandDecoderDataSource\";\nexport * from \"./uniswap/data/EthersAbiDecoderDataSource\";\nexport * from \"./uniswap/domain/UniswapContextLoader\";\nexport * from \"./web3-check/data/HttpWeb3CheckDataSource\";\nexport * from \"./web3-check/data/Web3CheckDataSource\";\nexport * from \"./web3-check/domain/DefaultWeb3CheckLoader\";\nexport * from \"./web3-check/domain/Web3CheckContextLoader\";\nexport * from \"./web3-check/domain/web3CheckTypes\";\n"],
5
- "mappings": "AAAA,WAAc,+CACd,WAAc,mDACd,WAAc,0CACd,WAAc,qCACd,WAAc,kBACd,WAAc,yBACd,WAAc,yBACd,WAAc,kDACd,WAAc,sDACd,WAAc,uDACd,WAAc,sDACd,WAAc,kDACd,WAAc,sDACd,WAAc,uDACd,WAAc,+BACd,WAAc,2BACd,WAAc,qCACd,WAAc,gCACd,WAAc,0CACd,WAAc,sCACd,WAAc,2CACd,WAAc,oCACd,WAAc,oBACd,WAAc,uBACd,WAAc,6BACd,WAAc,iCACd,WAAc,mCACd,WAAc,uCACd,WAAc,+BACd,WAAc,yCACd,WAAc,qCACd,WAAc,gCACd,WAAc,kCACd,WAAc,6BACd,WAAc,mCACd,WAAc,2CACd,WAAc,kCACd,WAAc,8CACd,WAAc,iCACd,WAAc,6CACd,WAAc,sCACd,WAAc,mCACd,WAAc,+BACd,WAAc,yCACd,WAAc,oCACd,WAAc,gDACd,WAAc,4CACd,WAAc,sDACd,WAAc,iDACd,WAAc,4CACd,WAAc,wCACd,WAAc,oDACd,WAAc,6CACd,WAAc,sCACd,WAAc,0CACd,WAAc,iDACd,WAAc,4CACd,WAAc,wCACd,WAAc,4CACd,WAAc,wCACd,WAAc,6CACd,WAAc,6CACd,WAAc",
4
+ "sourcesContent": ["export * from \"./calldata/data/CalldataDescriptorDataSource\";\nexport * from \"./calldata/data/HttpCalldataDescriptorDataSource\";\nexport * from \"./calldata/domain/CalldataContextLoader\";\nexport * from \"./config/model/ContextModuleConfig\";\nexport * from \"./ContextModule\";\nexport * from \"./ContextModuleBuilder\";\nexport * from \"./DefaultContextModule\";\nexport * from \"./dynamic-network/data/DynamicNetworkDataSource\";\nexport * from \"./dynamic-network/data/HttpDynamicNetworkDataSource\";\nexport * from \"./dynamic-network/domain/DynamicNetworkContextLoader\";\nexport * from \"./dynamic-network/model/DynamicNetworkConfiguration\";\nexport * from \"./external-plugin/data/ExternalPluginDataSource\";\nexport * from \"./external-plugin/data/HttpExternalPluginDataSource\";\nexport * from \"./external-plugin/domain/ExternalPluginContextLoader\";\nexport * from \"./nft/data/HttpNftDataSource\";\nexport * from \"./nft/data/NftDataSource\";\nexport * from \"./nft/domain/NftContextFieldLoader\";\nexport * from \"./nft/domain/NftContextLoader\";\nexport * from \"./pki/data/HttpPkiCertificateDataSource\";\nexport * from \"./pki/data/PkiCertificateDataSource\";\nexport * from \"./pki/domain/DefaultPkiCertificateLoader\";\nexport * from \"./pki/domain/PkiCertificateLoader\";\nexport * from \"./pki/model/KeyId\";\nexport * from \"./pki/model/KeyUsage\";\nexport * from \"./pki/model/PkiCertificate\";\nexport * from \"./pki/model/PkiCertificateInfo\";\nexport * from \"./proxy/data/HttpProxyDataSource\";\nexport * from \"./proxy/data/HttpSafeProxyDataSource\";\nexport * from \"./proxy/data/ProxyDataSource\";\nexport * from \"./proxy/domain/ProxyContextFieldLoader\";\nexport * from \"./shared/domain/ContextFieldLoader\";\nexport * from \"./shared/domain/ContextLoader\";\nexport * from \"./shared/model/ClearSignContext\";\nexport * from \"./shared/model/GenericPath\";\nexport * from \"./shared/model/SolanaContextTypes\";\nexport * from \"./shared/model/TransactionSubset\";\nexport * from \"./shared/model/TypedDataClearSignContext\";\nexport * from \"./shared/model/TypedDataContext\";\nexport * from \"./solana/data/HttpSolanaOwnerInfoDataSource\";\nexport * from \"./solana/data/SolanaDataSource\";\nexport * from \"./solana/domain/DefaultSolanaContextLoader\";\nexport * from \"./solana/domain/SolanaContextLoader\";\nexport * from \"./solana/domain/solanaContextTypes\";\nexport * from \"./token/data/HttpTokenDataSource\";\nexport * from \"./token/data/TokenDataSource\";\nexport * from \"./token/domain/TokenContextFieldLoader\";\nexport * from \"./token/domain/TokenContextLoader\";\nexport * from \"./trusted-name/data/HttpTrustedNameDataSource\";\nexport * from \"./trusted-name/data/TrustedNameDataSource\";\nexport * from \"./trusted-name/domain/TrustedNameContextFieldLoader\";\nexport * from \"./trusted-name/domain/TrustedNameContextLoader\";\nexport * from \"./typed-data/data/HttpTypedDataDataSource\";\nexport * from \"./typed-data/data/TypedDataDataSource\";\nexport * from \"./typed-data/domain/DefaultTypedDataContextLoader\";\nexport * from \"./typed-data/domain/TypedDataContextLoader\";\nexport * from \"./uniswap/data/AbiDecoderDataSource\";\nexport * from \"./uniswap/data/CommandDecoderDataSource\";\nexport * from \"./uniswap/data/DefaultCommandDecoderDataSource\";\nexport * from \"./uniswap/data/EthersAbiDecoderDataSource\";\nexport * from \"./uniswap/domain/UniswapContextLoader\";\n"],
5
+ "mappings": "AAAA,WAAc,+CACd,WAAc,mDACd,WAAc,0CACd,WAAc,qCACd,WAAc,kBACd,WAAc,yBACd,WAAc,yBACd,WAAc,kDACd,WAAc,sDACd,WAAc,uDACd,WAAc,sDACd,WAAc,kDACd,WAAc,sDACd,WAAc,uDACd,WAAc,+BACd,WAAc,2BACd,WAAc,qCACd,WAAc,gCACd,WAAc,0CACd,WAAc,sCACd,WAAc,2CACd,WAAc,oCACd,WAAc,oBACd,WAAc,uBACd,WAAc,6BACd,WAAc,iCACd,WAAc,mCACd,WAAc,uCACd,WAAc,+BACd,WAAc,yCACd,WAAc,qCACd,WAAc,gCACd,WAAc,kCACd,WAAc,6BACd,WAAc,oCACd,WAAc,mCACd,WAAc,2CACd,WAAc,kCACd,WAAc,8CACd,WAAc,iCACd,WAAc,6CACd,WAAc,sCACd,WAAc,qCACd,WAAc,mCACd,WAAc,+BACd,WAAc,yCACd,WAAc,oCACd,WAAc,gDACd,WAAc,4CACd,WAAc,sDACd,WAAc,iDACd,WAAc,4CACd,WAAc,wCACd,WAAc,oDACd,WAAc,6CACd,WAAc,sCACd,WAAc,0CACd,WAAc,iDACd,WAAc,4CACd,WAAc",
6
6
  "names": []
7
7
  }
@@ -1,2 +1,2 @@
1
- var r=(e=>(e.TOKEN="token",e.NFT="nft",e.TRUSTED_NAME="trustedName",e.PLUGIN="plugin",e.EXTERNAL_PLUGIN="externalPlugin",e.TRANSACTION_INFO="transactionInfo",e.PROXY_INFO="proxyInfo",e.ENUM="enum",e.TRANSACTION_FIELD_DESCRIPTION="transactionFieldDescription",e.WEB3_CHECK="web3Check",e.DYNAMIC_NETWORK="dynamicNetwork",e.DYNAMIC_NETWORK_ICON="dynamicNetworkIcon",e.ERROR="error",e.SAFE="safe",e.SIGNER="signer",e))(r||{}),n=(t=>(t.TOKEN="token",t.NFT="nft",t.TRUSTED_NAME="trustedName",t.ENUM="enum",t.CALLDATA="calldata",t))(n||{});export{n as ClearSignContextReferenceType,r as ClearSignContextType};
1
+ var n=(e=>(e.TOKEN="token",e.NFT="nft",e.TRUSTED_NAME="trustedName",e.PLUGIN="plugin",e.EXTERNAL_PLUGIN="externalPlugin",e.TRANSACTION_INFO="transactionInfo",e.PROXY_INFO="proxyInfo",e.ENUM="enum",e.TRANSACTION_FIELD_DESCRIPTION="transactionFieldDescription",e.TRANSACTION_CHECK="transactionCheck",e.DYNAMIC_NETWORK="dynamicNetwork",e.DYNAMIC_NETWORK_ICON="dynamicNetworkIcon",e.ERROR="error",e.SAFE="safe",e.SIGNER="signer",e))(n||{}),r=(t=>(t.TOKEN="token",t.NFT="nft",t.TRUSTED_NAME="trustedName",t.ENUM="enum",t.CALLDATA="calldata",t))(r||{});export{r as ClearSignContextReferenceType,n as ClearSignContextType};
2
2
  //# sourceMappingURL=ClearSignContext.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/shared/model/ClearSignContext.ts"],
4
- "sourcesContent": ["import { type PkiCertificate } from \"@/pki/model/PkiCertificate\";\n\nimport { type GenericPath } from \"./GenericPath\";\n\nexport enum ClearSignContextType {\n TOKEN = \"token\",\n NFT = \"nft\",\n TRUSTED_NAME = \"trustedName\",\n PLUGIN = \"plugin\",\n EXTERNAL_PLUGIN = \"externalPlugin\",\n TRANSACTION_INFO = \"transactionInfo\",\n PROXY_INFO = \"proxyInfo\",\n ENUM = \"enum\",\n TRANSACTION_FIELD_DESCRIPTION = \"transactionFieldDescription\",\n WEB3_CHECK = \"web3Check\",\n DYNAMIC_NETWORK = \"dynamicNetwork\",\n DYNAMIC_NETWORK_ICON = \"dynamicNetworkIcon\",\n ERROR = \"error\",\n SAFE = \"safe\",\n SIGNER = \"signer\",\n}\n\nexport enum ClearSignContextReferenceType {\n TOKEN = ClearSignContextType.TOKEN,\n NFT = ClearSignContextType.NFT,\n TRUSTED_NAME = ClearSignContextType.TRUSTED_NAME,\n ENUM = ClearSignContextType.ENUM,\n CALLDATA = \"calldata\",\n}\n\nexport type ClearSignContextReference<\n Type extends ClearSignContextReferenceType = ClearSignContextReferenceType,\n> = Type extends ClearSignContextReferenceType.ENUM\n ? {\n type: ClearSignContextReferenceType.ENUM;\n valuePath: GenericPath;\n id: number; // enum id to reference\n }\n : Type extends ClearSignContextReferenceType.TRUSTED_NAME\n ? {\n type: ClearSignContextReferenceType.TRUSTED_NAME;\n valuePath: GenericPath;\n types: string[];\n sources: string[];\n }\n : Type extends ClearSignContextReferenceType.CALLDATA\n ? {\n type: ClearSignContextReferenceType.CALLDATA;\n callee: GenericPath;\n valuePath: GenericPath;\n selector?: GenericPath;\n amount?: GenericPath;\n spender?: GenericPath;\n chainId?: GenericPath;\n }\n :\n | {\n type: Type;\n valuePath: GenericPath;\n value?: never;\n }\n | {\n type: Type;\n valuePath?: never;\n value: string;\n };\n\nexport type ClearSignContextSuccessType = Exclude<\n ClearSignContextType,\n ClearSignContextType.ERROR\n>;\n\nexport type ClearSignContextSuccess<\n T extends Exclude<\n ClearSignContextType,\n ClearSignContextType.ERROR\n > = ClearSignContextSuccessType,\n> = T extends ClearSignContextType.ENUM\n ? {\n type: ClearSignContextType.ENUM;\n id: number;\n payload: string;\n value: number;\n certificate?: PkiCertificate;\n }\n : T extends ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION\n ? {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION;\n payload: string;\n reference?: ClearSignContextReference;\n certificate?: PkiCertificate;\n }\n : {\n type: T;\n payload: string;\n certificate?: PkiCertificate;\n };\n\nexport type ClearSignContextError = {\n type: ClearSignContextType.ERROR;\n error: Error;\n};\n\nexport type ClearSignContext = ClearSignContextSuccess | ClearSignContextError;\n"],
5
- "mappings": "AAIO,IAAKA,OACVA,EAAA,MAAQ,QACRA,EAAA,IAAM,MACNA,EAAA,aAAe,cACfA,EAAA,OAAS,SACTA,EAAA,gBAAkB,iBAClBA,EAAA,iBAAmB,kBACnBA,EAAA,WAAa,YACbA,EAAA,KAAO,OACPA,EAAA,8BAAgC,8BAChCA,EAAA,WAAa,YACbA,EAAA,gBAAkB,iBAClBA,EAAA,qBAAuB,qBACvBA,EAAA,MAAQ,QACRA,EAAA,KAAO,OACPA,EAAA,OAAS,SAfCA,OAAA,IAkBAC,OACVA,EAAA,MAAQ,QACRA,EAAA,IAAM,MACNA,EAAA,aAAe,cACfA,EAAA,KAAO,OACPA,EAAA,SAAW,WALDA,OAAA",
4
+ "sourcesContent": ["import { type PkiCertificate } from \"@/pki/model/PkiCertificate\";\n\nimport { type GenericPath } from \"./GenericPath\";\n\nexport enum ClearSignContextType {\n TOKEN = \"token\",\n NFT = \"nft\",\n TRUSTED_NAME = \"trustedName\",\n PLUGIN = \"plugin\",\n EXTERNAL_PLUGIN = \"externalPlugin\",\n TRANSACTION_INFO = \"transactionInfo\",\n PROXY_INFO = \"proxyInfo\",\n ENUM = \"enum\",\n TRANSACTION_FIELD_DESCRIPTION = \"transactionFieldDescription\",\n TRANSACTION_CHECK = \"transactionCheck\",\n DYNAMIC_NETWORK = \"dynamicNetwork\",\n DYNAMIC_NETWORK_ICON = \"dynamicNetworkIcon\",\n ERROR = \"error\",\n SAFE = \"safe\",\n SIGNER = \"signer\",\n}\n\nexport enum ClearSignContextReferenceType {\n TOKEN = ClearSignContextType.TOKEN,\n NFT = ClearSignContextType.NFT,\n TRUSTED_NAME = ClearSignContextType.TRUSTED_NAME,\n ENUM = ClearSignContextType.ENUM,\n CALLDATA = \"calldata\",\n}\n\ntype PathOnly = {\n valuePath: GenericPath;\n value?: never;\n callee?: GenericPath;\n selector?: GenericPath;\n amount?: GenericPath;\n spender?: GenericPath;\n chainId?: GenericPath;\n};\n\ntype ValueOnly = {\n value: string;\n valuePath?: never;\n};\n\ntype PathOrValue = PathOnly | ValueOnly;\n\n// per-type payloads for references\ntype ClearSignContextReferencePayloads = {\n [ClearSignContextReferenceType.ENUM]: {\n valuePath: GenericPath;\n id: number; // enum id to reference\n };\n [ClearSignContextReferenceType.TRUSTED_NAME]: {\n valuePath: GenericPath;\n types: string[];\n sources: string[];\n };\n [ClearSignContextReferenceType.CALLDATA]: {\n callee: GenericPath;\n valuePath: GenericPath;\n selector?: GenericPath;\n amount?: GenericPath;\n spender?: GenericPath;\n chainId?: GenericPath;\n };\n [ClearSignContextReferenceType.TOKEN]: PathOrValue;\n [ClearSignContextReferenceType.NFT]: PathOrValue;\n};\n\n// discriminated union of all reference shapes, built from the payload map\ntype ClearSignContextReferenceUnion = {\n [T in ClearSignContextReferenceType]: {\n type: T;\n } & ClearSignContextReferencePayloads[T];\n}[ClearSignContextReferenceType];\n\nexport type ClearSignContextReference<\n T extends ClearSignContextReferenceType = ClearSignContextReferenceType,\n> = Extract<ClearSignContextReferenceUnion, { type: T }>;\n\nexport type ClearSignContextSuccessType = Exclude<\n ClearSignContextType,\n ClearSignContextType.ERROR\n>;\n\n// base payload shared by most success contexts\ntype ClearSignContextSuccessBase = {\n payload: string;\n certificate?: PkiCertificate;\n};\n\n// map from ClearSign success type to payload\ntype ClearSignContextSuccessPayloadsBase = {\n [K in ClearSignContextSuccessType]: ClearSignContextSuccessBase;\n};\n\n// special cases overrides for certain context types\ntype ClearSignContextSuccessPayloadOverrides = {\n [ClearSignContextType.ENUM]: ClearSignContextSuccessBase & {\n id: number;\n value: number;\n };\n [ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION]: ClearSignContextSuccessBase & {\n reference?: ClearSignContextReference;\n };\n};\n\ntype ClearSignContextSuccessPayloads = Omit<\n ClearSignContextSuccessPayloadsBase,\n ClearSignContextType.ENUM | ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION\n> &\n ClearSignContextSuccessPayloadOverrides;\n\n// union of all success contexts, built from the payload map.\ntype ClearSignContextSuccessUnion = {\n [T in ClearSignContextSuccessType]: {\n type: T;\n } & ClearSignContextSuccessPayloads[T];\n}[ClearSignContextSuccessType];\n\nexport type ClearSignContextSuccess<\n T extends ClearSignContextSuccessType = ClearSignContextSuccessType,\n> = Extract<ClearSignContextSuccessUnion, { type: T }>;\n\nexport type ClearSignContextError = {\n type: ClearSignContextType.ERROR;\n error: Error;\n};\n\nexport type ClearSignContext = ClearSignContextSuccess | ClearSignContextError;\n"],
5
+ "mappings": "AAIO,IAAKA,OACVA,EAAA,MAAQ,QACRA,EAAA,IAAM,MACNA,EAAA,aAAe,cACfA,EAAA,OAAS,SACTA,EAAA,gBAAkB,iBAClBA,EAAA,iBAAmB,kBACnBA,EAAA,WAAa,YACbA,EAAA,KAAO,OACPA,EAAA,8BAAgC,8BAChCA,EAAA,kBAAoB,mBACpBA,EAAA,gBAAkB,iBAClBA,EAAA,qBAAuB,qBACvBA,EAAA,MAAQ,QACRA,EAAA,KAAO,OACPA,EAAA,OAAS,SAfCA,OAAA,IAkBAC,OACVA,EAAA,MAAQ,QACRA,EAAA,IAAM,MACNA,EAAA,aAAe,cACfA,EAAA,KAAO,OACPA,EAAA,SAAW,WALDA,OAAA",
6
6
  "names": ["ClearSignContextType", "ClearSignContextReferenceType"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ var e=(t=>(t.SOLANA_TOKEN="solanaToken",t.SOLANA_LIFI="solanaLifi",t.ERROR="error",t))(e||{});export{e as SolanaContextTypes};
2
+ //# sourceMappingURL=SolanaContextTypes.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/shared/model/SolanaContextTypes.ts"],
4
+ "sourcesContent": ["import type { PkiCertificate } from \"@/pki/model/PkiCertificate\";\n\nexport enum SolanaContextTypes {\n SOLANA_TOKEN = \"solanaToken\",\n SOLANA_LIFI = \"solanaLifi\",\n ERROR = \"error\",\n}\n\nexport type SolanaTransactionDescriptor = {\n data: string;\n descriptorType: string;\n descriptorVersion: string;\n signatures: {\n prod?: string;\n test?: string;\n };\n};\n\nexport type SolanaTransactionDescriptorList = Record<\n string,\n SolanaTransactionDescriptor\n>;\n\nexport type SolanaTokenData = {\n solanaTokenDescriptor: {\n data: string;\n signature: string;\n };\n};\n\nexport type SolanaContextSuccessType = Exclude<\n SolanaContextTypes,\n SolanaContextTypes.ERROR\n>;\n\n// map from Solana success type to payload\ntype SolanaContextSuccessPayloads = {\n [SolanaContextTypes.SOLANA_TOKEN]: {\n payload: SolanaTokenData;\n certificate?: PkiCertificate;\n };\n [SolanaContextTypes.SOLANA_LIFI]: {\n payload: SolanaTransactionDescriptorList;\n };\n};\n\nexport type SolanaContextSuccess<\n T extends SolanaContextSuccessType = SolanaContextSuccessType,\n> = {\n type: T;\n} & SolanaContextSuccessPayloads[T];\n\nexport type SolanaContextError = {\n type: SolanaContextTypes.ERROR;\n error: Error;\n};\n\nexport type SolanaContext = SolanaContextSuccess | SolanaContextError;\n\nexport type SolanaTokenContextSuccess =\n SolanaContextSuccess<SolanaContextTypes.SOLANA_TOKEN>;\n\nexport type SolanaLifiContextSuccess =\n SolanaContextSuccess<SolanaContextTypes.SOLANA_LIFI>;\n\nexport type SolanaTokenContextResult =\n | SolanaTokenContextSuccess\n | SolanaContextError;\n\nexport type SolanaLifiContextResult =\n | SolanaLifiContextSuccess\n | SolanaContextError;\n\n// TODO LIFI\nexport type LoaderResult = SolanaTokenContextResult; //| SolanaLifiContextResult;\n"],
5
+ "mappings": "AAEO,IAAKA,OACVA,EAAA,aAAe,cACfA,EAAA,YAAc,aACdA,EAAA,MAAQ,QAHEA,OAAA",
6
+ "names": ["SolanaContextTypes"]
7
+ }
@@ -1,2 +1,2 @@
1
- var w=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var u=(s,e,o,t)=>{for(var r=t>1?void 0:t?g(e,o):e,a=s.length-1,n;a>=0;a--)(n=s[a])&&(r=(t?n(e,o,r):n(r))||r);return t&&r&&w(e,o,r),r},f=(s,e)=>(o,t)=>e(o,t,s);import{hexaStringToBuffer as h}from"@ledgerhq/device-management-kit";import m from"axios";import{inject as E,injectable as A}from"inversify";import{Left as i,Right as d}from"purify-ts";import{configTypes as O}from"../../config/di/configTypes";import{LEDGER_CLIENT_VERSION_HEADER as p,LEDGER_ORIGIN_TOKEN_HEADER as C}from"../../shared/constant/HttpHeaders";import S from"../../../package.json";let c=class{constructor(e){this.config=e;if(!this.config.originToken)throw new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: origin token is required")}isSolanaSPLOwnerInfo(e){return typeof e!="object"||e===null?!1:typeof e.tokenAccount=="string"&&typeof e.owner=="string"&&typeof e.contract=="string"&&typeof e.signedDescriptor=="string"}async fetchAddressMetadata(e,o){return await m.request({method:"GET",url:`${this.config.metadataServiceDomain.url}/v2/solana/owner/${e}?challenge=${o}`,headers:{[p]:`context-module/${S.version}`,[C]:this.config.originToken}}).then(t=>this.isSolanaSPLOwnerInfo(t.data)?d(t.data):i(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid fetchAddressMetadata response shape"))).catch(()=>i(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: Failed to fetch address metadata")))}async computeAddressMetadata(e,o,t){return await m.request({method:"GET",url:`${this.config.metadataServiceDomain.url}/v2/solana/computed-token-account/${e}/${o}?challenge=${t}`,headers:{[p]:`context-module/${S.version}`,"X-Ledger-Client-Origin":this.config.originToken}}).then(r=>this.isSolanaSPLOwnerInfo(r.data)?d(r.data):i(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid computeAddressMetadata response shape"))).catch(()=>i(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: Failed to compute address metadata")))}async getOwnerInfo(e){const{tokenAddress:o,challenge:t,createATA:r}=e;if(!t)return i(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: challenge is required"));let a;if(o)a=await this.fetchAddressMetadata(o,t);else if(r?.address&&r?.mintAddress)a=await this.computeAddressMetadata(r.address,r.mintAddress,t);else return i(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: either tokenAddress or valid createATA must be provided"));return a.chain(n=>{const l=h(n.signedDescriptor);return l?d({descriptor:l,tokenAccount:n.tokenAccount,owner:n.owner,contract:n.contract}):i(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid base64 descriptor received"))})}};c=u([A(),f(0,E(O.Config))],c);export{c as HttpSolanaOwnerInfoDataSource};
1
+ var w=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var f=(i,e,o,t)=>{for(var r=t>1?void 0:t?g(e,o):e,n=i.length-1,s;n>=0;n--)(s=i[n])&&(r=(t?s(e,o,r):s(r))||r);return t&&r&&w(e,o,r),r},u=(i,e)=>(o,t)=>e(o,t,i);import{hexaStringToBuffer as h}from"@ledgerhq/device-management-kit";import m from"axios";import{inject as E,injectable as I}from"inversify";import{Left as a,Right as l}from"purify-ts";import{configTypes as O}from"../../config/di/configTypes";import{LEDGER_CLIENT_VERSION_HEADER as p,LEDGER_ORIGIN_TOKEN_HEADER as A}from"../../shared/constant/HttpHeaders";import S from"../../../package.json";let d=class{constructor(e){this.config=e;if(!this.config.originToken)throw new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: origin token is required")}isSolanaSPLOwnerInfo(e){return typeof e!="object"||e===null?!1:typeof e.tokenAccount=="string"&&typeof e.owner=="string"&&typeof e.contract=="string"&&typeof e.signedDescriptor=="string"}async fetchAddressMetadata(e,o){return await m.request({method:"GET",url:`${this.config.metadataServiceDomain.url}/v2/solana/owner/${e}?challenge=${o}`,headers:{[p]:`context-module/${S.version}`,[A]:this.config.originToken}}).then(t=>this.isSolanaSPLOwnerInfo(t.data)?l(t.data):a(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid fetchAddressMetadata response shape"))).catch(()=>a(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: Failed to fetch address metadata")))}async computeAddressMetadata(e,o,t){return await m.request({method:"GET",url:`${this.config.metadataServiceDomain.url}/v2/solana/computed-token-account/${e}/${o}?challenge=${t}`,headers:{[p]:`context-module/${S.version}`,"X-Ledger-Client-Origin":this.config.originToken}}).then(r=>this.isSolanaSPLOwnerInfo(r.data)?l(r.data):a(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid computeAddressMetadata response shape"))).catch(()=>a(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: Failed to compute address metadata")))}async getOwnerInfo(e){const{tokenAddress:o,challenge:t,createATA:r}=e;if(!t)return a(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: challenge is required"));let n;if(o)n=await this.fetchAddressMetadata(o,t);else if(r?.address&&r?.mintAddress)n=await this.computeAddressMetadata(r.address,r.mintAddress,t);else return a(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: either tokenAddress or valid createATA must be provided"));return n.chain(s=>{const c=h(s.signedDescriptor);return c?l({tlvDescriptor:c}):a(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid base64 tlvDescriptor received"))})}};d=f([I(),u(0,E(O.Config))],d);export{d as HttpSolanaOwnerInfoDataSource};
2
2
  //# sourceMappingURL=HttpSolanaOwnerInfoDataSource.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/solana/data/HttpSolanaOwnerInfoDataSource.ts"],
4
- "sourcesContent": ["import { hexaStringToBuffer } from \"@ledgerhq/device-management-kit\";\nimport axios from \"axios\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport type { ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport {\n LEDGER_CLIENT_VERSION_HEADER,\n LEDGER_ORIGIN_TOKEN_HEADER,\n} from \"@/shared/constant/HttpHeaders\";\nimport {\n SolanaSPLOwnerInfo,\n type SolanaTransactionContext,\n} from \"@/solana/domain/solanaContextTypes\";\nimport PACKAGE from \"@root/package.json\";\n\nimport {\n HttpSolanaOwnerInfoDataSourceResult,\n SolanaDataSource,\n} from \"./SolanaDataSource\";\n\n@injectable()\nexport class HttpSolanaOwnerInfoDataSource implements SolanaDataSource {\n constructor(\n @inject(configTypes.Config) private readonly config: ContextModuleConfig,\n ) {\n if (!this.config.originToken) {\n throw new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: origin token is required\",\n );\n }\n }\n\n private isSolanaSPLOwnerInfo(data: {\n tokenAccount?: unknown;\n owner?: unknown;\n contract?: unknown;\n signedDescriptor?: unknown;\n }): data is SolanaSPLOwnerInfo {\n if (typeof data !== \"object\" || data === null) return false;\n return (\n typeof data.tokenAccount === \"string\" &&\n typeof data.owner === \"string\" &&\n typeof data.contract === \"string\" &&\n typeof data.signedDescriptor === \"string\"\n );\n }\n\n async fetchAddressMetadata(\n tokenAddress: string,\n challenge: string,\n ): Promise<Either<Error, SolanaSPLOwnerInfo>> {\n return await axios\n .request<SolanaSPLOwnerInfo>({\n method: \"GET\",\n url: `${this.config.metadataServiceDomain.url}/v2/solana/owner/${tokenAddress}?challenge=${challenge}`,\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n [LEDGER_ORIGIN_TOKEN_HEADER]: this.config.originToken,\n },\n })\n .then((res) => {\n if (!this.isSolanaSPLOwnerInfo(res.data))\n return Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid fetchAddressMetadata response shape\",\n ),\n );\n return Right(res.data);\n })\n .catch(() =>\n Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: Failed to fetch address metadata\",\n ),\n ),\n );\n }\n\n async computeAddressMetadata(\n address: string,\n mintAddress: string,\n challenge: string,\n ): Promise<Either<Error, SolanaSPLOwnerInfo>> {\n return await axios\n .request<SolanaSPLOwnerInfo>({\n method: \"GET\",\n url: `${this.config.metadataServiceDomain.url}/v2/solana/computed-token-account/${address}/${mintAddress}?challenge=${challenge}`,\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n \"X-Ledger-Client-Origin\": this.config.originToken,\n },\n })\n .then((res) => {\n if (!this.isSolanaSPLOwnerInfo(res.data))\n return Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid computeAddressMetadata response shape\",\n ),\n );\n return Right(res.data);\n })\n .catch(() =>\n Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: Failed to compute address metadata\",\n ),\n ),\n );\n }\n\n async getOwnerInfo(\n context: SolanaTransactionContext,\n ): Promise<Either<Error, HttpSolanaOwnerInfoDataSourceResult>> {\n const { tokenAddress, challenge, createATA } = context;\n\n if (!challenge) {\n return Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: challenge is required\",\n ),\n );\n }\n\n let ownerInfoResult: Either<Error, SolanaSPLOwnerInfo>;\n\n if (tokenAddress) {\n ownerInfoResult = await this.fetchAddressMetadata(\n tokenAddress,\n challenge,\n );\n } else if (createATA?.address && createATA?.mintAddress) {\n ownerInfoResult = await this.computeAddressMetadata(\n createATA.address,\n createATA.mintAddress,\n challenge,\n );\n } else {\n return Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: either tokenAddress or valid createATA must be provided\",\n ),\n );\n }\n\n return ownerInfoResult.chain((ownerInfo) => {\n const descriptor = hexaStringToBuffer(ownerInfo.signedDescriptor);\n if (!descriptor) {\n return Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid base64 descriptor received\",\n ),\n );\n }\n return Right({\n descriptor,\n tokenAccount: ownerInfo.tokenAccount,\n owner: ownerInfo.owner,\n contract: ownerInfo.contract,\n });\n });\n }\n}\n"],
5
- "mappings": "iOAAA,OAAS,sBAAAA,MAA0B,kCACnC,OAAOC,MAAW,QAClB,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,YACnC,OAAiB,QAAAC,EAAM,SAAAC,MAAa,YAEpC,OAAS,eAAAC,MAAmB,0BAE5B,OACE,gCAAAC,EACA,8BAAAC,MACK,gCAKP,OAAOC,MAAa,qBAQb,IAAMC,EAAN,KAAgE,CACrE,YAC+CC,EAC7C,CAD6C,YAAAA,EAE7C,GAAI,CAAC,KAAK,OAAO,YACf,MAAM,IAAI,MACR,2EACF,CAEJ,CAEQ,qBAAqBC,EAKE,CAC7B,OAAI,OAAOA,GAAS,UAAYA,IAAS,KAAa,GAEpD,OAAOA,EAAK,cAAiB,UAC7B,OAAOA,EAAK,OAAU,UACtB,OAAOA,EAAK,UAAa,UACzB,OAAOA,EAAK,kBAAqB,QAErC,CAEA,MAAM,qBACJC,EACAC,EAC4C,CAC5C,OAAO,MAAMC,EACV,QAA4B,CAC3B,OAAQ,MACR,IAAK,GAAG,KAAK,OAAO,sBAAsB,GAAG,oBAAoBF,CAAY,cAAcC,CAAS,GACpG,QAAS,CACP,CAACE,CAA4B,EAAG,kBAAkBC,EAAQ,OAAO,GACjE,CAACC,CAA0B,EAAG,KAAK,OAAO,WAC5C,CACF,CAAC,EACA,KAAMC,GACA,KAAK,qBAAqBA,EAAI,IAAI,EAMhCC,EAAMD,EAAI,IAAI,EALZE,EACL,IAAI,MACF,8FACF,CACF,CAEH,EACA,MAAM,IACLA,EACE,IAAI,MACF,mFACF,CACF,CACF,CACJ,CAEA,MAAM,uBACJC,EACAC,EACAT,EAC4C,CAC5C,OAAO,MAAMC,EACV,QAA4B,CAC3B,OAAQ,MACR,IAAK,GAAG,KAAK,OAAO,sBAAsB,GAAG,qCAAqCO,CAAO,IAAIC,CAAW,cAAcT,CAAS,GAC/H,QAAS,CACP,CAACE,CAA4B,EAAG,kBAAkBC,EAAQ,OAAO,GACjE,yBAA0B,KAAK,OAAO,WACxC,CACF,CAAC,EACA,KAAME,GACA,KAAK,qBAAqBA,EAAI,IAAI,EAMhCC,EAAMD,EAAI,IAAI,EALZE,EACL,IAAI,MACF,gGACF,CACF,CAEH,EACA,MAAM,IACLA,EACE,IAAI,MACF,qFACF,CACF,CACF,CACJ,CAEA,MAAM,aACJG,EAC6D,CAC7D,KAAM,CAAE,aAAAX,EAAc,UAAAC,EAAW,UAAAW,CAAU,EAAID,EAE/C,GAAI,CAACV,EACH,OAAOO,EACL,IAAI,MACF,wEACF,CACF,EAGF,IAAIK,EAEJ,GAAIb,EACFa,EAAkB,MAAM,KAAK,qBAC3Bb,EACAC,CACF,UACSW,GAAW,SAAWA,GAAW,YAC1CC,EAAkB,MAAM,KAAK,uBAC3BD,EAAU,QACVA,EAAU,YACVX,CACF,MAEA,QAAOO,EACL,IAAI,MACF,0GACF,CACF,EAGF,OAAOK,EAAgB,MAAOC,GAAc,CAC1C,MAAMC,EAAaC,EAAmBF,EAAU,gBAAgB,EAChE,OAAKC,EAOER,EAAM,CACX,WAAAQ,EACA,aAAcD,EAAU,aACxB,MAAOA,EAAU,MACjB,SAAUA,EAAU,QACtB,CAAC,EAXQN,EACL,IAAI,MACF,qFACF,CACF,CAQJ,CAAC,CACH,CACF,EA5IaX,EAANoB,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAY,MAAM,IAFjBxB",
6
- "names": ["hexaStringToBuffer", "axios", "inject", "injectable", "Left", "Right", "configTypes", "LEDGER_CLIENT_VERSION_HEADER", "LEDGER_ORIGIN_TOKEN_HEADER", "PACKAGE", "HttpSolanaOwnerInfoDataSource", "config", "data", "tokenAddress", "challenge", "axios", "LEDGER_CLIENT_VERSION_HEADER", "PACKAGE", "LEDGER_ORIGIN_TOKEN_HEADER", "res", "Right", "Left", "address", "mintAddress", "context", "createATA", "ownerInfoResult", "ownerInfo", "descriptor", "hexaStringToBuffer", "__decorateClass", "injectable", "__decorateParam", "inject", "configTypes"]
4
+ "sourcesContent": ["import { hexaStringToBuffer } from \"@ledgerhq/device-management-kit\";\nimport axios from \"axios\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport type { ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport {\n LEDGER_CLIENT_VERSION_HEADER,\n LEDGER_ORIGIN_TOKEN_HEADER,\n} from \"@/shared/constant/HttpHeaders\";\nimport {\n SolanaSPLOwnerInfo,\n type SolanaTransactionContext,\n} from \"@/solana/domain/solanaContextTypes\";\nimport PACKAGE from \"@root/package.json\";\n\nimport {\n HttpSolanaOwnerInfoDataSourceResult,\n SolanaDataSource,\n} from \"./SolanaDataSource\";\n\n@injectable()\nexport class HttpSolanaOwnerInfoDataSource implements SolanaDataSource {\n constructor(\n @inject(configTypes.Config) private readonly config: ContextModuleConfig,\n ) {\n if (!this.config.originToken) {\n throw new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: origin token is required\",\n );\n }\n }\n\n private isSolanaSPLOwnerInfo(data: {\n tokenAccount?: unknown;\n owner?: unknown;\n contract?: unknown;\n signedDescriptor?: unknown;\n }): data is SolanaSPLOwnerInfo {\n if (typeof data !== \"object\" || data === null) return false;\n return (\n typeof data.tokenAccount === \"string\" &&\n typeof data.owner === \"string\" &&\n typeof data.contract === \"string\" &&\n typeof data.signedDescriptor === \"string\"\n );\n }\n\n async fetchAddressMetadata(\n tokenAddress: string,\n challenge: string,\n ): Promise<Either<Error, SolanaSPLOwnerInfo>> {\n return await axios\n .request<SolanaSPLOwnerInfo>({\n method: \"GET\",\n url: `${this.config.metadataServiceDomain.url}/v2/solana/owner/${tokenAddress}?challenge=${challenge}`,\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n [LEDGER_ORIGIN_TOKEN_HEADER]: this.config.originToken,\n },\n })\n .then((res) => {\n if (!this.isSolanaSPLOwnerInfo(res.data))\n return Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid fetchAddressMetadata response shape\",\n ),\n );\n return Right(res.data);\n })\n .catch(() =>\n Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: Failed to fetch address metadata\",\n ),\n ),\n );\n }\n\n async computeAddressMetadata(\n address: string,\n mintAddress: string,\n challenge: string,\n ): Promise<Either<Error, SolanaSPLOwnerInfo>> {\n return await axios\n .request<SolanaSPLOwnerInfo>({\n method: \"GET\",\n url: `${this.config.metadataServiceDomain.url}/v2/solana/computed-token-account/${address}/${mintAddress}?challenge=${challenge}`,\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n \"X-Ledger-Client-Origin\": this.config.originToken,\n },\n })\n .then((res) => {\n if (!this.isSolanaSPLOwnerInfo(res.data))\n return Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid computeAddressMetadata response shape\",\n ),\n );\n return Right(res.data);\n })\n .catch(() =>\n Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: Failed to compute address metadata\",\n ),\n ),\n );\n }\n\n async getOwnerInfo(\n context: SolanaTransactionContext,\n ): Promise<Either<Error, HttpSolanaOwnerInfoDataSourceResult>> {\n const { tokenAddress, challenge, createATA } = context;\n\n if (!challenge) {\n return Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: challenge is required\",\n ),\n );\n }\n\n let ownerInfoResult: Either<Error, SolanaSPLOwnerInfo>;\n\n if (tokenAddress) {\n ownerInfoResult = await this.fetchAddressMetadata(\n tokenAddress,\n challenge,\n );\n } else if (createATA?.address && createATA?.mintAddress) {\n ownerInfoResult = await this.computeAddressMetadata(\n createATA.address,\n createATA.mintAddress,\n challenge,\n );\n } else {\n return Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: either tokenAddress or valid createATA must be provided\",\n ),\n );\n }\n\n return ownerInfoResult.chain((ownerInfo) => {\n const tlvDescriptor = hexaStringToBuffer(ownerInfo.signedDescriptor);\n if (!tlvDescriptor) {\n return Left(\n new Error(\n \"[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid base64 tlvDescriptor received\",\n ),\n );\n }\n return Right({\n tlvDescriptor,\n });\n });\n }\n}\n"],
5
+ "mappings": "iOAAA,OAAS,sBAAAA,MAA0B,kCACnC,OAAOC,MAAW,QAClB,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,YACnC,OAAiB,QAAAC,EAAM,SAAAC,MAAa,YAEpC,OAAS,eAAAC,MAAmB,0BAE5B,OACE,gCAAAC,EACA,8BAAAC,MACK,gCAKP,OAAOC,MAAa,qBAQb,IAAMC,EAAN,KAAgE,CACrE,YAC+CC,EAC7C,CAD6C,YAAAA,EAE7C,GAAI,CAAC,KAAK,OAAO,YACf,MAAM,IAAI,MACR,2EACF,CAEJ,CAEQ,qBAAqBC,EAKE,CAC7B,OAAI,OAAOA,GAAS,UAAYA,IAAS,KAAa,GAEpD,OAAOA,EAAK,cAAiB,UAC7B,OAAOA,EAAK,OAAU,UACtB,OAAOA,EAAK,UAAa,UACzB,OAAOA,EAAK,kBAAqB,QAErC,CAEA,MAAM,qBACJC,EACAC,EAC4C,CAC5C,OAAO,MAAMC,EACV,QAA4B,CAC3B,OAAQ,MACR,IAAK,GAAG,KAAK,OAAO,sBAAsB,GAAG,oBAAoBF,CAAY,cAAcC,CAAS,GACpG,QAAS,CACP,CAACE,CAA4B,EAAG,kBAAkBC,EAAQ,OAAO,GACjE,CAACC,CAA0B,EAAG,KAAK,OAAO,WAC5C,CACF,CAAC,EACA,KAAMC,GACA,KAAK,qBAAqBA,EAAI,IAAI,EAMhCC,EAAMD,EAAI,IAAI,EALZE,EACL,IAAI,MACF,8FACF,CACF,CAEH,EACA,MAAM,IACLA,EACE,IAAI,MACF,mFACF,CACF,CACF,CACJ,CAEA,MAAM,uBACJC,EACAC,EACAT,EAC4C,CAC5C,OAAO,MAAMC,EACV,QAA4B,CAC3B,OAAQ,MACR,IAAK,GAAG,KAAK,OAAO,sBAAsB,GAAG,qCAAqCO,CAAO,IAAIC,CAAW,cAAcT,CAAS,GAC/H,QAAS,CACP,CAACE,CAA4B,EAAG,kBAAkBC,EAAQ,OAAO,GACjE,yBAA0B,KAAK,OAAO,WACxC,CACF,CAAC,EACA,KAAME,GACA,KAAK,qBAAqBA,EAAI,IAAI,EAMhCC,EAAMD,EAAI,IAAI,EALZE,EACL,IAAI,MACF,gGACF,CACF,CAEH,EACA,MAAM,IACLA,EACE,IAAI,MACF,qFACF,CACF,CACF,CACJ,CAEA,MAAM,aACJG,EAC6D,CAC7D,KAAM,CAAE,aAAAX,EAAc,UAAAC,EAAW,UAAAW,CAAU,EAAID,EAE/C,GAAI,CAACV,EACH,OAAOO,EACL,IAAI,MACF,wEACF,CACF,EAGF,IAAIK,EAEJ,GAAIb,EACFa,EAAkB,MAAM,KAAK,qBAC3Bb,EACAC,CACF,UACSW,GAAW,SAAWA,GAAW,YAC1CC,EAAkB,MAAM,KAAK,uBAC3BD,EAAU,QACVA,EAAU,YACVX,CACF,MAEA,QAAOO,EACL,IAAI,MACF,0GACF,CACF,EAGF,OAAOK,EAAgB,MAAOC,GAAc,CAC1C,MAAMC,EAAgBC,EAAmBF,EAAU,gBAAgB,EACnE,OAAKC,EAOER,EAAM,CACX,cAAAQ,CACF,CAAC,EARQP,EACL,IAAI,MACF,wFACF,CACF,CAKJ,CAAC,CACH,CACF,EAzIaX,EAANoB,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAY,MAAM,IAFjBxB",
6
+ "names": ["hexaStringToBuffer", "axios", "inject", "injectable", "Left", "Right", "configTypes", "LEDGER_CLIENT_VERSION_HEADER", "LEDGER_ORIGIN_TOKEN_HEADER", "PACKAGE", "HttpSolanaOwnerInfoDataSource", "config", "data", "tokenAddress", "challenge", "axios", "LEDGER_CLIENT_VERSION_HEADER", "PACKAGE", "LEDGER_ORIGIN_TOKEN_HEADER", "res", "Right", "Left", "address", "mintAddress", "context", "createATA", "ownerInfoResult", "ownerInfo", "tlvDescriptor", "hexaStringToBuffer", "__decorateClass", "injectable", "__decorateParam", "inject", "configTypes"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{DeviceModelId as r,hexaStringToBuffer as l}from"@ledgerhq/device-management-kit";import s from"axios";import{Left as c}from"purify-ts";import{LEDGER_CLIENT_VERSION_HEADER as u}from"../../shared/constant/HttpHeaders";import{HttpSolanaOwnerInfoDataSource as n}from"../../solana/data/HttpSolanaOwnerInfoDataSource";import m from"../../../package.json";vi.mock("axios");function f(o){const d=new TextEncoder().encode(o);return Array.from(d).map(e=>e.toString(16).padStart(2,"0")).join("")}describe("HttpSolanaOwnerInfoDataSource",()=>{const o={metadataServiceDomain:{url:"https://some.doma.in"},originToken:"mock-origin-token"},i=f("mock-descriptor"),d={tokenAccount:"token-account",owner:"owner-address",contract:"contract-address",signedDescriptor:i};beforeEach(()=>{vi.resetAllMocks()}),it("should fetch address metadata via tokenAddress",async()=>{const e={deviceModelId:r.FLEX,tokenAddress:"some-token",challenge:"random",createATA:void 0};vi.spyOn(s,"request").mockResolvedValueOnce({data:d});const t=await new n(o).getOwnerInfo(e);expect(t.isRight()).toBe(!0),expect(t.extract()).toEqual({descriptor:l(i),tokenAccount:"token-account",owner:"owner-address",contract:"contract-address"})}),it("should compute address when tokenAddress is not provided",async()=>{const e={deviceModelId:r.FLEX,tokenAddress:void 0,challenge:"random",createATA:{address:"some-address",mintAddress:"some-mint"}};vi.spyOn(s,"request").mockResolvedValueOnce({data:d});const t=await new n(o).getOwnerInfo(e);expect(t.isRight()).toBe(!0),expect(t.extract().tokenAccount).toBe("token-account")}),it("should return an error if both tokenAddress and createATA are missing or invalid",async()=>{const e={deviceModelId:r.FLEX,tokenAddress:void 0,challenge:"random",createATA:void 0},t=await new n(o).getOwnerInfo(e);expect(t).toEqual(c(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: either tokenAddress or valid createATA must be provided")))}),it("should return an error if challenge is missing",async()=>{const e={deviceModelId:r.FLEX,tokenAddress:"some-token",challenge:void 0,createATA:void 0},t=await new n(o).getOwnerInfo(e);expect(t).toEqual(c(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: challenge is required")))}),it("should return an error if the descriptor is not valid base64",async()=>{vi.spyOn(s,"request").mockResolvedValueOnce({data:{...d,signedDescriptor:"!!!not-valid-base64!!!"}});const e={deviceModelId:r.FLEX,tokenAddress:"some-token",challenge:"random",createATA:void 0},t=await new n(o).getOwnerInfo(e);expect(t).toEqual(c(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid base64 descriptor received")))}),it("should return an error if the metadata request fails",async()=>{vi.spyOn(s,"request").mockRejectedValueOnce(new Error("Network error"));const e={deviceModelId:r.FLEX,tokenAddress:"some-token",challenge:"random",createATA:void 0},t=await new n(o).getOwnerInfo(e);expect(t).toEqual(c(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: Failed to fetch address metadata")))}),it("should return an error if axios request return wrong shape for fetchAddressMetadata",async()=>{vi.spyOn(s,"request").mockResolvedValueOnce({data:{wrong:"field"}});const e={deviceModelId:r.FLEX,tokenAddress:"some-token",challenge:"random",createATA:void 0},t=await new n(o).getOwnerInfo(e);expect(t).toEqual(c(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid fetchAddressMetadata response shape")))}),it("should return an error if axios request return wrong shape for computeAddressMetadata",async()=>{vi.spyOn(s,"request").mockResolvedValueOnce({data:{wrong:"field"}});const e={deviceModelId:r.FLEX,tokenAddress:void 0,challenge:"random",createATA:{address:"some-address",mintAddress:"some-mint"}},t=await new n(o).getOwnerInfo(e);expect(t).toEqual(c(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid computeAddressMetadata response shape")))}),it("should throw if originToken is missing",()=>{expect(()=>{new n({...o,originToken:void 0})}).toThrow("[ContextModule] - HttpSolanaOwnerInfoDataSource: origin token is required")}),it("should call axios with correct headers",async()=>{const e={deviceModelId:r.FLEX,tokenAddress:"some-token",challenge:"random",createATA:void 0},a=vi.spyOn(s,"request").mockResolvedValueOnce({data:d});await new n(o).getOwnerInfo(e),expect(a).toHaveBeenCalledWith(expect.objectContaining({headers:{[u]:`context-module/${m.version}`,"X-Ledger-Client-Origin":o.originToken}}))})});
1
+ import{DeviceModelId as r,hexaStringToBuffer as l}from"@ledgerhq/device-management-kit";import s from"axios";import{Left as d}from"purify-ts";import{LEDGER_CLIENT_VERSION_HEADER as u}from"../../shared/constant/HttpHeaders";import{HttpSolanaOwnerInfoDataSource as n}from"../../solana/data/HttpSolanaOwnerInfoDataSource";import f from"../../../package.json";vi.mock("axios");function m(o){const c=new TextEncoder().encode(o);return Array.from(c).map(e=>e.toString(16).padStart(2,"0")).join("")}describe("HttpSolanaOwnerInfoDataSource",()=>{const o={metadataServiceDomain:{url:"https://some.doma.in"},originToken:"mock-origin-token"},i=m("mock-descriptor"),c={tokenAccount:"token-account",owner:"owner-address",contract:"contract-address",signedDescriptor:i};beforeEach(()=>{vi.resetAllMocks()}),it("should fetch address metadata via tokenAddress",async()=>{const e={deviceModelId:r.FLEX,tokenAddress:"some-token",challenge:"random",createATA:void 0};vi.spyOn(s,"request").mockResolvedValueOnce({data:c});const t=await new n(o).getOwnerInfo(e);expect(t.isRight()).toBe(!0),expect(t.extract()).toEqual({tlvDescriptor:l(i)})}),it("should return an error if both tokenAddress and createATA are missing or invalid",async()=>{const e={deviceModelId:r.FLEX,tokenAddress:void 0,challenge:"random",createATA:void 0},t=await new n(o).getOwnerInfo(e);expect(t).toEqual(d(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: either tokenAddress or valid createATA must be provided")))}),it("should return an error if challenge is missing",async()=>{const e={deviceModelId:r.FLEX,tokenAddress:"some-token",challenge:void 0,createATA:void 0},t=await new n(o).getOwnerInfo(e);expect(t).toEqual(d(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: challenge is required")))}),it("should return an error if the descriptor is not valid base64",async()=>{vi.spyOn(s,"request").mockResolvedValueOnce({data:{...c,signedDescriptor:"!!!not-valid-base64!!!"}});const e={deviceModelId:r.FLEX,tokenAddress:"some-token",challenge:"random",createATA:void 0},t=await new n(o).getOwnerInfo(e);expect(t).toEqual(d(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid base64 tlvDescriptor received")))}),it("should return an error if the metadata request fails",async()=>{vi.spyOn(s,"request").mockRejectedValueOnce(new Error("Network error"));const e={deviceModelId:r.FLEX,tokenAddress:"some-token",challenge:"random",createATA:void 0},t=await new n(o).getOwnerInfo(e);expect(t).toEqual(d(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: Failed to fetch address metadata")))}),it("should return an error if axios request return wrong shape for fetchAddressMetadata",async()=>{vi.spyOn(s,"request").mockResolvedValueOnce({data:{wrong:"field"}});const e={deviceModelId:r.FLEX,tokenAddress:"some-token",challenge:"random",createATA:void 0},t=await new n(o).getOwnerInfo(e);expect(t).toEqual(d(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid fetchAddressMetadata response shape")))}),it("should return an error if axios request return wrong shape for computeAddressMetadata",async()=>{vi.spyOn(s,"request").mockResolvedValueOnce({data:{wrong:"field"}});const e={deviceModelId:r.FLEX,tokenAddress:void 0,challenge:"random",createATA:{address:"some-address",mintAddress:"some-mint"}},t=await new n(o).getOwnerInfo(e);expect(t).toEqual(d(new Error("[ContextModule] - HttpSolanaOwnerInfoDataSource: invalid computeAddressMetadata response shape")))}),it("should throw if originToken is missing",()=>{expect(()=>{new n({...o,originToken:void 0})}).toThrow("[ContextModule] - HttpSolanaOwnerInfoDataSource: origin token is required")}),it("should call axios with correct headers",async()=>{const e={deviceModelId:r.FLEX,tokenAddress:"some-token",challenge:"random",createATA:void 0},a=vi.spyOn(s,"request").mockResolvedValueOnce({data:c});await new n(o).getOwnerInfo(e),expect(a).toHaveBeenCalledWith(expect.objectContaining({headers:{[u]:`context-module/${f.version}`,"X-Ledger-Client-Origin":o.originToken}}))})});
2
2
  //# sourceMappingURL=HttpSolanaOwnerInfoDataSource.test.js.map
@@ -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": ["DeviceModelId", "hexaStringToBuffer", "axios", "Left", "LEDGER_CLIENT_VERSION_HEADER", "HttpSolanaOwnerInfoDataSource", "PACKAGE", "stringToHex", "str", "bytes", "byte", "config", "signedDescriptorHex", "responseData", "context", "result", "spy"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var f=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var s=(r,e,t,o)=>{for(var a=o>1?void 0:o?p(e,t):e,i=r.length-1,n;i>=0;i--)(n=r[i])&&(a=(o?n(e,t,a):n(a))||a);return o&&a&&f(e,t,a),a},m=(r,e)=>(t,o)=>e(t,o,r);import{inject as d,injectable as l}from"inversify";import{Left as S}from"purify-ts";import{pkiTypes as u}from"../../pki/di/pkiTypes";import{KeyUsage as y}from"../../pki/model/KeyUsage";import{solanaContextTypes as C}from"../../solana/di/solanaContextTypes";let c=class{constructor(e,t){this._certificateLoader=t;this._dataSource=e}_dataSource;async load(e){const t=await this._certificateLoader.loadCertificate({keyId:"domain_metadata_key",keyUsage:y.TrustedName,targetDevice:e.deviceModelId});return t?(await this._dataSource.getOwnerInfo(e)).map(({descriptor:o,tokenAccount:a,owner:i,contract:n})=>({descriptor:o,tokenAccount:a,owner:i,contract:n,certificate:t})):S(new Error("[ContextModule] - DefaultSolanaContextLoader: CAL certificate is undefined"))}};c=s([l(),m(0,d(C.SolanaDataSource)),m(1,d(u.PkiCertificateLoader))],c);export{c as DefaultSolanaContextLoader};
1
+ var T=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var f=(i,t,a,o)=>{for(var r=o>1?void 0:o?y(t,a):t,n=i.length-1,s;n>=0;n--)(s=i[n])&&(r=(o?s(t,a,r):s(r))||r);return o&&r&&T(t,a,r),r},d=(i,t)=>(a,o)=>t(a,o,i);import{inject as m,injectable as k}from"inversify";import{Left as C}from"purify-ts";import{pkiTypes as _}from"../../pki/di/pkiTypes";import{KeyUsage as P}from"../../pki/model/KeyUsage";import{SolanaContextTypes as p}from"../../shared/model/SolanaContextTypes";import{solanaContextTypes as v}from"../../solana/di/solanaContextTypes";import{solanaTokenTypes as x}from"../../solanaToken/di/solanaTokenTypes";let l=class{constructor(t,a,o){this._dataSource=t;this._certificateLoader=a;this._solanaTokenLoader=o}async load(t){const{deviceModelId:a}=t,o=await this._certificateLoader.loadCertificate({keyId:"domain_metadata_key",keyUsage:P.TrustedName,targetDevice:a});if(!o)return C(new Error("[ContextModule] DefaultSolanaContextLoader: trustedNamePKICertificate is missing"));const n=[{loader:this._solanaTokenLoader,expectedType:p.SOLANA_TOKEN}].map(({loader:e,expectedType:c})=>{if(e.canHandle(t,c))return e.loadField(t)}).filter(e=>e!==void 0),u=(await Promise.allSettled(n)).map(e=>e.status==="fulfilled"?e.value:void 0).filter(e=>e!==void 0).sort((e,c)=>{const L=e.type===p.SOLANA_TOKEN?0:1,S=c.type===p.SOLANA_TOKEN?0:1;return L-S});return(await this._dataSource.getOwnerInfo(t)).map(({tlvDescriptor:e})=>({trustedNamePKICertificate:o,tlvDescriptor:e,loadersResults:u}))}};l=f([k(),d(0,m(v.SolanaDataSource)),d(1,m(_.PkiCertificateLoader)),d(2,m(x.SolanaTokenContextLoader))],l);export{l as 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": "iOAAA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YACnC,OAAS,QAAAC,MAAY,YAErB,OAAS,YAAAC,MAAgB,oBAEzB,OAAS,YAAAC,MAAgB,uBAEzB,OAAS,sBAAAC,MAA0B,iCAS5B,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,SAAUC,EAAS,YACnB,aAAcF,EAAc,aAC9B,CAAC,EACD,OAAKC,GASG,MAAM,KAAK,YAAY,aAAaD,CAAa,GAAG,IAC1D,CAAC,CAAE,WAAAG,EAAY,aAAAC,EAAc,MAAAC,EAAO,SAAAC,CAAS,KAAO,CAClD,WAAAH,EACA,aAAAC,EACA,MAAAC,EACA,SAAAC,EACA,YAAAL,CACF,EACF,EAhBSM,EACL,IAAI,MACF,4EACF,CACF,CAaJ,CACF,EAxCaV,EAANW,EAAA,CADNC,EAAW,EAKPC,EAAA,EAAAC,EAAOC,EAAmB,gBAAgB,GAE1CF,EAAA,EAAAC,EAAOE,EAAS,oBAAoB,IAN5BhB",
6
- "names": ["inject", "injectable", "Left", "pkiTypes", "KeyUsage", "solanaContextTypes", "DefaultSolanaContextLoader", "dataSource", "_certificateLoader", "solanaContext", "certificate", "KeyUsage", "descriptor", "tokenAccount", "owner", "contract", "Left", "__decorateClass", "injectable", "__decorateParam", "inject", "solanaContextTypes", "pkiTypes"]
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": "iOAAA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YACnC,OAAS,QAAAC,MAAY,YAErB,OAAS,YAAAC,MAAgB,oBAEzB,OAAS,YAAAC,MAAgB,uBACzB,OAEE,sBAAAC,MACK,oCAEP,OAAS,sBAAAC,MAA0B,iCAGnC,OAAS,oBAAAC,MAAwB,oCAU1B,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,SAAUC,EAAS,YACnB,aAAcF,CAChB,CAAC,EAEH,GAAI,CAACC,EACH,OAAOE,EACL,IAAI,MACF,kFACF,CACF,EAgBF,MAAMC,EAbgB,CACpB,CACE,OAAQ,KAAK,mBACb,aAAcC,EAAmB,YACnC,CAOF,EAGG,IAAI,CAAC,CAAE,OAAAC,EAAQ,aAAAC,CAAa,IAAM,CACjC,GAAID,EAAO,UAAUP,EAAeQ,CAAY,EAC9C,OAAOD,EAAO,UAAUP,CAAa,CAGzC,CAAC,EACA,OAAQS,GAAkCA,IAAM,MAAS,EAItDC,GAFiB,MAAM,QAAQ,WAAWL,CAAc,GAG3D,IAAKM,GAAOA,EAAE,SAAW,YAAcA,EAAE,MAAQ,MAAU,EAC3D,OAAQC,GAAyBA,IAAM,MAAS,EAEhD,KAAK,CAACC,EAAGC,IAAM,CACd,MAAMC,EAAIF,EAAE,OAASP,EAAmB,aAAe,EAAI,EACrDU,EAAIF,EAAE,OAASR,EAAmB,aAAe,EAAI,EAC3D,OAAOS,EAAIC,CACb,CAAC,EAKH,OAFE,MAAM,KAAK,YAAY,aAAahB,CAAa,GAExB,IAAI,CAAC,CAAE,cAAAiB,CAAc,KAAO,CACrD,0BAAAf,EACA,cAAAe,EACA,eAAAP,CACF,EAAE,CACJ,CACF,EA3Ead,EAANsB,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAmB,gBAAgB,GAE1CF,EAAA,EAAAC,EAAOE,EAAS,oBAAoB,GAEpCH,EAAA,EAAAC,EAAOG,EAAiB,wBAAwB,IANxC5B",
6
+ "names": ["inject", "injectable", "Left", "pkiTypes", "KeyUsage", "SolanaContextTypes", "solanaContextTypes", "solanaTokenTypes", "DefaultSolanaContextLoader", "_dataSource", "_certificateLoader", "_solanaTokenLoader", "solanaContext", "deviceModelId", "trustedNamePKICertificate", "KeyUsage", "Left", "loaderPromises", "SolanaContextTypes", "loader", "expectedType", "p", "loadersResults", "r", "v", "a", "b", "A", "B", "tlvDescriptor", "__decorateClass", "injectable", "__decorateParam", "inject", "solanaContextTypes", "pkiTypes", "solanaTokenTypes"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{DeviceModelId as i}from"@ledgerhq/device-management-kit";import{Left as d,Right as l}from"purify-ts";import{KeyUsage as s}from"../../pki/model/KeyUsage";import{DefaultSolanaContextLoader as f}from"../../solana/domain/DefaultSolanaContextLoader";describe("DefaultSolanaContextLoader",()=>{let a,e,r;const o={deviceModelId:i.FLEX,tokenAddress:"token-addr",challenge:"challenge-str"},n={descriptor:"cert-desc",signature:"cert-sig",keyUsageNumber:0,payload:new Uint8Array};beforeEach(()=>{vi.resetAllMocks(),a={getOwnerInfo:vi.fn()},e={loadCertificate:vi.fn()},r=new f(a,e)}),it("should call dataSource.getSolanaContext and certificateLoader.loadCertificate with correct args",async()=>{e.loadCertificate.mockResolvedValue(n),a.getOwnerInfo.mockResolvedValue(l({descriptor:Buffer.from("d"),tokenAccount:"tkn",owner:"own",contract:"ctr"})),await r.load(o),expect(e.loadCertificate).toHaveBeenCalledWith({keyId:"domain_metadata_key",keyUsage:s.TrustedName,targetDevice:o.deviceModelId}),expect(a.getOwnerInfo).toHaveBeenCalledWith(o)}),it("should return Left if certificate loader returns undefined",async()=>{e.loadCertificate.mockResolvedValue(void 0);const t=await r.load(o);expect(t).toEqual(d(new Error("[ContextModule] - DefaultSolanaContextLoader: CAL certificate is undefined")))}),it("should propagate Left from dataSource.getSolanaContext",async()=>{e.loadCertificate.mockResolvedValue(n);const t=new Error("DS failure");a.getOwnerInfo.mockResolvedValue(d(t));const c=await r.load(o);expect(c).toEqual(d(t))}),it("should return Right with merged data and certificate on success",async()=>{e.loadCertificate.mockResolvedValue(n);const t={descriptor:Buffer.from("dd"),tokenAccount:"tokenAcct",owner:"ownerAddr",contract:"contractAddr",certificate:n};a.getOwnerInfo.mockResolvedValue(l(t));const c=await r.load(o);expect(c.isRight()).toBe(!0),expect(c.extract()).toEqual({...t,certificate:n})})});
1
+ import{DeviceModelId as y}from"@ledgerhq/device-management-kit";import{Left as m,Right as f}from"purify-ts";import{beforeEach as g,describe as p,expect as o,it as s,vi as t}from"vitest";import{KeyUsage as T}from"../../pki/model/KeyUsage";import{SolanaContextTypes as d}from"../../shared/model/SolanaContextTypes";import{SolanaTokenContextLoader as I}from"../../solanaToken/domain/SolanaTokenContextLoader";p("SolanaTokenContextLoader",()=>{let l,i;const c=new Uint8Array([240,202,204,26]),n={descriptor:{data:{symbol:"SOL",name:"Solana",decimals:9},signatures:{prod:"prod-sig",test:"test-sig"}}},k={tokenInternalId:"token-1",deviceModelId:y.FLEX};g(()=>{t.restoreAllMocks(),l={getTokenInfosPayload:t.fn()},i={loadCertificate:t.fn()}});const r=e=>{const a={cal:{mode:e}};return new I(l,a,i)};p("canHandle",()=>{s("returns true when tokenInternalId is provided",()=>{const e=r("prod");o(e.canHandle({tokenInternalId:"abc123"},d.SOLANA_TOKEN)).toBe(!0)}),s("returns false when tokenInternalId is missing or falsy",()=>{const e=r("prod");o(e.canHandle({tokenInternalId:""},d.SOLANA_TOKEN)).toBe(!1),o(e.canHandle({tokenInternalId:void 0},d.SOLANA_TOKEN)).toBe(!1),o(e.canHandle({},d.SOLANA_TOKEN)).toBe(!1)})}),p("loadField",()=>{s("returns an error when datasource returns Left(error) and still fetched certificate beforehand",async()=>{const e=r("prod"),a=new Error("datasource failed");t.spyOn(l,"getTokenInfosPayload").mockResolvedValue(m(a)),t.spyOn(i,"loadCertificate").mockResolvedValue({keyUsageNumber:0,payload:c});const u=await e.loadField(k);o(l.getTokenInfosPayload).toHaveBeenCalledWith({tokenInternalId:"token-1"}),o(i.loadCertificate).toHaveBeenCalledWith({keyId:"token_metadata_key",keyUsage:T.CoinMeta,targetDevice:k.deviceModelId}),o(u).toEqual({type:d.ERROR,error:a})}),s("returns SOLANA_TOKEN with prod signature by default (falsy mode), and includes certificate",async()=>{const e=r("");t.spyOn(l,"getTokenInfosPayload").mockResolvedValue(f(n)),t.spyOn(i,"loadCertificate").mockResolvedValue({keyUsageNumber:0,payload:c});const a=await e.loadField({...k,tokenInternalId:"token-2"});o(a).toEqual({type:d.SOLANA_TOKEN,payload:{solanaTokenDescriptor:{data:n.descriptor.data,signature:"prod-sig"}},certificate:{keyUsageNumber:0,payload:c}})}),s("returns SOLANA_TOKEN with signature matching config.cal.mode",async()=>{const e=r("test");t.spyOn(l,"getTokenInfosPayload").mockResolvedValue(f(n)),t.spyOn(i,"loadCertificate").mockResolvedValue({keyUsageNumber:1,payload:c});const a=await e.loadField({...k,tokenInternalId:"token-3"});o(a).toEqual({type:d.SOLANA_TOKEN,payload:{solanaTokenDescriptor:{data:n.descriptor.data,signature:"test-sig"}},certificate:{keyUsageNumber:1,payload:c}})}),s("works even if certificate loader returns undefined (certificate omitted)",async()=>{const e=r("prod");t.spyOn(l,"getTokenInfosPayload").mockResolvedValue(f(n)),t.spyOn(i,"loadCertificate").mockResolvedValue(void 0);const a=await e.loadField(k);o(a).toEqual({type:d.SOLANA_TOKEN,payload:{solanaTokenDescriptor:{data:n.descriptor.data,signature:"prod-sig"}},certificate:void 0})})}),p("pluckTokenData (private)",()=>{s("picks the signature for the configured mode",()=>{const e=r("test"),u=e.pluckTokenData.bind(e)(n);o(u).toEqual({solanaTokenDescriptor:{data:n.descriptor.data,signature:"test-sig"}})}),s("falls back to 'prod' when config.cal.mode is falsy",()=>{const a=r(void 0).pluckTokenData(n);o(a).toEqual({solanaTokenDescriptor:{data:n.descriptor.data,signature:"prod-sig"}})})})});
2
2
  //# sourceMappingURL=DefaultSolanaContextLoader.test.js.map