@ledgerhq/context-module 1.14.1 → 1.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (414) hide show
  1. package/README.md +10 -0
  2. package/lib/cjs/package.json +2 -2
  3. package/lib/cjs/src/ContextModule.js +1 -1
  4. package/lib/cjs/src/ContextModule.js.map +1 -1
  5. package/lib/cjs/src/ContextModuleBuilder.js +1 -1
  6. package/lib/cjs/src/ContextModuleBuilder.js.map +3 -3
  7. package/lib/cjs/src/ContextModuleBuilder.test.js +1 -1
  8. package/lib/cjs/src/ContextModuleBuilder.test.js.map +3 -3
  9. package/lib/cjs/src/DefaultContextModule.js +1 -1
  10. package/lib/cjs/src/DefaultContextModule.js.map +3 -3
  11. package/lib/cjs/src/DefaultContextModule.test.js +1 -1
  12. package/lib/cjs/src/DefaultContextModule.test.js.map +2 -2
  13. package/lib/cjs/src/calldata/data/HttpCalldataDescriptorDataSource.js +1 -1
  14. package/lib/cjs/src/calldata/data/HttpCalldataDescriptorDataSource.js.map +2 -2
  15. package/lib/cjs/src/calldata/data/HttpCalldataDescriptorDataSource.test.js.map +1 -1
  16. package/lib/cjs/src/config/di/configModuleFactory.js +1 -1
  17. package/lib/cjs/src/config/di/configModuleFactory.js.map +2 -2
  18. package/lib/cjs/src/config/model/ContextModuleConfig.js +1 -1
  19. package/lib/cjs/src/config/model/ContextModuleConfig.js.map +1 -1
  20. package/lib/cjs/src/di.js +1 -1
  21. package/lib/cjs/src/di.js.map +3 -3
  22. package/lib/cjs/src/dynamic-network/data/HttpDynamicNetworkDataSource.js +1 -1
  23. package/lib/cjs/src/dynamic-network/data/HttpDynamicNetworkDataSource.js.map +2 -2
  24. package/lib/cjs/src/dynamic-network/data/HttpDynamicNetworkDataSource.test.js.map +2 -2
  25. package/lib/cjs/src/dynamic-network/domain/DynamicNetworkContextLoader.js +1 -1
  26. package/lib/cjs/src/dynamic-network/domain/DynamicNetworkContextLoader.js.map +3 -3
  27. package/lib/cjs/src/dynamic-network/domain/DynamicNetworkContextLoader.test.js.map +1 -1
  28. package/lib/cjs/src/external-plugin/data/HttpExternalPluginDataSource.js +1 -1
  29. package/lib/cjs/src/external-plugin/data/HttpExternalPluginDataSource.js.map +2 -2
  30. package/lib/cjs/src/external-plugin/data/HttpExternalPluginDataSource.test.js +1 -1
  31. package/lib/cjs/src/external-plugin/data/HttpExternalPluginDataSource.test.js.map +1 -1
  32. package/lib/cjs/src/gated-signing/data/GatedDescriptorDataSource.js +2 -0
  33. package/lib/cjs/src/gated-signing/data/GatedDescriptorDataSource.js.map +7 -0
  34. package/lib/cjs/src/gated-signing/data/HttpGatedDescriptorDataSource.js +2 -0
  35. package/lib/cjs/src/gated-signing/data/HttpGatedDescriptorDataSource.js.map +7 -0
  36. package/lib/cjs/src/gated-signing/data/HttpGatedDescriptorDataSource.test.js +2 -0
  37. package/lib/cjs/src/gated-signing/data/HttpGatedDescriptorDataSource.test.js.map +7 -0
  38. package/lib/cjs/src/gated-signing/data/dto/GatedDappsDto.js +2 -0
  39. package/lib/cjs/src/gated-signing/data/dto/GatedDappsDto.js.map +7 -0
  40. package/lib/cjs/src/gated-signing/di/gatedSigningModuleFactory.js +2 -0
  41. package/lib/cjs/src/gated-signing/di/gatedSigningModuleFactory.js.map +7 -0
  42. package/lib/cjs/src/gated-signing/di/gatedSigningTypes.js +2 -0
  43. package/lib/cjs/src/gated-signing/di/gatedSigningTypes.js.map +7 -0
  44. package/lib/cjs/src/gated-signing/domain/GatedSigningContextLoader.js +2 -0
  45. package/lib/cjs/src/gated-signing/domain/GatedSigningContextLoader.js.map +7 -0
  46. package/lib/cjs/src/gated-signing/domain/GatedSigningContextLoader.test.js +2 -0
  47. package/lib/cjs/src/gated-signing/domain/GatedSigningContextLoader.test.js.map +7 -0
  48. package/lib/cjs/src/gated-signing/domain/GatedSigningTypedDataContextLoader.js +2 -0
  49. package/lib/cjs/src/gated-signing/domain/GatedSigningTypedDataContextLoader.js.map +7 -0
  50. package/lib/cjs/src/gated-signing/domain/GatedSigningTypedDataContextLoader.test.js +2 -0
  51. package/lib/cjs/src/gated-signing/domain/GatedSigningTypedDataContextLoader.test.js.map +7 -0
  52. package/lib/cjs/src/index.js +1 -1
  53. package/lib/cjs/src/index.js.map +2 -2
  54. package/lib/cjs/src/nft/data/HttpNftDataSource.js +1 -1
  55. package/lib/cjs/src/nft/data/HttpNftDataSource.js.map +2 -2
  56. package/lib/cjs/src/nft/data/HttpNftDataSource.test.js +1 -1
  57. package/lib/cjs/src/nft/data/HttpNftDataSource.test.js.map +1 -1
  58. package/lib/cjs/src/pki/data/HttpPkiCertificateDataSource.js +1 -1
  59. package/lib/cjs/src/pki/data/HttpPkiCertificateDataSource.js.map +2 -2
  60. package/lib/cjs/src/pki/data/HttpPkiCertificateDataSource.test.js.map +1 -1
  61. package/lib/cjs/src/pki/model/KeyId.js +1 -1
  62. package/lib/cjs/src/pki/model/KeyId.js.map +2 -2
  63. package/lib/cjs/src/pki/model/KeyUsage.js +1 -1
  64. package/lib/cjs/src/pki/model/KeyUsage.js.map +2 -2
  65. package/lib/cjs/src/proxy/data/HttpProxyDataSource.js +1 -1
  66. package/lib/cjs/src/proxy/data/HttpProxyDataSource.js.map +2 -2
  67. package/lib/cjs/src/proxy/data/HttpProxyDataSource.test.js.map +1 -1
  68. package/lib/cjs/src/proxy/data/HttpSafeProxyDataSource.js +1 -1
  69. package/lib/cjs/src/proxy/data/HttpSafeProxyDataSource.js.map +2 -2
  70. package/lib/cjs/src/proxy/data/HttpSafeProxyDataSource.test.js.map +1 -1
  71. package/lib/cjs/src/proxy/di/proxyModuleFactory.js +1 -1
  72. package/lib/cjs/src/proxy/di/proxyModuleFactory.js.map +3 -3
  73. package/lib/cjs/src/proxy/di/proxyModuleFactory.test.js +1 -1
  74. package/lib/cjs/src/proxy/di/proxyModuleFactory.test.js.map +2 -2
  75. package/lib/cjs/src/reporter/data/BlindSigningReporterDatasource.js +2 -0
  76. package/lib/cjs/src/reporter/data/BlindSigningReporterDatasource.js.map +7 -0
  77. package/lib/cjs/src/reporter/data/HttpBlindSigningReporterDatasource.js +2 -0
  78. package/lib/cjs/src/reporter/data/HttpBlindSigningReporterDatasource.js.map +7 -0
  79. package/lib/cjs/src/reporter/data/HttpBlindSigningReporterDatasource.test.js +2 -0
  80. package/lib/cjs/src/reporter/data/HttpBlindSigningReporterDatasource.test.js.map +7 -0
  81. package/lib/cjs/src/reporter/data/dto/BlindSigningEventDto.js +2 -0
  82. package/lib/cjs/src/reporter/data/dto/BlindSigningEventDto.js.map +7 -0
  83. package/lib/cjs/src/reporter/di/reporterModuleFactory.js +2 -0
  84. package/lib/cjs/src/reporter/di/reporterModuleFactory.js.map +7 -0
  85. package/lib/cjs/src/reporter/di/reporterTypes.js +2 -0
  86. package/lib/cjs/src/reporter/di/reporterTypes.js.map +7 -0
  87. package/lib/cjs/src/reporter/domain/BlindSigningReporter.js +2 -0
  88. package/lib/cjs/src/reporter/domain/BlindSigningReporter.js.map +7 -0
  89. package/lib/cjs/src/reporter/domain/DefaultBlindSigningReporter.js +2 -0
  90. package/lib/cjs/src/reporter/domain/DefaultBlindSigningReporter.js.map +7 -0
  91. package/lib/cjs/src/reporter/domain/DefaultBlindSigningReporter.test.js +2 -0
  92. package/lib/cjs/src/reporter/domain/DefaultBlindSigningReporter.test.js.map +7 -0
  93. package/lib/cjs/src/reporter/model/BlindSigningEvent.js +2 -0
  94. package/lib/cjs/src/reporter/model/BlindSigningEvent.js.map +7 -0
  95. package/lib/cjs/src/reporter/model/BlindSigningModelId.js +2 -0
  96. package/lib/cjs/src/reporter/model/BlindSigningModelId.js.map +7 -0
  97. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.js +1 -1
  98. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.js.map +2 -2
  99. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.test.js +1 -1
  100. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.test.js.map +2 -2
  101. package/lib/cjs/src/shared/model/ClearSignContext.js +1 -1
  102. package/lib/cjs/src/shared/model/ClearSignContext.js.map +2 -2
  103. package/lib/cjs/src/shared/model/SolanaContextTypes.js +1 -1
  104. package/lib/cjs/src/shared/model/SolanaContextTypes.js.map +1 -1
  105. package/lib/cjs/src/shared/utils/KeyUsageMapper.js +1 -1
  106. package/lib/cjs/src/shared/utils/KeyUsageMapper.js.map +2 -2
  107. package/lib/cjs/src/shared/utils/KeyUsageMapper.test.js +1 -1
  108. package/lib/cjs/src/shared/utils/KeyUsageMapper.test.js.map +2 -2
  109. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.js +1 -1
  110. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.js.map +2 -2
  111. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js +1 -1
  112. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js.map +1 -1
  113. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.js +1 -1
  114. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.js.map +3 -3
  115. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.test.js +1 -1
  116. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.test.js.map +1 -1
  117. package/lib/cjs/src/solana/domain/solanaContextTypes.js.map +1 -1
  118. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.js +1 -1
  119. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.js.map +3 -3
  120. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js +1 -1
  121. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js.map +3 -3
  122. package/lib/cjs/src/solanaLifi/data/SolanaLifiDataSource.js +1 -1
  123. package/lib/cjs/src/solanaLifi/data/SolanaLifiDataSource.js.map +1 -1
  124. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.js +1 -1
  125. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.js.map +3 -3
  126. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.test.js +1 -1
  127. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.test.js.map +3 -3
  128. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.js +1 -1
  129. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.js.map +2 -2
  130. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.test.js +2 -2
  131. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.test.js.map +2 -2
  132. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.js +1 -1
  133. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.js.map +2 -2
  134. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.test.js +1 -1
  135. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.test.js.map +1 -1
  136. package/lib/cjs/src/token/data/HttpTokenDataSource.js +1 -1
  137. package/lib/cjs/src/token/data/HttpTokenDataSource.js.map +2 -2
  138. package/lib/cjs/src/token/data/HttpTokenDataSource.test.js.map +1 -1
  139. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.js +1 -1
  140. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.js.map +2 -2
  141. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.test.js.map +1 -1
  142. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.js.map +2 -2
  143. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js.map +1 -1
  144. package/lib/cjs/src/trusted-name/data/HttpTrustedNameDataSource.js +1 -1
  145. package/lib/cjs/src/trusted-name/data/HttpTrustedNameDataSource.js.map +2 -2
  146. package/lib/cjs/src/trusted-name/data/HttpTrustedNameDataSource.test.js.map +1 -1
  147. package/lib/cjs/src/trusted-name/di/trustedNameModuleFactory.js +1 -1
  148. package/lib/cjs/src/trusted-name/di/trustedNameModuleFactory.js.map +3 -3
  149. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.js +1 -1
  150. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.js.map +3 -3
  151. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.test.js.map +1 -1
  152. package/lib/cjs/src/typed-data/utils/getSchemaHash.js +2 -0
  153. package/lib/cjs/src/typed-data/utils/getSchemaHash.js.map +7 -0
  154. package/lib/cjs/src/typed-data/utils/getSchemaHash.test.js +2 -0
  155. package/lib/cjs/src/typed-data/utils/getSchemaHash.test.js.map +7 -0
  156. package/lib/esm/package.json +2 -2
  157. package/lib/esm/src/ContextModuleBuilder.js +1 -1
  158. package/lib/esm/src/ContextModuleBuilder.js.map +3 -3
  159. package/lib/esm/src/ContextModuleBuilder.test.js +1 -1
  160. package/lib/esm/src/ContextModuleBuilder.test.js.map +3 -3
  161. package/lib/esm/src/DefaultContextModule.js +1 -1
  162. package/lib/esm/src/DefaultContextModule.js.map +3 -3
  163. package/lib/esm/src/DefaultContextModule.test.js +1 -1
  164. package/lib/esm/src/DefaultContextModule.test.js.map +2 -2
  165. package/lib/esm/src/calldata/data/HttpCalldataDescriptorDataSource.js +1 -1
  166. package/lib/esm/src/calldata/data/HttpCalldataDescriptorDataSource.js.map +2 -2
  167. package/lib/esm/src/calldata/data/HttpCalldataDescriptorDataSource.test.js.map +1 -1
  168. package/lib/esm/src/config/di/configModuleFactory.js +1 -1
  169. package/lib/esm/src/config/di/configModuleFactory.js.map +2 -2
  170. package/lib/esm/src/di.js +1 -1
  171. package/lib/esm/src/di.js.map +3 -3
  172. package/lib/esm/src/dynamic-network/data/HttpDynamicNetworkDataSource.js +1 -1
  173. package/lib/esm/src/dynamic-network/data/HttpDynamicNetworkDataSource.js.map +2 -2
  174. package/lib/esm/src/dynamic-network/data/HttpDynamicNetworkDataSource.test.js.map +2 -2
  175. package/lib/esm/src/dynamic-network/domain/DynamicNetworkContextLoader.js +1 -1
  176. package/lib/esm/src/dynamic-network/domain/DynamicNetworkContextLoader.js.map +3 -3
  177. package/lib/esm/src/dynamic-network/domain/DynamicNetworkContextLoader.test.js.map +1 -1
  178. package/lib/esm/src/external-plugin/data/HttpExternalPluginDataSource.js.map +2 -2
  179. package/lib/esm/src/external-plugin/data/HttpExternalPluginDataSource.test.js.map +1 -1
  180. package/lib/esm/src/gated-signing/data/GatedDescriptorDataSource.js +1 -0
  181. package/lib/esm/src/gated-signing/data/GatedDescriptorDataSource.js.map +7 -0
  182. package/lib/esm/src/gated-signing/data/HttpGatedDescriptorDataSource.js +2 -0
  183. package/lib/esm/src/gated-signing/data/HttpGatedDescriptorDataSource.js.map +7 -0
  184. package/lib/esm/src/gated-signing/data/HttpGatedDescriptorDataSource.test.js +2 -0
  185. package/lib/esm/src/gated-signing/data/HttpGatedDescriptorDataSource.test.js.map +7 -0
  186. package/lib/esm/src/gated-signing/data/dto/GatedDappsDto.js +1 -0
  187. package/lib/esm/src/gated-signing/data/dto/GatedDappsDto.js.map +7 -0
  188. package/lib/esm/src/gated-signing/di/gatedSigningModuleFactory.js +2 -0
  189. package/lib/esm/src/gated-signing/di/gatedSigningModuleFactory.js.map +7 -0
  190. package/lib/esm/src/gated-signing/di/gatedSigningTypes.js +2 -0
  191. package/lib/esm/src/gated-signing/di/gatedSigningTypes.js.map +7 -0
  192. package/lib/esm/src/gated-signing/domain/GatedSigningContextLoader.js +2 -0
  193. package/lib/esm/src/gated-signing/domain/GatedSigningContextLoader.js.map +7 -0
  194. package/lib/esm/src/gated-signing/domain/GatedSigningContextLoader.test.js +2 -0
  195. package/lib/esm/src/gated-signing/domain/GatedSigningContextLoader.test.js.map +7 -0
  196. package/lib/esm/src/gated-signing/domain/GatedSigningTypedDataContextLoader.js +2 -0
  197. package/lib/esm/src/gated-signing/domain/GatedSigningTypedDataContextLoader.js.map +7 -0
  198. package/lib/esm/src/gated-signing/domain/GatedSigningTypedDataContextLoader.test.js +2 -0
  199. package/lib/esm/src/gated-signing/domain/GatedSigningTypedDataContextLoader.test.js.map +7 -0
  200. package/lib/esm/src/index.js +1 -1
  201. package/lib/esm/src/index.js.map +2 -2
  202. package/lib/esm/src/nft/data/HttpNftDataSource.js +1 -1
  203. package/lib/esm/src/nft/data/HttpNftDataSource.js.map +2 -2
  204. package/lib/esm/src/nft/data/HttpNftDataSource.test.js +1 -1
  205. package/lib/esm/src/nft/data/HttpNftDataSource.test.js.map +1 -1
  206. package/lib/esm/src/pki/data/HttpPkiCertificateDataSource.js +1 -1
  207. package/lib/esm/src/pki/data/HttpPkiCertificateDataSource.js.map +2 -2
  208. package/lib/esm/src/pki/data/HttpPkiCertificateDataSource.test.js.map +1 -1
  209. package/lib/esm/src/pki/model/KeyId.js +1 -1
  210. package/lib/esm/src/pki/model/KeyId.js.map +2 -2
  211. package/lib/esm/src/pki/model/KeyUsage.js +1 -1
  212. package/lib/esm/src/pki/model/KeyUsage.js.map +2 -2
  213. package/lib/esm/src/proxy/data/HttpProxyDataSource.js +1 -1
  214. package/lib/esm/src/proxy/data/HttpProxyDataSource.js.map +2 -2
  215. package/lib/esm/src/proxy/data/HttpProxyDataSource.test.js.map +1 -1
  216. package/lib/esm/src/proxy/data/HttpSafeProxyDataSource.js.map +2 -2
  217. package/lib/esm/src/proxy/data/HttpSafeProxyDataSource.test.js.map +1 -1
  218. package/lib/esm/src/proxy/di/proxyModuleFactory.js +1 -1
  219. package/lib/esm/src/proxy/di/proxyModuleFactory.js.map +3 -3
  220. package/lib/esm/src/proxy/di/proxyModuleFactory.test.js +1 -1
  221. package/lib/esm/src/proxy/di/proxyModuleFactory.test.js.map +2 -2
  222. package/lib/esm/src/reporter/data/BlindSigningReporterDatasource.js +1 -0
  223. package/lib/esm/src/reporter/data/BlindSigningReporterDatasource.js.map +7 -0
  224. package/lib/esm/src/reporter/data/HttpBlindSigningReporterDatasource.js +2 -0
  225. package/lib/esm/src/reporter/data/HttpBlindSigningReporterDatasource.js.map +7 -0
  226. package/lib/esm/src/reporter/data/HttpBlindSigningReporterDatasource.test.js +2 -0
  227. package/lib/esm/src/reporter/data/HttpBlindSigningReporterDatasource.test.js.map +7 -0
  228. package/lib/esm/src/reporter/data/dto/BlindSigningEventDto.js +1 -0
  229. package/lib/esm/src/reporter/data/dto/BlindSigningEventDto.js.map +7 -0
  230. package/lib/esm/src/reporter/di/reporterModuleFactory.js +2 -0
  231. package/lib/esm/src/reporter/di/reporterModuleFactory.js.map +7 -0
  232. package/lib/esm/src/reporter/di/reporterTypes.js +2 -0
  233. package/lib/esm/src/reporter/di/reporterTypes.js.map +7 -0
  234. package/lib/esm/src/reporter/domain/BlindSigningReporter.js +1 -0
  235. package/lib/esm/src/reporter/domain/BlindSigningReporter.js.map +7 -0
  236. package/lib/esm/src/reporter/domain/DefaultBlindSigningReporter.js +2 -0
  237. package/lib/esm/src/reporter/domain/DefaultBlindSigningReporter.js.map +7 -0
  238. package/lib/esm/src/reporter/domain/DefaultBlindSigningReporter.test.js +2 -0
  239. package/lib/esm/src/reporter/domain/DefaultBlindSigningReporter.test.js.map +7 -0
  240. package/lib/esm/src/reporter/model/BlindSigningEvent.js +2 -0
  241. package/lib/esm/src/reporter/model/BlindSigningEvent.js.map +7 -0
  242. package/lib/esm/src/reporter/model/BlindSigningModelId.js +2 -0
  243. package/lib/esm/src/reporter/model/BlindSigningModelId.js.map +7 -0
  244. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.js +1 -1
  245. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.js.map +2 -2
  246. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.test.js +1 -1
  247. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.test.js.map +2 -2
  248. package/lib/esm/src/shared/model/ClearSignContext.js +1 -1
  249. package/lib/esm/src/shared/model/ClearSignContext.js.map +2 -2
  250. package/lib/esm/src/shared/model/SolanaContextTypes.js.map +1 -1
  251. package/lib/esm/src/shared/utils/KeyUsageMapper.js +1 -1
  252. package/lib/esm/src/shared/utils/KeyUsageMapper.js.map +2 -2
  253. package/lib/esm/src/shared/utils/KeyUsageMapper.test.js +1 -1
  254. package/lib/esm/src/shared/utils/KeyUsageMapper.test.js.map +2 -2
  255. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.js +1 -1
  256. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.js.map +2 -2
  257. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js.map +1 -1
  258. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.js +1 -1
  259. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.js.map +3 -3
  260. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.test.js +1 -1
  261. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.test.js.map +1 -1
  262. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.js +1 -1
  263. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.js.map +3 -3
  264. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js +1 -1
  265. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js.map +3 -3
  266. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.js +1 -1
  267. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.js.map +3 -3
  268. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.test.js +1 -1
  269. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.test.js.map +3 -3
  270. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.js +1 -1
  271. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.js.map +2 -2
  272. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.test.js +2 -2
  273. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.test.js.map +2 -2
  274. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.js +1 -1
  275. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.js.map +2 -2
  276. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.test.js +1 -1
  277. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.test.js.map +1 -1
  278. package/lib/esm/src/token/data/HttpTokenDataSource.js.map +2 -2
  279. package/lib/esm/src/token/data/HttpTokenDataSource.test.js.map +1 -1
  280. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.js +1 -1
  281. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.js.map +2 -2
  282. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.test.js.map +1 -1
  283. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.js.map +2 -2
  284. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js.map +1 -1
  285. package/lib/esm/src/trusted-name/data/HttpTrustedNameDataSource.js.map +2 -2
  286. package/lib/esm/src/trusted-name/data/HttpTrustedNameDataSource.test.js.map +1 -1
  287. package/lib/esm/src/trusted-name/di/trustedNameModuleFactory.js +1 -1
  288. package/lib/esm/src/trusted-name/di/trustedNameModuleFactory.js.map +3 -3
  289. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.js +1 -1
  290. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.js.map +3 -3
  291. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.test.js.map +1 -1
  292. package/lib/esm/src/typed-data/utils/getSchemaHash.js +2 -0
  293. package/lib/esm/src/typed-data/utils/getSchemaHash.js.map +7 -0
  294. package/lib/esm/src/typed-data/utils/getSchemaHash.test.js +2 -0
  295. package/lib/esm/src/typed-data/utils/getSchemaHash.test.js.map +7 -0
  296. package/lib/types/src/ContextModule.d.ts +2 -0
  297. package/lib/types/src/ContextModule.d.ts.map +1 -1
  298. package/lib/types/src/ContextModuleBuilder.d.ts +30 -3
  299. package/lib/types/src/ContextModuleBuilder.d.ts.map +1 -1
  300. package/lib/types/src/DefaultContextModule.d.ts +6 -2
  301. package/lib/types/src/DefaultContextModule.d.ts.map +1 -1
  302. package/lib/types/src/calldata/data/HttpCalldataDescriptorDataSource.d.ts +2 -2
  303. package/lib/types/src/calldata/data/HttpCalldataDescriptorDataSource.d.ts.map +1 -1
  304. package/lib/types/src/config/di/configModuleFactory.d.ts +2 -2
  305. package/lib/types/src/config/di/configModuleFactory.d.ts.map +1 -1
  306. package/lib/types/src/config/model/ContextModuleConfig.d.ts +14 -3
  307. package/lib/types/src/config/model/ContextModuleConfig.d.ts.map +1 -1
  308. package/lib/types/src/di.d.ts +2 -2
  309. package/lib/types/src/di.d.ts.map +1 -1
  310. package/lib/types/src/dynamic-network/data/HttpDynamicNetworkDataSource.d.ts +2 -2
  311. package/lib/types/src/dynamic-network/data/HttpDynamicNetworkDataSource.d.ts.map +1 -1
  312. package/lib/types/src/dynamic-network/domain/DynamicNetworkContextLoader.d.ts +4 -2
  313. package/lib/types/src/dynamic-network/domain/DynamicNetworkContextLoader.d.ts.map +1 -1
  314. package/lib/types/src/external-plugin/data/HttpExternalPluginDataSource.d.ts +2 -2
  315. package/lib/types/src/external-plugin/data/HttpExternalPluginDataSource.d.ts.map +1 -1
  316. package/lib/types/src/gated-signing/data/GatedDescriptorDataSource.d.ts +20 -0
  317. package/lib/types/src/gated-signing/data/GatedDescriptorDataSource.d.ts.map +1 -0
  318. package/lib/types/src/gated-signing/data/HttpGatedDescriptorDataSource.d.ts +13 -0
  319. package/lib/types/src/gated-signing/data/HttpGatedDescriptorDataSource.d.ts.map +1 -0
  320. package/lib/types/src/gated-signing/data/HttpGatedDescriptorDataSource.test.d.ts +2 -0
  321. package/lib/types/src/gated-signing/data/HttpGatedDescriptorDataSource.test.d.ts.map +1 -0
  322. package/lib/types/src/gated-signing/data/dto/GatedDappsDto.d.ts +15 -0
  323. package/lib/types/src/gated-signing/data/dto/GatedDappsDto.d.ts.map +1 -0
  324. package/lib/types/src/gated-signing/di/gatedSigningModuleFactory.d.ts +3 -0
  325. package/lib/types/src/gated-signing/di/gatedSigningModuleFactory.d.ts.map +1 -0
  326. package/lib/types/src/gated-signing/di/gatedSigningTypes.d.ts +6 -0
  327. package/lib/types/src/gated-signing/di/gatedSigningTypes.d.ts.map +1 -0
  328. package/lib/types/src/gated-signing/domain/GatedSigningContextLoader.d.ts +22 -0
  329. package/lib/types/src/gated-signing/domain/GatedSigningContextLoader.d.ts.map +1 -0
  330. package/lib/types/src/gated-signing/domain/GatedSigningContextLoader.test.d.ts +2 -0
  331. package/lib/types/src/gated-signing/domain/GatedSigningContextLoader.test.d.ts.map +1 -0
  332. package/lib/types/src/gated-signing/domain/GatedSigningTypedDataContextLoader.d.ts +27 -0
  333. package/lib/types/src/gated-signing/domain/GatedSigningTypedDataContextLoader.d.ts.map +1 -0
  334. package/lib/types/src/gated-signing/domain/GatedSigningTypedDataContextLoader.test.d.ts +2 -0
  335. package/lib/types/src/gated-signing/domain/GatedSigningTypedDataContextLoader.test.d.ts.map +1 -0
  336. package/lib/types/src/index.d.ts +12 -1
  337. package/lib/types/src/index.d.ts.map +1 -1
  338. package/lib/types/src/nft/data/HttpNftDataSource.d.ts +2 -2
  339. package/lib/types/src/nft/data/HttpNftDataSource.d.ts.map +1 -1
  340. package/lib/types/src/pki/data/HttpPkiCertificateDataSource.d.ts +2 -2
  341. package/lib/types/src/pki/data/HttpPkiCertificateDataSource.d.ts.map +1 -1
  342. package/lib/types/src/pki/model/KeyId.d.ts +3 -1
  343. package/lib/types/src/pki/model/KeyId.d.ts.map +1 -1
  344. package/lib/types/src/pki/model/KeyUsage.d.ts +3 -1
  345. package/lib/types/src/pki/model/KeyUsage.d.ts.map +1 -1
  346. package/lib/types/src/proxy/data/HttpProxyDataSource.d.ts +2 -2
  347. package/lib/types/src/proxy/data/HttpProxyDataSource.d.ts.map +1 -1
  348. package/lib/types/src/proxy/data/HttpSafeProxyDataSource.d.ts +2 -2
  349. package/lib/types/src/proxy/data/HttpSafeProxyDataSource.d.ts.map +1 -1
  350. package/lib/types/src/proxy/di/proxyModuleFactory.d.ts +2 -2
  351. package/lib/types/src/proxy/di/proxyModuleFactory.d.ts.map +1 -1
  352. package/lib/types/src/reporter/data/BlindSigningReporterDatasource.d.ts +23 -0
  353. package/lib/types/src/reporter/data/BlindSigningReporterDatasource.d.ts.map +1 -0
  354. package/lib/types/src/reporter/data/HttpBlindSigningReporterDatasource.d.ts +9 -0
  355. package/lib/types/src/reporter/data/HttpBlindSigningReporterDatasource.d.ts.map +1 -0
  356. package/lib/types/src/reporter/data/HttpBlindSigningReporterDatasource.test.d.ts +2 -0
  357. package/lib/types/src/reporter/data/HttpBlindSigningReporterDatasource.test.d.ts.map +1 -0
  358. package/lib/types/src/reporter/data/dto/BlindSigningEventDto.d.ts +26 -0
  359. package/lib/types/src/reporter/data/dto/BlindSigningEventDto.d.ts.map +1 -0
  360. package/lib/types/src/reporter/di/reporterModuleFactory.d.ts +3 -0
  361. package/lib/types/src/reporter/di/reporterModuleFactory.d.ts.map +1 -0
  362. package/lib/types/src/reporter/di/reporterTypes.d.ts +5 -0
  363. package/lib/types/src/reporter/di/reporterTypes.d.ts.map +1 -0
  364. package/lib/types/src/reporter/domain/BlindSigningReporter.d.ts +6 -0
  365. package/lib/types/src/reporter/domain/BlindSigningReporter.d.ts.map +1 -0
  366. package/lib/types/src/reporter/domain/DefaultBlindSigningReporter.d.ts +9 -0
  367. package/lib/types/src/reporter/domain/DefaultBlindSigningReporter.d.ts.map +1 -0
  368. package/lib/types/src/reporter/domain/DefaultBlindSigningReporter.test.d.ts +2 -0
  369. package/lib/types/src/reporter/domain/DefaultBlindSigningReporter.test.d.ts.map +1 -0
  370. package/lib/types/src/reporter/model/BlindSigningEvent.d.ts +21 -0
  371. package/lib/types/src/reporter/model/BlindSigningEvent.d.ts.map +1 -0
  372. package/lib/types/src/reporter/model/BlindSigningModelId.d.ts +12 -0
  373. package/lib/types/src/reporter/model/BlindSigningModelId.d.ts.map +1 -0
  374. package/lib/types/src/safe/data/HttpSafeAccountDataSource.d.ts +2 -2
  375. package/lib/types/src/safe/data/HttpSafeAccountDataSource.d.ts.map +1 -1
  376. package/lib/types/src/shared/model/ClearSignContext.d.ts +2 -1
  377. package/lib/types/src/shared/model/ClearSignContext.d.ts.map +1 -1
  378. package/lib/types/src/shared/model/SolanaContextTypes.d.ts +33 -3
  379. package/lib/types/src/shared/model/SolanaContextTypes.d.ts.map +1 -1
  380. package/lib/types/src/shared/utils/KeyUsageMapper.d.ts.map +1 -1
  381. package/lib/types/src/solana/data/HttpSolanaOwnerInfoDataSource.d.ts +2 -2
  382. package/lib/types/src/solana/data/HttpSolanaOwnerInfoDataSource.d.ts.map +1 -1
  383. package/lib/types/src/solana/domain/DefaultSolanaContextLoader.d.ts +4 -1
  384. package/lib/types/src/solana/domain/DefaultSolanaContextLoader.d.ts.map +1 -1
  385. package/lib/types/src/solana/domain/solanaContextTypes.d.ts +2 -2
  386. package/lib/types/src/solana/domain/solanaContextTypes.d.ts.map +1 -1
  387. package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.d.ts +4 -2
  388. package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.d.ts.map +1 -1
  389. package/lib/types/src/solanaLifi/data/SolanaLifiDataSource.d.ts +2 -5
  390. package/lib/types/src/solanaLifi/data/SolanaLifiDataSource.d.ts.map +1 -1
  391. package/lib/types/src/solanaLifi/domain/SolanaLifiContextLoader.d.ts +10 -8
  392. package/lib/types/src/solanaLifi/domain/SolanaLifiContextLoader.d.ts.map +1 -1
  393. package/lib/types/src/solanaToken/data/HttpSolanaTokenDataSource.d.ts +2 -2
  394. package/lib/types/src/solanaToken/data/HttpSolanaTokenDataSource.d.ts.map +1 -1
  395. package/lib/types/src/solanaToken/domain/SolanaTokenContextLoader.d.ts +6 -11
  396. package/lib/types/src/solanaToken/domain/SolanaTokenContextLoader.d.ts.map +1 -1
  397. package/lib/types/src/token/data/HttpTokenDataSource.d.ts +2 -2
  398. package/lib/types/src/token/data/HttpTokenDataSource.d.ts.map +1 -1
  399. package/lib/types/src/transaction-check/data/HttpTransactionCheckDataSource.d.ts +2 -2
  400. package/lib/types/src/transaction-check/data/HttpTransactionCheckDataSource.d.ts.map +1 -1
  401. package/lib/types/src/transaction-check/data/HttpTypedDataCheckDataSource.d.ts +2 -2
  402. package/lib/types/src/transaction-check/data/HttpTypedDataCheckDataSource.d.ts.map +1 -1
  403. package/lib/types/src/trusted-name/data/HttpTrustedNameDataSource.d.ts +2 -2
  404. package/lib/types/src/trusted-name/data/HttpTrustedNameDataSource.d.ts.map +1 -1
  405. package/lib/types/src/trusted-name/di/trustedNameModuleFactory.d.ts +2 -2
  406. package/lib/types/src/trusted-name/di/trustedNameModuleFactory.d.ts.map +1 -1
  407. package/lib/types/src/typed-data/data/HttpTypedDataDataSource.d.ts +2 -3
  408. package/lib/types/src/typed-data/data/HttpTypedDataDataSource.d.ts.map +1 -1
  409. package/lib/types/src/typed-data/utils/getSchemaHash.d.ts +12 -0
  410. package/lib/types/src/typed-data/utils/getSchemaHash.d.ts.map +1 -0
  411. package/lib/types/src/typed-data/utils/getSchemaHash.test.d.ts +2 -0
  412. package/lib/types/src/typed-data/utils/getSchemaHash.test.d.ts.map +1 -0
  413. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  414. package/package.json +7 -7
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/typed-data/data/HttpTypedDataDataSource.test.ts"],
4
- "sourcesContent": ["import axios from \"axios\";\nimport { Right } from \"purify-ts\";\n\nimport { type ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport {\n LEDGER_CLIENT_VERSION_HEADER,\n LEDGER_ORIGIN_TOKEN_HEADER,\n} from \"@/shared/constant/HttpHeaders\";\nimport { TypedDataCalldataParamPresence } from \"@/shared/model/TypedDataClearSignContext\";\nimport { HttpTypedDataDataSource } from \"@/typed-data/data/HttpTypedDataDataSource\";\nimport { type TypedDataDataSource } from \"@/typed-data/data/TypedDataDataSource\";\nimport PACKAGE from \"@root/package.json\";\n\nimport { type FiltersDto, type InstructionField } from \"./FiltersDto\";\n\nvi.mock(\"axios\");\n\nexport const buildDescriptor = (\n instructions: InstructionField[],\n): FiltersDto[] => [\n {\n descriptors_eip712: {\n \"0x000000000022d473030f116ddee9f6b43ac78ba3\": {\n \"4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3\": {\n instructions,\n },\n },\n },\n },\n];\n\nexport const buildDescriptorCalldata = (\n instructions: InstructionField[],\n): FiltersDto[] => [\n {\n descriptors_eip712: {\n \"0x000000000022d473030f116ddee9f6b43ac78ba3\": {\n \"4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3\": {\n instructions,\n },\n },\n },\n },\n];\n\nconst config = {\n web3checks: {\n url: \"web3checksUrl\",\n },\n cal: {\n url: \"https://crypto-assets-service.api.ledger.com/v1\",\n mode: \"prod\",\n },\n originToken: \"originToken\",\n} as ContextModuleConfig;\ndescribe(\"HttpTypedDataDataSource\", () => {\n let datasource: TypedDataDataSource;\n\n const TEST_TYPES = {\n PermitSingle: [\n {\n name: \"details\",\n type: \"PermitDetails\",\n },\n {\n name: \"spender\",\n type: \"address\",\n },\n {\n name: \"sigDeadline\",\n type: \"uint256\",\n },\n ],\n PermitDetails: [\n {\n type: \"address\",\n name: \"token\",\n },\n {\n name: \"amount\",\n type: \"uint160\",\n },\n {\n name: \"expiration\",\n type: \"uint48\",\n },\n {\n name: \"nonce\",\n type: \"uint48\",\n },\n ],\n EIP712Domain: [\n {\n name: \"name\",\n type: \"string\",\n },\n {\n name: \"chainId\",\n type: \"uint256\",\n },\n {\n name: \"verifyingContract\",\n type: \"address\",\n },\n ],\n };\n\n beforeAll(() => {\n datasource = new HttpTypedDataDataSource(config);\n vi.clearAllMocks();\n });\n\n it(\"should call axios with the ledger client version header\", async () => {\n // GIVEN\n const version = `context-module/${PACKAGE.version}`;\n const requestSpy = vi.fn(() => Promise.resolve({ data: [] }));\n vi.spyOn(axios, \"request\").mockImplementation(requestSpy);\n\n // WHEN\n await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x00\",\n version: \"v2\",\n schema: {},\n });\n\n // THEN\n expect(requestSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: version,\n [LEDGER_ORIGIN_TOKEN_HEADER]: config.originToken,\n },\n }),\n );\n });\n\n it(\"should return V2 filters when axios response is correct\", async () => {\n // GIVEN\n const filtersDTO = buildDescriptor([\n {\n display_name: \"Permit2\",\n field_mappers_count: 4,\n descriptor:\n \"b7000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3045065726d697432\",\n signatures: {\n prod: \"304402201675b7d8507b40de5136c386815afdad8012cb8e3f0e0a126c758d6fbb3f6b0f0220595cbfeeab7591d0eebe40f0e4ea8ea53beeaf89ee50b7faf97f97bdf36abbce\",\n },\n type: \"message\",\n },\n {\n display_name: \"Amount allowance\",\n format: \"token\",\n field_path: \"details.token\",\n coin_ref: 0,\n descriptor:\n \"48000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df364657461696c732e746f6b656e416d6f756e7420616c6c6f77616e6365\",\n signatures: {\n prod: \"30440220238723d4ddd47baf829d547802a2017476bf68e03d0b920fd46aa543de81d5b902206123218eae82c5f898454c45262e5b0b839dc9d84b2b0926fe14e8218b5b0d53\",\n },\n type: \"field\",\n },\n {\n display_name: \"Spender name\",\n format: \"trusted-name\",\n field_path: \"details.spender\",\n name_types: [\"contract\"],\n name_sources: [\"cal\", \"local\", \"ens\"],\n descriptor:\n \"2c000000000000a4b1ff970a61a04b1ca14834a43f5de4533ebddb5cc8d4dd8410bdcf861c48d353f8e3a9b738282a0fd9ba7239f59baa90997370656e6465725370656e64657202010002\",\n signatures: {\n prod: \"30440220238723d4ddd47baf829d547802a2017476bf68e03d0b920fd46aa543de81d5b902206123218eae82c5f898454c45262e5b0b839dc9d84b2b0926fe14e8218b5b0d54\",\n },\n type: \"field\",\n },\n {\n display_name: \"Amount allowance\",\n format: \"amount\",\n field_path: \"details.amount\",\n coin_ref: 0,\n descriptor:\n \"48000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df364657461696c732e616d6f756e74416d6f756e7420616c6c6f77616e6365\",\n signatures: {\n prod: \"30450221008f9e2f33b35872e63b2024a6d4938525c6e72364604da2d5e21b3d7fa44cac8a02207d4fe42c9d3994a322dae99adc2c56157435c177c51831103fdaf3cef12bb19f\",\n },\n type: \"field\",\n },\n {\n display_name: \"Approve to spender\",\n format: \"raw\",\n field_path: \"spender\",\n descriptor:\n \"48000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df37370656e646572417070726f766520746f207370656e646572\",\n signatures: {\n prod: \"3045022100dddb92141e3b3f21dafb60c8d5093e28b25a8dc4f926ed501b6d2021203f68bc02201abca405540e72b5b70120a428967b776edb8a88ebd9b1d7aa320c3df602027f\",\n },\n type: \"field\",\n },\n {\n display_name: \"Approval expire\",\n format: \"datetime\",\n field_path: \"details.expiration\",\n descriptor:\n \"48000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df364657461696c732e65787069726174696f6e417070726f76616c20657870697265\",\n signatures: {\n prod: \"3044022060a11c1b15d07e7172e2e68a4e4aa5cbd3b5af900907634b1bce58000eab9fb502201e40963d9e2b00948ce16d3817756329e11a81e8b14b762adff68db4b3a4b8ff\",\n },\n type: \"field\",\n },\n ]);\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022D473030F116DDEE9F6B43AC78BA3\",\n version: \"v2\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result).toEqual(\n Right({\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 4,\n signature:\n \"304402201675b7d8507b40de5136c386815afdad8012cb8e3f0e0a126c758d6fbb3f6b0f0220595cbfeeab7591d0eebe40f0e4ea8ea53beeaf89ee50b7faf97f97bdf36abbce\",\n },\n calldatasInfos: {},\n filters: [\n {\n type: \"token\",\n displayName: \"Amount allowance\",\n path: \"details.token\",\n tokenIndex: 0,\n signature:\n \"30440220238723d4ddd47baf829d547802a2017476bf68e03d0b920fd46aa543de81d5b902206123218eae82c5f898454c45262e5b0b839dc9d84b2b0926fe14e8218b5b0d53\",\n },\n {\n type: \"trusted-name\",\n displayName: \"Spender name\",\n path: \"details.spender\",\n signature:\n \"30440220238723d4ddd47baf829d547802a2017476bf68e03d0b920fd46aa543de81d5b902206123218eae82c5f898454c45262e5b0b839dc9d84b2b0926fe14e8218b5b0d54\",\n types: [\"contract\"],\n sources: [\"cal\", \"local\", \"ens\"],\n typesAndSourcesPayload: \"010203010002\",\n },\n {\n type: \"amount\",\n displayName: \"Amount allowance\",\n path: \"details.amount\",\n tokenIndex: 0,\n signature:\n \"30450221008f9e2f33b35872e63b2024a6d4938525c6e72364604da2d5e21b3d7fa44cac8a02207d4fe42c9d3994a322dae99adc2c56157435c177c51831103fdaf3cef12bb19f\",\n },\n {\n type: \"raw\",\n displayName: \"Approve to spender\",\n path: \"spender\",\n signature:\n \"3045022100dddb92141e3b3f21dafb60c8d5093e28b25a8dc4f926ed501b6d2021203f68bc02201abca405540e72b5b70120a428967b776edb8a88ebd9b1d7aa320c3df602027f\",\n },\n {\n type: \"datetime\",\n displayName: \"Approval expire\",\n path: \"details.expiration\",\n signature:\n \"3044022060a11c1b15d07e7172e2e68a4e4aa5cbd3b5af900907634b1bce58000eab9fb502201e40963d9e2b00948ce16d3817756329e11a81e8b14b762adff68db4b3a4b8ff\",\n },\n ],\n }),\n );\n });\n\n it(\"should return V2 filters with calldatas when axios response is correct\", async () => {\n // GIVEN\n const filtersDTO = buildDescriptorCalldata([\n {\n display_name: \"Multisig transaction\",\n field_mappers_count: 4,\n descriptor:\n \"b7000000000000000141675c099f32341bf84bfc5382af534df5c7461a76c51ae1c9c8eb1e9fe51d0ed8b1c65c044466a7bcb1c9f7a0f33c14084d756c7469736967207472616e73616374696f6e\",\n signatures: {\n prod: \"304402206553ac5a2ce6bb17b94f3ec559fb037af0b742d62c001d8938aad709accd71ed022075ce87c3eb65e605f0ce0b2bc4bf960498bacf109a499807d1a7906d9c78c9c4\",\n },\n type: \"message\",\n },\n {\n display_name: \"Operation type\",\n format: \"raw\",\n field_path: \"operation\",\n descriptor:\n \"48000000000000000141675c099f32341bf84bfc5382af534df5c7461a76c51ae1c9c8eb1e9fe51d0ed8b1c65c044466a7bcb1c9f7a0f33c146f7065726174696f6e4f7065726174696f6e2074797065\",\n signatures: {\n prod: \"3045022100fb9f3e7bab8ac0cd9a5722389a19d1ebdd39d7a6da6e374724a46eebee6896bc022070e991bb022111ed448540511b7fa4f70d5e92b0a3866d75cfc9d3cf1cf75d9b\",\n },\n type: \"field\",\n },\n {\n display_name: \"Transaction\",\n calldata_index: 0,\n value_filter_flag: true,\n callee_filter_flag: \"present\",\n chain_id_filter_flag: false,\n selector_filter_flag: false,\n amount_filter_flag: true,\n spender_filter_flag: \"verifying_contract\",\n descriptor:\n \"37000000000000000141675c099f32341bf84bfc5382af534df5c7461a76c51ae1c9c8eb1e9fe51d0ed8b1c65c044466a7bcb1c9f7a0f33c1400010100000102\",\n signatures: {\n prod: \"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e\",\n },\n type: \"calldata\",\n },\n {\n display_name: \"Transaction\",\n format: \"calldata-value\",\n field_path: \"data\",\n calldata_index: 0,\n descriptor:\n \"42000000000000000141675c099f32341bf84bfc5382af534df5c7461a76c51ae1c9c8eb1e9fe51d0ed8b1c65c044466a7bcb1c9f7a0f33c146461746100\",\n signatures: {\n prod: \"3044022031a3398014238d098643893885e4b8c2152a56b01c34516edda1065df62258d1022057f094a83e938be32ca70d73616af8c57cdb8846a7a71b21be5504fa74cfc53a\",\n },\n type: \"field\",\n },\n {\n display_name: \"Transaction\",\n format: \"calldata-callee\",\n field_path: \"to\",\n calldata_index: 0,\n descriptor:\n \"4d000000000000000141675c099f32341bf84bfc5382af534df5c7461a76c51ae1c9c8eb1e9fe51d0ed8b1c65c044466a7bcb1c9f7a0f33c14746f00\",\n signatures: {\n prod: \"30440220796cc549e363c5bc9f9d5bda894cf4cda11f157519f673d2b4a8b3ce716a8fba0220663c888d764084072856fe654ff425bffe671c2550068c64be9eddd6c84178b8\",\n },\n type: \"field\",\n },\n {\n display_name: \"Transaction\",\n format: \"calldata-amount\",\n field_path: \"value\",\n calldata_index: 0,\n descriptor:\n \"6e000000000000000141675c099f32341bf84bfc5382af534df5c7461a76c51ae1c9c8eb1e9fe51d0ed8b1c65c044466a7bcb1c9f7a0f33c1476616c756500\",\n signatures: {\n prod: \"3044022021601a55098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f\",\n },\n type: \"field\",\n },\n ]);\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022D473030F116DDEE9F6B43AC78BA3\",\n version: \"v2\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result).toEqual(\n Right({\n messageInfo: {\n displayName: \"Multisig transaction\",\n filtersCount: 4,\n signature:\n \"304402206553ac5a2ce6bb17b94f3ec559fb037af0b742d62c001d8938aad709accd71ed022075ce87c3eb65e605f0ce0b2bc4bf960498bacf109a499807d1a7906d9c78c9c4\",\n },\n calldatasInfos: {\n 0: {\n calldataIndex: 0,\n displayName: \"Transaction\",\n valueFlag: true,\n calleeFlag: TypedDataCalldataParamPresence.Present,\n chainIdFlag: false,\n selectorFlag: false,\n amountFlag: true,\n spenderFlag: TypedDataCalldataParamPresence.VerifyingContract,\n signature:\n \"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e\",\n },\n },\n filters: [\n {\n type: \"raw\",\n displayName: \"Operation type\",\n path: \"operation\",\n signature:\n \"3045022100fb9f3e7bab8ac0cd9a5722389a19d1ebdd39d7a6da6e374724a46eebee6896bc022070e991bb022111ed448540511b7fa4f70d5e92b0a3866d75cfc9d3cf1cf75d9b\",\n },\n {\n type: \"calldata-value\",\n displayName: \"Transaction\",\n path: \"data\",\n calldataIndex: 0,\n signature:\n \"3044022031a3398014238d098643893885e4b8c2152a56b01c34516edda1065df62258d1022057f094a83e938be32ca70d73616af8c57cdb8846a7a71b21be5504fa74cfc53a\",\n },\n {\n type: \"calldata-callee\",\n displayName: \"Transaction\",\n path: \"to\",\n calldataIndex: 0,\n signature:\n \"30440220796cc549e363c5bc9f9d5bda894cf4cda11f157519f673d2b4a8b3ce716a8fba0220663c888d764084072856fe654ff425bffe671c2550068c64be9eddd6c84178b8\",\n },\n {\n type: \"calldata-amount\",\n displayName: \"Transaction\",\n path: \"value\",\n calldataIndex: 0,\n signature:\n \"3044022021601a55098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f\",\n },\n ],\n }),\n );\n });\n\n it(\"should return V1 filters when axios response is correct\", async () => {\n // GIVEN\n const filtersDTO = buildDescriptor([\n {\n display_name: \"Permit2\",\n field_mappers_count: 4,\n descriptor:\n \"b7000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3045065726d697432\",\n signatures: {\n prod: \"304402201675b7d8507b40de5136c386815afdad8012cb8e3f0e0a126c758d6fbb3f6b0f0220595cbfeeab7591d0eebe40f0e4ea8ea53beeaf89ee50b7faf97f97bdf36abbce\",\n },\n type: \"message\",\n },\n {\n display_name: \"Amount allowance\",\n format: \"token\",\n field_path: \"details.token\",\n coin_ref: 0,\n descriptor:\n \"48000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df364657461696c732e746f6b656e416d6f756e7420616c6c6f77616e6365\",\n signatures: {\n prod: \"30440220238723d4ddd47baf829d547802a2017476bf68e03d0b920fd46aa543de81d5b902206123218eae82c5f898454c45262e5b0b839dc9d84b2b0926fe14e8218b5b0d53\",\n },\n type: \"field\",\n },\n {\n display_name: \"Amount allowance\",\n format: \"amount\",\n field_path: \"details.amount\",\n coin_ref: 0,\n descriptor:\n \"48000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df364657461696c732e616d6f756e74416d6f756e7420616c6c6f77616e6365\",\n signatures: {\n prod: \"30450221008f9e2f33b35872e63b2024a6d4938525c6e72364604da2d5e21b3d7fa44cac8a02207d4fe42c9d3994a322dae99adc2c56157435c177c51831103fdaf3cef12bb19f\",\n },\n type: \"field\",\n },\n {\n display_name: \"Approve to spender\",\n format: \"raw\",\n field_path: \"spender\",\n descriptor:\n \"48000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df37370656e646572417070726f766520746f207370656e646572\",\n signatures: {\n prod: \"3045022100dddb92141e3b3f21dafb60c8d5093e28b25a8dc4f926ed501b6d2021203f68bc02201abca405540e72b5b70120a428967b776edb8a88ebd9b1d7aa320c3df602027f\",\n },\n type: \"field\",\n },\n {\n display_name: \"Approval expire\",\n format: \"datetime\",\n field_path: \"details.expiration\",\n descriptor:\n \"48000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df364657461696c732e65787069726174696f6e417070726f76616c20657870697265\",\n signatures: {\n prod: \"3044022060a11c1b15d07e7172e2e68a4e4aa5cbd3b5af900907634b1bce58000eab9fb502201e40963d9e2b00948ce16d3817756329e11a81e8b14b762adff68db4b3a4b8ff\",\n },\n type: \"field\",\n },\n ]);\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v1\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result).toEqual(\n Right({\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 4,\n signature:\n \"304402201675b7d8507b40de5136c386815afdad8012cb8e3f0e0a126c758d6fbb3f6b0f0220595cbfeeab7591d0eebe40f0e4ea8ea53beeaf89ee50b7faf97f97bdf36abbce\",\n },\n calldatasInfos: {},\n filters: [\n {\n type: \"raw\",\n displayName: \"Amount allowance\",\n path: \"details.token\",\n signature:\n \"30440220238723d4ddd47baf829d547802a2017476bf68e03d0b920fd46aa543de81d5b902206123218eae82c5f898454c45262e5b0b839dc9d84b2b0926fe14e8218b5b0d53\",\n },\n {\n type: \"raw\",\n displayName: \"Amount allowance\",\n path: \"details.amount\",\n signature:\n \"30450221008f9e2f33b35872e63b2024a6d4938525c6e72364604da2d5e21b3d7fa44cac8a02207d4fe42c9d3994a322dae99adc2c56157435c177c51831103fdaf3cef12bb19f\",\n },\n {\n type: \"raw\",\n displayName: \"Approve to spender\",\n path: \"spender\",\n signature:\n \"3045022100dddb92141e3b3f21dafb60c8d5093e28b25a8dc4f926ed501b6d2021203f68bc02201abca405540e72b5b70120a428967b776edb8a88ebd9b1d7aa320c3df602027f\",\n },\n {\n type: \"raw\",\n displayName: \"Approval expire\",\n path: \"details.expiration\",\n signature:\n \"3044022060a11c1b15d07e7172e2e68a4e4aa5cbd3b5af900907634b1bce58000eab9fb502201e40963d9e2b00948ce16d3817756329e11a81e8b14b762adff68db4b3a4b8ff\",\n },\n ],\n }),\n );\n });\n\n it(\"should find descriptor when match is not in first element of response.data\", async () => {\n const match = buildDescriptor([\n {\n display_name: \"Permit2\",\n field_mappers_count: 0,\n descriptor: \"\",\n signatures: { prod: \"sig\" },\n type: \"message\",\n },\n ]);\n vi.spyOn(axios, \"request\").mockResolvedValue({\n data: [{ descriptors_eip712: {} }, ...match],\n });\n\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022D473030F116DDEE9F6B43AC78BA3\",\n version: \"v2\",\n schema: TEST_TYPES,\n });\n\n expect(result).toEqual(\n Right({\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 0,\n signature: \"sig\",\n },\n calldatasInfos: {},\n filters: [],\n }),\n );\n });\n\n it(\"should return an error when data is empty\", async () => {\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: undefined });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v1\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result.isLeft()).toEqual(true);\n expect(result.extract()).toEqual(\n new Error(\n `[ContextModule] HttpTypedDataDataSource: no typed data filters for address 0x000000000022d473030f116ddee9f6b43ac78ba3 on chain 1 for schema 4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3`,\n ),\n );\n });\n\n it(\"should return an error when schema is not found\", async () => {\n const filtersDTO = buildDescriptor([]);\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v1\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result.isLeft()).toEqual(true);\n expect(result.extract()).toEqual(\n new Error(\n `[ContextModule] HttpTypedDataDataSource: no message info for address 0x000000000022d473030f116ddee9f6b43ac78ba3 on chain 1 for schema 4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3`,\n ),\n );\n });\n\n it(\"should return an error when schema is undefined\", async () => {\n const filtersDTO = buildDescriptor(\n undefined as unknown as InstructionField[],\n );\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v1\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result.isLeft()).toEqual(true);\n expect(result.extract()).toEqual(\n new Error(\n `[ContextModule] HttpTypedDataDataSource: no message info for address 0x000000000022d473030f116ddee9f6b43ac78ba3 on chain 1 for schema 4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3`,\n ),\n );\n });\n\n it(\"should return an error if no message info is found\", async () => {\n const filtersDTO = buildDescriptor([\n {\n display_name: \"Amount allowance\",\n format: \"token\",\n field_path: \"details.token\",\n coin_ref: 0,\n descriptor:\n \"48000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df364657461696c732e746f6b656e416d6f756e7420616c6c6f77616e6365\",\n signatures: {\n prod: \"30440220238723d4ddd47baf829d547802a2017476bf68e03d0b920fd46aa543de81d5b902206123218eae82c5f898454c45262e5b0b839dc9d84b2b0926fe14e8218b5b0d53\",\n },\n type: \"field\",\n },\n ]);\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v1\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result.isLeft()).toEqual(true);\n expect(result.extract()).toEqual(\n new Error(\n `[ContextModule] HttpTypedDataDataSource: no message info for address 0x000000000022d473030f116ddee9f6b43ac78ba3 on chain 1 for schema 4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3`,\n ),\n );\n });\n\n it(\"should return an error if message info display name is missing\", async () => {\n const filtersDTO = buildDescriptor([\n {\n // display_name: \"Permit2\",\n field_mappers_count: 4,\n descriptor:\n \"b7000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3045065726d697432\",\n signatures: {\n prod: \"304402201675b7d8507b40de5136c386815afdad8012cb8e3f0e0a126c758d6fbb3f6b0f0220595cbfeeab7591d0eebe40f0e4ea8ea53beeaf89ee50b7faf97f97bdf36abbce\",\n },\n type: \"message\",\n } as InstructionField,\n ]);\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v1\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result.isLeft()).toEqual(true);\n expect(result.extract()).toEqual(\n new Error(\n `[ContextModule] HttpTypedDataDataSource: invalid typed data field for address 0x000000000022d473030f116ddee9f6b43ac78ba3 on chain 1 for schema 4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3`,\n ),\n );\n });\n\n it(\"should return an error if field path is invalid\", async () => {\n const filtersDTO = buildDescriptor([\n {\n display_name: \"Amount allowance\",\n format: \"token\",\n // field_path: \"details.token\",\n coin_ref: 0,\n descriptor:\n \"48000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df364657461696c732e746f6b656e416d6f756e7420616c6c6f77616e6365\",\n signatures: {\n prod: \"30440220238723d4ddd47baf829d547802a2017476bf68e03d0b920fd46aa543de81d5b902206123218eae82c5f898454c45262e5b0b839dc9d84b2b0926fe14e8218b5b0d53\",\n },\n type: \"field\",\n } as InstructionField,\n ]);\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v1\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result.isLeft()).toEqual(true);\n expect(result.extract()).toEqual(\n new Error(\n `[ContextModule] HttpTypedDataDataSource: invalid typed data field for address 0x000000000022d473030f116ddee9f6b43ac78ba3 on chain 1 for schema 4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3`,\n ),\n );\n });\n\n it(\"should return an error if field display_name is invalid\", async () => {\n const filtersDTO = buildDescriptor([\n {\n // display_name: \"Amount allowance\",\n format: \"token\",\n field_path: \"details.token\",\n coin_ref: 0,\n descriptor:\n \"48000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df364657461696c732e746f6b656e416d6f756e7420616c6c6f77616e6365\",\n signatures: {\n prod: \"30440220238723d4ddd47baf829d547802a2017476bf68e03d0b920fd46aa543de81d5b902206123218eae82c5f898454c45262e5b0b839dc9d84b2b0926fe14e8218b5b0d53\",\n },\n type: \"field\",\n } as InstructionField,\n ]);\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v1\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result.isLeft()).toEqual(true);\n expect(result.extract()).toEqual(\n new Error(\n `[ContextModule] HttpTypedDataDataSource: invalid typed data field for address 0x000000000022d473030f116ddee9f6b43ac78ba3 on chain 1 for schema 4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3`,\n ),\n );\n });\n\n it(\"should return an error if field signatures.prod is missing\", async () => {\n const filtersDTO = buildDescriptor([\n {\n display_name: \"Amount allowance\",\n format: \"token\",\n field_path: \"details.token\",\n coin_ref: 0,\n descriptor:\n \"48000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df364657461696c732e746f6b656e416d6f756e7420616c6c6f77616e6365\",\n signatures: {\n test: \"30440220238723d4ddd47baf829d547802a2017476bf68e03d0b920fd46aa543de81d5b902206123218eae82c5f898454c45262e5b0b839dc9d84b2b0926fe14e8218b5b0d53\",\n },\n type: \"field\",\n } as InstructionField,\n ]);\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v1\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result.isLeft()).toEqual(true);\n expect(result.extract()).toEqual(\n new Error(\n `[ContextModule] HttpTypedDataDataSource: invalid typed data field for address 0x000000000022d473030f116ddee9f6b43ac78ba3 on chain 1 for schema 4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3`,\n ),\n );\n });\n\n it(\"should return an error on token fileds with coin ref to null\", async () => {\n const filtersDTO = buildDescriptor([\n {\n display_name: \"Amount allowance\",\n format: \"token\",\n field_path: \"details.token\",\n coin_ref: null,\n descriptor:\n \"48000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df364657461696c732e746f6b656e416d6f756e7420616c6c6f77616e6365\",\n signatures: {\n prod: \"30440220238723d4ddd47baf829d547802a2017476bf68e03d0b920fd46aa543de81d5b902206123218eae82c5f898454c45262e5b0b839dc9d84b2b0926fe14e8218b5b0d53\",\n },\n type: \"field\",\n } as unknown as InstructionField,\n ]);\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v2\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result.isLeft()).toEqual(true);\n expect(result.extract()).toEqual(\n new Error(\n `[ContextModule] HttpTypedDataDataSource: invalid typed data field for address 0x000000000022d473030f116ddee9f6b43ac78ba3 on chain 1 for schema 4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3`,\n ),\n );\n });\n\n it(\"should return an error on trusted names without sources and types\", async () => {\n const filtersDTO = buildDescriptor([\n {\n display_name: \"Amount allowance\",\n format: \"trusted-name\",\n field_path: \"details.token\",\n descriptor:\n \"2c000000000000a4b1ff970a61a04b1ca14834a43f5de4533ebddb5cc8d4dd8410bdcf861c48d353f8e3a9b738282a0fd9ba7239f59baa90997370656e6465725370656e64657202010002\",\n signatures: {\n prod: \"30440220238723d4ddd47baf829d547802a2017476bf68e03d0b920fd46aa543de81d5b902206123218eae82c5f898454c45262e5b0b839dc9d84b2b0926fe14e8218b5b0d53\",\n },\n type: \"field\",\n } as unknown as InstructionField,\n ]);\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v2\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result.isLeft()).toEqual(true);\n expect(result.extract()).toEqual(\n new Error(\n `[ContextModule] HttpTypedDataDataSource: invalid typed data field for address 0x000000000022d473030f116ddee9f6b43ac78ba3 on chain 1 for schema 4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3`,\n ),\n );\n });\n\n it(\"should return an error on calldata info with flags undefined\", async () => {\n const filtersDTO = buildDescriptorCalldata([\n {\n display_name: \"Transaction\",\n calldata_index: 0,\n callee_filter_flag: \"present\",\n chain_id_filter_flag: false,\n selector_filter_flag: false,\n amount_filter_flag: true,\n descriptor:\n \"37000000000000000141675c099f32341bf84bfc5382af534df5c7461a76c51ae1c9c8eb1e9fe51d0ed8b1c65c044466a7bcb1c9f7a0f33c1400010100000102\",\n signatures: {\n prod: \"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e\",\n },\n type: \"calldata\",\n } as unknown as InstructionField,\n ]);\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v2\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result.isLeft()).toEqual(true);\n expect(result.extract()).toEqual(\n new Error(\n `[ContextModule] HttpTypedDataDataSource: invalid typed data field for address 0x000000000022d473030f116ddee9f6b43ac78ba3 on chain 1 for schema 4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3`,\n ),\n );\n });\n\n it(\"should return an error on calldata field with calldata_index undefined\", async () => {\n const filtersDTO = buildDescriptorCalldata([\n {\n display_name: \"Transaction\",\n format: \"calldata-value\",\n field_path: \"data\",\n descriptor:\n \"42000000000000000141675c099f32341bf84bfc5382af534df5c7461a76c51ae1c9c8eb1e9fe51d0ed8b1c65c044466a7bcb1c9f7a0f33c146461746100\",\n signatures: {\n prod: \"3044022031a3398014238d098643893885e4b8c2152a56b01c34516edda1065df62258d1022057f094a83e938be32ca70d73616af8c57cdb8846a7a71b21be5504fa74cfc53a\",\n },\n type: \"field\",\n } as unknown as InstructionField,\n ]);\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v2\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result.isLeft()).toEqual(true);\n expect(result.extract()).toEqual(\n new Error(\n `[ContextModule] HttpTypedDataDataSource: invalid typed data field for address 0x000000000022d473030f116ddee9f6b43ac78ba3 on chain 1 for schema 4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3`,\n ),\n );\n });\n\n it(\"should return an error when axios throws an error\", async () => {\n // GIVEN\n vi.spyOn(axios, \"request\").mockRejectedValue(new Error(\"error\"));\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v1\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result.isLeft()).toEqual(true);\n });\n});\n"],
4
+ "sourcesContent": ["import axios from \"axios\";\nimport { Right } from \"purify-ts\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport {\n LEDGER_CLIENT_VERSION_HEADER,\n LEDGER_ORIGIN_TOKEN_HEADER,\n} from \"@/shared/constant/HttpHeaders\";\nimport { TypedDataCalldataParamPresence } from \"@/shared/model/TypedDataClearSignContext\";\nimport { HttpTypedDataDataSource } from \"@/typed-data/data/HttpTypedDataDataSource\";\nimport { type TypedDataDataSource } from \"@/typed-data/data/TypedDataDataSource\";\nimport PACKAGE from \"@root/package.json\";\n\nimport { type FiltersDto, type InstructionField } from \"./FiltersDto\";\n\nvi.mock(\"axios\");\n\nexport const buildDescriptor = (\n instructions: InstructionField[],\n): FiltersDto[] => [\n {\n descriptors_eip712: {\n \"0x000000000022d473030f116ddee9f6b43ac78ba3\": {\n \"4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3\": {\n instructions,\n },\n },\n },\n },\n];\n\nexport const buildDescriptorCalldata = (\n instructions: InstructionField[],\n): FiltersDto[] => [\n {\n descriptors_eip712: {\n \"0x000000000022d473030f116ddee9f6b43ac78ba3\": {\n \"4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3\": {\n instructions,\n },\n },\n },\n },\n];\n\nconst config = {\n web3checks: {\n url: \"web3checksUrl\",\n },\n cal: {\n url: \"https://crypto-assets-service.api.ledger.com/v1\",\n mode: \"prod\",\n },\n originToken: \"originToken\",\n} as ContextModuleServiceConfig;\ndescribe(\"HttpTypedDataDataSource\", () => {\n let datasource: TypedDataDataSource;\n\n const TEST_TYPES = {\n PermitSingle: [\n {\n name: \"details\",\n type: \"PermitDetails\",\n },\n {\n name: \"spender\",\n type: \"address\",\n },\n {\n name: \"sigDeadline\",\n type: \"uint256\",\n },\n ],\n PermitDetails: [\n {\n type: \"address\",\n name: \"token\",\n },\n {\n name: \"amount\",\n type: \"uint160\",\n },\n {\n name: \"expiration\",\n type: \"uint48\",\n },\n {\n name: \"nonce\",\n type: \"uint48\",\n },\n ],\n EIP712Domain: [\n {\n name: \"name\",\n type: \"string\",\n },\n {\n name: \"chainId\",\n type: \"uint256\",\n },\n {\n name: \"verifyingContract\",\n type: \"address\",\n },\n ],\n };\n\n beforeAll(() => {\n datasource = new HttpTypedDataDataSource(config);\n vi.clearAllMocks();\n });\n\n it(\"should call axios with the ledger client version header\", async () => {\n // GIVEN\n const version = `context-module/${PACKAGE.version}`;\n const requestSpy = vi.fn(() => Promise.resolve({ data: [] }));\n vi.spyOn(axios, \"request\").mockImplementation(requestSpy);\n\n // WHEN\n await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x00\",\n version: \"v2\",\n schema: {},\n });\n\n // THEN\n expect(requestSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: version,\n [LEDGER_ORIGIN_TOKEN_HEADER]: config.originToken,\n },\n }),\n );\n });\n\n it(\"should return V2 filters when axios response is correct\", async () => {\n // GIVEN\n const filtersDTO = buildDescriptor([\n {\n display_name: \"Permit2\",\n field_mappers_count: 4,\n descriptor:\n \"b7000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3045065726d697432\",\n signatures: {\n prod: \"304402201675b7d8507b40de5136c386815afdad8012cb8e3f0e0a126c758d6fbb3f6b0f0220595cbfeeab7591d0eebe40f0e4ea8ea53beeaf89ee50b7faf97f97bdf36abbce\",\n },\n type: \"message\",\n },\n {\n display_name: \"Amount allowance\",\n format: \"token\",\n field_path: \"details.token\",\n coin_ref: 0,\n descriptor:\n \"48000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df364657461696c732e746f6b656e416d6f756e7420616c6c6f77616e6365\",\n signatures: {\n prod: \"30440220238723d4ddd47baf829d547802a2017476bf68e03d0b920fd46aa543de81d5b902206123218eae82c5f898454c45262e5b0b839dc9d84b2b0926fe14e8218b5b0d53\",\n },\n type: \"field\",\n },\n {\n display_name: \"Spender name\",\n format: \"trusted-name\",\n field_path: \"details.spender\",\n name_types: [\"contract\"],\n name_sources: [\"cal\", \"local\", \"ens\"],\n descriptor:\n \"2c000000000000a4b1ff970a61a04b1ca14834a43f5de4533ebddb5cc8d4dd8410bdcf861c48d353f8e3a9b738282a0fd9ba7239f59baa90997370656e6465725370656e64657202010002\",\n signatures: {\n prod: \"30440220238723d4ddd47baf829d547802a2017476bf68e03d0b920fd46aa543de81d5b902206123218eae82c5f898454c45262e5b0b839dc9d84b2b0926fe14e8218b5b0d54\",\n },\n type: \"field\",\n },\n {\n display_name: \"Amount allowance\",\n format: \"amount\",\n field_path: \"details.amount\",\n coin_ref: 0,\n descriptor:\n \"48000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df364657461696c732e616d6f756e74416d6f756e7420616c6c6f77616e6365\",\n signatures: {\n prod: \"30450221008f9e2f33b35872e63b2024a6d4938525c6e72364604da2d5e21b3d7fa44cac8a02207d4fe42c9d3994a322dae99adc2c56157435c177c51831103fdaf3cef12bb19f\",\n },\n type: \"field\",\n },\n {\n display_name: \"Approve to spender\",\n format: \"raw\",\n field_path: \"spender\",\n descriptor:\n \"48000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df37370656e646572417070726f766520746f207370656e646572\",\n signatures: {\n prod: \"3045022100dddb92141e3b3f21dafb60c8d5093e28b25a8dc4f926ed501b6d2021203f68bc02201abca405540e72b5b70120a428967b776edb8a88ebd9b1d7aa320c3df602027f\",\n },\n type: \"field\",\n },\n {\n display_name: \"Approval expire\",\n format: \"datetime\",\n field_path: \"details.expiration\",\n descriptor:\n \"48000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df364657461696c732e65787069726174696f6e417070726f76616c20657870697265\",\n signatures: {\n prod: \"3044022060a11c1b15d07e7172e2e68a4e4aa5cbd3b5af900907634b1bce58000eab9fb502201e40963d9e2b00948ce16d3817756329e11a81e8b14b762adff68db4b3a4b8ff\",\n },\n type: \"field\",\n },\n ]);\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022D473030F116DDEE9F6B43AC78BA3\",\n version: \"v2\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result).toEqual(\n Right({\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 4,\n signature:\n \"304402201675b7d8507b40de5136c386815afdad8012cb8e3f0e0a126c758d6fbb3f6b0f0220595cbfeeab7591d0eebe40f0e4ea8ea53beeaf89ee50b7faf97f97bdf36abbce\",\n },\n calldatasInfos: {},\n filters: [\n {\n type: \"token\",\n displayName: \"Amount allowance\",\n path: \"details.token\",\n tokenIndex: 0,\n signature:\n \"30440220238723d4ddd47baf829d547802a2017476bf68e03d0b920fd46aa543de81d5b902206123218eae82c5f898454c45262e5b0b839dc9d84b2b0926fe14e8218b5b0d53\",\n },\n {\n type: \"trusted-name\",\n displayName: \"Spender name\",\n path: \"details.spender\",\n signature:\n \"30440220238723d4ddd47baf829d547802a2017476bf68e03d0b920fd46aa543de81d5b902206123218eae82c5f898454c45262e5b0b839dc9d84b2b0926fe14e8218b5b0d54\",\n types: [\"contract\"],\n sources: [\"cal\", \"local\", \"ens\"],\n typesAndSourcesPayload: \"010203010002\",\n },\n {\n type: \"amount\",\n displayName: \"Amount allowance\",\n path: \"details.amount\",\n tokenIndex: 0,\n signature:\n \"30450221008f9e2f33b35872e63b2024a6d4938525c6e72364604da2d5e21b3d7fa44cac8a02207d4fe42c9d3994a322dae99adc2c56157435c177c51831103fdaf3cef12bb19f\",\n },\n {\n type: \"raw\",\n displayName: \"Approve to spender\",\n path: \"spender\",\n signature:\n \"3045022100dddb92141e3b3f21dafb60c8d5093e28b25a8dc4f926ed501b6d2021203f68bc02201abca405540e72b5b70120a428967b776edb8a88ebd9b1d7aa320c3df602027f\",\n },\n {\n type: \"datetime\",\n displayName: \"Approval expire\",\n path: \"details.expiration\",\n signature:\n \"3044022060a11c1b15d07e7172e2e68a4e4aa5cbd3b5af900907634b1bce58000eab9fb502201e40963d9e2b00948ce16d3817756329e11a81e8b14b762adff68db4b3a4b8ff\",\n },\n ],\n }),\n );\n });\n\n it(\"should return V2 filters with calldatas when axios response is correct\", async () => {\n // GIVEN\n const filtersDTO = buildDescriptorCalldata([\n {\n display_name: \"Multisig transaction\",\n field_mappers_count: 4,\n descriptor:\n \"b7000000000000000141675c099f32341bf84bfc5382af534df5c7461a76c51ae1c9c8eb1e9fe51d0ed8b1c65c044466a7bcb1c9f7a0f33c14084d756c7469736967207472616e73616374696f6e\",\n signatures: {\n prod: \"304402206553ac5a2ce6bb17b94f3ec559fb037af0b742d62c001d8938aad709accd71ed022075ce87c3eb65e605f0ce0b2bc4bf960498bacf109a499807d1a7906d9c78c9c4\",\n },\n type: \"message\",\n },\n {\n display_name: \"Operation type\",\n format: \"raw\",\n field_path: \"operation\",\n descriptor:\n \"48000000000000000141675c099f32341bf84bfc5382af534df5c7461a76c51ae1c9c8eb1e9fe51d0ed8b1c65c044466a7bcb1c9f7a0f33c146f7065726174696f6e4f7065726174696f6e2074797065\",\n signatures: {\n prod: \"3045022100fb9f3e7bab8ac0cd9a5722389a19d1ebdd39d7a6da6e374724a46eebee6896bc022070e991bb022111ed448540511b7fa4f70d5e92b0a3866d75cfc9d3cf1cf75d9b\",\n },\n type: \"field\",\n },\n {\n display_name: \"Transaction\",\n calldata_index: 0,\n value_filter_flag: true,\n callee_filter_flag: \"present\",\n chain_id_filter_flag: false,\n selector_filter_flag: false,\n amount_filter_flag: true,\n spender_filter_flag: \"verifying_contract\",\n descriptor:\n \"37000000000000000141675c099f32341bf84bfc5382af534df5c7461a76c51ae1c9c8eb1e9fe51d0ed8b1c65c044466a7bcb1c9f7a0f33c1400010100000102\",\n signatures: {\n prod: \"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e\",\n },\n type: \"calldata\",\n },\n {\n display_name: \"Transaction\",\n format: \"calldata-value\",\n field_path: \"data\",\n calldata_index: 0,\n descriptor:\n \"42000000000000000141675c099f32341bf84bfc5382af534df5c7461a76c51ae1c9c8eb1e9fe51d0ed8b1c65c044466a7bcb1c9f7a0f33c146461746100\",\n signatures: {\n prod: \"3044022031a3398014238d098643893885e4b8c2152a56b01c34516edda1065df62258d1022057f094a83e938be32ca70d73616af8c57cdb8846a7a71b21be5504fa74cfc53a\",\n },\n type: \"field\",\n },\n {\n display_name: \"Transaction\",\n format: \"calldata-callee\",\n field_path: \"to\",\n calldata_index: 0,\n descriptor:\n \"4d000000000000000141675c099f32341bf84bfc5382af534df5c7461a76c51ae1c9c8eb1e9fe51d0ed8b1c65c044466a7bcb1c9f7a0f33c14746f00\",\n signatures: {\n prod: \"30440220796cc549e363c5bc9f9d5bda894cf4cda11f157519f673d2b4a8b3ce716a8fba0220663c888d764084072856fe654ff425bffe671c2550068c64be9eddd6c84178b8\",\n },\n type: \"field\",\n },\n {\n display_name: \"Transaction\",\n format: \"calldata-amount\",\n field_path: \"value\",\n calldata_index: 0,\n descriptor:\n \"6e000000000000000141675c099f32341bf84bfc5382af534df5c7461a76c51ae1c9c8eb1e9fe51d0ed8b1c65c044466a7bcb1c9f7a0f33c1476616c756500\",\n signatures: {\n prod: \"3044022021601a55098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f\",\n },\n type: \"field\",\n },\n ]);\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022D473030F116DDEE9F6B43AC78BA3\",\n version: \"v2\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result).toEqual(\n Right({\n messageInfo: {\n displayName: \"Multisig transaction\",\n filtersCount: 4,\n signature:\n \"304402206553ac5a2ce6bb17b94f3ec559fb037af0b742d62c001d8938aad709accd71ed022075ce87c3eb65e605f0ce0b2bc4bf960498bacf109a499807d1a7906d9c78c9c4\",\n },\n calldatasInfos: {\n 0: {\n calldataIndex: 0,\n displayName: \"Transaction\",\n valueFlag: true,\n calleeFlag: TypedDataCalldataParamPresence.Present,\n chainIdFlag: false,\n selectorFlag: false,\n amountFlag: true,\n spenderFlag: TypedDataCalldataParamPresence.VerifyingContract,\n signature:\n \"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e\",\n },\n },\n filters: [\n {\n type: \"raw\",\n displayName: \"Operation type\",\n path: \"operation\",\n signature:\n \"3045022100fb9f3e7bab8ac0cd9a5722389a19d1ebdd39d7a6da6e374724a46eebee6896bc022070e991bb022111ed448540511b7fa4f70d5e92b0a3866d75cfc9d3cf1cf75d9b\",\n },\n {\n type: \"calldata-value\",\n displayName: \"Transaction\",\n path: \"data\",\n calldataIndex: 0,\n signature:\n \"3044022031a3398014238d098643893885e4b8c2152a56b01c34516edda1065df62258d1022057f094a83e938be32ca70d73616af8c57cdb8846a7a71b21be5504fa74cfc53a\",\n },\n {\n type: \"calldata-callee\",\n displayName: \"Transaction\",\n path: \"to\",\n calldataIndex: 0,\n signature:\n \"30440220796cc549e363c5bc9f9d5bda894cf4cda11f157519f673d2b4a8b3ce716a8fba0220663c888d764084072856fe654ff425bffe671c2550068c64be9eddd6c84178b8\",\n },\n {\n type: \"calldata-amount\",\n displayName: \"Transaction\",\n path: \"value\",\n calldataIndex: 0,\n signature:\n \"3044022021601a55098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f\",\n },\n ],\n }),\n );\n });\n\n it(\"should return V1 filters when axios response is correct\", async () => {\n // GIVEN\n const filtersDTO = buildDescriptor([\n {\n display_name: \"Permit2\",\n field_mappers_count: 4,\n descriptor:\n \"b7000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3045065726d697432\",\n signatures: {\n prod: \"304402201675b7d8507b40de5136c386815afdad8012cb8e3f0e0a126c758d6fbb3f6b0f0220595cbfeeab7591d0eebe40f0e4ea8ea53beeaf89ee50b7faf97f97bdf36abbce\",\n },\n type: \"message\",\n },\n {\n display_name: \"Amount allowance\",\n format: \"token\",\n field_path: \"details.token\",\n coin_ref: 0,\n descriptor:\n \"48000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df364657461696c732e746f6b656e416d6f756e7420616c6c6f77616e6365\",\n signatures: {\n prod: \"30440220238723d4ddd47baf829d547802a2017476bf68e03d0b920fd46aa543de81d5b902206123218eae82c5f898454c45262e5b0b839dc9d84b2b0926fe14e8218b5b0d53\",\n },\n type: \"field\",\n },\n {\n display_name: \"Amount allowance\",\n format: \"amount\",\n field_path: \"details.amount\",\n coin_ref: 0,\n descriptor:\n \"48000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df364657461696c732e616d6f756e74416d6f756e7420616c6c6f77616e6365\",\n signatures: {\n prod: \"30450221008f9e2f33b35872e63b2024a6d4938525c6e72364604da2d5e21b3d7fa44cac8a02207d4fe42c9d3994a322dae99adc2c56157435c177c51831103fdaf3cef12bb19f\",\n },\n type: \"field\",\n },\n {\n display_name: \"Approve to spender\",\n format: \"raw\",\n field_path: \"spender\",\n descriptor:\n \"48000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df37370656e646572417070726f766520746f207370656e646572\",\n signatures: {\n prod: \"3045022100dddb92141e3b3f21dafb60c8d5093e28b25a8dc4f926ed501b6d2021203f68bc02201abca405540e72b5b70120a428967b776edb8a88ebd9b1d7aa320c3df602027f\",\n },\n type: \"field\",\n },\n {\n display_name: \"Approval expire\",\n format: \"datetime\",\n field_path: \"details.expiration\",\n descriptor:\n \"48000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df364657461696c732e65787069726174696f6e417070726f76616c20657870697265\",\n signatures: {\n prod: \"3044022060a11c1b15d07e7172e2e68a4e4aa5cbd3b5af900907634b1bce58000eab9fb502201e40963d9e2b00948ce16d3817756329e11a81e8b14b762adff68db4b3a4b8ff\",\n },\n type: \"field\",\n },\n ]);\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v1\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result).toEqual(\n Right({\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 4,\n signature:\n \"304402201675b7d8507b40de5136c386815afdad8012cb8e3f0e0a126c758d6fbb3f6b0f0220595cbfeeab7591d0eebe40f0e4ea8ea53beeaf89ee50b7faf97f97bdf36abbce\",\n },\n calldatasInfos: {},\n filters: [\n {\n type: \"raw\",\n displayName: \"Amount allowance\",\n path: \"details.token\",\n signature:\n \"30440220238723d4ddd47baf829d547802a2017476bf68e03d0b920fd46aa543de81d5b902206123218eae82c5f898454c45262e5b0b839dc9d84b2b0926fe14e8218b5b0d53\",\n },\n {\n type: \"raw\",\n displayName: \"Amount allowance\",\n path: \"details.amount\",\n signature:\n \"30450221008f9e2f33b35872e63b2024a6d4938525c6e72364604da2d5e21b3d7fa44cac8a02207d4fe42c9d3994a322dae99adc2c56157435c177c51831103fdaf3cef12bb19f\",\n },\n {\n type: \"raw\",\n displayName: \"Approve to spender\",\n path: \"spender\",\n signature:\n \"3045022100dddb92141e3b3f21dafb60c8d5093e28b25a8dc4f926ed501b6d2021203f68bc02201abca405540e72b5b70120a428967b776edb8a88ebd9b1d7aa320c3df602027f\",\n },\n {\n type: \"raw\",\n displayName: \"Approval expire\",\n path: \"details.expiration\",\n signature:\n \"3044022060a11c1b15d07e7172e2e68a4e4aa5cbd3b5af900907634b1bce58000eab9fb502201e40963d9e2b00948ce16d3817756329e11a81e8b14b762adff68db4b3a4b8ff\",\n },\n ],\n }),\n );\n });\n\n it(\"should find descriptor when match is not in first element of response.data\", async () => {\n const match = buildDescriptor([\n {\n display_name: \"Permit2\",\n field_mappers_count: 0,\n descriptor: \"\",\n signatures: { prod: \"sig\" },\n type: \"message\",\n },\n ]);\n vi.spyOn(axios, \"request\").mockResolvedValue({\n data: [{ descriptors_eip712: {} }, ...match],\n });\n\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022D473030F116DDEE9F6B43AC78BA3\",\n version: \"v2\",\n schema: TEST_TYPES,\n });\n\n expect(result).toEqual(\n Right({\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 0,\n signature: \"sig\",\n },\n calldatasInfos: {},\n filters: [],\n }),\n );\n });\n\n it(\"should return an error when data is empty\", async () => {\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: undefined });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v1\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result.isLeft()).toEqual(true);\n expect(result.extract()).toEqual(\n new Error(\n `[ContextModule] HttpTypedDataDataSource: no typed data filters for address 0x000000000022d473030f116ddee9f6b43ac78ba3 on chain 1 for schema 4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3`,\n ),\n );\n });\n\n it(\"should return an error when schema is not found\", async () => {\n const filtersDTO = buildDescriptor([]);\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v1\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result.isLeft()).toEqual(true);\n expect(result.extract()).toEqual(\n new Error(\n `[ContextModule] HttpTypedDataDataSource: no message info for address 0x000000000022d473030f116ddee9f6b43ac78ba3 on chain 1 for schema 4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3`,\n ),\n );\n });\n\n it(\"should return an error when schema is undefined\", async () => {\n const filtersDTO = buildDescriptor(\n undefined as unknown as InstructionField[],\n );\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v1\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result.isLeft()).toEqual(true);\n expect(result.extract()).toEqual(\n new Error(\n `[ContextModule] HttpTypedDataDataSource: no message info for address 0x000000000022d473030f116ddee9f6b43ac78ba3 on chain 1 for schema 4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3`,\n ),\n );\n });\n\n it(\"should return an error if no message info is found\", async () => {\n const filtersDTO = buildDescriptor([\n {\n display_name: \"Amount allowance\",\n format: \"token\",\n field_path: \"details.token\",\n coin_ref: 0,\n descriptor:\n \"48000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df364657461696c732e746f6b656e416d6f756e7420616c6c6f77616e6365\",\n signatures: {\n prod: \"30440220238723d4ddd47baf829d547802a2017476bf68e03d0b920fd46aa543de81d5b902206123218eae82c5f898454c45262e5b0b839dc9d84b2b0926fe14e8218b5b0d53\",\n },\n type: \"field\",\n },\n ]);\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v1\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result.isLeft()).toEqual(true);\n expect(result.extract()).toEqual(\n new Error(\n `[ContextModule] HttpTypedDataDataSource: no message info for address 0x000000000022d473030f116ddee9f6b43ac78ba3 on chain 1 for schema 4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3`,\n ),\n );\n });\n\n it(\"should return an error if message info display name is missing\", async () => {\n const filtersDTO = buildDescriptor([\n {\n // display_name: \"Permit2\",\n field_mappers_count: 4,\n descriptor:\n \"b7000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3045065726d697432\",\n signatures: {\n prod: \"304402201675b7d8507b40de5136c386815afdad8012cb8e3f0e0a126c758d6fbb3f6b0f0220595cbfeeab7591d0eebe40f0e4ea8ea53beeaf89ee50b7faf97f97bdf36abbce\",\n },\n type: \"message\",\n } as InstructionField,\n ]);\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v1\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result.isLeft()).toEqual(true);\n expect(result.extract()).toEqual(\n new Error(\n `[ContextModule] HttpTypedDataDataSource: invalid typed data field for address 0x000000000022d473030f116ddee9f6b43ac78ba3 on chain 1 for schema 4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3`,\n ),\n );\n });\n\n it(\"should return an error if field path is invalid\", async () => {\n const filtersDTO = buildDescriptor([\n {\n display_name: \"Amount allowance\",\n format: \"token\",\n // field_path: \"details.token\",\n coin_ref: 0,\n descriptor:\n \"48000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df364657461696c732e746f6b656e416d6f756e7420616c6c6f77616e6365\",\n signatures: {\n prod: \"30440220238723d4ddd47baf829d547802a2017476bf68e03d0b920fd46aa543de81d5b902206123218eae82c5f898454c45262e5b0b839dc9d84b2b0926fe14e8218b5b0d53\",\n },\n type: \"field\",\n } as InstructionField,\n ]);\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v1\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result.isLeft()).toEqual(true);\n expect(result.extract()).toEqual(\n new Error(\n `[ContextModule] HttpTypedDataDataSource: invalid typed data field for address 0x000000000022d473030f116ddee9f6b43ac78ba3 on chain 1 for schema 4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3`,\n ),\n );\n });\n\n it(\"should return an error if field display_name is invalid\", async () => {\n const filtersDTO = buildDescriptor([\n {\n // display_name: \"Amount allowance\",\n format: \"token\",\n field_path: \"details.token\",\n coin_ref: 0,\n descriptor:\n \"48000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df364657461696c732e746f6b656e416d6f756e7420616c6c6f77616e6365\",\n signatures: {\n prod: \"30440220238723d4ddd47baf829d547802a2017476bf68e03d0b920fd46aa543de81d5b902206123218eae82c5f898454c45262e5b0b839dc9d84b2b0926fe14e8218b5b0d53\",\n },\n type: \"field\",\n } as InstructionField,\n ]);\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v1\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result.isLeft()).toEqual(true);\n expect(result.extract()).toEqual(\n new Error(\n `[ContextModule] HttpTypedDataDataSource: invalid typed data field for address 0x000000000022d473030f116ddee9f6b43ac78ba3 on chain 1 for schema 4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3`,\n ),\n );\n });\n\n it(\"should return an error if field signatures.prod is missing\", async () => {\n const filtersDTO = buildDescriptor([\n {\n display_name: \"Amount allowance\",\n format: \"token\",\n field_path: \"details.token\",\n coin_ref: 0,\n descriptor:\n \"48000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df364657461696c732e746f6b656e416d6f756e7420616c6c6f77616e6365\",\n signatures: {\n test: \"30440220238723d4ddd47baf829d547802a2017476bf68e03d0b920fd46aa543de81d5b902206123218eae82c5f898454c45262e5b0b839dc9d84b2b0926fe14e8218b5b0d53\",\n },\n type: \"field\",\n } as InstructionField,\n ]);\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v1\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result.isLeft()).toEqual(true);\n expect(result.extract()).toEqual(\n new Error(\n `[ContextModule] HttpTypedDataDataSource: invalid typed data field for address 0x000000000022d473030f116ddee9f6b43ac78ba3 on chain 1 for schema 4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3`,\n ),\n );\n });\n\n it(\"should return an error on token fileds with coin ref to null\", async () => {\n const filtersDTO = buildDescriptor([\n {\n display_name: \"Amount allowance\",\n format: \"token\",\n field_path: \"details.token\",\n coin_ref: null,\n descriptor:\n \"48000000000000a4b1000000000022d473030f116ddee9f6b43ac78ba34d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df364657461696c732e746f6b656e416d6f756e7420616c6c6f77616e6365\",\n signatures: {\n prod: \"30440220238723d4ddd47baf829d547802a2017476bf68e03d0b920fd46aa543de81d5b902206123218eae82c5f898454c45262e5b0b839dc9d84b2b0926fe14e8218b5b0d53\",\n },\n type: \"field\",\n } as unknown as InstructionField,\n ]);\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v2\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result.isLeft()).toEqual(true);\n expect(result.extract()).toEqual(\n new Error(\n `[ContextModule] HttpTypedDataDataSource: invalid typed data field for address 0x000000000022d473030f116ddee9f6b43ac78ba3 on chain 1 for schema 4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3`,\n ),\n );\n });\n\n it(\"should return an error on trusted names without sources and types\", async () => {\n const filtersDTO = buildDescriptor([\n {\n display_name: \"Amount allowance\",\n format: \"trusted-name\",\n field_path: \"details.token\",\n descriptor:\n \"2c000000000000a4b1ff970a61a04b1ca14834a43f5de4533ebddb5cc8d4dd8410bdcf861c48d353f8e3a9b738282a0fd9ba7239f59baa90997370656e6465725370656e64657202010002\",\n signatures: {\n prod: \"30440220238723d4ddd47baf829d547802a2017476bf68e03d0b920fd46aa543de81d5b902206123218eae82c5f898454c45262e5b0b839dc9d84b2b0926fe14e8218b5b0d53\",\n },\n type: \"field\",\n } as unknown as InstructionField,\n ]);\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v2\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result.isLeft()).toEqual(true);\n expect(result.extract()).toEqual(\n new Error(\n `[ContextModule] HttpTypedDataDataSource: invalid typed data field for address 0x000000000022d473030f116ddee9f6b43ac78ba3 on chain 1 for schema 4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3`,\n ),\n );\n });\n\n it(\"should return an error on calldata info with flags undefined\", async () => {\n const filtersDTO = buildDescriptorCalldata([\n {\n display_name: \"Transaction\",\n calldata_index: 0,\n callee_filter_flag: \"present\",\n chain_id_filter_flag: false,\n selector_filter_flag: false,\n amount_filter_flag: true,\n descriptor:\n \"37000000000000000141675c099f32341bf84bfc5382af534df5c7461a76c51ae1c9c8eb1e9fe51d0ed8b1c65c044466a7bcb1c9f7a0f33c1400010100000102\",\n signatures: {\n prod: \"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e\",\n },\n type: \"calldata\",\n } as unknown as InstructionField,\n ]);\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v2\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result.isLeft()).toEqual(true);\n expect(result.extract()).toEqual(\n new Error(\n `[ContextModule] HttpTypedDataDataSource: invalid typed data field for address 0x000000000022d473030f116ddee9f6b43ac78ba3 on chain 1 for schema 4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3`,\n ),\n );\n });\n\n it(\"should return an error on calldata field with calldata_index undefined\", async () => {\n const filtersDTO = buildDescriptorCalldata([\n {\n display_name: \"Transaction\",\n format: \"calldata-value\",\n field_path: \"data\",\n descriptor:\n \"42000000000000000141675c099f32341bf84bfc5382af534df5c7461a76c51ae1c9c8eb1e9fe51d0ed8b1c65c044466a7bcb1c9f7a0f33c146461746100\",\n signatures: {\n prod: \"3044022031a3398014238d098643893885e4b8c2152a56b01c34516edda1065df62258d1022057f094a83e938be32ca70d73616af8c57cdb8846a7a71b21be5504fa74cfc53a\",\n },\n type: \"field\",\n } as unknown as InstructionField,\n ]);\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: filtersDTO });\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v2\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result.isLeft()).toEqual(true);\n expect(result.extract()).toEqual(\n new Error(\n `[ContextModule] HttpTypedDataDataSource: invalid typed data field for address 0x000000000022d473030f116ddee9f6b43ac78ba3 on chain 1 for schema 4d593149e876e739220f3b5ede1b38a0213d76c4705b1547c4323df3`,\n ),\n );\n });\n\n it(\"should return an error when axios throws an error\", async () => {\n // GIVEN\n vi.spyOn(axios, \"request\").mockRejectedValue(new Error(\"error\"));\n\n // WHEN\n const result = await datasource.getTypedDataFilters({\n chainId: 1,\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n version: \"v1\",\n schema: TEST_TYPES,\n });\n\n // THEN\n expect(result.isLeft()).toEqual(true);\n });\n});\n"],
5
5
  "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,EAAA,4BAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAAkB,oBAClBC,EAAsB,qBAGtBC,EAGO,yCACPC,EAA+C,oDAC/CC,EAAwC,qDAExCC,EAAoB,iCAIpB,GAAG,KAAK,OAAO,EAER,MAAMR,EACXS,GACiB,CACjB,CACE,mBAAoB,CAClB,6CAA8C,CAC5C,2DAA4D,CAC1D,aAAAA,CACF,CACF,CACF,CACF,CACF,EAEaR,EACXQ,GACiB,CACjB,CACE,mBAAoB,CAClB,6CAA8C,CAC5C,2DAA4D,CAC1D,aAAAA,CACF,CACF,CACF,CACF,CACF,EAEMC,EAAS,CACb,WAAY,CACV,IAAK,eACP,EACA,IAAK,CACH,IAAK,kDACL,KAAM,MACR,EACA,YAAa,aACf,EACA,SAAS,0BAA2B,IAAM,CACxC,IAAIC,EAEJ,MAAMC,EAAa,CACjB,aAAc,CACZ,CACE,KAAM,UACN,KAAM,eACR,EACA,CACE,KAAM,UACN,KAAM,SACR,EACA,CACE,KAAM,cACN,KAAM,SACR,CACF,EACA,cAAe,CACb,CACE,KAAM,UACN,KAAM,OACR,EACA,CACE,KAAM,SACN,KAAM,SACR,EACA,CACE,KAAM,aACN,KAAM,QACR,EACA,CACE,KAAM,QACN,KAAM,QACR,CACF,EACA,aAAc,CACZ,CACE,KAAM,OACN,KAAM,QACR,EACA,CACE,KAAM,UACN,KAAM,SACR,EACA,CACE,KAAM,oBACN,KAAM,SACR,CACF,CACF,EAEA,UAAU,IAAM,CACdD,EAAa,IAAI,0BAAwBD,CAAM,EAC/C,GAAG,cAAc,CACnB,CAAC,EAED,GAAG,0DAA2D,SAAY,CAExE,MAAMG,EAAU,kBAAkB,EAAAC,QAAQ,OAAO,GAC3CC,EAAa,GAAG,GAAG,IAAM,QAAQ,QAAQ,CAAE,KAAM,CAAC,CAAE,CAAC,CAAC,EAC5D,GAAG,MAAM,EAAAC,QAAO,SAAS,EAAE,mBAAmBD,CAAU,EAGxD,MAAMJ,EAAW,oBAAoB,CACnC,QAAS,EACT,QAAS,OACT,QAAS,KACT,OAAQ,CAAC,CACX,CAAC,EAGD,OAAOI,CAAU,EAAE,qBACjB,OAAO,iBAAiB,CACtB,QAAS,CACP,CAAC,8BAA4B,EAAGF,EAChC,CAAC,4BAA0B,EAAGH,EAAO,WACvC,CACF,CAAC,CACH,CACF,CAAC,EAED,GAAG,0DAA2D,SAAY,CAExE,MAAMO,EAAajB,EAAgB,CACjC,CACE,aAAc,UACd,oBAAqB,EACrB,WACE,qIACF,WAAY,CACV,KAAM,8IACR,EACA,KAAM,SACR,EACA,CACE,aAAc,mBACd,OAAQ,QACR,WAAY,gBACZ,SAAU,EACV,WACE,+KACF,WAAY,CACV,KAAM,8IACR,EACA,KAAM,OACR,EACA,CACE,aAAc,eACd,OAAQ,eACR,WAAY,kBACZ,WAAY,CAAC,UAAU,EACvB,aAAc,CAAC,MAAO,QAAS,KAAK,EACpC,WACE,yJACF,WAAY,CACV,KAAM,8IACR,EACA,KAAM,OACR,EACA,CACE,aAAc,mBACd,OAAQ,SACR,WAAY,iBACZ,SAAU,EACV,WACE,iLACF,WAAY,CACV,KAAM,gJACR,EACA,KAAM,OACR,EACA,CACE,aAAc,qBACd,OAAQ,MACR,WAAY,UACZ,WACE,uKACF,WAAY,CACV,KAAM,gJACR,EACA,KAAM,OACR,EACA,CACE,aAAc,kBACd,OAAQ,WACR,WAAY,qBACZ,WACE,uLACF,WAAY,CACV,KAAM,8IACR,EACA,KAAM,OACR,CACF,CAAC,EACD,GAAG,MAAM,EAAAgB,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAMC,CAAW,CAAC,EAGjE,MAAMC,EAAS,MAAMP,EAAW,oBAAoB,CAClD,QAAS,EACT,QAAS,6CACT,QAAS,KACT,OAAQC,CACV,CAAC,EAGD,OAAOM,CAAM,EAAE,WACb,SAAM,CACJ,YAAa,CACX,YAAa,UACb,aAAc,EACd,UACE,8IACJ,EACA,eAAgB,CAAC,EACjB,QAAS,CACP,CACE,KAAM,QACN,YAAa,mBACb,KAAM,gBACN,WAAY,EACZ,UACE,8IACJ,EACA,CACE,KAAM,eACN,YAAa,eACb,KAAM,kBACN,UACE,+IACF,MAAO,CAAC,UAAU,EAClB,QAAS,CAAC,MAAO,QAAS,KAAK,EAC/B,uBAAwB,cAC1B,EACA,CACE,KAAM,SACN,YAAa,mBACb,KAAM,iBACN,WAAY,EACZ,UACE,gJACJ,EACA,CACE,KAAM,MACN,YAAa,qBACb,KAAM,UACN,UACE,gJACJ,EACA,CACE,KAAM,WACN,YAAa,kBACb,KAAM,qBACN,UACE,8IACJ,CACF,CACF,CAAC,CACH,CACF,CAAC,EAED,GAAG,yEAA0E,SAAY,CAEvF,MAAMD,EAAahB,EAAwB,CACzC,CACE,aAAc,uBACd,oBAAqB,EACrB,WACE,+JACF,WAAY,CACV,KAAM,8IACR,EACA,KAAM,SACR,EACA,CACE,aAAc,iBACd,OAAQ,MACR,WAAY,YACZ,WACE,mKACF,WAAY,CACV,KAAM,gJACR,EACA,KAAM,OACR,EACA,CACE,aAAc,cACd,eAAgB,EAChB,kBAAmB,GACnB,mBAAoB,UACpB,qBAAsB,GACtB,qBAAsB,GACtB,mBAAoB,GACpB,oBAAqB,qBACrB,WACE,mIACF,WAAY,CACV,KAAM,gJACR,EACA,KAAM,UACR,EACA,CACE,aAAc,cACd,OAAQ,iBACR,WAAY,OACZ,eAAgB,EAChB,WACE,+HACF,WAAY,CACV,KAAM,8IACR,EACA,KAAM,OACR,EACA,CACE,aAAc,cACd,OAAQ,kBACR,WAAY,KACZ,eAAgB,EAChB,WACE,2HACF,WAAY,CACV,KAAM,8IACR,EACA,KAAM,OACR,EACA,CACE,aAAc,cACd,OAAQ,kBACR,WAAY,QACZ,eAAgB,EAChB,WACE,iIACF,WAAY,CACV,KAAM,8IACR,EACA,KAAM,OACR,CACF,CAAC,EACD,GAAG,MAAM,EAAAe,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAMC,CAAW,CAAC,EAGjE,MAAMC,EAAS,MAAMP,EAAW,oBAAoB,CAClD,QAAS,EACT,QAAS,6CACT,QAAS,KACT,OAAQC,CACV,CAAC,EAGD,OAAOM,CAAM,EAAE,WACb,SAAM,CACJ,YAAa,CACX,YAAa,uBACb,aAAc,EACd,UACE,8IACJ,EACA,eAAgB,CACd,EAAG,CACD,cAAe,EACf,YAAa,cACb,UAAW,GACX,WAAY,iCAA+B,QAC3C,YAAa,GACb,aAAc,GACd,WAAY,GACZ,YAAa,iCAA+B,kBAC5C,UACE,gJACJ,CACF,EACA,QAAS,CACP,CACE,KAAM,MACN,YAAa,iBACb,KAAM,YACN,UACE,gJACJ,EACA,CACE,KAAM,iBACN,YAAa,cACb,KAAM,OACN,cAAe,EACf,UACE,8IACJ,EACA,CACE,KAAM,kBACN,YAAa,cACb,KAAM,KACN,cAAe,EACf,UACE,8IACJ,EACA,CACE,KAAM,kBACN,YAAa,cACb,KAAM,QACN,cAAe,EACf,UACE,8IACJ,CACF,CACF,CAAC,CACH,CACF,CAAC,EAED,GAAG,0DAA2D,SAAY,CAExE,MAAMD,EAAajB,EAAgB,CACjC,CACE,aAAc,UACd,oBAAqB,EACrB,WACE,qIACF,WAAY,CACV,KAAM,8IACR,EACA,KAAM,SACR,EACA,CACE,aAAc,mBACd,OAAQ,QACR,WAAY,gBACZ,SAAU,EACV,WACE,+KACF,WAAY,CACV,KAAM,8IACR,EACA,KAAM,OACR,EACA,CACE,aAAc,mBACd,OAAQ,SACR,WAAY,iBACZ,SAAU,EACV,WACE,iLACF,WAAY,CACV,KAAM,gJACR,EACA,KAAM,OACR,EACA,CACE,aAAc,qBACd,OAAQ,MACR,WAAY,UACZ,WACE,uKACF,WAAY,CACV,KAAM,gJACR,EACA,KAAM,OACR,EACA,CACE,aAAc,kBACd,OAAQ,WACR,WAAY,qBACZ,WACE,uLACF,WAAY,CACV,KAAM,8IACR,EACA,KAAM,OACR,CACF,CAAC,EACD,GAAG,MAAM,EAAAgB,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAMC,CAAW,CAAC,EAGjE,MAAMC,EAAS,MAAMP,EAAW,oBAAoB,CAClD,QAAS,EACT,QAAS,6CACT,QAAS,KACT,OAAQC,CACV,CAAC,EAGD,OAAOM,CAAM,EAAE,WACb,SAAM,CACJ,YAAa,CACX,YAAa,UACb,aAAc,EACd,UACE,8IACJ,EACA,eAAgB,CAAC,EACjB,QAAS,CACP,CACE,KAAM,MACN,YAAa,mBACb,KAAM,gBACN,UACE,8IACJ,EACA,CACE,KAAM,MACN,YAAa,mBACb,KAAM,iBACN,UACE,gJACJ,EACA,CACE,KAAM,MACN,YAAa,qBACb,KAAM,UACN,UACE,gJACJ,EACA,CACE,KAAM,MACN,YAAa,kBACb,KAAM,qBACN,UACE,8IACJ,CACF,CACF,CAAC,CACH,CACF,CAAC,EAED,GAAG,6EAA8E,SAAY,CAC3F,MAAMC,EAAQnB,EAAgB,CAC5B,CACE,aAAc,UACd,oBAAqB,EACrB,WAAY,GACZ,WAAY,CAAE,KAAM,KAAM,EAC1B,KAAM,SACR,CACF,CAAC,EACD,GAAG,MAAM,EAAAgB,QAAO,SAAS,EAAE,kBAAkB,CAC3C,KAAM,CAAC,CAAE,mBAAoB,CAAC,CAAE,EAAG,GAAGG,CAAK,CAC7C,CAAC,EAED,MAAMD,EAAS,MAAMP,EAAW,oBAAoB,CAClD,QAAS,EACT,QAAS,6CACT,QAAS,KACT,OAAQC,CACV,CAAC,EAED,OAAOM,CAAM,EAAE,WACb,SAAM,CACJ,YAAa,CACX,YAAa,UACb,aAAc,EACd,UAAW,KACb,EACA,eAAgB,CAAC,EACjB,QAAS,CAAC,CACZ,CAAC,CACH,CACF,CAAC,EAED,GAAG,4CAA6C,SAAY,CAE1D,GAAG,MAAM,EAAAF,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAM,MAAU,CAAC,EAGhE,MAAME,EAAS,MAAMP,EAAW,oBAAoB,CAClD,QAAS,EACT,QAAS,6CACT,QAAS,KACT,OAAQC,CACV,CAAC,EAGD,OAAOM,EAAO,OAAO,CAAC,EAAE,QAAQ,EAAI,EACpC,OAAOA,EAAO,QAAQ,CAAC,EAAE,QACvB,IAAI,MACF,sMACF,CACF,CACF,CAAC,EAED,GAAG,kDAAmD,SAAY,CAChE,MAAMD,EAAajB,EAAgB,CAAC,CAAC,EAErC,GAAG,MAAM,EAAAgB,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAMC,CAAW,CAAC,EAGjE,MAAMC,EAAS,MAAMP,EAAW,oBAAoB,CAClD,QAAS,EACT,QAAS,6CACT,QAAS,KACT,OAAQC,CACV,CAAC,EAGD,OAAOM,EAAO,OAAO,CAAC,EAAE,QAAQ,EAAI,EACpC,OAAOA,EAAO,QAAQ,CAAC,EAAE,QACvB,IAAI,MACF,gMACF,CACF,CACF,CAAC,EAED,GAAG,kDAAmD,SAAY,CAChE,MAAMD,EAAajB,EACjB,MACF,EAEA,GAAG,MAAM,EAAAgB,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAMC,CAAW,CAAC,EAGjE,MAAMC,EAAS,MAAMP,EAAW,oBAAoB,CAClD,QAAS,EACT,QAAS,6CACT,QAAS,KACT,OAAQC,CACV,CAAC,EAGD,OAAOM,EAAO,OAAO,CAAC,EAAE,QAAQ,EAAI,EACpC,OAAOA,EAAO,QAAQ,CAAC,EAAE,QACvB,IAAI,MACF,gMACF,CACF,CACF,CAAC,EAED,GAAG,qDAAsD,SAAY,CACnE,MAAMD,EAAajB,EAAgB,CACjC,CACE,aAAc,mBACd,OAAQ,QACR,WAAY,gBACZ,SAAU,EACV,WACE,+KACF,WAAY,CACV,KAAM,8IACR,EACA,KAAM,OACR,CACF,CAAC,EAED,GAAG,MAAM,EAAAgB,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAMC,CAAW,CAAC,EAGjE,MAAMC,EAAS,MAAMP,EAAW,oBAAoB,CAClD,QAAS,EACT,QAAS,6CACT,QAAS,KACT,OAAQC,CACV,CAAC,EAGD,OAAOM,EAAO,OAAO,CAAC,EAAE,QAAQ,EAAI,EACpC,OAAOA,EAAO,QAAQ,CAAC,EAAE,QACvB,IAAI,MACF,gMACF,CACF,CACF,CAAC,EAED,GAAG,iEAAkE,SAAY,CAC/E,MAAMD,EAAajB,EAAgB,CACjC,CAEE,oBAAqB,EACrB,WACE,qIACF,WAAY,CACV,KAAM,8IACR,EACA,KAAM,SACR,CACF,CAAC,EAED,GAAG,MAAM,EAAAgB,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAMC,CAAW,CAAC,EAGjE,MAAMC,EAAS,MAAMP,EAAW,oBAAoB,CAClD,QAAS,EACT,QAAS,6CACT,QAAS,KACT,OAAQC,CACV,CAAC,EAGD,OAAOM,EAAO,OAAO,CAAC,EAAE,QAAQ,EAAI,EACpC,OAAOA,EAAO,QAAQ,CAAC,EAAE,QACvB,IAAI,MACF,yMACF,CACF,CACF,CAAC,EAED,GAAG,kDAAmD,SAAY,CAChE,MAAMD,EAAajB,EAAgB,CACjC,CACE,aAAc,mBACd,OAAQ,QAER,SAAU,EACV,WACE,+KACF,WAAY,CACV,KAAM,8IACR,EACA,KAAM,OACR,CACF,CAAC,EAED,GAAG,MAAM,EAAAgB,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAMC,CAAW,CAAC,EAGjE,MAAMC,EAAS,MAAMP,EAAW,oBAAoB,CAClD,QAAS,EACT,QAAS,6CACT,QAAS,KACT,OAAQC,CACV,CAAC,EAGD,OAAOM,EAAO,OAAO,CAAC,EAAE,QAAQ,EAAI,EACpC,OAAOA,EAAO,QAAQ,CAAC,EAAE,QACvB,IAAI,MACF,yMACF,CACF,CACF,CAAC,EAED,GAAG,0DAA2D,SAAY,CACxE,MAAMD,EAAajB,EAAgB,CACjC,CAEE,OAAQ,QACR,WAAY,gBACZ,SAAU,EACV,WACE,+KACF,WAAY,CACV,KAAM,8IACR,EACA,KAAM,OACR,CACF,CAAC,EAED,GAAG,MAAM,EAAAgB,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAMC,CAAW,CAAC,EAGjE,MAAMC,EAAS,MAAMP,EAAW,oBAAoB,CAClD,QAAS,EACT,QAAS,6CACT,QAAS,KACT,OAAQC,CACV,CAAC,EAGD,OAAOM,EAAO,OAAO,CAAC,EAAE,QAAQ,EAAI,EACpC,OAAOA,EAAO,QAAQ,CAAC,EAAE,QACvB,IAAI,MACF,yMACF,CACF,CACF,CAAC,EAED,GAAG,6DAA8D,SAAY,CAC3E,MAAMD,EAAajB,EAAgB,CACjC,CACE,aAAc,mBACd,OAAQ,QACR,WAAY,gBACZ,SAAU,EACV,WACE,+KACF,WAAY,CACV,KAAM,8IACR,EACA,KAAM,OACR,CACF,CAAC,EAED,GAAG,MAAM,EAAAgB,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAMC,CAAW,CAAC,EAGjE,MAAMC,EAAS,MAAMP,EAAW,oBAAoB,CAClD,QAAS,EACT,QAAS,6CACT,QAAS,KACT,OAAQC,CACV,CAAC,EAGD,OAAOM,EAAO,OAAO,CAAC,EAAE,QAAQ,EAAI,EACpC,OAAOA,EAAO,QAAQ,CAAC,EAAE,QACvB,IAAI,MACF,yMACF,CACF,CACF,CAAC,EAED,GAAG,+DAAgE,SAAY,CAC7E,MAAMD,EAAajB,EAAgB,CACjC,CACE,aAAc,mBACd,OAAQ,QACR,WAAY,gBACZ,SAAU,KACV,WACE,+KACF,WAAY,CACV,KAAM,8IACR,EACA,KAAM,OACR,CACF,CAAC,EAED,GAAG,MAAM,EAAAgB,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAMC,CAAW,CAAC,EAGjE,MAAMC,EAAS,MAAMP,EAAW,oBAAoB,CAClD,QAAS,EACT,QAAS,6CACT,QAAS,KACT,OAAQC,CACV,CAAC,EAGD,OAAOM,EAAO,OAAO,CAAC,EAAE,QAAQ,EAAI,EACpC,OAAOA,EAAO,QAAQ,CAAC,EAAE,QACvB,IAAI,MACF,yMACF,CACF,CACF,CAAC,EAED,GAAG,oEAAqE,SAAY,CAClF,MAAMD,EAAajB,EAAgB,CACjC,CACE,aAAc,mBACd,OAAQ,eACR,WAAY,gBACZ,WACE,yJACF,WAAY,CACV,KAAM,8IACR,EACA,KAAM,OACR,CACF,CAAC,EAED,GAAG,MAAM,EAAAgB,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAMC,CAAW,CAAC,EAGjE,MAAMC,EAAS,MAAMP,EAAW,oBAAoB,CAClD,QAAS,EACT,QAAS,6CACT,QAAS,KACT,OAAQC,CACV,CAAC,EAGD,OAAOM,EAAO,OAAO,CAAC,EAAE,QAAQ,EAAI,EACpC,OAAOA,EAAO,QAAQ,CAAC,EAAE,QACvB,IAAI,MACF,yMACF,CACF,CACF,CAAC,EAED,GAAG,+DAAgE,SAAY,CAC7E,MAAMD,EAAahB,EAAwB,CACzC,CACE,aAAc,cACd,eAAgB,EAChB,mBAAoB,UACpB,qBAAsB,GACtB,qBAAsB,GACtB,mBAAoB,GACpB,WACE,mIACF,WAAY,CACV,KAAM,gJACR,EACA,KAAM,UACR,CACF,CAAC,EAED,GAAG,MAAM,EAAAe,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAMC,CAAW,CAAC,EAGjE,MAAMC,EAAS,MAAMP,EAAW,oBAAoB,CAClD,QAAS,EACT,QAAS,6CACT,QAAS,KACT,OAAQC,CACV,CAAC,EAGD,OAAOM,EAAO,OAAO,CAAC,EAAE,QAAQ,EAAI,EACpC,OAAOA,EAAO,QAAQ,CAAC,EAAE,QACvB,IAAI,MACF,yMACF,CACF,CACF,CAAC,EAED,GAAG,yEAA0E,SAAY,CACvF,MAAMD,EAAahB,EAAwB,CACzC,CACE,aAAc,cACd,OAAQ,iBACR,WAAY,OACZ,WACE,+HACF,WAAY,CACV,KAAM,8IACR,EACA,KAAM,OACR,CACF,CAAC,EAED,GAAG,MAAM,EAAAe,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAMC,CAAW,CAAC,EAGjE,MAAMC,EAAS,MAAMP,EAAW,oBAAoB,CAClD,QAAS,EACT,QAAS,6CACT,QAAS,KACT,OAAQC,CACV,CAAC,EAGD,OAAOM,EAAO,OAAO,CAAC,EAAE,QAAQ,EAAI,EACpC,OAAOA,EAAO,QAAQ,CAAC,EAAE,QACvB,IAAI,MACF,yMACF,CACF,CACF,CAAC,EAED,GAAG,oDAAqD,SAAY,CAElE,GAAG,MAAM,EAAAF,QAAO,SAAS,EAAE,kBAAkB,IAAI,MAAM,OAAO,CAAC,EAG/D,MAAME,EAAS,MAAMP,EAAW,oBAAoB,CAClD,QAAS,EACT,QAAS,6CACT,QAAS,KACT,OAAQC,CACV,CAAC,EAGD,OAAOM,EAAO,OAAO,CAAC,EAAE,QAAQ,EAAI,CACtC,CAAC,CACH,CAAC",
