@ledgerhq/context-module 0.0.0-legacy-speculos-datasource-20250820121907 → 0.0.0-lifi-with-logger-20251208144248

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 (871) 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 +3 -3
  6. package/lib/cjs/src/ContextModuleBuilder.test.js +1 -1
  7. package/lib/cjs/src/ContextModuleBuilder.test.js.map +3 -3
  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/calldata/data/CalldataDescriptorDataSource.js +2 -0
  13. package/lib/cjs/src/calldata/data/CalldataDescriptorDataSource.js.map +7 -0
  14. package/lib/cjs/src/calldata/data/HttpCalldataDescriptorDataSource.js +2 -0
  15. package/lib/cjs/src/calldata/data/HttpCalldataDescriptorDataSource.js.map +7 -0
  16. package/lib/cjs/src/calldata/data/HttpCalldataDescriptorDataSource.test.js +2 -0
  17. package/lib/cjs/src/calldata/data/HttpCalldataDescriptorDataSource.test.js.map +7 -0
  18. package/lib/cjs/src/calldata/data/dto/CalldataDto.js +2 -0
  19. package/lib/cjs/src/calldata/data/dto/CalldataDto.js.map +7 -0
  20. package/lib/cjs/src/calldata/di/calldataModuleFactory.js +2 -0
  21. package/lib/cjs/src/calldata/di/calldataModuleFactory.js.map +7 -0
  22. package/lib/cjs/src/calldata/di/calldataTypes.js +2 -0
  23. package/lib/cjs/src/calldata/di/calldataTypes.js.map +7 -0
  24. package/lib/cjs/src/calldata/domain/CalldataContextLoader.js +2 -0
  25. package/lib/cjs/src/calldata/domain/CalldataContextLoader.js.map +7 -0
  26. package/lib/cjs/src/calldata/domain/CalldataContextLoader.test.js +2 -0
  27. package/lib/cjs/src/calldata/domain/CalldataContextLoader.test.js.map +7 -0
  28. package/lib/cjs/src/config/model/ContextModuleConfig.js +1 -1
  29. package/lib/cjs/src/config/model/ContextModuleConfig.js.map +1 -1
  30. package/lib/cjs/src/di.js +1 -1
  31. package/lib/cjs/src/di.js.map +3 -3
  32. package/lib/cjs/src/dynamic-network/data/DynamicNetworkDataSource.js +2 -0
  33. package/lib/cjs/src/dynamic-network/data/DynamicNetworkDataSource.js.map +7 -0
  34. package/lib/cjs/src/dynamic-network/data/HttpDynamicNetworkDataSource.js +2 -0
  35. package/lib/cjs/src/dynamic-network/data/HttpDynamicNetworkDataSource.js.map +7 -0
  36. package/lib/cjs/src/dynamic-network/data/HttpDynamicNetworkDataSource.test.js +2 -0
  37. package/lib/cjs/src/dynamic-network/data/HttpDynamicNetworkDataSource.test.js.map +7 -0
  38. package/lib/cjs/src/dynamic-network/data/dto/DynamicNetworkApiResponseDto.js +2 -0
  39. package/lib/cjs/src/dynamic-network/data/dto/DynamicNetworkApiResponseDto.js.map +7 -0
  40. package/lib/cjs/src/dynamic-network/di/dynamicNetworkModuleFactory.js +2 -0
  41. package/lib/cjs/src/dynamic-network/di/dynamicNetworkModuleFactory.js.map +7 -0
  42. package/lib/cjs/src/dynamic-network/di/dynamicNetworkTypes.js +2 -0
  43. package/lib/cjs/src/dynamic-network/di/dynamicNetworkTypes.js.map +7 -0
  44. package/lib/cjs/src/dynamic-network/domain/DynamicNetworkContextLoader.js +2 -0
  45. package/lib/cjs/src/dynamic-network/domain/DynamicNetworkContextLoader.js.map +7 -0
  46. package/lib/cjs/src/dynamic-network/domain/DynamicNetworkContextLoader.test.js +2 -0
  47. package/lib/cjs/src/dynamic-network/domain/DynamicNetworkContextLoader.test.js.map +7 -0
  48. package/lib/cjs/src/dynamic-network/model/DynamicNetworkConfiguration.js +2 -0
  49. package/lib/cjs/src/dynamic-network/model/DynamicNetworkConfiguration.js.map +7 -0
  50. package/lib/cjs/src/external-plugin/domain/ExternalPluginContextLoader.js +1 -1
  51. package/lib/cjs/src/external-plugin/domain/ExternalPluginContextLoader.js.map +3 -3
  52. package/lib/cjs/src/external-plugin/domain/ExternalPluginContextLoader.test.js +1 -1
  53. package/lib/cjs/src/external-plugin/domain/ExternalPluginContextLoader.test.js.map +3 -3
  54. package/lib/cjs/src/index.js +1 -1
  55. package/lib/cjs/src/index.js.map +2 -2
  56. package/lib/cjs/src/nft/data/HttpNftDataSource.js +1 -1
  57. package/lib/cjs/src/nft/data/HttpNftDataSource.js.map +2 -2
  58. package/lib/cjs/src/nft/data/HttpNftDataSource.test.js +1 -1
  59. package/lib/cjs/src/nft/data/HttpNftDataSource.test.js.map +2 -2
  60. package/lib/cjs/src/nft/di/nftModuleFactory.js +1 -1
  61. package/lib/cjs/src/nft/di/nftModuleFactory.js.map +3 -3
  62. package/lib/cjs/src/nft/di/nftTypes.js +1 -1
  63. package/lib/cjs/src/nft/di/nftTypes.js.map +2 -2
  64. package/lib/cjs/src/nft/domain/NftContextFieldLoader.js +2 -0
  65. package/lib/cjs/src/nft/domain/NftContextFieldLoader.js.map +7 -0
  66. package/lib/cjs/src/nft/domain/NftContextFieldLoader.test.js +2 -0
  67. package/lib/cjs/src/nft/domain/NftContextFieldLoader.test.js.map +7 -0
  68. package/lib/cjs/src/nft/domain/NftContextLoader.js +1 -1
  69. package/lib/cjs/src/nft/domain/NftContextLoader.js.map +3 -3
  70. package/lib/cjs/src/nft/domain/NftContextLoader.test.js +1 -1
  71. package/lib/cjs/src/nft/domain/NftContextLoader.test.js.map +3 -3
  72. package/lib/cjs/src/pki/domain/DefaultPkiCertificateLoader.js +1 -1
  73. package/lib/cjs/src/pki/domain/DefaultPkiCertificateLoader.js.map +3 -3
  74. package/lib/cjs/src/pki/domain/DefaultPkiCertificateLoader.test.js +1 -1
  75. package/lib/cjs/src/pki/domain/DefaultPkiCertificateLoader.test.js.map +3 -3
  76. package/lib/cjs/src/pki/model/KeyUsage.js +1 -1
  77. package/lib/cjs/src/pki/model/KeyUsage.js.map +2 -2
  78. package/lib/cjs/src/pki/model/PkiCertificateInfo.js +1 -1
  79. package/lib/cjs/src/pki/model/PkiCertificateInfo.js.map +1 -1
  80. package/lib/cjs/src/proxy/data/HttpProxyDataSource.js +2 -0
  81. package/lib/cjs/src/proxy/data/HttpProxyDataSource.js.map +7 -0
  82. package/lib/cjs/src/proxy/data/HttpProxyDataSource.test.js +2 -0
  83. package/lib/cjs/src/proxy/data/HttpProxyDataSource.test.js.map +7 -0
  84. package/lib/cjs/src/proxy/data/HttpSafeProxyDataSource.js +2 -0
  85. package/lib/cjs/src/proxy/data/HttpSafeProxyDataSource.js.map +7 -0
  86. package/lib/cjs/src/proxy/data/HttpSafeProxyDataSource.test.js +2 -0
  87. package/lib/cjs/src/proxy/data/HttpSafeProxyDataSource.test.js.map +7 -0
  88. package/lib/cjs/src/proxy/data/ProxyDataSource.js +2 -0
  89. package/lib/cjs/src/proxy/data/ProxyDataSource.js.map +7 -0
  90. package/lib/cjs/src/proxy/data/dto/ProxyDelegateCallDto.js +2 -0
  91. package/lib/cjs/src/proxy/data/dto/ProxyDelegateCallDto.js.map +7 -0
  92. package/lib/cjs/src/{transaction → proxy}/data/dto/ProxyImplementationAddressDto.js.map +1 -1
  93. package/lib/cjs/src/proxy/data/dto/SafeProxyImplementationAddressDto.js +2 -0
  94. package/lib/cjs/src/proxy/data/dto/SafeProxyImplementationAddressDto.js.map +7 -0
  95. package/lib/cjs/src/proxy/di/proxyModuleFactory.js +2 -0
  96. package/lib/cjs/src/proxy/di/proxyModuleFactory.js.map +7 -0
  97. package/lib/cjs/src/proxy/di/proxyModuleFactory.test.js +2 -0
  98. package/lib/cjs/src/proxy/di/proxyModuleFactory.test.js.map +7 -0
  99. package/lib/cjs/src/proxy/di/proxyTypes.js +2 -0
  100. package/lib/cjs/src/proxy/di/proxyTypes.js.map +7 -0
  101. package/lib/cjs/src/proxy/domain/ProxyContextFieldLoader.js +2 -0
  102. package/lib/cjs/src/proxy/domain/ProxyContextFieldLoader.js.map +7 -0
  103. package/lib/cjs/src/proxy/domain/ProxyContextFieldLoader.test.js +2 -0
  104. package/lib/cjs/src/proxy/domain/ProxyContextFieldLoader.test.js.map +7 -0
  105. package/lib/cjs/src/proxy/model/ProxyDelegateCall.js +2 -0
  106. package/lib/cjs/src/proxy/model/ProxyDelegateCall.js.map +7 -0
  107. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.js +2 -0
  108. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.js.map +7 -0
  109. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.test.js +2 -0
  110. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.test.js.map +7 -0
  111. package/lib/cjs/src/safe/data/SafeAccountDataSource.js +2 -0
  112. package/lib/cjs/src/safe/data/SafeAccountDataSource.js.map +7 -0
  113. package/lib/cjs/src/safe/data/dto/SafeAccountDto.js +2 -0
  114. package/lib/cjs/src/safe/data/dto/SafeAccountDto.js.map +7 -0
  115. package/lib/cjs/src/safe/di/safeModuleFactory.js +2 -0
  116. package/lib/cjs/src/safe/di/safeModuleFactory.js.map +7 -0
  117. package/lib/cjs/src/safe/di/safeModuleFactory.test.js +2 -0
  118. package/lib/cjs/src/safe/di/safeModuleFactory.test.js.map +7 -0
  119. package/lib/cjs/src/safe/di/safeTypes.js +2 -0
  120. package/lib/cjs/src/safe/di/safeTypes.js.map +7 -0
  121. package/lib/cjs/src/safe/domain/SafeAddressLoader.js +2 -0
  122. package/lib/cjs/src/safe/domain/SafeAddressLoader.js.map +7 -0
  123. package/lib/cjs/src/safe/domain/SafeAddressLoader.test.js +2 -0
  124. package/lib/cjs/src/safe/domain/SafeAddressLoader.test.js.map +7 -0
  125. package/lib/cjs/src/shared/domain/ContextFieldLoader.js +2 -0
  126. package/lib/cjs/src/shared/domain/ContextFieldLoader.js.map +7 -0
  127. package/lib/cjs/src/shared/domain/ContextLoader.js +1 -1
  128. package/lib/cjs/src/shared/domain/ContextLoader.js.map +1 -1
  129. package/lib/cjs/src/shared/model/ClearSignContext.js +1 -1
  130. package/lib/cjs/src/shared/model/ClearSignContext.js.map +3 -3
  131. package/lib/cjs/src/shared/model/SolanaContextTypes.js +2 -0
  132. package/lib/cjs/src/shared/model/SolanaContextTypes.js.map +7 -0
  133. package/lib/cjs/src/shared/model/SolanaTransactionContext.js +1 -1
  134. package/lib/cjs/src/shared/model/SolanaTransactionContext.js.map +1 -1
  135. package/lib/cjs/src/shared/model/TransactionSubset.js +1 -1
  136. package/lib/cjs/src/shared/model/TransactionSubset.js.map +1 -1
  137. package/lib/cjs/src/shared/model/TypedDataClearSignContext.js +1 -1
  138. package/lib/cjs/src/shared/model/TypedDataClearSignContext.js.map +3 -3
  139. package/lib/cjs/src/shared/model/TypedDataContext.js +1 -1
  140. package/lib/cjs/src/shared/model/TypedDataContext.js.map +1 -1
  141. package/lib/cjs/src/shared/utils/KeyUsageMapper.js +1 -1
  142. package/lib/cjs/src/shared/utils/KeyUsageMapper.js.map +2 -2
  143. package/lib/cjs/src/shared/utils/KeyUsageMapper.test.js +1 -1
  144. package/lib/cjs/src/shared/utils/KeyUsageMapper.test.js.map +2 -2
  145. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.js +1 -1
  146. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.js.map +3 -3
  147. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js +1 -1
  148. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js.map +2 -2
  149. package/lib/cjs/src/solana/data/SolanaDataSource.js +1 -1
  150. package/lib/cjs/src/solana/data/SolanaDataSource.js.map +1 -1
  151. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.js +1 -1
  152. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.js.map +3 -3
  153. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.test.js +1 -1
  154. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.test.js.map +3 -3
  155. package/lib/cjs/src/solana/domain/solanaContextTypes.js +1 -1
  156. package/lib/cjs/src/solana/domain/solanaContextTypes.js.map +1 -1
  157. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.js +2 -0
  158. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.js.map +7 -0
  159. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js +2 -0
  160. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js.map +7 -0
  161. package/lib/cjs/src/solanaLifi/data/SolanaLifiDataSource.js +2 -0
  162. package/lib/cjs/src/solanaLifi/data/SolanaLifiDataSource.js.map +7 -0
  163. package/lib/cjs/src/solanaLifi/di/lifiModuleFactory.js +2 -0
  164. package/lib/cjs/src/solanaLifi/di/lifiModuleFactory.js.map +7 -0
  165. package/lib/cjs/src/solanaLifi/di/solanaLifiTypes.js +2 -0
  166. package/lib/cjs/src/solanaLifi/di/solanaLifiTypes.js.map +7 -0
  167. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.js +2 -0
  168. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.js.map +7 -0
  169. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.test.js +2 -0
  170. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.test.js.map +7 -0
  171. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.js +2 -0
  172. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.js.map +7 -0
  173. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.test.js +7 -0
  174. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.test.js.map +7 -0
  175. package/lib/cjs/src/solanaToken/data/SolanaTokenDataSource.js +2 -0
  176. package/lib/cjs/src/solanaToken/data/SolanaTokenDataSource.js.map +7 -0
  177. package/lib/cjs/src/solanaToken/di/solanaTokenTypes.js +2 -0
  178. package/lib/cjs/src/solanaToken/di/solanaTokenTypes.js.map +7 -0
  179. package/lib/cjs/src/solanaToken/di/tokenModuleFactory.js +2 -0
  180. package/lib/cjs/src/solanaToken/di/tokenModuleFactory.js.map +7 -0
  181. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.js +2 -0
  182. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.js.map +7 -0
  183. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.test.js +2 -0
  184. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.test.js.map +7 -0
  185. package/lib/cjs/src/token/data/HttpTokenDataSource.js +1 -1
  186. package/lib/cjs/src/token/data/HttpTokenDataSource.js.map +2 -2
  187. package/lib/cjs/src/token/data/HttpTokenDataSource.test.js +1 -1
  188. package/lib/cjs/src/token/data/HttpTokenDataSource.test.js.map +2 -2
  189. package/lib/cjs/src/token/di/tokenModuleFactory.js +1 -1
  190. package/lib/cjs/src/token/di/tokenModuleFactory.js.map +3 -3
  191. package/lib/cjs/src/token/di/tokenTypes.js +1 -1
  192. package/lib/cjs/src/token/di/tokenTypes.js.map +2 -2
  193. package/lib/cjs/src/token/domain/TokenContextFieldLoader.js +2 -0
  194. package/lib/cjs/src/token/domain/TokenContextFieldLoader.js.map +7 -0
  195. package/lib/cjs/src/token/domain/TokenContextFieldLoader.test.js +2 -0
  196. package/lib/cjs/src/token/domain/TokenContextFieldLoader.test.js.map +7 -0
  197. package/lib/cjs/src/token/domain/TokenContextLoader.js +1 -1
  198. package/lib/cjs/src/token/domain/TokenContextLoader.js.map +3 -3
  199. package/lib/cjs/src/token/domain/TokenContextLoader.test.js +1 -1
  200. package/lib/cjs/src/token/domain/TokenContextLoader.test.js.map +3 -3
  201. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.js +2 -0
  202. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.js.map +7 -0
  203. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.test.js +2 -0
  204. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.test.js.map +7 -0
  205. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.js +2 -0
  206. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.js.map +7 -0
  207. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js +2 -0
  208. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js.map +7 -0
  209. package/lib/cjs/src/transaction-check/data/TransactionCheckDataSource.js +2 -0
  210. package/lib/cjs/src/transaction-check/data/TransactionCheckDataSource.js.map +7 -0
  211. package/lib/cjs/src/transaction-check/data/TypedDataCheckDataSource.js +2 -0
  212. package/lib/cjs/src/transaction-check/data/TypedDataCheckDataSource.js.map +7 -0
  213. package/lib/cjs/src/transaction-check/data/dto/TransactionCheckDto.js +2 -0
  214. package/lib/cjs/src/transaction-check/data/dto/TransactionCheckDto.js.map +7 -0
  215. package/lib/cjs/src/transaction-check/data/dto/TypedDataCheckDto.js +2 -0
  216. package/lib/cjs/src/transaction-check/data/dto/TypedDataCheckDto.js.map +7 -0
  217. package/lib/cjs/src/transaction-check/di/transactionCheckModuleFactory.js +2 -0
  218. package/lib/cjs/src/transaction-check/di/transactionCheckModuleFactory.js.map +7 -0
  219. package/lib/cjs/src/transaction-check/di/transactionCheckTypes.js +2 -0
  220. package/lib/cjs/src/transaction-check/di/transactionCheckTypes.js.map +7 -0
  221. package/lib/cjs/src/transaction-check/domain/TransactionCheckContextLoader.js +2 -0
  222. package/lib/cjs/src/transaction-check/domain/TransactionCheckContextLoader.js.map +7 -0
  223. package/lib/cjs/src/transaction-check/domain/TransactionCheckContextLoader.test.js +2 -0
  224. package/lib/cjs/src/transaction-check/domain/TransactionCheckContextLoader.test.js.map +7 -0
  225. package/lib/cjs/src/transaction-check/domain/TypedDataCheckContextLoader.js +2 -0
  226. package/lib/cjs/src/transaction-check/domain/TypedDataCheckContextLoader.js.map +7 -0
  227. package/lib/cjs/src/transaction-check/domain/TypedDataCheckContextLoader.test.js +2 -0
  228. package/lib/cjs/src/transaction-check/domain/TypedDataCheckContextLoader.test.js.map +7 -0
  229. package/lib/cjs/src/trusted-name/data/HttpTrustedNameDataSource.js +1 -1
  230. package/lib/cjs/src/trusted-name/data/HttpTrustedNameDataSource.js.map +3 -3
  231. package/lib/cjs/src/trusted-name/data/HttpTrustedNameDataSource.test.js +1 -1
  232. package/lib/cjs/src/trusted-name/data/HttpTrustedNameDataSource.test.js.map +2 -2
  233. package/lib/cjs/src/trusted-name/data/TrustedNameDataSource.js +1 -1
  234. package/lib/cjs/src/trusted-name/data/TrustedNameDataSource.js.map +1 -1
  235. package/lib/cjs/src/trusted-name/data/TrustedNameDto.js +1 -1
  236. package/lib/cjs/src/trusted-name/data/TrustedNameDto.js.map +1 -1
  237. package/lib/cjs/src/trusted-name/di/trustedNameModuleFactory.js +1 -1
  238. package/lib/cjs/src/trusted-name/di/trustedNameModuleFactory.js.map +3 -3
  239. package/lib/cjs/src/trusted-name/di/trustedNameTypes.js +1 -1
  240. package/lib/cjs/src/trusted-name/di/trustedNameTypes.js.map +2 -2
  241. package/lib/cjs/src/trusted-name/domain/TrustedNameContextFieldLoader.js +2 -0
  242. package/lib/cjs/src/trusted-name/domain/TrustedNameContextFieldLoader.js.map +7 -0
  243. package/lib/cjs/src/trusted-name/domain/TrustedNameContextFieldLoader.test.js +2 -0
  244. package/lib/cjs/src/trusted-name/domain/TrustedNameContextFieldLoader.test.js.map +7 -0
  245. package/lib/cjs/src/trusted-name/domain/TrustedNameContextLoader.js +1 -1
  246. package/lib/cjs/src/trusted-name/domain/TrustedNameContextLoader.js.map +3 -3
  247. package/lib/cjs/src/trusted-name/domain/TrustedNameContextLoader.test.js +1 -1
  248. package/lib/cjs/src/trusted-name/domain/TrustedNameContextLoader.test.js.map +3 -3
  249. package/lib/cjs/src/typed-data/data/FiltersDto.js +1 -1
  250. package/lib/cjs/src/typed-data/data/FiltersDto.js.map +1 -1
  251. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.js +1 -1
  252. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.js.map +3 -3
  253. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.test.js +1 -1
  254. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.test.js.map +3 -3
  255. package/lib/cjs/src/typed-data/data/TypedDataDataSource.js +1 -1
  256. package/lib/cjs/src/typed-data/data/TypedDataDataSource.js.map +1 -1
  257. package/lib/cjs/src/typed-data/domain/DefaultTypedDataContextLoader.js +1 -1
  258. package/lib/cjs/src/typed-data/domain/DefaultTypedDataContextLoader.js.map +3 -3
  259. package/lib/cjs/src/typed-data/domain/DefaultTypedDataContextLoader.test.js +1 -1
  260. package/lib/cjs/src/typed-data/domain/DefaultTypedDataContextLoader.test.js.map +3 -3
  261. package/lib/cjs/src/uniswap/constants/uniswap.js +1 -1
  262. package/lib/cjs/src/uniswap/constants/uniswap.js.map +3 -3
  263. package/lib/cjs/src/uniswap/domain/UniswapContextLoader.js +1 -1
  264. package/lib/cjs/src/uniswap/domain/UniswapContextLoader.js.map +3 -3
  265. package/lib/cjs/src/uniswap/domain/UniswapContextLoader.test.js +1 -1
  266. package/lib/cjs/src/uniswap/domain/UniswapContextLoader.test.js.map +3 -3
  267. package/lib/esm/package.json +38 -34
  268. package/lib/esm/src/ContextModuleBuilder.js +1 -1
  269. package/lib/esm/src/ContextModuleBuilder.js.map +3 -3
  270. package/lib/esm/src/ContextModuleBuilder.test.js +1 -1
  271. package/lib/esm/src/ContextModuleBuilder.test.js.map +3 -3
  272. package/lib/esm/src/DefaultContextModule.js +1 -1
  273. package/lib/esm/src/DefaultContextModule.js.map +3 -3
  274. package/lib/esm/src/DefaultContextModule.test.js +1 -1
  275. package/lib/esm/src/DefaultContextModule.test.js.map +3 -3
  276. package/lib/esm/src/calldata/data/CalldataDescriptorDataSource.js +1 -0
  277. package/lib/esm/src/calldata/data/HttpCalldataDescriptorDataSource.js +2 -0
  278. package/lib/esm/src/calldata/data/HttpCalldataDescriptorDataSource.js.map +7 -0
  279. package/lib/esm/src/calldata/data/HttpCalldataDescriptorDataSource.test.js +2 -0
  280. package/lib/esm/src/calldata/data/HttpCalldataDescriptorDataSource.test.js.map +7 -0
  281. package/lib/esm/src/calldata/di/calldataModuleFactory.js +2 -0
  282. package/lib/esm/src/calldata/di/calldataModuleFactory.js.map +7 -0
  283. package/lib/esm/src/calldata/di/calldataTypes.js +2 -0
  284. package/lib/esm/src/calldata/di/calldataTypes.js.map +7 -0
  285. package/lib/esm/src/calldata/domain/CalldataContextLoader.js +2 -0
  286. package/lib/esm/src/calldata/domain/CalldataContextLoader.js.map +7 -0
  287. package/lib/esm/src/calldata/domain/CalldataContextLoader.test.js +2 -0
  288. package/lib/esm/src/calldata/domain/CalldataContextLoader.test.js.map +7 -0
  289. package/lib/esm/src/di.js +1 -1
  290. package/lib/esm/src/di.js.map +3 -3
  291. package/lib/esm/src/dynamic-network/data/DynamicNetworkDataSource.js +1 -0
  292. package/lib/esm/src/dynamic-network/data/HttpDynamicNetworkDataSource.js +2 -0
  293. package/lib/esm/src/dynamic-network/data/HttpDynamicNetworkDataSource.js.map +7 -0
  294. package/lib/esm/src/dynamic-network/data/HttpDynamicNetworkDataSource.test.js +2 -0
  295. package/lib/esm/src/dynamic-network/data/HttpDynamicNetworkDataSource.test.js.map +7 -0
  296. package/lib/esm/src/dynamic-network/data/dto/DynamicNetworkApiResponseDto.js +1 -0
  297. package/lib/esm/src/dynamic-network/di/dynamicNetworkModuleFactory.js +2 -0
  298. package/lib/esm/src/dynamic-network/di/dynamicNetworkModuleFactory.js.map +7 -0
  299. package/lib/esm/src/dynamic-network/di/dynamicNetworkTypes.js +2 -0
  300. package/lib/esm/src/dynamic-network/di/dynamicNetworkTypes.js.map +7 -0
  301. package/lib/esm/src/dynamic-network/domain/DynamicNetworkContextLoader.js +2 -0
  302. package/lib/esm/src/dynamic-network/domain/DynamicNetworkContextLoader.js.map +7 -0
  303. package/lib/esm/src/dynamic-network/domain/DynamicNetworkContextLoader.test.js +2 -0
  304. package/lib/esm/src/dynamic-network/domain/DynamicNetworkContextLoader.test.js.map +7 -0
  305. package/lib/esm/src/dynamic-network/model/DynamicNetworkConfiguration.js +1 -0
  306. package/lib/esm/src/external-plugin/domain/ExternalPluginContextLoader.js +1 -1
  307. package/lib/esm/src/external-plugin/domain/ExternalPluginContextLoader.js.map +3 -3
  308. package/lib/esm/src/external-plugin/domain/ExternalPluginContextLoader.test.js +1 -1
  309. package/lib/esm/src/external-plugin/domain/ExternalPluginContextLoader.test.js.map +3 -3
  310. package/lib/esm/src/index.js +1 -1
  311. package/lib/esm/src/index.js.map +2 -2
  312. package/lib/esm/src/nft/data/HttpNftDataSource.js +1 -1
  313. package/lib/esm/src/nft/data/HttpNftDataSource.js.map +2 -2
  314. package/lib/esm/src/nft/data/HttpNftDataSource.test.js +1 -1
  315. package/lib/esm/src/nft/data/HttpNftDataSource.test.js.map +2 -2
  316. package/lib/esm/src/nft/di/nftModuleFactory.js +1 -1
  317. package/lib/esm/src/nft/di/nftModuleFactory.js.map +3 -3
  318. package/lib/esm/src/nft/di/nftTypes.js +1 -1
  319. package/lib/esm/src/nft/di/nftTypes.js.map +2 -2
  320. package/lib/esm/src/nft/domain/NftContextFieldLoader.js +2 -0
  321. package/lib/esm/src/nft/domain/NftContextFieldLoader.js.map +7 -0
  322. package/lib/esm/src/nft/domain/NftContextFieldLoader.test.js +2 -0
  323. package/lib/esm/src/nft/domain/NftContextFieldLoader.test.js.map +7 -0
  324. package/lib/esm/src/nft/domain/NftContextLoader.js +1 -1
  325. package/lib/esm/src/nft/domain/NftContextLoader.js.map +3 -3
  326. package/lib/esm/src/nft/domain/NftContextLoader.test.js +1 -1
  327. package/lib/esm/src/nft/domain/NftContextLoader.test.js.map +3 -3
  328. package/lib/esm/src/pki/domain/DefaultPkiCertificateLoader.js +1 -1
  329. package/lib/esm/src/pki/domain/DefaultPkiCertificateLoader.js.map +3 -3
  330. package/lib/esm/src/pki/domain/DefaultPkiCertificateLoader.test.js +1 -1
  331. package/lib/esm/src/pki/domain/DefaultPkiCertificateLoader.test.js.map +3 -3
  332. package/lib/esm/src/pki/model/KeyUsage.js +1 -1
  333. package/lib/esm/src/pki/model/KeyUsage.js.map +2 -2
  334. package/lib/esm/src/proxy/data/HttpProxyDataSource.js +2 -0
  335. package/lib/esm/src/proxy/data/HttpProxyDataSource.js.map +7 -0
  336. package/lib/esm/src/proxy/data/HttpProxyDataSource.test.js +2 -0
  337. package/lib/esm/src/proxy/data/HttpProxyDataSource.test.js.map +7 -0
  338. package/lib/esm/src/proxy/data/HttpSafeProxyDataSource.js +2 -0
  339. package/lib/esm/src/proxy/data/HttpSafeProxyDataSource.js.map +7 -0
  340. package/lib/esm/src/proxy/data/HttpSafeProxyDataSource.test.js +2 -0
  341. package/lib/esm/src/proxy/data/HttpSafeProxyDataSource.test.js.map +7 -0
  342. package/lib/esm/src/proxy/data/ProxyDataSource.js +1 -0
  343. package/lib/esm/src/proxy/data/dto/SafeProxyImplementationAddressDto.js +1 -0
  344. package/lib/esm/src/proxy/di/proxyModuleFactory.js +2 -0
  345. package/lib/esm/src/proxy/di/proxyModuleFactory.js.map +7 -0
  346. package/lib/esm/src/proxy/di/proxyModuleFactory.test.js +2 -0
  347. package/lib/esm/src/proxy/di/proxyModuleFactory.test.js.map +7 -0
  348. package/lib/esm/src/proxy/di/proxyTypes.js +2 -0
  349. package/lib/esm/src/proxy/di/proxyTypes.js.map +7 -0
  350. package/lib/esm/src/proxy/domain/ProxyContextFieldLoader.js +2 -0
  351. package/lib/esm/src/proxy/domain/ProxyContextFieldLoader.js.map +7 -0
  352. package/lib/esm/src/proxy/domain/ProxyContextFieldLoader.test.js +2 -0
  353. package/lib/esm/src/proxy/domain/ProxyContextFieldLoader.test.js.map +7 -0
  354. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.js +2 -0
  355. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.js.map +7 -0
  356. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.test.js +2 -0
  357. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.test.js.map +7 -0
  358. package/lib/esm/src/safe/data/SafeAccountDataSource.js +1 -0
  359. package/lib/esm/src/safe/data/dto/SafeAccountDto.js +1 -0
  360. package/lib/esm/src/safe/data/dto/SafeAccountDto.js.map +7 -0
  361. package/lib/esm/src/safe/di/safeModuleFactory.js +2 -0
  362. package/lib/esm/src/safe/di/safeModuleFactory.js.map +7 -0
  363. package/lib/esm/src/safe/di/safeModuleFactory.test.js +2 -0
  364. package/lib/esm/src/safe/di/safeModuleFactory.test.js.map +7 -0
  365. package/lib/esm/src/safe/di/safeTypes.js +2 -0
  366. package/lib/esm/src/safe/di/safeTypes.js.map +7 -0
  367. package/lib/esm/src/safe/domain/SafeAddressLoader.js +2 -0
  368. package/lib/esm/src/safe/domain/SafeAddressLoader.js.map +7 -0
  369. package/lib/esm/src/safe/domain/SafeAddressLoader.test.js +2 -0
  370. package/lib/esm/src/safe/domain/SafeAddressLoader.test.js.map +7 -0
  371. package/lib/esm/src/shared/domain/ContextFieldLoader.js +1 -0
  372. package/lib/esm/src/shared/domain/ContextFieldLoader.js.map +7 -0
  373. package/lib/esm/src/shared/model/ClearSignContext.js +1 -1
  374. package/lib/esm/src/shared/model/ClearSignContext.js.map +3 -3
  375. package/lib/esm/src/shared/model/SolanaContextTypes.js +2 -0
  376. package/lib/esm/src/shared/model/SolanaContextTypes.js.map +7 -0
  377. package/lib/esm/src/shared/model/TypedDataClearSignContext.js +1 -1
  378. package/lib/esm/src/shared/model/TypedDataClearSignContext.js.map +3 -3
  379. package/lib/esm/src/shared/utils/KeyUsageMapper.js +1 -1
  380. package/lib/esm/src/shared/utils/KeyUsageMapper.js.map +2 -2
  381. package/lib/esm/src/shared/utils/KeyUsageMapper.test.js +1 -1
  382. package/lib/esm/src/shared/utils/KeyUsageMapper.test.js.map +2 -2
  383. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.js +1 -1
  384. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.js.map +3 -3
  385. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js +1 -1
  386. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js.map +2 -2
  387. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.js +1 -1
  388. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.js.map +3 -3
  389. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.test.js +1 -1
  390. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.test.js.map +3 -3
  391. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.js +2 -0
  392. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.js.map +7 -0
  393. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js +2 -0
  394. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js.map +7 -0
  395. package/lib/esm/src/solanaLifi/data/SolanaLifiDataSource.js +1 -0
  396. package/lib/esm/src/solanaLifi/data/SolanaLifiDataSource.js.map +7 -0
  397. package/lib/esm/src/solanaLifi/di/lifiModuleFactory.js +2 -0
  398. package/lib/esm/src/solanaLifi/di/lifiModuleFactory.js.map +7 -0
  399. package/lib/esm/src/solanaLifi/di/solanaLifiTypes.js +2 -0
  400. package/lib/esm/src/solanaLifi/di/solanaLifiTypes.js.map +7 -0
  401. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.js +2 -0
  402. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.js.map +7 -0
  403. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.test.js +2 -0
  404. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.test.js.map +7 -0
  405. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.js +2 -0
  406. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.js.map +7 -0
  407. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.test.js +7 -0
  408. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.test.js.map +7 -0
  409. package/lib/esm/src/solanaToken/data/SolanaTokenDataSource.js +1 -0
  410. package/lib/esm/src/solanaToken/data/SolanaTokenDataSource.js.map +7 -0
  411. package/lib/esm/src/solanaToken/di/solanaTokenTypes.js +2 -0
  412. package/lib/esm/src/solanaToken/di/solanaTokenTypes.js.map +7 -0
  413. package/lib/esm/src/solanaToken/di/tokenModuleFactory.js +2 -0
  414. package/lib/esm/src/solanaToken/di/tokenModuleFactory.js.map +7 -0
  415. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.js +2 -0
  416. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.js.map +7 -0
  417. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.test.js +2 -0
  418. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.test.js.map +7 -0
  419. package/lib/esm/src/token/data/HttpTokenDataSource.js +1 -1
  420. package/lib/esm/src/token/data/HttpTokenDataSource.js.map +2 -2
  421. package/lib/esm/src/token/data/HttpTokenDataSource.test.js +1 -1
  422. package/lib/esm/src/token/data/HttpTokenDataSource.test.js.map +2 -2
  423. package/lib/esm/src/token/di/tokenModuleFactory.js +1 -1
  424. package/lib/esm/src/token/di/tokenModuleFactory.js.map +3 -3
  425. package/lib/esm/src/token/di/tokenTypes.js +1 -1
  426. package/lib/esm/src/token/di/tokenTypes.js.map +2 -2
  427. package/lib/esm/src/token/domain/TokenContextFieldLoader.js +2 -0
  428. package/lib/esm/src/token/domain/TokenContextFieldLoader.js.map +7 -0
  429. package/lib/esm/src/token/domain/TokenContextFieldLoader.test.js +2 -0
  430. package/lib/esm/src/token/domain/TokenContextFieldLoader.test.js.map +7 -0
  431. package/lib/esm/src/token/domain/TokenContextLoader.js +1 -1
  432. package/lib/esm/src/token/domain/TokenContextLoader.js.map +3 -3
  433. package/lib/esm/src/token/domain/TokenContextLoader.test.js +1 -1
  434. package/lib/esm/src/token/domain/TokenContextLoader.test.js.map +3 -3
  435. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.js +2 -0
  436. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.js.map +7 -0
  437. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.test.js +2 -0
  438. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.test.js.map +7 -0
  439. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.js +2 -0
  440. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.js.map +7 -0
  441. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js +2 -0
  442. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js.map +7 -0
  443. package/lib/esm/src/transaction-check/data/TransactionCheckDataSource.js +1 -0
  444. package/lib/esm/src/transaction-check/data/TransactionCheckDataSource.js.map +7 -0
  445. package/lib/esm/src/transaction-check/data/TypedDataCheckDataSource.js +1 -0
  446. package/lib/esm/src/transaction-check/data/TypedDataCheckDataSource.js.map +7 -0
  447. package/lib/esm/src/transaction-check/data/dto/TransactionCheckDto.js +1 -0
  448. package/lib/esm/src/transaction-check/data/dto/TransactionCheckDto.js.map +7 -0
  449. package/lib/esm/src/transaction-check/data/dto/TypedDataCheckDto.js +1 -0
  450. package/lib/esm/src/transaction-check/data/dto/TypedDataCheckDto.js.map +7 -0
  451. package/lib/esm/src/transaction-check/di/transactionCheckModuleFactory.js +2 -0
  452. package/lib/esm/src/transaction-check/di/transactionCheckModuleFactory.js.map +7 -0
  453. package/lib/esm/src/transaction-check/di/transactionCheckTypes.js +2 -0
  454. package/lib/esm/src/transaction-check/di/transactionCheckTypes.js.map +7 -0
  455. package/lib/esm/src/transaction-check/domain/TransactionCheckContextLoader.js +2 -0
  456. package/lib/esm/src/transaction-check/domain/TransactionCheckContextLoader.js.map +7 -0
  457. package/lib/esm/src/transaction-check/domain/TransactionCheckContextLoader.test.js +2 -0
  458. package/lib/esm/src/transaction-check/domain/TransactionCheckContextLoader.test.js.map +7 -0
  459. package/lib/esm/src/transaction-check/domain/TypedDataCheckContextLoader.js +2 -0
  460. package/lib/esm/src/transaction-check/domain/TypedDataCheckContextLoader.js.map +7 -0
  461. package/lib/esm/src/transaction-check/domain/TypedDataCheckContextLoader.test.js +2 -0
  462. package/lib/esm/src/transaction-check/domain/TypedDataCheckContextLoader.test.js.map +7 -0
  463. package/lib/esm/src/trusted-name/data/HttpTrustedNameDataSource.js +1 -1
  464. package/lib/esm/src/trusted-name/data/HttpTrustedNameDataSource.js.map +3 -3
  465. package/lib/esm/src/trusted-name/data/HttpTrustedNameDataSource.test.js +1 -1
  466. package/lib/esm/src/trusted-name/data/HttpTrustedNameDataSource.test.js.map +2 -2
  467. package/lib/esm/src/trusted-name/di/trustedNameModuleFactory.js +1 -1
  468. package/lib/esm/src/trusted-name/di/trustedNameModuleFactory.js.map +3 -3
  469. package/lib/esm/src/trusted-name/di/trustedNameTypes.js +1 -1
  470. package/lib/esm/src/trusted-name/di/trustedNameTypes.js.map +2 -2
  471. package/lib/esm/src/trusted-name/domain/TrustedNameContextFieldLoader.js +2 -0
  472. package/lib/esm/src/trusted-name/domain/TrustedNameContextFieldLoader.js.map +7 -0
  473. package/lib/esm/src/trusted-name/domain/TrustedNameContextFieldLoader.test.js +2 -0
  474. package/lib/esm/src/trusted-name/domain/TrustedNameContextFieldLoader.test.js.map +7 -0
  475. package/lib/esm/src/trusted-name/domain/TrustedNameContextLoader.js +1 -1
  476. package/lib/esm/src/trusted-name/domain/TrustedNameContextLoader.js.map +3 -3
  477. package/lib/esm/src/trusted-name/domain/TrustedNameContextLoader.test.js +1 -1
  478. package/lib/esm/src/trusted-name/domain/TrustedNameContextLoader.test.js.map +3 -3
  479. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.js +1 -1
  480. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.js.map +3 -3
  481. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.test.js +1 -1
  482. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.test.js.map +3 -3
  483. package/lib/esm/src/typed-data/domain/DefaultTypedDataContextLoader.js +1 -1
  484. package/lib/esm/src/typed-data/domain/DefaultTypedDataContextLoader.js.map +3 -3
  485. package/lib/esm/src/typed-data/domain/DefaultTypedDataContextLoader.test.js +1 -1
  486. package/lib/esm/src/typed-data/domain/DefaultTypedDataContextLoader.test.js.map +3 -3
  487. package/lib/esm/src/uniswap/constants/uniswap.js +1 -1
  488. package/lib/esm/src/uniswap/constants/uniswap.js.map +3 -3
  489. package/lib/esm/src/uniswap/domain/UniswapContextLoader.js +1 -1
  490. package/lib/esm/src/uniswap/domain/UniswapContextLoader.js.map +3 -3
  491. package/lib/esm/src/uniswap/domain/UniswapContextLoader.test.js +1 -1
  492. package/lib/esm/src/uniswap/domain/UniswapContextLoader.test.js.map +3 -3
  493. package/lib/types/src/ContextModule.d.ts +3 -6
  494. package/lib/types/src/ContextModule.d.ts.map +1 -1
  495. package/lib/types/src/ContextModuleBuilder.d.ts +8 -10
  496. package/lib/types/src/ContextModuleBuilder.d.ts.map +1 -1
  497. package/lib/types/src/DefaultContextModule.d.ts +5 -8
  498. package/lib/types/src/DefaultContextModule.d.ts.map +1 -1
  499. package/lib/types/src/{transaction/data/TransactionDataSource.d.ts → calldata/data/CalldataDescriptorDataSource.d.ts} +4 -4
  500. package/lib/types/src/calldata/data/CalldataDescriptorDataSource.d.ts.map +1 -0
  501. package/lib/types/src/{transaction/data/HttpTransactionDataSource.d.ts → calldata/data/HttpCalldataDescriptorDataSource.d.ts} +6 -5
  502. package/lib/types/src/calldata/data/HttpCalldataDescriptorDataSource.d.ts.map +1 -0
  503. package/lib/types/src/calldata/data/HttpCalldataDescriptorDataSource.test.d.ts +2 -0
  504. package/lib/types/src/calldata/data/HttpCalldataDescriptorDataSource.test.d.ts.map +1 -0
  505. package/lib/types/src/{transaction → calldata}/data/dto/CalldataDto.d.ts +10 -1
  506. package/lib/types/src/calldata/data/dto/CalldataDto.d.ts.map +1 -0
  507. package/lib/types/src/calldata/di/calldataModuleFactory.d.ts +3 -0
  508. package/lib/types/src/calldata/di/calldataModuleFactory.d.ts.map +1 -0
  509. package/lib/types/src/calldata/di/calldataTypes.d.ts +6 -0
  510. package/lib/types/src/calldata/di/calldataTypes.d.ts.map +1 -0
  511. package/lib/types/src/calldata/domain/CalldataContextLoader.d.ts +23 -0
  512. package/lib/types/src/calldata/domain/CalldataContextLoader.d.ts.map +1 -0
  513. package/lib/types/src/calldata/domain/CalldataContextLoader.test.d.ts +2 -0
  514. package/lib/types/src/calldata/domain/CalldataContextLoader.test.d.ts.map +1 -0
  515. package/lib/types/src/config/model/ContextModuleConfig.d.ts +8 -3
  516. package/lib/types/src/config/model/ContextModuleConfig.d.ts.map +1 -1
  517. package/lib/types/src/di.d.ts.map +1 -1
  518. package/lib/types/src/dynamic-network/data/DynamicNetworkDataSource.d.ts +6 -0
  519. package/lib/types/src/dynamic-network/data/DynamicNetworkDataSource.d.ts.map +1 -0
  520. package/lib/types/src/dynamic-network/data/HttpDynamicNetworkDataSource.d.ts +13 -0
  521. package/lib/types/src/dynamic-network/data/HttpDynamicNetworkDataSource.d.ts.map +1 -0
  522. package/lib/types/src/dynamic-network/data/HttpDynamicNetworkDataSource.test.d.ts +2 -0
  523. package/lib/types/src/dynamic-network/data/HttpDynamicNetworkDataSource.test.d.ts.map +1 -0
  524. package/lib/types/src/dynamic-network/data/dto/DynamicNetworkApiResponseDto.d.ts +14 -0
  525. package/lib/types/src/dynamic-network/data/dto/DynamicNetworkApiResponseDto.d.ts.map +1 -0
  526. package/lib/types/src/dynamic-network/di/dynamicNetworkModuleFactory.d.ts +3 -0
  527. package/lib/types/src/dynamic-network/di/dynamicNetworkModuleFactory.d.ts.map +1 -0
  528. package/lib/types/src/dynamic-network/di/dynamicNetworkTypes.d.ts +5 -0
  529. package/lib/types/src/dynamic-network/di/dynamicNetworkTypes.d.ts.map +1 -0
  530. package/lib/types/src/dynamic-network/domain/DynamicNetworkContextLoader.d.ts +19 -0
  531. package/lib/types/src/dynamic-network/domain/DynamicNetworkContextLoader.d.ts.map +1 -0
  532. package/lib/types/src/dynamic-network/domain/DynamicNetworkContextLoader.test.d.ts +2 -0
  533. package/lib/types/src/dynamic-network/domain/DynamicNetworkContextLoader.test.d.ts.map +1 -0
  534. package/lib/types/src/dynamic-network/model/DynamicNetworkConfiguration.d.ts +16 -0
  535. package/lib/types/src/dynamic-network/model/DynamicNetworkConfiguration.d.ts.map +1 -0
  536. package/lib/types/src/external-plugin/domain/ExternalPluginContextLoader.d.ts +20 -5
  537. package/lib/types/src/external-plugin/domain/ExternalPluginContextLoader.d.ts.map +1 -1
  538. package/lib/types/src/index.d.ts +41 -3
  539. package/lib/types/src/index.d.ts.map +1 -1
  540. package/lib/types/src/nft/di/nftModuleFactory.d.ts.map +1 -1
  541. package/lib/types/src/nft/di/nftTypes.d.ts +1 -0
  542. package/lib/types/src/nft/di/nftTypes.d.ts.map +1 -1
  543. package/lib/types/src/nft/domain/NftContextFieldLoader.d.ts +15 -0
  544. package/lib/types/src/nft/domain/NftContextFieldLoader.d.ts.map +1 -0
  545. package/lib/types/src/nft/domain/NftContextFieldLoader.test.d.ts +2 -0
  546. package/lib/types/src/nft/domain/NftContextFieldLoader.test.d.ts.map +1 -0
  547. package/lib/types/src/nft/domain/NftContextLoader.d.ts +10 -5
  548. package/lib/types/src/nft/domain/NftContextLoader.d.ts.map +1 -1
  549. package/lib/types/src/pki/domain/DefaultPkiCertificateLoader.d.ts.map +1 -1
  550. package/lib/types/src/pki/model/KeyUsage.d.ts +2 -1
  551. package/lib/types/src/pki/model/KeyUsage.d.ts.map +1 -1
  552. package/lib/types/src/pki/model/PkiCertificateInfo.d.ts +1 -2
  553. package/lib/types/src/pki/model/PkiCertificateInfo.d.ts.map +1 -1
  554. package/lib/types/src/proxy/data/HttpProxyDataSource.d.ts +13 -0
  555. package/lib/types/src/proxy/data/HttpProxyDataSource.d.ts.map +1 -0
  556. package/lib/types/src/proxy/data/HttpProxyDataSource.test.d.ts.map +1 -0
  557. package/lib/types/src/proxy/data/HttpSafeProxyDataSource.d.ts +13 -0
  558. package/lib/types/src/proxy/data/HttpSafeProxyDataSource.d.ts.map +1 -0
  559. package/lib/types/src/proxy/data/HttpSafeProxyDataSource.test.d.ts +2 -0
  560. package/lib/types/src/proxy/data/HttpSafeProxyDataSource.test.d.ts.map +1 -0
  561. package/lib/types/src/proxy/data/ProxyDataSource.d.ts +17 -0
  562. package/lib/types/src/proxy/data/ProxyDataSource.d.ts.map +1 -0
  563. package/lib/types/src/proxy/data/dto/ProxyDelegateCallDto.d.ts +5 -0
  564. package/lib/types/src/proxy/data/dto/ProxyDelegateCallDto.d.ts.map +1 -0
  565. package/lib/types/src/proxy/data/dto/ProxyImplementationAddressDto.d.ts.map +1 -0
  566. package/lib/types/src/proxy/data/dto/SafeProxyImplementationAddressDto.d.ts +10 -0
  567. package/lib/types/src/proxy/data/dto/SafeProxyImplementationAddressDto.d.ts.map +1 -0
  568. package/lib/types/src/proxy/di/proxyModuleFactory.d.ts +4 -0
  569. package/lib/types/src/proxy/di/proxyModuleFactory.d.ts.map +1 -0
  570. package/lib/types/src/proxy/di/proxyModuleFactory.test.d.ts +2 -0
  571. package/lib/types/src/proxy/di/proxyModuleFactory.test.d.ts.map +1 -0
  572. package/lib/types/src/proxy/di/proxyTypes.d.ts +5 -0
  573. package/lib/types/src/proxy/di/proxyTypes.d.ts.map +1 -0
  574. package/lib/types/src/proxy/domain/ProxyContextFieldLoader.d.ts +21 -0
  575. package/lib/types/src/proxy/domain/ProxyContextFieldLoader.d.ts.map +1 -0
  576. package/lib/types/src/proxy/domain/ProxyContextFieldLoader.test.d.ts +2 -0
  577. package/lib/types/src/proxy/domain/ProxyContextFieldLoader.test.d.ts.map +1 -0
  578. package/lib/types/src/proxy/model/ProxyDelegateCall.d.ts +7 -0
  579. package/lib/types/src/proxy/model/ProxyDelegateCall.d.ts.map +1 -0
  580. package/lib/types/src/safe/data/HttpSafeAccountDataSource.d.ts +11 -0
  581. package/lib/types/src/safe/data/HttpSafeAccountDataSource.d.ts.map +1 -0
  582. package/lib/types/src/safe/data/HttpSafeAccountDataSource.test.d.ts +2 -0
  583. package/lib/types/src/safe/data/HttpSafeAccountDataSource.test.d.ts.map +1 -0
  584. package/lib/types/src/safe/data/SafeAccountDataSource.d.ts +20 -0
  585. package/lib/types/src/safe/data/SafeAccountDataSource.d.ts.map +1 -0
  586. package/lib/types/src/safe/data/dto/SafeAccountDto.d.ts +10 -0
  587. package/lib/types/src/safe/data/dto/SafeAccountDto.d.ts.map +1 -0
  588. package/lib/types/src/safe/di/safeModuleFactory.d.ts +3 -0
  589. package/lib/types/src/safe/di/safeModuleFactory.d.ts.map +1 -0
  590. package/lib/types/src/safe/di/safeModuleFactory.test.d.ts +2 -0
  591. package/lib/types/src/safe/di/safeModuleFactory.test.d.ts.map +1 -0
  592. package/lib/types/src/safe/di/safeTypes.d.ts +5 -0
  593. package/lib/types/src/safe/di/safeTypes.d.ts.map +1 -0
  594. package/lib/types/src/safe/domain/SafeAddressLoader.d.ts +19 -0
  595. package/lib/types/src/safe/domain/SafeAddressLoader.d.ts.map +1 -0
  596. package/lib/types/src/safe/domain/SafeAddressLoader.test.d.ts +2 -0
  597. package/lib/types/src/safe/domain/SafeAddressLoader.test.d.ts.map +1 -0
  598. package/lib/types/src/shared/domain/ContextFieldLoader.d.ts +25 -0
  599. package/lib/types/src/shared/domain/ContextFieldLoader.d.ts.map +1 -0
  600. package/lib/types/src/shared/domain/ContextLoader.d.ts +13 -5
  601. package/lib/types/src/shared/domain/ContextLoader.d.ts.map +1 -1
  602. package/lib/types/src/shared/model/ClearSignContext.d.ts +76 -26
  603. package/lib/types/src/shared/model/ClearSignContext.d.ts.map +1 -1
  604. package/lib/types/src/shared/model/SolanaContextTypes.d.ts +47 -0
  605. package/lib/types/src/shared/model/SolanaContextTypes.d.ts.map +1 -0
  606. package/lib/types/src/shared/model/SolanaTransactionContext.d.ts +2 -0
  607. package/lib/types/src/shared/model/SolanaTransactionContext.d.ts.map +1 -1
  608. package/lib/types/src/shared/model/TransactionSubset.d.ts +1 -0
  609. package/lib/types/src/shared/model/TransactionSubset.d.ts.map +1 -1
  610. package/lib/types/src/shared/model/TypedDataClearSignContext.d.ts +33 -1
  611. package/lib/types/src/shared/model/TypedDataClearSignContext.d.ts.map +1 -1
  612. package/lib/types/src/shared/model/TypedDataContext.d.ts +3 -0
  613. package/lib/types/src/shared/model/TypedDataContext.d.ts.map +1 -1
  614. package/lib/types/src/shared/utils/KeyUsageMapper.d.ts +1 -2
  615. package/lib/types/src/shared/utils/KeyUsageMapper.d.ts.map +1 -1
  616. package/lib/types/src/solana/data/HttpSolanaOwnerInfoDataSource.d.ts.map +1 -1
  617. package/lib/types/src/solana/data/SolanaDataSource.d.ts +1 -4
  618. package/lib/types/src/solana/data/SolanaDataSource.d.ts.map +1 -1
  619. package/lib/types/src/solana/domain/DefaultSolanaContextLoader.d.ts +7 -3
  620. package/lib/types/src/solana/domain/DefaultSolanaContextLoader.d.ts.map +1 -1
  621. package/lib/types/src/solana/domain/solanaContextTypes.d.ts +7 -5
  622. package/lib/types/src/solana/domain/solanaContextTypes.d.ts.map +1 -1
  623. package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.d.ts +9 -0
  624. package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.d.ts.map +1 -0
  625. package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.test.d.ts +2 -0
  626. package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.test.d.ts.map +1 -0
  627. package/lib/types/src/solanaLifi/data/SolanaLifiDataSource.d.ts +13 -0
  628. package/lib/types/src/solanaLifi/data/SolanaLifiDataSource.d.ts.map +1 -0
  629. package/lib/types/src/solanaLifi/di/lifiModuleFactory.d.ts +3 -0
  630. package/lib/types/src/solanaLifi/di/lifiModuleFactory.d.ts.map +1 -0
  631. package/lib/types/src/solanaLifi/di/solanaLifiTypes.d.ts +5 -0
  632. package/lib/types/src/solanaLifi/di/solanaLifiTypes.d.ts.map +1 -0
  633. package/lib/types/src/solanaLifi/domain/SolanaLifiContextLoader.d.ts +16 -0
  634. package/lib/types/src/solanaLifi/domain/SolanaLifiContextLoader.d.ts.map +1 -0
  635. package/lib/types/src/solanaLifi/domain/SolanaLifiContextLoader.test.d.ts +2 -0
  636. package/lib/types/src/solanaLifi/domain/SolanaLifiContextLoader.test.d.ts.map +1 -0
  637. package/lib/types/src/solanaToken/data/HttpSolanaTokenDataSource.d.ts +9 -0
  638. package/lib/types/src/solanaToken/data/HttpSolanaTokenDataSource.d.ts.map +1 -0
  639. package/lib/types/src/solanaToken/data/HttpSolanaTokenDataSource.test.d.ts +2 -0
  640. package/lib/types/src/solanaToken/data/HttpSolanaTokenDataSource.test.d.ts.map +1 -0
  641. package/lib/types/src/solanaToken/data/SolanaTokenDataSource.d.ts +44 -0
  642. package/lib/types/src/solanaToken/data/SolanaTokenDataSource.d.ts.map +1 -0
  643. package/lib/types/src/solanaToken/di/solanaTokenTypes.d.ts +5 -0
  644. package/lib/types/src/solanaToken/di/solanaTokenTypes.d.ts.map +1 -0
  645. package/lib/types/src/solanaToken/di/tokenModuleFactory.d.ts +3 -0
  646. package/lib/types/src/solanaToken/di/tokenModuleFactory.d.ts.map +1 -0
  647. package/lib/types/src/solanaToken/domain/SolanaTokenContextLoader.d.ts +22 -0
  648. package/lib/types/src/solanaToken/domain/SolanaTokenContextLoader.d.ts.map +1 -0
  649. package/lib/types/src/solanaToken/domain/SolanaTokenContextLoader.test.d.ts +2 -0
  650. package/lib/types/src/solanaToken/domain/SolanaTokenContextLoader.test.d.ts.map +1 -0
  651. package/lib/types/src/token/data/HttpTokenDataSource.d.ts.map +1 -1
  652. package/lib/types/src/token/di/tokenModuleFactory.d.ts.map +1 -1
  653. package/lib/types/src/token/di/tokenTypes.d.ts +1 -0
  654. package/lib/types/src/token/di/tokenTypes.d.ts.map +1 -1
  655. package/lib/types/src/token/domain/TokenContextFieldLoader.d.ts +14 -0
  656. package/lib/types/src/token/domain/TokenContextFieldLoader.d.ts.map +1 -0
  657. package/lib/types/src/token/domain/TokenContextFieldLoader.test.d.ts +2 -0
  658. package/lib/types/src/token/domain/TokenContextFieldLoader.test.d.ts.map +1 -0
  659. package/lib/types/src/token/domain/TokenContextLoader.d.ts +10 -5
  660. package/lib/types/src/token/domain/TokenContextLoader.d.ts.map +1 -1
  661. package/lib/types/src/transaction-check/data/HttpTransactionCheckDataSource.d.ts +10 -0
  662. package/lib/types/src/transaction-check/data/HttpTransactionCheckDataSource.d.ts.map +1 -0
  663. package/lib/types/src/transaction-check/data/HttpTransactionCheckDataSource.test.d.ts +2 -0
  664. package/lib/types/src/transaction-check/data/HttpTransactionCheckDataSource.test.d.ts.map +1 -0
  665. package/lib/types/src/transaction-check/data/HttpTypedDataCheckDataSource.d.ts +10 -0
  666. package/lib/types/src/transaction-check/data/HttpTypedDataCheckDataSource.d.ts.map +1 -0
  667. package/lib/types/src/transaction-check/data/HttpTypedDataCheckDataSource.test.d.ts +2 -0
  668. package/lib/types/src/transaction-check/data/HttpTypedDataCheckDataSource.test.d.ts.map +1 -0
  669. package/lib/types/src/transaction-check/data/TransactionCheckDataSource.d.ts +14 -0
  670. package/lib/types/src/transaction-check/data/TransactionCheckDataSource.d.ts.map +1 -0
  671. package/lib/types/src/transaction-check/data/TypedDataCheckDataSource.d.ts +28 -0
  672. package/lib/types/src/transaction-check/data/TypedDataCheckDataSource.d.ts.map +1 -0
  673. package/lib/types/src/transaction-check/data/dto/TransactionCheckDto.d.ts +5 -0
  674. package/lib/types/src/transaction-check/data/dto/TransactionCheckDto.d.ts.map +1 -0
  675. package/lib/types/src/transaction-check/data/dto/TypedDataCheckDto.d.ts +5 -0
  676. package/lib/types/src/transaction-check/data/dto/TypedDataCheckDto.d.ts.map +1 -0
  677. package/lib/types/src/transaction-check/di/transactionCheckModuleFactory.d.ts +3 -0
  678. package/lib/types/src/transaction-check/di/transactionCheckModuleFactory.d.ts.map +1 -0
  679. package/lib/types/src/transaction-check/di/transactionCheckTypes.d.ts +7 -0
  680. package/lib/types/src/transaction-check/di/transactionCheckTypes.d.ts.map +1 -0
  681. package/lib/types/src/transaction-check/domain/TransactionCheckContextLoader.d.ts +19 -0
  682. package/lib/types/src/transaction-check/domain/TransactionCheckContextLoader.d.ts.map +1 -0
  683. package/lib/types/src/transaction-check/domain/TransactionCheckContextLoader.test.d.ts +2 -0
  684. package/lib/types/src/transaction-check/domain/TransactionCheckContextLoader.test.d.ts.map +1 -0
  685. package/lib/types/src/transaction-check/domain/TypedDataCheckContextLoader.d.ts +18 -0
  686. package/lib/types/src/transaction-check/domain/TypedDataCheckContextLoader.d.ts.map +1 -0
  687. package/lib/types/src/transaction-check/domain/TypedDataCheckContextLoader.test.d.ts +2 -0
  688. package/lib/types/src/transaction-check/domain/TypedDataCheckContextLoader.test.d.ts.map +1 -0
  689. package/lib/types/src/trusted-name/data/HttpTrustedNameDataSource.d.ts +7 -3
  690. package/lib/types/src/trusted-name/data/HttpTrustedNameDataSource.d.ts.map +1 -1
  691. package/lib/types/src/trusted-name/data/TrustedNameDataSource.d.ts +7 -2
  692. package/lib/types/src/trusted-name/data/TrustedNameDataSource.d.ts.map +1 -1
  693. package/lib/types/src/trusted-name/data/TrustedNameDto.d.ts +4 -5
  694. package/lib/types/src/trusted-name/data/TrustedNameDto.d.ts.map +1 -1
  695. package/lib/types/src/trusted-name/di/trustedNameModuleFactory.d.ts.map +1 -1
  696. package/lib/types/src/trusted-name/di/trustedNameTypes.d.ts +1 -0
  697. package/lib/types/src/trusted-name/di/trustedNameTypes.d.ts.map +1 -1
  698. package/lib/types/src/trusted-name/domain/TrustedNameContextFieldLoader.d.ts +22 -0
  699. package/lib/types/src/trusted-name/domain/TrustedNameContextFieldLoader.d.ts.map +1 -0
  700. package/lib/types/src/trusted-name/domain/TrustedNameContextFieldLoader.test.d.ts +2 -0
  701. package/lib/types/src/trusted-name/domain/TrustedNameContextFieldLoader.test.d.ts.map +1 -0
  702. package/lib/types/src/trusted-name/domain/TrustedNameContextLoader.d.ts +14 -6
  703. package/lib/types/src/trusted-name/domain/TrustedNameContextLoader.d.ts.map +1 -1
  704. package/lib/types/src/typed-data/data/FiltersDto.d.ts +32 -2
  705. package/lib/types/src/typed-data/data/FiltersDto.d.ts.map +1 -1
  706. package/lib/types/src/typed-data/data/HttpTypedDataDataSource.d.ts +3 -0
  707. package/lib/types/src/typed-data/data/HttpTypedDataDataSource.d.ts.map +1 -1
  708. package/lib/types/src/typed-data/data/HttpTypedDataDataSource.test.d.ts +1 -0
  709. package/lib/types/src/typed-data/data/HttpTypedDataDataSource.test.d.ts.map +1 -1
  710. package/lib/types/src/typed-data/data/TypedDataDataSource.d.ts +2 -1
  711. package/lib/types/src/typed-data/data/TypedDataDataSource.d.ts.map +1 -1
  712. package/lib/types/src/typed-data/domain/DefaultTypedDataContextLoader.d.ts +12 -1
  713. package/lib/types/src/typed-data/domain/DefaultTypedDataContextLoader.d.ts.map +1 -1
  714. package/lib/types/src/uniswap/constants/uniswap.d.ts +0 -1
  715. package/lib/types/src/uniswap/constants/uniswap.d.ts.map +1 -1
  716. package/lib/types/src/uniswap/domain/UniswapContextLoader.d.ts +10 -11
  717. package/lib/types/src/uniswap/domain/UniswapContextLoader.d.ts.map +1 -1
  718. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  719. package/package.json +36 -32
  720. package/lib/cjs/src/shared/model/TransactionContext.js +0 -2
  721. package/lib/cjs/src/shared/model/TransactionContext.js.map +0 -7
  722. package/lib/cjs/src/transaction/data/HttpProxyDataSource.js +0 -2
  723. package/lib/cjs/src/transaction/data/HttpProxyDataSource.js.map +0 -7
  724. package/lib/cjs/src/transaction/data/HttpProxyDataSource.test.js +0 -2
  725. package/lib/cjs/src/transaction/data/HttpProxyDataSource.test.js.map +0 -7
  726. package/lib/cjs/src/transaction/data/HttpTransactionDataSource.js +0 -2
  727. package/lib/cjs/src/transaction/data/HttpTransactionDataSource.js.map +0 -7
  728. package/lib/cjs/src/transaction/data/HttpTransactionDataSource.test.js +0 -2
  729. package/lib/cjs/src/transaction/data/HttpTransactionDataSource.test.js.map +0 -7
  730. package/lib/cjs/src/transaction/data/TransactionDataSource.js +0 -2
  731. package/lib/cjs/src/transaction/data/TransactionDataSource.js.map +0 -7
  732. package/lib/cjs/src/transaction/data/dto/CalldataDto.js +0 -2
  733. package/lib/cjs/src/transaction/data/dto/CalldataDto.js.map +0 -7
  734. package/lib/cjs/src/transaction/data/dto/ProxyDelegateCallDto.js +0 -2
  735. package/lib/cjs/src/transaction/data/dto/ProxyDelegateCallDto.js.map +0 -7
  736. package/lib/cjs/src/transaction/di/transactionModuleFactory.js +0 -2
  737. package/lib/cjs/src/transaction/di/transactionModuleFactory.js.map +0 -7
  738. package/lib/cjs/src/transaction/di/transactionTypes.js +0 -2
  739. package/lib/cjs/src/transaction/di/transactionTypes.js.map +0 -7
  740. package/lib/cjs/src/transaction/domain/TransactionContextLoader.js +0 -2
  741. package/lib/cjs/src/transaction/domain/TransactionContextLoader.js.map +0 -7
  742. package/lib/cjs/src/transaction/domain/TransactionContextLoader.test.js +0 -2
  743. package/lib/cjs/src/transaction/domain/TransactionContextLoader.test.js.map +0 -7
  744. package/lib/cjs/src/transaction/model/ProxyDelegateCall.js +0 -2
  745. package/lib/cjs/src/transaction/model/ProxyDelegateCall.js.map +0 -7
  746. package/lib/cjs/src/transaction/model/ProxyImplementationAddress.js +0 -2
  747. package/lib/cjs/src/transaction/model/ProxyImplementationAddress.js.map +0 -7
  748. package/lib/cjs/src/uniswap/constants/plugin.js +0 -2
  749. package/lib/cjs/src/uniswap/constants/plugin.js.map +0 -7
  750. package/lib/cjs/src/web3-check/data/HttpWeb3CheckDataSource.js +0 -2
  751. package/lib/cjs/src/web3-check/data/HttpWeb3CheckDataSource.js.map +0 -7
  752. package/lib/cjs/src/web3-check/data/HttpWeb3CheckDataSource.test.js +0 -2
  753. package/lib/cjs/src/web3-check/data/HttpWeb3CheckDataSource.test.js.map +0 -7
  754. package/lib/cjs/src/web3-check/data/Web3CheckDataSource.js +0 -2
  755. package/lib/cjs/src/web3-check/data/Web3CheckDataSource.js.map +0 -7
  756. package/lib/cjs/src/web3-check/data/Web3CheckDto.js +0 -2
  757. package/lib/cjs/src/web3-check/data/Web3CheckDto.js.map +0 -7
  758. package/lib/cjs/src/web3-check/di/web3CheckModuleFactory.js +0 -2
  759. package/lib/cjs/src/web3-check/di/web3CheckModuleFactory.js.map +0 -7
  760. package/lib/cjs/src/web3-check/di/web3CheckTypes.js +0 -2
  761. package/lib/cjs/src/web3-check/di/web3CheckTypes.js.map +0 -7
  762. package/lib/cjs/src/web3-check/domain/DefaultWeb3CheckLoader.js +0 -2
  763. package/lib/cjs/src/web3-check/domain/DefaultWeb3CheckLoader.js.map +0 -7
  764. package/lib/cjs/src/web3-check/domain/DefaultWeb3CheckLoader.test.js +0 -2
  765. package/lib/cjs/src/web3-check/domain/DefaultWeb3CheckLoader.test.js.map +0 -7
  766. package/lib/cjs/src/web3-check/domain/Web3CheckContextLoader.js +0 -2
  767. package/lib/cjs/src/web3-check/domain/Web3CheckContextLoader.js.map +0 -7
  768. package/lib/cjs/src/web3-check/domain/web3CheckTypes.js +0 -2
  769. package/lib/cjs/src/web3-check/domain/web3CheckTypes.js.map +0 -7
  770. package/lib/esm/src/shared/model/TransactionContext.js +0 -1
  771. package/lib/esm/src/transaction/data/HttpProxyDataSource.js +0 -2
  772. package/lib/esm/src/transaction/data/HttpProxyDataSource.js.map +0 -7
  773. package/lib/esm/src/transaction/data/HttpProxyDataSource.test.js +0 -2
  774. package/lib/esm/src/transaction/data/HttpProxyDataSource.test.js.map +0 -7
  775. package/lib/esm/src/transaction/data/HttpTransactionDataSource.js +0 -2
  776. package/lib/esm/src/transaction/data/HttpTransactionDataSource.js.map +0 -7
  777. package/lib/esm/src/transaction/data/HttpTransactionDataSource.test.js +0 -2
  778. package/lib/esm/src/transaction/data/HttpTransactionDataSource.test.js.map +0 -7
  779. package/lib/esm/src/transaction/data/TransactionDataSource.js +0 -1
  780. package/lib/esm/src/transaction/di/transactionModuleFactory.js +0 -2
  781. package/lib/esm/src/transaction/di/transactionModuleFactory.js.map +0 -7
  782. package/lib/esm/src/transaction/di/transactionTypes.js +0 -2
  783. package/lib/esm/src/transaction/di/transactionTypes.js.map +0 -7
  784. package/lib/esm/src/transaction/domain/TransactionContextLoader.js +0 -2
  785. package/lib/esm/src/transaction/domain/TransactionContextLoader.js.map +0 -7
  786. package/lib/esm/src/transaction/domain/TransactionContextLoader.test.js +0 -2
  787. package/lib/esm/src/transaction/domain/TransactionContextLoader.test.js.map +0 -7
  788. package/lib/esm/src/transaction/model/ProxyImplementationAddress.js +0 -1
  789. package/lib/esm/src/uniswap/constants/plugin.js +0 -2
  790. package/lib/esm/src/uniswap/constants/plugin.js.map +0 -7
  791. package/lib/esm/src/web3-check/data/HttpWeb3CheckDataSource.js +0 -2
  792. package/lib/esm/src/web3-check/data/HttpWeb3CheckDataSource.js.map +0 -7
  793. package/lib/esm/src/web3-check/data/HttpWeb3CheckDataSource.test.js +0 -2
  794. package/lib/esm/src/web3-check/data/HttpWeb3CheckDataSource.test.js.map +0 -7
  795. package/lib/esm/src/web3-check/data/Web3CheckDataSource.js +0 -1
  796. package/lib/esm/src/web3-check/data/Web3CheckDto.js +0 -1
  797. package/lib/esm/src/web3-check/di/web3CheckModuleFactory.js +0 -2
  798. package/lib/esm/src/web3-check/di/web3CheckModuleFactory.js.map +0 -7
  799. package/lib/esm/src/web3-check/di/web3CheckTypes.js +0 -2
  800. package/lib/esm/src/web3-check/di/web3CheckTypes.js.map +0 -7
  801. package/lib/esm/src/web3-check/domain/DefaultWeb3CheckLoader.js +0 -2
  802. package/lib/esm/src/web3-check/domain/DefaultWeb3CheckLoader.js.map +0 -7
  803. package/lib/esm/src/web3-check/domain/DefaultWeb3CheckLoader.test.js +0 -2
  804. package/lib/esm/src/web3-check/domain/DefaultWeb3CheckLoader.test.js.map +0 -7
  805. package/lib/esm/src/web3-check/domain/Web3CheckContextLoader.js +0 -1
  806. package/lib/esm/src/web3-check/domain/web3CheckTypes.js +0 -1
  807. package/lib/types/src/shared/model/TransactionContext.d.ts +0 -21
  808. package/lib/types/src/shared/model/TransactionContext.d.ts.map +0 -1
  809. package/lib/types/src/transaction/data/HttpProxyDataSource.d.ts +0 -32
  810. package/lib/types/src/transaction/data/HttpProxyDataSource.d.ts.map +0 -1
  811. package/lib/types/src/transaction/data/HttpProxyDataSource.test.d.ts.map +0 -1
  812. package/lib/types/src/transaction/data/HttpTransactionDataSource.d.ts.map +0 -1
  813. package/lib/types/src/transaction/data/HttpTransactionDataSource.test.d.ts +0 -2
  814. package/lib/types/src/transaction/data/HttpTransactionDataSource.test.d.ts.map +0 -1
  815. package/lib/types/src/transaction/data/TransactionDataSource.d.ts.map +0 -1
  816. package/lib/types/src/transaction/data/dto/CalldataDto.d.ts.map +0 -1
  817. package/lib/types/src/transaction/data/dto/ProxyDelegateCallDto.d.ts +0 -5
  818. package/lib/types/src/transaction/data/dto/ProxyDelegateCallDto.d.ts.map +0 -1
  819. package/lib/types/src/transaction/data/dto/ProxyImplementationAddressDto.d.ts.map +0 -1
  820. package/lib/types/src/transaction/di/transactionModuleFactory.d.ts +0 -3
  821. package/lib/types/src/transaction/di/transactionModuleFactory.d.ts.map +0 -1
  822. package/lib/types/src/transaction/di/transactionTypes.d.ts +0 -6
  823. package/lib/types/src/transaction/di/transactionTypes.d.ts.map +0 -1
  824. package/lib/types/src/transaction/domain/TransactionContextLoader.d.ts +0 -10
  825. package/lib/types/src/transaction/domain/TransactionContextLoader.d.ts.map +0 -1
  826. package/lib/types/src/transaction/domain/TransactionContextLoader.test.d.ts +0 -2
  827. package/lib/types/src/transaction/domain/TransactionContextLoader.test.d.ts.map +0 -1
  828. package/lib/types/src/transaction/model/ProxyDelegateCall.d.ts +0 -5
  829. package/lib/types/src/transaction/model/ProxyDelegateCall.d.ts.map +0 -1
  830. package/lib/types/src/transaction/model/ProxyImplementationAddress.d.ts +0 -4
  831. package/lib/types/src/transaction/model/ProxyImplementationAddress.d.ts.map +0 -1
  832. package/lib/types/src/uniswap/constants/plugin.d.ts +0 -3
  833. package/lib/types/src/uniswap/constants/plugin.d.ts.map +0 -1
  834. package/lib/types/src/web3-check/data/HttpWeb3CheckDataSource.d.ts +0 -14
  835. package/lib/types/src/web3-check/data/HttpWeb3CheckDataSource.d.ts.map +0 -1
  836. package/lib/types/src/web3-check/data/HttpWeb3CheckDataSource.test.d.ts +0 -2
  837. package/lib/types/src/web3-check/data/HttpWeb3CheckDataSource.test.d.ts.map +0 -1
  838. package/lib/types/src/web3-check/data/Web3CheckDataSource.d.ts +0 -6
  839. package/lib/types/src/web3-check/data/Web3CheckDataSource.d.ts.map +0 -1
  840. package/lib/types/src/web3-check/data/Web3CheckDto.d.ts +0 -20
  841. package/lib/types/src/web3-check/data/Web3CheckDto.d.ts.map +0 -1
  842. package/lib/types/src/web3-check/di/web3CheckModuleFactory.d.ts +0 -3
  843. package/lib/types/src/web3-check/di/web3CheckModuleFactory.d.ts.map +0 -1
  844. package/lib/types/src/web3-check/di/web3CheckTypes.d.ts +0 -5
  845. package/lib/types/src/web3-check/di/web3CheckTypes.d.ts.map +0 -1
  846. package/lib/types/src/web3-check/domain/DefaultWeb3CheckLoader.d.ts +0 -10
  847. package/lib/types/src/web3-check/domain/DefaultWeb3CheckLoader.d.ts.map +0 -1
  848. package/lib/types/src/web3-check/domain/DefaultWeb3CheckLoader.test.d.ts +0 -2
  849. package/lib/types/src/web3-check/domain/DefaultWeb3CheckLoader.test.d.ts.map +0 -1
  850. package/lib/types/src/web3-check/domain/Web3CheckContextLoader.d.ts +0 -6
  851. package/lib/types/src/web3-check/domain/Web3CheckContextLoader.d.ts.map +0 -1
  852. package/lib/types/src/web3-check/domain/web3CheckTypes.d.ts +0 -35
  853. package/lib/types/src/web3-check/domain/web3CheckTypes.d.ts.map +0 -1
  854. /package/lib/cjs/src/{transaction → proxy}/data/dto/ProxyImplementationAddressDto.js +0 -0
  855. /package/lib/esm/src/{shared/model/TransactionContext.js.map → calldata/data/CalldataDescriptorDataSource.js.map} +0 -0
  856. /package/lib/esm/src/{transaction → calldata}/data/dto/CalldataDto.js +0 -0
  857. /package/lib/esm/src/{transaction → calldata}/data/dto/CalldataDto.js.map +0 -0
  858. /package/lib/esm/src/{transaction/data/TransactionDataSource.js.map → dynamic-network/data/DynamicNetworkDataSource.js.map} +0 -0
  859. /package/lib/esm/src/{transaction/data/dto/ProxyDelegateCallDto.js.map → dynamic-network/data/dto/DynamicNetworkApiResponseDto.js.map} +0 -0
  860. /package/lib/esm/src/{transaction/data/dto/ProxyImplementationAddressDto.js.map → dynamic-network/model/DynamicNetworkConfiguration.js.map} +0 -0
  861. /package/lib/esm/src/{transaction/model/ProxyDelegateCall.js.map → proxy/data/ProxyDataSource.js.map} +0 -0
  862. /package/lib/esm/src/{transaction → proxy}/data/dto/ProxyDelegateCallDto.js +0 -0
  863. /package/lib/esm/src/{transaction/model/ProxyImplementationAddress.js.map → proxy/data/dto/ProxyDelegateCallDto.js.map} +0 -0
  864. /package/lib/esm/src/{transaction → proxy}/data/dto/ProxyImplementationAddressDto.js +0 -0
  865. /package/lib/esm/src/{web3-check/data/Web3CheckDataSource.js.map → proxy/data/dto/ProxyImplementationAddressDto.js.map} +0 -0
  866. /package/lib/esm/src/{web3-check/data/Web3CheckDto.js.map → proxy/data/dto/SafeProxyImplementationAddressDto.js.map} +0 -0
  867. /package/lib/esm/src/{transaction → proxy}/model/ProxyDelegateCall.js +0 -0
  868. /package/lib/esm/src/{web3-check/domain/Web3CheckContextLoader.js.map → proxy/model/ProxyDelegateCall.js.map} +0 -0
  869. /package/lib/esm/src/{web3-check/domain/web3CheckTypes.js.map → safe/data/SafeAccountDataSource.js.map} +0 -0
  870. /package/lib/types/src/{transaction → proxy}/data/HttpProxyDataSource.test.d.ts +0 -0
  871. /package/lib/types/src/{transaction → proxy}/data/dto/ProxyImplementationAddressDto.d.ts +0 -0
