@ledgerhq/context-module 0.0.0-transactionInspector-resolutionObj-20250916153045 → 0.0.0-trusted-names-native-transfer-1-20260121120757

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 (830) 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/di/configTypes.js +1 -1
  29. package/lib/cjs/src/config/di/configTypes.js.map +2 -2
  30. package/lib/cjs/src/config/model/ContextModuleBuildArgs.js +1 -1
  31. package/lib/cjs/src/config/model/ContextModuleBuildArgs.js.map +1 -1
  32. package/lib/cjs/src/config/model/ContextModuleConfig.js +1 -1
  33. package/lib/cjs/src/config/model/ContextModuleConfig.js.map +1 -1
  34. package/lib/cjs/src/di.js +1 -1
  35. package/lib/cjs/src/di.js.map +3 -3
  36. package/lib/cjs/src/dynamic-network/domain/DynamicNetworkContextLoader.js +1 -1
  37. package/lib/cjs/src/dynamic-network/domain/DynamicNetworkContextLoader.js.map +3 -3
  38. package/lib/cjs/src/dynamic-network/domain/DynamicNetworkContextLoader.test.js +1 -1
  39. package/lib/cjs/src/dynamic-network/domain/DynamicNetworkContextLoader.test.js.map +3 -3
  40. package/lib/cjs/src/external-plugin/domain/ExternalPluginContextLoader.js +1 -1
  41. package/lib/cjs/src/external-plugin/domain/ExternalPluginContextLoader.js.map +3 -3
  42. package/lib/cjs/src/external-plugin/domain/ExternalPluginContextLoader.test.js +1 -1
  43. package/lib/cjs/src/external-plugin/domain/ExternalPluginContextLoader.test.js.map +3 -3
  44. package/lib/cjs/src/index.js +1 -1
  45. package/lib/cjs/src/index.js.map +2 -2
  46. package/lib/cjs/src/nft/di/nftModuleFactory.js +1 -1
  47. package/lib/cjs/src/nft/di/nftModuleFactory.js.map +3 -3
  48. package/lib/cjs/src/nft/di/nftTypes.js +1 -1
  49. package/lib/cjs/src/nft/di/nftTypes.js.map +2 -2
  50. package/lib/cjs/src/nft/domain/NftContextFieldLoader.js +2 -0
  51. package/lib/cjs/src/nft/domain/NftContextFieldLoader.js.map +7 -0
  52. package/lib/cjs/src/nft/domain/NftContextFieldLoader.test.js +2 -0
  53. package/lib/cjs/src/nft/domain/NftContextFieldLoader.test.js.map +7 -0
  54. package/lib/cjs/src/nft/domain/NftContextLoader.js +1 -1
  55. package/lib/cjs/src/nft/domain/NftContextLoader.js.map +3 -3
  56. package/lib/cjs/src/nft/domain/NftContextLoader.test.js +1 -1
  57. package/lib/cjs/src/nft/domain/NftContextLoader.test.js.map +3 -3
  58. package/lib/cjs/src/pki/model/KeyUsage.js +1 -1
  59. package/lib/cjs/src/pki/model/KeyUsage.js.map +2 -2
  60. package/lib/cjs/src/pki/model/PkiCertificateInfo.js +1 -1
  61. package/lib/cjs/src/pki/model/PkiCertificateInfo.js.map +1 -1
  62. package/lib/cjs/src/proxy/data/HttpProxyDataSource.js +2 -0
  63. package/lib/cjs/src/proxy/data/HttpProxyDataSource.js.map +7 -0
  64. package/lib/cjs/src/proxy/data/HttpProxyDataSource.test.js +2 -0
  65. package/lib/cjs/src/proxy/data/HttpProxyDataSource.test.js.map +7 -0
  66. package/lib/cjs/src/proxy/data/HttpSafeProxyDataSource.js +2 -0
  67. package/lib/cjs/src/proxy/data/HttpSafeProxyDataSource.js.map +7 -0
  68. package/lib/cjs/src/proxy/data/HttpSafeProxyDataSource.test.js +2 -0
  69. package/lib/cjs/src/proxy/data/HttpSafeProxyDataSource.test.js.map +7 -0
  70. package/lib/cjs/src/proxy/data/ProxyDataSource.js +2 -0
  71. package/lib/cjs/src/proxy/data/ProxyDataSource.js.map +7 -0
  72. package/lib/cjs/src/{transaction → proxy}/data/dto/ProxyDelegateCallDto.js.map +1 -1
  73. package/lib/cjs/src/{transaction → proxy}/data/dto/ProxyImplementationAddressDto.js.map +1 -1
  74. package/lib/cjs/src/proxy/data/dto/SafeProxyImplementationAddressDto.js +2 -0
  75. package/lib/cjs/src/proxy/data/dto/SafeProxyImplementationAddressDto.js.map +7 -0
  76. package/lib/cjs/src/proxy/di/proxyModuleFactory.js +2 -0
  77. package/lib/cjs/src/proxy/di/proxyModuleFactory.js.map +7 -0
  78. package/lib/cjs/src/proxy/di/proxyModuleFactory.test.js +2 -0
  79. package/lib/cjs/src/proxy/di/proxyModuleFactory.test.js.map +7 -0
  80. package/lib/cjs/src/proxy/di/proxyTypes.js +2 -0
  81. package/lib/cjs/src/proxy/di/proxyTypes.js.map +7 -0
  82. package/lib/cjs/src/proxy/domain/ProxyContextFieldLoader.js +2 -0
  83. package/lib/cjs/src/proxy/domain/ProxyContextFieldLoader.js.map +7 -0
  84. package/lib/cjs/src/proxy/domain/ProxyContextFieldLoader.test.js +2 -0
  85. package/lib/cjs/src/proxy/domain/ProxyContextFieldLoader.test.js.map +7 -0
  86. package/lib/cjs/src/proxy/model/ProxyDelegateCall.js +2 -0
  87. package/lib/cjs/src/proxy/model/ProxyDelegateCall.js.map +7 -0
  88. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.js +2 -0
  89. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.js.map +7 -0
  90. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.test.js +2 -0
  91. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.test.js.map +7 -0
  92. package/lib/cjs/src/safe/data/SafeAccountDataSource.js +2 -0
  93. package/lib/cjs/src/safe/data/SafeAccountDataSource.js.map +7 -0
  94. package/lib/cjs/src/safe/data/dto/SafeAccountDto.js +2 -0
  95. package/lib/cjs/src/safe/data/dto/SafeAccountDto.js.map +7 -0
  96. package/lib/cjs/src/safe/di/safeModuleFactory.js +2 -0
  97. package/lib/cjs/src/safe/di/safeModuleFactory.js.map +7 -0
  98. package/lib/cjs/src/safe/di/safeModuleFactory.test.js +2 -0
  99. package/lib/cjs/src/safe/di/safeModuleFactory.test.js.map +7 -0
  100. package/lib/cjs/src/safe/di/safeTypes.js +2 -0
  101. package/lib/cjs/src/safe/di/safeTypes.js.map +7 -0
  102. package/lib/cjs/src/safe/domain/SafeAddressLoader.js +2 -0
  103. package/lib/cjs/src/safe/domain/SafeAddressLoader.js.map +7 -0
  104. package/lib/cjs/src/safe/domain/SafeAddressLoader.test.js +2 -0
  105. package/lib/cjs/src/safe/domain/SafeAddressLoader.test.js.map +7 -0
  106. package/lib/cjs/src/shared/domain/ContextFieldLoader.js +2 -0
  107. package/lib/cjs/src/shared/domain/ContextFieldLoader.js.map +7 -0
  108. package/lib/cjs/src/shared/domain/ContextLoader.js +1 -1
  109. package/lib/cjs/src/shared/domain/ContextLoader.js.map +1 -1
  110. package/lib/cjs/src/shared/model/ClearSignContext.js +1 -1
  111. package/lib/cjs/src/shared/model/ClearSignContext.js.map +3 -3
  112. package/lib/cjs/src/shared/model/SolanaContextTypes.js +2 -0
  113. package/lib/cjs/src/shared/model/SolanaContextTypes.js.map +7 -0
  114. package/lib/cjs/src/shared/model/SolanaTransactionContext.js +1 -1
  115. package/lib/cjs/src/shared/model/SolanaTransactionContext.js.map +1 -1
  116. package/lib/cjs/src/shared/model/TransactionSubset.js +1 -1
  117. package/lib/cjs/src/shared/model/TransactionSubset.js.map +1 -1
  118. package/lib/cjs/src/shared/model/TypedDataClearSignContext.js +1 -1
  119. package/lib/cjs/src/shared/model/TypedDataClearSignContext.js.map +3 -3
  120. package/lib/cjs/src/shared/model/TypedDataContext.js +1 -1
  121. package/lib/cjs/src/shared/model/TypedDataContext.js.map +1 -1
  122. package/lib/cjs/src/shared/utils/KeyUsageMapper.js +1 -1
  123. package/lib/cjs/src/shared/utils/KeyUsageMapper.js.map +2 -2
  124. package/lib/cjs/src/shared/utils/KeyUsageMapper.test.js +1 -1
  125. package/lib/cjs/src/shared/utils/KeyUsageMapper.test.js.map +2 -2
  126. package/lib/cjs/src/shared/utils/NullLoggerPublisherService.js +2 -0
  127. package/lib/cjs/src/shared/utils/NullLoggerPublisherService.js.map +7 -0
  128. package/lib/cjs/src/shared/utils/NullLoggerPublisherService.test.js +2 -0
  129. package/lib/cjs/src/shared/utils/NullLoggerPublisherService.test.js.map +7 -0
  130. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.js +1 -1
  131. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.js.map +3 -3
  132. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js +1 -1
  133. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js.map +2 -2
  134. package/lib/cjs/src/solana/data/SolanaDataSource.js +1 -1
  135. package/lib/cjs/src/solana/data/SolanaDataSource.js.map +1 -1
  136. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.js +1 -1
  137. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.js.map +3 -3
  138. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.test.js +1 -1
  139. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.test.js.map +3 -3
  140. package/lib/cjs/src/solana/domain/solanaContextTypes.js +1 -1
  141. package/lib/cjs/src/solana/domain/solanaContextTypes.js.map +1 -1
  142. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.js +2 -0
  143. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.js.map +7 -0
  144. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js +2 -0
  145. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js.map +7 -0
  146. package/lib/cjs/src/solanaLifi/data/SolanaLifiDataSource.js +2 -0
  147. package/lib/cjs/src/solanaLifi/data/SolanaLifiDataSource.js.map +7 -0
  148. package/lib/cjs/src/solanaLifi/di/lifiModuleFactory.js +2 -0
  149. package/lib/cjs/src/solanaLifi/di/lifiModuleFactory.js.map +7 -0
  150. package/lib/cjs/src/solanaLifi/di/solanaLifiTypes.js +2 -0
  151. package/lib/cjs/src/solanaLifi/di/solanaLifiTypes.js.map +7 -0
  152. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.js +2 -0
  153. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.js.map +7 -0
  154. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.test.js +2 -0
  155. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.test.js.map +7 -0
  156. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.js +2 -0
  157. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.js.map +7 -0
  158. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.test.js +7 -0
  159. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.test.js.map +7 -0
  160. package/lib/cjs/src/solanaToken/data/SolanaTokenDataSource.js +2 -0
  161. package/lib/cjs/src/solanaToken/data/SolanaTokenDataSource.js.map +7 -0
  162. package/lib/cjs/src/solanaToken/di/solanaTokenTypes.js +2 -0
  163. package/lib/cjs/src/solanaToken/di/solanaTokenTypes.js.map +7 -0
  164. package/lib/cjs/src/solanaToken/di/tokenModuleFactory.js +2 -0
  165. package/lib/cjs/src/solanaToken/di/tokenModuleFactory.js.map +7 -0
  166. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.js +2 -0
  167. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.js.map +7 -0
  168. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.test.js +2 -0
  169. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.test.js.map +7 -0
  170. package/lib/cjs/src/token/data/HttpTokenDataSource.js +1 -1
  171. package/lib/cjs/src/token/data/HttpTokenDataSource.js.map +2 -2
  172. package/lib/cjs/src/token/data/HttpTokenDataSource.test.js +1 -1
  173. package/lib/cjs/src/token/data/HttpTokenDataSource.test.js.map +2 -2
  174. package/lib/cjs/src/token/di/tokenModuleFactory.js +1 -1
  175. package/lib/cjs/src/token/di/tokenModuleFactory.js.map +3 -3
  176. package/lib/cjs/src/token/di/tokenTypes.js +1 -1
  177. package/lib/cjs/src/token/di/tokenTypes.js.map +2 -2
  178. package/lib/cjs/src/token/domain/TokenContextFieldLoader.js +2 -0
  179. package/lib/cjs/src/token/domain/TokenContextFieldLoader.js.map +7 -0
  180. package/lib/cjs/src/token/domain/TokenContextFieldLoader.test.js +2 -0
  181. package/lib/cjs/src/token/domain/TokenContextFieldLoader.test.js.map +7 -0
  182. package/lib/cjs/src/token/domain/TokenContextLoader.js +1 -1
  183. package/lib/cjs/src/token/domain/TokenContextLoader.js.map +3 -3
  184. package/lib/cjs/src/token/domain/TokenContextLoader.test.js +1 -1
  185. package/lib/cjs/src/token/domain/TokenContextLoader.test.js.map +3 -3
  186. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.js +2 -0
  187. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.js.map +7 -0
  188. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.test.js +2 -0
  189. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.test.js.map +7 -0
  190. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.js +2 -0
  191. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.js.map +7 -0
  192. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js +2 -0
  193. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js.map +7 -0
  194. package/lib/cjs/src/transaction-check/data/TransactionCheckDataSource.js +2 -0
  195. package/lib/cjs/src/transaction-check/data/TransactionCheckDataSource.js.map +7 -0
  196. package/lib/cjs/src/transaction-check/data/TypedDataCheckDataSource.js +2 -0
  197. package/lib/cjs/src/transaction-check/data/TypedDataCheckDataSource.js.map +7 -0
  198. package/lib/cjs/src/transaction-check/data/dto/TransactionCheckDto.js +2 -0
  199. package/lib/cjs/src/transaction-check/data/dto/TransactionCheckDto.js.map +7 -0
  200. package/lib/cjs/src/transaction-check/data/dto/TypedDataCheckDto.js +2 -0
  201. package/lib/cjs/src/transaction-check/data/dto/TypedDataCheckDto.js.map +7 -0
  202. package/lib/cjs/src/transaction-check/di/transactionCheckModuleFactory.js +2 -0
  203. package/lib/cjs/src/transaction-check/di/transactionCheckModuleFactory.js.map +7 -0
  204. package/lib/cjs/src/transaction-check/di/transactionCheckTypes.js +2 -0
  205. package/lib/cjs/src/transaction-check/di/transactionCheckTypes.js.map +7 -0
  206. package/lib/cjs/src/transaction-check/domain/TransactionCheckContextLoader.js +2 -0
  207. package/lib/cjs/src/transaction-check/domain/TransactionCheckContextLoader.js.map +7 -0
  208. package/lib/cjs/src/transaction-check/domain/TransactionCheckContextLoader.test.js +2 -0
  209. package/lib/cjs/src/transaction-check/domain/TransactionCheckContextLoader.test.js.map +7 -0
  210. package/lib/cjs/src/transaction-check/domain/TypedDataCheckContextLoader.js +2 -0
  211. package/lib/cjs/src/transaction-check/domain/TypedDataCheckContextLoader.js.map +7 -0
  212. package/lib/cjs/src/transaction-check/domain/TypedDataCheckContextLoader.test.js +2 -0
  213. package/lib/cjs/src/transaction-check/domain/TypedDataCheckContextLoader.test.js.map +7 -0
  214. package/lib/cjs/src/trusted-name/data/HttpTrustedNameDataSource.js +1 -1
  215. package/lib/cjs/src/trusted-name/data/HttpTrustedNameDataSource.js.map +3 -3
  216. package/lib/cjs/src/trusted-name/data/HttpTrustedNameDataSource.test.js +1 -1
  217. package/lib/cjs/src/trusted-name/data/HttpTrustedNameDataSource.test.js.map +2 -2
  218. package/lib/cjs/src/trusted-name/data/TrustedNameDataSource.js +1 -1
  219. package/lib/cjs/src/trusted-name/data/TrustedNameDataSource.js.map +1 -1
  220. package/lib/cjs/src/trusted-name/data/TrustedNameDto.js +1 -1
  221. package/lib/cjs/src/trusted-name/data/TrustedNameDto.js.map +1 -1
  222. package/lib/cjs/src/trusted-name/di/trustedNameModuleFactory.js +1 -1
  223. package/lib/cjs/src/trusted-name/di/trustedNameModuleFactory.js.map +3 -3
  224. package/lib/cjs/src/trusted-name/di/trustedNameTypes.js +1 -1
  225. package/lib/cjs/src/trusted-name/di/trustedNameTypes.js.map +2 -2
  226. package/lib/cjs/src/trusted-name/domain/TrustedNameContextFieldLoader.js +2 -0
  227. package/lib/cjs/src/trusted-name/domain/TrustedNameContextFieldLoader.js.map +7 -0
  228. package/lib/cjs/src/trusted-name/domain/TrustedNameContextFieldLoader.test.js +2 -0
  229. package/lib/cjs/src/trusted-name/domain/TrustedNameContextFieldLoader.test.js.map +7 -0
  230. package/lib/cjs/src/trusted-name/domain/TrustedNameContextLoader.js +1 -1
  231. package/lib/cjs/src/trusted-name/domain/TrustedNameContextLoader.js.map +3 -3
  232. package/lib/cjs/src/trusted-name/domain/TrustedNameContextLoader.test.js +1 -1
  233. package/lib/cjs/src/trusted-name/domain/TrustedNameContextLoader.test.js.map +3 -3
  234. package/lib/cjs/src/typed-data/data/FiltersDto.js +1 -1
  235. package/lib/cjs/src/typed-data/data/FiltersDto.js.map +1 -1
  236. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.js +1 -1
  237. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.js.map +3 -3
  238. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.test.js +1 -1
  239. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.test.js.map +3 -3
  240. package/lib/cjs/src/typed-data/data/TypedDataDataSource.js +1 -1
  241. package/lib/cjs/src/typed-data/data/TypedDataDataSource.js.map +1 -1
  242. package/lib/cjs/src/typed-data/domain/DefaultTypedDataContextLoader.js +1 -1
  243. package/lib/cjs/src/typed-data/domain/DefaultTypedDataContextLoader.js.map +3 -3
  244. package/lib/cjs/src/typed-data/domain/DefaultTypedDataContextLoader.test.js +1 -1
  245. package/lib/cjs/src/typed-data/domain/DefaultTypedDataContextLoader.test.js.map +3 -3
  246. package/lib/cjs/src/uniswap/constants/uniswap.js +1 -1
  247. package/lib/cjs/src/uniswap/constants/uniswap.js.map +3 -3
  248. package/lib/cjs/src/uniswap/domain/UniswapContextLoader.js +1 -1
  249. package/lib/cjs/src/uniswap/domain/UniswapContextLoader.js.map +3 -3
  250. package/lib/cjs/src/uniswap/domain/UniswapContextLoader.test.js +1 -1
  251. package/lib/cjs/src/uniswap/domain/UniswapContextLoader.test.js.map +3 -3
  252. package/lib/esm/package.json +38 -34
  253. package/lib/esm/src/ContextModuleBuilder.js +1 -1
  254. package/lib/esm/src/ContextModuleBuilder.js.map +3 -3
  255. package/lib/esm/src/ContextModuleBuilder.test.js +1 -1
  256. package/lib/esm/src/ContextModuleBuilder.test.js.map +3 -3
  257. package/lib/esm/src/DefaultContextModule.js +1 -1
  258. package/lib/esm/src/DefaultContextModule.js.map +3 -3
  259. package/lib/esm/src/DefaultContextModule.test.js +1 -1
  260. package/lib/esm/src/DefaultContextModule.test.js.map +3 -3
  261. package/lib/esm/src/calldata/data/CalldataDescriptorDataSource.js +1 -0
  262. package/lib/esm/src/calldata/data/HttpCalldataDescriptorDataSource.js +2 -0
  263. package/lib/esm/src/calldata/data/HttpCalldataDescriptorDataSource.js.map +7 -0
  264. package/lib/esm/src/calldata/data/HttpCalldataDescriptorDataSource.test.js +2 -0
  265. package/lib/esm/src/calldata/data/HttpCalldataDescriptorDataSource.test.js.map +7 -0
  266. package/lib/esm/src/calldata/di/calldataModuleFactory.js +2 -0
  267. package/lib/esm/src/calldata/di/calldataModuleFactory.js.map +7 -0
  268. package/lib/esm/src/calldata/di/calldataTypes.js +2 -0
  269. package/lib/esm/src/calldata/di/calldataTypes.js.map +7 -0
  270. package/lib/esm/src/calldata/domain/CalldataContextLoader.js +2 -0
  271. package/lib/esm/src/calldata/domain/CalldataContextLoader.js.map +7 -0
  272. package/lib/esm/src/calldata/domain/CalldataContextLoader.test.js +2 -0
  273. package/lib/esm/src/calldata/domain/CalldataContextLoader.test.js.map +7 -0
  274. package/lib/esm/src/config/di/configTypes.js +1 -1
  275. package/lib/esm/src/config/di/configTypes.js.map +2 -2
  276. package/lib/esm/src/di.js +1 -1
  277. package/lib/esm/src/di.js.map +3 -3
  278. package/lib/esm/src/dynamic-network/domain/DynamicNetworkContextLoader.js +1 -1
  279. package/lib/esm/src/dynamic-network/domain/DynamicNetworkContextLoader.js.map +3 -3
  280. package/lib/esm/src/dynamic-network/domain/DynamicNetworkContextLoader.test.js +1 -1
  281. package/lib/esm/src/dynamic-network/domain/DynamicNetworkContextLoader.test.js.map +3 -3
  282. package/lib/esm/src/external-plugin/domain/ExternalPluginContextLoader.js +1 -1
  283. package/lib/esm/src/external-plugin/domain/ExternalPluginContextLoader.js.map +3 -3
  284. package/lib/esm/src/external-plugin/domain/ExternalPluginContextLoader.test.js +1 -1
  285. package/lib/esm/src/external-plugin/domain/ExternalPluginContextLoader.test.js.map +3 -3
  286. package/lib/esm/src/index.js +1 -1
  287. package/lib/esm/src/index.js.map +2 -2
  288. package/lib/esm/src/nft/di/nftModuleFactory.js +1 -1
  289. package/lib/esm/src/nft/di/nftModuleFactory.js.map +3 -3
  290. package/lib/esm/src/nft/di/nftTypes.js +1 -1
  291. package/lib/esm/src/nft/di/nftTypes.js.map +2 -2
  292. package/lib/esm/src/nft/domain/NftContextFieldLoader.js +2 -0
  293. package/lib/esm/src/nft/domain/NftContextFieldLoader.js.map +7 -0
  294. package/lib/esm/src/nft/domain/NftContextFieldLoader.test.js +2 -0
  295. package/lib/esm/src/nft/domain/NftContextFieldLoader.test.js.map +7 -0
  296. package/lib/esm/src/nft/domain/NftContextLoader.js +1 -1
  297. package/lib/esm/src/nft/domain/NftContextLoader.js.map +3 -3
  298. package/lib/esm/src/nft/domain/NftContextLoader.test.js +1 -1
  299. package/lib/esm/src/nft/domain/NftContextLoader.test.js.map +3 -3
  300. package/lib/esm/src/pki/model/KeyUsage.js +1 -1
  301. package/lib/esm/src/pki/model/KeyUsage.js.map +2 -2
  302. package/lib/esm/src/proxy/data/HttpProxyDataSource.js +2 -0
  303. package/lib/esm/src/proxy/data/HttpProxyDataSource.js.map +7 -0
  304. package/lib/esm/src/proxy/data/HttpProxyDataSource.test.js +2 -0
  305. package/lib/esm/src/proxy/data/HttpProxyDataSource.test.js.map +7 -0
  306. package/lib/esm/src/proxy/data/HttpSafeProxyDataSource.js +2 -0
  307. package/lib/esm/src/proxy/data/HttpSafeProxyDataSource.js.map +7 -0
  308. package/lib/esm/src/proxy/data/HttpSafeProxyDataSource.test.js +2 -0
  309. package/lib/esm/src/proxy/data/HttpSafeProxyDataSource.test.js.map +7 -0
  310. package/lib/esm/src/proxy/data/ProxyDataSource.js +1 -0
  311. package/lib/esm/src/proxy/data/dto/SafeProxyImplementationAddressDto.js +1 -0
  312. package/lib/esm/src/proxy/di/proxyModuleFactory.js +2 -0
  313. package/lib/esm/src/proxy/di/proxyModuleFactory.js.map +7 -0
  314. package/lib/esm/src/proxy/di/proxyModuleFactory.test.js +2 -0
  315. package/lib/esm/src/proxy/di/proxyModuleFactory.test.js.map +7 -0
  316. package/lib/esm/src/proxy/di/proxyTypes.js +2 -0
  317. package/lib/esm/src/proxy/di/proxyTypes.js.map +7 -0
  318. package/lib/esm/src/proxy/domain/ProxyContextFieldLoader.js +2 -0
  319. package/lib/esm/src/proxy/domain/ProxyContextFieldLoader.js.map +7 -0
  320. package/lib/esm/src/proxy/domain/ProxyContextFieldLoader.test.js +2 -0
  321. package/lib/esm/src/proxy/domain/ProxyContextFieldLoader.test.js.map +7 -0
  322. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.js +2 -0
  323. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.js.map +7 -0
  324. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.test.js +2 -0
  325. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.test.js.map +7 -0
  326. package/lib/esm/src/safe/data/SafeAccountDataSource.js +1 -0
  327. package/lib/esm/src/safe/data/dto/SafeAccountDto.js +1 -0
  328. package/lib/esm/src/safe/di/safeModuleFactory.js +2 -0
  329. package/lib/esm/src/safe/di/safeModuleFactory.js.map +7 -0
  330. package/lib/esm/src/safe/di/safeModuleFactory.test.js +2 -0
  331. package/lib/esm/src/safe/di/safeModuleFactory.test.js.map +7 -0
  332. package/lib/esm/src/safe/di/safeTypes.js +2 -0
  333. package/lib/esm/src/safe/di/safeTypes.js.map +7 -0
  334. package/lib/esm/src/safe/domain/SafeAddressLoader.js +2 -0
  335. package/lib/esm/src/safe/domain/SafeAddressLoader.js.map +7 -0
  336. package/lib/esm/src/safe/domain/SafeAddressLoader.test.js +2 -0
  337. package/lib/esm/src/safe/domain/SafeAddressLoader.test.js.map +7 -0
  338. package/lib/esm/src/shared/domain/ContextFieldLoader.js +1 -0
  339. package/lib/esm/src/shared/model/ClearSignContext.js +1 -1
  340. package/lib/esm/src/shared/model/ClearSignContext.js.map +3 -3
  341. package/lib/esm/src/shared/model/SolanaContextTypes.js +2 -0
  342. package/lib/esm/src/shared/model/SolanaContextTypes.js.map +7 -0
  343. package/lib/esm/src/shared/model/TypedDataClearSignContext.js +1 -1
  344. package/lib/esm/src/shared/model/TypedDataClearSignContext.js.map +3 -3
  345. package/lib/esm/src/shared/utils/KeyUsageMapper.js +1 -1
  346. package/lib/esm/src/shared/utils/KeyUsageMapper.js.map +2 -2
  347. package/lib/esm/src/shared/utils/KeyUsageMapper.test.js +1 -1
  348. package/lib/esm/src/shared/utils/KeyUsageMapper.test.js.map +2 -2
  349. package/lib/esm/src/shared/utils/NullLoggerPublisherService.js +2 -0
  350. package/lib/esm/src/shared/utils/NullLoggerPublisherService.js.map +7 -0
  351. package/lib/esm/src/shared/utils/NullLoggerPublisherService.test.js +2 -0
  352. package/lib/esm/src/shared/utils/NullLoggerPublisherService.test.js.map +7 -0
  353. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.js +1 -1
  354. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.js.map +3 -3
  355. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js +1 -1
  356. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js.map +2 -2
  357. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.js +1 -1
  358. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.js.map +3 -3
  359. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.test.js +1 -1
  360. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.test.js.map +3 -3
  361. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.js +2 -0
  362. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.js.map +7 -0
  363. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js +2 -0
  364. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js.map +7 -0
  365. package/lib/esm/src/solanaLifi/data/SolanaLifiDataSource.js +1 -0
  366. package/lib/esm/src/solanaLifi/di/lifiModuleFactory.js +2 -0
  367. package/lib/esm/src/solanaLifi/di/lifiModuleFactory.js.map +7 -0
  368. package/lib/esm/src/solanaLifi/di/solanaLifiTypes.js +2 -0
  369. package/lib/esm/src/solanaLifi/di/solanaLifiTypes.js.map +7 -0
  370. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.js +2 -0
  371. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.js.map +7 -0
  372. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.test.js +2 -0
  373. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.test.js.map +7 -0
  374. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.js +2 -0
  375. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.js.map +7 -0
  376. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.test.js +7 -0
  377. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.test.js.map +7 -0
  378. package/lib/esm/src/solanaToken/data/SolanaTokenDataSource.js +1 -0
  379. package/lib/esm/src/solanaToken/data/SolanaTokenDataSource.js.map +7 -0
  380. package/lib/esm/src/solanaToken/di/solanaTokenTypes.js +2 -0
  381. package/lib/esm/src/solanaToken/di/solanaTokenTypes.js.map +7 -0
  382. package/lib/esm/src/solanaToken/di/tokenModuleFactory.js +2 -0
  383. package/lib/esm/src/solanaToken/di/tokenModuleFactory.js.map +7 -0
  384. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.js +2 -0
  385. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.js.map +7 -0
  386. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.test.js +2 -0
  387. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.test.js.map +7 -0
  388. package/lib/esm/src/token/data/HttpTokenDataSource.js +1 -1
  389. package/lib/esm/src/token/data/HttpTokenDataSource.js.map +2 -2
  390. package/lib/esm/src/token/data/HttpTokenDataSource.test.js +1 -1
  391. package/lib/esm/src/token/data/HttpTokenDataSource.test.js.map +2 -2
  392. package/lib/esm/src/token/di/tokenModuleFactory.js +1 -1
  393. package/lib/esm/src/token/di/tokenModuleFactory.js.map +3 -3
  394. package/lib/esm/src/token/di/tokenTypes.js +1 -1
  395. package/lib/esm/src/token/di/tokenTypes.js.map +2 -2
  396. package/lib/esm/src/token/domain/TokenContextFieldLoader.js +2 -0
  397. package/lib/esm/src/token/domain/TokenContextFieldLoader.js.map +7 -0
  398. package/lib/esm/src/token/domain/TokenContextFieldLoader.test.js +2 -0
  399. package/lib/esm/src/token/domain/TokenContextFieldLoader.test.js.map +7 -0
  400. package/lib/esm/src/token/domain/TokenContextLoader.js +1 -1
  401. package/lib/esm/src/token/domain/TokenContextLoader.js.map +3 -3
  402. package/lib/esm/src/token/domain/TokenContextLoader.test.js +1 -1
  403. package/lib/esm/src/token/domain/TokenContextLoader.test.js.map +3 -3
  404. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.js +2 -0
  405. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.js.map +7 -0
  406. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.test.js +2 -0
  407. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.test.js.map +7 -0
  408. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.js +2 -0
  409. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.js.map +7 -0
  410. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js +2 -0
  411. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js.map +7 -0
  412. package/lib/esm/src/transaction-check/data/TransactionCheckDataSource.js +1 -0
  413. package/lib/esm/src/transaction-check/data/TransactionCheckDataSource.js.map +7 -0
  414. package/lib/esm/src/transaction-check/data/TypedDataCheckDataSource.js +1 -0
  415. package/lib/esm/src/transaction-check/data/TypedDataCheckDataSource.js.map +7 -0
  416. package/lib/esm/src/transaction-check/data/dto/TransactionCheckDto.js +1 -0
  417. package/lib/esm/src/transaction-check/data/dto/TransactionCheckDto.js.map +7 -0
  418. package/lib/esm/src/transaction-check/data/dto/TypedDataCheckDto.js +1 -0
  419. package/lib/esm/src/transaction-check/data/dto/TypedDataCheckDto.js.map +7 -0
  420. package/lib/esm/src/transaction-check/di/transactionCheckModuleFactory.js +2 -0
  421. package/lib/esm/src/transaction-check/di/transactionCheckModuleFactory.js.map +7 -0
  422. package/lib/esm/src/transaction-check/di/transactionCheckTypes.js +2 -0
  423. package/lib/esm/src/transaction-check/di/transactionCheckTypes.js.map +7 -0
  424. package/lib/esm/src/transaction-check/domain/TransactionCheckContextLoader.js +2 -0
  425. package/lib/esm/src/transaction-check/domain/TransactionCheckContextLoader.js.map +7 -0
  426. package/lib/esm/src/transaction-check/domain/TransactionCheckContextLoader.test.js +2 -0
  427. package/lib/esm/src/transaction-check/domain/TransactionCheckContextLoader.test.js.map +7 -0
  428. package/lib/esm/src/transaction-check/domain/TypedDataCheckContextLoader.js +2 -0
  429. package/lib/esm/src/transaction-check/domain/TypedDataCheckContextLoader.js.map +7 -0
  430. package/lib/esm/src/transaction-check/domain/TypedDataCheckContextLoader.test.js +2 -0
  431. package/lib/esm/src/transaction-check/domain/TypedDataCheckContextLoader.test.js.map +7 -0
  432. package/lib/esm/src/trusted-name/data/HttpTrustedNameDataSource.js +1 -1
  433. package/lib/esm/src/trusted-name/data/HttpTrustedNameDataSource.js.map +3 -3
  434. package/lib/esm/src/trusted-name/data/HttpTrustedNameDataSource.test.js +1 -1
  435. package/lib/esm/src/trusted-name/data/HttpTrustedNameDataSource.test.js.map +2 -2
  436. package/lib/esm/src/trusted-name/di/trustedNameModuleFactory.js +1 -1
  437. package/lib/esm/src/trusted-name/di/trustedNameModuleFactory.js.map +3 -3
  438. package/lib/esm/src/trusted-name/di/trustedNameTypes.js +1 -1
  439. package/lib/esm/src/trusted-name/di/trustedNameTypes.js.map +2 -2
  440. package/lib/esm/src/trusted-name/domain/TrustedNameContextFieldLoader.js +2 -0
  441. package/lib/esm/src/trusted-name/domain/TrustedNameContextFieldLoader.js.map +7 -0
  442. package/lib/esm/src/trusted-name/domain/TrustedNameContextFieldLoader.test.js +2 -0
  443. package/lib/esm/src/trusted-name/domain/TrustedNameContextFieldLoader.test.js.map +7 -0
  444. package/lib/esm/src/trusted-name/domain/TrustedNameContextLoader.js +1 -1
  445. package/lib/esm/src/trusted-name/domain/TrustedNameContextLoader.js.map +3 -3
  446. package/lib/esm/src/trusted-name/domain/TrustedNameContextLoader.test.js +1 -1
  447. package/lib/esm/src/trusted-name/domain/TrustedNameContextLoader.test.js.map +3 -3
  448. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.js +1 -1
  449. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.js.map +3 -3
  450. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.test.js +1 -1
  451. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.test.js.map +3 -3
  452. package/lib/esm/src/typed-data/domain/DefaultTypedDataContextLoader.js +1 -1
  453. package/lib/esm/src/typed-data/domain/DefaultTypedDataContextLoader.js.map +3 -3
  454. package/lib/esm/src/typed-data/domain/DefaultTypedDataContextLoader.test.js +1 -1
  455. package/lib/esm/src/typed-data/domain/DefaultTypedDataContextLoader.test.js.map +3 -3
  456. package/lib/esm/src/uniswap/constants/uniswap.js +1 -1
  457. package/lib/esm/src/uniswap/constants/uniswap.js.map +3 -3
  458. package/lib/esm/src/uniswap/domain/UniswapContextLoader.js +1 -1
  459. package/lib/esm/src/uniswap/domain/UniswapContextLoader.js.map +3 -3
  460. package/lib/esm/src/uniswap/domain/UniswapContextLoader.test.js +1 -1
  461. package/lib/esm/src/uniswap/domain/UniswapContextLoader.test.js.map +3 -3
  462. package/lib/types/src/ContextModule.d.ts +3 -6
  463. package/lib/types/src/ContextModule.d.ts.map +1 -1
  464. package/lib/types/src/ContextModuleBuilder.d.ts +25 -11
  465. package/lib/types/src/ContextModuleBuilder.d.ts.map +1 -1
  466. package/lib/types/src/DefaultContextModule.d.ts +5 -8
  467. package/lib/types/src/DefaultContextModule.d.ts.map +1 -1
  468. package/lib/types/src/{transaction/data/TransactionDataSource.d.ts → calldata/data/CalldataDescriptorDataSource.d.ts} +4 -4
  469. package/lib/types/src/calldata/data/CalldataDescriptorDataSource.d.ts.map +1 -0
  470. package/lib/types/src/{transaction/data/HttpTransactionDataSource.d.ts → calldata/data/HttpCalldataDescriptorDataSource.d.ts} +6 -5
  471. package/lib/types/src/calldata/data/HttpCalldataDescriptorDataSource.d.ts.map +1 -0
  472. package/lib/types/src/calldata/data/HttpCalldataDescriptorDataSource.test.d.ts +2 -0
  473. package/lib/types/src/calldata/data/HttpCalldataDescriptorDataSource.test.d.ts.map +1 -0
  474. package/lib/types/src/{transaction → calldata}/data/dto/CalldataDto.d.ts +10 -1
  475. package/lib/types/src/calldata/data/dto/CalldataDto.d.ts.map +1 -0
  476. package/lib/types/src/calldata/di/calldataModuleFactory.d.ts +3 -0
  477. package/lib/types/src/calldata/di/calldataModuleFactory.d.ts.map +1 -0
  478. package/lib/types/src/calldata/di/calldataTypes.d.ts +6 -0
  479. package/lib/types/src/calldata/di/calldataTypes.d.ts.map +1 -0
  480. package/lib/types/src/calldata/domain/CalldataContextLoader.d.ts +24 -0
  481. package/lib/types/src/calldata/domain/CalldataContextLoader.d.ts.map +1 -0
  482. package/lib/types/src/calldata/domain/CalldataContextLoader.test.d.ts +2 -0
  483. package/lib/types/src/calldata/domain/CalldataContextLoader.test.d.ts.map +1 -0
  484. package/lib/types/src/config/di/configTypes.d.ts +1 -0
  485. package/lib/types/src/config/di/configTypes.d.ts.map +1 -1
  486. package/lib/types/src/config/model/ContextModuleBuildArgs.d.ts +2 -0
  487. package/lib/types/src/config/model/ContextModuleBuildArgs.d.ts.map +1 -1
  488. package/lib/types/src/config/model/ContextModuleConfig.d.ts +11 -2
  489. package/lib/types/src/config/model/ContextModuleConfig.d.ts.map +1 -1
  490. package/lib/types/src/di.d.ts.map +1 -1
  491. package/lib/types/src/dynamic-network/domain/DynamicNetworkContextLoader.d.ts +11 -6
  492. package/lib/types/src/dynamic-network/domain/DynamicNetworkContextLoader.d.ts.map +1 -1
  493. package/lib/types/src/external-plugin/domain/ExternalPluginContextLoader.d.ts +21 -5
  494. package/lib/types/src/external-plugin/domain/ExternalPluginContextLoader.d.ts.map +1 -1
  495. package/lib/types/src/index.d.ts +39 -3
  496. package/lib/types/src/index.d.ts.map +1 -1
  497. package/lib/types/src/nft/di/nftModuleFactory.d.ts.map +1 -1
  498. package/lib/types/src/nft/di/nftTypes.d.ts +1 -0
  499. package/lib/types/src/nft/di/nftTypes.d.ts.map +1 -1
  500. package/lib/types/src/nft/domain/NftContextFieldLoader.d.ts +15 -0
  501. package/lib/types/src/nft/domain/NftContextFieldLoader.d.ts.map +1 -0
  502. package/lib/types/src/nft/domain/NftContextFieldLoader.test.d.ts +2 -0
  503. package/lib/types/src/nft/domain/NftContextFieldLoader.test.d.ts.map +1 -0
  504. package/lib/types/src/nft/domain/NftContextLoader.d.ts +12 -6
  505. package/lib/types/src/nft/domain/NftContextLoader.d.ts.map +1 -1
  506. package/lib/types/src/pki/model/KeyUsage.d.ts +2 -1
  507. package/lib/types/src/pki/model/KeyUsage.d.ts.map +1 -1
  508. package/lib/types/src/pki/model/PkiCertificateInfo.d.ts +1 -2
  509. package/lib/types/src/pki/model/PkiCertificateInfo.d.ts.map +1 -1
  510. package/lib/types/src/proxy/data/HttpProxyDataSource.d.ts +13 -0
  511. package/lib/types/src/proxy/data/HttpProxyDataSource.d.ts.map +1 -0
  512. package/lib/types/src/proxy/data/HttpProxyDataSource.test.d.ts.map +1 -0
  513. package/lib/types/src/proxy/data/HttpSafeProxyDataSource.d.ts +13 -0
  514. package/lib/types/src/proxy/data/HttpSafeProxyDataSource.d.ts.map +1 -0
  515. package/lib/types/src/proxy/data/HttpSafeProxyDataSource.test.d.ts +2 -0
  516. package/lib/types/src/proxy/data/HttpSafeProxyDataSource.test.d.ts.map +1 -0
  517. package/lib/types/src/proxy/data/ProxyDataSource.d.ts +17 -0
  518. package/lib/types/src/proxy/data/ProxyDataSource.d.ts.map +1 -0
  519. package/lib/types/src/proxy/data/dto/ProxyDelegateCallDto.d.ts.map +1 -0
  520. package/lib/types/src/proxy/data/dto/ProxyImplementationAddressDto.d.ts.map +1 -0
  521. package/lib/types/src/proxy/data/dto/SafeProxyImplementationAddressDto.d.ts +10 -0
  522. package/lib/types/src/proxy/data/dto/SafeProxyImplementationAddressDto.d.ts.map +1 -0
  523. package/lib/types/src/proxy/di/proxyModuleFactory.d.ts +4 -0
  524. package/lib/types/src/proxy/di/proxyModuleFactory.d.ts.map +1 -0
  525. package/lib/types/src/proxy/di/proxyModuleFactory.test.d.ts +2 -0
  526. package/lib/types/src/proxy/di/proxyModuleFactory.test.d.ts.map +1 -0
  527. package/lib/types/src/proxy/di/proxyTypes.d.ts +5 -0
  528. package/lib/types/src/proxy/di/proxyTypes.d.ts.map +1 -0
  529. package/lib/types/src/proxy/domain/ProxyContextFieldLoader.d.ts +21 -0
  530. package/lib/types/src/proxy/domain/ProxyContextFieldLoader.d.ts.map +1 -0
  531. package/lib/types/src/proxy/domain/ProxyContextFieldLoader.test.d.ts +2 -0
  532. package/lib/types/src/proxy/domain/ProxyContextFieldLoader.test.d.ts.map +1 -0
  533. package/lib/types/src/proxy/model/ProxyDelegateCall.d.ts +7 -0
  534. package/lib/types/src/proxy/model/ProxyDelegateCall.d.ts.map +1 -0
  535. package/lib/types/src/safe/data/HttpSafeAccountDataSource.d.ts +11 -0
  536. package/lib/types/src/safe/data/HttpSafeAccountDataSource.d.ts.map +1 -0
  537. package/lib/types/src/safe/data/HttpSafeAccountDataSource.test.d.ts +2 -0
  538. package/lib/types/src/safe/data/HttpSafeAccountDataSource.test.d.ts.map +1 -0
  539. package/lib/types/src/safe/data/SafeAccountDataSource.d.ts +20 -0
  540. package/lib/types/src/safe/data/SafeAccountDataSource.d.ts.map +1 -0
  541. package/lib/types/src/safe/data/dto/SafeAccountDto.d.ts +10 -0
  542. package/lib/types/src/safe/data/dto/SafeAccountDto.d.ts.map +1 -0
  543. package/lib/types/src/safe/di/safeModuleFactory.d.ts +3 -0
  544. package/lib/types/src/safe/di/safeModuleFactory.d.ts.map +1 -0
  545. package/lib/types/src/safe/di/safeModuleFactory.test.d.ts +2 -0
  546. package/lib/types/src/safe/di/safeModuleFactory.test.d.ts.map +1 -0
  547. package/lib/types/src/safe/di/safeTypes.d.ts +5 -0
  548. package/lib/types/src/safe/di/safeTypes.d.ts.map +1 -0
  549. package/lib/types/src/safe/domain/SafeAddressLoader.d.ts +19 -0
  550. package/lib/types/src/safe/domain/SafeAddressLoader.d.ts.map +1 -0
  551. package/lib/types/src/safe/domain/SafeAddressLoader.test.d.ts +2 -0
  552. package/lib/types/src/safe/domain/SafeAddressLoader.test.d.ts.map +1 -0
  553. package/lib/types/src/shared/domain/ContextFieldLoader.d.ts +25 -0
  554. package/lib/types/src/shared/domain/ContextFieldLoader.d.ts.map +1 -0
  555. package/lib/types/src/shared/domain/ContextLoader.d.ts +13 -5
  556. package/lib/types/src/shared/domain/ContextLoader.d.ts.map +1 -1
  557. package/lib/types/src/shared/model/ClearSignContext.d.ts +74 -27
  558. package/lib/types/src/shared/model/ClearSignContext.d.ts.map +1 -1
  559. package/lib/types/src/shared/model/SolanaContextTypes.d.ts +47 -0
  560. package/lib/types/src/shared/model/SolanaContextTypes.d.ts.map +1 -0
  561. package/lib/types/src/shared/model/SolanaTransactionContext.d.ts +2 -0
  562. package/lib/types/src/shared/model/SolanaTransactionContext.d.ts.map +1 -1
  563. package/lib/types/src/shared/model/TransactionSubset.d.ts +1 -0
  564. package/lib/types/src/shared/model/TransactionSubset.d.ts.map +1 -1
  565. package/lib/types/src/shared/model/TypedDataClearSignContext.d.ts +35 -1
  566. package/lib/types/src/shared/model/TypedDataClearSignContext.d.ts.map +1 -1
  567. package/lib/types/src/shared/model/TypedDataContext.d.ts +3 -0
  568. package/lib/types/src/shared/model/TypedDataContext.d.ts.map +1 -1
  569. package/lib/types/src/shared/utils/KeyUsageMapper.d.ts +1 -2
  570. package/lib/types/src/shared/utils/KeyUsageMapper.d.ts.map +1 -1
  571. package/lib/types/src/shared/utils/NullLoggerPublisherService.d.ts +3 -0
  572. package/lib/types/src/shared/utils/NullLoggerPublisherService.d.ts.map +1 -0
  573. package/lib/types/src/shared/utils/NullLoggerPublisherService.test.d.ts +2 -0
  574. package/lib/types/src/shared/utils/NullLoggerPublisherService.test.d.ts.map +1 -0
  575. package/lib/types/src/solana/data/HttpSolanaOwnerInfoDataSource.d.ts.map +1 -1
  576. package/lib/types/src/solana/data/SolanaDataSource.d.ts +1 -4
  577. package/lib/types/src/solana/data/SolanaDataSource.d.ts.map +1 -1
  578. package/lib/types/src/solana/domain/DefaultSolanaContextLoader.d.ts +7 -3
  579. package/lib/types/src/solana/domain/DefaultSolanaContextLoader.d.ts.map +1 -1
  580. package/lib/types/src/solana/domain/solanaContextTypes.d.ts +7 -5
  581. package/lib/types/src/solana/domain/solanaContextTypes.d.ts.map +1 -1
  582. package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.d.ts +9 -0
  583. package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.d.ts.map +1 -0
  584. package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.test.d.ts +2 -0
  585. package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.test.d.ts.map +1 -0
  586. package/lib/types/src/solanaLifi/data/SolanaLifiDataSource.d.ts +13 -0
  587. package/lib/types/src/solanaLifi/data/SolanaLifiDataSource.d.ts.map +1 -0
  588. package/lib/types/src/solanaLifi/di/lifiModuleFactory.d.ts +3 -0
  589. package/lib/types/src/solanaLifi/di/lifiModuleFactory.d.ts.map +1 -0
  590. package/lib/types/src/solanaLifi/di/solanaLifiTypes.d.ts +5 -0
  591. package/lib/types/src/solanaLifi/di/solanaLifiTypes.d.ts.map +1 -0
  592. package/lib/types/src/solanaLifi/domain/SolanaLifiContextLoader.d.ts +18 -0
  593. package/lib/types/src/solanaLifi/domain/SolanaLifiContextLoader.d.ts.map +1 -0
  594. package/lib/types/src/solanaLifi/domain/SolanaLifiContextLoader.test.d.ts +2 -0
  595. package/lib/types/src/solanaLifi/domain/SolanaLifiContextLoader.test.d.ts.map +1 -0
  596. package/lib/types/src/solanaToken/data/HttpSolanaTokenDataSource.d.ts +9 -0
  597. package/lib/types/src/solanaToken/data/HttpSolanaTokenDataSource.d.ts.map +1 -0
  598. package/lib/types/src/solanaToken/data/HttpSolanaTokenDataSource.test.d.ts +2 -0
  599. package/lib/types/src/solanaToken/data/HttpSolanaTokenDataSource.test.d.ts.map +1 -0
  600. package/lib/types/src/solanaToken/data/SolanaTokenDataSource.d.ts +44 -0
  601. package/lib/types/src/solanaToken/data/SolanaTokenDataSource.d.ts.map +1 -0
  602. package/lib/types/src/solanaToken/di/solanaTokenTypes.d.ts +5 -0
  603. package/lib/types/src/solanaToken/di/solanaTokenTypes.d.ts.map +1 -0
  604. package/lib/types/src/solanaToken/di/tokenModuleFactory.d.ts +3 -0
  605. package/lib/types/src/solanaToken/di/tokenModuleFactory.d.ts.map +1 -0
  606. package/lib/types/src/solanaToken/domain/SolanaTokenContextLoader.d.ts +23 -0
  607. package/lib/types/src/solanaToken/domain/SolanaTokenContextLoader.d.ts.map +1 -0
  608. package/lib/types/src/solanaToken/domain/SolanaTokenContextLoader.test.d.ts +2 -0
  609. package/lib/types/src/solanaToken/domain/SolanaTokenContextLoader.test.d.ts.map +1 -0
  610. package/lib/types/src/token/data/HttpTokenDataSource.d.ts.map +1 -1
  611. package/lib/types/src/token/di/tokenModuleFactory.d.ts.map +1 -1
  612. package/lib/types/src/token/di/tokenTypes.d.ts +1 -0
  613. package/lib/types/src/token/di/tokenTypes.d.ts.map +1 -1
  614. package/lib/types/src/token/domain/TokenContextFieldLoader.d.ts +18 -0
  615. package/lib/types/src/token/domain/TokenContextFieldLoader.d.ts.map +1 -0
  616. package/lib/types/src/token/domain/TokenContextFieldLoader.test.d.ts +2 -0
  617. package/lib/types/src/token/domain/TokenContextFieldLoader.test.d.ts.map +1 -0
  618. package/lib/types/src/token/domain/TokenContextLoader.d.ts +12 -6
  619. package/lib/types/src/token/domain/TokenContextLoader.d.ts.map +1 -1
  620. package/lib/types/src/transaction-check/data/HttpTransactionCheckDataSource.d.ts +10 -0
  621. package/lib/types/src/transaction-check/data/HttpTransactionCheckDataSource.d.ts.map +1 -0
  622. package/lib/types/src/transaction-check/data/HttpTransactionCheckDataSource.test.d.ts +2 -0
  623. package/lib/types/src/transaction-check/data/HttpTransactionCheckDataSource.test.d.ts.map +1 -0
  624. package/lib/types/src/transaction-check/data/HttpTypedDataCheckDataSource.d.ts +10 -0
  625. package/lib/types/src/transaction-check/data/HttpTypedDataCheckDataSource.d.ts.map +1 -0
  626. package/lib/types/src/transaction-check/data/HttpTypedDataCheckDataSource.test.d.ts +2 -0
  627. package/lib/types/src/transaction-check/data/HttpTypedDataCheckDataSource.test.d.ts.map +1 -0
  628. package/lib/types/src/transaction-check/data/TransactionCheckDataSource.d.ts +14 -0
  629. package/lib/types/src/transaction-check/data/TransactionCheckDataSource.d.ts.map +1 -0
  630. package/lib/types/src/transaction-check/data/TypedDataCheckDataSource.d.ts +28 -0
  631. package/lib/types/src/transaction-check/data/TypedDataCheckDataSource.d.ts.map +1 -0
  632. package/lib/types/src/transaction-check/data/dto/TransactionCheckDto.d.ts +5 -0
  633. package/lib/types/src/transaction-check/data/dto/TransactionCheckDto.d.ts.map +1 -0
  634. package/lib/types/src/transaction-check/data/dto/TypedDataCheckDto.d.ts +5 -0
  635. package/lib/types/src/transaction-check/data/dto/TypedDataCheckDto.d.ts.map +1 -0
  636. package/lib/types/src/transaction-check/di/transactionCheckModuleFactory.d.ts +3 -0
  637. package/lib/types/src/transaction-check/di/transactionCheckModuleFactory.d.ts.map +1 -0
  638. package/lib/types/src/transaction-check/di/transactionCheckTypes.d.ts +7 -0
  639. package/lib/types/src/transaction-check/di/transactionCheckTypes.d.ts.map +1 -0
  640. package/lib/types/src/transaction-check/domain/TransactionCheckContextLoader.d.ts +20 -0
  641. package/lib/types/src/transaction-check/domain/TransactionCheckContextLoader.d.ts.map +1 -0
  642. package/lib/types/src/transaction-check/domain/TransactionCheckContextLoader.test.d.ts +2 -0
  643. package/lib/types/src/transaction-check/domain/TransactionCheckContextLoader.test.d.ts.map +1 -0
  644. package/lib/types/src/transaction-check/domain/TypedDataCheckContextLoader.d.ts +19 -0
  645. package/lib/types/src/transaction-check/domain/TypedDataCheckContextLoader.d.ts.map +1 -0
  646. package/lib/types/src/transaction-check/domain/TypedDataCheckContextLoader.test.d.ts +2 -0
  647. package/lib/types/src/transaction-check/domain/TypedDataCheckContextLoader.test.d.ts.map +1 -0
  648. package/lib/types/src/trusted-name/data/HttpTrustedNameDataSource.d.ts +7 -3
  649. package/lib/types/src/trusted-name/data/HttpTrustedNameDataSource.d.ts.map +1 -1
  650. package/lib/types/src/trusted-name/data/TrustedNameDataSource.d.ts +7 -2
  651. package/lib/types/src/trusted-name/data/TrustedNameDataSource.d.ts.map +1 -1
  652. package/lib/types/src/trusted-name/data/TrustedNameDto.d.ts +4 -5
  653. package/lib/types/src/trusted-name/data/TrustedNameDto.d.ts.map +1 -1
  654. package/lib/types/src/trusted-name/di/trustedNameModuleFactory.d.ts +2 -1
  655. package/lib/types/src/trusted-name/di/trustedNameModuleFactory.d.ts.map +1 -1
  656. package/lib/types/src/trusted-name/di/trustedNameTypes.d.ts +1 -0
  657. package/lib/types/src/trusted-name/di/trustedNameTypes.d.ts.map +1 -1
  658. package/lib/types/src/trusted-name/domain/TrustedNameContextFieldLoader.d.ts +22 -0
  659. package/lib/types/src/trusted-name/domain/TrustedNameContextFieldLoader.d.ts.map +1 -0
  660. package/lib/types/src/trusted-name/domain/TrustedNameContextFieldLoader.test.d.ts +2 -0
  661. package/lib/types/src/trusted-name/domain/TrustedNameContextFieldLoader.test.d.ts.map +1 -0
  662. package/lib/types/src/trusted-name/domain/TrustedNameContextLoader.d.ts +17 -7
  663. package/lib/types/src/trusted-name/domain/TrustedNameContextLoader.d.ts.map +1 -1
  664. package/lib/types/src/typed-data/data/FiltersDto.d.ts +32 -6
  665. package/lib/types/src/typed-data/data/FiltersDto.d.ts.map +1 -1
  666. package/lib/types/src/typed-data/data/HttpTypedDataDataSource.d.ts +3 -0
  667. package/lib/types/src/typed-data/data/HttpTypedDataDataSource.d.ts.map +1 -1
  668. package/lib/types/src/typed-data/data/HttpTypedDataDataSource.test.d.ts +1 -0
  669. package/lib/types/src/typed-data/data/HttpTypedDataDataSource.test.d.ts.map +1 -1
  670. package/lib/types/src/typed-data/data/TypedDataDataSource.d.ts +2 -1
  671. package/lib/types/src/typed-data/data/TypedDataDataSource.d.ts.map +1 -1
  672. package/lib/types/src/typed-data/domain/DefaultTypedDataContextLoader.d.ts +14 -1
  673. package/lib/types/src/typed-data/domain/DefaultTypedDataContextLoader.d.ts.map +1 -1
  674. package/lib/types/src/uniswap/constants/uniswap.d.ts +0 -1
  675. package/lib/types/src/uniswap/constants/uniswap.d.ts.map +1 -1
  676. package/lib/types/src/uniswap/domain/UniswapContextLoader.d.ts +12 -12
  677. package/lib/types/src/uniswap/domain/UniswapContextLoader.d.ts.map +1 -1
  678. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  679. package/package.json +36 -32
  680. package/lib/cjs/src/shared/model/TransactionContext.js +0 -2
  681. package/lib/cjs/src/shared/model/TransactionContext.js.map +0 -7
  682. package/lib/cjs/src/transaction/data/HttpProxyDataSource.js +0 -2
  683. package/lib/cjs/src/transaction/data/HttpProxyDataSource.js.map +0 -7
  684. package/lib/cjs/src/transaction/data/HttpProxyDataSource.test.js +0 -2
  685. package/lib/cjs/src/transaction/data/HttpProxyDataSource.test.js.map +0 -7
  686. package/lib/cjs/src/transaction/data/HttpTransactionDataSource.js +0 -2
  687. package/lib/cjs/src/transaction/data/HttpTransactionDataSource.js.map +0 -7
  688. package/lib/cjs/src/transaction/data/HttpTransactionDataSource.test.js +0 -2
  689. package/lib/cjs/src/transaction/data/HttpTransactionDataSource.test.js.map +0 -7
  690. package/lib/cjs/src/transaction/data/TransactionDataSource.js +0 -2
  691. package/lib/cjs/src/transaction/data/TransactionDataSource.js.map +0 -7
  692. package/lib/cjs/src/transaction/data/dto/CalldataDto.js +0 -2
  693. package/lib/cjs/src/transaction/data/dto/CalldataDto.js.map +0 -7
  694. package/lib/cjs/src/transaction/di/transactionModuleFactory.js +0 -2
  695. package/lib/cjs/src/transaction/di/transactionModuleFactory.js.map +0 -7
  696. package/lib/cjs/src/transaction/di/transactionTypes.js +0 -2
  697. package/lib/cjs/src/transaction/di/transactionTypes.js.map +0 -7
  698. package/lib/cjs/src/transaction/domain/TransactionContextLoader.js +0 -2
  699. package/lib/cjs/src/transaction/domain/TransactionContextLoader.js.map +0 -7
  700. package/lib/cjs/src/transaction/domain/TransactionContextLoader.test.js +0 -2
  701. package/lib/cjs/src/transaction/domain/TransactionContextLoader.test.js.map +0 -7
  702. package/lib/cjs/src/transaction/model/ProxyDelegateCall.js +0 -2
  703. package/lib/cjs/src/transaction/model/ProxyDelegateCall.js.map +0 -7
  704. package/lib/cjs/src/transaction/model/ProxyImplementationAddress.js +0 -2
  705. package/lib/cjs/src/transaction/model/ProxyImplementationAddress.js.map +0 -7
  706. package/lib/cjs/src/uniswap/constants/plugin.js +0 -2
  707. package/lib/cjs/src/uniswap/constants/plugin.js.map +0 -7
  708. package/lib/cjs/src/web3-check/data/HttpWeb3CheckDataSource.js +0 -2
  709. package/lib/cjs/src/web3-check/data/HttpWeb3CheckDataSource.js.map +0 -7
  710. package/lib/cjs/src/web3-check/data/HttpWeb3CheckDataSource.test.js +0 -2
  711. package/lib/cjs/src/web3-check/data/HttpWeb3CheckDataSource.test.js.map +0 -7
  712. package/lib/cjs/src/web3-check/data/Web3CheckDataSource.js +0 -2
  713. package/lib/cjs/src/web3-check/data/Web3CheckDataSource.js.map +0 -7
  714. package/lib/cjs/src/web3-check/data/Web3CheckDto.js +0 -2
  715. package/lib/cjs/src/web3-check/data/Web3CheckDto.js.map +0 -7
  716. package/lib/cjs/src/web3-check/di/web3CheckModuleFactory.js +0 -2
  717. package/lib/cjs/src/web3-check/di/web3CheckModuleFactory.js.map +0 -7
  718. package/lib/cjs/src/web3-check/di/web3CheckTypes.js +0 -2
  719. package/lib/cjs/src/web3-check/di/web3CheckTypes.js.map +0 -7
  720. package/lib/cjs/src/web3-check/domain/DefaultWeb3CheckLoader.js +0 -2
  721. package/lib/cjs/src/web3-check/domain/DefaultWeb3CheckLoader.js.map +0 -7
  722. package/lib/cjs/src/web3-check/domain/DefaultWeb3CheckLoader.test.js +0 -2
  723. package/lib/cjs/src/web3-check/domain/DefaultWeb3CheckLoader.test.js.map +0 -7
  724. package/lib/cjs/src/web3-check/domain/Web3CheckContextLoader.js +0 -2
  725. package/lib/cjs/src/web3-check/domain/Web3CheckContextLoader.js.map +0 -7
  726. package/lib/cjs/src/web3-check/domain/web3CheckTypes.js +0 -2
  727. package/lib/cjs/src/web3-check/domain/web3CheckTypes.js.map +0 -7
  728. package/lib/esm/src/shared/model/TransactionContext.js +0 -1
  729. package/lib/esm/src/transaction/data/HttpProxyDataSource.js +0 -2
  730. package/lib/esm/src/transaction/data/HttpProxyDataSource.js.map +0 -7
  731. package/lib/esm/src/transaction/data/HttpProxyDataSource.test.js +0 -2
  732. package/lib/esm/src/transaction/data/HttpProxyDataSource.test.js.map +0 -7
  733. package/lib/esm/src/transaction/data/HttpTransactionDataSource.js +0 -2
  734. package/lib/esm/src/transaction/data/HttpTransactionDataSource.js.map +0 -7
  735. package/lib/esm/src/transaction/data/HttpTransactionDataSource.test.js +0 -2
  736. package/lib/esm/src/transaction/data/HttpTransactionDataSource.test.js.map +0 -7
  737. package/lib/esm/src/transaction/data/TransactionDataSource.js +0 -1
  738. package/lib/esm/src/transaction/di/transactionModuleFactory.js +0 -2
  739. package/lib/esm/src/transaction/di/transactionModuleFactory.js.map +0 -7
  740. package/lib/esm/src/transaction/di/transactionTypes.js +0 -2
  741. package/lib/esm/src/transaction/di/transactionTypes.js.map +0 -7
  742. package/lib/esm/src/transaction/domain/TransactionContextLoader.js +0 -2
  743. package/lib/esm/src/transaction/domain/TransactionContextLoader.js.map +0 -7
  744. package/lib/esm/src/transaction/domain/TransactionContextLoader.test.js +0 -2
  745. package/lib/esm/src/transaction/domain/TransactionContextLoader.test.js.map +0 -7
  746. package/lib/esm/src/transaction/model/ProxyImplementationAddress.js +0 -1
  747. package/lib/esm/src/uniswap/constants/plugin.js +0 -2
  748. package/lib/esm/src/uniswap/constants/plugin.js.map +0 -7
  749. package/lib/esm/src/web3-check/data/HttpWeb3CheckDataSource.js +0 -2
  750. package/lib/esm/src/web3-check/data/HttpWeb3CheckDataSource.js.map +0 -7
  751. package/lib/esm/src/web3-check/data/HttpWeb3CheckDataSource.test.js +0 -2
  752. package/lib/esm/src/web3-check/data/HttpWeb3CheckDataSource.test.js.map +0 -7
  753. package/lib/esm/src/web3-check/data/Web3CheckDataSource.js +0 -1
  754. package/lib/esm/src/web3-check/data/Web3CheckDto.js +0 -1
  755. package/lib/esm/src/web3-check/di/web3CheckModuleFactory.js +0 -2
  756. package/lib/esm/src/web3-check/di/web3CheckModuleFactory.js.map +0 -7
  757. package/lib/esm/src/web3-check/di/web3CheckTypes.js +0 -2
  758. package/lib/esm/src/web3-check/di/web3CheckTypes.js.map +0 -7
  759. package/lib/esm/src/web3-check/domain/DefaultWeb3CheckLoader.js +0 -2
  760. package/lib/esm/src/web3-check/domain/DefaultWeb3CheckLoader.js.map +0 -7
  761. package/lib/esm/src/web3-check/domain/DefaultWeb3CheckLoader.test.js +0 -2
  762. package/lib/esm/src/web3-check/domain/DefaultWeb3CheckLoader.test.js.map +0 -7
  763. package/lib/esm/src/web3-check/domain/Web3CheckContextLoader.js +0 -1
  764. package/lib/esm/src/web3-check/domain/web3CheckTypes.js +0 -1
  765. package/lib/types/src/shared/model/TransactionContext.d.ts +0 -21
  766. package/lib/types/src/shared/model/TransactionContext.d.ts.map +0 -1
  767. package/lib/types/src/transaction/data/HttpProxyDataSource.d.ts +0 -33
  768. package/lib/types/src/transaction/data/HttpProxyDataSource.d.ts.map +0 -1
  769. package/lib/types/src/transaction/data/HttpProxyDataSource.test.d.ts.map +0 -1
  770. package/lib/types/src/transaction/data/HttpTransactionDataSource.d.ts.map +0 -1
  771. package/lib/types/src/transaction/data/HttpTransactionDataSource.test.d.ts +0 -2
  772. package/lib/types/src/transaction/data/HttpTransactionDataSource.test.d.ts.map +0 -1
  773. package/lib/types/src/transaction/data/TransactionDataSource.d.ts.map +0 -1
  774. package/lib/types/src/transaction/data/dto/CalldataDto.d.ts.map +0 -1
  775. package/lib/types/src/transaction/data/dto/ProxyDelegateCallDto.d.ts.map +0 -1
  776. package/lib/types/src/transaction/data/dto/ProxyImplementationAddressDto.d.ts.map +0 -1
  777. package/lib/types/src/transaction/di/transactionModuleFactory.d.ts +0 -3
  778. package/lib/types/src/transaction/di/transactionModuleFactory.d.ts.map +0 -1
  779. package/lib/types/src/transaction/di/transactionTypes.d.ts +0 -6
  780. package/lib/types/src/transaction/di/transactionTypes.d.ts.map +0 -1
  781. package/lib/types/src/transaction/domain/TransactionContextLoader.d.ts +0 -12
  782. package/lib/types/src/transaction/domain/TransactionContextLoader.d.ts.map +0 -1
  783. package/lib/types/src/transaction/domain/TransactionContextLoader.test.d.ts +0 -2
  784. package/lib/types/src/transaction/domain/TransactionContextLoader.test.d.ts.map +0 -1
  785. package/lib/types/src/transaction/model/ProxyDelegateCall.d.ts +0 -5
  786. package/lib/types/src/transaction/model/ProxyDelegateCall.d.ts.map +0 -1
  787. package/lib/types/src/transaction/model/ProxyImplementationAddress.d.ts +0 -4
  788. package/lib/types/src/transaction/model/ProxyImplementationAddress.d.ts.map +0 -1
  789. package/lib/types/src/uniswap/constants/plugin.d.ts +0 -3
  790. package/lib/types/src/uniswap/constants/plugin.d.ts.map +0 -1
  791. package/lib/types/src/web3-check/data/HttpWeb3CheckDataSource.d.ts +0 -14
  792. package/lib/types/src/web3-check/data/HttpWeb3CheckDataSource.d.ts.map +0 -1
  793. package/lib/types/src/web3-check/data/HttpWeb3CheckDataSource.test.d.ts +0 -2
  794. package/lib/types/src/web3-check/data/HttpWeb3CheckDataSource.test.d.ts.map +0 -1
  795. package/lib/types/src/web3-check/data/Web3CheckDataSource.d.ts +0 -6
  796. package/lib/types/src/web3-check/data/Web3CheckDataSource.d.ts.map +0 -1
  797. package/lib/types/src/web3-check/data/Web3CheckDto.d.ts +0 -20
  798. package/lib/types/src/web3-check/data/Web3CheckDto.d.ts.map +0 -1
  799. package/lib/types/src/web3-check/di/web3CheckModuleFactory.d.ts +0 -3
  800. package/lib/types/src/web3-check/di/web3CheckModuleFactory.d.ts.map +0 -1
  801. package/lib/types/src/web3-check/di/web3CheckTypes.d.ts +0 -5
  802. package/lib/types/src/web3-check/di/web3CheckTypes.d.ts.map +0 -1
  803. package/lib/types/src/web3-check/domain/DefaultWeb3CheckLoader.d.ts +0 -10
  804. package/lib/types/src/web3-check/domain/DefaultWeb3CheckLoader.d.ts.map +0 -1
  805. package/lib/types/src/web3-check/domain/DefaultWeb3CheckLoader.test.d.ts +0 -2
  806. package/lib/types/src/web3-check/domain/DefaultWeb3CheckLoader.test.d.ts.map +0 -1
  807. package/lib/types/src/web3-check/domain/Web3CheckContextLoader.d.ts +0 -6
  808. package/lib/types/src/web3-check/domain/Web3CheckContextLoader.d.ts.map +0 -1
  809. package/lib/types/src/web3-check/domain/web3CheckTypes.d.ts +0 -35
  810. package/lib/types/src/web3-check/domain/web3CheckTypes.d.ts.map +0 -1
  811. /package/lib/cjs/src/{transaction → proxy}/data/dto/ProxyDelegateCallDto.js +0 -0
  812. /package/lib/cjs/src/{transaction → proxy}/data/dto/ProxyImplementationAddressDto.js +0 -0
  813. /package/lib/esm/src/{shared/model/TransactionContext.js.map → calldata/data/CalldataDescriptorDataSource.js.map} +0 -0
  814. /package/lib/esm/src/{transaction → calldata}/data/dto/CalldataDto.js +0 -0
  815. /package/lib/esm/src/{transaction → calldata}/data/dto/CalldataDto.js.map +0 -0
  816. /package/lib/esm/src/{transaction/data/TransactionDataSource.js.map → proxy/data/ProxyDataSource.js.map} +0 -0
  817. /package/lib/esm/src/{transaction → proxy}/data/dto/ProxyDelegateCallDto.js +0 -0
  818. /package/lib/esm/src/{transaction → proxy}/data/dto/ProxyDelegateCallDto.js.map +0 -0
  819. /package/lib/esm/src/{transaction → proxy}/data/dto/ProxyImplementationAddressDto.js +0 -0
  820. /package/lib/esm/src/{transaction → proxy}/data/dto/ProxyImplementationAddressDto.js.map +0 -0
  821. /package/lib/esm/src/{transaction/model/ProxyDelegateCall.js.map → proxy/data/dto/SafeProxyImplementationAddressDto.js.map} +0 -0
  822. /package/lib/esm/src/{transaction → proxy}/model/ProxyDelegateCall.js +0 -0
  823. /package/lib/esm/src/{transaction/model/ProxyImplementationAddress.js.map → proxy/model/ProxyDelegateCall.js.map} +0 -0
  824. /package/lib/esm/src/{web3-check/data/Web3CheckDataSource.js.map → safe/data/SafeAccountDataSource.js.map} +0 -0
  825. /package/lib/esm/src/{web3-check/data/Web3CheckDto.js.map → safe/data/dto/SafeAccountDto.js.map} +0 -0
  826. /package/lib/esm/src/{web3-check/domain/Web3CheckContextLoader.js.map → shared/domain/ContextFieldLoader.js.map} +0 -0
  827. /package/lib/esm/src/{web3-check/domain/web3CheckTypes.js.map → solanaLifi/data/SolanaLifiDataSource.js.map} +0 -0
  828. /package/lib/types/src/{transaction → proxy}/data/HttpProxyDataSource.test.d.ts +0 -0
  829. /package/lib/types/src/{transaction → proxy}/data/dto/ProxyDelegateCallDto.d.ts +0 -0
  830. /package/lib/types/src/{transaction → proxy}/data/dto/ProxyImplementationAddressDto.d.ts +0 -0