6
6
  "names": ["HttpTypedDataDataSource_test_exports", "__export", "buildDescriptor", "buildDescriptorCalldata", "__toCommonJS", "import_axios", "import_purify_ts", "import_HttpHeaders", "import_TypedDataClearSignContext", "import_HttpTypedDataDataSource", "import_package", "instructions", "config", "datasource", "TEST_TYPES", "version", "PACKAGE", "requestSpy", "axios", "filtersDTO", "result", "match"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ "use strict";var p=Object.create;var o=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var S=Object.getPrototypeOf,i=Object.prototype.hasOwnProperty;var y=(e,t)=>{for(var a in t)o(e,a,{get:t[a],enumerable:!0})},c=(e,t,a,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let m of s(t))!i.call(e,m)&&m!==a&&o(e,m,{get:()=>t[m],enumerable:!(r=h(t,m))||r.enumerable});return e};var d=(e,t,a)=>(a=e!=null?p(S(e)):{},c(t||!e||!e.__esModule?o(a,"default",{value:e,enumerable:!0}):a,e)),f=e=>c(o({},"__esModule",{value:!0}),e);var g={};y(g,{getSchemaHash:()=>T});module.exports=f(g);var n=d(require("crypto-js/sha224"));function D(e){return Object.fromEntries(Object.entries(e).sort(([t],[a])=>t.localeCompare(a)).map(([t,a])=>[t,a.map(r=>({name:r.name,type:r.type}))]))}function T(e){const t=D(e),a=JSON.stringify(t);return(0,n.default)(a).toString()}0&&(module.exports={getSchemaHash});