@@ -0,0 +1,2 @@
1
+ var g=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var S=(d,e,t,a)=>{for(var r=a>1?void 0:a?I(e,t):e,o=d.length-1,n;o>=0;o--)(n=d[o])&&(r=(a?n(e,t,r):n(r))||r);return a&&r&&g(e,t,r),r},i=(d,e)=>(t,a)=>e(t,a,d);import{DeviceModelId as P,isHexaString as C}from"@ledgerhq/device-management-kit";import{inject as y,injectable as M}from"inversify";import{MaybeAsync as D}from"purify-ts";import{calldataTypes as m}from"../../calldata/di/calldataTypes";import{proxyTypes as h}from"../../proxy/di/proxyTypes";import{ClearSignContextType as c}from"../../shared/model/ClearSignContext";const f=[c.TRANSACTION_INFO,c.TRANSACTION_FIELD_DESCRIPTION,c.PROXY_INFO,c.ENUM];let p=class{constructor(e,t,a){this.dappDataSource=e;this.tokenDataSource=t;this.proxyDataSource=a}canHandle(e,t){return typeof e=="object"&&e!==null&&"to"in e&&"data"in e&&"selector"in e&&"chainId"in e&&"deviceModelId"in e&&e.deviceModelId!==void 0&&e.deviceModelId!==P.NANO_S&&typeof e.chainId=="number"&&C(e.to)&&e.to!=="0x"&&C(e.data)&&C(e.selector)&&e.selector!=="0x"&&f.every(a=>t.includes(a))}async load(e){const{to:t,data:a,selector:r,chainId:o,deviceModelId:n}=e,s={address:t,chainId:o,selector:r,deviceModelId:n,data:a};return this._getContexts(s,this.dappDataSource).alt(this._getContexts(s,this.tokenDataSource)).alt(this._getContextsWithProxy(s,this.dappDataSource)).orDefault([{type:c.ERROR,error:new Error("[ContextModule] CalldataContextLoader: No calldata contexts found")}])}_getContexts({address:e,chainId:t,selector:a,deviceModelId:r},o){return D(async({liftMaybe:n})=>{const s=await o.getCalldataDescriptors({deviceModelId:r,address:e,chainId:t,selector:a});return n(s.toMaybe().filter(l=>l.length>0))})}_getContextsWithProxy({address:e,chainId:t,selector:a,deviceModelId:r,data:o},n){return D(async({liftMaybe:l})=>{const x=await this.proxyDataSource.getProxyImplementationAddress({calldata:o,proxyAddress:e,chainId:t,challenge:""});return l(x.toMaybe())}).map(({implementationAddress:l})=>{const x={address:l,chainId:t,selector:a,deviceModelId:r,data:o};return this._getContexts(x,n).map(u=>[{type:c.PROXY_INFO,payload:"0x"},...u])}).join()}};p=S([M(),i(0,y(m.DappCalldataDescriptorDataSource)),i(1,y(m.TokenCalldataDescriptorDataSource)),i(2,y(h.ProxyDataSource))],p);export{p as CalldataContextLoader};
2
+ //# sourceMappingURL=CalldataContextLoader.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/calldata/domain/CalldataContextLoader.ts"],
4
+ "sourcesContent": ["import {\n DeviceModelId,\n HexaString,\n isHexaString,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { MaybeAsync } from \"purify-ts\";\n\nimport type { CalldataDescriptorDataSource } from \"@/calldata/data/CalldataDescriptorDataSource\";\nimport { calldataTypes } from \"@/calldata/di/calldataTypes\";\nimport type { ProxyDataSource } from \"@/proxy/data/ProxyDataSource\";\nimport { proxyTypes } from \"@/proxy/di/proxyTypes\";\nimport { ContextLoader } from \"@/shared/domain/ContextLoader\";\nimport {\n ClearSignContext,\n ClearSignContextType,\n} from \"@/shared/model/ClearSignContext\";\n\nexport type CalldataContextInput = {\n to: HexaString;\n data: HexaString;\n selector: HexaString;\n chainId: number;\n deviceModelId: DeviceModelId;\n};\n\ntype GetContextsParams = {\n address: string;\n chainId: number;\n data: string;\n selector: HexaString;\n deviceModelId: DeviceModelId;\n};\n\nconst SUPPORTED_TYPES: ClearSignContextType[] = [\n ClearSignContextType.TRANSACTION_INFO,\n ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n ClearSignContextType.PROXY_INFO,\n ClearSignContextType.ENUM,\n];\n\n@injectable()\nexport class CalldataContextLoader\n implements ContextLoader<CalldataContextInput>\n{\n constructor(\n @inject(calldataTypes.DappCalldataDescriptorDataSource)\n private dappDataSource: CalldataDescriptorDataSource,\n @inject(calldataTypes.TokenCalldataDescriptorDataSource)\n private tokenDataSource: CalldataDescriptorDataSource,\n @inject(proxyTypes.ProxyDataSource)\n private proxyDataSource: ProxyDataSource,\n ) {}\n\n canHandle(\n input: unknown,\n expectedTypes: ClearSignContextType[],\n ): input is CalldataContextInput {\n return (\n typeof input === \"object\" &&\n input !== null &&\n \"to\" in input &&\n \"data\" in input &&\n \"selector\" in input &&\n \"chainId\" in input &&\n \"deviceModelId\" in input &&\n input.deviceModelId !== undefined &&\n input.deviceModelId !== DeviceModelId.NANO_S &&\n typeof input.chainId === \"number\" &&\n isHexaString(input.to) &&\n input.to !== \"0x\" &&\n isHexaString(input.data) &&\n isHexaString(input.selector) &&\n input.selector !== \"0x\" &&\n SUPPORTED_TYPES.every((type) => expectedTypes.includes(type))\n );\n }\n\n async load(input: CalldataContextInput): Promise<ClearSignContext[]> {\n const { to, data, selector, chainId, deviceModelId } = input;\n\n const param: GetContextsParams = {\n address: to,\n chainId,\n selector,\n deviceModelId,\n data,\n };\n\n return this._getContexts(param, this.dappDataSource)\n .alt(this._getContexts(param, this.tokenDataSource))\n .alt(this._getContextsWithProxy(param, this.dappDataSource))\n .orDefault([\n {\n type: ClearSignContextType.ERROR,\n error: new Error(\n \"[ContextModule] CalldataContextLoader: No calldata contexts found\",\n ),\n },\n ]);\n }\n\n private _getContexts(\n { address, chainId, selector, deviceModelId }: GetContextsParams,\n datasource: CalldataDescriptorDataSource,\n ): MaybeAsync<ClearSignContext[]> {\n return MaybeAsync(async ({ liftMaybe }) => {\n const result = await datasource.getCalldataDescriptors({\n deviceModelId,\n address,\n chainId,\n selector,\n });\n\n return liftMaybe(result.toMaybe().filter((ctxs) => ctxs.length > 0));\n });\n }\n\n private _getContextsWithProxy(\n { address, chainId, selector, deviceModelId, data }: GetContextsParams,\n datasource: CalldataDescriptorDataSource,\n ): MaybeAsync<ClearSignContext[]> {\n const proxyAddress = MaybeAsync(async ({ liftMaybe }) => {\n const result = await this.proxyDataSource.getProxyImplementationAddress({\n calldata: data,\n proxyAddress: address,\n chainId,\n challenge: \"\",\n });\n return liftMaybe(result.toMaybe());\n });\n\n return proxyAddress\n .map<MaybeAsync<ClearSignContext[]>>(({ implementationAddress }) => {\n const params = {\n address: implementationAddress,\n chainId,\n selector,\n deviceModelId,\n data,\n };\n return this._getContexts(params, datasource).map((contexts) => [\n // Add a proxy info context to the list of contexts\n // to specify that the proxy info should be refetched during the provide step\n {\n type: ClearSignContextType.PROXY_INFO,\n payload: \"0x\",\n },\n ...contexts,\n ]);\n })\n .join(); // join the two MaybeAsyncs\n }\n}\n"],
5
+ "mappings": "iOAAA,OACE,iBAAAA,EAEA,gBAAAC,MACK,kCACP,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,YACnC,OAAS,cAAAC,MAAkB,YAG3B,OAAS,iBAAAC,MAAqB,8BAE9B,OAAS,cAAAC,MAAkB,wBAE3B,OAEE,wBAAAC,MACK,kCAkBP,MAAMC,EAA0C,CAC9CC,EAAqB,iBACrBA,EAAqB,8BACrBA,EAAqB,WACrBA,EAAqB,IACvB,EAGO,IAAMC,EAAN,KAEP,CACE,YAEUC,EAEAC,EAEAC,EACR,CALQ,oBAAAF,EAEA,qBAAAC,EAEA,qBAAAC,CACP,CAEH,UACEC,EACAC,EAC+B,CAC/B,OACE,OAAOD,GAAU,UACjBA,IAAU,MACV,OAAQA,GACR,SAAUA,GACV,aAAcA,GACd,YAAaA,GACb,kBAAmBA,GACnBA,EAAM,gBAAkB,QACxBA,EAAM,gBAAkBE,EAAc,QACtC,OAAOF,EAAM,SAAY,UACzBG,EAAaH,EAAM,EAAE,GACrBA,EAAM,KAAO,MACbG,EAAaH,EAAM,IAAI,GACvBG,EAAaH,EAAM,QAAQ,GAC3BA,EAAM,WAAa,MACnBN,EAAgB,MAAOU,GAASH,EAAc,SAASG,CAAI,CAAC,CAEhE,CAEA,MAAM,KAAKJ,EAA0D,CACnE,KAAM,CAAE,GAAAK,EAAI,KAAAC,EAAM,SAAAC,EAAU,QAAAC,EAAS,cAAAC,CAAc,EAAIT,EAEjDU,EAA2B,CAC/B,QAASL,EACT,QAAAG,EACA,SAAAD,EACA,cAAAE,EACA,KAAAH,CACF,EAEA,OAAO,KAAK,aAAaI,EAAO,KAAK,cAAc,EAChD,IAAI,KAAK,aAAaA,EAAO,KAAK,eAAe,CAAC,EAClD,IAAI,KAAK,sBAAsBA,EAAO,KAAK,cAAc,CAAC,EAC1D,UAAU,CACT,CACE,KAAMf,EAAqB,MAC3B,MAAO,IAAI,MACT,mEACF,CACF,CACF,CAAC,CACL,CAEQ,aACN,CAAE,QAAAgB,EAAS,QAAAH,EAAS,SAAAD,EAAU,cAAAE,CAAc,EAC5CG,EACgC,CAChC,OAAOC,EAAW,MAAO,CAAE,UAAAC,CAAU,IAAM,CACzC,MAAMC,EAAS,MAAMH,EAAW,uBAAuB,CACrD,cAAAH,EACA,QAAAE,EACA,QAAAH,EACA,SAAAD,CACF,CAAC,EAED,OAAOO,EAAUC,EAAO,QAAQ,EAAE,OAAQC,GAASA,EAAK,OAAS,CAAC,CAAC,CACrE,CAAC,CACH,CAEQ,sBACN,CAAE,QAAAL,EAAS,QAAAH,EAAS,SAAAD,EAAU,cAAAE,EAAe,KAAAH,CAAK,EAClDM,EACgC,CAWhC,OAVqBC,EAAW,MAAO,CAAE,UAAAC,CAAU,IAAM,CACvD,MAAMC,EAAS,MAAM,KAAK,gBAAgB,8BAA8B,CACtE,SAAUT,EACV,aAAcK,EACd,QAAAH,EACA,UAAW,EACb,CAAC,EACD,OAAOM,EAAUC,EAAO,QAAQ,CAAC,CACnC,CAAC,EAGE,IAAoC,CAAC,CAAE,sBAAAE,CAAsB,IAAM,CAClE,MAAMC,EAAS,CACb,QAASD,EACT,QAAAT,EACA,SAAAD,EACA,cAAAE,EACA,KAAAH,CACF,EACA,OAAO,KAAK,aAAaY,EAAQN,CAAU,EAAE,IAAKO,GAAa,CAG7D,CACE,KAAMxB,EAAqB,WAC3B,QAAS,IACX,EACA,GAAGwB,CACL,CAAC,CACH,CAAC,EACA,KAAK,CACV,CACF,EA/GavB,EAANwB,EAAA,CADNC,EAAW,EAKPC,EAAA,EAAAC,EAAOC,EAAc,gCAAgC,GAErDF,EAAA,EAAAC,EAAOC,EAAc,iCAAiC,GAEtDF,EAAA,EAAAC,EAAOE,EAAW,eAAe,IARzB7B",
6
+ "names": ["DeviceModelId", "isHexaString", "inject", "injectable", "MaybeAsync", "calldataTypes", "proxyTypes", "ClearSignContextType", "SUPPORTED_TYPES", "ClearSignContextType", "CalldataContextLoader", "dappDataSource", "tokenDataSource", "proxyDataSource", "input", "expectedTypes", "DeviceModelId", "isHexaString", "type", "to", "data", "selector", "chainId", "deviceModelId", "param", "address", "datasource", "MaybeAsync", "liftMaybe", "result", "ctxs", "implementationAddress", "params", "contexts", "__decorateClass", "injectable", "__decorateParam", "inject", "calldataTypes", "proxyTypes"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{DeviceModelId as l}from"@ledgerhq/device-management-kit";import{Left as s,Right as n}from"purify-ts";import{CalldataContextLoader as f}from"../../calldata/domain/CalldataContextLoader";import{ClearSignContextType as a}from"../../shared/model/ClearSignContext";describe("CalldataContextLoader",()=>{const r=vi.fn(),d=vi.fn(),p=vi.fn(),u={getCalldataDescriptors:d},x={getCalldataDescriptors:p},I={getProxyImplementationAddress:r},o=new f(u,x,I),c=[a.TRANSACTION_INFO,a.TRANSACTION_FIELD_DESCRIPTION,a.PROXY_INFO,a.ENUM];beforeEach(()=>{vi.resetAllMocks()}),describe("canHandle function",()=>{const e={to:"0x1234567890123456789012345678901234567890",data:"0xaf68b302000000000000000000000000000000000000000000000000000000000002",selector:"0xaf68b302",chainId:1,deviceModelId:l.NANO_X};it("should return true for valid input",()=>{expect(o.canHandle(e,c)).toBe(!0)}),it("should return false for invalid expected type",()=>{expect(o.canHandle(e,[a.TOKEN])).toBe(!1),expect(o.canHandle(e,[a.NFT])).toBe(!1),expect(o.canHandle(e,[a.PROXY_INFO])).toBe(!1),expect(o.canHandle(e,[a.ENUM])).toBe(!1),expect(o.canHandle(e,[a.TRANSACTION_INFO])).toBe(!1)}),it.each([[null,"null input"],[void 0,"undefined input"],[{},"empty object"],["string","string input"],[123,"number input"]])("should return false for %s",(t,i)=>{expect(o.canHandle(t,c)).toBe(!1)}),it.each([[{...e,to:void 0},"missing to"],[{...e,data:void 0},"missing data"],[{...e,selector:void 0},"missing selector"],[{...e,chainId:void 0},"missing chainId"],[{...e,deviceModelId:void 0},"missing deviceModelId"]])("should return false for %s",(t,i)=>{expect(o.canHandle(t,c)).toBe(!1)}),it.each([[{...e,to:"invalid-hex"},"invalid to hex"],[{...e,to:"0x"},"empty to hex"],[{...e,data:"invalid-hex"},"invalid data hex"],[{...e,selector:"invalid-hex"},"invalid selector hex"],[{...e,selector:"0x"},"empty selector hex"]])("should return false for %s",(t,i)=>{expect(o.canHandle(t,c)).toBe(!1)}),it.each([[{...e,chainId:"1"},"string chainId"],[{...e,chainId:null},"null chainId"],[{...e,deviceModelId:l.NANO_S},"deviceModelId is NANO_S"]])("should return false for %s",(t,i)=>{expect(o.canHandle(t,c)).toBe(!1)})}),it("should return an error if data source fails",async()=>{r.mockResolvedValue(s(new Error("data source error"))),d.mockResolvedValue(s(new Error("data source error")));const e={to:"0x1234567890123456789012345678901234567890",chainId:3,data:"0xaf68b302000000000000000000000000000000000000000000000000000000000002",selector:"0xaf68b302",deviceModelId:l.NANO_X},t=await o.load(e);expect(d).toHaveBeenCalledWith({address:"0x1234567890123456789012345678901234567890",chainId:3,selector:"0xaf68b302",deviceModelId:l.NANO_X}),expect(t).toEqual([{type:a.ERROR,error:new Error("[ContextModule] CalldataContextLoader: No calldata contexts found")}])}),it("should return the contexts on success",async()=>{d.mockResolvedValue(n([{type:a.TRANSACTION_INFO,payload:"1234567890"},{type:a.TRANSACTION_FIELD_DESCRIPTION,payload:"deadbeef"}])),r.mockResolvedValue(s(new Error("data source error")));const e={to:"0x1234567890123456789012345678901234567890",chainId:3,data:"0xaf68b302000000000000000000000000000000000000000000000000000000000002",selector:"0xaf68b302",deviceModelId:l.NANO_X},t=await o.load(e);expect(t).toEqual([{type:a.TRANSACTION_INFO,payload:"1234567890"},{type:a.TRANSACTION_FIELD_DESCRIPTION,payload:"deadbeef"}])}),it("should return the proxy delegate call context on success",async()=>{d.mockResolvedValueOnce(n([])),d.mockResolvedValue(n([{type:a.TRANSACTION_INFO,payload:"1234567890"},{type:a.TRANSACTION_FIELD_DESCRIPTION,payload:"deadbeef"}])),r.mockResolvedValue(n({implementationAddress:"0x1234567890abcdef",signedDescriptor:"0x1234567890abcdef"}));const e={to:"0x1234567890123456789012345678901234567890",chainId:3,data:"0xaf68b302000000000000000000000000000000000000000000000000000000000002",selector:"0xaf68b302",deviceModelId:l.NANO_X},t=await o.load(e);expect(t).toEqual([{type:a.PROXY_INFO,payload:"0x"},{type:a.TRANSACTION_INFO,payload:"1234567890"},{type:a.TRANSACTION_FIELD_DESCRIPTION,payload:"deadbeef"}])}),it("should return an error when proxy delegate call succeeds but transaction descriptors for resolved address fail",async()=>{d.mockResolvedValueOnce(n([])),d.mockResolvedValueOnce(s(new Error("data source error"))),r.mockResolvedValue(n({implementationAddress:"0xResolvedAddress",signedDescriptor:"0x1234567890abcdef"}));const e={to:"0x1234567890123456789012345678901234567890",chainId:3,data:"0xaf68b302000000000000000000000000000000000000000000000000000000000002",selector:"0xaf68b302",deviceModelId:l.NANO_X},t=await o.load(e);expect(d).toHaveBeenCalledTimes(2),expect(d).toHaveBeenNthCalledWith(2,{address:"0xResolvedAddress",chainId:3,selector:"0xaf68b302",deviceModelId:l.NANO_X}),expect(t).toEqual([{type:a.ERROR,error:new Error("[ContextModule] CalldataContextLoader: No calldata contexts found")}])})});
2
+ //# sourceMappingURL=CalldataContextLoader.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/calldata/domain/CalldataContextLoader.test.ts"],
4
+ "sourcesContent": ["import { DeviceModelId } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\n\nimport type { CalldataDescriptorDataSource } from \"@/calldata/data/CalldataDescriptorDataSource\";\nimport {\n type CalldataContextInput,\n CalldataContextLoader,\n} from \"@/calldata/domain/CalldataContextLoader\";\nimport type { ProxyDataSource } from \"@/proxy/data/ProxyDataSource\";\nimport { ClearSignContextType } from \"@/shared/model/ClearSignContext\";\n\ndescribe(\"CalldataContextLoader\", () => {\n const getProxyImplementationAddress = vi.fn();\n const getDappDescriptorsMock = vi.fn();\n const getTokenDescriptorsMock = vi.fn();\n const mockDappDataSource: CalldataDescriptorDataSource = {\n getCalldataDescriptors: getDappDescriptorsMock,\n };\n const mockTokenDataSource: CalldataDescriptorDataSource = {\n getCalldataDescriptors: getTokenDescriptorsMock,\n };\n const mockProxyDatasource: ProxyDataSource = {\n getProxyImplementationAddress: getProxyImplementationAddress,\n };\n const loader = new CalldataContextLoader(\n mockDappDataSource,\n mockTokenDataSource,\n mockProxyDatasource,\n );\n const SUPPORTED_TYPES: ClearSignContextType[] = [\n ClearSignContextType.TRANSACTION_INFO,\n ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n ClearSignContextType.PROXY_INFO,\n ClearSignContextType.ENUM,\n ];\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"canHandle function\", () => {\n const validInput: CalldataContextInput = {\n to: \"0x1234567890123456789012345678901234567890\",\n data: \"0xaf68b302000000000000000000000000000000000000000000000000000000000002\",\n selector: \"0xaf68b302\",\n chainId: 1,\n deviceModelId: DeviceModelId.NANO_X,\n };\n\n it(\"should return true for valid input\", () => {\n expect(loader.canHandle(validInput, SUPPORTED_TYPES)).toBe(true);\n });\n\n it(\"should return false for invalid expected type\", () => {\n expect(loader.canHandle(validInput, [ClearSignContextType.TOKEN])).toBe(\n false,\n );\n expect(loader.canHandle(validInput, [ClearSignContextType.NFT])).toBe(\n false,\n );\n expect(\n loader.canHandle(validInput, [ClearSignContextType.PROXY_INFO]),\n ).toBe(false);\n expect(loader.canHandle(validInput, [ClearSignContextType.ENUM])).toBe(\n false,\n );\n expect(\n loader.canHandle(validInput, [ClearSignContextType.TRANSACTION_INFO]),\n ).toBe(false);\n });\n\n it.each([\n [null, \"null input\"],\n [undefined, \"undefined input\"],\n [{}, \"empty object\"],\n [\"string\", \"string input\"],\n [123, \"number input\"],\n ])(\"should return false for %s\", (input, _description) => {\n expect(loader.canHandle(input, SUPPORTED_TYPES)).toBe(false);\n });\n\n it.each([\n [{ ...validInput, to: undefined }, \"missing to\"],\n [{ ...validInput, data: undefined }, \"missing data\"],\n [{ ...validInput, selector: undefined }, \"missing selector\"],\n [{ ...validInput, chainId: undefined }, \"missing chainId\"],\n [{ ...validInput, deviceModelId: undefined }, \"missing deviceModelId\"],\n ])(\"should return false for %s\", (input, _description) => {\n expect(loader.canHandle(input, SUPPORTED_TYPES)).toBe(false);\n });\n\n it.each([\n [{ ...validInput, to: \"invalid-hex\" }, \"invalid to hex\"],\n [{ ...validInput, to: \"0x\" }, \"empty to hex\"],\n [{ ...validInput, data: \"invalid-hex\" }, \"invalid data hex\"],\n [{ ...validInput, selector: \"invalid-hex\" }, \"invalid selector hex\"],\n [{ ...validInput, selector: \"0x\" }, \"empty selector hex\"],\n ])(\"should return false for %s\", (input, _description) => {\n expect(loader.canHandle(input, SUPPORTED_TYPES)).toBe(false);\n });\n\n it.each([\n [{ ...validInput, chainId: \"1\" }, \"string chainId\"],\n [{ ...validInput, chainId: null }, \"null chainId\"],\n [\n { ...validInput, deviceModelId: DeviceModelId.NANO_S },\n \"deviceModelId is NANO_S\",\n ],\n ])(\"should return false for %s\", (input, _description) => {\n expect(loader.canHandle(input, SUPPORTED_TYPES)).toBe(false);\n });\n });\n\n it(\"should return an error if data source fails\", async () => {\n // GIVEN\n getProxyImplementationAddress.mockResolvedValue(\n Left(new Error(\"data source error\")),\n );\n getDappDescriptorsMock.mockResolvedValue(\n Left(new Error(\"data source error\")),\n );\n const input = {\n to: \"0x1234567890123456789012345678901234567890\",\n chainId: 3,\n data: \"0xaf68b302000000000000000000000000000000000000000000000000000000000002\",\n selector: \"0xaf68b302\",\n deviceModelId: DeviceModelId.NANO_X,\n } as CalldataContextInput;\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(getDappDescriptorsMock).toHaveBeenCalledWith({\n address: \"0x1234567890123456789012345678901234567890\",\n chainId: 3,\n selector: \"0xaf68b302\",\n deviceModelId: DeviceModelId.NANO_X,\n });\n expect(result).toEqual([\n {\n type: ClearSignContextType.ERROR,\n error: new Error(\n \"[ContextModule] CalldataContextLoader: No calldata contexts found\",\n ),\n },\n ]);\n });\n\n it(\"should return the contexts on success\", async () => {\n // GIVEN\n getDappDescriptorsMock.mockResolvedValue(\n Right([\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"1234567890\",\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"deadbeef\",\n },\n ]),\n );\n getProxyImplementationAddress.mockResolvedValue(\n Left(new Error(\"data source error\")),\n );\n const input = {\n to: \"0x1234567890123456789012345678901234567890\",\n chainId: 3,\n data: \"0xaf68b302000000000000000000000000000000000000000000000000000000000002\",\n selector: \"0xaf68b302\",\n deviceModelId: DeviceModelId.NANO_X,\n } as CalldataContextInput;\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(result).toEqual([\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"1234567890\",\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"deadbeef\",\n },\n ]);\n });\n\n it(\"should return the proxy delegate call context on success\", async () => {\n // GIVEN\n getDappDescriptorsMock.mockResolvedValueOnce(Right([])); // No transaction descriptors found for the first call\n getDappDescriptorsMock.mockResolvedValue(\n Right([\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"1234567890\",\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"deadbeef\",\n },\n ]),\n );\n getProxyImplementationAddress.mockResolvedValue(\n Right({\n implementationAddress: \"0x1234567890abcdef\",\n signedDescriptor: \"0x1234567890abcdef\",\n }),\n );\n const input = {\n to: \"0x1234567890123456789012345678901234567890\",\n chainId: 3,\n data: \"0xaf68b302000000000000000000000000000000000000000000000000000000000002\",\n selector: \"0xaf68b302\",\n deviceModelId: DeviceModelId.NANO_X,\n } as CalldataContextInput;\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(result).toEqual([\n {\n type: ClearSignContextType.PROXY_INFO,\n payload: \"0x\",\n },\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"1234567890\",\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"deadbeef\",\n },\n ]);\n });\n\n it(\"should return an error when proxy delegate call succeeds but transaction descriptors for resolved address fail\", async () => {\n // GIVEN\n getDappDescriptorsMock.mockResolvedValueOnce(Right([])); // No transaction descriptors found for the first call\n getDappDescriptorsMock.mockResolvedValueOnce(\n Left(new Error(\"data source error\")),\n ); // Second call fails\n getProxyImplementationAddress.mockResolvedValue(\n Right({\n implementationAddress: \"0xResolvedAddress\",\n signedDescriptor: \"0x1234567890abcdef\",\n }),\n );\n const input = {\n to: \"0x1234567890123456789012345678901234567890\",\n chainId: 3,\n data: \"0xaf68b302000000000000000000000000000000000000000000000000000000000002\",\n selector: \"0xaf68b302\",\n deviceModelId: DeviceModelId.NANO_X,\n } as CalldataContextInput;\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(getDappDescriptorsMock).toHaveBeenCalledTimes(2);\n expect(getDappDescriptorsMock).toHaveBeenNthCalledWith(2, {\n address: \"0xResolvedAddress\",\n chainId: 3,\n selector: \"0xaf68b302\",\n deviceModelId: DeviceModelId.NANO_X,\n });\n expect(result).toEqual([\n {\n type: ClearSignContextType.ERROR,\n error: new Error(\n \"[ContextModule] CalldataContextLoader: No calldata contexts found\",\n ),\n },\n ]);\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["DeviceModelId", "Left", "Right", "CalldataContextLoader", "ClearSignContextType", "getProxyImplementationAddress", "getDappDescriptorsMock", "getTokenDescriptorsMock", "mockDappDataSource", "mockTokenDataSource", "mockProxyDatasource", "loader", "SUPPORTED_TYPES", "validInput", "input", "_description", "result"]
7
+ }
package/lib/esm/src/di.js CHANGED
@@ -1,2 +1,2 @@
1
- import{Container as t}from"inversify";import{configModuleFactory as e}from"./config/di/configModuleFactory";import{externalPluginModuleFactory as n}from"./external-plugin/di/externalPluginModuleFactory";import{nftModuleFactory as a}from"./nft/di/nftModuleFactory";import{nanoPkiModuleFactory as m}from"./pki/di/pkiModuleFactory";import{solanaContextModuleFactory as i}from"./solana/di/SolanaContextModuleFactory";import{tokenModuleFactory as c}from"./token/di/tokenModuleFactory";import{transactionModuleFactory as f}from"./transaction/di/transactionModuleFactory";import{trustedNameModuleFactory as p}from"./trusted-name/di/trustedNameModuleFactory";import{typedDataModuleFactory as l}from"./typed-data/di/typedDataModuleFactory";import{uniswapModuleFactory as u}from"./uniswap/di/uniswapModuleFactory";import{web3CheckModuleFactory as d}from"./web3-check/di/web3CheckModuleFactory";const h=({config:r})=>{const o=new t;return o.loadSync(e(r),n(),a(),c(),f(),p(),l(),m(),u(),d(),i()),o};export{h 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 { configModuleFactory } from \"@/config/di/configModuleFactory\";\nimport { type ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport { externalPluginModuleFactory } from \"@/external-plugin/di/externalPluginModuleFactory\";\nimport { nftModuleFactory } from \"@/nft/di/nftModuleFactory\";\nimport { nanoPkiModuleFactory } from \"@/pki/di/pkiModuleFactory\";\nimport { solanaContextModuleFactory } from \"@/solana/di/SolanaContextModuleFactory\";\nimport { tokenModuleFactory } from \"@/token/di/tokenModuleFactory\";\nimport { transactionModuleFactory } from \"@/transaction/di/transactionModuleFactory\";\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 nftModuleFactory(),\n tokenModuleFactory(),\n transactionModuleFactory(),\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,uBAAAC,MAA2B,kCAEpC,OAAS,+BAAAC,MAAmC,mDAC5C,OAAS,oBAAAC,MAAwB,4BACjC,OAAS,wBAAAC,MAA4B,4BACrC,OAAS,8BAAAC,MAAkC,yCAC3C,OAAS,sBAAAC,MAA0B,gCACnC,OAAS,4BAAAC,MAAgC,4CACzC,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,IAAId,EAEtB,OAAAc,EAAU,SACRb,EAAoBY,CAAM,EAC1BX,EAA4B,EAC5BC,EAAiB,EACjBG,EAAmB,EACnBC,EAAyB,EACzBC,EAAyB,EACzBC,EAAuB,EACvBL,EAAqB,EACrBM,EAAqB,EACrBC,EAAuB,EACvBN,EAA2B,CAC7B,EAEOS,CACT",
6
- "names": ["Container", "configModuleFactory", "externalPluginModuleFactory", "nftModuleFactory", "nanoPkiModuleFactory", "solanaContextModuleFactory", "tokenModuleFactory", "transactionModuleFactory", "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
  }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=DynamicNetworkDataSource.js.map
@@ -0,0 +1,2 @@
1
+ var u=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var f=(n,o,r,e)=>{for(var t=e>1?void 0:e?m(o,r):o,i=n.length-1,a;i>=0;i--)(a=n[i])&&(t=(e?a(o,r,t):a(t))||t);return e&&t&&u(o,r,t),t},p=(n,o)=>(r,e)=>o(r,e,n);import d from"axios";import{inject as g,injectable as y}from"inversify";import{Left as c,Right as l}from"purify-ts";import{configTypes as D}from"../../config/di/configTypes";import{LEDGER_CLIENT_VERSION_HEADER as w}from"../../shared/constant/HttpHeaders";import k from"../../../package.json";let s=class{constructor(o){this.config=o}async getDynamicNetworkConfiguration(o){let r;try{r=(await d.get(`${this.config.cal.url}/networks?output=id,descriptors,icons&chain_id=${o}`,{headers:{[w]:`context-module/${k.version}`}})).data}catch(i){return c(i instanceof Error?i:new Error("Failed to fetch network configuration"))}const e=r?.[0];if(!e)return c(new Error(`Network configuration not found for chain ID: ${o}`));if(!this.isValidNetworkData(e))return c(new Error(`Invalid network configuration response for chain ID: ${o}`));const t=this.transformToNetworkConfiguration(e);return l(t)}isValidNetworkData(o){if(!o||typeof o!="object")return!1;const r=o;if(typeof r.id!="string"||!r.descriptors||typeof r.descriptors!="object")return!1;for(const e of Object.values(r.descriptors))if(!this.isValidDescriptor(e))return!1;return!(r.icons&&typeof r.icons!="object")}isValidDescriptor(o){if(!o||typeof o!="object")return!1;const r=o;if(typeof r.data!="string"||typeof r.descriptorType!="string"||typeof r.descriptorVersion!="string"||!r.signatures||typeof r.signatures!="object")return!1;const e=r.signatures;return!(typeof e.prod!="string"||typeof e.test!="string")}transformToNetworkConfiguration(o){const r=Object.entries(o.descriptors).reduce((e,[t,i])=>(e[t]={descriptorType:i.descriptorType,descriptorVersion:i.descriptorVersion,data:i.data,signatures:i.signatures,icon:o.icons?.[t]},e),{});return{id:o.id,descriptors:r}}};s=f([y(),p(0,g(D.Config))],s);export{s as HttpDynamicNetworkDataSource};
2
+ //# sourceMappingURL=HttpDynamicNetworkDataSource.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/dynamic-network/data/HttpDynamicNetworkDataSource.ts"],
4
+ "sourcesContent": ["import { type DeviceModelId } 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 type DynamicNetworkConfiguration,\n type DynamicNetworkDescriptor,\n} from \"@/dynamic-network/model/DynamicNetworkConfiguration\";\nimport { LEDGER_CLIENT_VERSION_HEADER } from \"@/shared/constant/HttpHeaders\";\nimport PACKAGE from \"@root/package.json\";\n\nimport { type DynamicNetworkApiResponseDto } from \"./dto/DynamicNetworkApiResponseDto\";\nimport { type DynamicNetworkDataSource } from \"./DynamicNetworkDataSource\";\n\n@injectable()\nexport class HttpDynamicNetworkDataSource implements DynamicNetworkDataSource {\n constructor(\n @inject(configTypes.Config) private readonly config: ContextModuleConfig,\n ) {}\n\n async getDynamicNetworkConfiguration(\n chainId: number,\n ): Promise<Either<Error, DynamicNetworkConfiguration>> {\n let response: DynamicNetworkApiResponseDto;\n\n try {\n const axiosResponse = await axios.get<DynamicNetworkApiResponseDto>(\n `${this.config.cal.url}/networks?output=id,descriptors,icons&chain_id=${chainId}`,\n {\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n },\n },\n );\n response = axiosResponse.data;\n } catch (error) {\n return Left(\n error instanceof Error\n ? error\n : new Error(\"Failed to fetch network configuration\"),\n );\n }\n\n const networkData = response?.[0];\n if (!networkData) {\n return Left(\n new Error(`Network configuration not found for chain ID: ${chainId}`),\n );\n }\n\n // Validate response structure\n if (!this.isValidNetworkData(networkData)) {\n return Left(\n new Error(\n `Invalid network configuration response for chain ID: ${chainId}`,\n ),\n );\n }\n\n const configuration = this.transformToNetworkConfiguration(networkData);\n return Right(configuration);\n }\n\n private isValidNetworkData(\n data: unknown,\n ): data is DynamicNetworkApiResponseDto[0] {\n if (!data || typeof data !== \"object\") {\n return false;\n }\n\n const obj = data as Record<string, unknown>;\n\n // Check required fields\n if (typeof obj[\"id\"] !== \"string\") {\n return false;\n }\n\n // Check descriptors structure\n if (!obj[\"descriptors\"] || typeof obj[\"descriptors\"] !== \"object\") {\n return false;\n }\n\n // Validate each descriptor\n for (const descriptor of Object.values(obj[\"descriptors\"])) {\n if (!this.isValidDescriptor(descriptor)) {\n return false;\n }\n }\n\n // Icons are optional but if present, should be an object\n if (obj[\"icons\"] && typeof obj[\"icons\"] !== \"object\") {\n return false;\n }\n\n return true;\n }\n\n private isValidDescriptor(\n descriptor: unknown,\n ): descriptor is DynamicNetworkApiResponseDto[0][\"descriptors\"][string] {\n if (!descriptor || typeof descriptor !== \"object\") {\n return false;\n }\n\n const desc = descriptor as Record<string, unknown>;\n\n // Check required descriptor fields\n if (\n typeof desc[\"data\"] !== \"string\" ||\n typeof desc[\"descriptorType\"] !== \"string\" ||\n typeof desc[\"descriptorVersion\"] !== \"string\"\n ) {\n return false;\n }\n\n // Check signatures structure\n if (!desc[\"signatures\"] || typeof desc[\"signatures\"] !== \"object\") {\n return false;\n }\n\n const signatures = desc[\"signatures\"] as Record<string, unknown>;\n if (\n typeof signatures[\"prod\"] !== \"string\" ||\n typeof signatures[\"test\"] !== \"string\"\n ) {\n return false;\n }\n\n return true;\n }\n\n private transformToNetworkConfiguration(\n networkData: DynamicNetworkApiResponseDto[0],\n ): DynamicNetworkConfiguration {\n const descriptors = Object.entries(networkData.descriptors).reduce(\n (acc, [deviceModel, descriptor]) => {\n acc[deviceModel as DeviceModelId] = {\n descriptorType: descriptor.descriptorType,\n descriptorVersion: descriptor.descriptorVersion,\n data: descriptor.data,\n signatures: descriptor.signatures,\n icon: networkData.icons?.[deviceModel],\n };\n return acc;\n },\n {} as Record<DeviceModelId, DynamicNetworkDescriptor>,\n );\n\n return {\n id: networkData.id,\n descriptors,\n };\n }\n}\n"],
5
+ "mappings": "iOACA,OAAOA,MAAW,QAClB,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,YACnC,OAAiB,QAAAC,EAAM,SAAAC,MAAa,YAEpC,OAAS,eAAAC,MAAmB,0BAM5B,OAAS,gCAAAC,MAAoC,gCAC7C,OAAOC,MAAa,qBAMb,IAAMC,EAAN,KAAuE,CAC5E,YAC+CC,EAC7C,CAD6C,YAAAA,CAC5C,CAEH,MAAM,+BACJC,EACqD,CACrD,IAAIC,EAEJ,GAAI,CASFA,GARsB,MAAMC,EAAM,IAChC,GAAG,KAAK,OAAO,IAAI,GAAG,kDAAkDF,CAAO,GAC/E,CACE,QAAS,CACP,CAACG,CAA4B,EAAG,kBAAkBC,EAAQ,OAAO,EACnE,CACF,CACF,GACyB,IAC3B,OAASC,EAAO,CACd,OAAOC,EACLD,aAAiB,MACbA,EACA,IAAI,MAAM,uCAAuC,CACvD,CACF,CAEA,MAAME,EAAcN,IAAW,CAAC,EAChC,GAAI,CAACM,EACH,OAAOD,EACL,IAAI,MAAM,iDAAiDN,CAAO,EAAE,CACtE,EAIF,GAAI,CAAC,KAAK,mBAAmBO,CAAW,EACtC,OAAOD,EACL,IAAI,MACF,wDAAwDN,CAAO,EACjE,CACF,EAGF,MAAMQ,EAAgB,KAAK,gCAAgCD,CAAW,EACtE,OAAOE,EAAMD,CAAa,CAC5B,CAEQ,mBACNE,EACyC,CACzC,GAAI,CAACA,GAAQ,OAAOA,GAAS,SAC3B,MAAO,GAGT,MAAMC,EAAMD,EAQZ,GALI,OAAOC,EAAI,IAAU,UAKrB,CAACA,EAAI,aAAkB,OAAOA,EAAI,aAAmB,SACvD,MAAO,GAIT,UAAWC,KAAc,OAAO,OAAOD,EAAI,WAAc,EACvD,GAAI,CAAC,KAAK,kBAAkBC,CAAU,EACpC,MAAO,GAKX,MAAI,EAAAD,EAAI,OAAY,OAAOA,EAAI,OAAa,SAK9C,CAEQ,kBACNC,EACsE,CACtE,GAAI,CAACA,GAAc,OAAOA,GAAe,SACvC,MAAO,GAGT,MAAMC,EAAOD,EAYb,GARE,OAAOC,EAAK,MAAY,UACxB,OAAOA,EAAK,gBAAsB,UAClC,OAAOA,EAAK,mBAAyB,UAMnC,CAACA,EAAK,YAAiB,OAAOA,EAAK,YAAkB,SACvD,MAAO,GAGT,MAAMC,EAAaD,EAAK,WACxB,MACE,SAAOC,EAAW,MAAY,UAC9B,OAAOA,EAAW,MAAY,SAMlC,CAEQ,gCACNP,EAC6B,CAC7B,MAAMQ,EAAc,OAAO,QAAQR,EAAY,WAAW,EAAE,OAC1D,CAACS,EAAK,CAACC,EAAaL,CAAU,KAC5BI,EAAIC,CAA4B,EAAI,CAClC,eAAgBL,EAAW,eAC3B,kBAAmBA,EAAW,kBAC9B,KAAMA,EAAW,KACjB,WAAYA,EAAW,WACvB,KAAML,EAAY,QAAQU,CAAW,CACvC,EACOD,GAET,CAAC,CACH,EAEA,MAAO,CACL,GAAIT,EAAY,GAChB,YAAAQ,CACF,CACF,CACF,EA1IajB,EAANoB,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAY,MAAM,IAFjBxB",
6
+ "names": ["axios", "inject", "injectable", "Left", "Right", "configTypes", "LEDGER_CLIENT_VERSION_HEADER", "PACKAGE", "HttpDynamicNetworkDataSource", "config", "chainId", "response", "axios", "LEDGER_CLIENT_VERSION_HEADER", "PACKAGE", "error", "Left", "networkData", "configuration", "Right", "data", "obj", "descriptor", "desc", "signatures", "descriptors", "acc", "deviceModel", "__decorateClass", "injectable", "__decorateParam", "inject", "configTypes"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import a from"axios";import{Left as c,Right as u}from"purify-ts";import{beforeAll as g,beforeEach as p,describe as l,expect as o,it as i,vi as r}from"vitest";import{HttpDynamicNetworkDataSource as w}from"./HttpDynamicNetworkDataSource";r.mock("axios");l("HttpNetworkDataSource",()=>{let n;const f={cal:{url:"https://crypto-assets-service.api.ledger.com",mode:"prod",branch:"main"}},s={data:[{id:"ethereum",descriptors:{flex:{data:"0x010108020101510101230800000000000000895207506f6c79676f6e2403504f4c",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"3045022100c116b5470c266c2947b92aa9eadbe3da03305efc6b8fee041e04e8484a9834af022041d5b82b359614ea8dd94a542dfd87b0ae6f3b4a075aad9a53a030064ab42cd0",test:"3045022100f78bac5c9c3f2ceeea26680aaea17be61fce84ae7ec983a8194e68275f4fe5900220231afbe39fcec63edfea2b4e787a72d79ce53d6a4c408f24b5a116905a9082d3"}},stax:{data:"0x010108020101510101230800000000000000895207506f6c79676f6e2403504f4c53204aa5034d2fd4c46647d382aa64d0a03d06b185512bb7942390318bda18d0423a",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"3045022100cf42c039c16fc95dc97c09f15cdd93bed0e63ee45cf5c38c2b30bb8a3bc17f8d022053a96c9e51695c3c1c1a31f5cbf84bd6febadc97f4bb02bdc67cf3e24ad0c32d",test:"304402207e1e1b8f99b45c95b0cf1e90f46cf07e6a90f82c49ccdb6e2e95ab0c1e2f5a370220784e1fac16bb01c5d096733e1cbf067d616e4de659fda2c388f8c3502e7f7f80"}}}}]};g(()=>{n=new w(f)}),p(()=>{r.clearAllMocks()}),l("getNetworkConfiguration",()=>{i("should return network configuration successfully",async()=>{r.mocked(a.get).mockResolvedValue(s);const e=await n.getDynamicNetworkConfiguration(1);o(a.get).toHaveBeenCalledWith("https://crypto-assets-service.api.ledger.com/networks?output=id,descriptors,icons&chain_id=1",o.objectContaining({headers:o.any(Object)})),o(e).toEqual(u({id:"ethereum",descriptors:{flex:{data:"0x010108020101510101230800000000000000895207506f6c79676f6e2403504f4c",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"3045022100c116b5470c266c2947b92aa9eadbe3da03305efc6b8fee041e04e8484a9834af022041d5b82b359614ea8dd94a542dfd87b0ae6f3b4a075aad9a53a030064ab42cd0",test:"3045022100f78bac5c9c3f2ceeea26680aaea17be61fce84ae7ec983a8194e68275f4fe5900220231afbe39fcec63edfea2b4e787a72d79ce53d6a4c408f24b5a116905a9082d3"},icon:void 0},stax:{data:"0x010108020101510101230800000000000000895207506f6c79676f6e2403504f4c53204aa5034d2fd4c46647d382aa64d0a03d06b185512bb7942390318bda18d0423a",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"3045022100cf42c039c16fc95dc97c09f15cdd93bed0e63ee45cf5c38c2b30bb8a3bc17f8d022053a96c9e51695c3c1c1a31f5cbf84bd6febadc97f4bb02bdc67cf3e24ad0c32d",test:"304402207e1e1b8f99b45c95b0cf1e90f46cf07e6a90f82c49ccdb6e2e95ab0c1e2f5a370220784e1fac16bb01c5d096733e1cbf067d616e4de659fda2c388f8c3502e7f7f80"},icon:void 0}}}))}),i("should return error when network data is not found",async()=>{r.mocked(a.get).mockResolvedValue({data:[]});const e=await n.getDynamicNetworkConfiguration(1);o(e).toEqual(c(new Error("Network configuration not found for chain ID: 1")))}),i("should return error when network data is undefined",async()=>{r.mocked(a.get).mockResolvedValue({data:void 0});const e=await n.getDynamicNetworkConfiguration(1);o(e).toEqual(c(new Error("Network configuration not found for chain ID: 1")))}),i("should return error when axios throws an error",async()=>{r.mocked(a.get).mockRejectedValue(new Error("Network error"));const e=await n.getDynamicNetworkConfiguration(1);o(e).toEqual(c(new Error("Network error")))}),i("should return generic error when axios throws non-Error",async()=>{r.mocked(a.get).mockRejectedValue("String error");const e=await n.getDynamicNetworkConfiguration(1);o(e).toEqual(c(new Error("Failed to fetch network configuration")))}),i("should handle invalid data - missing id",async()=>{const e={data:[{descriptors:{}}]};r.mocked(a.get).mockResolvedValue(e);const t=await n.getDynamicNetworkConfiguration(1);o(t).toEqual(c(new Error("Invalid network configuration response for chain ID: 1")))}),i("should handle invalid data - missing descriptors",async()=>{const e={data:[{id:"ethereum"}]};r.mocked(a.get).mockResolvedValue(e);const t=await n.getDynamicNetworkConfiguration(1);o(t).toEqual(c(new Error("Invalid network configuration response for chain ID: 1")))}),i("should handle invalid descriptor - missing data field",async()=>{const e={data:[{id:"ethereum",descriptors:{flex:{descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"sig1",test:"sig2"}}}}]};r.mocked(a.get).mockResolvedValue(e);const t=await n.getDynamicNetworkConfiguration(1);o(t).toEqual(c(new Error("Invalid network configuration response for chain ID: 1")))}),i("should handle invalid descriptor - missing signatures",async()=>{const e={data:[{id:"ethereum",descriptors:{flex:{data:"0x0101",descriptorType:"network",descriptorVersion:"v1"}}}]};r.mocked(a.get).mockResolvedValue(e);const t=await n.getDynamicNetworkConfiguration(1);o(t).toEqual(c(new Error("Invalid network configuration response for chain ID: 1")))}),i("should handle invalid signatures - missing prod",async()=>{const e={data:[{id:"ethereum",descriptors:{flex:{data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{test:"sig2"}}}}]};r.mocked(a.get).mockResolvedValue(e);const t=await n.getDynamicNetworkConfiguration(1);o(t).toEqual(c(new Error("Invalid network configuration response for chain ID: 1")))}),i("should include icons when available",async()=>{const e={data:[{id:"ethereum",descriptors:{flex:{data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"sig1",test:"sig2"}},stax:{data:"0x0102",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"sig3",test:"sig4"}}},icons:{flex:"icon1",stax:"icon2"}}]};r.mocked(a.get).mockResolvedValue(e);const t=await n.getDynamicNetworkConfiguration(1);o(t.isRight()).toBe(!0);const d=t.unsafeCoerce();o(d.descriptors.flex.icon).toBe("icon1"),o(d.descriptors.stax.icon).toBe("icon2")}),i("should transform data correctly for Polygon chain ID",async()=>{r.mocked(a.get).mockResolvedValue(s);const e=await n.getDynamicNetworkConfiguration(137);o(a.get).toHaveBeenCalledWith("https://crypto-assets-service.api.ledger.com/networks?output=id,descriptors,icons&chain_id=137",o.objectContaining({headers:o.any(Object)})),o(e.isRight()).toBe(!0);const t=e.unsafeCoerce();o(Object.keys(t.descriptors)).toEqual(["flex","stax"])}),i("should handle invalid data - null data",async()=>{const e={data:[null]};r.mocked(a.get).mockResolvedValue(e);const t=await n.getDynamicNetworkConfiguration(1);o(t).toEqual(c(new Error("Network configuration not found for chain ID: 1")))}),i("should handle invalid data - non-object data",async()=>{const e={data:["string_instead_of_object"]};r.mocked(a.get).mockResolvedValue(e);const t=await n.getDynamicNetworkConfiguration(1);o(t).toEqual(c(new Error("Invalid network configuration response for chain ID: 1")))}),i("should handle invalid data - icons as string instead of object",async()=>{const e={data:[{id:"ethereum",descriptors:{flex:{data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"sig1",test:"sig2"}}},icons:"should_be_object_not_string"}]};r.mocked(a.get).mockResolvedValue(e);const t=await n.getDynamicNetworkConfiguration(1);o(t).toEqual(c(new Error("Invalid network configuration response for chain ID: 1")))}),i("should handle invalid data - icons as number instead of object (line 93)",async()=>{const e={data:[{id:"ethereum",descriptors:{flex:{data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"sig1",test:"sig2"}}},icons:123}]};r.mocked(a.get).mockResolvedValue(e);const t=await n.getDynamicNetworkConfiguration(1);o(t).toEqual(c(new Error("Invalid network configuration response for chain ID: 1")))}),i("should handle invalid descriptor - null descriptor (line 103)",async()=>{const e={data:[{id:"ethereum",descriptors:{flex:null}}]};r.mocked(a.get).mockResolvedValue(e);const t=await n.getDynamicNetworkConfiguration(1);o(t).toEqual(c(new Error("Invalid network configuration response for chain ID: 1")))}),i("should handle invalid descriptor - non-object descriptor (line 103)",async()=>{const e={data:[{id:"ethereum",descriptors:{flex:"should_be_object_not_string"}}]};r.mocked(a.get).mockResolvedValue(e);const t=await n.getDynamicNetworkConfiguration(1);o(t).toEqual(c(new Error("Invalid network configuration response for chain ID: 1")))})})});
2
+ //# sourceMappingURL=HttpDynamicNetworkDataSource.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/dynamic-network/data/HttpDynamicNetworkDataSource.test.ts"],
4
+ "sourcesContent": ["import axios from \"axios\";\nimport { Left, Right } from \"purify-ts\";\nimport { beforeAll, beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\n\nimport { HttpDynamicNetworkDataSource } from \"./HttpDynamicNetworkDataSource\";\n\nvi.mock(\"axios\");\n\ndescribe(\"HttpNetworkDataSource\", () => {\n let datasource: HttpDynamicNetworkDataSource;\n const mockConfig: ContextModuleConfig = {\n cal: {\n url: \"https://crypto-assets-service.api.ledger.com\",\n mode: \"prod\",\n branch: \"main\",\n },\n } as ContextModuleConfig;\n\n const mockNetworkResponse = {\n data: [\n {\n id: \"ethereum\",\n descriptors: {\n flex: {\n data: \"0x010108020101510101230800000000000000895207506f6c79676f6e2403504f4c\",\n descriptorType: \"network\",\n descriptorVersion: \"v1\",\n signatures: {\n prod: \"3045022100c116b5470c266c2947b92aa9eadbe3da03305efc6b8fee041e04e8484a9834af022041d5b82b359614ea8dd94a542dfd87b0ae6f3b4a075aad9a53a030064ab42cd0\",\n test: \"3045022100f78bac5c9c3f2ceeea26680aaea17be61fce84ae7ec983a8194e68275f4fe5900220231afbe39fcec63edfea2b4e787a72d79ce53d6a4c408f24b5a116905a9082d3\",\n },\n },\n stax: {\n data: \"0x010108020101510101230800000000000000895207506f6c79676f6e2403504f4c53204aa5034d2fd4c46647d382aa64d0a03d06b185512bb7942390318bda18d0423a\",\n descriptorType: \"network\",\n descriptorVersion: \"v1\",\n signatures: {\n prod: \"3045022100cf42c039c16fc95dc97c09f15cdd93bed0e63ee45cf5c38c2b30bb8a3bc17f8d022053a96c9e51695c3c1c1a31f5cbf84bd6febadc97f4bb02bdc67cf3e24ad0c32d\",\n test: \"304402207e1e1b8f99b45c95b0cf1e90f46cf07e6a90f82c49ccdb6e2e95ab0c1e2f5a370220784e1fac16bb01c5d096733e1cbf067d616e4de659fda2c388f8c3502e7f7f80\",\n },\n },\n },\n },\n ],\n };\n\n beforeAll(() => {\n datasource = new HttpDynamicNetworkDataSource(mockConfig);\n });\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n describe(\"getNetworkConfiguration\", () => {\n it(\"should return network configuration successfully\", async () => {\n vi.mocked(axios.get).mockResolvedValue(mockNetworkResponse);\n\n const result = await datasource.getDynamicNetworkConfiguration(1);\n\n expect(axios.get).toHaveBeenCalledWith(\n \"https://crypto-assets-service.api.ledger.com/networks?output=id,descriptors,icons&chain_id=1\",\n expect.objectContaining({\n headers: expect.any(Object) as Record<string, string>,\n }),\n );\n\n expect(result).toEqual(\n Right({\n id: \"ethereum\",\n descriptors: {\n flex: {\n data: \"0x010108020101510101230800000000000000895207506f6c79676f6e2403504f4c\",\n descriptorType: \"network\",\n descriptorVersion: \"v1\",\n signatures: {\n prod: \"3045022100c116b5470c266c2947b92aa9eadbe3da03305efc6b8fee041e04e8484a9834af022041d5b82b359614ea8dd94a542dfd87b0ae6f3b4a075aad9a53a030064ab42cd0\",\n test: \"3045022100f78bac5c9c3f2ceeea26680aaea17be61fce84ae7ec983a8194e68275f4fe5900220231afbe39fcec63edfea2b4e787a72d79ce53d6a4c408f24b5a116905a9082d3\",\n },\n icon: undefined,\n },\n stax: {\n data: \"0x010108020101510101230800000000000000895207506f6c79676f6e2403504f4c53204aa5034d2fd4c46647d382aa64d0a03d06b185512bb7942390318bda18d0423a\",\n descriptorType: \"network\",\n descriptorVersion: \"v1\",\n signatures: {\n prod: \"3045022100cf42c039c16fc95dc97c09f15cdd93bed0e63ee45cf5c38c2b30bb8a3bc17f8d022053a96c9e51695c3c1c1a31f5cbf84bd6febadc97f4bb02bdc67cf3e24ad0c32d\",\n test: \"304402207e1e1b8f99b45c95b0cf1e90f46cf07e6a90f82c49ccdb6e2e95ab0c1e2f5a370220784e1fac16bb01c5d096733e1cbf067d616e4de659fda2c388f8c3502e7f7f80\",\n },\n icon: undefined,\n },\n },\n }),\n );\n });\n\n it(\"should return error when network data is not found\", async () => {\n vi.mocked(axios.get).mockResolvedValue({ data: [] });\n\n const result = await datasource.getDynamicNetworkConfiguration(1);\n\n expect(result).toEqual(\n Left(new Error(\"Network configuration not found for chain ID: 1\")),\n );\n });\n\n it(\"should return error when network data is undefined\", async () => {\n vi.mocked(axios.get).mockResolvedValue({ data: undefined });\n\n const result = await datasource.getDynamicNetworkConfiguration(1);\n\n expect(result).toEqual(\n Left(new Error(\"Network configuration not found for chain ID: 1\")),\n );\n });\n\n it(\"should return error when axios throws an error\", async () => {\n vi.mocked(axios.get).mockRejectedValue(new Error(\"Network error\"));\n\n const result = await datasource.getDynamicNetworkConfiguration(1);\n\n expect(result).toEqual(Left(new Error(\"Network error\")));\n });\n\n it(\"should return generic error when axios throws non-Error\", async () => {\n vi.mocked(axios.get).mockRejectedValue(\"String error\");\n\n const result = await datasource.getDynamicNetworkConfiguration(1);\n\n expect(result).toEqual(\n Left(new Error(\"Failed to fetch network configuration\")),\n );\n });\n\n it(\"should handle invalid data - missing id\", async () => {\n const invalidResponse = {\n data: [\n {\n // Missing id\n descriptors: {},\n },\n ],\n };\n vi.mocked(axios.get).mockResolvedValue(invalidResponse);\n\n const result = await datasource.getDynamicNetworkConfiguration(1);\n\n expect(result).toEqual(\n Left(\n new Error(\"Invalid network configuration response for chain ID: 1\"),\n ),\n );\n });\n\n it(\"should handle invalid data - missing descriptors\", async () => {\n const invalidResponse = {\n data: [\n {\n id: \"ethereum\",\n // Missing descriptors\n },\n ],\n };\n vi.mocked(axios.get).mockResolvedValue(invalidResponse);\n\n const result = await datasource.getDynamicNetworkConfiguration(1);\n\n expect(result).toEqual(\n Left(\n new Error(\"Invalid network configuration response for chain ID: 1\"),\n ),\n );\n });\n\n it(\"should handle invalid descriptor - missing data field\", async () => {\n const invalidResponse = {\n data: [\n {\n id: \"ethereum\",\n descriptors: {\n flex: {\n // Missing data\n descriptorType: \"network\",\n descriptorVersion: \"v1\",\n signatures: { prod: \"sig1\", test: \"sig2\" },\n },\n },\n },\n ],\n };\n vi.mocked(axios.get).mockResolvedValue(invalidResponse);\n\n const result = await datasource.getDynamicNetworkConfiguration(1);\n\n expect(result).toEqual(\n Left(\n new Error(\"Invalid network configuration response for chain ID: 1\"),\n ),\n );\n });\n\n it(\"should handle invalid descriptor - missing signatures\", async () => {\n const invalidResponse = {\n data: [\n {\n id: \"ethereum\",\n descriptors: {\n flex: {\n data: \"0x0101\",\n descriptorType: \"network\",\n descriptorVersion: \"v1\",\n // Missing signatures\n },\n },\n },\n ],\n };\n vi.mocked(axios.get).mockResolvedValue(invalidResponse);\n\n const result = await datasource.getDynamicNetworkConfiguration(1);\n\n expect(result).toEqual(\n Left(\n new Error(\"Invalid network configuration response for chain ID: 1\"),\n ),\n );\n });\n\n it(\"should handle invalid signatures - missing prod\", async () => {\n const invalidResponse = {\n data: [\n {\n id: \"ethereum\",\n descriptors: {\n flex: {\n data: \"0x0101\",\n descriptorType: \"network\",\n descriptorVersion: \"v1\",\n signatures: {\n // Missing prod\n test: \"sig2\",\n },\n },\n },\n },\n ],\n };\n vi.mocked(axios.get).mockResolvedValue(invalidResponse);\n\n const result = await datasource.getDynamicNetworkConfiguration(1);\n\n expect(result).toEqual(\n Left(\n new Error(\"Invalid network configuration response for chain ID: 1\"),\n ),\n );\n });\n\n it(\"should include icons when available\", async () => {\n const responseWithIcons = {\n data: [\n {\n id: \"ethereum\",\n descriptors: {\n flex: {\n data: \"0x0101\",\n descriptorType: \"network\",\n descriptorVersion: \"v1\",\n signatures: {\n prod: \"sig1\",\n test: \"sig2\",\n },\n },\n stax: {\n data: \"0x0102\",\n descriptorType: \"network\",\n descriptorVersion: \"v1\",\n signatures: {\n prod: \"sig3\",\n test: \"sig4\",\n },\n },\n },\n icons: {\n flex: \"icon1\",\n stax: \"icon2\",\n },\n },\n ],\n };\n vi.mocked(axios.get).mockResolvedValue(responseWithIcons);\n\n const result = await datasource.getDynamicNetworkConfiguration(1);\n\n expect(result.isRight()).toBe(true);\n const configuration = result.unsafeCoerce();\n expect(configuration.descriptors.flex.icon).toBe(\"icon1\");\n expect(configuration.descriptors.stax.icon).toBe(\"icon2\");\n });\n\n it(\"should transform data correctly for Polygon chain ID\", async () => {\n vi.mocked(axios.get).mockResolvedValue(mockNetworkResponse);\n\n const result = await datasource.getDynamicNetworkConfiguration(137);\n\n expect(axios.get).toHaveBeenCalledWith(\n \"https://crypto-assets-service.api.ledger.com/networks?output=id,descriptors,icons&chain_id=137\",\n expect.objectContaining({\n headers: expect.any(Object) as Record<string, string>,\n }),\n );\n\n expect(result.isRight()).toBe(true);\n const configuration = result.unsafeCoerce();\n expect(Object.keys(configuration.descriptors)).toEqual([\"flex\", \"stax\"]);\n });\n\n it(\"should handle invalid data - null data\", async () => {\n const invalidResponse = {\n data: [null],\n };\n vi.mocked(axios.get).mockResolvedValue(invalidResponse);\n\n const result = await datasource.getDynamicNetworkConfiguration(1);\n\n expect(result).toEqual(\n Left(new Error(\"Network configuration not found for chain ID: 1\")),\n );\n });\n\n it(\"should handle invalid data - non-object data\", async () => {\n const invalidResponse = {\n data: [\"string_instead_of_object\"],\n };\n vi.mocked(axios.get).mockResolvedValue(invalidResponse);\n\n const result = await datasource.getDynamicNetworkConfiguration(1);\n\n expect(result).toEqual(\n Left(\n new Error(\"Invalid network configuration response for chain ID: 1\"),\n ),\n );\n });\n\n it(\"should handle invalid data - icons as string instead of object\", async () => {\n const invalidResponse = {\n data: [\n {\n id: \"ethereum\",\n descriptors: {\n flex: {\n data: \"0x0101\",\n descriptorType: \"network\",\n descriptorVersion: \"v1\",\n signatures: {\n prod: \"sig1\",\n test: \"sig2\",\n },\n },\n },\n icons: \"should_be_object_not_string\",\n },\n ],\n };\n vi.mocked(axios.get).mockResolvedValue(invalidResponse);\n\n const result = await datasource.getDynamicNetworkConfiguration(1);\n\n expect(result).toEqual(\n Left(\n new Error(\"Invalid network configuration response for chain ID: 1\"),\n ),\n );\n });\n\n it(\"should handle invalid data - icons as number instead of object (line 93)\", async () => {\n const invalidResponse = {\n data: [\n {\n id: \"ethereum\",\n descriptors: {\n flex: {\n data: \"0x0101\",\n descriptorType: \"network\",\n descriptorVersion: \"v1\",\n signatures: {\n prod: \"sig1\",\n test: \"sig2\",\n },\n },\n },\n icons: 123,\n },\n ],\n };\n vi.mocked(axios.get).mockResolvedValue(invalidResponse);\n\n const result = await datasource.getDynamicNetworkConfiguration(1);\n\n expect(result).toEqual(\n Left(\n new Error(\"Invalid network configuration response for chain ID: 1\"),\n ),\n );\n });\n\n it(\"should handle invalid descriptor - null descriptor (line 103)\", async () => {\n const invalidResponse = {\n data: [\n {\n id: \"ethereum\",\n descriptors: {\n flex: null,\n },\n },\n ],\n };\n vi.mocked(axios.get).mockResolvedValue(invalidResponse);\n\n const result = await datasource.getDynamicNetworkConfiguration(1);\n\n expect(result).toEqual(\n Left(\n new Error(\"Invalid network configuration response for chain ID: 1\"),\n ),\n );\n });\n\n it(\"should handle invalid descriptor - non-object descriptor (line 103)\", async () => {\n const invalidResponse = {\n data: [\n {\n id: \"ethereum\",\n descriptors: {\n flex: \"should_be_object_not_string\",\n },\n },\n ],\n };\n vi.mocked(axios.get).mockResolvedValue(invalidResponse);\n\n const result = await datasource.getDynamicNetworkConfiguration(1);\n\n expect(result).toEqual(\n Left(\n new Error(\"Invalid network configuration response for chain ID: 1\"),\n ),\n );\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["axios", "Left", "Right", "beforeAll", "beforeEach", "describe", "expect", "it", "vi", "HttpDynamicNetworkDataSource", "datasource", "mockConfig", "mockNetworkResponse", "result", "invalidResponse", "responseWithIcons", "configuration"]
7
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=DynamicNetworkApiResponseDto.js.map
@@ -0,0 +1,2 @@
1
+ import{ContainerModule as r}from"inversify";import{HttpDynamicNetworkDataSource as e}from"../../dynamic-network/data/HttpDynamicNetworkDataSource";import{DynamicNetworkContextLoader as a}from"../../dynamic-network/domain/DynamicNetworkContextLoader";import{dynamicNetworkTypes as t}from"./dynamicNetworkTypes";const y=()=>new r(({bind:o})=>{o(t.DynamicNetworkDataSource).to(e),o(t.DynamicNetworkContextLoader).to(a)});export{y as dynamicNetworkModuleFactory};
2
+ //# sourceMappingURL=dynamicNetworkModuleFactory.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/dynamic-network/di/dynamicNetworkModuleFactory.ts"],
4
+ "sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { HttpDynamicNetworkDataSource } from \"@/dynamic-network/data/HttpDynamicNetworkDataSource\";\nimport { DynamicNetworkContextLoader } from \"@/dynamic-network/domain/DynamicNetworkContextLoader\";\n\nimport { dynamicNetworkTypes } from \"./dynamicNetworkTypes\";\n\nexport const dynamicNetworkModuleFactory = () =>\n new ContainerModule(({ bind }) => {\n bind(dynamicNetworkTypes.DynamicNetworkDataSource).to(\n HttpDynamicNetworkDataSource,\n );\n bind(dynamicNetworkTypes.DynamicNetworkContextLoader).to(\n DynamicNetworkContextLoader,\n );\n });\n"],
5
+ "mappings": "AAAA,OAAS,mBAAAA,MAAuB,YAEhC,OAAS,gCAAAC,MAAoC,sDAC7C,OAAS,+BAAAC,MAAmC,uDAE5C,OAAS,uBAAAC,MAA2B,wBAE7B,MAAMC,EAA8B,IACzC,IAAIJ,EAAgB,CAAC,CAAE,KAAAK,CAAK,IAAM,CAChCA,EAAKF,EAAoB,wBAAwB,EAAE,GACjDF,CACF,EACAI,EAAKF,EAAoB,2BAA2B,EAAE,GACpDD,CACF,CACF,CAAC",
6
+ "names": ["ContainerModule", "HttpDynamicNetworkDataSource", "DynamicNetworkContextLoader", "dynamicNetworkTypes", "dynamicNetworkModuleFactory", "bind"]
7
+ }
@@ -0,0 +1,2 @@
1
+ const o={DynamicNetworkDataSource:Symbol("DynamicNetworkDataSource"),DynamicNetworkContextLoader:Symbol("DynamicNetworkContextLoader")};export{o as dynamicNetworkTypes};
2
+ //# sourceMappingURL=dynamicNetworkTypes.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/dynamic-network/di/dynamicNetworkTypes.ts"],
4
+ "sourcesContent": ["export const dynamicNetworkTypes = {\n DynamicNetworkDataSource: Symbol(\"DynamicNetworkDataSource\"),\n DynamicNetworkContextLoader: Symbol(\"DynamicNetworkContextLoader\"),\n};\n"],
5
+ "mappings": "AAAO,MAAMA,EAAsB,CACjC,yBAA0B,OAAO,0BAA0B,EAC3D,4BAA6B,OAAO,6BAA6B,CACnE",
6
+ "names": ["dynamicNetworkTypes"]
7
+ }
@@ -0,0 +1,2 @@
1
+ var u=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var C=(i,e,o,t)=>{for(var r=t>1?void 0:t?g(e,o):e,n=i.length-1,a;n>=0;n--)(a=i[n])&&(r=(t?a(e,o,r):a(r))||r);return t&&r&&u(e,o,r),r},d=(i,e)=>(o,t)=>e(o,t,i);import{DeviceModelId as I}from"@ledgerhq/device-management-kit";import{inject as m,injectable as N}from"inversify";import{configTypes as D}from"../../config/di/configTypes";import{dynamicNetworkTypes as k}from"../../dynamic-network/di/dynamicNetworkTypes";import{pkiTypes as S}from"../../pki/di/pkiTypes";import{KeyId as _}from"../../pki/model/KeyId";import{KeyUsage as x}from"../../pki/model/KeyUsage";import{ClearSignContextType as f}from"../../shared/model/ClearSignContext";import{HexStringUtils as T}from"../../shared/utils/HexStringUtils";const w="15",M=[f.DYNAMIC_NETWORK,f.DYNAMIC_NETWORK_ICON];let p=class{_networkDataSource;_config;_certificateLoader;constructor(e,o,t){this._networkDataSource=e,this._config=o,this._certificateLoader=t}canHandle(e,o){return typeof e=="object"&&e!==null&&"chainId"in e&&"deviceModelId"in e&&e.deviceModelId!==void 0&&e.deviceModelId!==I.NANO_S&&typeof e.chainId=="number"&&M.every(t=>o.includes(t))}async load(e){const{chainId:o,deviceModelId:t}=e,r=await this._networkDataSource.getDynamicNetworkConfiguration(o),n=await this._certificateLoader.loadCertificate({keyId:_.CalNetwork,keyUsage:x.Network,targetDevice:t});return r.caseOf({Left:()=>[],Right:a=>{const s=[],c=a.descriptors[t];if(!c)return[];const l=c.signatures[this._config.cal.mode];if(!l)return[];const y=T.appendSignatureToPayload(c.data,l,w);return s.push({type:f.DYNAMIC_NETWORK,payload:y,certificate:n}),c.icon&&s.push({type:f.DYNAMIC_NETWORK_ICON,payload:c.icon}),s}})}};p=C([N(),d(0,m(k.DynamicNetworkDataSource)),d(1,m(D.Config)),d(2,m(S.PkiCertificateLoader))],p);export{p as DynamicNetworkContextLoader};
2
+ //# sourceMappingURL=DynamicNetworkContextLoader.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/dynamic-network/domain/DynamicNetworkContextLoader.ts"],
4
+ "sourcesContent": ["import { DeviceModelId } from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport { type DynamicNetworkDataSource } from \"@/dynamic-network/data/DynamicNetworkDataSource\";\nimport { dynamicNetworkTypes } from \"@/dynamic-network/di/dynamicNetworkTypes\";\nimport { pkiTypes } from \"@/pki/di/pkiTypes\";\nimport { type PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport { KeyId } from \"@/pki/model/KeyId\";\nimport { KeyUsage } from \"@/pki/model/KeyUsage\";\nimport { ContextLoader } from \"@/shared/domain/ContextLoader\";\nimport {\n ClearSignContext,\n ClearSignContextType,\n} from \"@/shared/model/ClearSignContext\";\nimport { HexStringUtils } from \"@/shared/utils/HexStringUtils\";\n\nexport type DynamicNetworkContextInput = {\n chainId: number;\n deviceModelId: DeviceModelId;\n};\n\nconst NETWORK_SIGNATURE_TAG = \"15\";\n\nconst SUPPORTED_TYPES: ClearSignContextType[] = [\n ClearSignContextType.DYNAMIC_NETWORK,\n ClearSignContextType.DYNAMIC_NETWORK_ICON,\n];\n\n@injectable()\nexport class DynamicNetworkContextLoader\n implements ContextLoader<DynamicNetworkContextInput>\n{\n private readonly _networkDataSource: DynamicNetworkDataSource;\n private readonly _config: ContextModuleConfig;\n private readonly _certificateLoader: PkiCertificateLoader;\n\n constructor(\n @inject(dynamicNetworkTypes.DynamicNetworkDataSource)\n networkDataSource: DynamicNetworkDataSource,\n @inject(configTypes.Config)\n config: ContextModuleConfig,\n @inject(pkiTypes.PkiCertificateLoader)\n certificateLoader: PkiCertificateLoader,\n ) {\n this._networkDataSource = networkDataSource;\n this._config = config;\n this._certificateLoader = certificateLoader;\n }\n\n canHandle(\n input: unknown,\n expectedTypes: ClearSignContextType[],\n ): input is DynamicNetworkContextInput {\n return (\n typeof input === \"object\" &&\n input !== null &&\n \"chainId\" in input &&\n \"deviceModelId\" in input &&\n input.deviceModelId !== undefined &&\n input.deviceModelId !== DeviceModelId.NANO_S &&\n typeof input.chainId === \"number\" &&\n SUPPORTED_TYPES.every((type) => expectedTypes.includes(type))\n );\n }\n\n async load(input: DynamicNetworkContextInput): Promise<ClearSignContext[]> {\n const { chainId, deviceModelId } = input;\n\n const result =\n await this._networkDataSource.getDynamicNetworkConfiguration(chainId);\n\n // Fetch certificate for the network configuration upfront\n const certificate = await this._certificateLoader.loadCertificate({\n keyId: KeyId.CalNetwork,\n keyUsage: KeyUsage.Network,\n targetDevice: deviceModelId,\n });\n\n return result.caseOf({\n Left: () => [],\n Right: (configuration) => {\n const contexts: ClearSignContext[] = [];\n const descriptor = configuration.descriptors[deviceModelId];\n\n if (!descriptor) {\n return [];\n }\n\n const signature = descriptor.signatures[this._config.cal.mode];\n\n if (!signature) {\n return [];\n }\n\n const configPayload = HexStringUtils.appendSignatureToPayload(\n descriptor.data,\n signature,\n NETWORK_SIGNATURE_TAG,\n );\n\n contexts.push({\n type: ClearSignContextType.DYNAMIC_NETWORK,\n payload: configPayload,\n certificate,\n });\n\n // Add icon if available in the descriptor\n if (descriptor.icon) {\n // Icons don't need signatures appended\n contexts.push({\n type: ClearSignContextType.DYNAMIC_NETWORK_ICON,\n payload: descriptor.icon,\n });\n }\n\n return contexts;\n },\n });\n }\n}\n"],
5
+ "mappings": "iOAAA,OAAS,iBAAAA,MAAqB,kCAC9B,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,YAEnC,OAAS,eAAAC,MAAmB,0BAG5B,OAAS,uBAAAC,MAA2B,2CACpC,OAAS,YAAAC,MAAgB,oBAEzB,OAAS,SAAAC,MAAa,oBACtB,OAAS,YAAAC,MAAgB,uBAEzB,OAEE,wBAAAC,MACK,kCACP,OAAS,kBAAAC,MAAsB,gCAO/B,MAAMC,EAAwB,KAExBC,EAA0C,CAC9CC,EAAqB,gBACrBA,EAAqB,oBACvB,EAGO,IAAMC,EAAN,KAEP,CACmB,mBACA,QACA,mBAEjB,YAEEC,EAEAC,EAEAC,EACA,CACA,KAAK,mBAAqBF,EAC1B,KAAK,QAAUC,EACf,KAAK,mBAAqBC,CAC5B,CAEA,UACEC,EACAC,EACqC,CACrC,OACE,OAAOD,GAAU,UACjBA,IAAU,MACV,YAAaA,GACb,kBAAmBA,GACnBA,EAAM,gBAAkB,QACxBA,EAAM,gBAAkBE,EAAc,QACtC,OAAOF,EAAM,SAAY,UACzBN,EAAgB,MAAOS,GAASF,EAAc,SAASE,CAAI,CAAC,CAEhE,CAEA,MAAM,KAAKH,EAAgE,CACzE,KAAM,CAAE,QAAAI,EAAS,cAAAC,CAAc,EAAIL,EAE7BM,EACJ,MAAM,KAAK,mBAAmB,+BAA+BF,CAAO,EAGhEG,EAAc,MAAM,KAAK,mBAAmB,gBAAgB,CAChE,MAAOC,EAAM,WACb,SAAUC,EAAS,QACnB,aAAcJ,CAChB,CAAC,EAED,OAAOC,EAAO,OAAO,CACnB,KAAM,IAAM,CAAC,EACb,MAAQI,GAAkB,CACxB,MAAMC,EAA+B,CAAC,EAChCC,EAAaF,EAAc,YAAYL,CAAa,EAE1D,GAAI,CAACO,EACH,MAAO,CAAC,EAGV,MAAMC,EAAYD,EAAW,WAAW,KAAK,QAAQ,IAAI,IAAI,EAE7D,GAAI,CAACC,EACH,MAAO,CAAC,EAGV,MAAMC,EAAgBC,EAAe,yBACnCH,EAAW,KACXC,EACApB,CACF,EAEA,OAAAkB,EAAS,KAAK,CACZ,KAAMhB,EAAqB,gBAC3B,QAASmB,EACT,YAAAP,CACF,CAAC,EAGGK,EAAW,MAEbD,EAAS,KAAK,CACZ,KAAMhB,EAAqB,qBAC3B,QAASiB,EAAW,IACtB,CAAC,EAGID,CACT,CACF,CAAC,CACH,CACF,EA1Faf,EAANoB,EAAA,CADNC,EAAW,EASPC,EAAA,EAAAC,EAAOC,EAAoB,wBAAwB,GAEnDF,EAAA,EAAAC,EAAOE,EAAY,MAAM,GAEzBH,EAAA,EAAAC,EAAOG,EAAS,oBAAoB,IAZ5B1B",
6
+ "names": ["DeviceModelId", "inject", "injectable", "configTypes", "dynamicNetworkTypes", "pkiTypes", "KeyId", "KeyUsage", "ClearSignContextType", "HexStringUtils", "NETWORK_SIGNATURE_TAG", "SUPPORTED_TYPES", "ClearSignContextType", "DynamicNetworkContextLoader", "networkDataSource", "config", "certificateLoader", "input", "expectedTypes", "DeviceModelId", "type", "chainId", "deviceModelId", "result", "certificate", "KeyId", "KeyUsage", "configuration", "contexts", "descriptor", "signature", "configPayload", "HexStringUtils", "__decorateClass", "injectable", "__decorateParam", "inject", "dynamicNetworkTypes", "configTypes", "pkiTypes"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{DeviceModelId as e}from"@ledgerhq/device-management-kit";import{Left as y,Right as s}from"purify-ts";import{DynamicNetworkContextLoader as f}from"../../dynamic-network/domain/DynamicNetworkContextLoader";import{KeyId as m}from"../../pki/model/KeyId";import{KeyUsage as g}from"../../pki/model/KeyUsage";import{ClearSignContextType as r}from"../../shared/model/ClearSignContext";describe("DynamicNetworkContextLoader",()=>{const c={getDynamicNetworkConfiguration:vi.fn()},l={cal:{url:"https://crypto-assets-service.api.ledger.com",mode:"prod",branch:"main"}},p={loadCertificate:vi.fn()},u={keyUsageNumber:1,payload:new Uint8Array([1,2,3])},a=new f(c,l,p),t=o=>({data:"",descriptorType:"",descriptorVersion:"",signatures:{prod:"",test:""},icon:void 0,...o});beforeEach(()=>{vi.restoreAllMocks(),vi.spyOn(p,"loadCertificate").mockResolvedValue(u)}),describe("canHandle function",()=>{const o={chainId:1,deviceModelId:e.STAX};it("should return true for valid input",()=>{expect(a.canHandle(o,[r.DYNAMIC_NETWORK,r.DYNAMIC_NETWORK_ICON])).toBe(!0)}),it("should return false for invalid expected type",()=>{expect(a.canHandle(o,[r.TOKEN])).toBe(!1),expect(a.canHandle(o,[r.DYNAMIC_NETWORK])).toBe(!1),expect(a.canHandle(o,[r.DYNAMIC_NETWORK_ICON])).toBe(!1)}),it.each([[null,"null input"],[void 0,"undefined input"],[{},"empty object"],["string","string input"],[123,"number input"]])("should return false for %s",(n,i)=>{expect(a.canHandle(n,[r.DYNAMIC_NETWORK,r.DYNAMIC_NETWORK_ICON])).toBe(!1)}),it.each([[{...o,chainId:void 0},"missing chainId"],[{...o,deviceModelId:void 0},"missing deviceModelId"]])("should return false for %s",(n,i)=>{expect(a.canHandle(n,[r.DYNAMIC_NETWORK,r.DYNAMIC_NETWORK_ICON])).toBe(!1)}),it.each([[{...o,chainId:"1"},"string chainId"],[{...o,chainId:null},"null chainId"],[{...o,deviceModelId:e.NANO_S},"NANO_S deviceModelId"]])("should return false for %s",(n,i)=>{expect(a.canHandle(n,[r.DYNAMIC_NETWORK,r.DYNAMIC_NETWORK_ICON])).toBe(!1)})}),describe("load function",()=>{it("should return empty array when network data source returns error",async()=>{const o={chainId:1,deviceModelId:e.STAX};vi.spyOn(c,"getDynamicNetworkConfiguration").mockResolvedValue(y(new Error("Network error")));const n=await a.load(o);expect(n).toEqual([]),expect(c.getDynamicNetworkConfiguration).toHaveBeenCalledWith(1)}),it("should return empty array when descriptor for device model is not found",async()=>{const o={chainId:1,deviceModelId:e.STAX},n={id:"ethereum",descriptors:{[e.NANO_S]:t(),[e.NANO_SP]:t(),[e.NANO_X]:t(),[e.FLEX]:t({data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"prod-sig",test:"test-sig"},icon:void 0})}};vi.spyOn(c,"getDynamicNetworkConfiguration").mockResolvedValue(s(n));const i=await a.load(o);expect(i).toEqual([])}),it("should return empty array when signature for mode is not found",async()=>{const o={chainId:1,deviceModelId:e.STAX},n={id:"ethereum",descriptors:{[e.APEX]:t(),[e.NANO_S]:t(),[e.NANO_SP]:t(),[e.NANO_X]:t(),[e.FLEX]:t(),[e.STAX]:t({data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{test:"test-sig"},icon:void 0})}};vi.spyOn(c,"getDynamicNetworkConfiguration").mockResolvedValue(s(n));const i=await a.load(o);expect(i).toEqual([])}),it("should return context with network configuration when all data is available",async()=>{const o={chainId:137,deviceModelId:e.STAX},n={id:"polygon",descriptors:{[e.APEX]:t(),[e.NANO_S]:t(),[e.NANO_SP]:t(),[e.NANO_X]:t(),[e.FLEX]:t(),[e.STAX]:{data:"0x0101080201015101012308000000000000008952",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"3045022100cf42c039c16fc95dc97c09f15cdd93bed0e63ee45cf5c38c2b30bb8a3bc17f8d022053a96c9e51695c3c1c1a31f5cbf84bd6febadc97f4bb02bdc67cf3e24ad0c32d",test:"test-sig"},icon:void 0}}};vi.spyOn(c,"getDynamicNetworkConfiguration").mockResolvedValue(s(n));const i=await a.load(o);expect(i).toHaveLength(1),expect(i[0]).toMatchObject({type:r.DYNAMIC_NETWORK,payload:expect.stringContaining("0x0101080201015101012308000000000000008952"),certificate:u}),expect(p.loadCertificate).toHaveBeenCalledWith({keyId:m.CalNetwork,keyUsage:g.Network,targetDevice:e.STAX})}),it("should include icon context when icon is available",async()=>{const o={chainId:1,deviceModelId:e.STAX},n={id:"ethereum",descriptors:{[e.APEX]:t(),[e.NANO_S]:t(),[e.NANO_SP]:t(),[e.NANO_X]:t(),[e.FLEX]:t(),[e.STAX]:{data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"prod-sig",test:"test-sig"},icon:"icon-hex-data"}}};vi.spyOn(c,"getDynamicNetworkConfiguration").mockResolvedValue(s(n));const i=await a.load(o);expect(i).toHaveLength(2),expect(i[0]).toMatchObject({type:r.DYNAMIC_NETWORK,payload:expect.any(String),certificate:u}),expect(i[1]).toMatchObject({type:r.DYNAMIC_NETWORK_ICON,payload:"icon-hex-data"})}),it("should handle multiple device models correctly",async()=>{const o={chainId:1,deviceModelId:e.FLEX},n={id:"ethereum",descriptors:{[e.APEX]:t(),[e.NANO_S]:t(),[e.NANO_SP]:t(),[e.NANO_X]:t(),[e.FLEX]:{data:"0xFLEX",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"flex-prod-sig",test:"flex-test-sig"},icon:void 0},[e.STAX]:{data:"0xSTAX",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"stax-prod-sig",test:"stax-test-sig"},icon:void 0}}};vi.spyOn(c,"getDynamicNetworkConfiguration").mockResolvedValue(s(n));const i=await a.load(o);expect(i).toHaveLength(1);const d=i[0];d&&"payload"in d&&(expect(d.payload).toContain("0xFLEX"),expect(d.payload).toContain("flex-prod-sig"))}),it("should use test mode signature when configured",async()=>{const o=new f(c,{...l,cal:{...l.cal,mode:"test"}},p),n={chainId:1,deviceModelId:e.STAX},i={id:"ethereum",descriptors:{[e.APEX]:t(),[e.NANO_S]:t(),[e.NANO_SP]:t(),[e.NANO_X]:t(),[e.FLEX]:t(),[e.STAX]:{data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"prod-sig",test:"test-sig"},icon:void 0}}};vi.spyOn(c,"getDynamicNetworkConfiguration").mockResolvedValue(s(i));const d=await o.load(n);expect(d).toHaveLength(1);const N=d[0];N&&"payload"in N&&expect(N.payload).toContain("test-sig")})})});
2
+ //# sourceMappingURL=DynamicNetworkContextLoader.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/dynamic-network/domain/DynamicNetworkContextLoader.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 DynamicNetworkDataSource } from \"@/dynamic-network/data/DynamicNetworkDataSource\";\nimport {\n type DynamicNetworkContextInput,\n DynamicNetworkContextLoader,\n} from \"@/dynamic-network/domain/DynamicNetworkContextLoader\";\nimport {\n type DynamicNetworkConfiguration,\n type DynamicNetworkDescriptor,\n} from \"@/dynamic-network/model/DynamicNetworkConfiguration\";\nimport { type PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport { KeyId } from \"@/pki/model/KeyId\";\nimport { KeyUsage } from \"@/pki/model/KeyUsage\";\nimport { type PkiCertificate } from \"@/pki/model/PkiCertificate\";\nimport { ClearSignContextType } from \"@/shared/model/ClearSignContext\";\n\ndescribe(\"DynamicNetworkContextLoader\", () => {\n const mockNetworkDataSource: DynamicNetworkDataSource = {\n getDynamicNetworkConfiguration: vi.fn(),\n };\n\n const mockConfig = {\n cal: {\n url: \"https://crypto-assets-service.api.ledger.com\",\n mode: \"prod\",\n branch: \"main\",\n },\n } as ContextModuleConfig;\n\n const mockCertificateLoader: PkiCertificateLoader = {\n loadCertificate: vi.fn(),\n };\n\n const mockCertificate: PkiCertificate = {\n keyUsageNumber: 1,\n payload: new Uint8Array([0x01, 0x02, 0x03]),\n };\n\n const loader = new DynamicNetworkContextLoader(\n mockNetworkDataSource,\n mockConfig,\n mockCertificateLoader,\n );\n\n // Helper function to create a mock NetworkDescriptor\n const createMockDescriptor = (\n partial?: Partial<DynamicNetworkDescriptor>,\n ): DynamicNetworkDescriptor => ({\n data: \"\",\n descriptorType: \"\",\n descriptorVersion: \"\",\n signatures: {\n prod: \"\",\n test: \"\",\n },\n icon: undefined,\n ...partial,\n });\n\n beforeEach(() => {\n vi.restoreAllMocks();\n vi.spyOn(mockCertificateLoader, \"loadCertificate\").mockResolvedValue(\n mockCertificate,\n );\n });\n\n describe(\"canHandle function\", () => {\n const validInput: DynamicNetworkContextInput = {\n chainId: 1,\n deviceModelId: DeviceModelId.STAX,\n };\n\n it(\"should return true for valid input\", () => {\n expect(\n loader.canHandle(validInput, [\n ClearSignContextType.DYNAMIC_NETWORK,\n ClearSignContextType.DYNAMIC_NETWORK_ICON,\n ]),\n ).toBe(true);\n });\n\n it(\"should return false for invalid expected type\", () => {\n expect(loader.canHandle(validInput, [ClearSignContextType.TOKEN])).toBe(\n false,\n );\n expect(\n loader.canHandle(validInput, [ClearSignContextType.DYNAMIC_NETWORK]),\n ).toBe(false);\n expect(\n loader.canHandle(validInput, [\n ClearSignContextType.DYNAMIC_NETWORK_ICON,\n ]),\n ).toBe(false);\n });\n\n it.each([\n [null, \"null input\"],\n [undefined, \"undefined input\"],\n [{}, \"empty object\"],\n [\"string\", \"string input\"],\n [123, \"number input\"],\n ])(\"should return false for %s\", (input, _description) => {\n expect(\n loader.canHandle(input, [\n ClearSignContextType.DYNAMIC_NETWORK,\n ClearSignContextType.DYNAMIC_NETWORK_ICON,\n ]),\n ).toBe(false);\n });\n\n it.each([\n [{ ...validInput, chainId: undefined }, \"missing chainId\"],\n [{ ...validInput, deviceModelId: undefined }, \"missing deviceModelId\"],\n ])(\"should return false for %s\", (input, _description) => {\n expect(\n loader.canHandle(input, [\n ClearSignContextType.DYNAMIC_NETWORK,\n ClearSignContextType.DYNAMIC_NETWORK_ICON,\n ]),\n ).toBe(false);\n });\n\n it.each([\n [{ ...validInput, chainId: \"1\" }, \"string chainId\"],\n [{ ...validInput, chainId: null }, \"null chainId\"],\n [\n { ...validInput, deviceModelId: DeviceModelId.NANO_S },\n \"NANO_S deviceModelId\",\n ],\n ])(\"should return false for %s\", (input, _description) => {\n expect(\n loader.canHandle(input, [\n ClearSignContextType.DYNAMIC_NETWORK,\n ClearSignContextType.DYNAMIC_NETWORK_ICON,\n ]),\n ).toBe(false);\n });\n });\n\n describe(\"load function\", () => {\n it(\"should return empty array when network data source returns error\", async () => {\n // GIVEN\n const input: DynamicNetworkContextInput = {\n chainId: 1,\n deviceModelId: DeviceModelId.STAX,\n };\n vi.spyOn(\n mockNetworkDataSource,\n \"getDynamicNetworkConfiguration\",\n ).mockResolvedValue(Left(new Error(\"Network error\")));\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(result).toEqual([]);\n expect(\n mockNetworkDataSource.getDynamicNetworkConfiguration,\n ).toHaveBeenCalledWith(1);\n });\n\n it(\"should return empty array when descriptor for device model is not found\", async () => {\n // GIVEN\n const input: DynamicNetworkContextInput = {\n chainId: 1,\n deviceModelId: DeviceModelId.STAX,\n };\n const networkConfig: DynamicNetworkConfiguration = {\n id: \"ethereum\",\n descriptors: {\n [DeviceModelId.NANO_S]: createMockDescriptor(),\n [DeviceModelId.NANO_SP]: createMockDescriptor(),\n [DeviceModelId.NANO_X]: createMockDescriptor(),\n // STAX descriptor is intentionally missing\n [DeviceModelId.FLEX]: createMockDescriptor({\n data: \"0x0101\",\n descriptorType: \"network\",\n descriptorVersion: \"v1\",\n signatures: {\n prod: \"prod-sig\",\n test: \"test-sig\",\n },\n icon: undefined,\n }),\n } as Record<DeviceModelId, DynamicNetworkDescriptor>,\n };\n vi.spyOn(\n mockNetworkDataSource,\n \"getDynamicNetworkConfiguration\",\n ).mockResolvedValue(Right(networkConfig));\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(result).toEqual([]);\n });\n\n it(\"should return empty array when signature for mode is not found\", async () => {\n // GIVEN\n const input: DynamicNetworkContextInput = {\n chainId: 1,\n deviceModelId: DeviceModelId.STAX,\n };\n const networkConfig: DynamicNetworkConfiguration = {\n id: \"ethereum\",\n descriptors: {\n [DeviceModelId.APEX]: createMockDescriptor(),\n [DeviceModelId.NANO_S]: createMockDescriptor(),\n [DeviceModelId.NANO_SP]: createMockDescriptor(),\n [DeviceModelId.NANO_X]: createMockDescriptor(),\n [DeviceModelId.FLEX]: createMockDescriptor(),\n [DeviceModelId.STAX]: createMockDescriptor({\n data: \"0x0101\",\n descriptorType: \"network\",\n descriptorVersion: \"v1\",\n signatures: {\n test: \"test-sig\",\n // Missing prod signature - intentionally partial\n } as { prod: string; test: string },\n icon: undefined,\n }),\n },\n };\n vi.spyOn(\n mockNetworkDataSource,\n \"getDynamicNetworkConfiguration\",\n ).mockResolvedValue(Right(networkConfig));\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(result).toEqual([]);\n });\n\n it(\"should return context with network configuration when all data is available\", async () => {\n // GIVEN\n const input: DynamicNetworkContextInput = {\n chainId: 137,\n deviceModelId: DeviceModelId.STAX,\n };\n const networkConfig: DynamicNetworkConfiguration = {\n id: \"polygon\",\n descriptors: {\n [DeviceModelId.APEX]: createMockDescriptor(),\n [DeviceModelId.NANO_S]: createMockDescriptor(),\n [DeviceModelId.NANO_SP]: createMockDescriptor(),\n [DeviceModelId.NANO_X]: createMockDescriptor(),\n [DeviceModelId.FLEX]: createMockDescriptor(),\n [DeviceModelId.STAX]: {\n data: \"0x0101080201015101012308000000000000008952\",\n descriptorType: \"network\",\n descriptorVersion: \"v1\",\n signatures: {\n prod: \"3045022100cf42c039c16fc95dc97c09f15cdd93bed0e63ee45cf5c38c2b30bb8a3bc17f8d022053a96c9e51695c3c1c1a31f5cbf84bd6febadc97f4bb02bdc67cf3e24ad0c32d\",\n test: \"test-sig\",\n },\n icon: undefined,\n },\n },\n };\n vi.spyOn(\n mockNetworkDataSource,\n \"getDynamicNetworkConfiguration\",\n ).mockResolvedValue(Right(networkConfig));\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(result).toHaveLength(1);\n expect(result[0]).toMatchObject({\n type: ClearSignContextType.DYNAMIC_NETWORK,\n payload: expect.stringContaining(\n \"0x0101080201015101012308000000000000008952\",\n ),\n certificate: mockCertificate,\n });\n expect(mockCertificateLoader.loadCertificate).toHaveBeenCalledWith({\n keyId: KeyId.CalNetwork,\n keyUsage: KeyUsage.Network,\n targetDevice: DeviceModelId.STAX,\n });\n });\n\n it(\"should include icon context when icon is available\", async () => {\n // GIVEN\n const input: DynamicNetworkContextInput = {\n chainId: 1,\n deviceModelId: DeviceModelId.STAX,\n };\n const networkConfig: DynamicNetworkConfiguration = {\n id: \"ethereum\",\n descriptors: {\n [DeviceModelId.APEX]: createMockDescriptor(),\n [DeviceModelId.NANO_S]: createMockDescriptor(),\n [DeviceModelId.NANO_SP]: createMockDescriptor(),\n [DeviceModelId.NANO_X]: createMockDescriptor(),\n [DeviceModelId.FLEX]: createMockDescriptor(),\n [DeviceModelId.STAX]: {\n data: \"0x0101\",\n descriptorType: \"network\",\n descriptorVersion: \"v1\",\n signatures: {\n prod: \"prod-sig\",\n test: \"test-sig\",\n },\n icon: \"icon-hex-data\",\n },\n },\n };\n vi.spyOn(\n mockNetworkDataSource,\n \"getDynamicNetworkConfiguration\",\n ).mockResolvedValue(Right(networkConfig));\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(result).toHaveLength(2);\n expect(result[0]).toMatchObject({\n type: ClearSignContextType.DYNAMIC_NETWORK,\n payload: expect.any(String),\n certificate: mockCertificate,\n });\n expect(result[1]).toMatchObject({\n type: ClearSignContextType.DYNAMIC_NETWORK_ICON,\n payload: \"icon-hex-data\",\n });\n });\n\n it(\"should handle multiple device models correctly\", async () => {\n // GIVEN\n const input: DynamicNetworkContextInput = {\n chainId: 1,\n deviceModelId: DeviceModelId.FLEX,\n };\n const networkConfig: DynamicNetworkConfiguration = {\n id: \"ethereum\",\n descriptors: {\n [DeviceModelId.APEX]: createMockDescriptor(),\n [DeviceModelId.NANO_S]: createMockDescriptor(),\n [DeviceModelId.NANO_SP]: createMockDescriptor(),\n [DeviceModelId.NANO_X]: createMockDescriptor(),\n [DeviceModelId.FLEX]: {\n data: \"0xFLEX\",\n descriptorType: \"network\",\n descriptorVersion: \"v1\",\n signatures: {\n prod: \"flex-prod-sig\",\n test: \"flex-test-sig\",\n },\n icon: undefined,\n },\n [DeviceModelId.STAX]: {\n data: \"0xSTAX\",\n descriptorType: \"network\",\n descriptorVersion: \"v1\",\n signatures: {\n prod: \"stax-prod-sig\",\n test: \"stax-test-sig\",\n },\n icon: undefined,\n },\n },\n };\n vi.spyOn(\n mockNetworkDataSource,\n \"getDynamicNetworkConfiguration\",\n ).mockResolvedValue(Right(networkConfig));\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(result).toHaveLength(1);\n const context = result[0];\n if (context && \"payload\" in context) {\n expect(context.payload).toContain(\"0xFLEX\");\n expect(context.payload).toContain(\"flex-prod-sig\");\n }\n });\n\n it(\"should use test mode signature when configured\", async () => {\n // GIVEN\n const testModeLoader = new DynamicNetworkContextLoader(\n mockNetworkDataSource,\n { ...mockConfig, cal: { ...mockConfig.cal, mode: \"test\" } },\n mockCertificateLoader,\n );\n const input: DynamicNetworkContextInput = {\n chainId: 1,\n deviceModelId: DeviceModelId.STAX,\n };\n const networkConfig: DynamicNetworkConfiguration = {\n id: \"ethereum\",\n descriptors: {\n [DeviceModelId.APEX]: createMockDescriptor(),\n [DeviceModelId.NANO_S]: createMockDescriptor(),\n [DeviceModelId.NANO_SP]: createMockDescriptor(),\n [DeviceModelId.NANO_X]: createMockDescriptor(),\n [DeviceModelId.FLEX]: createMockDescriptor(),\n [DeviceModelId.STAX]: {\n data: \"0x0101\",\n descriptorType: \"network\",\n descriptorVersion: \"v1\",\n signatures: {\n prod: \"prod-sig\",\n test: \"test-sig\",\n },\n icon: undefined,\n },\n },\n };\n vi.spyOn(\n mockNetworkDataSource,\n \"getDynamicNetworkConfiguration\",\n ).mockResolvedValue(Right(networkConfig));\n\n // WHEN\n const result = await testModeLoader.load(input);\n\n // THEN\n expect(result).toHaveLength(1);\n const context = result[0];\n if (context && \"payload\" in context) {\n expect(context.payload).toContain(\"test-sig\");\n }\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["DeviceModelId", "Left", "Right", "DynamicNetworkContextLoader", "KeyId", "KeyUsage", "ClearSignContextType", "mockNetworkDataSource", "mockConfig", "mockCertificateLoader", "mockCertificate", "loader", "createMockDescriptor", "partial", "validInput", "input", "_description", "result", "networkConfig", "context", "testModeLoader"]
7
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=DynamicNetworkConfiguration.js.map
@@ -1,2 +1,2 @@
1
- var E=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var m=(s,r,a,t)=>{for(var e=t>1?void 0:t?R(r,a):r,o=s.length-1,l;o>=0;o--)(l=s[o])&&(e=(t?l(r,a,e):l(e))||e);return t&&e&&E(r,a,e),e},x=(s,r)=>(a,t)=>r(a,t,s);import{isHexaString as D}from"@ledgerhq/device-management-kit";import{Interface as P}from"ethers";import{inject as h,injectable as k}from"inversify";import{EitherAsync as C,Left as T,Right as I}from"purify-ts";import{externalPluginTypes as w}from"../../external-plugin/di/externalPluginTypes";import{ClearSignContextType as i}from"../../shared/model/ClearSignContext";import{tokenTypes as O}from"../../token/di/tokenTypes";let u=class{_externalPluginDataSource;_tokenDataSource;constructor(r,a){this._externalPluginDataSource=r,this._tokenDataSource=a}async load(r){const{to:a,data:t,selector:e,chainId:o}=r;if(a===void 0||t==="0x")return[];if(!D(e))return[{type:i.ERROR,error:new Error("Invalid selector")}];const l=await this._externalPluginDataSource.getDappInfos({address:a,chainId:o,selector:e});return C(async({liftEither:c})=>{const n=await c(l);if(!n)return[];const f={type:i.EXTERNAL_PLUGIN,payload:n.selectorDetails.serializedData.concat(n.selectorDetails.signature)},d=this.getDecodedCallData(n.abi,n.selectorDetails.method,t);if(d.isLeft())return[{type:i.ERROR,error:d.extract()},f];const S=d.extract(),y=n.selectorDetails.erc20OfInterest.map(async p=>this.getTokenPayload(r,p,S));return[...(await Promise.all(y)).map(p=>p.caseOf({Left:g=>({type:i.ERROR,error:g}),Right:g=>({type:i.TOKEN,payload:g})})),f]}).caseOf({Left:c=>[{type:i.ERROR,error:c}],Right:c=>c})}getTokenPayload(r,a,t){const e=this.getAddressFromPath(a,t);return C(({fromPromise:o})=>o(this._tokenDataSource.getTokenInfosPayload({address:e,chainId:r.chainId})))}getDecodedCallData(r,a,t){try{const e=new P(r);return I(e.decodeFunctionData(a,t))}catch{return T(new Error("[ContextModule] ExternalPluginContextLoader: Unable to parse abi"))}}getAddressFromPath(r,a){let t=a;for(const e of r.split("."))e==="-1"?t=t[t.length-1]:t=t[e];if(!D(t))throw new Error("[ContextModule] ExternalPluginContextLoader: Unable to get address");return t}};u=m([k(),x(0,h(w.ExternalPluginDataSource)),x(1,h(O.TokenDataSource))],u);export{u as ExternalPluginContextLoader};
1
+ var D=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var y=(i,e,r,t)=>{for(var a=t>1?void 0:t?I(e,r):e,o=i.length-1,l;o>=0;o--)(l=i[o])&&(a=(t?l(e,r,a):l(a))||a);return t&&a&&D(e,r,a),a},u=(i,e)=>(r,t)=>e(r,t,i);import{isHexaString as x}from"@ledgerhq/device-management-kit";import{Interface as T}from"ethers";import{inject as h,injectable as L}from"inversify";import{EitherAsync as S,Left as R,Right as k}from"purify-ts";import{externalPluginTypes as w}from"../../external-plugin/di/externalPluginTypes";import{ClearSignContextType as n}from"../../shared/model/ClearSignContext";import{tokenTypes as _}from"../../token/di/tokenTypes";import{uniswapTypes as b}from"../../uniswap/di/uniswapTypes";const H=[n.EXTERNAL_PLUGIN,n.TOKEN];let g=class{constructor(e,r,t){this._externalPluginDataSource=e;this._tokenDataSource=r;this._uniswapLoader=t;this._customPluginLoaders={Uniswap:this._uniswapLoader}}_customPluginLoaders;canHandle(e,r){return typeof e=="object"&&e!==null&&"to"in e&&"data"in e&&"selector"in e&&"chainId"in e&&typeof e.chainId=="number"&&x(e.to)&&e.to!=="0x"&&x(e.data)&&e.data!=="0x"&&x(e.selector)&&e.selector!=="0x"&&H.every(t=>r.includes(t))}async load(e){const{to:r,data:t,selector:a,chainId:o}=e,l=await this._externalPluginDataSource.getDappInfos({address:r,chainId:o,selector:a});return S(async({liftEither:c})=>{const s=await c(l);if(!s)return[];const p={type:n.EXTERNAL_PLUGIN,payload:s.selectorDetails.serializedData.concat(s.selectorDetails.signature)},m=this._customPluginLoaders[s.selectorDetails.plugin];if(m!==void 0&&m.canHandle(e,[n.TOKEN])){const d=await m.load(e);return[p,...d]}const C=this.getDecodedCallData(s.abi,s.selectorDetails.method,t);if(C.isLeft())return[{type:n.ERROR,error:C.extract()},p];const P=C.extract(),E=s.selectorDetails.erc20OfInterest.map(async d=>this.getTokenPayload(e,d,P));return[...(await Promise.all(E)).map(d=>d.caseOf({Left:f=>({type:n.ERROR,error:f}),Right:f=>({type:n.TOKEN,payload:f})})),p]}).caseOf({Left:c=>[{type:n.ERROR,error:c}],Right:c=>c})}getTokenPayload(e,r,t){const a=this.getAddressFromPath(r,t);return S(({fromPromise:o})=>o(this._tokenDataSource.getTokenInfosPayload({address:a,chainId:e.chainId})))}getDecodedCallData(e,r,t){try{const a=new T(e);return k(a.decodeFunctionData(r,t))}catch{return R(new Error("[ContextModule] ExternalPluginContextLoader: Unable to parse abi"))}}getAddressFromPath(e,r){let t=r;for(const a of e.split("."))a==="-1"?t=t[t.length-1]:t=t[a];if(!x(t))throw new Error("[ContextModule] ExternalPluginContextLoader: Unable to get address");return t}};g=y([L(),u(0,h(w.ExternalPluginDataSource)),u(1,h(_.TokenDataSource)),u(2,h(b.UniswapContextLoader))],g);export{g as ExternalPluginContextLoader};
2
2
  //# sourceMappingURL=ExternalPluginContextLoader.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/external-plugin/domain/ExternalPluginContextLoader.ts"],