@@ -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 { 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 { 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 dynamicNetworkModuleFactory(),\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": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAA0B,qBAE1BC,EAAoC,2CAEpCC,EAA4C,4DAC5CC,EAA4C,4DAC5CC,EAAiC,qCACjCC,EAAqC,qCACrCC,EAA2C,kDAC3CC,EAAmC,yCACnCC,EAAyC,qDACzCC,EAAyC,sDACzCC,EAAuC,kDACvCC,EAAqC,6CACrCC,EAAuC,kDAMhC,MAAMd,EAAgB,CAAC,CAAE,OAAAe,CAAO,IAAyB,CAC9D,MAAMC,EAAY,IAAI,YAEtB,OAAAA,EAAU,YACR,uBAAoBD,CAAM,KAC1B,+BAA4B,KAC5B,+BAA4B,KAC5B,oBAAiB,KACjB,sBAAmB,KACnB,4BAAyB,KACzB,4BAAyB,KACzB,0BAAuB,KACvB,wBAAqB,KACrB,wBAAqB,KACrB,0BAAuB,KACvB,8BAA2B,CAC7B,EAEOC,CACT",
6
- "names": ["di_exports", "__export", "makeContainer", "__toCommonJS", "import_inversify", "import_configModuleFactory", "import_dynamicNetworkModuleFactory", "import_externalPluginModuleFactory", "import_nftModuleFactory", "import_pkiModuleFactory", "import_SolanaContextModuleFactory", "import_tokenModuleFactory", "import_transactionModuleFactory", "import_trustedNameModuleFactory", "import_typedDataModuleFactory", "import_uniswapModuleFactory", "import_web3CheckModuleFactory", "config", "container"]
4
+ "sourcesContent": ["import { type LoggerPublisherService } from \"@ledgerhq/device-management-kit\";\nimport { Container } from \"inversify\";\n\nimport { calldataModuleFactory } from \"@/calldata/di/calldataModuleFactory\";\nimport { configModuleFactory } from \"@/config/di/configModuleFactory\";\nimport { configTypes } from \"@/config/di/configTypes\";\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 if (config.loggerFactory) {\n container\n .bind<\n (tag: string) => LoggerPublisherService\n >(configTypes.ContextModuleLoggerFactory)\n .toConstantValue(config.loggerFactory);\n }\n\n container.loadSync(\n configModuleFactory(config),\n externalPluginModuleFactory(),\n dynamicNetworkModuleFactory(),\n nftModuleFactory(),\n proxyModuleFactory(config),\n safeModuleFactory(),\n tokenModuleFactory(),\n calldataModuleFactory(),\n trustedNameModuleFactory(config),\n typedDataModuleFactory(),\n nanoPkiModuleFactory(),\n uniswapModuleFactory(),\n transactionCheckModuleFactory(),\n solanaContextModuleFactory(),\n solanaTokenModuleFactory(),\n solanaLifiModuleFactory(),\n );\n\n return container;\n};\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAA0B,qBAE1BC,EAAsC,+CACtCC,EAAoC,2CACpCC,EAA4B,mCAE5BC,EAA4C,4DAC5CC,EAA4C,4DAC5CC,EAAiC,qCACjCC,EAAqC,qCACrCC,EAAmC,yCACnCC,EAAkC,uCAClCC,EAA2C,kDAC3CC,EAAwC,6CACxCC,EAAyC,+CACzCA,EAAmC,yCACnCC,EAA8C,gEAC9CC,EAAyC,sDACzCC,EAAuC,kDACvCC,EAAqC,6CAM9B,MAAMlB,EAAgB,CAAC,CAAE,OAAAmB,CAAO,IAAyB,CAC9D,MAAMC,EAAY,IAAI,YAEtB,OAAID,EAAO,eACTC,EACG,KAEC,cAAY,0BAA0B,EACvC,gBAAgBD,EAAO,aAAa,EAGzCC,EAAU,YACR,uBAAoBD,CAAM,KAC1B,+BAA4B,KAC5B,+BAA4B,KAC5B,oBAAiB,KACjB,sBAAmBA,CAAM,KACzB,qBAAkB,KAClB,sBAAmB,KACnB,yBAAsB,KACtB,4BAAyBA,CAAM,KAC/B,0BAAuB,KACvB,wBAAqB,KACrB,wBAAqB,KACrB,iCAA8B,KAC9B,8BAA2B,KAC3B,4BAAyB,KACzB,2BAAwB,CAC1B,EAEOC,CACT",
6
+ "names": ["di_exports", "__export", "makeContainer", "__toCommonJS", "import_inversify", "import_calldataModuleFactory", "import_configModuleFactory", "import_configTypes", "import_dynamicNetworkModuleFactory", "import_externalPluginModuleFactory", "import_nftModuleFactory", "import_pkiModuleFactory", "import_proxyModuleFactory", "import_safeModuleFactory", "import_SolanaContextModuleFactory", "import_lifiModuleFactory", "import_tokenModuleFactory", "import_transactionCheckModuleFactory", "import_trustedNameModuleFactory", "import_typedDataModuleFactory", "import_uniswapModuleFactory", "config", "container"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var s=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var I=(r,e)=>{for(var o in e)s(r,o,{get:e[o],enumerable:!0})},h=(r,e,o,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of D(e))!x.call(r,t)&&t!==o&&s(r,t,{get:()=>e[t],enumerable:!(i=p(e,t))||i.enumerable});return r};var w=r=>h(s({},"__esModule",{value:!0}),r),C=(r,e,o,i)=>{for(var t=i>1?void 0:i?p(e,o):e,n=r.length-1,a;n>=0;n--)(a=r[n])&&(t=(i?a(e,o,t):a(t))||t);return i&&t&&s(e,o,t),t},f=(r,e)=>(o,i)=>e(o,i,r);var M={};I(M,{DynamicNetworkContextLoader:()=>d});module.exports=w(M);var u=require("@ledgerhq/device-management-kit"),c=require("inversify"),g=require("../../config/di/configTypes"),y=require("../../dynamic-network/di/dynamicNetworkTypes"),S=require("../../pki/di/pkiTypes"),_=require("../../pki/model/KeyId"),k=require("../../pki/model/KeyUsage"),l=require("../../shared/model/ClearSignContext"),N=require("../../shared/utils/HexStringUtils");const v="15";let d=class{_networkDataSource;_config;_certificateLoader;constructor(e,o,i){this._networkDataSource=e,this._config=o,this._certificateLoader=i}async load(e){if(e.deviceModelId===u.DeviceModelId.NANO_S)return[];const o=await this._networkDataSource.getDynamicNetworkConfiguration(e.chainId),i=await this._certificateLoader.loadCertificate({keyId:_.KeyId.CalNetwork,keyUsage:k.KeyUsage.Network,targetDevice:e.deviceModelId});return o.caseOf({Left:()=>[],Right:t=>{const n=[],a=t.descriptors[e.deviceModelId];if(!a)return[];const m=a.signatures[this._config.cal.mode];if(!m)return[];const T=N.HexStringUtils.appendSignatureToPayload(a.data,m,v);return n.push({type:l.ClearSignContextType.DYNAMIC_NETWORK,payload:T,certificate:i}),a.icon&&n.push({type:l.ClearSignContextType.DYNAMIC_NETWORK_ICON,payload:a.icon}),n}})}loadField(e){return Promise.resolve(null)}};d=C([(0,c.injectable)(),f(0,(0,c.inject)(y.dynamicNetworkTypes.DynamicNetworkDataSource)),f(1,(0,c.inject)(g.configTypes.Config)),f(2,(0,c.inject)(S.pkiTypes.PkiCertificateLoader))],d);0&&(module.exports={DynamicNetworkContextLoader});
1
+ "use strict";var p=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var v=Object.prototype.hasOwnProperty;var T=(i,e)=>{for(var o in e)p(i,o,{get:e[o],enumerable:!0})},M=(i,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of w(e))!v.call(i,t)&&t!==o&&p(i,t,{get:()=>e[t],enumerable:!(r=y(e,t))||r.enumerable});return i};var P=i=>M(p({},"__esModule",{value:!0}),i),u=(i,e,o,r)=>{for(var t=r>1?void 0:r?y(e,o):e,c=i.length-1,n;c>=0;c--)(n=i[c])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&p(e,o,t),t},s=(i,e)=>(o,r)=>e(o,r,i);var b={};T(b,{DynamicNetworkContextLoader:()=>l});module.exports=P(b);var I=require("@ledgerhq/device-management-kit"),a=require("inversify"),m=require("../../config/di/configTypes"),N=require("../../dynamic-network/di/dynamicNetworkTypes"),k=require("../../pki/di/pkiTypes"),D=require("../../pki/model/KeyId"),S=require("../../pki/model/KeyUsage"),g=require("../../shared/model/ClearSignContext"),_=require("../../shared/utils/HexStringUtils");const L="15",O=[g.ClearSignContextType.DYNAMIC_NETWORK,g.ClearSignContextType.DYNAMIC_NETWORK_ICON];let l=class{_networkDataSource;_config;_certificateLoader;logger;constructor(e,o,r,t){this._networkDataSource=e,this._config=o,this._certificateLoader=r,this.logger=t("DynamicNetworkContextLoader")}canHandle(e,o){return typeof e=="object"&&e!==null&&"chainId"in e&&"deviceModelId"in e&&e.deviceModelId!==void 0&&e.deviceModelId!==I.DeviceModelId.NANO_S&&typeof e.chainId=="number"&&O.every(r=>o.includes(r))}async load(e){const{chainId:o,deviceModelId:r}=e,t=await this._networkDataSource.getDynamicNetworkConfiguration(o),c=await this._certificateLoader.loadCertificate({keyId:D.KeyId.CalNetwork,keyUsage:S.KeyUsage.Network,targetDevice:r}),n=t.caseOf({Left:()=>[],Right:h=>{const f=[],d=h.descriptors[r];if(!d)return[];const C=d.signatures[this._config.cal.mode];if(!C)return[];const x=_.HexStringUtils.appendSignatureToPayload(d.data,C,L);return f.push({type:g.ClearSignContextType.DYNAMIC_NETWORK,payload:x,certificate:c}),d.icon&&f.push({type:g.ClearSignContextType.DYNAMIC_NETWORK_ICON,payload:d.icon}),f}});return this.logger.debug("load result",{data:{result:n}}),n}};l=u([(0,a.injectable)(),s(0,(0,a.inject)(N.dynamicNetworkTypes.DynamicNetworkDataSource)),s(1,(0,a.inject)(m.configTypes.Config)),s(2,(0,a.inject)(k.pkiTypes.PkiCertificateLoader)),s(3,(0,a.inject)(m.configTypes.ContextModuleLoggerFactory))],l);0&&(module.exports={DynamicNetworkContextLoader});
2
2
  //# sourceMappingURL=DynamicNetworkContextLoader.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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 {\n TransactionContext,\n TransactionFieldContext,\n} from \"@/shared/model/TransactionContext\";\nimport { HexStringUtils } from \"@/shared/utils/HexStringUtils\";\n\nconst NETWORK_SIGNATURE_TAG = \"15\";\n\n@injectable()\nexport class DynamicNetworkContextLoader implements ContextLoader {\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 async load(ctx: TransactionContext): Promise<ClearSignContext[]> {\n if (ctx.deviceModelId === DeviceModelId.NANO_S) return [];\n\n const result = await this._networkDataSource.getDynamicNetworkConfiguration(\n ctx.chainId,\n );\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: ctx.deviceModelId,\n });\n\n return result.caseOf({\n Left: () => [],\n Right: (configuration) => {\n const contexts: ClearSignContext[] = [];\n const descriptor = configuration.descriptors[ctx.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 // Dynamic network context doesn't support field-level loading\n loadField(_field: TransactionFieldContext): Promise<ClearSignContext | null> {\n return Promise.resolve(null);\n }\n}\n"],
5
- "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAA8B,2CAC9BC,EAAmC,qBAEnCC,EAA4B,mCAG5BC,EAAoC,oDACpCC,EAAyB,6BAEzBC,EAAsB,6BACtBC,EAAyB,gCAEzBC,EAGO,2CAKPC,EAA+B,yCAE/B,MAAMC,EAAwB,KAGvB,IAAMC,EAAN,KAA2D,CAC/C,mBACA,QACA,mBAEjB,YAEEC,EAEAC,EAEAC,EACA,CACA,KAAK,mBAAqBF,EAC1B,KAAK,QAAUC,EACf,KAAK,mBAAqBC,CAC5B,CAEA,MAAM,KAAKC,EAAsD,CAC/D,GAAIA,EAAI,gBAAkB,gBAAc,OAAQ,MAAO,CAAC,EAExD,MAAMC,EAAS,MAAM,KAAK,mBAAmB,+BAC3CD,EAAI,OACN,EAGME,EAAc,MAAM,KAAK,mBAAmB,gBAAgB,CAChE,MAAO,QAAM,WACb,SAAU,WAAS,QACnB,aAAcF,EAAI,aACpB,CAAC,EAED,OAAOC,EAAO,OAAO,CACnB,KAAM,IAAM,CAAC,EACb,MAAQE,GAAkB,CACxB,MAAMC,EAA+B,CAAC,EAChCC,EAAaF,EAAc,YAAYH,EAAI,aAAa,EAE9D,GAAI,CAACK,EACH,MAAO,CAAC,EAGV,MAAMC,EAAYD,EAAW,WAAW,KAAK,QAAQ,IAAI,IAAI,EAE7D,GAAI,CAACC,EACH,MAAO,CAAC,EAGV,MAAMC,EAAgB,iBAAe,yBACnCF,EAAW,KACXC,EACAX,CACF,EAEA,OAAAS,EAAS,KAAK,CACZ,KAAM,uBAAqB,gBAC3B,QAASG,EACT,YAAAL,CACF,CAAC,EAGGG,EAAW,MAEbD,EAAS,KAAK,CACZ,KAAM,uBAAqB,qBAC3B,QAASC,EAAW,IACtB,CAAC,EAGID,CACT,CACF,CAAC,CACH,CAGA,UAAUI,EAAmE,CAC3E,OAAO,QAAQ,QAAQ,IAAI,CAC7B,CACF,EA9EaZ,EAANa,EAAA,IADN,cAAW,EAOPC,EAAA,eAAO,sBAAoB,wBAAwB,GAEnDA,EAAA,eAAO,cAAY,MAAM,GAEzBA,EAAA,eAAO,WAAS,oBAAoB,IAV5Bd",
6
- "names": ["DynamicNetworkContextLoader_exports", "__export", "DynamicNetworkContextLoader", "__toCommonJS", "import_device_management_kit", "import_inversify", "import_configTypes", "import_dynamicNetworkTypes", "import_pkiTypes", "import_KeyId", "import_KeyUsage", "import_ClearSignContext", "import_HexStringUtils", "NETWORK_SIGNATURE_TAG", "DynamicNetworkContextLoader", "networkDataSource", "config", "certificateLoader", "ctx", "result", "certificate", "configuration", "contexts", "descriptor", "signature", "configPayload", "_field", "__decorateClass", "__decorateParam"]
4
+ "sourcesContent": ["import {\n DeviceModelId,\n LoggerPublisherService,\n} 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 private logger: LoggerPublisherService;\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 @inject(configTypes.ContextModuleLoggerFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._networkDataSource = networkDataSource;\n this._config = config;\n this._certificateLoader = certificateLoader;\n this.logger = loggerFactory(\"DynamicNetworkContextLoader\");\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 networkConfig =\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 const result = networkConfig.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 this.logger.debug(\"load result\", { data: { result } });\n return result;\n }\n}\n"],
5
+ "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAGO,2CACPC,EAAmC,qBAEnCC,EAA4B,mCAG5BC,EAAoC,oDACpCC,EAAyB,6BAEzBC,EAAsB,6BACtBC,EAAyB,gCAEzBC,EAGO,2CACPC,EAA+B,yCAO/B,MAAMC,EAAwB,KAExBC,EAA0C,CAC9C,uBAAqB,gBACrB,uBAAqB,oBACvB,EAGO,IAAMC,EAAN,KAEP,CACmB,mBACA,QACA,mBACT,OAER,YAEEC,EAEAC,EAEAC,EAEAC,EACA,CACA,KAAK,mBAAqBH,EAC1B,KAAK,QAAUC,EACf,KAAK,mBAAqBC,EAC1B,KAAK,OAASC,EAAc,6BAA6B,CAC3D,CAEA,UACEC,EACAC,EACqC,CACrC,OACE,OAAOD,GAAU,UACjBA,IAAU,MACV,YAAaA,GACb,kBAAmBA,GACnBA,EAAM,gBAAkB,QACxBA,EAAM,gBAAkB,gBAAc,QACtC,OAAOA,EAAM,SAAY,UACzBN,EAAgB,MAAOQ,GAASD,EAAc,SAASC,CAAI,CAAC,CAEhE,CAEA,MAAM,KAAKF,EAAgE,CACzE,KAAM,CAAE,QAAAG,EAAS,cAAAC,CAAc,EAAIJ,EAE7BK,EACJ,MAAM,KAAK,mBAAmB,+BAA+BF,CAAO,EAGhEG,EAAc,MAAM,KAAK,mBAAmB,gBAAgB,CAChE,MAAO,QAAM,WACb,SAAU,WAAS,QACnB,aAAcF,CAChB,CAAC,EAEKG,EAASF,EAAc,OAAO,CAClC,KAAM,IAAM,CAAC,EACb,MAAQG,GAAkB,CACxB,MAAMC,EAA+B,CAAC,EAChCC,EAAaF,EAAc,YAAYJ,CAAa,EAE1D,GAAI,CAACM,EACH,MAAO,CAAC,EAGV,MAAMC,EAAYD,EAAW,WAAW,KAAK,QAAQ,IAAI,IAAI,EAE7D,GAAI,CAACC,EACH,MAAO,CAAC,EAGV,MAAMC,EAAgB,iBAAe,yBACnCF,EAAW,KACXC,EACAlB,CACF,EAEA,OAAAgB,EAAS,KAAK,CACZ,KAAM,uBAAqB,gBAC3B,QAASG,EACT,YAAAN,CACF,CAAC,EAGGI,EAAW,MAEbD,EAAS,KAAK,CACZ,KAAM,uBAAqB,qBAC3B,QAASC,EAAW,IACtB,CAAC,EAGID,CACT,CACF,CAAC,EAED,YAAK,OAAO,MAAM,cAAe,CAAE,KAAM,CAAE,OAAAF,CAAO,CAAE,CAAC,EAC9CA,CACT,CACF,EAjGaZ,EAANkB,EAAA,IADN,cAAW,EAUPC,EAAA,eAAO,sBAAoB,wBAAwB,GAEnDA,EAAA,eAAO,cAAY,MAAM,GAEzBA,EAAA,eAAO,WAAS,oBAAoB,GAEpCA,EAAA,eAAO,cAAY,0BAA0B,IAfrCnB",
6
+ "names": ["DynamicNetworkContextLoader_exports", "__export", "DynamicNetworkContextLoader", "__toCommonJS", "import_device_management_kit", "import_inversify", "import_configTypes", "import_dynamicNetworkTypes", "import_pkiTypes", "import_KeyId", "import_KeyUsage", "import_ClearSignContext", "import_HexStringUtils", "NETWORK_SIGNATURE_TAG", "SUPPORTED_TYPES", "DynamicNetworkContextLoader", "networkDataSource", "config", "certificateLoader", "loggerFactory", "input", "expectedTypes", "type", "chainId", "deviceModelId", "networkConfig", "certificate", "result", "configuration", "contexts", "descriptor", "signature", "configPayload", "__decorateClass", "__decorateParam"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("@ledgerhq/device-management-kit"),n=require("purify-ts"),f=require("../../dynamic-network/domain/DynamicNetworkContextLoader"),m=require("../../pki/model/KeyId"),g=require("../../pki/model/KeyUsage"),d=require("../../shared/model/ClearSignContext");describe("DynamicNetworkContextLoader",()=>{const a={getDynamicNetworkConfiguration:vi.fn()},l={cal:{url:"https://crypto-assets-service.api.ledger.com",mode:"prod",branch:"main"},web3checks:{url:"https://web3checks.api.ledger.com"},metadataServiceDomain:{url:"https://metadata.api.ledger.com"},defaultLoaders:!0,customLoaders:[]},p={loadCertificate:vi.fn()},u={keyUsageNumber:1,payload:new Uint8Array([1,2,3])},c=new f.DynamicNetworkContextLoader(a,l,p),t=o=>({data:"",descriptorType:"",descriptorVersion:"",signatures:{prod:"",test:""},icon:void 0,...o});beforeEach(()=>{vi.restoreAllMocks(),vi.spyOn(p,"loadCertificate").mockResolvedValue(u)}),describe("load function",()=>{it("should return empty array when network data source returns error",async()=>{const o={chainId:1,deviceModelId:e.DeviceModelId.STAX,to:"0x123",data:"0x456",selector:"0x789"};vi.spyOn(a,"getDynamicNetworkConfiguration").mockResolvedValue((0,n.Left)(new Error("Network error")));const i=await c.load(o);expect(i).toEqual([]),expect(a.getDynamicNetworkConfiguration).toHaveBeenCalledWith(1)}),it("should return empty array when descriptor for device model is not found",async()=>{const o={chainId:1,deviceModelId:e.DeviceModelId.STAX,to:"0x123",data:"0x456",selector:"0x789"},i={id:"ethereum",descriptors:{[e.DeviceModelId.NANO_S]:t(),[e.DeviceModelId.NANO_SP]:t(),[e.DeviceModelId.NANO_X]:t(),[e.DeviceModelId.FLEX]:t({data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"prod-sig",test:"test-sig"},icon:void 0})}};vi.spyOn(a,"getDynamicNetworkConfiguration").mockResolvedValue((0,n.Right)(i));const r=await c.load(o);expect(r).toEqual([])}),it("should return empty array when signature for mode is not found",async()=>{const o={chainId:1,deviceModelId:e.DeviceModelId.STAX,to:"0x123",data:"0x456",selector:"0x789"},i={id:"ethereum",descriptors:{[e.DeviceModelId.APEX]:t(),[e.DeviceModelId.NANO_S]:t(),[e.DeviceModelId.NANO_SP]:t(),[e.DeviceModelId.NANO_X]:t(),[e.DeviceModelId.FLEX]:t(),[e.DeviceModelId.STAX]:t({data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{test:"test-sig"},icon:void 0})}};vi.spyOn(a,"getDynamicNetworkConfiguration").mockResolvedValue((0,n.Right)(i));const r=await c.load(o);expect(r).toEqual([])}),it("should return context with network configuration when all data is available",async()=>{const o={chainId:137,deviceModelId:e.DeviceModelId.STAX,to:"0x123",data:"0x456",selector:"0x789"},i={id:"polygon",descriptors:{[e.DeviceModelId.APEX]:t(),[e.DeviceModelId.NANO_S]:t(),[e.DeviceModelId.NANO_SP]:t(),[e.DeviceModelId.NANO_X]:t(),[e.DeviceModelId.FLEX]:t(),[e.DeviceModelId.STAX]:{data:"0x0101080201015101012308000000000000008952",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"3045022100cf42c039c16fc95dc97c09f15cdd93bed0e63ee45cf5c38c2b30bb8a3bc17f8d022053a96c9e51695c3c1c1a31f5cbf84bd6febadc97f4bb02bdc67cf3e24ad0c32d",test:"test-sig"},icon:void 0}}};vi.spyOn(a,"getDynamicNetworkConfiguration").mockResolvedValue((0,n.Right)(i));const r=await c.load(o);expect(r).toHaveLength(1),expect(r[0]).toMatchObject({type:d.ClearSignContextType.DYNAMIC_NETWORK,payload:expect.stringContaining("0x0101080201015101012308000000000000008952"),certificate:u}),expect(p.loadCertificate).toHaveBeenCalledWith({keyId:m.KeyId.CalNetwork,keyUsage:g.KeyUsage.Network,targetDevice:e.DeviceModelId.STAX})}),it("should include icon context when icon is available",async()=>{const o={chainId:1,deviceModelId:e.DeviceModelId.STAX,to:"0x123",data:"0x456",selector:"0x789"},i={id:"ethereum",descriptors:{[e.DeviceModelId.APEX]:t(),[e.DeviceModelId.NANO_S]:t(),[e.DeviceModelId.NANO_SP]:t(),[e.DeviceModelId.NANO_X]:t(),[e.DeviceModelId.FLEX]:t(),[e.DeviceModelId.STAX]:{data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"prod-sig",test:"test-sig"},icon:"icon-hex-data"}}};vi.spyOn(a,"getDynamicNetworkConfiguration").mockResolvedValue((0,n.Right)(i));const r=await c.load(o);expect(r).toHaveLength(2),expect(r[0]).toMatchObject({type:d.ClearSignContextType.DYNAMIC_NETWORK,payload:expect.any(String),certificate:u}),expect(r[1]).toMatchObject({type:d.ClearSignContextType.DYNAMIC_NETWORK_ICON,payload:"icon-hex-data"})}),it("should handle multiple device models correctly",async()=>{const o={chainId:1,deviceModelId:e.DeviceModelId.FLEX,to:"0x123",data:"0x456",selector:"0x789"},i={id:"ethereum",descriptors:{[e.DeviceModelId.APEX]:t(),[e.DeviceModelId.NANO_S]:t(),[e.DeviceModelId.NANO_SP]:t(),[e.DeviceModelId.NANO_X]:t(),[e.DeviceModelId.FLEX]:{data:"0xFLEX",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"flex-prod-sig",test:"flex-test-sig"},icon:void 0},[e.DeviceModelId.STAX]:{data:"0xSTAX",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"stax-prod-sig",test:"stax-test-sig"},icon:void 0}}};vi.spyOn(a,"getDynamicNetworkConfiguration").mockResolvedValue((0,n.Right)(i));const r=await c.load(o);expect(r).toHaveLength(1);const s=r[0];s&&"payload"in s&&(expect(s.payload).toContain("0xFLEX"),expect(s.payload).toContain("flex-prod-sig"))}),it("should use test mode signature when configured",async()=>{const o=new f.DynamicNetworkContextLoader(a,{...l,cal:{...l.cal,mode:"test"}},p),i={chainId:1,deviceModelId:e.DeviceModelId.STAX,to:"0x123",data:"0x456",selector:"0x789"},r={id:"ethereum",descriptors:{[e.DeviceModelId.APEX]:t(),[e.DeviceModelId.NANO_S]:t(),[e.DeviceModelId.NANO_SP]:t(),[e.DeviceModelId.NANO_X]:t(),[e.DeviceModelId.FLEX]:t(),[e.DeviceModelId.STAX]:{data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"prod-sig",test:"test-sig"},icon:void 0}}};vi.spyOn(a,"getDynamicNetworkConfiguration").mockResolvedValue((0,n.Right)(r));const s=await o.load(i);expect(s).toHaveLength(1);const y=s[0];y&&"payload"in y&&expect(y.payload).toContain("test-sig")})}),describe("loadField function",()=>{it("should always return null",async()=>{const o={type:d.ClearSignContextType.TOKEN,chainId:1,address:"0x123"},i=await c.loadField(o);expect(i).toBeNull()})})});
1
+ "use strict";var e=require("@ledgerhq/device-management-kit"),d=require("purify-ts"),f=require("../../dynamic-network/domain/DynamicNetworkContextLoader"),m=require("../../pki/model/KeyId"),g=require("../../pki/model/KeyUsage"),r=require("../../shared/model/ClearSignContext"),y=require("../../shared/utils/NullLoggerPublisherService");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.DynamicNetworkContextLoader(c,l,p,y.NullLoggerPublisherService),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.DeviceModelId.STAX};it("should return true for valid input",()=>{expect(a.canHandle(o,[r.ClearSignContextType.DYNAMIC_NETWORK,r.ClearSignContextType.DYNAMIC_NETWORK_ICON])).toBe(!0)}),it("should return false for invalid expected type",()=>{expect(a.canHandle(o,[r.ClearSignContextType.TOKEN])).toBe(!1),expect(a.canHandle(o,[r.ClearSignContextType.DYNAMIC_NETWORK])).toBe(!1),expect(a.canHandle(o,[r.ClearSignContextType.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",(i,n)=>{expect(a.canHandle(i,[r.ClearSignContextType.DYNAMIC_NETWORK,r.ClearSignContextType.DYNAMIC_NETWORK_ICON])).toBe(!1)}),it.each([[{...o,chainId:void 0},"missing chainId"],[{...o,deviceModelId:void 0},"missing deviceModelId"]])("should return false for %s",(i,n)=>{expect(a.canHandle(i,[r.ClearSignContextType.DYNAMIC_NETWORK,r.ClearSignContextType.DYNAMIC_NETWORK_ICON])).toBe(!1)}),it.each([[{...o,chainId:"1"},"string chainId"],[{...o,chainId:null},"null chainId"],[{...o,deviceModelId:e.DeviceModelId.NANO_S},"NANO_S deviceModelId"]])("should return false for %s",(i,n)=>{expect(a.canHandle(i,[r.ClearSignContextType.DYNAMIC_NETWORK,r.ClearSignContextType.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.DeviceModelId.STAX};vi.spyOn(c,"getDynamicNetworkConfiguration").mockResolvedValue((0,d.Left)(new Error("Network error")));const i=await a.load(o);expect(i).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.DeviceModelId.STAX},i={id:"ethereum",descriptors:{[e.DeviceModelId.NANO_S]:t(),[e.DeviceModelId.NANO_SP]:t(),[e.DeviceModelId.NANO_X]:t(),[e.DeviceModelId.FLEX]:t({data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"prod-sig",test:"test-sig"},icon:void 0})}};vi.spyOn(c,"getDynamicNetworkConfiguration").mockResolvedValue((0,d.Right)(i));const n=await a.load(o);expect(n).toEqual([])}),it("should return empty array when signature for mode is not found",async()=>{const o={chainId:1,deviceModelId:e.DeviceModelId.STAX},i={id:"ethereum",descriptors:{[e.DeviceModelId.APEX]:t(),[e.DeviceModelId.NANO_S]:t(),[e.DeviceModelId.NANO_SP]:t(),[e.DeviceModelId.NANO_X]:t(),[e.DeviceModelId.FLEX]:t(),[e.DeviceModelId.STAX]:t({data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{test:"test-sig"},icon:void 0})}};vi.spyOn(c,"getDynamicNetworkConfiguration").mockResolvedValue((0,d.Right)(i));const n=await a.load(o);expect(n).toEqual([])}),it("should return context with network configuration when all data is available",async()=>{const o={chainId:137,deviceModelId:e.DeviceModelId.STAX},i={id:"polygon",descriptors:{[e.DeviceModelId.APEX]:t(),[e.DeviceModelId.NANO_S]:t(),[e.DeviceModelId.NANO_SP]:t(),[e.DeviceModelId.NANO_X]:t(),[e.DeviceModelId.FLEX]:t(),[e.DeviceModelId.STAX]:{data:"0x0101080201015101012308000000000000008952",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"3045022100cf42c039c16fc95dc97c09f15cdd93bed0e63ee45cf5c38c2b30bb8a3bc17f8d022053a96c9e51695c3c1c1a31f5cbf84bd6febadc97f4bb02bdc67cf3e24ad0c32d",test:"test-sig"},icon:void 0}}};vi.spyOn(c,"getDynamicNetworkConfiguration").mockResolvedValue((0,d.Right)(i));const n=await a.load(o);expect(n).toHaveLength(1),expect(n[0]).toMatchObject({type:r.ClearSignContextType.DYNAMIC_NETWORK,payload:expect.stringContaining("0x0101080201015101012308000000000000008952"),certificate:u}),expect(p.loadCertificate).toHaveBeenCalledWith({keyId:m.KeyId.CalNetwork,keyUsage:g.KeyUsage.Network,targetDevice:e.DeviceModelId.STAX})}),it("should include icon context when icon is available",async()=>{const o={chainId:1,deviceModelId:e.DeviceModelId.STAX},i={id:"ethereum",descriptors:{[e.DeviceModelId.APEX]:t(),[e.DeviceModelId.NANO_S]:t(),[e.DeviceModelId.NANO_SP]:t(),[e.DeviceModelId.NANO_X]:t(),[e.DeviceModelId.FLEX]:t(),[e.DeviceModelId.STAX]:{data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"prod-sig",test:"test-sig"},icon:"icon-hex-data"}}};vi.spyOn(c,"getDynamicNetworkConfiguration").mockResolvedValue((0,d.Right)(i));const n=await a.load(o);expect(n).toHaveLength(2),expect(n[0]).toMatchObject({type:r.ClearSignContextType.DYNAMIC_NETWORK,payload:expect.any(String),certificate:u}),expect(n[1]).toMatchObject({type:r.ClearSignContextType.DYNAMIC_NETWORK_ICON,payload:"icon-hex-data"})}),it("should handle multiple device models correctly",async()=>{const o={chainId:1,deviceModelId:e.DeviceModelId.FLEX},i={id:"ethereum",descriptors:{[e.DeviceModelId.APEX]:t(),[e.DeviceModelId.NANO_S]:t(),[e.DeviceModelId.NANO_SP]:t(),[e.DeviceModelId.NANO_X]:t(),[e.DeviceModelId.FLEX]:{data:"0xFLEX",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"flex-prod-sig",test:"flex-test-sig"},icon:void 0},[e.DeviceModelId.STAX]:{data:"0xSTAX",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"stax-prod-sig",test:"stax-test-sig"},icon:void 0}}};vi.spyOn(c,"getDynamicNetworkConfiguration").mockResolvedValue((0,d.Right)(i));const n=await a.load(o);expect(n).toHaveLength(1);const s=n[0];s&&"payload"in s&&(expect(s.payload).toContain("0xFLEX"),expect(s.payload).toContain("flex-prod-sig"))}),it("should use test mode signature when configured",async()=>{const o=new f.DynamicNetworkContextLoader(c,{...l,cal:{...l.cal,mode:"test"}},p,y.NullLoggerPublisherService),i={chainId:1,deviceModelId:e.DeviceModelId.STAX},n={id:"ethereum",descriptors:{[e.DeviceModelId.APEX]:t(),[e.DeviceModelId.NANO_S]:t(),[e.DeviceModelId.NANO_SP]:t(),[e.DeviceModelId.NANO_X]:t(),[e.DeviceModelId.FLEX]:t(),[e.DeviceModelId.STAX]:{data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"prod-sig",test:"test-sig"},icon:void 0}}};vi.spyOn(c,"getDynamicNetworkConfiguration").mockResolvedValue((0,d.Right)(n));const s=await o.load(i);expect(s).toHaveLength(1);const N=s[0];N&&"payload"in N&&expect(N.payload).toContain("test-sig")})})});
2
2
  //# sourceMappingURL=DynamicNetworkContextLoader.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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 { DynamicNetworkContextLoader } 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\";\nimport {\n type TransactionContext,\n type TransactionFieldContext,\n} from \"@/shared/model/TransactionContext\";\n\ndescribe(\"DynamicNetworkContextLoader\", () => {\n const mockNetworkDataSource: DynamicNetworkDataSource = {\n getDynamicNetworkConfiguration: vi.fn(),\n };\n\n const mockConfig: ContextModuleConfig = {\n cal: {\n url: \"https://crypto-assets-service.api.ledger.com\",\n mode: \"prod\",\n branch: \"main\",\n },\n web3checks: {\n url: \"https://web3checks.api.ledger.com\",\n },\n metadataServiceDomain: {\n url: \"https://metadata.api.ledger.com\",\n },\n defaultLoaders: true,\n customLoaders: [],\n };\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(\"load function\", () => {\n it(\"should return empty array when network data source returns error\", async () => {\n // GIVEN\n const transaction: TransactionContext = {\n chainId: 1,\n deviceModelId: DeviceModelId.STAX,\n to: \"0x123\",\n data: \"0x456\",\n selector: \"0x789\",\n };\n vi.spyOn(\n mockNetworkDataSource,\n \"getDynamicNetworkConfiguration\",\n ).mockResolvedValue(Left(new Error(\"Network error\")));\n\n // WHEN\n const result = await loader.load(transaction);\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 transaction: TransactionContext = {\n chainId: 1,\n deviceModelId: DeviceModelId.STAX,\n to: \"0x123\",\n data: \"0x456\",\n selector: \"0x789\",\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(transaction);\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 transaction: TransactionContext = {\n chainId: 1,\n deviceModelId: DeviceModelId.STAX,\n to: \"0x123\",\n data: \"0x456\",\n selector: \"0x789\",\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(transaction);\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 transaction: TransactionContext = {\n chainId: 137,\n deviceModelId: DeviceModelId.STAX,\n to: \"0x123\",\n data: \"0x456\",\n selector: \"0x789\",\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(transaction);\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 transaction: TransactionContext = {\n chainId: 1,\n deviceModelId: DeviceModelId.STAX,\n to: \"0x123\",\n data: \"0x456\",\n selector: \"0x789\",\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(transaction);\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 transaction: TransactionContext = {\n chainId: 1,\n deviceModelId: DeviceModelId.FLEX,\n to: \"0x123\",\n data: \"0x456\",\n selector: \"0x789\",\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(transaction);\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 transaction: TransactionContext = {\n chainId: 1,\n deviceModelId: DeviceModelId.STAX,\n to: \"0x123\",\n data: \"0x456\",\n selector: \"0x789\",\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(transaction);\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 describe(\"loadField function\", () => {\n it(\"should always return null\", async () => {\n // GIVEN\n const field: TransactionFieldContext = {\n type: ClearSignContextType.TOKEN,\n chainId: 1,\n address: \"0x123\",\n };\n\n // WHEN\n const result = await loader.loadField(field);\n\n // THEN\n expect(result).toBeNull();\n });\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["import_device_management_kit", "import_purify_ts", "import_DynamicNetworkContextLoader", "import_KeyId", "import_KeyUsage", "import_ClearSignContext", "mockNetworkDataSource", "mockConfig", "mockCertificateLoader", "mockCertificate", "loader", "createMockDescriptor", "partial", "transaction", "result", "networkConfig", "context", "testModeLoader", "field"]
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\";\nimport { NullLoggerPublisherService } from \"@/shared/utils/NullLoggerPublisherService\";\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 NullLoggerPublisherService,\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 NullLoggerPublisherService,\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": ["import_device_management_kit", "import_purify_ts", "import_DynamicNetworkContextLoader", "import_KeyId", "import_KeyUsage", "import_ClearSignContext", "import_NullLoggerPublisherService", "mockNetworkDataSource", "mockConfig", "mockCertificateLoader", "mockCertificate", "loader", "createMockDescriptor", "partial", "validInput", "input", "_description", "result", "networkConfig", "context", "testModeLoader"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var g=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var w=Object.prototype.hasOwnProperty;var O=(o,t)=>{for(var a in t)g(o,a,{get:t[a],enumerable:!0})},_=(o,t,a,e)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of I(t))!w.call(o,r)&&r!==a&&g(o,r,{get:()=>t[r],enumerable:!(e=S(t,r))||e.enumerable});return o};var v=o=>_(g({},"__esModule",{value:!0}),o),y=(o,t,a,e)=>{for(var r=e>1?void 0:e?S(t,a):t,n=o.length-1,c;n>=0;n--)(c=o[n])&&(r=(e?c(t,a,r):c(r))||r);return e&&r&&g(t,a,r),r},D=(o,t)=>(a,e)=>t(a,e,o);var L={};O(L,{ExternalPluginContextLoader:()=>d});module.exports=v(L);var h=require("@ledgerhq/device-management-kit"),E=require("ethers"),p=require("inversify"),s=require("purify-ts"),R=require("../../external-plugin/di/externalPluginTypes"),i=require("../../shared/model/ClearSignContext"),P=require("../../token/di/tokenTypes");let d=class{_externalPluginDataSource;_tokenDataSource;constructor(t,a){this._externalPluginDataSource=t,this._tokenDataSource=a}async load(t){const{to:a,data:e,selector:r,chainId:n}=t;if(a===void 0||e==="0x")return[];if(!(0,h.isHexaString)(r))return[{type:i.ClearSignContextType.ERROR,error:new Error("Invalid selector")}];const c=await this._externalPluginDataSource.getDappInfos({address:a,chainId:n,selector:r});return(0,s.EitherAsync)(async({liftEither:u})=>{const l=await u(c);if(!l)return[];const C={type:i.ClearSignContextType.EXTERNAL_PLUGIN,payload:l.selectorDetails.serializedData.concat(l.selectorDetails.signature)},x=this.getDecodedCallData(l.abi,l.selectorDetails.method,e);if(x.isLeft())return[{type:i.ClearSignContextType.ERROR,error:x.extract()},C];const k=x.extract(),T=l.selectorDetails.erc20OfInterest.map(async f=>this.getTokenPayload(t,f,k));return[...(await Promise.all(T)).map(f=>f.caseOf({Left:m=>({type:i.ClearSignContextType.ERROR,error:m}),Right:m=>({type:i.ClearSignContextType.TOKEN,payload:m})})),C]}).caseOf({Left:u=>[{type:i.ClearSignContextType.ERROR,error:u}],Right:u=>u})}getTokenPayload(t,a,e){const r=this.getAddressFromPath(a,e);return(0,s.EitherAsync)(({fromPromise:n})=>n(this._tokenDataSource.getTokenInfosPayload({address:r,chainId:t.chainId})))}getDecodedCallData(t,a,e){try{const r=new E.Interface(t);return(0,s.Right)(r.decodeFunctionData(a,e))}catch{return(0,s.Left)(new Error("[ContextModule] ExternalPluginContextLoader: Unable to parse abi"))}}getAddressFromPath(t,a){let e=a;for(const r of t.split("."))r==="-1"?e=e[e.length-1]:e=e[r];if(!(0,h.isHexaString)(e))throw new Error("[ContextModule] ExternalPluginContextLoader: Unable to get address");return e}};d=y([(0,p.injectable)(),D(0,(0,p.inject)(R.externalPluginTypes.ExternalPluginDataSource)),D(1,(0,p.inject)(P.tokenTypes.TokenDataSource))],d);0&&(module.exports={ExternalPluginContextLoader});
1
+ "use strict";var C=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var _=Object.prototype.hasOwnProperty;var H=(o,e)=>{for(var a in e)C(o,a,{get:e[a],enumerable:!0})},O=(o,e,a,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of v(e))!_.call(o,r)&&r!==a&&C(o,r,{get:()=>e[r],enumerable:!(t=E(e,r))||t.enumerable});return o};var U=o=>O(C({},"__esModule",{value:!0}),o),D=(o,e,a,t)=>{for(var r=t>1?void 0:t?E(e,a):e,i=o.length-1,g;i>=0;i--)(g=o[i])&&(r=(t?g(e,a,r):g(r))||r);return t&&r&&C(e,a,r),r},x=(o,e)=>(a,t)=>e(a,t,o);var A={};H(A,{ExternalPluginContextLoader:()=>m});module.exports=U(A);var p=require("@ledgerhq/device-management-kit"),L=require("ethers"),l=require("inversify"),c=require("purify-ts"),I=require("../../config/di/configTypes"),T=require("../../external-plugin/di/externalPluginTypes"),n=require("../../shared/model/ClearSignContext"),R=require("../../token/di/tokenTypes"),w=require("../../uniswap/di/uniswapTypes");const N=[n.ClearSignContextType.EXTERNAL_PLUGIN,n.ClearSignContextType.TOKEN];let m=class{constructor(e,a,t,r){this._externalPluginDataSource=e;this._tokenDataSource=a;this._uniswapLoader=t;this._customPluginLoaders={Uniswap:this._uniswapLoader},this.logger=r("ExternalPluginContextLoader")}_customPluginLoaders;logger;canHandle(e,a){return typeof e=="object"&&e!==null&&"to"in e&&"data"in e&&"selector"in e&&"chainId"in e&&typeof e.chainId=="number"&&(0,p.isHexaString)(e.to)&&e.to!=="0x"&&(0,p.isHexaString)(e.data)&&e.data!=="0x"&&(0,p.isHexaString)(e.selector)&&e.selector!=="0x"&&N.every(t=>a.includes(t))}async load(e){const{to:a,data:t,selector:r,chainId:i}=e,g=await this._externalPluginDataSource.getDappInfos({address:a,chainId:i,selector:r}),y=await(0,c.EitherAsync)(async({liftEither:d})=>{const s=await d(g);if(!s)return[];const h={type:n.ClearSignContextType.EXTERNAL_PLUGIN,payload:s.selectorDetails.serializedData.concat(s.selectorDetails.signature)},f=this._customPluginLoaders[s.selectorDetails.plugin];if(f!==void 0&&f.canHandle(e,[n.ClearSignContextType.TOKEN])){const u=await f.load(e);return[h,...u]}const P=this.getDecodedCallData(s.abi,s.selectorDetails.method,t);if(P.isLeft())return[{type:n.ClearSignContextType.ERROR,error:P.extract()},h];const k=P.extract(),b=s.selectorDetails.erc20OfInterest.map(async u=>this.getTokenPayload(e,u,k));return[...(await Promise.all(b)).map(u=>u.caseOf({Left:S=>({type:n.ClearSignContextType.ERROR,error:S}),Right:S=>({type:n.ClearSignContextType.TOKEN,payload:S})})),h]}).caseOf({Left:d=>[{type:n.ClearSignContextType.ERROR,error:d}],Right:d=>d});return this.logger.debug("load result",{data:{result:y}}),y}getTokenPayload(e,a,t){const r=this.getAddressFromPath(a,t);return(0,c.EitherAsync)(({fromPromise:i})=>i(this._tokenDataSource.getTokenInfosPayload({address:r,chainId:e.chainId})))}getDecodedCallData(e,a,t){try{const r=new L.Interface(e);return(0,c.Right)(r.decodeFunctionData(a,t))}catch{return(0,c.Left)(new Error("[ContextModule] ExternalPluginContextLoader: Unable to parse abi"))}}getAddressFromPath(e,a){let t=a;for(const r of e.split("."))r==="-1"?t=t[t.length-1]:t=t[r];if(!(0,p.isHexaString)(t))throw new Error("[ContextModule] ExternalPluginContextLoader: Unable to get address");return t}};m=D([(0,l.injectable)(),x(0,(0,l.inject)(T.externalPluginTypes.ExternalPluginDataSource)),x(1,(0,l.inject)(R.tokenTypes.TokenDataSource)),x(2,(0,l.inject)(w.uniswapTypes.UniswapContextLoader)),x(3,(0,l.inject)(I.configTypes.ContextModuleLoggerFactory))],m);0&&(module.exports={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": ["ExternalPluginContextLoader_exports", "__export", "ExternalPluginContextLoader", "__toCommonJS", "import_device_management_kit", "import_ethers", "import_inversify", "import_purify_ts", "import_externalPluginTypes", "import_ClearSignContext", "import_tokenTypes", "ExternalPluginContextLoader", "externalPluginDataSource", "tokenDataSource", "ctx", "to", "data", "selector", "chainId", "eitherDappInfos", "liftEither", "dappInfos", "externalPluginContext", "decodedCallData", "extractedDecodedCallData", "promises", "erc20Path", "eitherToken", "error", "payload", "contexts", "address", "fromPromise", "abi", "method", "contractInterface", "path", "value", "key", "__decorateClass", "__decorateParam"]
4
+ "sourcesContent": ["import {\n HexaString,\n isHexaString,\n LoggerPublisherService,\n} 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 { configTypes } from \"@/config/di/configTypes\";\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 private logger: LoggerPublisherService;\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 @inject(configTypes.ContextModuleLoggerFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._customPluginLoaders = {\n Uniswap: this._uniswapLoader,\n };\n this.logger = loggerFactory(\"ExternalPluginContextLoader\");\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 const result = await EitherAsync<Error, ClearSignContext[]>(\n 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 },\n ).caseOf<ClearSignContext[]>({\n // parse all errors into ClearSignContext\n Left: (error) => [{ type: ClearSignContextType.ERROR, error }],\n Right: (contexts) => contexts,\n });\n\n this.logger.debug(\"load result\", { data: { result } });\n return result;\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": ["ExternalPluginContextLoader_exports", "__export", "ExternalPluginContextLoader", "__toCommonJS", "import_device_management_kit", "import_ethers", "import_inversify", "import_purify_ts", "import_configTypes", "import_externalPluginTypes", "import_ClearSignContext", "import_tokenTypes", "import_uniswapTypes", "SUPPORTED_TYPES", "ExternalPluginContextLoader", "_externalPluginDataSource", "_tokenDataSource", "_uniswapLoader", "loggerFactory", "input", "expectedTypes", "type", "to", "data", "selector", "chainId", "eitherDappInfos", "result", "liftEither", "dappInfos", "externalPluginContext", "customLoader", "tokens", "decodedCallData", "extractedDecodedCallData", "promises", "erc20Path", "eitherToken", "error", "payload", "contexts", "address", "fromPromise", "abi", "method", "contractInterface", "path", "value", "key", "__decorateClass", "__decorateParam"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var y=Object.create;var i=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var x=Object.getPrototypeOf,D=Object.prototype.hasOwnProperty;var b=(s,o,r,a)=>{if(o&&typeof o=="object"||typeof o=="function")for(let e of f(o))!D.call(s,e)&&e!==r&&i(s,e,{get:()=>o[e],enumerable:!(a=E(o,e))||a.enumerable});return s};var I=(s,o,r)=>(r=s!=null?y(x(s)):{},b(o||!s||!s.__esModule?i(r,"default",{value:s,enumerable:!0}):r,s));var m=require("ethers"),l=require("purify-ts"),n=I(require("@/external-plugin/__tests__/abi.json")),u=require("../../external-plugin/domain/ExternalPluginContextLoader"),t=require("../../shared/model/ClearSignContext");const d=({abi:s,selectorDetails:o})=>({abi:s,selectorDetails:{erc20OfInterest:[],method:"",plugin:"",serializedData:"123456",signature:"7890",...o}}),p=(s,o,r)=>{const e=new m.Interface(JSON.stringify(s)).encodeFunctionData(o,r);return{to:"0x0",data:e,selector:e.slice(0,10)}};describe("ExternalPluginContextLoader",()=>{const s={getTokenInfosPayload:vi.fn()},o={getDappInfos:vi.fn()},r=new u.ExternalPluginContextLoader(o,s);beforeEach(()=>{vi.clearAllMocks(),vi.spyOn(s,"getTokenInfosPayload").mockImplementation(({address:a})=>Promise.resolve((0,l.Right)(`payload-${a}`)))}),describe("load function",()=>{it("should return an empty array if no destination address is provided",async()=>{const a={},e=()=>r.load(a);await expect(e()).resolves.toEqual([])}),it("should return an empty array if no data provided",async()=>{const a={to:"0x0",data:"0x",selector:"0x0"},e=await r.load(a);expect(e).toEqual([])}),it("should return an empty array if no dapp info is povided",async()=>{const a=p(n.default,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(o,"getDappInfos").mockResolvedValue((0,l.Right)(void 0));const e=await r.load(a);expect(e).toEqual([])}),it("should return e plugin if no erc20OfInterest is provided",async()=>{const a=d({abi:n.default,selectorDetails:{erc20OfInterest:[],method:"singleParam"}}),e=p(n.default,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(o,"getDappInfos").mockResolvedValue((0,l.Right)(a));const c=await r.load(e);expect(c).toEqual([{type:t.ClearSignContextType.EXTERNAL_PLUGIN,payload:"1234567890"}])}),it("should return a list of context responses when one erc20OfInterest is provided for a single parameter",async()=>{const a=d({abi:n.default,selectorDetails:{erc20OfInterest:["fromToken"],method:"singleParam"}}),e=p(n.default,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(o,"getDappInfos").mockResolvedValue((0,l.Right)(a));const c=await r.load(e);expect(c).toEqual(expect.arrayContaining([{type:t.ClearSignContextType.EXTERNAL_PLUGIN,payload:"1234567890"},{type:t.ClearSignContextType.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 a=d({abi:n.default,selectorDetails:{erc20OfInterest:["fromToken"],method:"singleParam"}}),e=p(n.default,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(o,"getDappInfos").mockResolvedValue((0,l.Right)(a)),vi.spyOn(s,"getTokenInfosPayload").mockResolvedValue((0,l.Left)(Error("error")));const c=await r.load(e);expect(c).toEqual([{type:t.ClearSignContextType.ERROR,error:new Error("error")},{type:t.ClearSignContextType.EXTERNAL_PLUGIN,payload:"1234567890"}])}),it("should return a list of context responses when two erc20OfInterest are provided for two parameters",async()=>{const a=d({abi:n.default,selectorDetails:{erc20OfInterest:["fromToken","toToken"],method:"multipleParams"}}),e=p(n.default,"multipleParams",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","0xdAC17F958D2ee523a2206206994597C13D831ec7"]);vi.spyOn(o,"getDappInfos").mockResolvedValue((0,l.Right)(a));const c=await r.load(e);expect(c).toEqual(expect.arrayContaining([{type:t.ClearSignContextType.EXTERNAL_PLUGIN,payload:"1234567890"},{type:t.ClearSignContextType.TOKEN,payload:"payload-0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},{type:t.ClearSignContextType.TOKEN,payload:"payload-0xdAC17F958D2ee523a2206206994597C13D831ec7"}]))}),it("should return a list of context responses when one erc20OfInterest is an array",async()=>{const a=d({abi:n.default,selectorDetails:{erc20OfInterest:["fromToken.0","fromToken.1","fromToken.2","fromToken.-1"],method:"arrayParam"}}),e=p(n.default,"arrayParam",[["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","0xdAC17F958D2ee523a2206206994597C13D831ec7","0xB8c77482e45F1F44dE1745F52C74426C631bDD52"]]);vi.spyOn(o,"getDappInfos").mockResolvedValue((0,l.Right)(a));const c=await r.load(e);expect(c).toEqual([{type:t.ClearSignContextType.TOKEN,payload:"payload-0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},{type:t.ClearSignContextType.TOKEN,payload:"payload-0xdAC17F958D2ee523a2206206994597C13D831ec7"},{type:t.ClearSignContextType.TOKEN,payload:"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52"},{type:t.ClearSignContextType.TOKEN,payload:"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52"},{type:t.ClearSignContextType.EXTERNAL_PLUGIN,payload:"1234567890"}])}),it("should return an error when a token datasource returns an error",async()=>{const a=d({abi:n.default,selectorDetails:{erc20OfInterest:["fromToken"],method:"singleParam"}}),e=p(n.default,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(o,"getDappInfos").mockResolvedValue((0,l.Right)(a)),vi.spyOn(s,"getTokenInfosPayload").mockResolvedValue((0,l.Left)(new Error("error")));const c=await r.load(e);expect(c).toEqual([{type:t.ClearSignContextType.ERROR,error:new Error("error")},{type:t.ClearSignContextType.EXTERNAL_PLUGIN,payload:"1234567890"}])}),it("should return an error when the abi is not conform",async()=>{const a=d({abi:[{fakeabi:"notworking"}],selectorDetails:{erc20OfInterest:["fromToken"],method:"singleParam"}}),e=p(n.default,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(o,"getDappInfos").mockResolvedValue((0,l.Right)(a));const c=await r.load(e);expect(c).toEqual([{type:t.ClearSignContextType.ERROR,error:new Error("[ContextModule] ExternalPluginContextLoader: Unable to parse abi")},{type:t.ClearSignContextType.EXTERNAL_PLUGIN,payload:"1234567890"}])}),it("should throw an error when the erc20OfInterest doest not exist in the transaction",async()=>{const a=d({abi:n.default,selectorDetails:{erc20OfInterest:["notFound"],method:"singleParam"}}),e=p(n.default,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(o,"getDappInfos").mockResolvedValue((0,l.Right)(a));const c=await r.load(e);expect(c).toEqual([{type:t.ClearSignContextType.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 a=d({abi:n.default,selectorDetails:{erc20OfInterest:["fromToken.3"],method:"arrayParam"}}),e=p(n.default,"arrayParam",[["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","0xdAC17F958D2ee523a2206206994597C13D831ec7","0xB8c77482e45F1F44dE1745F52C74426C631bDD52"]]);vi.spyOn(o,"getDappInfos").mockResolvedValue((0,l.Right)(a));const c=await r.load(e);expect(c).toEqual([{type:t.ClearSignContextType.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 a=d({abi:n.default,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"}}),e=p(n.default,"complexStructParam",[{address1:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",param1:{param2:[{param3:{addresses:["0xdAC17F958D2ee523a2206206994597C13D831ec7","0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE"]}},{param3:{addresses:["0xB8c77482e45F1F44dE1745F52C74426C631bDD52"]}}]}}]);vi.spyOn(o,"getDappInfos").mockResolvedValue((0,l.Right)(a));const c=await r.load(e);expect(c).toEqual([{type:t.ClearSignContextType.TOKEN,payload:"payload-0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},{type:t.ClearSignContextType.TOKEN,payload:"payload-0xdAC17F958D2ee523a2206206994597C13D831ec7"},{type:t.ClearSignContextType.TOKEN,payload:"payload-0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE"},{type:t.ClearSignContextType.TOKEN,payload:"payload-0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE"},{type:t.ClearSignContextType.TOKEN,payload:"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52"},{type:t.ClearSignContextType.TOKEN,payload:"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52"},{type:t.ClearSignContextType.EXTERNAL_PLUGIN,payload:"1234567890"}])}),it("should return an error when datasource return a Left",async()=>{const a=p(n.default,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(o,"getDappInfos").mockResolvedValue((0,l.Left)(new Error("error")));const e=await r.load(a);expect(e).toEqual([{type:t.ClearSignContextType.ERROR,error:new Error("error")}])}),it("should return an error when transaction data is not a valid hex string",async()=>{const a={to:"0x0",data:"notAHexString"},e=await r.load(a);expect(e).toEqual([{type:t.ClearSignContextType.ERROR,error:new Error("Invalid selector")}])})})});
1
+ "use strict";var f=Object.create;var u=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var D=Object.getPrototypeOf,I=Object.prototype.hasOwnProperty;var g=(l,o,c,r)=>{if(o&&typeof o=="object"||typeof o=="function")for(let e of b(o))!I.call(l,e)&&e!==c&&u(l,e,{get:()=>o[e],enumerable:!(r=x(o,e))||r.enumerable});return l};var h=(l,o,c)=>(c=l!=null?f(D(l)):{},g(o||!l||!l.__esModule?u(c,"default",{value:l,enumerable:!0}):c,l));var E=require("ethers"),d=require("purify-ts"),s=h(require("@/external-plugin/__tests__/abi.json")),m=require("../../external-plugin/domain/ExternalPluginContextLoader"),a=require("../../shared/model/ClearSignContext"),y=require("../../shared/utils/NullLoggerPublisherService");const i=({abi:l,selectorDetails:o})=>({abi:l,selectorDetails:{erc20OfInterest:[],method:"",plugin:"",serializedData:"123456",signature:"7890",...o}}),p=(l,o,c)=>{const e=new E.Interface(JSON.stringify(l)).encodeFunctionData(o,c);return{to:"0x0",data:e,selector:e.slice(0,10),chainId:1}};describe("ExternalPluginContextLoader",()=>{const l={getTokenInfosPayload:vi.fn()},o={getDappInfos:vi.fn()},c={canHandle:vi.fn(),load:vi.fn()},r=new m.ExternalPluginContextLoader(o,l,c,y.NullLoggerPublisherService);beforeEach(()=>{vi.clearAllMocks(),vi.spyOn(l,"getTokenInfosPayload").mockImplementation(({address:e})=>Promise.resolve((0,d.Right)(`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.ClearSignContextType.EXTERNAL_PLUGIN,a.ClearSignContextType.TOKEN])).toBe(!0)}),it("should return false for invalid expected type",()=>{expect(r.canHandle(e,[a.ClearSignContextType.NFT])).toBe(!1),expect(r.canHandle(e,[a.ClearSignContextType.TOKEN])).toBe(!1),expect(r.canHandle(e,[a.ClearSignContextType.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,n)=>{expect(r.canHandle(t,[a.ClearSignContextType.EXTERNAL_PLUGIN,a.ClearSignContextType.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,n)=>{expect(r.canHandle(t,[a.ClearSignContextType.EXTERNAL_PLUGIN,a.ClearSignContextType.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,n)=>{expect(r.canHandle(t,[a.ClearSignContextType.EXTERNAL_PLUGIN,a.ClearSignContextType.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,n)=>{expect(r.canHandle(t,[a.ClearSignContextType.EXTERNAL_PLUGIN,a.ClearSignContextType.TOKEN])).toBe(!1)})}),describe("load function",()=>{it("should return an empty array if no dapp info is provided",async()=>{const e=p(s.default,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(o,"getDappInfos").mockResolvedValue((0,d.Right)(void 0));const t=await r.load(e);expect(t).toEqual([])}),it("should return e plugin if no erc20OfInterest is provided",async()=>{const e=i({abi:s.default,selectorDetails:{erc20OfInterest:[],method:"singleParam",plugin:"TestPlugin"}}),t=p(s.default,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(o,"getDappInfos").mockResolvedValue((0,d.Right)(e));const n=await r.load(t);expect(c.canHandle).not.toHaveBeenCalled(),expect(n).toEqual([{type:a.ClearSignContextType.EXTERNAL_PLUGIN,payload:"1234567890"}])}),it("should return a list of context responses when one erc20OfInterest is provided for a single parameter",async()=>{const e=i({abi:s.default,selectorDetails:{erc20OfInterest:["fromToken"],method:"singleParam",plugin:"TestPlugin"}}),t=p(s.default,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(o,"getDappInfos").mockResolvedValue((0,d.Right)(e));const n=await r.load(t);expect(c.canHandle).not.toHaveBeenCalled(),expect(n).toEqual(expect.arrayContaining([{type:a.ClearSignContextType.EXTERNAL_PLUGIN,payload:"1234567890"},{type:a.ClearSignContextType.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=i({abi:s.default,selectorDetails:{erc20OfInterest:["fromToken"],method:"singleParam"}}),t=p(s.default,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(o,"getDappInfos").mockResolvedValue((0,d.Right)(e)),vi.spyOn(l,"getTokenInfosPayload").mockResolvedValue((0,d.Left)(Error("error")));const n=await r.load(t);expect(c.canHandle).not.toHaveBeenCalled(),expect(n).toEqual([{type:a.ClearSignContextType.ERROR,error:new Error("error")},{type:a.ClearSignContextType.EXTERNAL_PLUGIN,payload:"1234567890"}])}),it("should return a list of context responses when two erc20OfInterest are provided for two parameters",async()=>{const e=i({abi:s.default,selectorDetails:{erc20OfInterest:["fromToken","toToken"],method:"multipleParams"}}),t=p(s.default,"multipleParams",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","0xdAC17F958D2ee523a2206206994597C13D831ec7"]);vi.spyOn(o,"getDappInfos").mockResolvedValue((0,d.Right)(e));const n=await r.load(t);expect(n).toEqual(expect.arrayContaining([{type:a.ClearSignContextType.EXTERNAL_PLUGIN,payload:"1234567890"},{type:a.ClearSignContextType.TOKEN,payload:"payload-0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},{type:a.ClearSignContextType.TOKEN,payload:"payload-0xdAC17F958D2ee523a2206206994597C13D831ec7"}]))}),it("should return a list of context responses when one erc20OfInterest is an array",async()=>{const e=i({abi:s.default,selectorDetails:{erc20OfInterest:["fromToken.0","fromToken.1","fromToken.2","fromToken.-1"],method:"arrayParam"}}),t=p(s.default,"arrayParam",[["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","0xdAC17F958D2ee523a2206206994597C13D831ec7","0xB8c77482e45F1F44dE1745F52C74426C631bDD52"]]);vi.spyOn(o,"getDappInfos").mockResolvedValue((0,d.Right)(e));const n=await r.load(t);expect(n).toEqual([{type:a.ClearSignContextType.TOKEN,payload:"payload-0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},{type:a.ClearSignContextType.TOKEN,payload:"payload-0xdAC17F958D2ee523a2206206994597C13D831ec7"},{type:a.ClearSignContextType.TOKEN,payload:"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52"},{type:a.ClearSignContextType.TOKEN,payload:"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52"},{type:a.ClearSignContextType.EXTERNAL_PLUGIN,payload:"1234567890"}])}),it("should return an error when a token datasource returns an error",async()=>{const e=i({abi:s.default,selectorDetails:{erc20OfInterest:["fromToken"],method:"singleParam"}}),t=p(s.default,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(o,"getDappInfos").mockResolvedValue((0,d.Right)(e)),vi.spyOn(l,"getTokenInfosPayload").mockResolvedValue((0,d.Left)(new Error("error")));const n=await r.load(t);expect(n).toEqual([{type:a.ClearSignContextType.ERROR,error:new Error("error")},{type:a.ClearSignContextType.EXTERNAL_PLUGIN,payload:"1234567890"}])}),it("should return an error when the abi is not conform",async()=>{const e=i({abi:[{fakeabi:"notworking"}],selectorDetails:{erc20OfInterest:["fromToken"],method:"singleParam"}}),t=p(s.default,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(o,"getDappInfos").mockResolvedValue((0,d.Right)(e));const n=await r.load(t);expect(n).toEqual([{type:a.ClearSignContextType.ERROR,error:new Error("[ContextModule] ExternalPluginContextLoader: Unable to parse abi")},{type:a.ClearSignContextType.EXTERNAL_PLUGIN,payload:"1234567890"}])}),it("should throw an error when the erc20OfInterest doest not exist in the transaction",async()=>{const e=i({abi:s.default,selectorDetails:{erc20OfInterest:["notFound"],method:"singleParam"}}),t=p(s.default,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(o,"getDappInfos").mockResolvedValue((0,d.Right)(e));const n=await r.load(t);expect(n).toEqual([{type:a.ClearSignContextType.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=i({abi:s.default,selectorDetails:{erc20OfInterest:["fromToken.3"],method:"arrayParam"}}),t=p(s.default,"arrayParam",[["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","0xdAC17F958D2ee523a2206206994597C13D831ec7","0xB8c77482e45F1F44dE1745F52C74426C631bDD52"]]);vi.spyOn(o,"getDappInfos").mockResolvedValue((0,d.Right)(e));const n=await r.load(t);expect(n).toEqual([{type:a.ClearSignContextType.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=i({abi:s.default,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=p(s.default,"complexStructParam",[{address1:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",param1:{param2:[{param3:{addresses:["0xdAC17F958D2ee523a2206206994597C13D831ec7","0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE"]}},{param3:{addresses:["0xB8c77482e45F1F44dE1745F52C74426C631bDD52"]}}]}}]);vi.spyOn(o,"getDappInfos").mockResolvedValue((0,d.Right)(e));const n=await r.load(t);expect(n).toEqual([{type:a.ClearSignContextType.TOKEN,payload:"payload-0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},{type:a.ClearSignContextType.TOKEN,payload:"payload-0xdAC17F958D2ee523a2206206994597C13D831ec7"},{type:a.ClearSignContextType.TOKEN,payload:"payload-0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE"},{type:a.ClearSignContextType.TOKEN,payload:"payload-0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE"},{type:a.ClearSignContextType.TOKEN,payload:"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52"},{type:a.ClearSignContextType.TOKEN,payload:"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52"},{type:a.ClearSignContextType.EXTERNAL_PLUGIN,payload:"1234567890"}])}),it("should return a plugin with Uniswap not being able to load token",async()=>{const e=i({abi:s.default,selectorDetails:{erc20OfInterest:[],method:"singleParam",plugin:"Uniswap"}}),t=p(s.default,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(o,"getDappInfos").mockResolvedValue((0,d.Right)(e)),vi.spyOn(c,"canHandle").mockReturnValueOnce(!1);const n=await r.load(t);expect(c.canHandle).toHaveBeenCalled(),expect(c.load).not.toHaveBeenCalled(),expect(n).toEqual([{type:a.ClearSignContextType.EXTERNAL_PLUGIN,payload:"1234567890"}])}),it("should return a plugin with Uniswap extracted tokens",async()=>{const e=i({abi:s.default,selectorDetails:{erc20OfInterest:[],method:"singleParam",plugin:"Uniswap"}}),t=p(s.default,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(o,"getDappInfos").mockResolvedValue((0,d.Right)(e)),vi.spyOn(c,"canHandle").mockReturnValueOnce(!0),vi.spyOn(c,"load").mockResolvedValue([{type:a.ClearSignContextType.TOKEN,payload:"payload-0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE"},{type:a.ClearSignContextType.TOKEN,payload:"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52"}]);const n=await r.load(t);expect(c.canHandle).toHaveBeenCalled(),expect(c.load).toHaveBeenCalled(),expect(n).toEqual([{type:a.ClearSignContextType.EXTERNAL_PLUGIN,payload:"1234567890"},{type:a.ClearSignContextType.TOKEN,payload:"payload-0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE"},{type:a.ClearSignContextType.TOKEN,payload:"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52"}])}),it("should return an error when datasource return a Left",async()=>{const e=p(s.default,"singleParam",["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]);vi.spyOn(o,"getDappInfos").mockResolvedValue((0,d.Left)(new Error("error")));const t=await r.load(e);expect(t).toEqual([{type:a.ClearSignContextType.ERROR,error:new Error("error")}])})})});
2
2
  //# sourceMappingURL=ExternalPluginContextLoader.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/external-plugin/domain/ExternalPluginContextLoader.test.ts"],
4
- "sourcesContent": ["import { Interface } from \"ethers\";\nimport { Left, Right } from \"purify-ts\";\n\nimport ABI from \"@/external-plugin/__tests__/abi.json\";\nimport { type ExternalPluginDataSource } from \"@/external-plugin/data/ExternalPluginDataSource\";\nimport { ExternalPluginContextLoader } from \"@/external-plugin/domain/ExternalPluginContextLoader\";\nimport { type DappInfos } from \"@/external-plugin/model/DappInfos\";\nimport { type SelectorDetails } from \"@/external-plugin/model/SelectorDetails\";\nimport { ClearSignContextType } from \"@/shared/model/ClearSignContext\";\nimport { type TransactionContext } from \"@/shared/model/TransactionContext\";\nimport { type TokenDataSource } from \"@/token/data/TokenDataSource\";\n\nconst dappInfosBuilder = ({\n abi,\n selectorDetails,\n}: {\n abi?: object[];\n selectorDetails?: Partial<SelectorDetails>;\n}) => {\n return {\n abi: abi,\n selectorDetails: {\n erc20OfInterest: [],\n method: \"\",\n plugin: \"\",\n serializedData: \"123456\",\n signature: \"7890\",\n ...selectorDetails,\n },\n } as DappInfos;\n};\n\nconst transactionBuilder = (\n abi: object,\n functionName: string,\n params: unknown[],\n): TransactionContext => {\n const contract = new Interface(JSON.stringify(abi));\n const data = contract.encodeFunctionData(functionName, params);\n return {\n to: \"0x0\",\n data,\n selector: data.slice(0, 10),\n } as TransactionContext;\n};\n\ndescribe(\"ExternalPluginContextLoader\", () => {\n const mockTokenDataSource: TokenDataSource = {\n getTokenInfosPayload: vi.fn(),\n };\n const mockExternalPluginDataSource: ExternalPluginDataSource = {\n getDappInfos: vi.fn(),\n };\n const loader = new ExternalPluginContextLoader(\n mockExternalPluginDataSource,\n mockTokenDataSource,\n );\n\n beforeEach(() => {\n vi.clearAllMocks();\n vi.spyOn(mockTokenDataSource, \"getTokenInfosPayload\").mockImplementation(\n ({ address }) => Promise.resolve(Right(`payload-${address}`)),\n );\n });\n\n describe(\"load function\", () => {\n it(\"should return an empty array if no destination address is provided\", async () => {\n // GIVEN\n const transaction = {} as TransactionContext;\n\n // WHEN\n const promise = () => loader.load(transaction);\n\n // THEN\n await expect(promise()).resolves.toEqual([]);\n });\n\n it(\"should return an empty array if no data provided\", async () => {\n // GIVEN\n const transaction = {\n to: \"0x0\",\n data: \"0x\",\n selector: \"0x0\",\n } as TransactionContext;\n\n // WHEN\n const result = await loader.load(transaction);\n\n // THEN\n expect(result).toEqual([]);\n });\n\n it(\"should return an empty array if no dapp info is povided\", async () => {\n // GIVEN\n const transaction = transactionBuilder(ABI, \"singleParam\", [\n \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n ]);\n vi.spyOn(mockExternalPluginDataSource, \"getDappInfos\").mockResolvedValue(\n Right(undefined),\n );\n\n // WHEN\n const result = await loader.load(transaction);\n\n // THEN\n expect(result).toEqual([]);\n });\n\n it(\"should return e plugin if no erc20OfInterest is provided\", async () => {\n // GIVEN\n const dappInfos = dappInfosBuilder({\n abi: ABI,\n selectorDetails: {\n erc20OfInterest: [],\n method: \"singleParam\",\n },\n });\n const transaction = transactionBuilder(ABI, \"singleParam\", [\n \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n ]);\n vi.spyOn(mockExternalPluginDataSource, \"getDappInfos\").mockResolvedValue(\n Right(dappInfos),\n );\n\n // WHEN\n const result = await loader.load(transaction);\n\n // THEN\n expect(result).toEqual([\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload: \"1234567890\",\n },\n ]);\n });\n\n it(\"should return a list of context responses when one erc20OfInterest is provided for a single parameter\", async () => {\n // GIVEN\n const dappInfos = dappInfosBuilder({\n abi: ABI,\n selectorDetails: {\n erc20OfInterest: [\"fromToken\"],\n method: \"singleParam\",\n },\n });\n const transaction = transactionBuilder(ABI, \"singleParam\", [\n \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n ]);\n vi.spyOn(mockExternalPluginDataSource, \"getDappInfos\").mockResolvedValue(\n Right(dappInfos),\n );\n\n // WHEN\n const result = await loader.load(transaction);\n\n // THEN\n expect(result).toEqual(\n expect.arrayContaining([\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload: \"1234567890\",\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n },\n ]),\n );\n });\n\n 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 () => {\n // GIVEN\n const dappInfos = dappInfosBuilder({\n abi: ABI,\n selectorDetails: {\n erc20OfInterest: [\"fromToken\"],\n method: \"singleParam\",\n },\n });\n const transaction = transactionBuilder(ABI, \"singleParam\", [\n \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n ]);\n vi.spyOn(mockExternalPluginDataSource, \"getDappInfos\").mockResolvedValue(\n Right(dappInfos),\n );\n vi.spyOn(mockTokenDataSource, \"getTokenInfosPayload\").mockResolvedValue(\n Left(Error(\"error\")),\n );\n\n // WHEN\n const result = await loader.load(transaction);\n\n // THEN\n expect(result).toEqual([\n {\n type: ClearSignContextType.ERROR,\n error: new Error(\"error\"),\n },\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload: \"1234567890\",\n },\n ]);\n });\n\n it(\"should return a list of context responses when two erc20OfInterest are provided for two parameters\", async () => {\n // GIVEN\n const dappInfos = dappInfosBuilder({\n abi: ABI,\n selectorDetails: {\n erc20OfInterest: [\"fromToken\", \"toToken\"],\n method: \"multipleParams\",\n },\n });\n const transaction = transactionBuilder(ABI, \"multipleParams\", [\n \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"0xdAC17F958D2ee523a2206206994597C13D831ec7\",\n ]);\n vi.spyOn(mockExternalPluginDataSource, \"getDappInfos\").mockResolvedValue(\n Right(dappInfos),\n );\n\n // WHEN\n const result = await loader.load(transaction);\n\n // THEN\n expect(result).toEqual(\n expect.arrayContaining([\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload: \"1234567890\",\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0xdAC17F958D2ee523a2206206994597C13D831ec7\",\n },\n ]),\n );\n });\n\n it(\"should return a list of context responses when one erc20OfInterest is an array\", async () => {\n // GIVEN\n const dappInfos = dappInfosBuilder({\n abi: ABI,\n selectorDetails: {\n erc20OfInterest: [\n \"fromToken.0\",\n \"fromToken.1\",\n \"fromToken.2\",\n \"fromToken.-1\",\n ],\n method: \"arrayParam\",\n },\n });\n const transaction = transactionBuilder(ABI, \"arrayParam\", [\n [\n \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"0xdAC17F958D2ee523a2206206994597C13D831ec7\",\n \"0xB8c77482e45F1F44dE1745F52C74426C631bDD52\",\n ],\n ]);\n vi.spyOn(mockExternalPluginDataSource, \"getDappInfos\").mockResolvedValue(\n Right(dappInfos),\n );\n\n // WHEN\n const result = await loader.load(transaction);\n\n // THEN\n expect(result).toEqual([\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0xdAC17F958D2ee523a2206206994597C13D831ec7\",\n },\n // fromToken.2\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52\",\n },\n // fromToken.-1\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52\",\n },\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload: \"1234567890\",\n },\n ]);\n });\n\n it(\"should return an error when a token datasource returns an error\", async () => {\n // GIVEN\n const dappInfos = dappInfosBuilder({\n abi: ABI,\n selectorDetails: {\n erc20OfInterest: [\"fromToken\"],\n method: \"singleParam\",\n },\n });\n const transaction = transactionBuilder(ABI, \"singleParam\", [\n \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n ]);\n vi.spyOn(mockExternalPluginDataSource, \"getDappInfos\").mockResolvedValue(\n Right(dappInfos),\n );\n vi.spyOn(mockTokenDataSource, \"getTokenInfosPayload\").mockResolvedValue(\n Left(new Error(\"error\")),\n );\n\n // WHEN\n const result = await loader.load(transaction);\n\n // THEN\n expect(result).toEqual([\n {\n type: ClearSignContextType.ERROR,\n error: new Error(\"error\"),\n },\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload: \"1234567890\",\n },\n ]);\n });\n\n it(\"should return an error when the abi is not conform\", async () => {\n // GIVEN\n const dappInfos = dappInfosBuilder({\n abi: [{ fakeabi: \"notworking\" }],\n selectorDetails: {\n erc20OfInterest: [\"fromToken\"],\n method: \"singleParam\",\n },\n });\n const transaction = transactionBuilder(ABI, \"singleParam\", [\n \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n ]);\n vi.spyOn(mockExternalPluginDataSource, \"getDappInfos\").mockResolvedValue(\n Right(dappInfos),\n );\n\n // WHEN\n const result = await loader.load(transaction);\n\n // THEN\n expect(result).toEqual([\n {\n type: ClearSignContextType.ERROR,\n error: new Error(\n \"[ContextModule] ExternalPluginContextLoader: Unable to parse abi\",\n ),\n },\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload: \"1234567890\",\n },\n ]);\n });\n\n it(\"should throw an error when the erc20OfInterest doest not exist in the transaction\", async () => {\n // GIVEN\n const dappInfos = dappInfosBuilder({\n abi: ABI,\n selectorDetails: {\n erc20OfInterest: [\"notFound\"],\n method: \"singleParam\",\n },\n });\n const transaction = transactionBuilder(ABI, \"singleParam\", [\n \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n ]);\n vi.spyOn(mockExternalPluginDataSource, \"getDappInfos\").mockResolvedValue(\n Right(dappInfos),\n );\n\n // WHEN\n const result = await loader.load(transaction);\n\n // THEN\n expect(result).toEqual([\n {\n type: ClearSignContextType.ERROR,\n error: new Error(\n \"[ContextModule] ExternalPluginContextLoader: Unable to get address\",\n ),\n },\n ]);\n });\n\n it(\"should throw an error when an out-of-bounds element is present in erc20OfInterest\", async () => {\n // GIVEN\n const dappInfos = dappInfosBuilder({\n abi: ABI,\n selectorDetails: {\n erc20OfInterest: [\"fromToken.3\"],\n method: \"arrayParam\",\n },\n });\n const transaction = transactionBuilder(ABI, \"arrayParam\", [\n [\n \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"0xdAC17F958D2ee523a2206206994597C13D831ec7\",\n \"0xB8c77482e45F1F44dE1745F52C74426C631bDD52\",\n ],\n ]);\n vi.spyOn(mockExternalPluginDataSource, \"getDappInfos\").mockResolvedValue(\n Right(dappInfos),\n );\n\n // WHEN\n const result = await loader.load(transaction);\n\n // THEN\n expect(result).toEqual([\n {\n type: ClearSignContextType.ERROR,\n error: new RangeError(\"out of result range\"),\n },\n ]);\n });\n\n it(\"should return a list of context responses when one erc20OfInterest is a complex struct\", async () => {\n // GIVEN\n const dappInfos = dappInfosBuilder({\n abi: ABI,\n selectorDetails: {\n erc20OfInterest: [\n \"complexStruct.address1\",\n \"complexStruct.param1.param2.0.param3.addresses.0\",\n \"complexStruct.param1.param2.0.param3.addresses.1\",\n \"complexStruct.param1.param2.0.param3.addresses.-1\",\n \"complexStruct.param1.param2.1.param3.addresses.0\",\n \"complexStruct.param1.param2.-1.param3.addresses.0\",\n ],\n method: \"complexStructParam\",\n },\n });\n const transaction = transactionBuilder(ABI, \"complexStructParam\", [\n {\n address1: \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n param1: {\n param2: [\n {\n param3: {\n addresses: [\n \"0xdAC17F958D2ee523a2206206994597C13D831ec7\",\n \"0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE\",\n ],\n },\n },\n {\n param3: {\n addresses: [\"0xB8c77482e45F1F44dE1745F52C74426C631bDD52\"],\n },\n },\n ],\n },\n },\n ]);\n vi.spyOn(mockExternalPluginDataSource, \"getDappInfos\").mockResolvedValue(\n Right(dappInfos),\n );\n\n // WHEN\n const result = await loader.load(transaction);\n\n // THEN\n expect(result).toEqual([\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0xdAC17F958D2ee523a2206206994597C13D831ec7\",\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE\",\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE\",\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52\",\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52\",\n },\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload: \"1234567890\",\n },\n ]);\n });\n\n it(\"should return an error when datasource return a Left\", async () => {\n // GIVEN\n const transaction = transactionBuilder(ABI, \"singleParam\", [\n \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n ]);\n vi.spyOn(mockExternalPluginDataSource, \"getDappInfos\").mockResolvedValue(\n Left(new Error(\"error\")),\n );\n\n // WHEN\n const result = await loader.load(transaction);\n\n // THEN\n expect(result).toEqual([\n {\n type: ClearSignContextType.ERROR,\n error: new Error(\"error\"),\n },\n ]);\n });\n\n it(\"should return an error when transaction data is not a valid hex string\", async () => {\n // GIVEN\n const transaction = {\n to: \"0x0\",\n data: \"notAHexString\",\n } as TransactionContext;\n\n // WHEN\n const result = await loader.load(transaction);\n\n // THEN\n expect(result).toEqual([\n {\n type: ClearSignContextType.ERROR,\n error: new Error(\"Invalid selector\"),\n },\n ]);\n });\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["import_ethers", "import_purify_ts", "import_abi", "import_ExternalPluginContextLoader", "import_ClearSignContext", "dappInfosBuilder", "abi", "selectorDetails", "transactionBuilder", "functionName", "params", "data", "mockTokenDataSource", "mockExternalPluginDataSource", "loader", "address", "transaction", "promise", "result", "ABI", "dappInfos"]
4
+ "sourcesContent": ["import { Interface } from \"ethers\";\nimport { Left, Right } from \"purify-ts\";\n\nimport ABI from \"@/external-plugin/__tests__/abi.json\";\nimport { type ExternalPluginDataSource } from \"@/external-plugin/data/ExternalPluginDataSource\";\nimport {\n type ExternalPluginContextInput,\n ExternalPluginContextLoader,\n} from \"@/external-plugin/domain/ExternalPluginContextLoader\";\nimport { type DappInfos } from \"@/external-plugin/model/DappInfos\";\nimport { type SelectorDetails } from \"@/external-plugin/model/SelectorDetails\";\nimport { ClearSignContextType } from \"@/shared/model/ClearSignContext\";\nimport { NullLoggerPublisherService } from \"@/shared/utils/NullLoggerPublisherService\";\nimport { type TokenDataSource } from \"@/token/data/TokenDataSource\";\nimport { type UniswapContextLoader } from \"@/uniswap/domain/UniswapContextLoader\";\n\nconst dappInfosBuilder = ({\n abi,\n selectorDetails,\n}: {\n abi?: object[];\n selectorDetails?: Partial<SelectorDetails>;\n}) => {\n return {\n abi: abi,\n selectorDetails: {\n erc20OfInterest: [],\n method: \"\",\n plugin: \"\",\n serializedData: \"123456\",\n signature: \"7890\",\n ...selectorDetails,\n },\n } as DappInfos;\n};\n\nconst inputBuilder = (\n abi: object,\n functionName: string,\n params: unknown[],\n): ExternalPluginContextInput => {\n const contract = new Interface(JSON.stringify(abi));\n const data = contract.encodeFunctionData(functionName, params);\n return {\n to: \"0x0\",\n data: data as `0x${string}`,\n selector: data.slice(0, 10) as `0x${string}`,\n chainId: 1,\n };\n};\n\ndescribe(\"ExternalPluginContextLoader\", () => {\n const mockTokenDataSource: TokenDataSource = {\n getTokenInfosPayload: vi.fn(),\n };\n const mockExternalPluginDataSource: ExternalPluginDataSource = {\n getDappInfos: vi.fn(),\n };\n const mockUniswapLoader: UniswapContextLoader = {\n canHandle: vi.fn(),\n load: vi.fn(),\n } as unknown as UniswapContextLoader;\n const loader = new ExternalPluginContextLoader(\n mockExternalPluginDataSource,\n mockTokenDataSource,\n mockUniswapLoader,\n NullLoggerPublisherService,\n );\n\n beforeEach(() => {\n vi.clearAllMocks();\n vi.spyOn(mockTokenDataSource, \"getTokenInfosPayload\").mockImplementation(\n ({ address }) => Promise.resolve(Right(`payload-${address}`)),\n );\n });\n\n describe(\"canHandle function\", () => {\n const validInput: ExternalPluginContextInput = {\n to: \"0x1234567890123456789012345678901234567890\",\n data: \"0x095ea7b30000000000000000000000001234567890123456789012345678901234567890\",\n selector: \"0x095ea7b3\",\n chainId: 1,\n };\n\n it(\"should return true for valid input\", () => {\n expect(\n loader.canHandle(validInput, [\n ClearSignContextType.EXTERNAL_PLUGIN,\n ClearSignContextType.TOKEN,\n ]),\n ).toBe(true);\n });\n\n it(\"should return false for invalid expected type\", () => {\n expect(loader.canHandle(validInput, [ClearSignContextType.NFT])).toBe(\n false,\n );\n expect(loader.canHandle(validInput, [ClearSignContextType.TOKEN])).toBe(\n false,\n );\n expect(\n loader.canHandle(validInput, [ClearSignContextType.EXTERNAL_PLUGIN]),\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.EXTERNAL_PLUGIN,\n ClearSignContextType.TOKEN,\n ]),\n ).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 ])(\"should return false for %s\", (input, _description) => {\n expect(\n loader.canHandle(input, [\n ClearSignContextType.EXTERNAL_PLUGIN,\n ClearSignContextType.TOKEN,\n ]),\n ).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, data: \"0x\" }, \"empty data (0x)\"],\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(\n loader.canHandle(input, [\n ClearSignContextType.EXTERNAL_PLUGIN,\n ClearSignContextType.TOKEN,\n ]),\n ).toBe(false);\n });\n\n it.each([\n [{ ...validInput, chainId: \"1\" }, \"string chainId\"],\n [{ ...validInput, chainId: null }, \"null chainId\"],\n [{ ...validInput, chainId: undefined }, \"undefined chainId\"],\n ])(\"should return false for %s\", (input, _description) => {\n expect(\n loader.canHandle(input, [\n ClearSignContextType.EXTERNAL_PLUGIN,\n ClearSignContextType.TOKEN,\n ]),\n ).toBe(false);\n });\n });\n\n describe(\"load function\", () => {\n it(\"should return an empty array if no dapp info is provided\", async () => {\n // GIVEN\n const input = inputBuilder(ABI, \"singleParam\", [\n \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n ]);\n vi.spyOn(mockExternalPluginDataSource, \"getDappInfos\").mockResolvedValue(\n Right(undefined),\n );\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(result).toEqual([]);\n });\n\n it(\"should return e plugin if no erc20OfInterest is provided\", async () => {\n // GIVEN\n const dappInfos = dappInfosBuilder({\n abi: ABI,\n selectorDetails: {\n erc20OfInterest: [],\n method: \"singleParam\",\n plugin: \"TestPlugin\",\n },\n });\n const input = inputBuilder(ABI, \"singleParam\", [\n \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n ]);\n vi.spyOn(mockExternalPluginDataSource, \"getDappInfos\").mockResolvedValue(\n Right(dappInfos),\n );\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(mockUniswapLoader.canHandle).not.toHaveBeenCalled();\n expect(result).toEqual([\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload: \"1234567890\",\n },\n ]);\n });\n\n it(\"should return a list of context responses when one erc20OfInterest is provided for a single parameter\", async () => {\n // GIVEN\n const dappInfos = dappInfosBuilder({\n abi: ABI,\n selectorDetails: {\n erc20OfInterest: [\"fromToken\"],\n method: \"singleParam\",\n plugin: \"TestPlugin\",\n },\n });\n const input = inputBuilder(ABI, \"singleParam\", [\n \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n ]);\n vi.spyOn(mockExternalPluginDataSource, \"getDappInfos\").mockResolvedValue(\n Right(dappInfos),\n );\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(mockUniswapLoader.canHandle).not.toHaveBeenCalled();\n expect(result).toEqual(\n expect.arrayContaining([\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload: \"1234567890\",\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n },\n ]),\n );\n });\n\n 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 () => {\n // GIVEN\n const dappInfos = dappInfosBuilder({\n abi: ABI,\n selectorDetails: {\n erc20OfInterest: [\"fromToken\"],\n method: \"singleParam\",\n },\n });\n const input = inputBuilder(ABI, \"singleParam\", [\n \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n ]);\n vi.spyOn(mockExternalPluginDataSource, \"getDappInfos\").mockResolvedValue(\n Right(dappInfos),\n );\n vi.spyOn(mockTokenDataSource, \"getTokenInfosPayload\").mockResolvedValue(\n Left(Error(\"error\")),\n );\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(mockUniswapLoader.canHandle).not.toHaveBeenCalled();\n expect(result).toEqual([\n {\n type: ClearSignContextType.ERROR,\n error: new Error(\"error\"),\n },\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload: \"1234567890\",\n },\n ]);\n });\n\n it(\"should return a list of context responses when two erc20OfInterest are provided for two parameters\", async () => {\n // GIVEN\n const dappInfos = dappInfosBuilder({\n abi: ABI,\n selectorDetails: {\n erc20OfInterest: [\"fromToken\", \"toToken\"],\n method: \"multipleParams\",\n },\n });\n const input = inputBuilder(ABI, \"multipleParams\", [\n \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"0xdAC17F958D2ee523a2206206994597C13D831ec7\",\n ]);\n vi.spyOn(mockExternalPluginDataSource, \"getDappInfos\").mockResolvedValue(\n Right(dappInfos),\n );\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(result).toEqual(\n expect.arrayContaining([\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload: \"1234567890\",\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0xdAC17F958D2ee523a2206206994597C13D831ec7\",\n },\n ]),\n );\n });\n\n it(\"should return a list of context responses when one erc20OfInterest is an array\", async () => {\n // GIVEN\n const dappInfos = dappInfosBuilder({\n abi: ABI,\n selectorDetails: {\n erc20OfInterest: [\n \"fromToken.0\",\n \"fromToken.1\",\n \"fromToken.2\",\n \"fromToken.-1\",\n ],\n method: \"arrayParam\",\n },\n });\n const input = inputBuilder(ABI, \"arrayParam\", [\n [\n \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"0xdAC17F958D2ee523a2206206994597C13D831ec7\",\n \"0xB8c77482e45F1F44dE1745F52C74426C631bDD52\",\n ],\n ]);\n vi.spyOn(mockExternalPluginDataSource, \"getDappInfos\").mockResolvedValue(\n Right(dappInfos),\n );\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(result).toEqual([\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0xdAC17F958D2ee523a2206206994597C13D831ec7\",\n },\n // fromToken.2\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52\",\n },\n // fromToken.-1\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52\",\n },\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload: \"1234567890\",\n },\n ]);\n });\n\n it(\"should return an error when a token datasource returns an error\", async () => {\n // GIVEN\n const dappInfos = dappInfosBuilder({\n abi: ABI,\n selectorDetails: {\n erc20OfInterest: [\"fromToken\"],\n method: \"singleParam\",\n },\n });\n const input = inputBuilder(ABI, \"singleParam\", [\n \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n ]);\n vi.spyOn(mockExternalPluginDataSource, \"getDappInfos\").mockResolvedValue(\n Right(dappInfos),\n );\n vi.spyOn(mockTokenDataSource, \"getTokenInfosPayload\").mockResolvedValue(\n Left(new Error(\"error\")),\n );\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(result).toEqual([\n {\n type: ClearSignContextType.ERROR,\n error: new Error(\"error\"),\n },\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload: \"1234567890\",\n },\n ]);\n });\n\n it(\"should return an error when the abi is not conform\", async () => {\n // GIVEN\n const dappInfos = dappInfosBuilder({\n abi: [{ fakeabi: \"notworking\" }],\n selectorDetails: {\n erc20OfInterest: [\"fromToken\"],\n method: \"singleParam\",\n },\n });\n const input = inputBuilder(ABI, \"singleParam\", [\n \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n ]);\n vi.spyOn(mockExternalPluginDataSource, \"getDappInfos\").mockResolvedValue(\n Right(dappInfos),\n );\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(result).toEqual([\n {\n type: ClearSignContextType.ERROR,\n error: new Error(\n \"[ContextModule] ExternalPluginContextLoader: Unable to parse abi\",\n ),\n },\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload: \"1234567890\",\n },\n ]);\n });\n\n it(\"should throw an error when the erc20OfInterest doest not exist in the transaction\", async () => {\n // GIVEN\n const dappInfos = dappInfosBuilder({\n abi: ABI,\n selectorDetails: {\n erc20OfInterest: [\"notFound\"],\n method: \"singleParam\",\n },\n });\n const input = inputBuilder(ABI, \"singleParam\", [\n \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n ]);\n vi.spyOn(mockExternalPluginDataSource, \"getDappInfos\").mockResolvedValue(\n Right(dappInfos),\n );\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(result).toEqual([\n {\n type: ClearSignContextType.ERROR,\n error: new Error(\n \"[ContextModule] ExternalPluginContextLoader: Unable to get address\",\n ),\n },\n ]);\n });\n\n it(\"should throw an error when an out-of-bounds element is present in erc20OfInterest\", async () => {\n // GIVEN\n const dappInfos = dappInfosBuilder({\n abi: ABI,\n selectorDetails: {\n erc20OfInterest: [\"fromToken.3\"],\n method: \"arrayParam\",\n },\n });\n const input = inputBuilder(ABI, \"arrayParam\", [\n [\n \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"0xdAC17F958D2ee523a2206206994597C13D831ec7\",\n \"0xB8c77482e45F1F44dE1745F52C74426C631bDD52\",\n ],\n ]);\n vi.spyOn(mockExternalPluginDataSource, \"getDappInfos\").mockResolvedValue(\n Right(dappInfos),\n );\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(result).toEqual([\n {\n type: ClearSignContextType.ERROR,\n error: new RangeError(\"out of result range\"),\n },\n ]);\n });\n\n it(\"should return a list of context responses when one erc20OfInterest is a complex struct\", async () => {\n // GIVEN\n const dappInfos = dappInfosBuilder({\n abi: ABI,\n selectorDetails: {\n erc20OfInterest: [\n \"complexStruct.address1\",\n \"complexStruct.param1.param2.0.param3.addresses.0\",\n \"complexStruct.param1.param2.0.param3.addresses.1\",\n \"complexStruct.param1.param2.0.param3.addresses.-1\",\n \"complexStruct.param1.param2.1.param3.addresses.0\",\n \"complexStruct.param1.param2.-1.param3.addresses.0\",\n ],\n method: \"complexStructParam\",\n },\n });\n const input = inputBuilder(ABI, \"complexStructParam\", [\n {\n address1: \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n param1: {\n param2: [\n {\n param3: {\n addresses: [\n \"0xdAC17F958D2ee523a2206206994597C13D831ec7\",\n \"0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE\",\n ],\n },\n },\n {\n param3: {\n addresses: [\"0xB8c77482e45F1F44dE1745F52C74426C631bDD52\"],\n },\n },\n ],\n },\n },\n ]);\n vi.spyOn(mockExternalPluginDataSource, \"getDappInfos\").mockResolvedValue(\n Right(dappInfos),\n );\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(result).toEqual([\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0xdAC17F958D2ee523a2206206994597C13D831ec7\",\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE\",\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE\",\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52\",\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52\",\n },\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload: \"1234567890\",\n },\n ]);\n });\n\n it(\"should return a plugin with Uniswap not being able to load token\", async () => {\n // GIVEN\n const dappInfos = dappInfosBuilder({\n abi: ABI,\n selectorDetails: {\n erc20OfInterest: [],\n method: \"singleParam\",\n plugin: \"Uniswap\",\n },\n });\n const input = inputBuilder(ABI, \"singleParam\", [\n \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n ]);\n vi.spyOn(mockExternalPluginDataSource, \"getDappInfos\").mockResolvedValue(\n Right(dappInfos),\n );\n vi.spyOn(mockUniswapLoader, \"canHandle\").mockReturnValueOnce(false);\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(mockUniswapLoader.canHandle).toHaveBeenCalled();\n expect(mockUniswapLoader.load).not.toHaveBeenCalled();\n expect(result).toEqual([\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload: \"1234567890\",\n },\n ]);\n });\n\n it(\"should return a plugin with Uniswap extracted tokens\", async () => {\n // GIVEN\n const dappInfos = dappInfosBuilder({\n abi: ABI,\n selectorDetails: {\n erc20OfInterest: [],\n method: \"singleParam\",\n plugin: \"Uniswap\",\n },\n });\n const input = inputBuilder(ABI, \"singleParam\", [\n \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n ]);\n vi.spyOn(mockExternalPluginDataSource, \"getDappInfos\").mockResolvedValue(\n Right(dappInfos),\n );\n vi.spyOn(mockUniswapLoader, \"canHandle\").mockReturnValueOnce(true);\n vi.spyOn(mockUniswapLoader, \"load\").mockResolvedValue([\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE\",\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52\",\n },\n ]);\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(mockUniswapLoader.canHandle).toHaveBeenCalled();\n expect(mockUniswapLoader.load).toHaveBeenCalled();\n expect(result).toEqual([\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload: \"1234567890\",\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE\",\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-0xB8c77482e45F1F44dE1745F52C74426C631bDD52\",\n },\n ]);\n });\n\n it(\"should return an error when datasource return a Left\", async () => {\n // GIVEN\n const input = inputBuilder(ABI, \"singleParam\", [\n \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n ]);\n vi.spyOn(mockExternalPluginDataSource, \"getDappInfos\").mockResolvedValue(\n Left(new Error(\"error\")),\n );\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(result).toEqual([\n {\n type: ClearSignContextType.ERROR,\n error: new Error(\"error\"),\n },\n ]);\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["import_ethers", "import_purify_ts", "import_abi", "import_ExternalPluginContextLoader", "import_ClearSignContext", "import_NullLoggerPublisherService", "dappInfosBuilder", "abi", "selectorDetails", "inputBuilder", "functionName", "params", "data", "mockTokenDataSource", "mockExternalPluginDataSource", "mockUniswapLoader", "loader", "address", "validInput", "input", "_description", "ABI", "result", "dappInfos"]
7
7
  }