2
+ //# sourceMappingURL=getSchemaHash.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/typed-data/utils/getSchemaHash.ts"],
4
+ "sourcesContent": ["import SHA224 from \"crypto-js/sha224\";\n\nimport type { TypedDataSchema } from \"@/shared/model/TypedDataContext\";\n\n/**\n * Schema hash is the SHA-224 hex digest of the compact JSON UTF-8 representation\n * of the EIP-712 schema (types object), with keys sorted for deterministic output.\n */\nexport type SchemaHash = string;\n\n/**\n * Sorts the schema by type name and normalizes each type's fields to { name, type }\n * for deterministic JSON serialization.\n */\nfunction sortSchema(schema: TypedDataSchema): TypedDataSchema {\n return Object.fromEntries(\n Object.entries(schema)\n .sort(([aKey], [bKey]) => aKey.localeCompare(bKey))\n .map(([key, value]) => [\n key,\n value.map((v) => ({ name: v.name, type: v.type })),\n ]),\n );\n}\n\n/**\n * Computes the schema hash of an EIP-712 schema.\n * Schema hash is SHA-224 of the compact JSON UTF-8 encoded representation of the schema.\n */\nexport function getSchemaHash(schema: TypedDataSchema): SchemaHash {\n const sortedSchema = sortSchema(schema);\n const schemaStr = JSON.stringify(sortedSchema);\n return SHA224(schemaStr).toString();\n}\n"],
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmB,+BAcnB,SAASC,EAAWC,EAA0C,CAC5D,OAAO,OAAO,YACZ,OAAO,QAAQA,CAAM,EAClB,KAAK,CAAC,CAACC,CAAI,EAAG,CAACC,CAAI,IAAMD,EAAK,cAAcC,CAAI,CAAC,EACjD,IAAI,CAAC,CAACC,EAAKC,CAAK,IAAM,CACrBD,EACAC,EAAM,IAAKC,IAAO,CAAE,KAAMA,EAAE,KAAM,KAAMA,EAAE,IAAK,EAAE,CACnD,CAAC,CACL,CACF,CAMO,SAAST,EAAcI,EAAqC,CACjE,MAAMM,EAAeP,EAAWC,CAAM,EAChCO,EAAY,KAAK,UAAUD,CAAY,EAC7C,SAAO,EAAAE,SAAOD,CAAS,EAAE,SAAS,CACpC",
6
+ "names": ["getSchemaHash_exports", "__export", "getSchemaHash", "__toCommonJS", "import_sha224", "sortSchema", "schema", "aKey", "bKey", "key", "value", "v", "sortedSchema", "schemaStr", "SHA224"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("vitest"),a=require("./getSchemaHash");(0,e.describe)("getSchemaHash",()=>{(0,e.it)("returns SHA-224 hex digest of compact sorted JSON",()=>{const n=(0,a.getSchemaHash)({Mail:[{name:"from",type:"Person"},{name:"to",type:"Person"},{name:"contents",type:"string"}],Person:[{name:"name",type:"string"},{name:"wallet",type:"address"}]});(0,e.expect)(n).toMatch(/^[a-f0-9]{56}$/),(0,e.expect)(typeof n).toBe("string")}),(0,e.it)("is deterministic: same schema yields same hash",()=>{const t={EIP712Domain:[{name:"name",type:"string"},{name:"chainId",type:"uint256"}],Mail:[{name:"subject",type:"string"}]};(0,e.expect)((0,a.getSchemaHash)(t)).toBe((0,a.getSchemaHash)(t))}),(0,e.it)("sorts schema by type name for canonical representation",()=>{const t={Mail:[{name:"x",type:"string"}],EIP712Domain:[{name:"y",type:"uint256"}]},n={EIP712Domain:[{name:"y",type:"uint256"}],Mail:[{name:"x",type:"string"}]};(0,e.expect)((0,a.getSchemaHash)(t)).toBe((0,a.getSchemaHash)(n))})});
2
+ //# sourceMappingURL=getSchemaHash.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/typed-data/utils/getSchemaHash.test.ts"],
4
+ "sourcesContent": ["import { describe, expect, it } from \"vitest\";\n\nimport type { TypedDataSchema } from \"@/shared/model/TypedDataContext\";\n\nimport { getSchemaHash } from \"./getSchemaHash\";\n\ndescribe(\"getSchemaHash\", () => {\n it(\"returns SHA-224 hex digest of compact sorted JSON\", () => {\n const schema: TypedDataSchema = {\n Mail: [\n { name: \"from\", type: \"Person\" },\n { name: \"to\", type: \"Person\" },\n { name: \"contents\", type: \"string\" },\n ],\n Person: [\n { name: \"name\", type: \"string\" },\n { name: \"wallet\", type: \"address\" },\n ],\n };\n const hash = getSchemaHash(schema);\n expect(hash).toMatch(/^[a-f0-9]{56}$/);\n expect(typeof hash).toBe(\"string\");\n });\n\n it(\"is deterministic: same schema yields same hash\", () => {\n const schema: TypedDataSchema = {\n EIP712Domain: [\n { name: \"name\", type: \"string\" },\n { name: \"chainId\", type: \"uint256\" },\n ],\n Mail: [{ name: \"subject\", type: \"string\" }],\n };\n expect(getSchemaHash(schema)).toBe(getSchemaHash(schema));\n });\n\n it(\"sorts schema by type name for canonical representation\", () => {\n const schemaA: TypedDataSchema = {\n Mail: [{ name: \"x\", type: \"string\" }],\n EIP712Domain: [{ name: \"y\", type: \"uint256\" }],\n };\n const schemaB: TypedDataSchema = {\n EIP712Domain: [{ name: \"y\", type: \"uint256\" }],\n Mail: [{ name: \"x\", type: \"string\" }],\n };\n expect(getSchemaHash(schemaA)).toBe(getSchemaHash(schemaB));\n });\n});\n"],
5
+ "mappings": "aAAA,IAAAA,EAAqC,kBAIrCC,EAA8B,8BAE9B,YAAS,gBAAiB,IAAM,IAC9B,MAAG,oDAAqD,IAAM,CAY5D,MAAMC,KAAO,iBAXmB,CAC9B,KAAM,CACJ,CAAE,KAAM,OAAQ,KAAM,QAAS,EAC/B,CAAE,KAAM,KAAM,KAAM,QAAS,EAC7B,CAAE,KAAM,WAAY,KAAM,QAAS,CACrC,EACA,OAAQ,CACN,CAAE,KAAM,OAAQ,KAAM,QAAS,EAC/B,CAAE,KAAM,SAAU,KAAM,SAAU,CACpC,CACF,CACiC,KACjC,UAAOA,CAAI,EAAE,QAAQ,gBAAgB,KACrC,UAAO,OAAOA,CAAI,EAAE,KAAK,QAAQ,CACnC,CAAC,KAED,MAAG,iDAAkD,IAAM,CACzD,MAAMC,EAA0B,CAC9B,aAAc,CACZ,CAAE,KAAM,OAAQ,KAAM,QAAS,EAC/B,CAAE,KAAM,UAAW,KAAM,SAAU,CACrC,EACA,KAAM,CAAC,CAAE,KAAM,UAAW,KAAM,QAAS,CAAC,CAC5C,KACA,aAAO,iBAAcA,CAAM,CAAC,EAAE,QAAK,iBAAcA,CAAM,CAAC,CAC1D,CAAC,KAED,MAAG,yDAA0D,IAAM,CACjE,MAAMC,EAA2B,CAC/B,KAAM,CAAC,CAAE,KAAM,IAAK,KAAM,QAAS,CAAC,EACpC,aAAc,CAAC,CAAE,KAAM,IAAK,KAAM,SAAU,CAAC,CAC/C,EACMC,EAA2B,CAC/B,aAAc,CAAC,CAAE,KAAM,IAAK,KAAM,SAAU,CAAC,EAC7C,KAAM,CAAC,CAAE,KAAM,IAAK,KAAM,QAAS,CAAC,CACtC,KACA,aAAO,iBAAcD,CAAO,CAAC,EAAE,QAAK,iBAAcC,CAAO,CAAC,CAC5D,CAAC,CACH,CAAC",
6
+ "names": ["import_vitest", "import_getSchemaHash", "hash", "schema", "schemaA", "schemaB"]
7
+ }
@@ -35,7 +35,7 @@
35
35
  "license": "Apache-2.0",