4
- "sourcesContent": ["import { HexaString, isHexaString } from \"@ledgerhq/device-management-kit\";\nimport { ethers, Interface } from \"ethers\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, EitherAsync, Left, Right } from \"purify-ts\";\n\nimport type { ExternalPluginDataSource } from \"@/external-plugin/data/ExternalPluginDataSource\";\nimport { externalPluginTypes } from \"@/external-plugin/di/externalPluginTypes\";\nimport { ContextLoader } from \"@/shared/domain/ContextLoader\";\nimport {\n ClearSignContext,\n ClearSignContextType,\n} from \"@/shared/model/ClearSignContext\";\nimport { TransactionContext } from \"@/shared/model/TransactionContext\";\nimport type { TokenDataSource } from \"@/token/data/TokenDataSource\";\nimport { tokenTypes } from \"@/token/di/tokenTypes\";\n\n@injectable()\nexport class ExternalPluginContextLoader implements ContextLoader {\n private _externalPluginDataSource: ExternalPluginDataSource;\n private _tokenDataSource: TokenDataSource;\n\n constructor(\n @inject(externalPluginTypes.ExternalPluginDataSource)\n externalPluginDataSource: ExternalPluginDataSource,\n @inject(tokenTypes.TokenDataSource) tokenDataSource: TokenDataSource,\n ) {\n this._externalPluginDataSource = externalPluginDataSource;\n this._tokenDataSource = tokenDataSource;\n }\n\n async load(ctx: TransactionContext): Promise<ClearSignContext[]> {\n const { to, data, selector, chainId } = ctx;\n if (to === undefined || data === \"0x\") {\n return [];\n }\n\n if (!isHexaString(selector)) {\n return [\n {\n type: ClearSignContextType.ERROR,\n error: new Error(\"Invalid selector\"),\n },\n ];\n }\n\n const eitherDappInfos = await this._externalPluginDataSource.getDappInfos({\n address: to,\n chainId,\n selector,\n });\n\n return EitherAsync<Error, ClearSignContext[]>(async ({ liftEither }) => {\n const dappInfos = await liftEither(eitherDappInfos);\n\n // if the dappInfos is null, return an empty array\n // this means that the selector is not a known selector\n if (!dappInfos) {\n return [];\n }\n\n const externalPluginContext: ClearSignContext = {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload: dappInfos.selectorDetails.serializedData.concat(\n dappInfos.selectorDetails.signature,\n ),\n };\n\n const decodedCallData = this.getDecodedCallData(\n dappInfos.abi,\n dappInfos.selectorDetails.method,\n data,\n );\n\n // if the call data cannot be decoded, return the error\n // but also the externalPluginContext because it is still valid\n if (decodedCallData.isLeft()) {\n return [\n {\n type: ClearSignContextType.ERROR,\n error: decodedCallData.extract(),\n },\n externalPluginContext,\n ];\n }\n\n // decodedCallData is a Right so we can extract it safely\n const extractedDecodedCallData =\n decodedCallData.extract() as ethers.Result;\n\n // get the token payload for each erc20OfInterest\n // and return the payload or the error\n const promises = dappInfos.selectorDetails.erc20OfInterest.map(\n async (erc20Path) =>\n this.getTokenPayload(ctx, erc20Path, extractedDecodedCallData),\n );\n\n const tokensPayload = await Promise.all(promises);\n\n // map the payload or the error to a ClearSignContext\n const contexts: ClearSignContext[] = tokensPayload.map((eitherToken) =>\n eitherToken.caseOf<ClearSignContext>({\n Left: (error) => ({ type: ClearSignContextType.ERROR, error }),\n Right: (payload) => ({ type: ClearSignContextType.TOKEN, payload }),\n }),\n );\n\n return [...contexts, externalPluginContext];\n }).caseOf<ClearSignContext[]>({\n // parse all errors into ClearSignContext\n Left: (error) => [{ type: ClearSignContextType.ERROR, error }],\n Right: (contexts) => contexts,\n });\n }\n\n private getTokenPayload(\n ctx: TransactionContext,\n erc20Path: string,\n decodedCallData: ethers.Result,\n ) {\n const address = this.getAddressFromPath(erc20Path, decodedCallData);\n\n return EitherAsync<Error, string>(({ fromPromise }) =>\n fromPromise(\n this._tokenDataSource.getTokenInfosPayload({\n address,\n chainId: ctx.chainId,\n }),\n ),\n );\n }\n\n private getDecodedCallData(\n abi: object[],\n method: string,\n data: string,\n ): Either<Error, ethers.Result> {\n try {\n const contractInterface = new Interface(abi);\n return Right(contractInterface.decodeFunctionData(method, data));\n } catch (_error) {\n return Left(\n new Error(\n \"[ContextModule] ExternalPluginContextLoader: Unable to parse abi\",\n ),\n );\n }\n }\n\n private getAddressFromPath(\n path: string,\n decodedCallData: ethers.Result,\n ): HexaString {\n // ethers.Result is a record string, any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let value: any = decodedCallData;\n for (const key of path.split(\".\")) {\n // In Solidity, a struct cannot begin with a number\n // Additionally, when we use -1, it signifies the last element of the array.\n if (key === \"-1\") {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n value = value[value.length - 1];\n } else {\n // This access can throw a RangeError error in case of an invalid key\n // but is correctly caught by the liftEither above\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n value = value[key];\n }\n }\n\n if (!isHexaString(value)) {\n throw new Error(\n \"[ContextModule] ExternalPluginContextLoader: Unable to get address\",\n );\n }\n\n return value;\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["isHexaString", "Interface", "inject", "injectable", "EitherAsync", "Left", "Right", "externalPluginTypes", "ClearSignContextType", "tokenTypes", "ExternalPluginContextLoader", "externalPluginDataSource", "tokenDataSource", "ctx", "to", "data", "selector", "chainId", "isHexaString", "ClearSignContextType", "eitherDappInfos", "EitherAsync", "liftEither", "dappInfos", "externalPluginContext", "decodedCallData", "extractedDecodedCallData", "promises", "erc20Path", "eitherToken", "error", "payload", "contexts", "address", "fromPromise", "abi", "method", "contractInterface", "Interface", "Right", "Left", "path", "value", "key", "__decorateClass", "injectable", "__decorateParam", "inject", "externalPluginTypes", "tokenTypes"]
4
+ "sourcesContent": ["import { HexaString, isHexaString } from \"@ledgerhq/device-management-kit\";\nimport { ethers, Interface } from \"ethers\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, EitherAsync, Left, Right } from \"purify-ts\";\n\nimport type { ExternalPluginDataSource } from \"@/external-plugin/data/ExternalPluginDataSource\";\nimport { externalPluginTypes } from \"@/external-plugin/di/externalPluginTypes\";\nimport { ContextLoader } from \"@/shared/domain/ContextLoader\";\nimport {\n ClearSignContext,\n ClearSignContextType,\n} from \"@/shared/model/ClearSignContext\";\nimport type { TokenDataSource } from \"@/token/data/TokenDataSource\";\nimport { tokenTypes } from \"@/token/di/tokenTypes\";\nimport { uniswapTypes } from \"@/uniswap/di/uniswapTypes\";\nimport type { UniswapContextLoader } from \"@/uniswap/domain/UniswapContextLoader\";\n\nexport type ExternalPluginContextInput = {\n to: HexaString;\n data: HexaString;\n selector: HexaString;\n chainId: number;\n};\n\nexport type ExternalPluginTokensInput = {\n data: HexaString;\n selector: HexaString;\n chainId: number;\n};\n\nconst SUPPORTED_TYPES: ClearSignContextType[] = [\n ClearSignContextType.EXTERNAL_PLUGIN,\n ClearSignContextType.TOKEN,\n];\n\n@injectable()\nexport class ExternalPluginContextLoader\n implements ContextLoader<ExternalPluginContextInput>\n{\n private _customPluginLoaders: Record<\n string,\n ContextLoader<ExternalPluginTokensInput>\n >;\n\n constructor(\n @inject(externalPluginTypes.ExternalPluginDataSource)\n private _externalPluginDataSource: ExternalPluginDataSource,\n @inject(tokenTypes.TokenDataSource)\n private _tokenDataSource: TokenDataSource,\n @inject(uniswapTypes.UniswapContextLoader)\n private _uniswapLoader: UniswapContextLoader,\n ) {\n this._customPluginLoaders = {\n Uniswap: this._uniswapLoader,\n };\n }\n\n canHandle(\n input: unknown,\n expectedTypes: ClearSignContextType[],\n ): input is ExternalPluginContextInput {\n return (\n typeof input === \"object\" &&\n input !== null &&\n \"to\" in input &&\n \"data\" in input &&\n \"selector\" in input &&\n \"chainId\" in input &&\n typeof input.chainId === \"number\" &&\n isHexaString(input.to) &&\n input.to !== \"0x\" &&\n isHexaString(input.data) &&\n input.data !== \"0x\" && // non empty data\n isHexaString(input.selector) &&\n input.selector !== \"0x\" &&\n SUPPORTED_TYPES.every((type) => expectedTypes.includes(type))\n );\n }\n\n async load(input: ExternalPluginContextInput): Promise<ClearSignContext[]> {\n const { to, data, selector, chainId } = input;\n\n const eitherDappInfos = await this._externalPluginDataSource.getDappInfos({\n address: to,\n chainId,\n selector,\n });\n\n return EitherAsync<Error, ClearSignContext[]>(async ({ liftEither }) => {\n const dappInfos = await liftEither(eitherDappInfos);\n\n // if the dappInfos is null, return an empty array\n // this means that the selector is not a known selector\n if (!dappInfos) {\n return [];\n }\n\n const externalPluginContext: ClearSignContext = {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload: dappInfos.selectorDetails.serializedData.concat(\n dappInfos.selectorDetails.signature,\n ),\n };\n\n const customLoader =\n this._customPluginLoaders[dappInfos.selectorDetails.plugin];\n if (\n customLoader !== undefined &&\n customLoader.canHandle(input, [ClearSignContextType.TOKEN])\n ) {\n const tokens = await customLoader.load(input);\n return [externalPluginContext, ...tokens];\n }\n\n const decodedCallData = this.getDecodedCallData(\n dappInfos.abi,\n dappInfos.selectorDetails.method,\n data,\n );\n\n // if the call data cannot be decoded, return the error\n // but also the externalPluginContext because it is still valid\n if (decodedCallData.isLeft()) {\n return [\n {\n type: ClearSignContextType.ERROR,\n error: decodedCallData.extract(),\n },\n externalPluginContext,\n ];\n }\n\n // decodedCallData is a Right so we can extract it safely\n const extractedDecodedCallData =\n decodedCallData.extract() as ethers.Result;\n\n // get the token payload for each erc20OfInterest\n // and return the payload or the error\n const promises = dappInfos.selectorDetails.erc20OfInterest.map(\n async (erc20Path) =>\n this.getTokenPayload(input, erc20Path, extractedDecodedCallData),\n );\n\n const tokensPayload = await Promise.all(promises);\n\n // map the payload or the error to a ClearSignContext\n const contexts: ClearSignContext[] = tokensPayload.map((eitherToken) =>\n eitherToken.caseOf<ClearSignContext>({\n Left: (error) => ({ type: ClearSignContextType.ERROR, error }),\n Right: (payload) => ({ type: ClearSignContextType.TOKEN, payload }),\n }),\n );\n\n return [...contexts, externalPluginContext];\n }).caseOf<ClearSignContext[]>({\n // parse all errors into ClearSignContext\n Left: (error) => [{ type: ClearSignContextType.ERROR, error }],\n Right: (contexts) => contexts,\n });\n }\n\n private getTokenPayload(\n input: ExternalPluginContextInput,\n erc20Path: string,\n decodedCallData: ethers.Result,\n ) {\n const address = this.getAddressFromPath(erc20Path, decodedCallData);\n\n return EitherAsync<Error, string>(({ fromPromise }) =>\n fromPromise(\n this._tokenDataSource.getTokenInfosPayload({\n address,\n chainId: input.chainId,\n }),\n ),\n );\n }\n\n private getDecodedCallData(\n abi: object[],\n method: string,\n data: string,\n ): Either<Error, ethers.Result> {\n try {\n const contractInterface = new Interface(abi);\n return Right(contractInterface.decodeFunctionData(method, data));\n } catch (_error) {\n return Left(\n new Error(\n \"[ContextModule] ExternalPluginContextLoader: Unable to parse abi\",\n ),\n );\n }\n }\n\n private getAddressFromPath(\n path: string,\n decodedCallData: ethers.Result,\n ): HexaString {\n // ethers.Result is a record string, any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let value: any = decodedCallData;\n for (const key of path.split(\".\")) {\n // In Solidity, a struct cannot begin with a number\n // Additionally, when we use -1, it signifies the last element of the array.\n if (key === \"-1\") {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n value = value[value.length - 1];\n } else {\n // This access can throw a RangeError error in case of an invalid key\n // but is correctly caught by the liftEither above\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n value = value[key];\n }\n }\n\n if (!isHexaString(value)) {\n throw new Error(\n \"[ContextModule] ExternalPluginContextLoader: Unable to get address\",\n );\n }\n\n return value;\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["isHexaString", "Interface", "inject", "injectable", "EitherAsync", "Left", "Right", "externalPluginTypes", "ClearSignContextType", "tokenTypes", "uniswapTypes", "SUPPORTED_TYPES", "ClearSignContextType", "ExternalPluginContextLoader", "_externalPluginDataSource", "_tokenDataSource", "_uniswapLoader", "input", "expectedTypes", "isHexaString", "type", "to", "data", "selector", "chainId", "eitherDappInfos", "EitherAsync", "liftEither", "dappInfos", "externalPluginContext", "customLoader", "tokens", "decodedCallData", "extractedDecodedCallData", "promises", "erc20Path", "eitherToken", "error", "payload", "contexts", "address", "fromPromise", "abi", "method", "contractInterface", "Interface", "Right", "Left", "path", "value", "key", "__decorateClass", "injectable", "__decorateParam", "inject", "externalPluginTypes", "tokenTypes", "uniswapTypes"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{Interface as m}from"ethers";import{Left as i,Right as c}from"purify-ts";import o from"@/external-plugin/__tests__/abi.json";import{ExternalPluginContextLoader as y}from"../../external-plugin/domain/ExternalPluginContextLoader";import{ClearSignContextType as t}from"../../shared/model/ClearSignContext";const p=({abi:d,selectorDetails:n})=>({abi:d,selectorDetails:{erc20OfInterest:[],method:"",plugin:"",serializedData:"123456",signature:"7890",...n}}),l=(d,n,s)=>{const a=new m(JSON.stringify(d)).encodeFunctionData(n,s);return{to:"0x0",data:a,selector:a.slice(0,10)}};describe("ExternalPluginContextLoader",()=>{const d={getTokenInfosPayload:vi.fn()},n={getDappInfos:vi.fn()},s=new y(n,d);beforeEach(()=>{vi.clearAllMocks(),vi.spyOn(d,"getTokenInfosPayload").mockImplementation(({address:e})=>Promise.resolve(c(`payload-${e}`)))}),describe("load function",async()=>{it("should return an empty array if no destination address is provided",async()=>{const e={},a=()=>s.load(e);await expect(a()).resolves.toEqual([])}),it("should return an empty array if no data provided",async()=>{const e={to:"0x0",data:"0x",selector:"0x0"},a=await s.load(e);expect(a).toEqual([])}),it("should return an empty array if no dapp info is povided",async()=>{const e=l(o,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(n,"getDappInfos").mockResolvedValue(c(void 0));const a=await s.load(e);expect(a).toEqual([])}),it("should return e plugin if no erc20OfInterest is provided",async()=>{const e=p({abi:o,selectorDetails:{erc20OfInterest:[],method:"singleParam"}}),a=l(o,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(n,"getDappInfos").mockResolvedValue(c(e));const r=await s.load(a);expect(r).toEqual([{type:t.EXTERNAL_PLUGIN,payload:"1234567890"}])}),it("should return a list of context responses when one erc20OfInterest is provided for a single parameter",async()=>{const e=p({abi:o,selectorDetails:{erc20OfInterest:["fromToken"],method:"singleParam"}}),a=l(o,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(n,"getDappInfos").mockResolvedValue(c(e));const r=await s.load(a);expect(r).toEqual(expect.arrayContaining([{type:t.EXTERNAL_PLUGIN,payload:"1234567890"},{type:t.TOKEN,payload:"payload-0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"}]))}),it("should return a context response with only set external plugin when one erc20OfInterest is provided for a single parameter but no payload is feched",async()=>{const e=p({abi:o,selectorDetails:{erc20OfInterest:["fromToken"],method:"singleParam"}}),a=l(o,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(n,"getDappInfos").mockResolvedValue(c(e)),vi.spyOn(d,"getTokenInfosPayload").mockResolvedValue(i(Error("error")));const r=await s.load(a);expect(r).toEqual([{type:t.ERROR,error:new Error("error")},{type:t.EXTERNAL_PLUGIN,payload:"1234567890"}])}),it("should return a list of context responses when two erc20OfInterest are provided for two parameters",async()=>{const e=p({abi:o,selectorDetails:{erc20OfInterest:["fromToken","toToken"],method:"multipleParams"}}),a=l(o,"multipleParams",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","0xdAC17F958D2ee523a2206206994597C13D831ec7"]);vi.spyOn(n,"getDappInfos").mockResolvedValue(c(e));const r=await s.load(a);expect(r).toEqual(expect.arrayContaining([{type:t.EXTERNAL_PLUGIN,payload:"1234567890"},{type:t.TOKEN,payload:"payload-0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},{type:t.TOKEN,payload:"payload-0xdAC17F958D2ee523a2206206994597C13D831ec7"}]))}),it("should return a list of context responses when one erc20OfInterest is an array",async()=>{const e=p({abi:o,selectorDetails:{erc20OfInterest:["fromToken.0","fromToken.1","fromToken.2","fromToken.-1"],method:"arrayParam"}}),a=l(o,"arrayParam",[["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","0xdAC17F958D2ee523a2206206994597C13D831ec7","0xB8c77482e45F1F44dE1745F52C74426C631bDD52"]]);vi.spyOn(n,"getDappInfos").mockResolvedValue(c(e));const r=await s.load(a);expect(r).toEqual([{type:t.TOKEN,payload:"payload-0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},{type:t.TOKEN,payload:"payload-0xdAC17F958D2ee523a2206206994597C13D831ec7"},{type:t.TOKEN,payload:"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52"},{type:t.TOKEN,payload:"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52"},{type:t.EXTERNAL_PLUGIN,payload:"1234567890"}])}),it("should return an error when a token datasource returns an error",async()=>{const e=p({abi:o,selectorDetails:{erc20OfInterest:["fromToken"],method:"singleParam"}}),a=l(o,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(n,"getDappInfos").mockResolvedValue(c(e)),vi.spyOn(d,"getTokenInfosPayload").mockResolvedValue(i(new Error("error")));const r=await s.load(a);expect(r).toEqual([{type:t.ERROR,error:new Error("error")},{type:t.EXTERNAL_PLUGIN,payload:"1234567890"}])}),it("should return an error when the abi is not conform",async()=>{const e=p({abi:[{fakeabi:"notworking"}],selectorDetails:{erc20OfInterest:["fromToken"],method:"singleParam"}}),a=l(o,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(n,"getDappInfos").mockResolvedValue(c(e));const r=await s.load(a);expect(r).toEqual([{type:t.ERROR,error:new Error("[ContextModule] ExternalPluginContextLoader: Unable to parse abi")},{type:t.EXTERNAL_PLUGIN,payload:"1234567890"}])}),it("should throw an error when the erc20OfInterest doest not exist in the transaction",async()=>{const e=p({abi:o,selectorDetails:{erc20OfInterest:["notFound"],method:"singleParam"}}),a=l(o,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(n,"getDappInfos").mockResolvedValue(c(e));const r=await s.load(a);expect(r).toEqual([{type:t.ERROR,error:new Error("[ContextModule] ExternalPluginContextLoader: Unable to get address")}])}),it("should throw an error when an out-of-bounds element is present in erc20OfInterest",async()=>{const e=p({abi:o,selectorDetails:{erc20OfInterest:["fromToken.3"],method:"arrayParam"}}),a=l(o,"arrayParam",[["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","0xdAC17F958D2ee523a2206206994597C13D831ec7","0xB8c77482e45F1F44dE1745F52C74426C631bDD52"]]);vi.spyOn(n,"getDappInfos").mockResolvedValue(c(e));const r=await s.load(a);expect(r).toEqual([{type:t.ERROR,error:new RangeError("out of result range")}])}),it("should return a list of context responses when one erc20OfInterest is a complex struct",async()=>{const e=p({abi:o,selectorDetails:{erc20OfInterest:["complexStruct.address1","complexStruct.param1.param2.0.param3.addresses.0","complexStruct.param1.param2.0.param3.addresses.1","complexStruct.param1.param2.0.param3.addresses.-1","complexStruct.param1.param2.1.param3.addresses.0","complexStruct.param1.param2.-1.param3.addresses.0"],method:"complexStructParam"}}),a=l(o,"complexStructParam",[{address1:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",param1:{param2:[{param3:{addresses:["0xdAC17F958D2ee523a2206206994597C13D831ec7","0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE"]}},{param3:{addresses:["0xB8c77482e45F1F44dE1745F52C74426C631bDD52"]}}]}}]);vi.spyOn(n,"getDappInfos").mockResolvedValue(c(e));const r=await s.load(a);expect(r).toEqual([{type:t.TOKEN,payload:"payload-0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},{type:t.TOKEN,payload:"payload-0xdAC17F958D2ee523a2206206994597C13D831ec7"},{type:t.TOKEN,payload:"payload-0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE"},{type:t.TOKEN,payload:"payload-0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE"},{type:t.TOKEN,payload:"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52"},{type:t.TOKEN,payload:"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52"},{type:t.EXTERNAL_PLUGIN,payload:"1234567890"}])}),it("should return an error when datasource return a Left",async()=>{const e=l(o,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(n,"getDappInfos").mockResolvedValue(i(new Error("error")));const a=await s.load(e);expect(a).toEqual([{type:t.ERROR,error:new Error("error")}])}),it("should return an error when transaction data is not a valid hex string",async()=>{const e={to:"0x0",data:"notAHexString"},a=await s.load(e);expect(a).toEqual([{type:t.ERROR,error:new Error("Invalid selector")}])})})});
1
+ import{Interface as E}from"ethers";import{Left as u,Right as l}from"purify-ts";import n from"@/external-plugin/__tests__/abi.json";import{ExternalPluginContextLoader as m}from"../../external-plugin/domain/ExternalPluginContextLoader";import{ClearSignContextType as a}from"../../shared/model/ClearSignContext";const p=({abi:i,selectorDetails:s})=>({abi:i,selectorDetails:{erc20OfInterest:[],method:"",plugin:"",serializedData:"123456",signature:"7890",...s}}),c=(i,s,d)=>{const e=new E(JSON.stringify(i)).encodeFunctionData(s,d);return{to:"0x0",data:e,selector:e.slice(0,10),chainId:1}};describe("ExternalPluginContextLoader",()=>{const i={getTokenInfosPayload:vi.fn()},s={getDappInfos:vi.fn()},d={canHandle:vi.fn(),load:vi.fn()},r=new m(s,i,d);beforeEach(()=>{vi.clearAllMocks(),vi.spyOn(i,"getTokenInfosPayload").mockImplementation(({address:e})=>Promise.resolve(l(`payload-${e}`)))}),describe("canHandle function",()=>{const e={to:"0x1234567890123456789012345678901234567890",data:"0x095ea7b30000000000000000000000001234567890123456789012345678901234567890",selector:"0x095ea7b3",chainId:1};it("should return true for valid input",()=>{expect(r.canHandle(e,[a.EXTERNAL_PLUGIN,a.TOKEN])).toBe(!0)}),it("should return false for invalid expected type",()=>{expect(r.canHandle(e,[a.NFT])).toBe(!1),expect(r.canHandle(e,[a.TOKEN])).toBe(!1),expect(r.canHandle(e,[a.EXTERNAL_PLUGIN])).toBe(!1)}),it.each([[null,"null input"],[void 0,"undefined input"],[{},"empty object"],["string","string input"],[123,"number input"]])("should return false for %s",(t,o)=>{expect(r.canHandle(t,[a.EXTERNAL_PLUGIN,a.TOKEN])).toBe(!1)}),it.each([[{...e,to:void 0},"missing to"],[{...e,data:void 0},"missing data"],[{...e,selector:void 0},"missing selector"],[{...e,chainId:void 0},"missing chainId"]])("should return false for %s",(t,o)=>{expect(r.canHandle(t,[a.EXTERNAL_PLUGIN,a.TOKEN])).toBe(!1)}),it.each([[{...e,to:"invalid-hex"},"invalid to hex"],[{...e,to:"0x"},"empty to hex"],[{...e,data:"invalid-hex"},"invalid data hex"],[{...e,data:"0x"},"empty data (0x)"],[{...e,selector:"invalid-hex"},"invalid selector hex"],[{...e,selector:"0x"},"empty selector hex"]])("should return false for %s",(t,o)=>{expect(r.canHandle(t,[a.EXTERNAL_PLUGIN,a.TOKEN])).toBe(!1)}),it.each([[{...e,chainId:"1"},"string chainId"],[{...e,chainId:null},"null chainId"],[{...e,chainId:void 0},"undefined chainId"]])("should return false for %s",(t,o)=>{expect(r.canHandle(t,[a.EXTERNAL_PLUGIN,a.TOKEN])).toBe(!1)})}),describe("load function",()=>{it("should return an empty array if no dapp info is provided",async()=>{const e=c(n,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(s,"getDappInfos").mockResolvedValue(l(void 0));const t=await r.load(e);expect(t).toEqual([])}),it("should return e plugin if no erc20OfInterest is provided",async()=>{const e=p({abi:n,selectorDetails:{erc20OfInterest:[],method:"singleParam",plugin:"TestPlugin"}}),t=c(n,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(s,"getDappInfos").mockResolvedValue(l(e));const o=await r.load(t);expect(d.canHandle).not.toHaveBeenCalled(),expect(o).toEqual([{type:a.EXTERNAL_PLUGIN,payload:"1234567890"}])}),it("should return a list of context responses when one erc20OfInterest is provided for a single parameter",async()=>{const e=p({abi:n,selectorDetails:{erc20OfInterest:["fromToken"],method:"singleParam",plugin:"TestPlugin"}}),t=c(n,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(s,"getDappInfos").mockResolvedValue(l(e));const o=await r.load(t);expect(d.canHandle).not.toHaveBeenCalled(),expect(o).toEqual(expect.arrayContaining([{type:a.EXTERNAL_PLUGIN,payload:"1234567890"},{type:a.TOKEN,payload:"payload-0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"}]))}),it("should return a context response with only set external plugin when one erc20OfInterest is provided for a single parameter but no payload is feched",async()=>{const e=p({abi:n,selectorDetails:{erc20OfInterest:["fromToken"],method:"singleParam"}}),t=c(n,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(s,"getDappInfos").mockResolvedValue(l(e)),vi.spyOn(i,"getTokenInfosPayload").mockResolvedValue(u(Error("error")));const o=await r.load(t);expect(d.canHandle).not.toHaveBeenCalled(),expect(o).toEqual([{type:a.ERROR,error:new Error("error")},{type:a.EXTERNAL_PLUGIN,payload:"1234567890"}])}),it("should return a list of context responses when two erc20OfInterest are provided for two parameters",async()=>{const e=p({abi:n,selectorDetails:{erc20OfInterest:["fromToken","toToken"],method:"multipleParams"}}),t=c(n,"multipleParams",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","0xdAC17F958D2ee523a2206206994597C13D831ec7"]);vi.spyOn(s,"getDappInfos").mockResolvedValue(l(e));const o=await r.load(t);expect(o).toEqual(expect.arrayContaining([{type:a.EXTERNAL_PLUGIN,payload:"1234567890"},{type:a.TOKEN,payload:"payload-0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},{type:a.TOKEN,payload:"payload-0xdAC17F958D2ee523a2206206994597C13D831ec7"}]))}),it("should return a list of context responses when one erc20OfInterest is an array",async()=>{const e=p({abi:n,selectorDetails:{erc20OfInterest:["fromToken.0","fromToken.1","fromToken.2","fromToken.-1"],method:"arrayParam"}}),t=c(n,"arrayParam",[["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","0xdAC17F958D2ee523a2206206994597C13D831ec7","0xB8c77482e45F1F44dE1745F52C74426C631bDD52"]]);vi.spyOn(s,"getDappInfos").mockResolvedValue(l(e));const o=await r.load(t);expect(o).toEqual([{type:a.TOKEN,payload:"payload-0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},{type:a.TOKEN,payload:"payload-0xdAC17F958D2ee523a2206206994597C13D831ec7"},{type:a.TOKEN,payload:"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52"},{type:a.TOKEN,payload:"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52"},{type:a.EXTERNAL_PLUGIN,payload:"1234567890"}])}),it("should return an error when a token datasource returns an error",async()=>{const e=p({abi:n,selectorDetails:{erc20OfInterest:["fromToken"],method:"singleParam"}}),t=c(n,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(s,"getDappInfos").mockResolvedValue(l(e)),vi.spyOn(i,"getTokenInfosPayload").mockResolvedValue(u(new Error("error")));const o=await r.load(t);expect(o).toEqual([{type:a.ERROR,error:new Error("error")},{type:a.EXTERNAL_PLUGIN,payload:"1234567890"}])}),it("should return an error when the abi is not conform",async()=>{const e=p({abi:[{fakeabi:"notworking"}],selectorDetails:{erc20OfInterest:["fromToken"],method:"singleParam"}}),t=c(n,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(s,"getDappInfos").mockResolvedValue(l(e));const o=await r.load(t);expect(o).toEqual([{type:a.ERROR,error:new Error("[ContextModule] ExternalPluginContextLoader: Unable to parse abi")},{type:a.EXTERNAL_PLUGIN,payload:"1234567890"}])}),it("should throw an error when the erc20OfInterest doest not exist in the transaction",async()=>{const e=p({abi:n,selectorDetails:{erc20OfInterest:["notFound"],method:"singleParam"}}),t=c(n,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(s,"getDappInfos").mockResolvedValue(l(e));const o=await r.load(t);expect(o).toEqual([{type:a.ERROR,error:new Error("[ContextModule] ExternalPluginContextLoader: Unable to get address")}])}),it("should throw an error when an out-of-bounds element is present in erc20OfInterest",async()=>{const e=p({abi:n,selectorDetails:{erc20OfInterest:["fromToken.3"],method:"arrayParam"}}),t=c(n,"arrayParam",[["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","0xdAC17F958D2ee523a2206206994597C13D831ec7","0xB8c77482e45F1F44dE1745F52C74426C631bDD52"]]);vi.spyOn(s,"getDappInfos").mockResolvedValue(l(e));const o=await r.load(t);expect(o).toEqual([{type:a.ERROR,error:new RangeError("out of result range")}])}),it("should return a list of context responses when one erc20OfInterest is a complex struct",async()=>{const e=p({abi:n,selectorDetails:{erc20OfInterest:["complexStruct.address1","complexStruct.param1.param2.0.param3.addresses.0","complexStruct.param1.param2.0.param3.addresses.1","complexStruct.param1.param2.0.param3.addresses.-1","complexStruct.param1.param2.1.param3.addresses.0","complexStruct.param1.param2.-1.param3.addresses.0"],method:"complexStructParam"}}),t=c(n,"complexStructParam",[{address1:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",param1:{param2:[{param3:{addresses:["0xdAC17F958D2ee523a2206206994597C13D831ec7","0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE"]}},{param3:{addresses:["0xB8c77482e45F1F44dE1745F52C74426C631bDD52"]}}]}}]);vi.spyOn(s,"getDappInfos").mockResolvedValue(l(e));const o=await r.load(t);expect(o).toEqual([{type:a.TOKEN,payload:"payload-0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},{type:a.TOKEN,payload:"payload-0xdAC17F958D2ee523a2206206994597C13D831ec7"},{type:a.TOKEN,payload:"payload-0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE"},{type:a.TOKEN,payload:"payload-0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE"},{type:a.TOKEN,payload:"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52"},{type:a.TOKEN,payload:"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52"},{type:a.EXTERNAL_PLUGIN,payload:"1234567890"}])}),it("should return a plugin with Uniswap not being able to load token",async()=>{const e=p({abi:n,selectorDetails:{erc20OfInterest:[],method:"singleParam",plugin:"Uniswap"}}),t=c(n,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(s,"getDappInfos").mockResolvedValue(l(e)),vi.spyOn(d,"canHandle").mockReturnValueOnce(!1);const o=await r.load(t);expect(d.canHandle).toHaveBeenCalled(),expect(d.load).not.toHaveBeenCalled(),expect(o).toEqual([{type:a.EXTERNAL_PLUGIN,payload:"1234567890"}])}),it("should return a plugin with Uniswap extracted tokens",async()=>{const e=p({abi:n,selectorDetails:{erc20OfInterest:[],method:"singleParam",plugin:"Uniswap"}}),t=c(n,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(s,"getDappInfos").mockResolvedValue(l(e)),vi.spyOn(d,"canHandle").mockReturnValueOnce(!0),vi.spyOn(d,"load").mockResolvedValue([{type:a.TOKEN,payload:"payload-0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE"},{type:a.TOKEN,payload:"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52"}]);const o=await r.load(t);expect(d.canHandle).toHaveBeenCalled(),expect(d.load).toHaveBeenCalled(),expect(o).toEqual([{type:a.EXTERNAL_PLUGIN,payload:"1234567890"},{type:a.TOKEN,payload:"payload-0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE"},{type:a.TOKEN,payload:"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52"}])}),it("should return an error when datasource return a Left",async()=>{const e=c(n,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(s,"getDappInfos").mockResolvedValue(u(new Error("error")));const t=await r.load(e);expect(t).toEqual([{type:a.ERROR,error:new Error("error")}])})})});
2
2
  //# sourceMappingURL=ExternalPluginContextLoader.test.js.map