36
36
  "name": "@ledgerhq/context-module",
37
37
  "peerDependencies": {
38
- "@ledgerhq/device-management-kit": "^1.1.0"
38
+ "@ledgerhq/device-management-kit": "^1.2.0"
39
39
  },
40
40
  "private": false,
41
41
  "repository": {
@@ -58,5 +58,5 @@
58
58
  "watch:builds": "pnpm ldmk-tool watch --entryPoints index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
59
59
  "watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\""
60
60
  },
61
- "version": "1.14.1"
61
+ "version": "1.16.0"
62
62
  }
@@ -1,2 +1,2 @@
1
- import{noopLoggerFactory as r}from"@ledgerhq/device-management-kit";import{DefaultContextModule as a}from"./DefaultContextModule";const i="https://crypto-assets-service.api.ledger.com/v1",n="https://web3checks-backend.api.ledger.com/v3",s="https://nft.api.live.ledger.com",t={cal:{url:i,mode:"prod",branch:"main"},web3checks:{url:n},metadataServiceDomain:{url:s},defaultLoaders:!0,customLoaders:[],defaultFieldLoaders:!0,customFieldLoaders:[],customTypedDataLoader:void 0,customSolanaLoader:void 0,loggerFactory:r};class g{config;originToken;constructor({originToken:e,loggerFactory:o}){this.originToken=e,this.config={...t,cal:{...t.cal},web3checks:{...t.web3checks},metadataServiceDomain:{...t.metadataServiceDomain},customLoaders:[...t.customLoaders],customFieldLoaders:[...t.customFieldLoaders]},o&&(this.config.loggerFactory=o)}removeDefaultLoaders(){return this.config.defaultLoaders=!1,this}addLoader(e){return this.config.customLoaders.push(e),this}addTypedDataLoader(e){return this.config.customTypedDataLoader=e,this}addSolanaLoader(e){return this.config.customSolanaLoader=e,this}setCalConfig(e){return this.config.cal=e,this}setMetadataServiceConfig(e){return this.config.metadataServiceDomain=e,this}setWeb3ChecksConfig(e){return this.config.web3checks=e,this}setDatasourceConfig(e){return this.config.datasource=e,this}setTrustedNameDataSource(e){return this.config.customTrustedNameDataSource=e,this}setLoggerFactory(e){return this.config.loggerFactory=e,this}build(){const e={...this.config,originToken:this.originToken};return new a(e)}}export{g as ContextModuleBuilder,t as DEFAULT_CONFIG};
1
+ import{noopLoggerFactory as o}from"@ledgerhq/device-management-kit";import{DefaultContextModule as r}from"./DefaultContextModule";const n="https://crypto-assets-service.api.ledger.com/v1",i="https://web3checks-backend.api.ledger.com/v3",a="https://nft.api.live.ledger.com",s="https://ingest.aws.stg.ldg-tech.com/ingest/v1",d=Object.freeze({cal:Object.freeze({url:n,mode:"prod",branch:"main"}),web3checks:Object.freeze({url:i}),metadataServiceDomain:Object.freeze({url:a}),reporter:Object.freeze({url:s}),datasource:Object.freeze({proxy:"default"}),appSource:"third-party"}),u={defaultLoaders:!0,defaultFieldLoaders:!0,customLoaders:[],customFieldLoaders:[],customTypedDataLoader:void 0,customSolanaLoader:void 0,customBlindSigningReporter:void 0,customTrustedNameDataSource:void 0};class f{config;constructor({originToken:e,loggerFactory:t}){this.config={...d,...u,customLoaders:[],customFieldLoaders:[],originToken:e??"",loggerFactory:t??o}}removeDefaultLoaders(){return this.config.defaultLoaders=!1,this}addLoader(e){return this.config.customLoaders.push(e),this}addTypedDataLoader(e){return this.config.customTypedDataLoader=e,this}addSolanaLoader(e){return this.config.customSolanaLoader=e,this}setCalConfig(e){return this.config.cal=e,this}setMetadataServiceConfig(e){return this.config.metadataServiceDomain=e,this}setWeb3ChecksConfig(e){return this.config.web3checks=e,this}setDatasourceConfig(e){return this.config.datasource=e,this}setReporterConfig(e){return this.config.reporter=e,this}setAppSource(e){return this.config.appSource=e,this}setBlindSigningReporter(e){return this.config.customBlindSigningReporter=e,this}setTrustedNameDataSource(e){return this.config.customTrustedNameDataSource=e,this}setLoggerFactory(e){return this.config.loggerFactory=e,this}build(){return new r(this.config)}}export{f as ContextModuleBuilder,d as DEFAULT_CONFIG};
2
2
  //# sourceMappingURL=ContextModuleBuilder.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/ContextModuleBuilder.ts"],
4
- "sourcesContent": ["import {\n type LoggerPublisherService,\n noopLoggerFactory,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type ContextModuleConstructorArgs } from \"./config/model/ContextModuleBuildArgs\";\nimport {\n type ContextModuleCalConfig,\n type ContextModuleConfig,\n type ContextModuleDatasourceConfig,\n type ContextModuleMetadataServiceConfig,\n type ContextModuleWeb3ChecksConfig,\n} from \"./config/model/ContextModuleConfig\";\nimport { type ContextLoader } from \"./shared/domain/ContextLoader\";\nimport { type SolanaContextLoader } from \"./solana/domain/SolanaContextLoader\";\nimport { type TrustedNameDataSource } from \"./trusted-name/data/TrustedNameDataSource\";\nimport { type TypedDataContextLoader } from \"./typed-data/domain/TypedDataContextLoader\";\nimport { type ContextModule } from \"./ContextModule\";\nimport { DefaultContextModule } from \"./DefaultContextModule\";\n\nconst DEFAULT_CAL_URL = \"https://crypto-assets-service.api.ledger.com/v1\";\nconst DEFAULT_WEB3_CHECKS_URL = \"https://web3checks-backend.api.ledger.com/v3\";\nconst DEFAULT_METADATA_SERVICE_DOMAIN = \"https://nft.api.live.ledger.com\";\n\nexport const DEFAULT_CONFIG: ContextModuleConfig = {\n cal: {\n url: DEFAULT_CAL_URL,\n mode: \"prod\",\n branch: \"main\",\n },\n web3checks: {\n url: DEFAULT_WEB3_CHECKS_URL,\n },\n metadataServiceDomain: {\n url: DEFAULT_METADATA_SERVICE_DOMAIN,\n },\n defaultLoaders: true,\n customLoaders: [],\n defaultFieldLoaders: true,\n customFieldLoaders: [],\n customTypedDataLoader: undefined,\n customSolanaLoader: undefined,\n loggerFactory: noopLoggerFactory,\n};\n\nexport class ContextModuleBuilder {\n private config: ContextModuleConfig;\n private originToken?: string;\n\n constructor({ originToken, loggerFactory }: ContextModuleConstructorArgs) {\n this.originToken = originToken;\n\n this.config = {\n ...DEFAULT_CONFIG,\n cal: { ...DEFAULT_CONFIG.cal },\n web3checks: { ...DEFAULT_CONFIG.web3checks },\n metadataServiceDomain: { ...DEFAULT_CONFIG.metadataServiceDomain },\n customLoaders: [...DEFAULT_CONFIG.customLoaders],\n customFieldLoaders: [...DEFAULT_CONFIG.customFieldLoaders],\n };\n if (loggerFactory) {\n this.config.loggerFactory = loggerFactory;\n }\n }\n\n /**\n * Remove default loaders from the list of loaders\n *\n * @returns this\n */\n removeDefaultLoaders() {\n this.config.defaultLoaders = false;\n return this;\n }\n\n /**\n * Add a custom loader to the list of loaders\n *\n * @param loader loader to add to the list of loaders\n * @returns this\n */\n addLoader(loader: ContextLoader) {\n this.config.customLoaders.push(loader);\n return this;\n }\n\n /**\n * Replace the default loader for typed data clear signing contexts\n *\n * @param loader loader to use for typed data clear signing contexts\n * @returns this\n */\n addTypedDataLoader(loader: TypedDataContextLoader) {\n this.config.customTypedDataLoader = loader;\n return this;\n }\n\n /**\n * Replace the default loader for Solana context\n *\n * @param loader loader to use for Solana context\n * @returns this\n */\n addSolanaLoader(loader: SolanaContextLoader) {\n this.config.customSolanaLoader = loader;\n return this;\n }\n\n /**\n * Add a custom CAL configuration\n *\n * @param calConfig\n * @returns this\n */\n setCalConfig(calConfig: ContextModuleCalConfig) {\n this.config.cal = calConfig;\n return this;\n }\n\n /**\n * Add a custom metadata service configuration\n *\n * @param metadataServiceConfig\n * @returns this\n */\n setMetadataServiceConfig(\n metadataServiceConfig: ContextModuleMetadataServiceConfig,\n ) {\n this.config.metadataServiceDomain = metadataServiceConfig;\n return this;\n }\n\n /**\n * Add a custom web3 checks configuration\n *\n * @param web3ChecksConfig\n * @returns this\n */\n setWeb3ChecksConfig(web3ChecksConfig: ContextModuleWeb3ChecksConfig) {\n this.config.web3checks = web3ChecksConfig;\n return this;\n }\n\n /**\n * Add datasource configuration\n *\n * @param datasourceConfig\n * @returns this\n */\n setDatasourceConfig(datasourceConfig: ContextModuleDatasourceConfig) {\n this.config.datasource = datasourceConfig;\n return this;\n }\n\n /**\n * Set a custom trusted name data source\n *\n * @param dataSource data source to use for trusted name resolution\n * @returns this\n */\n setTrustedNameDataSource(dataSource: TrustedNameDataSource) {\n this.config.customTrustedNameDataSource = dataSource;\n return this;\n }\n\n /**\n * Set a custom logger factory\n *\n * @param loggerFactory\n * @returns this\n */\n setLoggerFactory(loggerFactory: (tag: string) => LoggerPublisherService) {\n this.config.loggerFactory = loggerFactory;\n return this;\n }\n\n /**\n * Build the context module\n *\n * @returns the context module\n */\n build(): ContextModule {\n const config = { ...this.config, originToken: this.originToken };\n return new DefaultContextModule(config);\n }\n}\n"],
5
- "mappings": "AAAA,OAEE,qBAAAA,MACK,kCAeP,OAAS,wBAAAC,MAA4B,yBAErC,MAAMC,EAAkB,kDAClBC,EAA0B,+CAC1BC,EAAkC,kCAE3BC,EAAsC,CACjD,IAAK,CACH,IAAKH,EACL,KAAM,OACN,OAAQ,MACV,EACA,WAAY,CACV,IAAKC,CACP,EACA,sBAAuB,CACrB,IAAKC,CACP,EACA,eAAgB,GAChB,cAAe,CAAC,EAChB,oBAAqB,GACrB,mBAAoB,CAAC,EACrB,sBAAuB,OACvB,mBAAoB,OACpB,cAAeJ,CACjB,EAEO,MAAMM,CAAqB,CACxB,OACA,YAER,YAAY,CAAE,YAAAC,EAAa,cAAAC,CAAc,EAAiC,CACxE,KAAK,YAAcD,EAEnB,KAAK,OAAS,CACZ,GAAGF,EACH,IAAK,CAAE,GAAGA,EAAe,GAAI,EAC7B,WAAY,CAAE,GAAGA,EAAe,UAAW,EAC3C,sBAAuB,CAAE,GAAGA,EAAe,qBAAsB,EACjE,cAAe,CAAC,GAAGA,EAAe,aAAa,EAC/C,mBAAoB,CAAC,GAAGA,EAAe,kBAAkB,CAC3D,EACIG,IACF,KAAK,OAAO,cAAgBA,EAEhC,CAOA,sBAAuB,CACrB,YAAK,OAAO,eAAiB,GACtB,IACT,CAQA,UAAUC,EAAuB,CAC/B,YAAK,OAAO,cAAc,KAAKA,CAAM,EAC9B,IACT,CAQA,mBAAmBA,EAAgC,CACjD,YAAK,OAAO,sBAAwBA,EAC7B,IACT,CAQA,gBAAgBA,EAA6B,CAC3C,YAAK,OAAO,mBAAqBA,EAC1B,IACT,CAQA,aAAaC,EAAmC,CAC9C,YAAK,OAAO,IAAMA,EACX,IACT,CAQA,yBACEC,EACA,CACA,YAAK,OAAO,sBAAwBA,EAC7B,IACT,CAQA,oBAAoBC,EAAiD,CACnE,YAAK,OAAO,WAAaA,EAClB,IACT,CAQA,oBAAoBC,EAAiD,CACnE,YAAK,OAAO,WAAaA,EAClB,IACT,CAQA,yBAAyBC,EAAmC,CAC1D,YAAK,OAAO,4BAA8BA,EACnC,IACT,CAQA,iBAAiBN,EAAwD,CACvE,YAAK,OAAO,cAAgBA,EACrB,IACT,CAOA,OAAuB,CACrB,MAAMO,EAAS,CAAE,GAAG,KAAK,OAAQ,YAAa,KAAK,WAAY,EAC/D,OAAO,IAAId,EAAqBc,CAAM,CACxC,CACF",
6
- "names": ["noopLoggerFactory", "DefaultContextModule", "DEFAULT_CAL_URL", "DEFAULT_WEB3_CHECKS_URL", "DEFAULT_METADATA_SERVICE_DOMAIN", "DEFAULT_CONFIG", "ContextModuleBuilder", "originToken", "loggerFactory", "loader", "calConfig", "metadataServiceConfig", "web3ChecksConfig", "datasourceConfig", "dataSource", "config"]
4
+ "sourcesContent": ["import {\n type LoggerPublisherService,\n noopLoggerFactory,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type ContextModuleConstructorArgs } from \"./config/model/ContextModuleBuildArgs\";\nimport {\n type ContextModuleCalConfig,\n type ContextModuleConfig,\n type ContextModuleDatasourceConfig,\n type ContextModuleLoaderConfig,\n type ContextModuleMetadataServiceConfig,\n type ContextModuleReporterConfig,\n type ContextModuleServiceConfig,\n type ContextModuleWeb3ChecksConfig,\n} from \"./config/model/ContextModuleConfig\";\nimport { type BlindSigningReporter } from \"./reporter/domain/BlindSigningReporter\";\nimport { type ContextLoader } from \"./shared/domain/ContextLoader\";\nimport { type SolanaContextLoader } from \"./solana/domain/SolanaContextLoader\";\nimport { type TrustedNameDataSource } from \"./trusted-name/data/TrustedNameDataSource\";\nimport { type TypedDataContextLoader } from \"./typed-data/domain/TypedDataContextLoader\";\nimport { type ContextModule } from \"./ContextModule\";\nimport { DefaultContextModule } from \"./DefaultContextModule\";\n\nconst DEFAULT_CAL_URL = \"https://crypto-assets-service.api.ledger.com/v1\";\nconst DEFAULT_WEB3_CHECKS_URL = \"https://web3checks-backend.api.ledger.com/v3\";\nconst DEFAULT_METADATA_SERVICE_DOMAIN = \"https://nft.api.live.ledger.com\";\nconst DEFAULT_REPORTER_URL = \"https://ingest.aws.stg.ldg-tech.com/ingest/v1\";\n\n/**\n * Default configuration for the context module\n *\n * @note This configuration is frozen to prevent modifications after construction\n * and can be used by external packages to get a default configuration.\n */\nexport const DEFAULT_CONFIG: Readonly<ContextModuleConfig> = Object.freeze({\n cal: Object.freeze({\n url: DEFAULT_CAL_URL,\n mode: \"prod\",\n branch: \"main\",\n }),\n web3checks: Object.freeze({\n url: DEFAULT_WEB3_CHECKS_URL,\n }),\n metadataServiceDomain: Object.freeze({\n url: DEFAULT_METADATA_SERVICE_DOMAIN,\n }),\n reporter: Object.freeze({\n url: DEFAULT_REPORTER_URL,\n }),\n datasource: Object.freeze({ proxy: \"default\" }),\n appSource: \"third-party\",\n});\n\n/**\n * Default loader configuration for the context module\n *\n * @note This configuration is internal and will be the default configuration for the context module.\n */\nconst DEFAULT_LOADER_CONFIG: ContextModuleLoaderConfig = {\n defaultLoaders: true,\n defaultFieldLoaders: true,\n customLoaders: [],\n customFieldLoaders: [],\n customTypedDataLoader: undefined,\n customSolanaLoader: undefined,\n customBlindSigningReporter: undefined,\n customTrustedNameDataSource: undefined,\n};\n\nexport class ContextModuleBuilder {\n private config: ContextModuleServiceConfig & ContextModuleLoaderConfig;\n\n constructor({ originToken, loggerFactory }: ContextModuleConstructorArgs) {\n this.config = {\n ...DEFAULT_CONFIG,\n ...DEFAULT_LOADER_CONFIG,\n customLoaders: [],\n customFieldLoaders: [],\n originToken: originToken ?? \"\",\n loggerFactory: loggerFactory ?? noopLoggerFactory,\n } as ContextModuleServiceConfig & ContextModuleLoaderConfig;\n }\n\n /**\n * Remove default loaders from the list of loaders\n *\n * @returns this\n */\n removeDefaultLoaders() {\n this.config.defaultLoaders = false;\n return this;\n }\n\n /**\n * Add a custom loader to the list of loaders\n *\n * @param loader loader to add to the list of loaders\n * @returns this\n */\n addLoader(loader: ContextLoader) {\n this.config.customLoaders.push(loader);\n return this;\n }\n\n /**\n * Replace the default loader for typed data clear signing contexts\n *\n * @param loader loader to use for typed data clear signing contexts\n * @returns this\n */\n addTypedDataLoader(loader: TypedDataContextLoader) {\n this.config.customTypedDataLoader = loader;\n return this;\n }\n\n /**\n * Replace the default loader for Solana context\n *\n * @param loader loader to use for Solana context\n * @returns this\n */\n addSolanaLoader(loader: SolanaContextLoader) {\n this.config.customSolanaLoader = loader;\n return this;\n }\n\n /**\n * Add a custom CAL configuration\n *\n * @param calConfig\n * @returns this\n */\n setCalConfig(calConfig: ContextModuleCalConfig) {\n this.config.cal = calConfig;\n return this;\n }\n\n /**\n * Add a custom metadata service configuration\n *\n * @param metadataServiceConfig\n * @returns this\n */\n setMetadataServiceConfig(\n metadataServiceConfig: ContextModuleMetadataServiceConfig,\n ) {\n this.config.metadataServiceDomain = metadataServiceConfig;\n return this;\n }\n\n /**\n * Add a custom web3 checks configuration\n *\n * @param web3ChecksConfig\n * @returns this\n */\n setWeb3ChecksConfig(web3ChecksConfig: ContextModuleWeb3ChecksConfig) {\n this.config.web3checks = web3ChecksConfig;\n return this;\n }\n\n /**\n * Add datasource configuration\n *\n * @param datasourceConfig\n * @returns this\n */\n setDatasourceConfig(datasourceConfig: ContextModuleDatasourceConfig) {\n this.config.datasource = datasourceConfig;\n return this;\n }\n\n /**\n * Set a custom reporter configuration\n *\n * @param reporterConfig\n * @returns this\n */\n setReporterConfig(reporterConfig: ContextModuleReporterConfig) {\n this.config.reporter = reporterConfig;\n return this;\n }\n\n /**\n * Set the app source identifier included in blind signing reports\n *\n * @param appSource\n * @returns this\n */\n setAppSource(appSource: string) {\n this.config.appSource = appSource;\n return this;\n }\n\n /**\n * Set a custom blind signing reporter\n *\n * @param reporter reporter to use for blind signing events\n * @returns this\n */\n setBlindSigningReporter(reporter: BlindSigningReporter) {\n this.config.customBlindSigningReporter = reporter;\n return this;\n }\n\n /**\n * Set a custom trusted name data source\n *\n * @param dataSource data source to use for trusted name resolution\n * @returns this\n */\n setTrustedNameDataSource(dataSource: TrustedNameDataSource) {\n this.config.customTrustedNameDataSource = dataSource;\n return this;\n }\n\n /**\n * Set a custom logger factory\n *\n * @param loggerFactory\n * @returns this\n */\n setLoggerFactory(loggerFactory: (tag: string) => LoggerPublisherService) {\n this.config.loggerFactory = loggerFactory;\n return this;\n }\n\n /**\n * Build the context module\n *\n * @returns the context module\n */\n build(): ContextModule {\n return new DefaultContextModule(this.config);\n }\n}\n"],
5
+ "mappings": "AAAA,OAEE,qBAAAA,MACK,kCAmBP,OAAS,wBAAAC,MAA4B,yBAErC,MAAMC,EAAkB,kDAClBC,EAA0B,+CAC1BC,EAAkC,kCAClCC,EAAuB,gDAQhBC,EAAgD,OAAO,OAAO,CACzE,IAAK,OAAO,OAAO,CACjB,IAAKJ,EACL,KAAM,OACN,OAAQ,MACV,CAAC,EACD,WAAY,OAAO,OAAO,CACxB,IAAKC,CACP,CAAC,EACD,sBAAuB,OAAO,OAAO,CACnC,IAAKC,CACP,CAAC,EACD,SAAU,OAAO,OAAO,CACtB,IAAKC,CACP,CAAC,EACD,WAAY,OAAO,OAAO,CAAE,MAAO,SAAU,CAAC,EAC9C,UAAW,aACb,CAAC,EAOKE,EAAmD,CACvD,eAAgB,GAChB,oBAAqB,GACrB,cAAe,CAAC,EAChB,mBAAoB,CAAC,EACrB,sBAAuB,OACvB,mBAAoB,OACpB,2BAA4B,OAC5B,4BAA6B,MAC/B,EAEO,MAAMC,CAAqB,CACxB,OAER,YAAY,CAAE,YAAAC,EAAa,cAAAC,CAAc,EAAiC,CACxE,KAAK,OAAS,CACZ,GAAGJ,EACH,GAAGC,EACH,cAAe,CAAC,EAChB,mBAAoB,CAAC,EACrB,YAAaE,GAAe,GAC5B,cAAeC,GAAiBV,CAClC,CACF,CAOA,sBAAuB,CACrB,YAAK,OAAO,eAAiB,GACtB,IACT,CAQA,UAAUW,EAAuB,CAC/B,YAAK,OAAO,cAAc,KAAKA,CAAM,EAC9B,IACT,CAQA,mBAAmBA,EAAgC,CACjD,YAAK,OAAO,sBAAwBA,EAC7B,IACT,CAQA,gBAAgBA,EAA6B,CAC3C,YAAK,OAAO,mBAAqBA,EAC1B,IACT,CAQA,aAAaC,EAAmC,CAC9C,YAAK,OAAO,IAAMA,EACX,IACT,CAQA,yBACEC,EACA,CACA,YAAK,OAAO,sBAAwBA,EAC7B,IACT,CAQA,oBAAoBC,EAAiD,CACnE,YAAK,OAAO,WAAaA,EAClB,IACT,CAQA,oBAAoBC,EAAiD,CACnE,YAAK,OAAO,WAAaA,EAClB,IACT,CAQA,kBAAkBC,EAA6C,CAC7D,YAAK,OAAO,SAAWA,EAChB,IACT,CAQA,aAAaC,EAAmB,CAC9B,YAAK,OAAO,UAAYA,EACjB,IACT,CAQA,wBAAwBC,EAAgC,CACtD,YAAK,OAAO,2BAA6BA,EAClC,IACT,CAQA,yBAAyBC,EAAmC,CAC1D,YAAK,OAAO,4BAA8BA,EACnC,IACT,CAQA,iBAAiBT,EAAwD,CACvE,YAAK,OAAO,cAAgBA,EACrB,IACT,CAOA,OAAuB,CACrB,OAAO,IAAIT,EAAqB,KAAK,MAAM,CAC7C,CACF",
6
+ "names": ["noopLoggerFactory", "DefaultContextModule", "DEFAULT_CAL_URL", "DEFAULT_WEB3_CHECKS_URL", "DEFAULT_METADATA_SERVICE_DOMAIN", "DEFAULT_REPORTER_URL", "DEFAULT_CONFIG", "DEFAULT_LOADER_CONFIG", "ContextModuleBuilder", "originToken", "loggerFactory", "loader", "calConfig", "metadataServiceConfig", "web3ChecksConfig", "datasourceConfig", "reporterConfig", "appSource", "reporter", "dataSource"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{configTypes as a}from"./config/di/configTypes";import{HttpTrustedNameDataSource as g}from"./trusted-name/data/HttpTrustedNameDataSource";import{trustedNameTypes as l}from"./trusted-name/di/trustedNameTypes";import{ContextModuleBuilder as c}from"./ContextModuleBuilder";import{DefaultContextModule as s}from"./DefaultContextModule";describe("ContextModuleBuilder",()=>{const u={url:"https://cal/v1",mode:"prod",branch:"main"},i={url:"https://web3checks/v1"},r={originToken:"test",loggerFactory:()=>({debug:vi.fn(),info:vi.fn(),warn:vi.fn(),error:vi.fn(),subscribers:[]})};beforeEach(()=>{vi.resetAllMocks()}),it("should return a default context module",()=>{const e=new c(r).build();expect(e).toBeInstanceOf(s)}),it("should return a custom context module",()=>{const n=new c(r),e={load:vi.fn(),canHandle:vi.fn()},o=n.removeDefaultLoaders().addLoader(e).build();expect(o).toBeInstanceOf(s)}),it("should return a custom context module with a custom typed data loader",()=>{const n=new c(r),e={load:vi.fn()},o=n.removeDefaultLoaders().addTypedDataLoader(e).build();expect(o).toBeInstanceOf(s),expect(o._typedDataLoader).toBe(e)}),it("should return a custom context module with a custom config",()=>{const e=new c(r).setCalConfig(u).setWeb3ChecksConfig(i).build(),o=e._container.get(a.Config);expect(e).toBeInstanceOf(s),expect(o.cal).toEqual(u),expect(o.web3checks).toEqual(i)}),it("should not throw an error if origin token is provided",()=>{const n=new c(r);expect(()=>n.build()).not.toThrow()}),describe("setMetadataServiceConfig",()=>{it("should set the metadata service configuration",()=>{const n=new c(r),e={url:"https://custom-metadata-service.com/v3"},o=n.setMetadataServiceConfig(e).build(),t=o._container.get(a.Config);expect(o).toBeInstanceOf(s),expect(t.metadataServiceDomain).toEqual(e)}),it("should override the default metadata service configuration",()=>{const n=new c(r),e={url:"https://override-metadata-service.com/v1"},t=n.setMetadataServiceConfig(e).build()._container.get(a.Config);expect(t.metadataServiceDomain.url).toBe(e.url),expect(t.metadataServiceDomain.url).not.toBe("https://nft.api.live.ledger.com/v2")})}),describe("setCalConfig",()=>{it("should set the CAL configuration",()=>{const n=new c(r),e={url:"https://custom-cal-service.com/v2",mode:"test",branch:"next"},o=n.setCalConfig(e).build(),t=o._container.get(a.Config);expect(o).toBeInstanceOf(s),expect(t.cal).toEqual(e)}),it("should override the default CAL configuration",()=>{const n=new c(r),e={url:"https://override-cal-service.com/v1",mode:"prod",branch:"demo"},t=n.setCalConfig(e).build()._container.get(a.Config);expect(t.cal.url).toBe(e.url),expect(t.cal.mode).toBe(e.mode),expect(t.cal.branch).toBe(e.branch),expect(t.cal.url).not.toBe("https://crypto-assets-service.api.ledger.com/v1")})}),describe("setWeb3ChecksConfig",()=>{it("should set the web3 checks configuration",()=>{const n=new c(r),e={url:"https://custom-web3checks-service.com/v4"},o=n.setWeb3ChecksConfig(e).build(),t=o._container.get(a.Config);expect(o).toBeInstanceOf(s),expect(t.web3checks).toEqual(e)}),it("should override the default web3 checks configuration",()=>{const n=new c(r),e={url:"https://override-web3checks-service.com/v2"},t=n.setWeb3ChecksConfig(e).build()._container.get(a.Config);expect(t.web3checks.url).toBe(e.url),expect(t.web3checks.url).not.toBe("https://web3checks-backend.api.ledger.com/v3")})}),describe("setDatasourceConfig",()=>{it("should set the datasource configuration with safe proxy",()=>{const n=new c(r),e={proxy:"safe"},o=n.setDatasourceConfig(e).build(),t=o._container.get(a.Config);expect(o).toBeInstanceOf(s),expect(t.datasource).toEqual(e),expect(t.datasource?.proxy).toBe("safe")}),it("should set the datasource configuration with default proxy",()=>{const n=new c(r),e={proxy:"default"},o=n.setDatasourceConfig(e).build(),t=o._container.get(a.Config);expect(o).toBeInstanceOf(s),expect(t.datasource).toEqual(e),expect(t.datasource?.proxy).toBe("default")}),it("should override the default datasource configuration",()=>{const n=new c(r),e={proxy:"safe"},t=n.setDatasourceConfig(e).build()._container.get(a.Config);expect(t.datasource?.proxy).toBe("safe"),expect(t.datasource).not.toBeUndefined()}),it("should set an empty datasource configuration",()=>{const n=new c(r),e={},o=n.setDatasourceConfig(e).build(),t=o._container.get(a.Config);expect(o).toBeInstanceOf(s),expect(t.datasource).toEqual(e),expect(t.datasource?.proxy).toBeUndefined()})}),describe("loggerFactory",()=>{it("should use the default empty logger when loggerFactory is not provided",()=>{const e=new c({originToken:"test"}).build(),o=e._container.get(a.Config);expect(e).toBeInstanceOf(s),expect(o.loggerFactory).toBeDefined();const t=o.loggerFactory("test");expect(t.debug).toBeDefined(),expect(t.info).toBeDefined(),expect(t.warn).toBeDefined(),expect(t.error).toBeDefined(),expect(t.subscribers).toEqual([]),expect(()=>t.debug("test")).not.toThrow(),expect(()=>t.info("test")).not.toThrow(),expect(()=>t.warn("test")).not.toThrow(),expect(()=>t.error("test")).not.toThrow()}),it("should set the loggerFactory when provided in the constructor",()=>{const n=vi.fn(),o=new c({...r,loggerFactory:n}).build(),t=o._container.get(a.Config);expect(o).toBeInstanceOf(s),expect(t.loggerFactory).toBe(n)}),it("should set the loggerFactory via setLoggerFactory",()=>{const n=vi.fn(),o=new c(r).setLoggerFactory(n).build(),t=o._container.get(a.Config);expect(o).toBeInstanceOf(s),expect(t.loggerFactory).toBe(n)}),it("should override constructor loggerFactory with setLoggerFactory",()=>{const n=vi.fn(),e=vi.fn(),d=new c({...r,loggerFactory:n}).setLoggerFactory(e).build()._container.get(a.Config);expect(d.loggerFactory).toBe(e),expect(d.loggerFactory).not.toBe(n)})}),describe("setTrustedNameDataSource",()=>{it("should set a custom trusted name data source",()=>{const n=new c(r),e={getDomainNamePayload:vi.fn(),getTrustedNamePayload:vi.fn()},o=n.setTrustedNameDataSource(e).build(),t=o._container.get(a.Config);expect(o).toBeInstanceOf(s),expect(t.customTrustedNameDataSource).toBe(e)}),it("should inject the custom data source into the container",()=>{const n=new c(r),e={getDomainNamePayload:vi.fn(),getTrustedNamePayload:vi.fn()},t=n.setTrustedNameDataSource(e).build()._container.get(l.TrustedNameDataSource);expect(t).toBe(e)}),it("should use HttpTrustedNameDataSource when no custom data source is set",()=>{const e=new c(r).build(),o=e._container.get(l.TrustedNameDataSource);expect(e).toBeInstanceOf(s),expect(o).toBeInstanceOf(g)})})});
1
+ import{configTypes as s}from"./config/di/configTypes";import{HttpProxyDataSource as g}from"./proxy/data/HttpProxyDataSource";import{HttpSafeProxyDataSource as x}from"./proxy/data/HttpSafeProxyDataSource";import{proxyTypes as u}from"./proxy/di/proxyTypes";import{HttpTrustedNameDataSource as C}from"./trusted-name/data/HttpTrustedNameDataSource";import{trustedNameTypes as f}from"./trusted-name/di/trustedNameTypes";import{ContextModuleBuilder as r}from"./ContextModuleBuilder";import{DefaultContextModule as a}from"./DefaultContextModule";describe("ContextModuleBuilder",()=>{const d={url:"https://cal/v1",mode:"prod",branch:"main"},l={url:"https://web3checks/v1"},c={originToken:"test",loggerFactory:()=>({debug:vi.fn(),info:vi.fn(),warn:vi.fn(),error:vi.fn(),subscribers:[]})};beforeEach(()=>{vi.resetAllMocks()}),it("should return a default context module",()=>{const e=new r(c).build();expect(e).toBeInstanceOf(a)}),it("should return a custom context module",()=>{const o=new r(c),e={load:vi.fn(),canHandle:vi.fn()},t=o.removeDefaultLoaders().addLoader(e).build();expect(t).toBeInstanceOf(a)}),it("should return a custom context module with a custom typed data loader",()=>{const o=new r(c),e={load:vi.fn()},t=o.removeDefaultLoaders().addTypedDataLoader(e).build();expect(t).toBeInstanceOf(a),expect(t._typedDataLoader).toBe(e)}),it("should return a custom context module with a custom config",()=>{const e=new r(c).setCalConfig(d).setWeb3ChecksConfig(l).build(),t=e._container.get(s.Config);expect(e).toBeInstanceOf(a),expect(t.cal).toEqual(d),expect(t.web3checks).toEqual(l)}),it("should not throw an error if origin token is provided",()=>{const o=new r(c);expect(()=>o.build()).not.toThrow()}),describe("setMetadataServiceConfig",()=>{it("should set the metadata service configuration",()=>{const o=new r(c),e={url:"https://custom-metadata-service.com/v3"},t=o.setMetadataServiceConfig(e).build(),n=t._container.get(s.Config);expect(t).toBeInstanceOf(a),expect(n.metadataServiceDomain).toEqual(e)}),it("should override the default metadata service configuration",()=>{const o=new r(c),e={url:"https://override-metadata-service.com/v1"},n=o.setMetadataServiceConfig(e).build()._container.get(s.Config);expect(n.metadataServiceDomain.url).toBe(e.url),expect(n.metadataServiceDomain.url).not.toBe("https://nft.api.live.ledger.com/v2")})}),describe("setCalConfig",()=>{it("should set the CAL configuration",()=>{const o=new r(c),e={url:"https://custom-cal-service.com/v2",mode:"test",branch:"next"},t=o.setCalConfig(e).build(),n=t._container.get(s.Config);expect(t).toBeInstanceOf(a),expect(n.cal).toEqual(e)}),it("should override the default CAL configuration",()=>{const o=new r(c),e={url:"https://override-cal-service.com/v1",mode:"prod",branch:"demo"},n=o.setCalConfig(e).build()._container.get(s.Config);expect(n.cal.url).toBe(e.url),expect(n.cal.mode).toBe(e.mode),expect(n.cal.branch).toBe(e.branch),expect(n.cal.url).not.toBe("https://crypto-assets-service.api.ledger.com/v1")})}),describe("setWeb3ChecksConfig",()=>{it("should set the web3 checks configuration",()=>{const o=new r(c),e={url:"https://custom-web3checks-service.com/v4"},t=o.setWeb3ChecksConfig(e).build(),n=t._container.get(s.Config);expect(t).toBeInstanceOf(a),expect(n.web3checks).toEqual(e)}),it("should override the default web3 checks configuration",()=>{const o=new r(c),e={url:"https://override-web3checks-service.com/v2"},n=o.setWeb3ChecksConfig(e).build()._container.get(s.Config);expect(n.web3checks.url).toBe(e.url),expect(n.web3checks.url).not.toBe("https://web3checks-backend.api.ledger.com/v3")})}),describe("setDatasourceConfig",()=>{it("should bind HttpSafeProxyDataSource when proxy is 'safe'",()=>{const o=new r(c),e={proxy:"safe"},t=o.setDatasourceConfig(e).build(),n=t._container.get(u.ProxyDataSource);expect(t).toBeInstanceOf(a),expect(n).toBeInstanceOf(x)}),it("should bind HttpProxyDataSource when proxy is 'default'",()=>{const o=new r(c),e={proxy:"default"},t=o.setDatasourceConfig(e).build(),n=t._container.get(u.ProxyDataSource);expect(t).toBeInstanceOf(a),expect(n).toBeInstanceOf(g)}),it("should bind HttpProxyDataSource when datasource config is empty",()=>{const o=new r(c),e={},t=o.setDatasourceConfig(e).build(),n=t._container.get(u.ProxyDataSource);expect(t).toBeInstanceOf(a),expect(n).toBeInstanceOf(g)})}),describe("loggerFactory",()=>{it("should use the default empty logger when loggerFactory is not provided",()=>{const e=new r({originToken:"test"}).build(),t=e._container.get(s.ContextModuleLoggerFactory);expect(e).toBeInstanceOf(a),expect(t).toBeDefined();const n=t("test");expect(n.debug).toBeDefined(),expect(n.info).toBeDefined(),expect(n.warn).toBeDefined(),expect(n.error).toBeDefined(),expect(n.subscribers).toEqual([]),expect(()=>n.debug("test")).not.toThrow(),expect(()=>n.info("test")).not.toThrow(),expect(()=>n.warn("test")).not.toThrow(),expect(()=>n.error("test")).not.toThrow()}),it("should set the loggerFactory when provided in the constructor",()=>{const o=vi.fn(),t=new r({...c,loggerFactory:o}).build(),n=t._container.get(s.ContextModuleLoggerFactory);expect(t).toBeInstanceOf(a),expect(n).toBe(o)}),it("should set the loggerFactory via setLoggerFactory",()=>{const o=vi.fn(),t=new r(c).setLoggerFactory(o).build(),n=t._container.get(s.ContextModuleLoggerFactory);expect(t).toBeInstanceOf(a),expect(n).toBe(o)}),it("should override constructor loggerFactory with setLoggerFactory",()=>{const o=vi.fn(),e=vi.fn(),i=new r({...c,loggerFactory:o}).setLoggerFactory(e).build()._container.get(s.ContextModuleLoggerFactory);expect(i).toBe(e),expect(i).not.toBe(o)})}),describe("instance isolation",()=>{it("should not share customLoaders arrays between builder instances",()=>{const o=new r(c),e=new r(c),t={load:vi.fn(),canHandle:vi.fn()};o.addLoader(t);const n=o.removeDefaultLoaders().build(),i=e.removeDefaultLoaders().build();expect(n._loaders).toHaveLength(1),expect(i._loaders).toHaveLength(0)})}),describe("setTrustedNameDataSource",()=>{it("should inject the custom data source into the container",()=>{const o=new r(c),e={getDomainNamePayload:vi.fn(),getTrustedNamePayload:vi.fn()},n=o.setTrustedNameDataSource(e).build()._container.get(f.TrustedNameDataSource);expect(n).toBe(e)}),it("should use HttpTrustedNameDataSource when no custom data source is set",()=>{const e=new r(c).build(),t=e._container.get(f.TrustedNameDataSource);expect(e).toBeInstanceOf(a),expect(t).toBeInstanceOf(C)})})});
2
2
  //# sourceMappingURL=ContextModuleBuilder.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/ContextModuleBuilder.test.ts"],
4
- "sourcesContent": ["import { type LoggerPublisherService } from \"@ledgerhq/device-management-kit\";\nimport { type Container } from \"inversify\";\n\nimport { configTypes } from \"./config/di/configTypes\";\nimport { type ContextModuleConstructorArgs } from \"./config/model/ContextModuleBuildArgs\";\nimport {\n type ContextModuleCalConfig,\n type ContextModuleConfig,\n type ContextModuleDatasourceConfig,\n type ContextModuleMetadataServiceConfig,\n} from \"./config/model/ContextModuleConfig\";\nimport { type ContextLoader } from \"./shared/domain/ContextLoader\";\nimport { HttpTrustedNameDataSource } from \"./trusted-name/data/HttpTrustedNameDataSource\";\nimport { type TrustedNameDataSource } from \"./trusted-name/data/TrustedNameDataSource\";\nimport { trustedNameTypes } from \"./trusted-name/di/trustedNameTypes\";\nimport { ContextModuleBuilder } from \"./ContextModuleBuilder\";\nimport { DefaultContextModule } from \"./DefaultContextModule\";\n\ndescribe(\"ContextModuleBuilder\", () => {\n const defaultCalConfig: ContextModuleCalConfig = {\n url: \"https://cal/v1\",\n mode: \"prod\",\n branch: \"main\",\n };\n const defaultWeb3ChecksConfig = {\n url: \"https://web3checks/v1\",\n };\n const mockLoggerFactory = () => ({\n debug: vi.fn(),\n info: vi.fn(),\n warn: vi.fn(),\n error: vi.fn(),\n subscribers: [],\n });\n\n const defaultBuilderArgs: ContextModuleConstructorArgs = {\n originToken: \"test\",\n loggerFactory: mockLoggerFactory,\n };\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"should return a default context module\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n\n const res = contextModuleBuilder.build();\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n });\n\n it(\"should return a custom context module\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n const customLoader: ContextLoader = {\n load: vi.fn(),\n canHandle: vi.fn() as unknown as ContextLoader[\"canHandle\"],\n };\n\n const res = contextModuleBuilder\n .removeDefaultLoaders()\n .addLoader(customLoader)\n .build();\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n });\n\n it(\"should return a custom context module with a custom typed data loader\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n const customLoader = { load: vi.fn() };\n\n const res = contextModuleBuilder\n .removeDefaultLoaders()\n .addTypedDataLoader(customLoader)\n .build();\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n // @ts-expect-error _typedDataLoader is private\n expect(res[\"_typedDataLoader\"]).toBe(customLoader);\n });\n\n it(\"should return a custom context module with a custom config\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n\n const res = contextModuleBuilder\n .setCalConfig(defaultCalConfig)\n .setWeb3ChecksConfig(defaultWeb3ChecksConfig)\n .build();\n // @ts-expect-error _container is private\n const config = (res[\"_container\"] as Container).get<ContextModuleConfig>(\n configTypes.Config,\n );\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n expect(config.cal).toEqual(defaultCalConfig);\n expect(config.web3checks).toEqual(defaultWeb3ChecksConfig);\n });\n\n it(\"should not throw an error if origin token is provided\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n\n expect(() => contextModuleBuilder.build()).not.toThrow();\n });\n\n describe(\"setMetadataServiceConfig\", () => {\n it(\"should set the metadata service configuration\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n const customMetadataConfig: ContextModuleMetadataServiceConfig = {\n url: \"https://custom-metadata-service.com/v3\",\n };\n\n const res = contextModuleBuilder\n .setMetadataServiceConfig(customMetadataConfig)\n .build();\n const config = (res as DefaultContextModule)[\n \"_container\"\n ].get<ContextModuleConfig>(configTypes.Config);\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n expect(config.metadataServiceDomain).toEqual(customMetadataConfig);\n });\n\n it(\"should override the default metadata service configuration\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n const customMetadataConfig: ContextModuleMetadataServiceConfig = {\n url: \"https://override-metadata-service.com/v1\",\n };\n\n const res = contextModuleBuilder\n .setMetadataServiceConfig(customMetadataConfig)\n .build();\n const config = (res as DefaultContextModule)[\n \"_container\"\n ].get<ContextModuleConfig>(configTypes.Config);\n\n expect(config.metadataServiceDomain.url).toBe(customMetadataConfig.url);\n expect(config.metadataServiceDomain.url).not.toBe(\n \"https://nft.api.live.ledger.com/v2\",\n );\n });\n });\n\n describe(\"setCalConfig\", () => {\n it(\"should set the CAL configuration\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n const customCalConfig: ContextModuleCalConfig = {\n url: \"https://custom-cal-service.com/v2\",\n mode: \"test\",\n branch: \"next\",\n };\n\n const res = contextModuleBuilder.setCalConfig(customCalConfig).build();\n const config = (res as DefaultContextModule)[\n \"_container\"\n ].get<ContextModuleConfig>(configTypes.Config);\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n expect(config.cal).toEqual(customCalConfig);\n });\n\n it(\"should override the default CAL configuration\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n const customCalConfig: ContextModuleCalConfig = {\n url: \"https://override-cal-service.com/v1\",\n mode: \"prod\",\n branch: \"demo\",\n };\n\n const res = contextModuleBuilder.setCalConfig(customCalConfig).build();\n const config = (res as DefaultContextModule)[\n \"_container\"\n ].get<ContextModuleConfig>(configTypes.Config);\n\n expect(config.cal.url).toBe(customCalConfig.url);\n expect(config.cal.mode).toBe(customCalConfig.mode);\n expect(config.cal.branch).toBe(customCalConfig.branch);\n expect(config.cal.url).not.toBe(\n \"https://crypto-assets-service.api.ledger.com/v1\",\n );\n });\n });\n\n describe(\"setWeb3ChecksConfig\", () => {\n it(\"should set the web3 checks configuration\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n const customWeb3ChecksConfig = {\n url: \"https://custom-web3checks-service.com/v4\",\n };\n\n const res = contextModuleBuilder\n .setWeb3ChecksConfig(customWeb3ChecksConfig)\n .build();\n const config = (res as DefaultContextModule)[\n \"_container\"\n ].get<ContextModuleConfig>(configTypes.Config);\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n expect(config.web3checks).toEqual(customWeb3ChecksConfig);\n });\n\n it(\"should override the default web3 checks configuration\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n const customWeb3ChecksConfig = {\n url: \"https://override-web3checks-service.com/v2\",\n };\n\n const res = contextModuleBuilder\n .setWeb3ChecksConfig(customWeb3ChecksConfig)\n .build();\n const config = (res as DefaultContextModule)[\n \"_container\"\n ].get<ContextModuleConfig>(configTypes.Config);\n\n expect(config.web3checks.url).toBe(customWeb3ChecksConfig.url);\n expect(config.web3checks.url).not.toBe(\n \"https://web3checks-backend.api.ledger.com/v3\",\n );\n });\n });\n\n describe(\"setDatasourceConfig\", () => {\n it(\"should set the datasource configuration with safe proxy\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n const customDatasourceConfig: ContextModuleDatasourceConfig = {\n proxy: \"safe\",\n };\n\n const res = contextModuleBuilder\n .setDatasourceConfig(customDatasourceConfig)\n .build();\n const config = (res as DefaultContextModule)[\n \"_container\"\n ].get<ContextModuleConfig>(configTypes.Config);\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n expect(config.datasource).toEqual(customDatasourceConfig);\n expect(config.datasource?.proxy).toBe(\"safe\");\n });\n\n it(\"should set the datasource configuration with default proxy\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n const customDatasourceConfig: ContextModuleDatasourceConfig = {\n proxy: \"default\",\n };\n\n const res = contextModuleBuilder\n .setDatasourceConfig(customDatasourceConfig)\n .build();\n const config = (res as DefaultContextModule)[\n \"_container\"\n ].get<ContextModuleConfig>(configTypes.Config);\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n expect(config.datasource).toEqual(customDatasourceConfig);\n expect(config.datasource?.proxy).toBe(\"default\");\n });\n\n it(\"should override the default datasource configuration\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n const customDatasourceConfig: ContextModuleDatasourceConfig = {\n proxy: \"safe\",\n };\n\n const res = contextModuleBuilder\n .setDatasourceConfig(customDatasourceConfig)\n .build();\n const config = (res as DefaultContextModule)[\n \"_container\"\n ].get<ContextModuleConfig>(configTypes.Config);\n\n expect(config.datasource?.proxy).toBe(\"safe\");\n expect(config.datasource).not.toBeUndefined();\n });\n\n it(\"should set an empty datasource configuration\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n const customDatasourceConfig: ContextModuleDatasourceConfig = {};\n\n const res = contextModuleBuilder\n .setDatasourceConfig(customDatasourceConfig)\n .build();\n const config = (res as DefaultContextModule)[\n \"_container\"\n ].get<ContextModuleConfig>(configTypes.Config);\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n expect(config.datasource).toEqual(customDatasourceConfig);\n expect(config.datasource?.proxy).toBeUndefined();\n });\n });\n\n describe(\"loggerFactory\", () => {\n it(\"should use the default empty logger when loggerFactory is not provided\", () => {\n const contextModuleBuilder = new ContextModuleBuilder({\n originToken: \"test\",\n });\n\n const res = contextModuleBuilder.build();\n const config = (res as DefaultContextModule)[\n \"_container\"\n ].get<ContextModuleConfig>(configTypes.Config);\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n expect(config.loggerFactory).toBeDefined();\n\n // Verify the default logger has empty implementations\n const logger = config.loggerFactory(\"test\");\n expect(logger.debug).toBeDefined();\n expect(logger.info).toBeDefined();\n expect(logger.warn).toBeDefined();\n expect(logger.error).toBeDefined();\n expect(logger.subscribers).toEqual([]);\n\n // Verify the empty logger functions don't throw\n expect(() => logger.debug(\"test\")).not.toThrow();\n expect(() => logger.info(\"test\")).not.toThrow();\n expect(() => logger.warn(\"test\")).not.toThrow();\n expect(() => logger.error(\"test\")).not.toThrow();\n });\n\n it(\"should set the loggerFactory when provided in the constructor\", () => {\n const loggerFactory: (tag: string) => LoggerPublisherService = vi.fn();\n\n const contextModuleBuilder = new ContextModuleBuilder({\n ...defaultBuilderArgs,\n loggerFactory,\n });\n\n const res = contextModuleBuilder.build();\n const config = (res as DefaultContextModule)[\n \"_container\"\n ].get<ContextModuleConfig>(configTypes.Config);\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n expect(config.loggerFactory).toBe(loggerFactory);\n });\n\n it(\"should set the loggerFactory via setLoggerFactory\", () => {\n const loggerFactory: (tag: string) => LoggerPublisherService = vi.fn();\n\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n\n const res = contextModuleBuilder.setLoggerFactory(loggerFactory).build();\n const config = (res as DefaultContextModule)[\n \"_container\"\n ].get<ContextModuleConfig>(configTypes.Config);\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n expect(config.loggerFactory).toBe(loggerFactory);\n });\n\n it(\"should override constructor loggerFactory with setLoggerFactory\", () => {\n const constructorLoggerFactory: (tag: string) => LoggerPublisherService =\n vi.fn();\n const overrideLoggerFactory: (tag: string) => LoggerPublisherService =\n vi.fn();\n\n const contextModuleBuilder = new ContextModuleBuilder({\n ...defaultBuilderArgs,\n loggerFactory: constructorLoggerFactory,\n });\n\n const res = contextModuleBuilder\n .setLoggerFactory(overrideLoggerFactory)\n .build();\n const config = (res as DefaultContextModule)[\n \"_container\"\n ].get<ContextModuleConfig>(configTypes.Config);\n\n expect(config.loggerFactory).toBe(overrideLoggerFactory);\n expect(config.loggerFactory).not.toBe(constructorLoggerFactory);\n });\n });\n\n describe(\"setTrustedNameDataSource\", () => {\n it(\"should set a custom trusted name data source\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n const customDataSource: TrustedNameDataSource = {\n getDomainNamePayload: vi.fn(),\n getTrustedNamePayload: vi.fn(),\n };\n\n const res = contextModuleBuilder\n .setTrustedNameDataSource(customDataSource)\n .build();\n const config = (res as DefaultContextModule)[\n \"_container\"\n ].get<ContextModuleConfig>(configTypes.Config);\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n expect(config.customTrustedNameDataSource).toBe(customDataSource);\n });\n\n it(\"should inject the custom data source into the container\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n const customDataSource: TrustedNameDataSource = {\n getDomainNamePayload: vi.fn(),\n getTrustedNamePayload: vi.fn(),\n };\n\n const res = contextModuleBuilder\n .setTrustedNameDataSource(customDataSource)\n .build();\n const injectedDataSource = (res as DefaultContextModule)[\n \"_container\"\n ].get<TrustedNameDataSource>(trustedNameTypes.TrustedNameDataSource);\n\n expect(injectedDataSource).toBe(customDataSource);\n });\n\n it(\"should use HttpTrustedNameDataSource when no custom data source is set\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n\n const res = contextModuleBuilder.build();\n const injectedDataSource = (res as DefaultContextModule)[\n \"_container\"\n ].get<TrustedNameDataSource>(trustedNameTypes.TrustedNameDataSource);\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n expect(injectedDataSource).toBeInstanceOf(HttpTrustedNameDataSource);\n });\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["configTypes", "HttpTrustedNameDataSource", "trustedNameTypes", "ContextModuleBuilder", "DefaultContextModule", "defaultCalConfig", "defaultWeb3ChecksConfig", "defaultBuilderArgs", "res", "contextModuleBuilder", "customLoader", "config", "customMetadataConfig", "customCalConfig", "customWeb3ChecksConfig", "customDatasourceConfig", "logger", "loggerFactory", "constructorLoggerFactory", "overrideLoggerFactory", "customDataSource", "injectedDataSource"]
4
+ "sourcesContent": ["import { type LoggerPublisherService } from \"@ledgerhq/device-management-kit\";\n\nimport { configTypes } from \"./config/di/configTypes\";\nimport { type ContextModuleConstructorArgs } from \"./config/model/ContextModuleBuildArgs\";\nimport {\n type ContextModuleCalConfig,\n type ContextModuleDatasourceConfig,\n type ContextModuleMetadataServiceConfig,\n type ContextModuleServiceConfig,\n} from \"./config/model/ContextModuleConfig\";\nimport { HttpProxyDataSource } from \"./proxy/data/HttpProxyDataSource\";\nimport { HttpSafeProxyDataSource } from \"./proxy/data/HttpSafeProxyDataSource\";\nimport { proxyTypes } from \"./proxy/di/proxyTypes\";\nimport { type ContextLoader } from \"./shared/domain/ContextLoader\";\nimport { HttpTrustedNameDataSource } from \"./trusted-name/data/HttpTrustedNameDataSource\";\nimport { type TrustedNameDataSource } from \"./trusted-name/data/TrustedNameDataSource\";\nimport { trustedNameTypes } from \"./trusted-name/di/trustedNameTypes\";\nimport { ContextModuleBuilder } from \"./ContextModuleBuilder\";\nimport { DefaultContextModule } from \"./DefaultContextModule\";\n\ndescribe(\"ContextModuleBuilder\", () => {\n const defaultCalConfig: ContextModuleCalConfig = {\n url: \"https://cal/v1\",\n mode: \"prod\",\n branch: \"main\",\n };\n const defaultWeb3ChecksConfig = {\n url: \"https://web3checks/v1\",\n };\n const mockLoggerFactory = () => ({\n debug: vi.fn(),\n info: vi.fn(),\n warn: vi.fn(),\n error: vi.fn(),\n subscribers: [],\n });\n\n const defaultBuilderArgs: ContextModuleConstructorArgs = {\n originToken: \"test\",\n loggerFactory: mockLoggerFactory,\n };\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"should return a default context module\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n\n const res = contextModuleBuilder.build();\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n });\n\n it(\"should return a custom context module\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n const customLoader: ContextLoader = {\n load: vi.fn(),\n canHandle: vi.fn() as unknown as ContextLoader[\"canHandle\"],\n };\n\n const res = contextModuleBuilder\n .removeDefaultLoaders()\n .addLoader(customLoader)\n .build();\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n });\n\n it(\"should return a custom context module with a custom typed data loader\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n const customLoader = { load: vi.fn() };\n\n const res = contextModuleBuilder\n .removeDefaultLoaders()\n .addTypedDataLoader(customLoader)\n .build();\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n // @ts-expect-error _typedDataLoader is private\n expect(res[\"_typedDataLoader\"]).toBe(customLoader);\n });\n\n it(\"should return a custom context module with a custom config\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n\n const res = contextModuleBuilder\n .setCalConfig(defaultCalConfig)\n .setWeb3ChecksConfig(defaultWeb3ChecksConfig)\n .build();\n const config = (res as DefaultContextModule)[\n \"_container\"\n ].get<ContextModuleServiceConfig>(configTypes.Config);\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n expect(config.cal).toEqual(defaultCalConfig);\n expect(config.web3checks).toEqual(defaultWeb3ChecksConfig);\n });\n\n it(\"should not throw an error if origin token is provided\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n\n expect(() => contextModuleBuilder.build()).not.toThrow();\n });\n\n describe(\"setMetadataServiceConfig\", () => {\n it(\"should set the metadata service configuration\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n const customMetadataConfig: ContextModuleMetadataServiceConfig = {\n url: \"https://custom-metadata-service.com/v3\",\n };\n\n const res = contextModuleBuilder\n .setMetadataServiceConfig(customMetadataConfig)\n .build();\n const config = (res as DefaultContextModule)[\n \"_container\"\n ].get<ContextModuleServiceConfig>(configTypes.Config);\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n expect(config.metadataServiceDomain).toEqual(customMetadataConfig);\n });\n\n it(\"should override the default metadata service configuration\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n const customMetadataConfig: ContextModuleMetadataServiceConfig = {\n url: \"https://override-metadata-service.com/v1\",\n };\n\n const res = contextModuleBuilder\n .setMetadataServiceConfig(customMetadataConfig)\n .build();\n const config = (res as DefaultContextModule)[\n \"_container\"\n ].get<ContextModuleServiceConfig>(configTypes.Config);\n\n expect(config.metadataServiceDomain.url).toBe(customMetadataConfig.url);\n expect(config.metadataServiceDomain.url).not.toBe(\n \"https://nft.api.live.ledger.com/v2\",\n );\n });\n });\n\n describe(\"setCalConfig\", () => {\n it(\"should set the CAL configuration\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n const customCalConfig: ContextModuleCalConfig = {\n url: \"https://custom-cal-service.com/v2\",\n mode: \"test\",\n branch: \"next\",\n };\n\n const res = contextModuleBuilder.setCalConfig(customCalConfig).build();\n const config = (res as DefaultContextModule)[\n \"_container\"\n ].get<ContextModuleServiceConfig>(configTypes.Config);\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n expect(config.cal).toEqual(customCalConfig);\n });\n\n it(\"should override the default CAL configuration\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n const customCalConfig: ContextModuleCalConfig = {\n url: \"https://override-cal-service.com/v1\",\n mode: \"prod\",\n branch: \"demo\",\n };\n\n const res = contextModuleBuilder.setCalConfig(customCalConfig).build();\n const config = (res as DefaultContextModule)[\n \"_container\"\n ].get<ContextModuleServiceConfig>(configTypes.Config);\n\n expect(config.cal.url).toBe(customCalConfig.url);\n expect(config.cal.mode).toBe(customCalConfig.mode);\n expect(config.cal.branch).toBe(customCalConfig.branch);\n expect(config.cal.url).not.toBe(\n \"https://crypto-assets-service.api.ledger.com/v1\",\n );\n });\n });\n\n describe(\"setWeb3ChecksConfig\", () => {\n it(\"should set the web3 checks configuration\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n const customWeb3ChecksConfig = {\n url: \"https://custom-web3checks-service.com/v4\",\n };\n\n const res = contextModuleBuilder\n .setWeb3ChecksConfig(customWeb3ChecksConfig)\n .build();\n const config = (res as DefaultContextModule)[\n \"_container\"\n ].get<ContextModuleServiceConfig>(configTypes.Config);\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n expect(config.web3checks).toEqual(customWeb3ChecksConfig);\n });\n\n it(\"should override the default web3 checks configuration\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n const customWeb3ChecksConfig = {\n url: \"https://override-web3checks-service.com/v2\",\n };\n\n const res = contextModuleBuilder\n .setWeb3ChecksConfig(customWeb3ChecksConfig)\n .build();\n const config = (res as DefaultContextModule)[\n \"_container\"\n ].get<ContextModuleServiceConfig>(configTypes.Config);\n\n expect(config.web3checks.url).toBe(customWeb3ChecksConfig.url);\n expect(config.web3checks.url).not.toBe(\n \"https://web3checks-backend.api.ledger.com/v3\",\n );\n });\n });\n\n describe(\"setDatasourceConfig\", () => {\n it(\"should bind HttpSafeProxyDataSource when proxy is 'safe'\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n const customDatasourceConfig: ContextModuleDatasourceConfig = {\n proxy: \"safe\",\n };\n\n const res = contextModuleBuilder\n .setDatasourceConfig(customDatasourceConfig)\n .build();\n // @ts-expect-error _container is private\n const proxyDataSource = res[\"_container\"].get(proxyTypes.ProxyDataSource);\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n expect(proxyDataSource).toBeInstanceOf(HttpSafeProxyDataSource);\n });\n\n it(\"should bind HttpProxyDataSource when proxy is 'default'\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n const customDatasourceConfig: ContextModuleDatasourceConfig = {\n proxy: \"default\",\n };\n\n const res = contextModuleBuilder\n .setDatasourceConfig(customDatasourceConfig)\n .build();\n // @ts-expect-error _container is private\n const proxyDataSource = res[\"_container\"].get(proxyTypes.ProxyDataSource);\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n expect(proxyDataSource).toBeInstanceOf(HttpProxyDataSource);\n });\n\n it(\"should bind HttpProxyDataSource when datasource config is empty\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n const customDatasourceConfig: ContextModuleDatasourceConfig = {};\n\n const res = contextModuleBuilder\n .setDatasourceConfig(customDatasourceConfig)\n .build();\n // @ts-expect-error _container is private\n const proxyDataSource = res[\"_container\"].get(proxyTypes.ProxyDataSource);\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n expect(proxyDataSource).toBeInstanceOf(HttpProxyDataSource);\n });\n });\n\n describe(\"loggerFactory\", () => {\n it(\"should use the default empty logger when loggerFactory is not provided\", () => {\n const contextModuleBuilder = new ContextModuleBuilder({\n originToken: \"test\",\n });\n\n const res = contextModuleBuilder.build();\n const loggerFactory = (res as DefaultContextModule)[\"_container\"].get<\n (tag: string) => LoggerPublisherService\n >(configTypes.ContextModuleLoggerFactory);\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n expect(loggerFactory).toBeDefined();\n\n const logger = loggerFactory(\"test\");\n expect(logger.debug).toBeDefined();\n expect(logger.info).toBeDefined();\n expect(logger.warn).toBeDefined();\n expect(logger.error).toBeDefined();\n expect(logger.subscribers).toEqual([]);\n\n expect(() => logger.debug(\"test\")).not.toThrow();\n expect(() => logger.info(\"test\")).not.toThrow();\n expect(() => logger.warn(\"test\")).not.toThrow();\n expect(() => logger.error(\"test\")).not.toThrow();\n });\n\n it(\"should set the loggerFactory when provided in the constructor\", () => {\n const loggerFactory: (tag: string) => LoggerPublisherService = vi.fn();\n\n const contextModuleBuilder = new ContextModuleBuilder({\n ...defaultBuilderArgs,\n loggerFactory,\n });\n\n const res = contextModuleBuilder.build();\n const boundLoggerFactory = (res as DefaultContextModule)[\n \"_container\"\n ].get<(tag: string) => LoggerPublisherService>(\n configTypes.ContextModuleLoggerFactory,\n );\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n expect(boundLoggerFactory).toBe(loggerFactory);\n });\n\n it(\"should set the loggerFactory via setLoggerFactory\", () => {\n const loggerFactory: (tag: string) => LoggerPublisherService = vi.fn();\n\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n\n const res = contextModuleBuilder.setLoggerFactory(loggerFactory).build();\n const boundLoggerFactory = (res as DefaultContextModule)[\n \"_container\"\n ].get<(tag: string) => LoggerPublisherService>(\n configTypes.ContextModuleLoggerFactory,\n );\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n expect(boundLoggerFactory).toBe(loggerFactory);\n });\n\n it(\"should override constructor loggerFactory with setLoggerFactory\", () => {\n const constructorLoggerFactory: (tag: string) => LoggerPublisherService =\n vi.fn();\n const overrideLoggerFactory: (tag: string) => LoggerPublisherService =\n vi.fn();\n\n const contextModuleBuilder = new ContextModuleBuilder({\n ...defaultBuilderArgs,\n loggerFactory: constructorLoggerFactory,\n });\n\n const res = contextModuleBuilder\n .setLoggerFactory(overrideLoggerFactory)\n .build();\n const boundLoggerFactory = (res as DefaultContextModule)[\n \"_container\"\n ].get<(tag: string) => LoggerPublisherService>(\n configTypes.ContextModuleLoggerFactory,\n );\n\n expect(boundLoggerFactory).toBe(overrideLoggerFactory);\n expect(boundLoggerFactory).not.toBe(constructorLoggerFactory);\n });\n });\n\n describe(\"instance isolation\", () => {\n it(\"should not share customLoaders arrays between builder instances\", () => {\n const builder1 = new ContextModuleBuilder(defaultBuilderArgs);\n const builder2 = new ContextModuleBuilder(defaultBuilderArgs);\n const customLoader: ContextLoader = {\n load: vi.fn(),\n canHandle: vi.fn() as unknown as ContextLoader[\"canHandle\"],\n };\n\n builder1.addLoader(customLoader);\n\n const res1 = builder1.removeDefaultLoaders().build();\n const res2 = builder2.removeDefaultLoaders().build();\n\n // @ts-expect-error _loaders is private\n expect(res1[\"_loaders\"]).toHaveLength(1);\n // @ts-expect-error _loaders is private\n expect(res2[\"_loaders\"]).toHaveLength(0);\n });\n });\n\n describe(\"setTrustedNameDataSource\", () => {\n it(\"should inject the custom data source into the container\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n const customDataSource: TrustedNameDataSource = {\n getDomainNamePayload: vi.fn(),\n getTrustedNamePayload: vi.fn(),\n };\n\n const res = contextModuleBuilder\n .setTrustedNameDataSource(customDataSource)\n .build();\n const injectedDataSource = (res as DefaultContextModule)[\n \"_container\"\n ].get<TrustedNameDataSource>(trustedNameTypes.TrustedNameDataSource);\n\n expect(injectedDataSource).toBe(customDataSource);\n });\n\n it(\"should use HttpTrustedNameDataSource when no custom data source is set\", () => {\n const contextModuleBuilder = new ContextModuleBuilder(defaultBuilderArgs);\n\n const res = contextModuleBuilder.build();\n const injectedDataSource = (res as DefaultContextModule)[\n \"_container\"\n ].get<TrustedNameDataSource>(trustedNameTypes.TrustedNameDataSource);\n\n expect(res).toBeInstanceOf(DefaultContextModule);\n expect(injectedDataSource).toBeInstanceOf(HttpTrustedNameDataSource);\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["configTypes", "HttpProxyDataSource", "HttpSafeProxyDataSource", "proxyTypes", "HttpTrustedNameDataSource", "trustedNameTypes", "ContextModuleBuilder", "DefaultContextModule", "defaultCalConfig", "defaultWeb3ChecksConfig", "defaultBuilderArgs", "res", "contextModuleBuilder", "customLoader", "config", "customMetadataConfig", "customCalConfig", "customWeb3ChecksConfig", "customDatasourceConfig", "proxyDataSource", "loggerFactory", "logger", "boundLoggerFactory", "constructorLoggerFactory", "overrideLoggerFactory", "builder1", "builder2", "res1", "res2", "customDataSource", "injectedDataSource"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{Left as C}from"purify-ts";import{calldataTypes as x}from"./calldata/di/calldataTypes";import{dynamicNetworkTypes as m}from"./dynamic-network/di/dynamicNetworkTypes";import{trustedNameTypes as i}from"./trusted-name/di/trustedNameTypes";import{externalPluginTypes as L}from"./external-plugin/di/externalPluginTypes";import{nftTypes as s}from"./nft/di/nftTypes";import{proxyTypes as y}from"./proxy/di/proxyTypes";import{safeTypes as c}from"./safe/di/safeTypes";import{ClearSignContextType as n}from"./shared/model/ClearSignContext";import{solanaContextTypes as f}from"./solana/di/solanaContextTypes";import{tokenTypes as l}from"./token/di/tokenTypes";import{transactionCheckTypes as p}from"./transaction-check/di/transactionCheckTypes";import{typedDataTypes as u}from"./typed-data/di/typedDataTypes";import{makeContainer as T}from"./di";class ${_container;_loaders;_typedDataLoader;_solanaLoader;_fieldLoaders;constructor(t){this._container=T({config:t}),this._loaders=t.defaultLoaders?this._getDefaultLoaders():[],this._loaders.push(...t.customLoaders),this._fieldLoaders=t.defaultFieldLoaders?this._getDefaultFieldLoaders():[],this._fieldLoaders.push(...t.customFieldLoaders),this._typedDataLoader=t.customTypedDataLoader??this._getDefaultTypedDataLoader(),this._solanaLoader=t.customSolanaLoader??this._getSolanaLoader()}_getDefaultFieldLoaders(){return[this._container.get(s.NftContextFieldLoader),this._container.get(l.TokenContextFieldLoader),this._container.get(i.TrustedNameContextFieldLoader),this._container.get(y.ProxyContextFieldLoader)]}_getDefaultLoaders(){return[this._container.get(L.ExternalPluginContextLoader),this._container.get(i.TrustedNameContextLoader),this._container.get(s.NftContextLoader),this._container.get(l.TokenContextLoader),this._container.get(x.CalldataContextLoader),this._container.get(m.DynamicNetworkContextLoader),this._container.get(c.SafeAddressLoader),this._container.get(p.TransactionCheckContextLoader),this._container.get(p.TypedDataCheckContextLoader)]}_getDefaultTypedDataLoader(){return this._container.get(u.TypedDataContextLoader)}_getSolanaLoader(){try{return this._container.get(f.SolanaContextLoader)}catch{return{load:async t=>C(new Error("[ContextModule] - DefaultContextModule: no SolanaContextLoader bound"))}}}async getContexts(t,e){const o=Object.values(n),r=this._loaders.filter(d=>d.canHandle(t,e??o)).map(d=>d.load(t));return(await Promise.all(r)).flat()}async getFieldContext(t,e){const o=this._fieldLoaders.filter(a=>a.canHandle(t,e));if(o.length===0)return Promise.resolve({type:n.ERROR,error:new Error(`Loader not found for field: ${t} and expected type: ${e}`)});for(const a of o){const r=await a.loadField(t);if(r.type!==n.ERROR)return r}return{type:n.ERROR,error:new Error(`Loader not found for field: ${t} and expected type: ${e}`)}}async getTypedDataFilters(t){return this._typedDataLoader.load(t)}async getSolanaContext(t){return await this._solanaLoader.load(t)}}export{$ as DefaultContextModule};
1
+ import{Left as m}from"purify-ts";import{calldataTypes as x}from"./calldata/di/calldataTypes";import{dynamicNetworkTypes as L}from"./dynamic-network/di/dynamicNetworkTypes";import{reporterTypes as g}from"./reporter/di/reporterTypes";import{trustedNameTypes as d}from"./trusted-name/di/trustedNameTypes";import{externalPluginTypes as y}from"./external-plugin/di/externalPluginTypes";import{gatedSigningTypes as p}from"./gated-signing/di/gatedSigningTypes";import{nftTypes as s}from"./nft/di/nftTypes";import{proxyTypes as c}from"./proxy/di/proxyTypes";import{safeTypes as f}from"./safe/di/safeTypes";import{ClearSignContextType as n}from"./shared/model/ClearSignContext";import{solanaContextTypes as u}from"./solana/di/solanaContextTypes";import{tokenTypes as l}from"./token/di/tokenTypes";import{transactionCheckTypes as C}from"./transaction-check/di/transactionCheckTypes";import{typedDataTypes as _}from"./typed-data/di/typedDataTypes";import{makeContainer as h}from"./di";class I{_container;_loaders;_typedDataLoader;_solanaLoader;_fieldLoaders;_blindSigningReporter;constructor(e){this._container=h({config:e}),this._loaders=e.defaultLoaders?this._getDefaultLoaders():[],this._loaders.push(...e.customLoaders),this._fieldLoaders=e.defaultFieldLoaders?this._getDefaultFieldLoaders():[],this._fieldLoaders.push(...e.customFieldLoaders),this._typedDataLoader=e.customTypedDataLoader??this._getDefaultTypedDataLoader(),this._solanaLoader=e.customSolanaLoader??this._getSolanaLoader(),this._blindSigningReporter=e.customBlindSigningReporter??this._getBlindSigningReporter()}_getDefaultFieldLoaders(){return[this._container.get(s.NftContextFieldLoader),this._container.get(l.TokenContextFieldLoader),this._container.get(d.TrustedNameContextFieldLoader),this._container.get(c.ProxyContextFieldLoader)]}_getDefaultLoaders(){return[this._container.get(y.ExternalPluginContextLoader),this._container.get(d.TrustedNameContextLoader),this._container.get(s.NftContextLoader),this._container.get(l.TokenContextLoader),this._container.get(x.CalldataContextLoader),this._container.get(L.DynamicNetworkContextLoader),this._container.get(f.SafeAddressLoader),this._container.get(p.GatedSigningContextLoader),this._container.get(p.GatedSigningTypedDataContextLoader),this._container.get(C.TransactionCheckContextLoader),this._container.get(C.TypedDataCheckContextLoader)]}_getDefaultTypedDataLoader(){return this._container.get(_.TypedDataContextLoader)}_getBlindSigningReporter(){return this._container.get(g.BlindSigningReporter)}_getSolanaLoader(){try{return this._container.get(u.SolanaContextLoader)}catch{return{load:async e=>m(new Error("[ContextModule] - DefaultContextModule: no SolanaContextLoader bound"))}}}async getContexts(e,t){const o=Object.values(n),a=this._loaders.filter(i=>i.canHandle(e,t??o)).map(i=>i.load(e));return(await Promise.all(a)).flat()}async getFieldContext(e,t){const o=this._fieldLoaders.filter(r=>r.canHandle(e,t));if(o.length===0)return Promise.resolve({type:n.ERROR,error:new Error(`Loader not found for field: ${e} and expected type: ${t}`)});for(const r of o){const a=await r.loadField(e);if(a.type!==n.ERROR)return a}return{type:n.ERROR,error:new Error(`Loader not found for field: ${e} and expected type: ${t}`)}}async getTypedDataFilters(e){return this._typedDataLoader.load(e)}async getSolanaContext(e){return await this._solanaLoader.load(e)}async report(e){await this._blindSigningReporter.report(e)}}export{I as DefaultContextModule};
2
2
  //# sourceMappingURL=DefaultContextModule.js.map