@ledgerhq/context-module 2.4.1 → 2.6.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 (237) hide show
  1. package/lib/cjs/package.json +2 -2
  2. package/lib/cjs/src/ContextModule.js +1 -1
  3. package/lib/cjs/src/ContextModule.js.map +1 -1
  4. package/lib/cjs/src/ContextModuleBuilder.js +1 -1
  5. package/lib/cjs/src/ContextModuleBuilder.js.map +2 -2
  6. package/lib/cjs/src/DefaultContextModule.js +1 -1
  7. package/lib/cjs/src/DefaultContextModule.js.map +3 -3
  8. package/lib/cjs/src/di.js +1 -1
  9. package/lib/cjs/src/di.js.map +3 -3
  10. package/lib/cjs/src/index.js +1 -1
  11. package/lib/cjs/src/index.js.map +2 -2
  12. package/lib/cjs/src/modules/multichain/reporter/data/BlindSigningReporterDatasource.js.map +1 -1
  13. package/lib/cjs/src/modules/multichain/reporter/data/HttpBlindSigningReporterDatasource.js +1 -1
  14. package/lib/cjs/src/modules/multichain/reporter/data/HttpBlindSigningReporterDatasource.js.map +2 -2
  15. package/lib/cjs/src/modules/multichain/reporter/data/HttpBlindSigningReporterDatasource.test.js +1 -1
  16. package/lib/cjs/src/modules/multichain/reporter/data/HttpBlindSigningReporterDatasource.test.js.map +2 -2
  17. package/lib/cjs/src/modules/multichain/reporter/data/dto/BlindSigningEventDto.js.map +1 -1
  18. package/lib/cjs/src/modules/multichain/reporter/domain/DefaultBlindSigningReporter.test.js +1 -1
  19. package/lib/cjs/src/modules/multichain/reporter/domain/DefaultBlindSigningReporter.test.js.map +2 -2
  20. package/lib/cjs/src/modules/multichain/reporter/model/BlindSigningEvent.js +1 -1
  21. package/lib/cjs/src/modules/multichain/reporter/model/BlindSigningEvent.js.map +2 -2
  22. package/lib/cjs/src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.js +2 -0
  23. package/lib/cjs/src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.js.map +7 -0
  24. package/lib/cjs/src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.test.js +2 -0
  25. package/lib/cjs/src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.test.js.map +7 -0
  26. package/lib/cjs/src/modules/multichain/sign-reporter/data/SignReporterDatasource.js +2 -0
  27. package/lib/cjs/src/modules/multichain/sign-reporter/data/SignReporterDatasource.js.map +7 -0
  28. package/lib/cjs/src/modules/multichain/sign-reporter/data/dto/SigningEventDto.js +2 -0
  29. package/lib/cjs/src/modules/multichain/sign-reporter/data/dto/SigningEventDto.js.map +7 -0
  30. package/lib/cjs/src/modules/multichain/sign-reporter/di/signReporterModuleFactory.js +2 -0
  31. package/lib/cjs/src/modules/multichain/sign-reporter/di/signReporterModuleFactory.js.map +7 -0
  32. package/lib/cjs/src/modules/multichain/sign-reporter/di/signReporterTypes.js +2 -0
  33. package/lib/cjs/src/modules/multichain/sign-reporter/di/signReporterTypes.js.map +7 -0
  34. package/lib/cjs/src/modules/multichain/sign-reporter/domain/DefaultSignReporter.js +2 -0
  35. package/lib/cjs/src/modules/multichain/sign-reporter/domain/DefaultSignReporter.js.map +7 -0
  36. package/lib/cjs/src/modules/multichain/sign-reporter/domain/DefaultSignReporter.test.js +2 -0
  37. package/lib/cjs/src/modules/multichain/sign-reporter/domain/DefaultSignReporter.test.js.map +7 -0
  38. package/lib/cjs/src/modules/multichain/sign-reporter/domain/SignReporter.js +2 -0
  39. package/lib/cjs/src/modules/multichain/sign-reporter/domain/SignReporter.js.map +7 -0
  40. package/lib/cjs/src/modules/multichain/sign-reporter/model/SignReportParams.js +2 -0
  41. package/lib/cjs/src/modules/multichain/sign-reporter/model/SignReportParams.js.map +7 -0
  42. package/lib/cjs/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js +1 -1
  43. package/lib/cjs/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js.map +2 -2
  44. package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoDto.js +1 -1
  45. package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoDto.js.map +3 -3
  46. package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoMapper.js +1 -1
  47. package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoMapper.js.map +3 -3
  48. package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoMapper.test.js +1 -1
  49. package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoMapper.test.js.map +2 -2
  50. package/lib/cjs/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.test.js +1 -1
  51. package/lib/cjs/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.test.js.map +2 -2
  52. package/lib/cjs/src/modules/solana/model/SolanaClearSignContext.js +1 -1
  53. package/lib/cjs/src/modules/solana/model/SolanaClearSignContext.js.map +2 -2
  54. package/lib/cjs/src/modules/solana/model/SolanaPayloads.js +1 -1
  55. package/lib/cjs/src/modules/solana/model/SolanaPayloads.js.map +2 -2
  56. package/lib/cjs/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.js +1 -1
  57. package/lib/cjs/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.js.map +3 -3
  58. package/lib/cjs/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.test.js +1 -1
  59. package/lib/cjs/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.test.js.map +3 -3
  60. package/lib/cjs/src/modules/tron/model/TronTransactionContext.js +2 -0
  61. package/lib/cjs/src/modules/tron/model/TronTransactionContext.js.map +7 -0
  62. package/lib/cjs/src/modules/tron/token/data/HttpTokenDataSource.js +2 -0
  63. package/lib/cjs/src/modules/tron/token/data/HttpTokenDataSource.js.map +7 -0
  64. package/lib/cjs/src/modules/tron/token/data/HttpTokenDataSource.test.js +2 -0
  65. package/lib/cjs/src/modules/tron/token/data/HttpTokenDataSource.test.js.map +7 -0
  66. package/lib/cjs/src/modules/tron/token/data/TokenDataSource.js +2 -0
  67. package/lib/cjs/src/modules/tron/token/data/TokenDataSource.js.map +7 -0
  68. package/lib/cjs/src/modules/tron/token/di/tokenModuleFactory.js +2 -0
  69. package/lib/cjs/src/modules/tron/token/di/tokenModuleFactory.js.map +7 -0
  70. package/lib/cjs/src/modules/tron/token/di/tokenTypes.js +2 -0
  71. package/lib/cjs/src/modules/tron/token/di/tokenTypes.js.map +7 -0
  72. package/lib/cjs/src/modules/tron/token/domain/TokenContextLoader.js +2 -0
  73. package/lib/cjs/src/modules/tron/token/domain/TokenContextLoader.js.map +7 -0
  74. package/lib/cjs/src/modules/tron/token/domain/TokenContextLoader.test.js +2 -0
  75. package/lib/cjs/src/modules/tron/token/domain/TokenContextLoader.test.js.map +7 -0
  76. package/lib/cjs/src/modules/tron/token/domain/parseTrc10AssetId.js +2 -0
  77. package/lib/cjs/src/modules/tron/token/domain/parseTrc10AssetId.js.map +7 -0
  78. package/lib/cjs/src/modules/tron/token/domain/parseTrc10AssetId.test.js +2 -0
  79. package/lib/cjs/src/modules/tron/token/domain/parseTrc10AssetId.test.js.map +7 -0
  80. package/lib/cjs/src/shared/domain/ContextModuleChainID.js +1 -1
  81. package/lib/cjs/src/shared/domain/ContextModuleChainID.js.map +2 -2
  82. package/lib/cjs/src/{modules/multichain/reporter → shared}/model/BlindSigningModelId.js.map +1 -1
  83. package/lib/cjs/src/shared/model/ClearSignContext.js +1 -1
  84. package/lib/cjs/src/shared/model/ClearSignContext.js.map +2 -2
  85. package/lib/esm/package.json +2 -2
  86. package/lib/esm/src/ContextModuleBuilder.js +1 -1
  87. package/lib/esm/src/ContextModuleBuilder.js.map +2 -2
  88. package/lib/esm/src/DefaultContextModule.js +1 -1
  89. package/lib/esm/src/DefaultContextModule.js.map +3 -3
  90. package/lib/esm/src/di.js +1 -1
  91. package/lib/esm/src/di.js.map +3 -3
  92. package/lib/esm/src/index.js +1 -1
  93. package/lib/esm/src/index.js.map +2 -2
  94. package/lib/esm/src/modules/multichain/reporter/data/HttpBlindSigningReporterDatasource.js +1 -1
  95. package/lib/esm/src/modules/multichain/reporter/data/HttpBlindSigningReporterDatasource.js.map +2 -2
  96. package/lib/esm/src/modules/multichain/reporter/data/HttpBlindSigningReporterDatasource.test.js +1 -1
  97. package/lib/esm/src/modules/multichain/reporter/data/HttpBlindSigningReporterDatasource.test.js.map +2 -2
  98. package/lib/esm/src/modules/multichain/reporter/domain/DefaultBlindSigningReporter.test.js +1 -1
  99. package/lib/esm/src/modules/multichain/reporter/domain/DefaultBlindSigningReporter.test.js.map +2 -2
  100. package/lib/esm/src/modules/multichain/reporter/model/BlindSigningEvent.js +1 -1
  101. package/lib/esm/src/modules/multichain/reporter/model/BlindSigningEvent.js.map +2 -2
  102. package/lib/esm/src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.js +2 -0
  103. package/lib/esm/src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.js.map +7 -0
  104. package/lib/esm/src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.test.js +2 -0
  105. package/lib/esm/src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.test.js.map +7 -0
  106. package/lib/esm/src/modules/multichain/sign-reporter/data/SignReporterDatasource.js +1 -0
  107. package/lib/esm/src/modules/multichain/sign-reporter/data/SignReporterDatasource.js.map +7 -0
  108. package/lib/esm/src/modules/multichain/sign-reporter/data/dto/SigningEventDto.js +1 -0
  109. package/lib/esm/src/modules/multichain/sign-reporter/data/dto/SigningEventDto.js.map +7 -0
  110. package/lib/esm/src/modules/multichain/sign-reporter/di/signReporterModuleFactory.js +2 -0
  111. package/lib/esm/src/modules/multichain/sign-reporter/di/signReporterModuleFactory.js.map +7 -0
  112. package/lib/esm/src/modules/multichain/sign-reporter/di/signReporterTypes.js +2 -0
  113. package/lib/esm/src/modules/multichain/sign-reporter/di/signReporterTypes.js.map +7 -0
  114. package/lib/esm/src/modules/multichain/sign-reporter/domain/DefaultSignReporter.js +2 -0
  115. package/lib/esm/src/modules/multichain/sign-reporter/domain/DefaultSignReporter.js.map +7 -0
  116. package/lib/esm/src/modules/multichain/sign-reporter/domain/DefaultSignReporter.test.js +2 -0
  117. package/lib/esm/src/modules/multichain/sign-reporter/domain/DefaultSignReporter.test.js.map +7 -0
  118. package/lib/esm/src/modules/multichain/sign-reporter/domain/SignReporter.js +1 -0
  119. package/lib/esm/src/modules/multichain/sign-reporter/domain/SignReporter.js.map +7 -0
  120. package/lib/esm/src/modules/multichain/sign-reporter/model/SignReportParams.js +2 -0
  121. package/lib/esm/src/modules/multichain/sign-reporter/model/SignReportParams.js.map +7 -0
  122. package/lib/esm/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js +1 -1
  123. package/lib/esm/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js.map +2 -2
  124. package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoDto.js +1 -1
  125. package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoDto.js.map +3 -3
  126. package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoMapper.js +1 -1
  127. package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoMapper.js.map +3 -3
  128. package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoMapper.test.js +1 -1
  129. package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoMapper.test.js.map +3 -3
  130. package/lib/esm/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.test.js +1 -1
  131. package/lib/esm/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.test.js.map +2 -2
  132. package/lib/esm/src/modules/solana/model/SolanaClearSignContext.js +1 -1
  133. package/lib/esm/src/modules/solana/model/SolanaClearSignContext.js.map +2 -2
  134. package/lib/esm/src/modules/solana/model/SolanaPayloads.js.map +2 -2
  135. package/lib/esm/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.js +1 -1
  136. package/lib/esm/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.js.map +3 -3
  137. package/lib/esm/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.test.js +1 -1
  138. package/lib/esm/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.test.js.map +3 -3
  139. package/lib/esm/src/modules/tron/model/TronTransactionContext.js +1 -0
  140. package/lib/esm/src/modules/tron/model/TronTransactionContext.js.map +7 -0
  141. package/lib/esm/src/modules/tron/token/data/HttpTokenDataSource.js +2 -0
  142. package/lib/esm/src/modules/tron/token/data/HttpTokenDataSource.js.map +7 -0
  143. package/lib/esm/src/modules/tron/token/data/HttpTokenDataSource.test.js +2 -0
  144. package/lib/esm/src/modules/tron/token/data/HttpTokenDataSource.test.js.map +7 -0
  145. package/lib/esm/src/modules/tron/token/data/TokenDataSource.js +2 -0
  146. package/lib/esm/src/modules/tron/token/data/TokenDataSource.js.map +7 -0
  147. package/lib/esm/src/modules/tron/token/di/tokenModuleFactory.js +2 -0
  148. package/lib/esm/src/modules/tron/token/di/tokenModuleFactory.js.map +7 -0
  149. package/lib/esm/src/modules/tron/token/di/tokenTypes.js +2 -0
  150. package/lib/esm/src/modules/tron/token/di/tokenTypes.js.map +7 -0
  151. package/lib/esm/src/modules/tron/token/domain/TokenContextLoader.js +2 -0
  152. package/lib/esm/src/modules/tron/token/domain/TokenContextLoader.js.map +7 -0
  153. package/lib/esm/src/modules/tron/token/domain/TokenContextLoader.test.js +2 -0
  154. package/lib/esm/src/modules/tron/token/domain/TokenContextLoader.test.js.map +7 -0
  155. package/lib/esm/src/modules/tron/token/domain/parseTrc10AssetId.js +2 -0
  156. package/lib/esm/src/modules/tron/token/domain/parseTrc10AssetId.js.map +7 -0
  157. package/lib/esm/src/modules/tron/token/domain/parseTrc10AssetId.test.js +2 -0
  158. package/lib/esm/src/modules/tron/token/domain/parseTrc10AssetId.test.js.map +7 -0
  159. package/lib/esm/src/shared/domain/ContextModuleChainID.js +1 -1
  160. package/lib/esm/src/shared/domain/ContextModuleChainID.js.map +2 -2
  161. package/lib/esm/src/{modules/multichain/reporter → shared}/model/BlindSigningModelId.js.map +1 -1
  162. package/lib/esm/src/shared/model/ClearSignContext.js +1 -1
  163. package/lib/esm/src/shared/model/ClearSignContext.js.map +2 -2
  164. package/lib/types/src/ContextModule.d.ts +2 -0
  165. package/lib/types/src/ContextModule.d.ts.map +1 -1
  166. package/lib/types/src/DefaultContextModule.d.ts +3 -0
  167. package/lib/types/src/DefaultContextModule.d.ts.map +1 -1
  168. package/lib/types/src/di.d.ts.map +1 -1
  169. package/lib/types/src/index.d.ts +3 -1
  170. package/lib/types/src/index.d.ts.map +1 -1
  171. package/lib/types/src/modules/multichain/reporter/data/BlindSigningReporterDatasource.d.ts +1 -1
  172. package/lib/types/src/modules/multichain/reporter/data/BlindSigningReporterDatasource.d.ts.map +1 -1
  173. package/lib/types/src/modules/multichain/reporter/data/dto/BlindSigningEventDto.d.ts +1 -1
  174. package/lib/types/src/modules/multichain/reporter/data/dto/BlindSigningEventDto.d.ts.map +1 -1
  175. package/lib/types/src/modules/multichain/reporter/model/BlindSigningEvent.d.ts +2 -0
  176. package/lib/types/src/modules/multichain/reporter/model/BlindSigningEvent.d.ts.map +1 -1
  177. package/lib/types/src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.d.ts +14 -0
  178. package/lib/types/src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.d.ts.map +1 -0
  179. package/lib/types/src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.test.d.ts +2 -0
  180. package/lib/types/src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.test.d.ts.map +1 -0
  181. package/lib/types/src/modules/multichain/sign-reporter/data/SignReporterDatasource.d.ts +6 -0
  182. package/lib/types/src/modules/multichain/sign-reporter/data/SignReporterDatasource.d.ts.map +1 -0
  183. package/lib/types/src/modules/multichain/sign-reporter/data/dto/SigningEventDto.d.ts +48 -0
  184. package/lib/types/src/modules/multichain/sign-reporter/data/dto/SigningEventDto.d.ts.map +1 -0
  185. package/lib/types/src/modules/multichain/sign-reporter/di/signReporterModuleFactory.d.ts +3 -0
  186. package/lib/types/src/modules/multichain/sign-reporter/di/signReporterModuleFactory.d.ts.map +1 -0
  187. package/lib/types/src/modules/multichain/sign-reporter/di/signReporterTypes.d.ts +5 -0
  188. package/lib/types/src/modules/multichain/sign-reporter/di/signReporterTypes.d.ts.map +1 -0
  189. package/lib/types/src/modules/multichain/sign-reporter/domain/DefaultSignReporter.d.ts +10 -0
  190. package/lib/types/src/modules/multichain/sign-reporter/domain/DefaultSignReporter.d.ts.map +1 -0
  191. package/lib/types/src/modules/multichain/sign-reporter/domain/DefaultSignReporter.test.d.ts +2 -0
  192. package/lib/types/src/modules/multichain/sign-reporter/domain/DefaultSignReporter.test.d.ts.map +1 -0
  193. package/lib/types/src/modules/multichain/sign-reporter/domain/SignReporter.d.ts +6 -0
  194. package/lib/types/src/modules/multichain/sign-reporter/domain/SignReporter.d.ts.map +1 -0
  195. package/lib/types/src/modules/multichain/sign-reporter/model/SignReportParams.d.ts +45 -0
  196. package/lib/types/src/modules/multichain/sign-reporter/model/SignReportParams.d.ts.map +1 -0
  197. package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoDto.d.ts +46 -2
  198. package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoDto.d.ts.map +1 -1
  199. package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoMapper.d.ts +19 -2
  200. package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoMapper.d.ts.map +1 -1
  201. package/lib/types/src/modules/solana/model/SolanaClearSignContext.d.ts +1 -1
  202. package/lib/types/src/modules/solana/model/SolanaClearSignContext.d.ts.map +1 -1
  203. package/lib/types/src/modules/solana/model/SolanaPayloads.d.ts +54 -0
  204. package/lib/types/src/modules/solana/model/SolanaPayloads.d.ts.map +1 -1
  205. package/lib/types/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.d.ts +3 -2
  206. package/lib/types/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.d.ts.map +1 -1
  207. package/lib/types/src/modules/tron/model/TronTransactionContext.d.ts +5 -0
  208. package/lib/types/src/modules/tron/model/TronTransactionContext.d.ts.map +1 -0
  209. package/lib/types/src/modules/tron/token/data/HttpTokenDataSource.d.ts +17 -0
  210. package/lib/types/src/modules/tron/token/data/HttpTokenDataSource.d.ts.map +1 -0
  211. package/lib/types/src/modules/tron/token/data/HttpTokenDataSource.test.d.ts +2 -0
  212. package/lib/types/src/modules/tron/token/data/HttpTokenDataSource.test.d.ts.map +1 -0
  213. package/lib/types/src/modules/tron/token/data/TokenDataSource.d.ts +20 -0
  214. package/lib/types/src/modules/tron/token/data/TokenDataSource.d.ts.map +1 -0
  215. package/lib/types/src/modules/tron/token/di/tokenModuleFactory.d.ts +3 -0
  216. package/lib/types/src/modules/tron/token/di/tokenModuleFactory.d.ts.map +1 -0
  217. package/lib/types/src/modules/tron/token/di/tokenTypes.d.ts +5 -0
  218. package/lib/types/src/modules/tron/token/di/tokenTypes.d.ts.map +1 -0
  219. package/lib/types/src/modules/tron/token/domain/TokenContextLoader.d.ts +16 -0
  220. package/lib/types/src/modules/tron/token/domain/TokenContextLoader.d.ts.map +1 -0
  221. package/lib/types/src/modules/tron/token/domain/TokenContextLoader.test.d.ts +2 -0
  222. package/lib/types/src/modules/tron/token/domain/TokenContextLoader.test.d.ts.map +1 -0
  223. package/lib/types/src/modules/tron/token/domain/parseTrc10AssetId.d.ts +16 -0
  224. package/lib/types/src/modules/tron/token/domain/parseTrc10AssetId.d.ts.map +1 -0
  225. package/lib/types/src/modules/tron/token/domain/parseTrc10AssetId.test.d.ts +2 -0
  226. package/lib/types/src/modules/tron/token/domain/parseTrc10AssetId.test.d.ts.map +1 -0
  227. package/lib/types/src/shared/domain/ContextModuleChainID.d.ts +2 -1
  228. package/lib/types/src/shared/domain/ContextModuleChainID.d.ts.map +1 -1
  229. package/lib/types/src/shared/model/BlindSigningModelId.d.ts.map +1 -0
  230. package/lib/types/src/shared/model/ClearSignContext.d.ts +2 -1
  231. package/lib/types/src/shared/model/ClearSignContext.d.ts.map +1 -1
  232. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  233. package/package.json +4 -4
  234. package/lib/types/src/modules/multichain/reporter/model/BlindSigningModelId.d.ts.map +0 -1
  235. /package/lib/cjs/src/{modules/multichain/reporter → shared}/model/BlindSigningModelId.js +0 -0
  236. /package/lib/esm/src/{modules/multichain/reporter → shared}/model/BlindSigningModelId.js +0 -0
  237. /package/lib/types/src/{modules/multichain/reporter → shared}/model/BlindSigningModelId.d.ts +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/modules/multichain/reporter/data/HttpBlindSigningReporterDatasource.test.ts"],
4
- "sourcesContent": ["import { type DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { type BlindSigningReportParams } from \"@/modules/multichain/reporter/data/BlindSigningReporterDatasource\";\nimport { HttpBlindSigningReporterDatasource } from \"@/modules/multichain/reporter/data/HttpBlindSigningReporterDatasource\";\nimport {\n BlindSigningMethod,\n BlindSigningPlatform,\n BlindSignReason,\n ClearSigningType,\n} from \"@/modules/multichain/reporter/model/BlindSigningEvent\";\nimport { BlindSigningModelId } from \"@/modules/multichain/reporter/model/BlindSigningModelId\";\n\ndescribe(\"HttpBlindSigningReporterDatasource\", () => {\n const config = {\n reporter: {\n url: \"https://reporter.test\",\n },\n originToken: \"originToken\",\n appSource: \"third-party\",\n } as ContextModuleServiceConfig;\n\n const params: BlindSigningReportParams = {\n signatureId: \"a3f8Kb-1738850400000\",\n signingMethod: BlindSigningMethod.ETH_SIGN_TRANSACTION,\n isBlindSign: true,\n chainId: 1,\n targetAddress: \"0xdAC17F958D2ee523a2206206994597C13D831ec7\",\n blindSignReason: BlindSignReason.NO_CLEAR_SIGNING_CONTEXT,\n modelId: BlindSigningModelId.NANO_X,\n signerAppVersion: \"1.12.1\",\n deviceVersion: \"2.2.3\",\n ethContext: {\n clearSigningType: ClearSigningType.EIP7730,\n partialContextErrors: 0,\n },\n };\n\n let httpMock: { post: ReturnType<typeof vi.fn> };\n let dataSource: HttpBlindSigningReporterDatasource;\n\n beforeEach(() => {\n vi.resetAllMocks();\n httpMock = { post: vi.fn() };\n dataSource = new HttpBlindSigningReporterDatasource(\n config,\n httpMock as unknown as DmkNetworkClient,\n );\n });\n\n describe(\"report\", () => {\n it(\"should return Right(undefined) on success\", async () => {\n // GIVEN\n httpMock.post.mockResolvedValueOnce(undefined);\n\n // WHEN\n const result = await dataSource.report(params);\n\n // THEN\n expect(result).toEqual(Right(undefined));\n });\n\n it(\"should return Left(Error) when the request fails\", async () => {\n // GIVEN\n httpMock.post.mockRejectedValueOnce(new Error(\"network error\"));\n\n // WHEN\n const result = await dataSource.report(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpBlindSigningReporterDatasource: Failed to report blind signing event\",\n ),\n ),\n );\n });\n\n it(\"should call http.post with the correct URL, body and options\", async () => {\n // GIVEN\n httpMock.post.mockResolvedValueOnce(undefined);\n\n // WHEN\n await dataSource.report(params);\n\n // THEN\n expect(httpMock.post).toHaveBeenCalledWith(\n `${config.reporter!.url}/blind-signing-events`,\n { ...params, source: config.appSource },\n { responseType: \"void\" },\n );\n });\n\n it(\"should forward optional DTO fields when provided\", async () => {\n // GIVEN\n httpMock.post.mockResolvedValueOnce(undefined);\n const paramsWithOptionalFields: BlindSigningReportParams = {\n ...params,\n platform: BlindSigningPlatform.DESKTOP,\n appVersion: \"2.80.0\",\n platformOS: \"macOS\",\n platformVersion: \"14.5\",\n liveAppContext: \"swap\",\n sessionId: \"session-123\",\n };\n\n // WHEN\n await dataSource.report(paramsWithOptionalFields);\n\n // THEN\n expect(httpMock.post).toHaveBeenCalledWith(\n `${config.reporter!.url}/blind-signing-events`,\n { ...paramsWithOptionalFields, source: config.appSource },\n { responseType: \"void\" },\n );\n });\n });\n});\n"],
5
- "mappings": "aACA,IAAAA,EAA4B,qBAI5BC,EAAmD,iFACnDC,EAKO,iEACPC,EAAoC,mEAEpC,SAAS,qCAAsC,IAAM,CACnD,MAAMC,EAAS,CACb,SAAU,CACR,IAAK,uBACP,EACA,YAAa,cACb,UAAW,aACb,EAEMC,EAAmC,CACvC,YAAa,uBACb,cAAe,qBAAmB,qBAClC,YAAa,GACb,QAAS,EACT,cAAe,6CACf,gBAAiB,kBAAgB,yBACjC,QAAS,sBAAoB,OAC7B,iBAAkB,SAClB,cAAe,QACf,WAAY,CACV,iBAAkB,mBAAiB,QACnC,qBAAsB,CACxB,CACF,EAEA,IAAIC,EACAC,EAEJ,WAAW,IAAM,CACf,GAAG,cAAc,EACjBD,EAAW,CAAE,KAAM,GAAG,GAAG,CAAE,EAC3BC,EAAa,IAAI,qCACfH,EACAE,CACF,CACF,CAAC,EAED,SAAS,SAAU,IAAM,CACvB,GAAG,4CAA6C,SAAY,CAE1DA,EAAS,KAAK,sBAAsB,MAAS,EAG7C,MAAME,EAAS,MAAMD,EAAW,OAAOF,CAAM,EAG7C,OAAOG,CAAM,EAAE,WAAQ,SAAM,MAAS,CAAC,CACzC,CAAC,EAED,GAAG,mDAAoD,SAAY,CAEjEF,EAAS,KAAK,sBAAsB,IAAI,MAAM,eAAe,CAAC,EAG9D,MAAME,EAAS,MAAMD,EAAW,OAAOF,CAAM,EAG7C,OAAOG,CAAM,EAAE,WACb,QACE,IAAI,MACF,0FACF,CACF,CACF,CACF,CAAC,EAED,GAAG,+DAAgE,SAAY,CAE7EF,EAAS,KAAK,sBAAsB,MAAS,EAG7C,MAAMC,EAAW,OAAOF,CAAM,EAG9B,OAAOC,EAAS,IAAI,EAAE,qBACpB,GAAGF,EAAO,SAAU,GAAG,wBACvB,CAAE,GAAGC,EAAQ,OAAQD,EAAO,SAAU,EACtC,CAAE,aAAc,MAAO,CACzB,CACF,CAAC,EAED,GAAG,mDAAoD,SAAY,CAEjEE,EAAS,KAAK,sBAAsB,MAAS,EAC7C,MAAMG,EAAqD,CACzD,GAAGJ,EACH,SAAU,uBAAqB,QAC/B,WAAY,SACZ,WAAY,QACZ,gBAAiB,OACjB,eAAgB,OAChB,UAAW,aACb,EAGA,MAAME,EAAW,OAAOE,CAAwB,EAGhD,OAAOH,EAAS,IAAI,EAAE,qBACpB,GAAGF,EAAO,SAAU,GAAG,wBACvB,CAAE,GAAGK,EAA0B,OAAQL,EAAO,SAAU,EACxD,CAAE,aAAc,MAAO,CACzB,CACF,CAAC,CACH,CAAC,CACH,CAAC",
4
+ "sourcesContent": ["import { type DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { type BlindSigningReportParams } from \"@/modules/multichain/reporter/data/BlindSigningReporterDatasource\";\nimport { HttpBlindSigningReporterDatasource } from \"@/modules/multichain/reporter/data/HttpBlindSigningReporterDatasource\";\nimport {\n BlindSigningMethod,\n BlindSigningPlatform,\n BlindSignReason,\n ClearSigningType,\n} from \"@/modules/multichain/reporter/model/BlindSigningEvent\";\nimport { BlindSigningModelId } from \"@/shared/model/BlindSigningModelId\";\n\ndescribe(\"HttpBlindSigningReporterDatasource\", () => {\n const config = {\n reporter: {\n url: \"https://reporter.test\",\n },\n originToken: \"originToken\",\n appSource: \"third-party\",\n } as ContextModuleServiceConfig;\n\n const params: BlindSigningReportParams = {\n signatureId: \"a3f8Kb-1738850400000\",\n signingMethod: BlindSigningMethod.ETH_SIGN_TRANSACTION,\n isBlindSign: true,\n chainId: 1,\n targetAddress: \"0xdAC17F958D2ee523a2206206994597C13D831ec7\",\n blindSignReason: BlindSignReason.NO_CLEAR_SIGNING_CONTEXT,\n modelId: BlindSigningModelId.NANO_X,\n signerAppVersion: \"1.12.1\",\n deviceVersion: \"2.2.3\",\n ethContext: {\n clearSigningType: ClearSigningType.EIP7730,\n partialContextErrors: 0,\n },\n };\n\n let httpMock: { post: ReturnType<typeof vi.fn> };\n let dataSource: HttpBlindSigningReporterDatasource;\n\n beforeEach(() => {\n vi.resetAllMocks();\n httpMock = { post: vi.fn() };\n dataSource = new HttpBlindSigningReporterDatasource(\n config,\n httpMock as unknown as DmkNetworkClient,\n );\n });\n\n describe(\"report\", () => {\n it(\"should return Right(undefined) on success\", async () => {\n // GIVEN\n httpMock.post.mockResolvedValueOnce(undefined);\n\n // WHEN\n const result = await dataSource.report(params);\n\n // THEN\n expect(result).toEqual(Right(undefined));\n });\n\n it(\"should return Left(Error) when the request fails\", async () => {\n // GIVEN\n httpMock.post.mockRejectedValueOnce(new Error(\"network error\"));\n\n // WHEN\n const result = await dataSource.report(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpBlindSigningReporterDatasource: Failed to report blind signing event\",\n ),\n ),\n );\n });\n\n it(\"should call http.post with the correct URL, body and options\", async () => {\n // GIVEN\n httpMock.post.mockResolvedValueOnce(undefined);\n\n // WHEN\n await dataSource.report(params);\n\n // THEN\n expect(httpMock.post).toHaveBeenCalledWith(\n `${config.reporter!.url}/v1/blind-signing-events`,\n { ...params, source: config.appSource },\n { responseType: \"void\" },\n );\n });\n\n it(\"should forward optional DTO fields when provided\", async () => {\n // GIVEN\n httpMock.post.mockResolvedValueOnce(undefined);\n const paramsWithOptionalFields: BlindSigningReportParams = {\n ...params,\n platform: BlindSigningPlatform.DESKTOP,\n appVersion: \"2.80.0\",\n platformOS: \"macOS\",\n platformVersion: \"14.5\",\n liveAppContext: \"swap\",\n sessionId: \"session-123\",\n };\n\n // WHEN\n await dataSource.report(paramsWithOptionalFields);\n\n // THEN\n expect(httpMock.post).toHaveBeenCalledWith(\n `${config.reporter!.url}/v1/blind-signing-events`,\n { ...paramsWithOptionalFields, source: config.appSource },\n { responseType: \"void\" },\n );\n });\n });\n});\n"],
5
+ "mappings": "aACA,IAAAA,EAA4B,qBAI5BC,EAAmD,iFACnDC,EAKO,iEACPC,EAAoC,8CAEpC,SAAS,qCAAsC,IAAM,CACnD,MAAMC,EAAS,CACb,SAAU,CACR,IAAK,uBACP,EACA,YAAa,cACb,UAAW,aACb,EAEMC,EAAmC,CACvC,YAAa,uBACb,cAAe,qBAAmB,qBAClC,YAAa,GACb,QAAS,EACT,cAAe,6CACf,gBAAiB,kBAAgB,yBACjC,QAAS,sBAAoB,OAC7B,iBAAkB,SAClB,cAAe,QACf,WAAY,CACV,iBAAkB,mBAAiB,QACnC,qBAAsB,CACxB,CACF,EAEA,IAAIC,EACAC,EAEJ,WAAW,IAAM,CACf,GAAG,cAAc,EACjBD,EAAW,CAAE,KAAM,GAAG,GAAG,CAAE,EAC3BC,EAAa,IAAI,qCACfH,EACAE,CACF,CACF,CAAC,EAED,SAAS,SAAU,IAAM,CACvB,GAAG,4CAA6C,SAAY,CAE1DA,EAAS,KAAK,sBAAsB,MAAS,EAG7C,MAAME,EAAS,MAAMD,EAAW,OAAOF,CAAM,EAG7C,OAAOG,CAAM,EAAE,WAAQ,SAAM,MAAS,CAAC,CACzC,CAAC,EAED,GAAG,mDAAoD,SAAY,CAEjEF,EAAS,KAAK,sBAAsB,IAAI,MAAM,eAAe,CAAC,EAG9D,MAAME,EAAS,MAAMD,EAAW,OAAOF,CAAM,EAG7C,OAAOG,CAAM,EAAE,WACb,QACE,IAAI,MACF,0FACF,CACF,CACF,CACF,CAAC,EAED,GAAG,+DAAgE,SAAY,CAE7EF,EAAS,KAAK,sBAAsB,MAAS,EAG7C,MAAMC,EAAW,OAAOF,CAAM,EAG9B,OAAOC,EAAS,IAAI,EAAE,qBACpB,GAAGF,EAAO,SAAU,GAAG,2BACvB,CAAE,GAAGC,EAAQ,OAAQD,EAAO,SAAU,EACtC,CAAE,aAAc,MAAO,CACzB,CACF,CAAC,EAED,GAAG,mDAAoD,SAAY,CAEjEE,EAAS,KAAK,sBAAsB,MAAS,EAC7C,MAAMG,EAAqD,CACzD,GAAGJ,EACH,SAAU,uBAAqB,QAC/B,WAAY,SACZ,WAAY,QACZ,gBAAiB,OACjB,eAAgB,OAChB,UAAW,aACb,EAGA,MAAME,EAAW,OAAOE,CAAwB,EAGhD,OAAOH,EAAS,IAAI,EAAE,qBACpB,GAAGF,EAAO,SAAU,GAAG,2BACvB,CAAE,GAAGK,EAA0B,OAAQL,EAAO,SAAU,EACxD,CAAE,aAAc,MAAO,CACzB,CACF,CAAC,CACH,CAAC,CACH,CAAC",
6
6
  "names": ["import_purify_ts", "import_HttpBlindSigningReporterDatasource", "import_BlindSigningEvent", "import_BlindSigningModelId", "config", "params", "httpMock", "dataSource", "result", "paramsWithOptionalFields"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../src/modules/multichain/reporter/data/dto/BlindSigningEventDto.ts"],
4
- "sourcesContent": ["import {\n type BlindSigningMethod,\n type BlindSigningPlatform,\n type BlindSignReason,\n type ClearSigningType,\n} from \"@/modules/multichain/reporter/model/BlindSigningEvent\";\nimport { type BlindSigningModelId } from \"@/modules/multichain/reporter/model/BlindSigningModelId\";\n\nexport type BlindSigningEventEthContextDto = {\n clearSigningType: ClearSigningType;\n partialContextErrors: number;\n};\n\nexport type BlindSigningEventDto = {\n signatureId: string;\n signingMethod: BlindSigningMethod;\n source: string;\n isBlindSign: boolean;\n chainId: number | null;\n targetAddress: string | null;\n blindSignReason: BlindSignReason | null;\n modelId: BlindSigningModelId;\n signerAppVersion: string;\n deviceVersion: string | null;\n ethContext: BlindSigningEventEthContextDto | null;\n platform?: BlindSigningPlatform;\n appVersion?: string;\n platformOS?: string;\n platformVersion?: string;\n liveAppContext?: string | null;\n sessionId?: string | null;\n};\n"],
4
+ "sourcesContent": ["import {\n type BlindSigningMethod,\n type BlindSigningPlatform,\n type BlindSignReason,\n type ClearSigningType,\n} from \"@/modules/multichain/reporter/model/BlindSigningEvent\";\nimport { type BlindSigningModelId } from \"@/shared/model/BlindSigningModelId\";\n\nexport type BlindSigningEventEthContextDto = {\n clearSigningType: ClearSigningType;\n partialContextErrors: number;\n};\n\nexport type BlindSigningEventDto = {\n signatureId: string;\n signingMethod: BlindSigningMethod;\n source: string;\n isBlindSign: boolean;\n chainId: number | null;\n targetAddress: string | null;\n blindSignReason: BlindSignReason | null;\n modelId: BlindSigningModelId;\n signerAppVersion: string;\n deviceVersion: string | null;\n ethContext: BlindSigningEventEthContextDto | null;\n platform?: BlindSigningPlatform;\n appVersion?: string;\n platformOS?: string;\n platformVersion?: string;\n liveAppContext?: string | null;\n sessionId?: string | null;\n};\n"],
5
5
  "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
6
  "names": ["BlindSigningEventDto_exports", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("purify-ts"),r=require("../../../../modules/multichain/reporter/model/BlindSigningEvent"),d=require("../../../../modules/multichain/reporter/model/BlindSigningModelId"),i=require("./DefaultBlindSigningReporter");describe("DefaultBlindSigningReporter",()=>{const n={signatureId:"a3f8Kb-1738850400000",signingMethod:r.BlindSigningMethod.ETH_SIGN_TRANSACTION,isBlindSign:!0,chainId:1,targetAddress:"0xdAC17F958D2ee523a2206206994597C13D831ec7",blindSignReason:r.BlindSignReason.NO_CLEAR_SIGNING_CONTEXT,modelId:d.BlindSigningModelId.NANO_X,signerAppVersion:"1.12.1",deviceVersion:"2.2.3",ethContext:{clearSigningType:r.ClearSigningType.EIP7730,partialContextErrors:0}};it("should delegate to the datasource and return Right on success",async()=>{const t={report:vi.fn().mockResolvedValueOnce((0,e.Right)(void 0))},a=await new i.DefaultBlindSigningReporter(t).report(n);expect(t.report).toHaveBeenCalledWith(n),expect(a).toEqual((0,e.Right)(void 0))}),it("should delegate to the datasource and return Left on failure",async()=>{const t=new Error("report failed"),o={report:vi.fn().mockResolvedValueOnce((0,e.Left)(t))},s=await new i.DefaultBlindSigningReporter(o).report(n);expect(o.report).toHaveBeenCalledWith(n),expect(s).toEqual((0,e.Left)(t))})});
1
+ "use strict";var e=require("purify-ts"),r=require("../../../../modules/multichain/reporter/model/BlindSigningEvent"),d=require("../../../../shared/model/BlindSigningModelId"),i=require("./DefaultBlindSigningReporter");describe("DefaultBlindSigningReporter",()=>{const n={signatureId:"a3f8Kb-1738850400000",signingMethod:r.BlindSigningMethod.ETH_SIGN_TRANSACTION,isBlindSign:!0,chainId:1,targetAddress:"0xdAC17F958D2ee523a2206206994597C13D831ec7",blindSignReason:r.BlindSignReason.NO_CLEAR_SIGNING_CONTEXT,modelId:d.BlindSigningModelId.NANO_X,signerAppVersion:"1.12.1",deviceVersion:"2.2.3",ethContext:{clearSigningType:r.ClearSigningType.EIP7730,partialContextErrors:0}};it("should delegate to the datasource and return Right on success",async()=>{const t={report:vi.fn().mockResolvedValueOnce((0,e.Right)(void 0))},a=await new i.DefaultBlindSigningReporter(t).report(n);expect(t.report).toHaveBeenCalledWith(n),expect(a).toEqual((0,e.Right)(void 0))}),it("should delegate to the datasource and return Left on failure",async()=>{const t=new Error("report failed"),o={report:vi.fn().mockResolvedValueOnce((0,e.Left)(t))},s=await new i.DefaultBlindSigningReporter(o).report(n);expect(o.report).toHaveBeenCalledWith(n),expect(s).toEqual((0,e.Left)(t))})});
2
2
  //# sourceMappingURL=DefaultBlindSigningReporter.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/modules/multichain/reporter/domain/DefaultBlindSigningReporter.test.ts"],
4
- "sourcesContent": ["import { Left, Right } from \"purify-ts\";\n\nimport { type BlindSigningReporterDatasource } from \"@/modules/multichain/reporter/data/BlindSigningReporterDatasource\";\nimport {\n BlindSigningMethod,\n BlindSignReason,\n ClearSigningType,\n} from \"@/modules/multichain/reporter/model/BlindSigningEvent\";\nimport { BlindSigningModelId } from \"@/modules/multichain/reporter/model/BlindSigningModelId\";\n\nimport { DefaultBlindSigningReporter } from \"./DefaultBlindSigningReporter\";\n\ndescribe(\"DefaultBlindSigningReporter\", () => {\n const params = {\n signatureId: \"a3f8Kb-1738850400000\",\n signingMethod: BlindSigningMethod.ETH_SIGN_TRANSACTION,\n isBlindSign: true,\n chainId: 1,\n targetAddress: \"0xdAC17F958D2ee523a2206206994597C13D831ec7\",\n blindSignReason: BlindSignReason.NO_CLEAR_SIGNING_CONTEXT,\n modelId: BlindSigningModelId.NANO_X,\n signerAppVersion: \"1.12.1\",\n deviceVersion: \"2.2.3\",\n ethContext: {\n clearSigningType: ClearSigningType.EIP7730,\n partialContextErrors: 0,\n },\n };\n\n it(\"should delegate to the datasource and return Right on success\", async () => {\n // GIVEN\n const dataSource: BlindSigningReporterDatasource = {\n report: vi.fn().mockResolvedValueOnce(Right(undefined)),\n };\n const reporter = new DefaultBlindSigningReporter(dataSource);\n\n // WHEN\n const result = await reporter.report(params);\n\n // THEN\n expect(dataSource.report).toHaveBeenCalledWith(params);\n expect(result).toEqual(Right(undefined));\n });\n\n it(\"should delegate to the datasource and return Left on failure\", async () => {\n // GIVEN\n const error = new Error(\"report failed\");\n const dataSource: BlindSigningReporterDatasource = {\n report: vi.fn().mockResolvedValueOnce(Left(error)),\n };\n const reporter = new DefaultBlindSigningReporter(dataSource);\n\n // WHEN\n const result = await reporter.report(params);\n\n // THEN\n expect(dataSource.report).toHaveBeenCalledWith(params);\n expect(result).toEqual(Left(error));\n });\n});\n"],
5
- "mappings": "aAAA,IAAAA,EAA4B,qBAG5BC,EAIO,iEACPC,EAAoC,mEAEpCC,EAA4C,yCAE5C,SAAS,8BAA+B,IAAM,CAC5C,MAAMC,EAAS,CACb,YAAa,uBACb,cAAe,qBAAmB,qBAClC,YAAa,GACb,QAAS,EACT,cAAe,6CACf,gBAAiB,kBAAgB,yBACjC,QAAS,sBAAoB,OAC7B,iBAAkB,SAClB,cAAe,QACf,WAAY,CACV,iBAAkB,mBAAiB,QACnC,qBAAsB,CACxB,CACF,EAEA,GAAG,gEAAiE,SAAY,CAE9E,MAAMC,EAA6C,CACjD,OAAQ,GAAG,GAAG,EAAE,yBAAsB,SAAM,MAAS,CAAC,CACxD,EAIMC,EAAS,MAHE,IAAI,8BAA4BD,CAAU,EAG7B,OAAOD,CAAM,EAG3C,OAAOC,EAAW,MAAM,EAAE,qBAAqBD,CAAM,EACrD,OAAOE,CAAM,EAAE,WAAQ,SAAM,MAAS,CAAC,CACzC,CAAC,EAED,GAAG,+DAAgE,SAAY,CAE7E,MAAMC,EAAQ,IAAI,MAAM,eAAe,EACjCF,EAA6C,CACjD,OAAQ,GAAG,GAAG,EAAE,yBAAsB,QAAKE,CAAK,CAAC,CACnD,EAIMD,EAAS,MAHE,IAAI,8BAA4BD,CAAU,EAG7B,OAAOD,CAAM,EAG3C,OAAOC,EAAW,MAAM,EAAE,qBAAqBD,CAAM,EACrD,OAAOE,CAAM,EAAE,WAAQ,QAAKC,CAAK,CAAC,CACpC,CAAC,CACH,CAAC",
4
+ "sourcesContent": ["import { Left, Right } from \"purify-ts\";\n\nimport { type BlindSigningReporterDatasource } from \"@/modules/multichain/reporter/data/BlindSigningReporterDatasource\";\nimport {\n BlindSigningMethod,\n BlindSignReason,\n ClearSigningType,\n} from \"@/modules/multichain/reporter/model/BlindSigningEvent\";\nimport { BlindSigningModelId } from \"@/shared/model/BlindSigningModelId\";\n\nimport { DefaultBlindSigningReporter } from \"./DefaultBlindSigningReporter\";\n\ndescribe(\"DefaultBlindSigningReporter\", () => {\n const params = {\n signatureId: \"a3f8Kb-1738850400000\",\n signingMethod: BlindSigningMethod.ETH_SIGN_TRANSACTION,\n isBlindSign: true,\n chainId: 1,\n targetAddress: \"0xdAC17F958D2ee523a2206206994597C13D831ec7\",\n blindSignReason: BlindSignReason.NO_CLEAR_SIGNING_CONTEXT,\n modelId: BlindSigningModelId.NANO_X,\n signerAppVersion: \"1.12.1\",\n deviceVersion: \"2.2.3\",\n ethContext: {\n clearSigningType: ClearSigningType.EIP7730,\n partialContextErrors: 0,\n },\n };\n\n it(\"should delegate to the datasource and return Right on success\", async () => {\n // GIVEN\n const dataSource: BlindSigningReporterDatasource = {\n report: vi.fn().mockResolvedValueOnce(Right(undefined)),\n };\n const reporter = new DefaultBlindSigningReporter(dataSource);\n\n // WHEN\n const result = await reporter.report(params);\n\n // THEN\n expect(dataSource.report).toHaveBeenCalledWith(params);\n expect(result).toEqual(Right(undefined));\n });\n\n it(\"should delegate to the datasource and return Left on failure\", async () => {\n // GIVEN\n const error = new Error(\"report failed\");\n const dataSource: BlindSigningReporterDatasource = {\n report: vi.fn().mockResolvedValueOnce(Left(error)),\n };\n const reporter = new DefaultBlindSigningReporter(dataSource);\n\n // WHEN\n const result = await reporter.report(params);\n\n // THEN\n expect(dataSource.report).toHaveBeenCalledWith(params);\n expect(result).toEqual(Left(error));\n });\n});\n"],
5
+ "mappings": "aAAA,IAAAA,EAA4B,qBAG5BC,EAIO,iEACPC,EAAoC,8CAEpCC,EAA4C,yCAE5C,SAAS,8BAA+B,IAAM,CAC5C,MAAMC,EAAS,CACb,YAAa,uBACb,cAAe,qBAAmB,qBAClC,YAAa,GACb,QAAS,EACT,cAAe,6CACf,gBAAiB,kBAAgB,yBACjC,QAAS,sBAAoB,OAC7B,iBAAkB,SAClB,cAAe,QACf,WAAY,CACV,iBAAkB,mBAAiB,QACnC,qBAAsB,CACxB,CACF,EAEA,GAAG,gEAAiE,SAAY,CAE9E,MAAMC,EAA6C,CACjD,OAAQ,GAAG,GAAG,EAAE,yBAAsB,SAAM,MAAS,CAAC,CACxD,EAIMC,EAAS,MAHE,IAAI,8BAA4BD,CAAU,EAG7B,OAAOD,CAAM,EAG3C,OAAOC,EAAW,MAAM,EAAE,qBAAqBD,CAAM,EACrD,OAAOE,CAAM,EAAE,WAAQ,SAAM,MAAS,CAAC,CACzC,CAAC,EAED,GAAG,+DAAgE,SAAY,CAE7E,MAAMC,EAAQ,IAAI,MAAM,eAAe,EACjCF,EAA6C,CACjD,OAAQ,GAAG,GAAG,EAAE,yBAAsB,QAAKE,CAAK,CAAC,CACnD,EAIMD,EAAS,MAHE,IAAI,8BAA4BD,CAAU,EAG7B,OAAOD,CAAM,EAG3C,OAAOC,EAAW,MAAM,EAAE,qBAAqBD,CAAM,EACrD,OAAOE,CAAM,EAAE,WAAQ,QAAKC,CAAK,CAAC,CACpC,CAAC,CACH,CAAC",
6
6
  "names": ["import_purify_ts", "import_BlindSigningEvent", "import_BlindSigningModelId", "import_DefaultBlindSigningReporter", "params", "dataSource", "result", "error"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var o=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var l=(n,e)=>{for(var i in e)o(n,i,{get:e[i],enumerable:!0})},s=(n,e,i,g)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of r(e))!a.call(n,t)&&t!==i&&o(n,t,{get:()=>e[t],enumerable:!(g=p(e,t))||g.enumerable});return n};var S=n=>s(o({},"__esModule",{value:!0}),n);var T={};l(T,{BlindSignReason:()=>d,BlindSigningMethod:()=>y,BlindSigningPlatform:()=>c,ClearSigningType:()=>f});module.exports=S(T);const y=Object.freeze({ETH_SIGN_TRANSACTION:"eth_signTransaction",ETH_SIGN_TYPED_DATA:"eth_signTypedData"}),d=Object.freeze({NO_CLEAR_SIGNING_CONTEXT:"no_clear_signing_context",DEVICE_REJECTED_CONTEXT:"device_rejected_context"}),f=Object.freeze({BASIC:"basic",EIP7730:"eip7730"}),c=Object.freeze({DESKTOP:"desktop",MOBILE:"mobile"});0&&(module.exports={BlindSignReason,BlindSigningMethod,BlindSigningPlatform,ClearSigningType});
1
+ "use strict";var o=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var s=(n,e)=>{for(var i in e)o(n,i,{get:e[i],enumerable:!0})},S=(n,e,i,g)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of r(e))!a.call(n,t)&&t!==i&&o(n,t,{get:()=>e[t],enumerable:!(g=p(e,t))||g.enumerable});return n};var l=n=>S(o({},"__esModule",{value:!0}),n);var f={};s(f,{BlindSignReason:()=>c,BlindSigningMethod:()=>d,BlindSigningPlatform:()=>_,ClearSigningType:()=>y});module.exports=l(f);const d=Object.freeze({ETH_SIGN_TRANSACTION:"eth_signTransaction",ETH_SIGN_TYPED_DATA:"eth_signTypedData"}),c=Object.freeze({NO_CLEAR_SIGNING_CONTEXT:"no_clear_signing_context",DEVICE_REJECTED_CONTEXT:"device_rejected_context",UNRECOGNIZED_PROGRAM:"unrecognized_program",STALE_DESCRIPTOR:"stale_descriptor"}),y=Object.freeze({BASIC:"basic",EIP7730:"eip7730"}),_=Object.freeze({DESKTOP:"desktop",MOBILE:"mobile"});0&&(module.exports={BlindSignReason,BlindSigningMethod,BlindSigningPlatform,ClearSigningType});
2
2
  //# sourceMappingURL=BlindSigningEvent.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/modules/multichain/reporter/model/BlindSigningEvent.ts"],
4
- "sourcesContent": ["export const BlindSigningMethod = Object.freeze({\n ETH_SIGN_TRANSACTION: \"eth_signTransaction\",\n ETH_SIGN_TYPED_DATA: \"eth_signTypedData\",\n} as const);\nexport type BlindSigningMethod =\n (typeof BlindSigningMethod)[keyof typeof BlindSigningMethod];\n\nexport const BlindSignReason = Object.freeze({\n NO_CLEAR_SIGNING_CONTEXT: \"no_clear_signing_context\",\n DEVICE_REJECTED_CONTEXT: \"device_rejected_context\",\n} as const);\nexport type BlindSignReason =\n (typeof BlindSignReason)[keyof typeof BlindSignReason];\n\nexport const ClearSigningType = Object.freeze({\n BASIC: \"basic\",\n EIP7730: \"eip7730\",\n} as const);\nexport type ClearSigningType =\n (typeof ClearSigningType)[keyof typeof ClearSigningType];\n\nexport const BlindSigningPlatform = Object.freeze({\n DESKTOP: \"desktop\",\n MOBILE: \"mobile\",\n} as const);\nexport type BlindSigningPlatform =\n (typeof BlindSigningPlatform)[keyof typeof BlindSigningPlatform];\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,EAAA,uBAAAC,EAAA,yBAAAC,EAAA,qBAAAC,IAAA,eAAAC,EAAAN,GAAO,MAAMG,EAAqB,OAAO,OAAO,CAC9C,qBAAsB,sBACtB,oBAAqB,mBACvB,CAAU,EAIGD,EAAkB,OAAO,OAAO,CAC3C,yBAA0B,2BAC1B,wBAAyB,yBAC3B,CAAU,EAIGG,EAAmB,OAAO,OAAO,CAC5C,MAAO,QACP,QAAS,SACX,CAAU,EAIGD,EAAuB,OAAO,OAAO,CAChD,QAAS,UACT,OAAQ,QACV,CAAU",
4
+ "sourcesContent": ["export const BlindSigningMethod = Object.freeze({\n ETH_SIGN_TRANSACTION: \"eth_signTransaction\",\n ETH_SIGN_TYPED_DATA: \"eth_signTypedData\",\n} as const);\nexport type BlindSigningMethod =\n (typeof BlindSigningMethod)[keyof typeof BlindSigningMethod];\n\nexport const BlindSignReason = Object.freeze({\n NO_CLEAR_SIGNING_CONTEXT: \"no_clear_signing_context\",\n DEVICE_REJECTED_CONTEXT: \"device_rejected_context\",\n UNRECOGNIZED_PROGRAM: \"unrecognized_program\",\n STALE_DESCRIPTOR: \"stale_descriptor\",\n} as const);\nexport type BlindSignReason =\n (typeof BlindSignReason)[keyof typeof BlindSignReason];\n\nexport const ClearSigningType = Object.freeze({\n BASIC: \"basic\",\n EIP7730: \"eip7730\",\n} as const);\nexport type ClearSigningType =\n (typeof ClearSigningType)[keyof typeof ClearSigningType];\n\nexport const BlindSigningPlatform = Object.freeze({\n DESKTOP: \"desktop\",\n MOBILE: \"mobile\",\n} as const);\nexport type BlindSigningPlatform =\n (typeof BlindSigningPlatform)[keyof typeof BlindSigningPlatform];\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,EAAA,uBAAAC,EAAA,yBAAAC,EAAA,qBAAAC,IAAA,eAAAC,EAAAN,GAAO,MAAMG,EAAqB,OAAO,OAAO,CAC9C,qBAAsB,sBACtB,oBAAqB,mBACvB,CAAU,EAIGD,EAAkB,OAAO,OAAO,CAC3C,yBAA0B,2BAC1B,wBAAyB,0BACzB,qBAAsB,uBACtB,iBAAkB,kBACpB,CAAU,EAIGG,EAAmB,OAAO,OAAO,CAC5C,MAAO,QACP,QAAS,SACX,CAAU,EAIGD,EAAuB,OAAO,OAAO,CAChD,QAAS,UACT,OAAQ,QACV,CAAU",
6
6
  "names": ["BlindSigningEvent_exports", "__export", "BlindSignReason", "BlindSigningMethod", "BlindSigningPlatform", "ClearSigningType", "__toCommonJS"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ "use strict";var d=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var C=(i,e)=>{for(var n in e)d(i,n,{get:e[n],enumerable:!0})},I=(i,e,n,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of v(e))!y.call(i,o)&&o!==n&&d(i,o,{get:()=>e[o],enumerable:!(t=f(e,o))||t.enumerable});return i};var b=i=>I(d({},"__esModule",{value:!0}),i),h=(i,e,n,t)=>{for(var o=t>1?void 0:t?f(e,n):e,c=i.length-1,p;c>=0;c--)(p=i[c])&&(o=(t?p(e,n,o):p(o))||o);return t&&o&&d(e,n,o),o},l=(i,e)=>(n,t)=>e(n,t,i);var E={};C(E,{HttpSignReporterDatasource:()=>g});module.exports=b(E);var r=require("inversify"),s=require("purify-ts"),u=require("../../../../config/di/configTypes"),S=require("../../../../shared/network/di/networkTypes"),a=require("../../../../shared/network/networkClientFactory");let g=class{constructor(e,n,t){this.config=e;this.http=t??(0,a.networkClientFactory)(e),this.logger=n("HttpSignReporterDatasource")}http;logger;async report(e){try{const n=this.buildDto(e,this.config.appSource);this.logger.debug("[report] Posting signing event",{data:n}),await this.http.post(`${this.config.reporter.url}/v2/blind-signing-events`,n,{responseType:"void"})}catch{return(0,s.Left)(new Error("[ContextModule] HttpSignReporterDatasource: Failed to report signing event"))}return(0,s.Right)(void 0)}buildDto(e,n){const t={isBlindSign:e.isBlindSign,sessionId:e.sessionId??null,envData:{modelId:e.modelId,signerAppVersion:e.signerAppVersion,deviceVersion:e.deviceVersion,source:n,...e.platform!==void 0&&{platform:e.platform},...e.appVersion!==void 0&&{appVersion:e.appVersion},...e.platformOS!==void 0&&{platformOS:e.platformOS},...e.platformVersion!==void 0&&{platformVersion:e.platformVersion},...e.liveAppContext!==void 0&&{liveAppContext:e.liveAppContext}}};switch(e.chain){case"ETH":return{...t,chain:"ETH",chainData:{chain:"ETH",signatureId:e.signatureId,signingMethod:e.signingMethod,targetAddress:e.targetAddress,chainId:e.chainId,blindSignReason:e.blindSignReason,...e.selectorId!==void 0&&{selectorId:e.selectorId},...e.clearSigningType!==void 0&&{clearSigningType:e.clearSigningType},...e.partialContextErrors!==void 0&&{partialContextErrors:e.partialContextErrors}}};case"SOL":return{...t,chain:"SOL",chainData:{chain:"SOL",signatureId:e.signatureId,signingMethod:e.signingMethod,targetAddress:e.targetAddress,blindSignReason:e.blindSignReason,programIds:e.programIds,unrecognizedPrograms:e.unrecognizedPrograms,...e.transactionSignature!==void 0&&{transactionSignature:e.transactionSignature}}}}}};g=h([(0,r.injectable)(),l(0,(0,r.inject)(u.configTypes.Config)),l(1,(0,r.inject)(u.configTypes.ContextModuleLoggerFactory)),l(2,(0,r.inject)(S.networkTypes.NetworkClient))],g);0&&(module.exports={HttpSignReporterDatasource});
2
+ //# sourceMappingURL=HttpSignReporterDatasource.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.ts"],
4
+ "sourcesContent": ["import {\n type DmkNetworkClient,\n type LoggerPublisherService,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { type Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { type SignReportParams } from \"@/modules/multichain/sign-reporter/model/SignReportParams\";\nimport { networkTypes } from \"@/shared/network/di/networkTypes\";\nimport { networkClientFactory } from \"@/shared/network/networkClientFactory\";\n\nimport { type SigningEventDto } from \"./dto/SigningEventDto\";\nimport { type SignReporterDatasource } from \"./SignReporterDatasource\";\n\n@injectable()\nexport class HttpSignReporterDatasource implements SignReporterDatasource {\n private readonly http: DmkNetworkClient;\n private readonly logger: LoggerPublisherService;\n\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n @inject(configTypes.ContextModuleLoggerFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n @inject(networkTypes.NetworkClient)\n networkClient?: DmkNetworkClient,\n ) {\n this.http = networkClient ?? networkClientFactory(config);\n this.logger = loggerFactory(\"HttpSignReporterDatasource\");\n }\n\n async report(params: SignReportParams): Promise<Either<Error, void>> {\n try {\n const dto = this.buildDto(params, this.config.appSource);\n this.logger.debug(\"[report] Posting signing event\", { data: dto });\n await this.http.post(\n `${this.config.reporter.url}/v2/blind-signing-events`,\n dto,\n { responseType: \"void\" },\n );\n } catch (_error) {\n return Left(\n new Error(\n \"[ContextModule] HttpSignReporterDatasource: Failed to report signing event\",\n ),\n );\n }\n\n return Right(undefined);\n }\n\n private buildDto(params: SignReportParams, source: string): SigningEventDto {\n const base = {\n isBlindSign: params.isBlindSign,\n sessionId: params.sessionId ?? null,\n envData: {\n modelId: params.modelId,\n signerAppVersion: params.signerAppVersion,\n deviceVersion: params.deviceVersion,\n source,\n ...(params.platform !== undefined && { platform: params.platform }),\n ...(params.appVersion !== undefined && {\n appVersion: params.appVersion,\n }),\n ...(params.platformOS !== undefined && {\n platformOS: params.platformOS,\n }),\n ...(params.platformVersion !== undefined && {\n platformVersion: params.platformVersion,\n }),\n ...(params.liveAppContext !== undefined && {\n liveAppContext: params.liveAppContext,\n }),\n },\n };\n\n switch (params.chain) {\n case \"ETH\":\n return {\n ...base,\n chain: \"ETH\",\n chainData: {\n chain: \"ETH\",\n signatureId: params.signatureId,\n signingMethod: params.signingMethod,\n targetAddress: params.targetAddress,\n chainId: params.chainId,\n blindSignReason: params.blindSignReason,\n ...(params.selectorId !== undefined && {\n selectorId: params.selectorId,\n }),\n ...(params.clearSigningType !== undefined && {\n clearSigningType: params.clearSigningType,\n }),\n ...(params.partialContextErrors !== undefined && {\n partialContextErrors: params.partialContextErrors,\n }),\n },\n };\n case \"SOL\":\n return {\n ...base,\n chain: \"SOL\",\n chainData: {\n chain: \"SOL\",\n signatureId: params.signatureId,\n signingMethod: params.signingMethod,\n targetAddress: params.targetAddress,\n blindSignReason: params.blindSignReason,\n programIds: params.programIds,\n unrecognizedPrograms: params.unrecognizedPrograms,\n ...(params.transactionSignature !== undefined && {\n transactionSignature: params.transactionSignature,\n }),\n },\n };\n }\n }\n}\n"],
5
+ "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gCAAAE,IAAA,eAAAC,EAAAH,GAIA,IAAAI,EAAmC,qBACnCC,EAAyC,qBAEzCC,EAA4B,mCAG5BC,EAA6B,4CAC7BC,EAAqC,iDAM9B,IAAMC,EAAN,KAAmE,CAIxE,YAEmBC,EAEjBC,EAEAC,EACA,CALiB,YAAAF,EAMjB,KAAK,KAAOE,MAAiB,wBAAqBF,CAAM,EACxD,KAAK,OAASC,EAAc,4BAA4B,CAC1D,CAbiB,KACA,OAcjB,MAAM,OAAOE,EAAwD,CACnE,GAAI,CACF,MAAMC,EAAM,KAAK,SAASD,EAAQ,KAAK,OAAO,SAAS,EACvD,KAAK,OAAO,MAAM,iCAAkC,CAAE,KAAMC,CAAI,CAAC,EACjE,MAAM,KAAK,KAAK,KACd,GAAG,KAAK,OAAO,SAAS,GAAG,2BAC3BA,EACA,CAAE,aAAc,MAAO,CACzB,CACF,MAAiB,CACf,SAAO,QACL,IAAI,MACF,4EACF,CACF,CACF,CAEA,SAAO,SAAM,MAAS,CACxB,CAEQ,SAASD,EAA0BE,EAAiC,CAC1E,MAAMC,EAAO,CACX,YAAaH,EAAO,YACpB,UAAWA,EAAO,WAAa,KAC/B,QAAS,CACP,QAASA,EAAO,QAChB,iBAAkBA,EAAO,iBACzB,cAAeA,EAAO,cACtB,OAAAE,EACA,GAAIF,EAAO,WAAa,QAAa,CAAE,SAAUA,EAAO,QAAS,EACjE,GAAIA,EAAO,aAAe,QAAa,CACrC,WAAYA,EAAO,UACrB,EACA,GAAIA,EAAO,aAAe,QAAa,CACrC,WAAYA,EAAO,UACrB,EACA,GAAIA,EAAO,kBAAoB,QAAa,CAC1C,gBAAiBA,EAAO,eAC1B,EACA,GAAIA,EAAO,iBAAmB,QAAa,CACzC,eAAgBA,EAAO,cACzB,CACF,CACF,EAEA,OAAQA,EAAO,MAAO,CACpB,IAAK,MACH,MAAO,CACL,GAAGG,EACH,MAAO,MACP,UAAW,CACT,MAAO,MACP,YAAaH,EAAO,YACpB,cAAeA,EAAO,cACtB,cAAeA,EAAO,cACtB,QAASA,EAAO,QAChB,gBAAiBA,EAAO,gBACxB,GAAIA,EAAO,aAAe,QAAa,CACrC,WAAYA,EAAO,UACrB,EACA,GAAIA,EAAO,mBAAqB,QAAa,CAC3C,iBAAkBA,EAAO,gBAC3B,EACA,GAAIA,EAAO,uBAAyB,QAAa,CAC/C,qBAAsBA,EAAO,oBAC/B,CACF,CACF,EACF,IAAK,MACH,MAAO,CACL,GAAGG,EACH,MAAO,MACP,UAAW,CACT,MAAO,MACP,YAAaH,EAAO,YACpB,cAAeA,EAAO,cACtB,cAAeA,EAAO,cACtB,gBAAiBA,EAAO,gBACxB,WAAYA,EAAO,WACnB,qBAAsBA,EAAO,qBAC7B,GAAIA,EAAO,uBAAyB,QAAa,CAC/C,qBAAsBA,EAAO,oBAC/B,CACF,CACF,CACJ,CACF,CACF,EAvGaJ,EAANQ,EAAA,IADN,cAAW,EAMPC,EAAA,eAAO,cAAY,MAAM,GAEzBA,EAAA,eAAO,cAAY,0BAA0B,GAE7CA,EAAA,eAAO,eAAa,aAAa,IATzBT",
6
+ "names": ["HttpSignReporterDatasource_exports", "__export", "HttpSignReporterDatasource", "__toCommonJS", "import_inversify", "import_purify_ts", "import_configTypes", "import_networkTypes", "import_networkClientFactory", "HttpSignReporterDatasource", "config", "loggerFactory", "networkClient", "params", "dto", "source", "base", "__decorateClass", "__decorateParam"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var a=require("purify-ts"),d=require("../../../../modules/multichain/reporter/model/BlindSigningEvent"),i=require("../../../../shared/model/BlindSigningModelId"),l=require("./HttpSignReporterDatasource");describe("HttpSignReporterDatasource",()=>{const p={reporter:{url:"https://reporter.test"},appSource:"third-party",originToken:"originToken"},c={modelId:i.BlindSigningModelId.NANO_X,signerAppVersion:"1.4.0",deviceVersion:"2.2.3"},t={...c,chain:"SOL",signatureId:"abc123-1738850400000",signingMethod:"sol_signTransaction",isBlindSign:!0,targetAddress:"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4",blindSignReason:d.BlindSignReason.UNRECOGNIZED_PROGRAM,programIds:["JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4","TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"],unrecognizedPrograms:["JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4"]},s={...c,chain:"ETH",signatureId:"def456-1738850400000",signingMethod:"eth_signTransaction",isBlindSign:!1,chainId:1,targetAddress:"0xdAC17F958D2ee523a2206206994597C13D831ec7",blindSignReason:null};let e,n;beforeEach(()=>{vi.resetAllMocks(),e={post:vi.fn()},n=new l.HttpSignReporterDatasource(p,()=>({debug:vi.fn(),info:vi.fn(),warn:vi.fn(),error:vi.fn()}),e)}),describe("report",()=>{it("should return Right(undefined) on success",async()=>{e.post.mockResolvedValueOnce(void 0);const r=await n.report(t);expect(r).toEqual((0,a.Right)(void 0))}),it("should return Left(Error) when the request fails",async()=>{e.post.mockRejectedValueOnce(new Error("network error"));const r=await n.report(t);expect(r).toEqual((0,a.Left)(new Error("[ContextModule] HttpSignReporterDatasource: Failed to report signing event")))}),it("should call the v2 endpoint with the correct URL",async()=>{e.post.mockResolvedValueOnce(void 0),await n.report(t),expect(e.post).toHaveBeenCalledWith(`${p.reporter.url}/v2/blind-signing-events`,expect.anything(),{responseType:"void"})}),it("should build correct three-layer body for SOL params",async()=>{e.post.mockResolvedValueOnce(void 0),await n.report(t),expect(e.post).toHaveBeenCalledWith(expect.any(String),{chain:"SOL",isBlindSign:!0,sessionId:null,chainData:{chain:"SOL",signatureId:t.signatureId,signingMethod:"sol_signTransaction",targetAddress:t.targetAddress,blindSignReason:d.BlindSignReason.UNRECOGNIZED_PROGRAM,programIds:t.programIds,unrecognizedPrograms:t.unrecognizedPrograms},envData:{modelId:i.BlindSigningModelId.NANO_X,signerAppVersion:"1.4.0",deviceVersion:"2.2.3",source:"third-party"}},{responseType:"void"})}),it("should build correct three-layer body for ETH params",async()=>{e.post.mockResolvedValueOnce(void 0),await n.report(s),expect(e.post).toHaveBeenCalledWith(expect.any(String),{chain:"ETH",isBlindSign:!1,sessionId:null,chainData:{chain:"ETH",signatureId:s.signatureId,signingMethod:"eth_signTransaction",targetAddress:s.targetAddress,chainId:1,blindSignReason:null},envData:{modelId:i.BlindSigningModelId.NANO_X,signerAppVersion:"1.4.0",deviceVersion:"2.2.3",source:"third-party"}},{responseType:"void"})}),it("should include optional env fields when provided",async()=>{e.post.mockResolvedValueOnce(void 0);const r={...t,platform:"desktop",appVersion:"2.80.0",platformOS:"macOS",platformVersion:"14.5",liveAppContext:"swap",sessionId:"session-abc"};await n.report(r);const o=e.post.mock.calls[0][1];expect(o.envData.platform).toBe("desktop"),expect(o.envData.appVersion).toBe("2.80.0"),expect(o.envData.platformOS).toBe("macOS"),expect(o.envData.platformVersion).toBe("14.5"),expect(o.envData.liveAppContext).toBe("swap"),expect(o.sessionId).toBe("session-abc")}),it("should include transactionSignature in SOL chainData when provided",async()=>{e.post.mockResolvedValueOnce(void 0);const r={...t,transactionSignature:"5yJ9..."};await n.report(r);const o=e.post.mock.calls[0][1];expect(o.chainData.transactionSignature).toBe("5yJ9...")})})});
2
+ //# sourceMappingURL=HttpSignReporterDatasource.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.test.ts"],
4
+ "sourcesContent": ["import {\n type DmkNetworkClient,\n type LoggerPublisherService,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { BlindSignReason } from \"@/modules/multichain/reporter/model/BlindSigningEvent\";\nimport {\n type EthSignReportParams,\n type SolSignReportParams,\n} from \"@/modules/multichain/sign-reporter/model/SignReportParams\";\nimport { BlindSigningModelId } from \"@/shared/model/BlindSigningModelId\";\n\nimport { HttpSignReporterDatasource } from \"./HttpSignReporterDatasource\";\n\ndescribe(\"HttpSignReporterDatasource\", () => {\n const config = {\n reporter: { url: \"https://reporter.test\" },\n appSource: \"third-party\",\n originToken: \"originToken\",\n } as ContextModuleServiceConfig;\n\n const envFields = {\n modelId: BlindSigningModelId.NANO_X,\n signerAppVersion: \"1.4.0\",\n deviceVersion: \"2.2.3\",\n };\n\n const solParams: SolSignReportParams = {\n ...envFields,\n chain: \"SOL\",\n signatureId: \"abc123-1738850400000\",\n signingMethod: \"sol_signTransaction\",\n isBlindSign: true,\n targetAddress: \"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4\",\n blindSignReason: BlindSignReason.UNRECOGNIZED_PROGRAM,\n programIds: [\n \"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4\",\n \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\",\n ],\n unrecognizedPrograms: [\"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4\"],\n };\n\n const ethParams: EthSignReportParams = {\n ...envFields,\n chain: \"ETH\",\n signatureId: \"def456-1738850400000\",\n signingMethod: \"eth_signTransaction\",\n isBlindSign: false,\n chainId: 1,\n targetAddress: \"0xdAC17F958D2ee523a2206206994597C13D831ec7\",\n blindSignReason: null,\n };\n\n let httpMock: { post: ReturnType<typeof vi.fn> };\n let dataSource: HttpSignReporterDatasource;\n\n beforeEach(() => {\n vi.resetAllMocks();\n httpMock = { post: vi.fn() };\n dataSource = new HttpSignReporterDatasource(\n config,\n () =>\n ({\n debug: vi.fn(),\n info: vi.fn(),\n warn: vi.fn(),\n error: vi.fn(),\n }) as unknown as LoggerPublisherService,\n httpMock as unknown as DmkNetworkClient,\n );\n });\n\n describe(\"report\", () => {\n it(\"should return Right(undefined) on success\", async () => {\n // GIVEN\n httpMock.post.mockResolvedValueOnce(undefined);\n\n // WHEN\n const result = await dataSource.report(solParams);\n\n // THEN\n expect(result).toEqual(Right(undefined));\n });\n\n it(\"should return Left(Error) when the request fails\", async () => {\n // GIVEN\n httpMock.post.mockRejectedValueOnce(new Error(\"network error\"));\n\n // WHEN\n const result = await dataSource.report(solParams);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSignReporterDatasource: Failed to report signing event\",\n ),\n ),\n );\n });\n\n it(\"should call the v2 endpoint with the correct URL\", async () => {\n // GIVEN\n httpMock.post.mockResolvedValueOnce(undefined);\n\n // WHEN\n await dataSource.report(solParams);\n\n // THEN\n expect(httpMock.post).toHaveBeenCalledWith(\n `${config.reporter.url}/v2/blind-signing-events`,\n expect.anything(),\n { responseType: \"void\" },\n );\n });\n\n it(\"should build correct three-layer body for SOL params\", async () => {\n // GIVEN\n httpMock.post.mockResolvedValueOnce(undefined);\n\n // WHEN\n await dataSource.report(solParams);\n\n // THEN\n expect(httpMock.post).toHaveBeenCalledWith(\n expect.any(String),\n {\n chain: \"SOL\",\n isBlindSign: true,\n sessionId: null,\n chainData: {\n chain: \"SOL\",\n signatureId: solParams.signatureId,\n signingMethod: \"sol_signTransaction\",\n targetAddress: solParams.targetAddress,\n blindSignReason: BlindSignReason.UNRECOGNIZED_PROGRAM,\n programIds: solParams.programIds,\n unrecognizedPrograms: solParams.unrecognizedPrograms,\n },\n envData: {\n modelId: BlindSigningModelId.NANO_X,\n signerAppVersion: \"1.4.0\",\n deviceVersion: \"2.2.3\",\n source: \"third-party\",\n },\n },\n { responseType: \"void\" },\n );\n });\n\n it(\"should build correct three-layer body for ETH params\", async () => {\n // GIVEN\n httpMock.post.mockResolvedValueOnce(undefined);\n\n // WHEN\n await dataSource.report(ethParams);\n\n // THEN\n expect(httpMock.post).toHaveBeenCalledWith(\n expect.any(String),\n {\n chain: \"ETH\",\n isBlindSign: false,\n sessionId: null,\n chainData: {\n chain: \"ETH\",\n signatureId: ethParams.signatureId,\n signingMethod: \"eth_signTransaction\",\n targetAddress: ethParams.targetAddress,\n chainId: 1,\n blindSignReason: null,\n },\n envData: {\n modelId: BlindSigningModelId.NANO_X,\n signerAppVersion: \"1.4.0\",\n deviceVersion: \"2.2.3\",\n source: \"third-party\",\n },\n },\n { responseType: \"void\" },\n );\n });\n\n it(\"should include optional env fields when provided\", async () => {\n // GIVEN\n httpMock.post.mockResolvedValueOnce(undefined);\n const paramsWithOptional: SolSignReportParams = {\n ...solParams,\n platform: \"desktop\",\n appVersion: \"2.80.0\",\n platformOS: \"macOS\",\n platformVersion: \"14.5\",\n liveAppContext: \"swap\",\n sessionId: \"session-abc\",\n };\n\n // WHEN\n await dataSource.report(paramsWithOptional);\n\n // THEN\n const body = httpMock.post.mock.calls[0]![1];\n expect(body.envData.platform).toBe(\"desktop\");\n expect(body.envData.appVersion).toBe(\"2.80.0\");\n expect(body.envData.platformOS).toBe(\"macOS\");\n expect(body.envData.platformVersion).toBe(\"14.5\");\n expect(body.envData.liveAppContext).toBe(\"swap\");\n expect(body.sessionId).toBe(\"session-abc\");\n });\n\n it(\"should include transactionSignature in SOL chainData when provided\", async () => {\n // GIVEN\n httpMock.post.mockResolvedValueOnce(undefined);\n const paramsWithSig: SolSignReportParams = {\n ...solParams,\n transactionSignature: \"5yJ9...\",\n };\n\n // WHEN\n await dataSource.report(paramsWithSig);\n\n // THEN\n const body = httpMock.post.mock.calls[0]![1];\n expect(body.chainData.transactionSignature).toBe(\"5yJ9...\");\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["import_purify_ts", "import_BlindSigningEvent", "import_BlindSigningModelId", "import_HttpSignReporterDatasource", "config", "envFields", "solParams", "ethParams", "httpMock", "dataSource", "result", "paramsWithOptional", "body", "paramsWithSig"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var i=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var s=Object.prototype.hasOwnProperty;var n=(e,r,p,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of m(r))!s.call(e,o)&&o!==p&&i(e,o,{get:()=>r[o],enumerable:!(t=a(r,o))||t.enumerable});return e};var f=e=>n(i({},"__esModule",{value:!0}),e);var g={};module.exports=f(g);
2
+ //# sourceMappingURL=SignReporterDatasource.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/modules/multichain/sign-reporter/data/SignReporterDatasource.ts"],
4
+ "sourcesContent": ["import { type Either } from \"purify-ts\";\n\nimport { type SignReportParams } from \"@/modules/multichain/sign-reporter/model/SignReportParams\";\n\nexport interface SignReporterDatasource {\n report(params: SignReportParams): Promise<Either<Error, void>>;\n}\n"],
5
+ "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
+ "names": ["SignReporterDatasource_exports", "__toCommonJS"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var a=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var o=Object.prototype.hasOwnProperty;var l=(i,n,g,e)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of r(n))!o.call(i,t)&&t!==g&&a(i,t,{get:()=>n[t],enumerable:!(e=s(n,t))||e.enumerable});return i};var d=i=>l(a({},"__esModule",{value:!0}),i);var p={};module.exports=d(p);
2
+ //# sourceMappingURL=SigningEventDto.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../../src/modules/multichain/sign-reporter/data/dto/SigningEventDto.ts"],
4
+ "sourcesContent": ["import { type BlindSignReason } from \"@/modules/multichain/reporter/model/BlindSigningEvent\";\nimport { type BlindSigningModelId } from \"@/shared/model/BlindSigningModelId\";\n\ntype SigningEventEnvDataDto = {\n modelId: BlindSigningModelId;\n signerAppVersion: string;\n deviceVersion: string | null;\n source: string;\n platform?: \"desktop\" | \"mobile\";\n appVersion?: string;\n platformOS?: string;\n platformVersion?: string;\n liveAppContext?: string | null;\n};\n\ntype EthChainDataDto = {\n chain: \"ETH\";\n signatureId: string;\n signingMethod: \"eth_signTransaction\" | \"eth_signTypedData\";\n targetAddress: string | null;\n chainId: number | null;\n blindSignReason: BlindSignReason | null;\n selectorId?: string | null;\n clearSigningType?: \"basic\" | \"eip7730\" | null;\n partialContextErrors?: number | null;\n};\n\ntype SolChainDataDto = {\n chain: \"SOL\";\n signatureId: string;\n signingMethod: \"sol_signTransaction\";\n targetAddress: string | null;\n blindSignReason: BlindSignReason | null;\n programIds: string[];\n unrecognizedPrograms: string[];\n transactionSignature?: string | null;\n};\n\ntype SigningEventDtoBase = {\n isBlindSign: boolean;\n sessionId: string | null;\n envData: SigningEventEnvDataDto;\n};\n\nexport type SigningEventDto =\n | (SigningEventDtoBase & { chain: \"ETH\"; chainData: EthChainDataDto })\n | (SigningEventDtoBase & { chain: \"SOL\"; chainData: SolChainDataDto });\n"],
5
+ "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
+ "names": ["SigningEventDto_exports", "__toCommonJS"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var p=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var u=(r,o)=>{for(var t in o)p(r,t,{get:o[t],enumerable:!0})},c=(r,o,t,n)=>{if(o&&typeof o=="object"||typeof o=="function")for(let e of R(o))!f.call(r,e)&&e!==t&&p(r,e,{get:()=>o[e],enumerable:!(n=s(o,e))||n.enumerable});return r};var S=r=>c(p({},"__esModule",{value:!0}),r);var D={};u(D,{signReporterModuleFactory:()=>l});module.exports=S(D);var m=require("inversify"),a=require("../../../../modules/multichain/sign-reporter/data/HttpSignReporterDatasource"),i=require("../../../../modules/multichain/sign-reporter/di/signReporterTypes"),g=require("../../../../modules/multichain/sign-reporter/domain/DefaultSignReporter");const l=()=>new m.ContainerModule(({bind:r})=>{r(i.signReporterTypes.SignReporterDatasource).to(a.HttpSignReporterDatasource),r(i.signReporterTypes.SignReporter).to(g.DefaultSignReporter)});0&&(module.exports={signReporterModuleFactory});
2
+ //# sourceMappingURL=signReporterModuleFactory.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/modules/multichain/sign-reporter/di/signReporterModuleFactory.ts"],
4
+ "sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { HttpSignReporterDatasource } from \"@/modules/multichain/sign-reporter/data/HttpSignReporterDatasource\";\nimport { signReporterTypes } from \"@/modules/multichain/sign-reporter/di/signReporterTypes\";\nimport { DefaultSignReporter } from \"@/modules/multichain/sign-reporter/domain/DefaultSignReporter\";\n\nexport const signReporterModuleFactory = () =>\n new ContainerModule(({ bind }) => {\n bind(signReporterTypes.SignReporterDatasource).to(\n HttpSignReporterDatasource,\n );\n bind(signReporterTypes.SignReporter).to(DefaultSignReporter);\n });\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,+BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAgC,qBAEhCC,EAA2C,8EAC3CC,EAAkC,mEAClCC,EAAoC,yEAE7B,MAAML,EAA4B,IACvC,IAAI,kBAAgB,CAAC,CAAE,KAAAM,CAAK,IAAM,CAChCA,EAAK,oBAAkB,sBAAsB,EAAE,GAC7C,4BACF,EACAA,EAAK,oBAAkB,YAAY,EAAE,GAAG,qBAAmB,CAC7D,CAAC",
6
+ "names": ["signReporterModuleFactory_exports", "__export", "signReporterModuleFactory", "__toCommonJS", "import_inversify", "import_HttpSignReporterDatasource", "import_signReporterTypes", "import_DefaultSignReporter", "bind"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var p=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var i=Object.prototype.hasOwnProperty;var s=(e,r)=>{for(var t in r)p(e,t,{get:r[t],enumerable:!0})},R=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of g(r))!i.call(e,o)&&o!==t&&p(e,o,{get:()=>r[o],enumerable:!(n=S(r,o))||n.enumerable});return e};var a=e=>R(p({},"__esModule",{value:!0}),e);var y={};s(y,{signReporterTypes:()=>c});module.exports=a(y);const c={SignReporterDatasource:Symbol.for("SignReporterDatasource"),SignReporter:Symbol.for("SignReporter")};0&&(module.exports={signReporterTypes});
2
+ //# sourceMappingURL=signReporterTypes.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/modules/multichain/sign-reporter/di/signReporterTypes.ts"],
4
+ "sourcesContent": ["export const signReporterTypes = {\n SignReporterDatasource: Symbol.for(\"SignReporterDatasource\"),\n SignReporter: Symbol.for(\"SignReporter\"),\n};\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,IAAA,eAAAC,EAAAH,GAAO,MAAME,EAAoB,CAC/B,uBAAwB,OAAO,IAAI,wBAAwB,EAC3D,aAAc,OAAO,IAAI,cAAc,CACzC",
6
+ "names": ["signReporterTypes_exports", "__export", "signReporterTypes", "__toCommonJS"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var m=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var u=(o,r)=>{for(var e in r)m(o,e,{get:r[e],enumerable:!0})},f=(o,r,e,p)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of R(r))!d.call(o,t)&&t!==e&&m(o,t,{get:()=>r[t],enumerable:!(p=c(r,t))||p.enumerable});return o};var h=o=>f(m({},"__esModule",{value:!0}),o),y=(o,r,e,p)=>{for(var t=p>1?void 0:p?c(r,e):r,s=o.length-1,n;s>=0;s--)(n=o[s])&&(t=(p?n(r,e,t):n(t))||t);return p&&t&&m(r,e,t),t},S=(o,r)=>(e,p)=>r(e,p,o);var E={};u(E,{DefaultSignReporter:()=>i});module.exports=h(E);var a=require("inversify"),g=require("../../../../modules/multichain/sign-reporter/di/signReporterTypes");let i=class{constructor(r){this.dataSource=r}async report(r){return this.dataSource.report(r)}};i=y([(0,a.injectable)(),S(0,(0,a.inject)(g.signReporterTypes.SignReporterDatasource))],i);0&&(module.exports={DefaultSignReporter});
2
+ //# sourceMappingURL=DefaultSignReporter.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/modules/multichain/sign-reporter/domain/DefaultSignReporter.ts"],
4
+ "sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport { type Either } from \"purify-ts\";\n\nimport { type SignReporterDatasource } from \"@/modules/multichain/sign-reporter/data/SignReporterDatasource\";\nimport { signReporterTypes } from \"@/modules/multichain/sign-reporter/di/signReporterTypes\";\nimport { type SignReportParams } from \"@/modules/multichain/sign-reporter/model/SignReportParams\";\n\nimport { type SignReporter } from \"./SignReporter\";\n\n@injectable()\nexport class DefaultSignReporter implements SignReporter {\n constructor(\n @inject(signReporterTypes.SignReporterDatasource)\n private readonly dataSource: SignReporterDatasource,\n ) {}\n\n async report(params: SignReportParams): Promise<Either<Error, void>> {\n return this.dataSource.report(params);\n }\n}\n"],
5
+ "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,yBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBAInCC,EAAkC,mEAM3B,IAAMC,EAAN,KAAkD,CACvD,YAEmBC,EACjB,CADiB,gBAAAA,CAChB,CAEH,MAAM,OAAOC,EAAwD,CACnE,OAAO,KAAK,WAAW,OAAOA,CAAM,CACtC,CACF,EATaF,EAANG,EAAA,IADN,cAAW,EAGPC,EAAA,eAAO,oBAAkB,sBAAsB,IAFvCJ",
6
+ "names": ["DefaultSignReporter_exports", "__export", "DefaultSignReporter", "__toCommonJS", "import_inversify", "import_signReporterTypes", "DefaultSignReporter", "dataSource", "params", "__decorateClass", "__decorateParam"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("purify-ts"),i=require("../../../../modules/multichain/reporter/model/BlindSigningEvent"),s=require("../../../../shared/model/BlindSigningModelId"),n=require("./DefaultSignReporter");describe("DefaultSignReporter",()=>{const t={chain:"SOL",signatureId:"abc123-1738850400000",signingMethod:"sol_signTransaction",isBlindSign:!0,targetAddress:null,blindSignReason:i.BlindSignReason.NO_CLEAR_SIGNING_CONTEXT,programIds:["11111111111111111111111111111111"],unrecognizedPrograms:[],modelId:s.BlindSigningModelId.FLEX,signerAppVersion:"1.4.0",deviceVersion:"2.2.3"};it("should delegate to the datasource and return Right on success",async()=>{const r={report:vi.fn().mockResolvedValueOnce((0,e.Right)(void 0))},a=await new n.DefaultSignReporter(r).report(t);expect(r.report).toHaveBeenCalledWith(t),expect(a).toEqual((0,e.Right)(void 0))}),it("should delegate to the datasource and return Left on failure",async()=>{const r=new Error("report failed"),o={report:vi.fn().mockResolvedValueOnce((0,e.Left)(r))},d=await new n.DefaultSignReporter(o).report(t);expect(o.report).toHaveBeenCalledWith(t),expect(d).toEqual((0,e.Left)(r))})});
2
+ //# sourceMappingURL=DefaultSignReporter.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/modules/multichain/sign-reporter/domain/DefaultSignReporter.test.ts"],
4
+ "sourcesContent": ["import { Left, Right } from \"purify-ts\";\n\nimport { BlindSignReason } from \"@/modules/multichain/reporter/model/BlindSigningEvent\";\nimport { type SignReporterDatasource } from \"@/modules/multichain/sign-reporter/data/SignReporterDatasource\";\nimport { type SolSignReportParams } from \"@/modules/multichain/sign-reporter/model/SignReportParams\";\nimport { BlindSigningModelId } from \"@/shared/model/BlindSigningModelId\";\n\nimport { DefaultSignReporter } from \"./DefaultSignReporter\";\n\ndescribe(\"DefaultSignReporter\", () => {\n const params: SolSignReportParams = {\n chain: \"SOL\",\n signatureId: \"abc123-1738850400000\",\n signingMethod: \"sol_signTransaction\",\n isBlindSign: true,\n targetAddress: null,\n blindSignReason: BlindSignReason.NO_CLEAR_SIGNING_CONTEXT,\n programIds: [\"11111111111111111111111111111111\"],\n unrecognizedPrograms: [],\n modelId: BlindSigningModelId.FLEX,\n signerAppVersion: \"1.4.0\",\n deviceVersion: \"2.2.3\",\n };\n\n it(\"should delegate to the datasource and return Right on success\", async () => {\n // GIVEN\n const dataSource: SignReporterDatasource = {\n report: vi.fn().mockResolvedValueOnce(Right(undefined)),\n };\n const reporter = new DefaultSignReporter(dataSource);\n\n // WHEN\n const result = await reporter.report(params);\n\n // THEN\n expect(dataSource.report).toHaveBeenCalledWith(params);\n expect(result).toEqual(Right(undefined));\n });\n\n it(\"should delegate to the datasource and return Left on failure\", async () => {\n // GIVEN\n const error = new Error(\"report failed\");\n const dataSource: SignReporterDatasource = {\n report: vi.fn().mockResolvedValueOnce(Left(error)),\n };\n const reporter = new DefaultSignReporter(dataSource);\n\n // WHEN\n const result = await reporter.report(params);\n\n // THEN\n expect(dataSource.report).toHaveBeenCalledWith(params);\n expect(result).toEqual(Left(error));\n });\n});\n"],
5
+ "mappings": "aAAA,IAAAA,EAA4B,qBAE5BC,EAAgC,iEAGhCC,EAAoC,8CAEpCC,EAAoC,iCAEpC,SAAS,sBAAuB,IAAM,CACpC,MAAMC,EAA8B,CAClC,MAAO,MACP,YAAa,uBACb,cAAe,sBACf,YAAa,GACb,cAAe,KACf,gBAAiB,kBAAgB,yBACjC,WAAY,CAAC,kCAAkC,EAC/C,qBAAsB,CAAC,EACvB,QAAS,sBAAoB,KAC7B,iBAAkB,QAClB,cAAe,OACjB,EAEA,GAAG,gEAAiE,SAAY,CAE9E,MAAMC,EAAqC,CACzC,OAAQ,GAAG,GAAG,EAAE,yBAAsB,SAAM,MAAS,CAAC,CACxD,EAIMC,EAAS,MAHE,IAAI,sBAAoBD,CAAU,EAGrB,OAAOD,CAAM,EAG3C,OAAOC,EAAW,MAAM,EAAE,qBAAqBD,CAAM,EACrD,OAAOE,CAAM,EAAE,WAAQ,SAAM,MAAS,CAAC,CACzC,CAAC,EAED,GAAG,+DAAgE,SAAY,CAE7E,MAAMC,EAAQ,IAAI,MAAM,eAAe,EACjCF,EAAqC,CACzC,OAAQ,GAAG,GAAG,EAAE,yBAAsB,QAAKE,CAAK,CAAC,CACnD,EAIMD,EAAS,MAHE,IAAI,sBAAoBD,CAAU,EAGrB,OAAOD,CAAM,EAG3C,OAAOC,EAAW,MAAM,EAAE,qBAAqBD,CAAM,EACrD,OAAOE,CAAM,EAAE,WAAQ,QAAKC,CAAK,CAAC,CACpC,CAAC,CACH,CAAC",
6
+ "names": ["import_purify_ts", "import_BlindSigningEvent", "import_BlindSigningModelId", "import_DefaultSignReporter", "params", "dataSource", "result", "error"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var i=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var n=Object.prototype.hasOwnProperty;var s=(e,r,p,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of a(r))!n.call(e,o)&&o!==p&&i(e,o,{get:()=>r[o],enumerable:!(t=m(r,o))||t.enumerable});return e};var f=e=>s(i({},"__esModule",{value:!0}),e);var g={};module.exports=f(g);
2
+ //# sourceMappingURL=SignReporter.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/modules/multichain/sign-reporter/domain/SignReporter.ts"],
4
+ "sourcesContent": ["import { type Either } from \"purify-ts\";\n\nimport { type SignReportParams } from \"@/modules/multichain/sign-reporter/model/SignReportParams\";\n\nexport interface SignReporter {\n report(params: SignReportParams): Promise<Either<Error, void>>;\n}\n"],
5
+ "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
+ "names": ["SignReporter_exports", "__toCommonJS"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var o=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var l=(i,n)=>{for(var e in n)o(i,e,{get:n[e],enumerable:!0})},p=(i,n,e,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of s(n))!a.call(i,t)&&t!==e&&o(i,t,{get:()=>n[t],enumerable:!(r=g(n,t))||r.enumerable});return i};var S=i=>p(o({},"__esModule",{value:!0}),i);var T={};l(T,{SigningMethod:()=>d});module.exports=S(T);const d=Object.freeze({ETH_SIGN_TRANSACTION:"eth_signTransaction",ETH_SIGN_TYPED_DATA:"eth_signTypedData",SOL_SIGN_TRANSACTION:"sol_signTransaction"});0&&(module.exports={SigningMethod});
2
+ //# sourceMappingURL=SignReportParams.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/modules/multichain/sign-reporter/model/SignReportParams.ts"],
4
+ "sourcesContent": ["import { type BlindSignReason } from \"@/modules/multichain/reporter/model/BlindSigningEvent\";\nimport { type BlindSigningModelId } from \"@/shared/model/BlindSigningModelId\";\n\nexport const SigningMethod = Object.freeze({\n ETH_SIGN_TRANSACTION: \"eth_signTransaction\",\n ETH_SIGN_TYPED_DATA: \"eth_signTypedData\",\n SOL_SIGN_TRANSACTION: \"sol_signTransaction\",\n} as const);\nexport type SigningMethod = (typeof SigningMethod)[keyof typeof SigningMethod];\n\ntype SignReportEnvData = {\n modelId: BlindSigningModelId;\n signerAppVersion: string;\n deviceVersion: string | null;\n platform?: \"desktop\" | \"mobile\";\n appVersion?: string;\n platformOS?: string;\n platformVersion?: string;\n liveAppContext?: string | null;\n sessionId?: string | null;\n};\n\nexport type EthSignReportParams = SignReportEnvData & {\n chain: \"ETH\";\n signatureId: string;\n signingMethod:\n | typeof SigningMethod.ETH_SIGN_TRANSACTION\n | typeof SigningMethod.ETH_SIGN_TYPED_DATA;\n isBlindSign: boolean;\n chainId: number | null;\n targetAddress: string | null;\n selectorId?: string | null;\n blindSignReason: BlindSignReason | null;\n clearSigningType?: \"basic\" | \"eip7730\" | null;\n partialContextErrors?: number | null;\n};\n\nexport type SolSignReportParams = SignReportEnvData & {\n chain: \"SOL\";\n signatureId: string;\n signingMethod: typeof SigningMethod.SOL_SIGN_TRANSACTION;\n isBlindSign: boolean;\n targetAddress: string | null;\n blindSignReason: BlindSignReason | null;\n programIds: string[];\n unrecognizedPrograms: string[];\n transactionSignature?: string | null;\n};\n\nexport type SignReportParams = EthSignReportParams | SolSignReportParams;\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,IAAA,eAAAC,EAAAH,GAGO,MAAME,EAAgB,OAAO,OAAO,CACzC,qBAAsB,sBACtB,oBAAqB,oBACrB,qBAAsB,qBACxB,CAAU",
6
+ "names": ["SignReportParams_exports", "__export", "SigningMethod", "__toCommonJS"]
7
+ }
@@ -1,2 +1,2 @@
1
- "use strict";var a=require("purify-ts"),t=require("vitest"),i=require("../../../../modules/solana/model/SolanaTransactionScanChainId"),d=require("./HttpInstructionInfoDataSource");(0,t.describe)("HttpInstructionInfoDataSource",()=>{let r,o;const e="11111111111111111111111111111111",s="solana-mainnet",l={cal:{url:"https://global.api.prd.ledger.com/cal/v1",mode:"prod",branch:"main"}},c=[{id:e,chain_id:i.SolanaTransactionScanChainId.MAINNET,instructions:[{discriminator_hex:"00000000",instruction_name:"createAccount",descriptor:{data:"00010101",signatures:{prod:"prodsig",test:"testsig"}},display_fields:[],value_flow_ports:[],hide_rules:[],account_resets:[]}]}];(0,t.beforeEach)(()=>{t.vi.clearAllMocks(),o={get:t.vi.fn()},r=new d.HttpInstructionInfoDataSource(l,o)}),(0,t.it)("calls CAL /solana_programs with id, chain_id and output params",async()=>{o.get.mockResolvedValue(c),await r.getInstructionInfo({programId:e,network:s}),(0,t.expect)(o.get).toHaveBeenCalledTimes(1),(0,t.expect)(o.get).toHaveBeenCalledWith("https://global.api.prd.ledger.com/cal/v1/solana_programs",{params:{id:e,chain_id:i.SolanaTransactionScanChainId.MAINNET,output:"id,chain_id,instructions",ref:"branch:main"}})}),(0,t.it)("maps devnet/testnet networks to their numeric chain ids",async()=>{o.get.mockResolvedValue(c),await r.getInstructionInfo({programId:e,network:"solana-devnet"}),(0,t.expect)(o.get).toHaveBeenCalledWith("https://global.api.prd.ledger.com/cal/v1/solana_programs",t.expect.objectContaining({params:t.expect.objectContaining({chain_id:901})}))}),(0,t.it)("returns Right with each descriptor transformed into the core payload on success",async()=>{o.get.mockResolvedValue(c);const n=await r.getInstructionInfo({programId:e,network:s});(0,t.expect)(n).toEqual((0,a.Right)({programId:e,descriptors:{"00000000":(0,a.Right)({programId:e,discriminator:"00000000",instructionName:"createAccount",instructionInfo:{data:"00010101",signature:"prodsig"},substructures:[],enumVariants:[],idlDescriptor:{typePool:[],rootType:0},mintAssociations:[],valueFlowPorts:[],accountResets:[],displayFields:[]})},enumVariants:[]}))}),(0,t.it)("keys a descriptor without `discriminator_hex` under the empty string",async()=>{o.get.mockResolvedValue([{id:e,chain_id:i.SolanaTransactionScanChainId.MAINNET,instructions:[{instruction_name:"addMemo",descriptor:{data:"00010101",signatures:{prod:"prodsig",test:"testsig"}}}]}]);const n=await r.getInstructionInfo({programId:e,network:s});(0,t.expect)(n.isRight()).toBe(!0);const{descriptors:u}=n.unsafeCoerce();(0,t.expect)(Object.keys(u)).toEqual([""]),(0,t.expect)(u[""].unsafeCoerce()).toEqual(t.expect.objectContaining({programId:e,discriminator:"",instructionInfo:{data:"00010101",signature:"prodsig"}}))}),(0,t.it)("returns Left when the response array is empty",async()=>{o.get.mockResolvedValue([]);const n=await r.getInstructionInfo({programId:e,network:s});(0,t.expect)(n).toEqual((0,a.Left)(new Error(`[ContextModule] HttpInstructionInfoDataSource: empty response for program ${e}`)))}),(0,t.it)("returns Left when no program object matches the requested programId",async()=>{o.get.mockResolvedValue([{id:"OtherProgram",chain_id:i.SolanaTransactionScanChainId.MAINNET,instructions:[]}]);const n=await r.getInstructionInfo({programId:e,network:s});(0,t.expect)(n).toEqual((0,a.Left)(new Error(`[ContextModule] HttpInstructionInfoDataSource: no descriptors for program ${e}`)))}),(0,t.it)("returns Left (not a throw) when an instruction descriptor is malformed",async()=>{o.get.mockResolvedValue([{id:e,chain_id:i.SolanaTransactionScanChainId.MAINNET,instructions:[{discriminator_hex:"00000000"}]}]);const n=await r.getInstructionInfo({programId:e,network:s});(0,t.expect)(n.isLeft()).toBe(!0),(0,t.expect)(n.extract().message).toMatch(new RegExp(String.raw`\[ContextModule\] HttpInstructionInfoDataSource: malformed descriptors for program ${e}:`))}),(0,t.it)("returns Left when the HTTP client throws",async()=>{o.get.mockRejectedValue(new Error("network"));const n=await r.getInstructionInfo({programId:e,network:s});(0,t.expect)(n).toEqual((0,a.Left)(new Error("[ContextModule] HttpInstructionInfoDataSource: Failed to fetch instruction descriptors: network")))})});
1
+ "use strict";var i=require("purify-ts"),t=require("vitest"),a=require("../../../../modules/solana/model/SolanaTransactionScanChainId"),d=require("./HttpInstructionInfoDataSource");(0,t.describe)("HttpInstructionInfoDataSource",()=>{let r,n;const e="11111111111111111111111111111111",s="solana-mainnet",l={cal:{url:"https://global.api.prd.ledger.com/cal/v1",mode:"prod",branch:"main"}},u=[{id:e,chain_id:a.SolanaTransactionScanChainId.MAINNET,instructions:[{discriminator_hex:"00000000",instruction_name:"createAccount",descriptor:{data:"00010101",signatures:{prod:"prodsig",test:"testsig"}},display_fields:[],value_flow_ports:[],hide_rules:[],account_resets:[]}]}];(0,t.beforeEach)(()=>{t.vi.clearAllMocks(),n={get:t.vi.fn()},r=new d.HttpInstructionInfoDataSource(l,n)}),(0,t.it)("calls CAL /solana_programs with id, chain_id and output params",async()=>{n.get.mockResolvedValue(u),await r.getInstructionInfo({programId:e,network:s}),(0,t.expect)(n.get).toHaveBeenCalledTimes(1),(0,t.expect)(n.get).toHaveBeenCalledWith("https://global.api.prd.ledger.com/cal/v1/solana_programs",{params:{id:e,chain_id:a.SolanaTransactionScanChainId.MAINNET,output:"id,chain_id,instructions",ref:"branch:main"}})}),(0,t.it)("maps devnet/testnet networks to their numeric chain ids",async()=>{n.get.mockResolvedValue(u),await r.getInstructionInfo({programId:e,network:"solana-devnet"}),(0,t.expect)(n.get).toHaveBeenCalledWith("https://global.api.prd.ledger.com/cal/v1/solana_programs",t.expect.objectContaining({params:t.expect.objectContaining({chain_id:901})}))}),(0,t.it)("returns Right with each descriptor transformed into the core payload on success",async()=>{n.get.mockResolvedValue(u);const o=await r.getInstructionInfo({programId:e,network:s});(0,t.expect)(o).toEqual((0,i.Right)({programId:e,descriptors:{"00000000":(0,i.Right)({programId:e,discriminator:"00000000",instructionName:"createAccount",instructionInfo:{data:"00010101",signature:"prodsig"},substructures:[],enumVariants:[],idlDescriptor:{typePool:[],rootType:0},mintAssociations:[],ownerAssociations:[],valueFlowPorts:[],accountResets:[],displayFields:[],hideRules:[]})},enumVariants:[]}))}),(0,t.it)("keys a descriptor without `discriminator_hex` under the empty string",async()=>{n.get.mockResolvedValue([{id:e,chain_id:a.SolanaTransactionScanChainId.MAINNET,instructions:[{instruction_name:"addMemo",descriptor:{data:"00010101",signatures:{prod:"prodsig",test:"testsig"}}}]}]);const o=await r.getInstructionInfo({programId:e,network:s});(0,t.expect)(o.isRight()).toBe(!0);const{descriptors:c}=o.unsafeCoerce();(0,t.expect)(Object.keys(c)).toEqual([""]),(0,t.expect)(c[""].unsafeCoerce()).toEqual(t.expect.objectContaining({programId:e,discriminator:"",instructionInfo:{data:"00010101",signature:"prodsig"}}))}),(0,t.it)("returns Left when the response array is empty",async()=>{n.get.mockResolvedValue([]);const o=await r.getInstructionInfo({programId:e,network:s});(0,t.expect)(o).toEqual((0,i.Left)(new Error(`[ContextModule] HttpInstructionInfoDataSource: empty response for program ${e}`)))}),(0,t.it)("returns Left when no program object matches the requested programId",async()=>{n.get.mockResolvedValue([{id:"OtherProgram",chain_id:a.SolanaTransactionScanChainId.MAINNET,instructions:[]}]);const o=await r.getInstructionInfo({programId:e,network:s});(0,t.expect)(o).toEqual((0,i.Left)(new Error(`[ContextModule] HttpInstructionInfoDataSource: no descriptors for program ${e}`)))}),(0,t.it)("returns Left (not a throw) when an instruction descriptor is malformed",async()=>{n.get.mockResolvedValue([{id:e,chain_id:a.SolanaTransactionScanChainId.MAINNET,instructions:[{discriminator_hex:"00000000"}]}]);const o=await r.getInstructionInfo({programId:e,network:s});(0,t.expect)(o.isLeft()).toBe(!0),(0,t.expect)(o.extract().message).toMatch(new RegExp(String.raw`\[ContextModule\] HttpInstructionInfoDataSource: malformed descriptors for program ${e}:`))}),(0,t.it)("returns Left (not a throw) when account_schema.slots is not an array",async()=>{n.get.mockResolvedValue([{id:e,chain_id:a.SolanaTransactionScanChainId.MAINNET,instructions:[{discriminator_hex:"00000000",descriptor:{data:"00010101",signatures:{prod:"prodsig",test:"testsig"}},account_schema:{slots:{}}}]}]);const o=await r.getInstructionInfo({programId:e,network:s});(0,t.expect)(o.isLeft()).toBe(!0),(0,t.expect)(o.extract().message).toMatch(new RegExp(String.raw`\[ContextModule\] HttpInstructionInfoDataSource: malformed descriptors for program ${e}:`))}),(0,t.it)("returns Right with accountSchema mapped through when it is well-formed",async()=>{n.get.mockResolvedValue([{id:e,chain_id:a.SolanaTransactionScanChainId.MAINNET,instructions:[{discriminator_hex:"00000000",descriptor:{data:"00010101",signatures:{prod:"prodsig",test:"testsig"}},account_schema:{count_min:2,count_max:2,slots:[{signer:"REQUIRED",writable:"EITHER"}]}}]}]);const o=await r.getInstructionInfo({programId:e,network:s});(0,t.expect)(o.isRight()).toBe(!0);const{descriptors:c}=o.unsafeCoerce();(0,t.expect)(c["00000000"].unsafeCoerce()).toEqual(t.expect.objectContaining({accountSchema:{count_min:2,count_max:2,remaining_policy:{signer:"EITHER",writable:"EITHER"},slots:[{signer:"REQUIRED",writable:"EITHER"}]}}))}),(0,t.it)("returns Left when the HTTP client throws",async()=>{n.get.mockRejectedValue(new Error("network"));const o=await r.getInstructionInfo({programId:e,network:s});(0,t.expect)(o).toEqual((0,i.Left)(new Error("[ContextModule] HttpInstructionInfoDataSource: Failed to fetch instruction descriptors: network")))})});
2
2
  //# sourceMappingURL=HttpInstructionInfoDataSource.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.ts"],
4
- "sourcesContent": ["import { type DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { SolanaTransactionScanChainId } from \"@/modules/solana/model/SolanaTransactionScanChainId\";\n\nimport { HttpInstructionInfoDataSource } from \"./HttpInstructionInfoDataSource\";\nimport { type InstructionInfoDataSource } from \"./InstructionInfoDataSource\";\nimport { type CalInstructionInfoResponseDto } from \"./InstructionInfoDto\";\n\ndescribe(\"HttpInstructionInfoDataSource\", () => {\n let datasource: InstructionInfoDataSource;\n let httpMock: { get: ReturnType<typeof vi.fn> };\n const programId = \"11111111111111111111111111111111\";\n const network = \"solana-mainnet\";\n const config: ContextModuleServiceConfig = {\n cal: {\n url: \"https://global.api.prd.ledger.com/cal/v1\",\n mode: \"prod\",\n branch: \"main\",\n },\n } as ContextModuleServiceConfig;\n\n const successResponse: CalInstructionInfoResponseDto = [\n {\n id: programId,\n chain_id: SolanaTransactionScanChainId.MAINNET,\n instructions: [\n {\n discriminator_hex: \"00000000\",\n instruction_name: \"createAccount\",\n descriptor: {\n data: \"00010101\",\n signatures: { prod: \"prodsig\", test: \"testsig\" },\n },\n display_fields: [],\n value_flow_ports: [],\n hide_rules: [],\n account_resets: [],\n },\n ],\n },\n ];\n\n beforeEach(() => {\n vi.clearAllMocks();\n httpMock = { get: vi.fn() };\n datasource = new HttpInstructionInfoDataSource(\n config,\n httpMock as unknown as DmkNetworkClient,\n );\n });\n\n it(\"calls CAL /solana_programs with id, chain_id and output params\", async () => {\n httpMock.get.mockResolvedValue(successResponse);\n\n await datasource.getInstructionInfo({ programId, network });\n\n expect(httpMock.get).toHaveBeenCalledTimes(1);\n expect(httpMock.get).toHaveBeenCalledWith(\n \"https://global.api.prd.ledger.com/cal/v1/solana_programs\",\n {\n params: {\n id: programId,\n chain_id: SolanaTransactionScanChainId.MAINNET,\n output: \"id,chain_id,instructions\",\n ref: \"branch:main\",\n },\n },\n );\n });\n\n it(\"maps devnet/testnet networks to their numeric chain ids\", async () => {\n httpMock.get.mockResolvedValue(successResponse);\n\n await datasource.getInstructionInfo({\n programId,\n network: \"solana-devnet\",\n });\n\n expect(httpMock.get).toHaveBeenCalledWith(\n \"https://global.api.prd.ledger.com/cal/v1/solana_programs\",\n expect.objectContaining({\n params: expect.objectContaining({ chain_id: 901 }),\n }),\n );\n });\n\n it(\"returns Right with each descriptor transformed into the core payload on success\", async () => {\n httpMock.get.mockResolvedValue(successResponse);\n\n const result = await datasource.getInstructionInfo({ programId, network });\n\n expect(result).toEqual(\n Right({\n programId,\n descriptors: {\n \"00000000\": Right({\n programId,\n discriminator: \"00000000\",\n instructionName: \"createAccount\",\n instructionInfo: { data: \"00010101\", signature: \"prodsig\" },\n substructures: [],\n enumVariants: [],\n idlDescriptor: { typePool: [], rootType: 0 },\n mintAssociations: [],\n valueFlowPorts: [],\n accountResets: [],\n displayFields: [],\n }),\n },\n enumVariants: [],\n }),\n );\n });\n\n it(\"keys a descriptor without `discriminator_hex` under the empty string\", async () => {\n // Single-instruction programs (e.g. SPL Memo `addMemo`) genuinely have no\n // discriminator, so CAL omits the field.\n httpMock.get.mockResolvedValue([\n {\n id: programId,\n chain_id: SolanaTransactionScanChainId.MAINNET,\n instructions: [\n {\n instruction_name: \"addMemo\",\n descriptor: {\n data: \"00010101\",\n signatures: { prod: \"prodsig\", test: \"testsig\" },\n },\n },\n ],\n },\n ]);\n\n const result = await datasource.getInstructionInfo({ programId, network });\n\n expect(result.isRight()).toBe(true);\n const { descriptors } = result.unsafeCoerce();\n expect(Object.keys(descriptors)).toEqual([\"\"]);\n expect(descriptors[\"\"]!.unsafeCoerce()).toEqual(\n expect.objectContaining({\n programId,\n discriminator: \"\",\n instructionInfo: { data: \"00010101\", signature: \"prodsig\" },\n }),\n );\n });\n\n it(\"returns Left when the response array is empty\", async () => {\n httpMock.get.mockResolvedValue([]);\n\n const result = await datasource.getInstructionInfo({ programId, network });\n\n expect(result).toEqual(\n Left(\n new Error(\n `[ContextModule] HttpInstructionInfoDataSource: empty response for program ${programId}`,\n ),\n ),\n );\n });\n\n it(\"returns Left when no program object matches the requested programId\", async () => {\n httpMock.get.mockResolvedValue([\n {\n id: \"OtherProgram\",\n chain_id: SolanaTransactionScanChainId.MAINNET,\n instructions: [],\n },\n ]);\n\n const result = await datasource.getInstructionInfo({ programId, network });\n\n expect(result).toEqual(\n Left(\n new Error(\n `[ContextModule] HttpInstructionInfoDataSource: no descriptors for program ${programId}`,\n ),\n ),\n );\n });\n\n it(\"returns Left (not a throw) when an instruction descriptor is malformed\", async () => {\n // `descriptor` missing on the instruction \u2014 would crash the loader if the\n // datasource handed it through unvalidated.\n httpMock.get.mockResolvedValue([\n {\n id: programId,\n chain_id: SolanaTransactionScanChainId.MAINNET,\n instructions: [{ discriminator_hex: \"00000000\" }],\n },\n ]);\n\n const result = await datasource.getInstructionInfo({ programId, network });\n\n expect(result.isLeft()).toBe(true);\n expect((result.extract() as Error).message).toMatch(\n new RegExp(\n String.raw`\\[ContextModule\\] HttpInstructionInfoDataSource: malformed descriptors for program ${programId}:`,\n ),\n );\n });\n\n it(\"returns Left when the HTTP client throws\", async () => {\n httpMock.get.mockRejectedValue(new Error(\"network\"));\n\n const result = await datasource.getInstructionInfo({ programId, network });\n\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpInstructionInfoDataSource: Failed to fetch instruction descriptors: network\",\n ),\n ),\n );\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { type DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { SolanaTransactionScanChainId } from \"@/modules/solana/model/SolanaTransactionScanChainId\";\n\nimport { HttpInstructionInfoDataSource } from \"./HttpInstructionInfoDataSource\";\nimport { type InstructionInfoDataSource } from \"./InstructionInfoDataSource\";\nimport { type CalInstructionInfoResponseDto } from \"./InstructionInfoDto\";\n\ndescribe(\"HttpInstructionInfoDataSource\", () => {\n let datasource: InstructionInfoDataSource;\n let httpMock: { get: ReturnType<typeof vi.fn> };\n const programId = \"11111111111111111111111111111111\";\n const network = \"solana-mainnet\";\n const config: ContextModuleServiceConfig = {\n cal: {\n url: \"https://global.api.prd.ledger.com/cal/v1\",\n mode: \"prod\",\n branch: \"main\",\n },\n } as ContextModuleServiceConfig;\n\n const successResponse: CalInstructionInfoResponseDto = [\n {\n id: programId,\n chain_id: SolanaTransactionScanChainId.MAINNET,\n instructions: [\n {\n discriminator_hex: \"00000000\",\n instruction_name: \"createAccount\",\n descriptor: {\n data: \"00010101\",\n signatures: { prod: \"prodsig\", test: \"testsig\" },\n },\n display_fields: [],\n value_flow_ports: [],\n hide_rules: [],\n account_resets: [],\n },\n ],\n },\n ];\n\n beforeEach(() => {\n vi.clearAllMocks();\n httpMock = { get: vi.fn() };\n datasource = new HttpInstructionInfoDataSource(\n config,\n httpMock as unknown as DmkNetworkClient,\n );\n });\n\n it(\"calls CAL /solana_programs with id, chain_id and output params\", async () => {\n httpMock.get.mockResolvedValue(successResponse);\n\n await datasource.getInstructionInfo({ programId, network });\n\n expect(httpMock.get).toHaveBeenCalledTimes(1);\n expect(httpMock.get).toHaveBeenCalledWith(\n \"https://global.api.prd.ledger.com/cal/v1/solana_programs\",\n {\n params: {\n id: programId,\n chain_id: SolanaTransactionScanChainId.MAINNET,\n output: \"id,chain_id,instructions\",\n ref: \"branch:main\",\n },\n },\n );\n });\n\n it(\"maps devnet/testnet networks to their numeric chain ids\", async () => {\n httpMock.get.mockResolvedValue(successResponse);\n\n await datasource.getInstructionInfo({\n programId,\n network: \"solana-devnet\",\n });\n\n expect(httpMock.get).toHaveBeenCalledWith(\n \"https://global.api.prd.ledger.com/cal/v1/solana_programs\",\n expect.objectContaining({\n params: expect.objectContaining({ chain_id: 901 }),\n }),\n );\n });\n\n it(\"returns Right with each descriptor transformed into the core payload on success\", async () => {\n httpMock.get.mockResolvedValue(successResponse);\n\n const result = await datasource.getInstructionInfo({ programId, network });\n\n expect(result).toEqual(\n Right({\n programId,\n descriptors: {\n \"00000000\": Right({\n programId,\n discriminator: \"00000000\",\n instructionName: \"createAccount\",\n instructionInfo: { data: \"00010101\", signature: \"prodsig\" },\n substructures: [],\n enumVariants: [],\n idlDescriptor: { typePool: [], rootType: 0 },\n mintAssociations: [],\n ownerAssociations: [],\n valueFlowPorts: [],\n accountResets: [],\n displayFields: [],\n hideRules: [],\n }),\n },\n enumVariants: [],\n }),\n );\n });\n\n it(\"keys a descriptor without `discriminator_hex` under the empty string\", async () => {\n // Single-instruction programs (e.g. SPL Memo `addMemo`) genuinely have no\n // discriminator, so CAL omits the field.\n httpMock.get.mockResolvedValue([\n {\n id: programId,\n chain_id: SolanaTransactionScanChainId.MAINNET,\n instructions: [\n {\n instruction_name: \"addMemo\",\n descriptor: {\n data: \"00010101\",\n signatures: { prod: \"prodsig\", test: \"testsig\" },\n },\n },\n ],\n },\n ]);\n\n const result = await datasource.getInstructionInfo({ programId, network });\n\n expect(result.isRight()).toBe(true);\n const { descriptors } = result.unsafeCoerce();\n expect(Object.keys(descriptors)).toEqual([\"\"]);\n expect(descriptors[\"\"]!.unsafeCoerce()).toEqual(\n expect.objectContaining({\n programId,\n discriminator: \"\",\n instructionInfo: { data: \"00010101\", signature: \"prodsig\" },\n }),\n );\n });\n\n it(\"returns Left when the response array is empty\", async () => {\n httpMock.get.mockResolvedValue([]);\n\n const result = await datasource.getInstructionInfo({ programId, network });\n\n expect(result).toEqual(\n Left(\n new Error(\n `[ContextModule] HttpInstructionInfoDataSource: empty response for program ${programId}`,\n ),\n ),\n );\n });\n\n it(\"returns Left when no program object matches the requested programId\", async () => {\n httpMock.get.mockResolvedValue([\n {\n id: \"OtherProgram\",\n chain_id: SolanaTransactionScanChainId.MAINNET,\n instructions: [],\n },\n ]);\n\n const result = await datasource.getInstructionInfo({ programId, network });\n\n expect(result).toEqual(\n Left(\n new Error(\n `[ContextModule] HttpInstructionInfoDataSource: no descriptors for program ${programId}`,\n ),\n ),\n );\n });\n\n it(\"returns Left (not a throw) when an instruction descriptor is malformed\", async () => {\n // `descriptor` missing on the instruction \u2014 would crash the loader if the\n // datasource handed it through unvalidated.\n httpMock.get.mockResolvedValue([\n {\n id: programId,\n chain_id: SolanaTransactionScanChainId.MAINNET,\n instructions: [{ discriminator_hex: \"00000000\" }],\n },\n ]);\n\n const result = await datasource.getInstructionInfo({ programId, network });\n\n expect(result.isLeft()).toBe(true);\n expect((result.extract() as Error).message).toMatch(\n new RegExp(\n String.raw`\\[ContextModule\\] HttpInstructionInfoDataSource: malformed descriptors for program ${programId}:`,\n ),\n );\n });\n\n it(\"returns Left (not a throw) when account_schema.slots is not an array\", async () => {\n // Regression: account_schema was not codec-validated, so a malformed\n // shape (e.g. `slots` as an object instead of an array) bypassed\n // validation here and crashed later in the mapper's `.map()` call instead\n // of degrading gracefully to a per-program error.\n httpMock.get.mockResolvedValue([\n {\n id: programId,\n chain_id: SolanaTransactionScanChainId.MAINNET,\n instructions: [\n {\n discriminator_hex: \"00000000\",\n descriptor: {\n data: \"00010101\",\n signatures: { prod: \"prodsig\", test: \"testsig\" },\n },\n account_schema: { slots: {} },\n },\n ],\n },\n ]);\n\n const result = await datasource.getInstructionInfo({ programId, network });\n\n expect(result.isLeft()).toBe(true);\n expect((result.extract() as Error).message).toMatch(\n new RegExp(\n String.raw`\\[ContextModule\\] HttpInstructionInfoDataSource: malformed descriptors for program ${programId}:`,\n ),\n );\n });\n\n it(\"returns Right with accountSchema mapped through when it is well-formed\", async () => {\n httpMock.get.mockResolvedValue([\n {\n id: programId,\n chain_id: SolanaTransactionScanChainId.MAINNET,\n instructions: [\n {\n discriminator_hex: \"00000000\",\n descriptor: {\n data: \"00010101\",\n signatures: { prod: \"prodsig\", test: \"testsig\" },\n },\n account_schema: {\n count_min: 2,\n count_max: 2,\n slots: [{ signer: \"REQUIRED\", writable: \"EITHER\" }],\n },\n },\n ],\n },\n ]);\n\n const result = await datasource.getInstructionInfo({ programId, network });\n\n expect(result.isRight()).toBe(true);\n const { descriptors } = result.unsafeCoerce();\n expect(descriptors[\"00000000\"]!.unsafeCoerce()).toEqual(\n expect.objectContaining({\n accountSchema: {\n count_min: 2,\n count_max: 2,\n remaining_policy: { signer: \"EITHER\", writable: \"EITHER\" },\n slots: [{ signer: \"REQUIRED\", writable: \"EITHER\" }],\n },\n }),\n );\n });\n\n it(\"returns Left when the HTTP client throws\", async () => {\n httpMock.get.mockRejectedValue(new Error(\"network\"));\n\n const result = await datasource.getInstructionInfo({ programId, network });\n\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpInstructionInfoDataSource: Failed to fetch instruction descriptors: network\",\n ),\n ),\n );\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": ["import_purify_ts", "import_vitest", "import_SolanaTransactionScanChainId", "import_HttpInstructionInfoDataSource", "datasource", "httpMock", "programId", "network", "config", "successResponse", "result", "descriptors"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var a=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var d=(r,e)=>{for(var o in e)a(r,o,{get:e[o],enumerable:!0})},_=(r,e,o,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of l(e))!p.call(r,n)&&n!==o&&a(r,n,{get:()=>e[n],enumerable:!(s=u(e,n))||s.enumerable});return r};var C=r=>_(a({},"__esModule",{value:!0}),r);var b={};d(b,{calInstructionProgramCodec:()=>y});module.exports=C(b);var t=require("purify-ts");const D=t.Codec.interface({prod:(0,t.optional)(t.string),test:(0,t.optional)(t.string)}),c=t.Codec.interface({data:t.string,signatures:D}),g=t.Codec.interface({descriptor:c}),i=t.Codec.interface({descriptor:t.string}),m=t.Codec.interface({discriminator_hex:(0,t.optional)(t.string),descriptor:c,enum_variants:(0,t.optional)((0,t.record)(t.string,(0,t.record)(t.string,g))),display_fields:(0,t.optional)((0,t.array)(i)),value_flow_ports:(0,t.optional)((0,t.array)(i)),hide_rules:(0,t.optional)((0,t.array)(i)),account_resets:(0,t.optional)((0,t.array)(i))}),y=t.Codec.interface({id:t.string,chain_id:t.number,instructions:(0,t.array)(m)});0&&(module.exports={calInstructionProgramCodec});
1
+ "use strict";var i=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var C=(n,e)=>{for(var r in e)i(n,r,{get:e[r],enumerable:!0})},_=(n,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of p(e))!d.call(n,o)&&o!==r&&i(n,o,{get:()=>e[o],enumerable:!(s=u(e,o))||s.enumerable});return n};var D=n=>_(i({},"__esModule",{value:!0}),n);var S={};C(S,{calInstructionProgramCodec:()=>x});module.exports=D(S);var t=require("purify-ts");const g=t.Codec.interface({prod:(0,t.optional)(t.string),test:(0,t.optional)(t.string)}),l=t.Codec.interface({data:t.string,signatures:g}),m=t.Codec.interface({descriptor:l}),a=t.Codec.interface({descriptor:t.string}),c=t.Codec.interface({signer:t.string,writable:t.string}),y=t.Codec.interface({count_min:(0,t.optional)(t.number),count_max:(0,t.optional)(t.number),remaining_policy:(0,t.optional)(c),slots:(0,t.optional)((0,t.array)(c))}),b=t.Codec.interface({discriminator_hex:(0,t.optional)(t.string),descriptor:l,enum_variants:(0,t.optional)((0,t.record)(t.string,(0,t.record)(t.string,m))),display_fields:(0,t.optional)((0,t.array)(a)),value_flow_ports:(0,t.optional)((0,t.array)(a)),hide_rules:(0,t.optional)((0,t.array)(a)),account_resets:(0,t.optional)((0,t.array)(a)),account_schema:(0,t.optional)(y)}),x=t.Codec.interface({id:t.string,chain_id:t.number,instructions:(0,t.array)(b)});0&&(module.exports={calInstructionProgramCodec});
2
2
  //# sourceMappingURL=InstructionInfoDto.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/modules/solana/instruction-info/data/InstructionInfoDto.ts"],
4
- "sourcesContent": ["// DTO + codecs for the CAL instruction-descriptors response (one object per\n// `programId`, wrapped in a JSON array).\n//\n// The hand-written types describe the consumed shape (with genuinely optional\n// `?:` fields); the codecs below validate that shape at runtime so\n// `HttpInstructionInfoDataSource` can hand the loaders a payload they can\n// dereference without runtime-throwing on a malformed descriptor.\n\nimport { array, Codec, number, optional, record, string } from \"purify-ts\";\n\nexport type CalSignatures = {\n prod?: string;\n test?: string;\n};\n\nexport type CalSignedDescriptorDto = {\n data: string;\n signatures: CalSignatures;\n};\n\n// Decoded CAL JSON shapes (snake_case mirrors the CAL response) that drive\n// host-side requirement building.\n\nexport type CalValueDto = {\n source: string;\n account_index?: number;\n data?: string;\n path?: { steps: number[] };\n};\n\nexport type CalTokenValueDto = {\n kind: string;\n value?: CalValueDto;\n account_index?: number;\n};\n\nexport type CalMintAssociationDto = {\n account_index: number;\n mint_index: number;\n};\n\nexport type CalTypePoolEntryDto = {\n index: number;\n kind: string;\n refs?: number[];\n size?: number;\n encoding?: number;\n len_kind?: string;\n flag_kind?: string;\n sentinel?: string;\n disc_kind?: string;\n total_variants?: number;\n enum_id?: string;\n};\n\nexport type CalEnumVariantDto = {\n variant_name: string;\n payload_kind?: string;\n descriptor: CalSignedDescriptorDto;\n};\n\n/** A substructure CAL serves only as opaque TLV (e.g. HIDE_RULE). */\nexport type CalSubstructureDto = {\n descriptor: string;\n};\n\nexport type CalValueFlowPortDto = CalSubstructureDto & {\n account_indices: number[];\n optional_account_strategy?: string;\n token_value: CalTokenValueDto;\n};\n\nexport type CalAccountResetDto = CalSubstructureDto & {\n account_index?: number;\n require_pre_balance_zero?: boolean;\n};\n\nexport type CalDisplayFieldDto = CalSubstructureDto & {\n name?: string;\n param?: { type: string; value?: CalValueDto; token?: CalValueDto };\n};\n\nexport type CalInstructionDescriptorDto = {\n discriminator_hex?: string;\n instruction_name?: string;\n descriptor: CalSignedDescriptorDto;\n idl_descriptor?: {\n type_pool?: CalTypePoolEntryDto[];\n root_type?: number;\n };\n mint_association?: CalMintAssociationDto;\n owner_association?: unknown;\n enum_variants?: Record<string, Record<string, CalEnumVariantDto>>;\n display_fields?: CalDisplayFieldDto[];\n value_flow_ports?: CalValueFlowPortDto[];\n hide_rules?: CalSubstructureDto[];\n account_resets?: CalAccountResetDto[];\n};\n\n// One program object of the `solana_programs` response: the program `id`, its\n// `chain_id`, and the flat `instructions` array (keyed downstream by\n// `discriminator_hex`).\nexport type CalInstructionProgramDto = {\n id: string;\n chain_id: number;\n instructions: CalInstructionDescriptorDto[];\n};\n\n// Outer shape: array of program objects (one per requested `id`).\nexport type CalInstructionInfoResponseDto = CalInstructionProgramDto[];\n\n// --- Validation codecs (runtime). Validate only the fields the loaders read;\n// `Codec.interface` ignores unknown extras so CAL can add fields freely. ---\n\nconst calSignaturesCodec = Codec.interface({\n prod: optional(string),\n test: optional(string),\n});\n\nconst calSignedDescriptorCodec = Codec.interface({\n data: string,\n signatures: calSignaturesCodec,\n});\n\nconst calEnumVariantCodec = Codec.interface({\n descriptor: calSignedDescriptorCodec,\n});\n\nconst calSubstructureCodec = Codec.interface({\n descriptor: string,\n});\n\nconst calInstructionDescriptorCodec = Codec.interface({\n discriminator_hex: optional(string),\n descriptor: calSignedDescriptorCodec,\n enum_variants: optional(record(string, record(string, calEnumVariantCodec))),\n display_fields: optional(array(calSubstructureCodec)),\n value_flow_ports: optional(array(calSubstructureCodec)),\n hide_rules: optional(array(calSubstructureCodec)),\n account_resets: optional(array(calSubstructureCodec)),\n});\n\n/**\n * Codec for one program object of the `solana_programs` response. Used by the\n * datasource to validate the CAL payload before handing it to the loaders.\n * Only loader-consumed fields are validated; unrelated CAL fields\n * (`idl_descriptor`, `mint_association`, \u2026) are ignored.\n */\nexport const calInstructionProgramCodec = Codec.interface({\n id: string,\n chain_id: number,\n instructions: array(calInstructionDescriptorCodec),\n});\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gCAAAE,IAAA,eAAAC,EAAAH,GAQA,IAAAI,EAA+D,qBA0G/D,MAAMC,EAAqB,QAAM,UAAU,CACzC,QAAM,YAAS,QAAM,EACrB,QAAM,YAAS,QAAM,CACvB,CAAC,EAEKC,EAA2B,QAAM,UAAU,CAC/C,KAAM,SACN,WAAYD,CACd,CAAC,EAEKE,EAAsB,QAAM,UAAU,CAC1C,WAAYD,CACd,CAAC,EAEKE,EAAuB,QAAM,UAAU,CAC3C,WAAY,QACd,CAAC,EAEKC,EAAgC,QAAM,UAAU,CACpD,qBAAmB,YAAS,QAAM,EAClC,WAAYH,EACZ,iBAAe,eAAS,UAAO,YAAQ,UAAO,SAAQC,CAAmB,CAAC,CAAC,EAC3E,kBAAgB,eAAS,SAAMC,CAAoB,CAAC,EACpD,oBAAkB,eAAS,SAAMA,CAAoB,CAAC,EACtD,cAAY,eAAS,SAAMA,CAAoB,CAAC,EAChD,kBAAgB,eAAS,SAAMA,CAAoB,CAAC,CACtD,CAAC,EAQYN,EAA6B,QAAM,UAAU,CACxD,GAAI,SACJ,SAAU,SACV,gBAAc,SAAMO,CAA6B,CACnD,CAAC",
6
- "names": ["InstructionInfoDto_exports", "__export", "calInstructionProgramCodec", "__toCommonJS", "import_purify_ts", "calSignaturesCodec", "calSignedDescriptorCodec", "calEnumVariantCodec", "calSubstructureCodec", "calInstructionDescriptorCodec"]
4
+ "sourcesContent": ["// DTO + codecs for the CAL instruction-descriptors response (one object per\n// `programId`, wrapped in a JSON array).\n//\n// The hand-written types describe the consumed shape (with genuinely optional\n// `?:` fields); the codecs below validate that shape at runtime so\n// `HttpInstructionInfoDataSource` can hand the loaders a payload they can\n// dereference without runtime-throwing on a malformed descriptor.\n\nimport { array, Codec, number, optional, record, string } from \"purify-ts\";\n\nexport type CalSignatures = {\n prod?: string;\n test?: string;\n};\n\nexport type CalSignedDescriptorDto = {\n data: string;\n signatures: CalSignatures;\n};\n\n// Decoded CAL JSON shapes (snake_case mirrors the CAL response) that drive\n// host-side requirement building.\n\nexport type CalValueDto = {\n source: string;\n account_index?: number;\n data?: string;\n path?: { steps: number[] };\n};\n\nexport type CalTokenValueDto = {\n kind: string;\n value?: CalValueDto;\n account_index?: number;\n /** `RESOLVE` only: account index whose address is the mint of last resort. */\n fallback_account?: number;\n};\n\nexport type CalMintAssociationDto = {\n account_index: number;\n mint_index: number;\n};\n\n// Neither half is codec-validated, and the spec requires both or neither, so\n// both are optional here and the mapper drops a half-declared pair.\nexport type CalOwnerAssociationDto = {\n account_index?: number;\n owner?: CalValueDto;\n};\n\n/** One `ACTIVE_WHEN` predicate: a bare name, or `MINT_PREDICATE` + its mint. */\nexport type CalActiveWhenPredicateDto =\n | string\n | { kind: string; mint?: string };\n\nexport type CalTypePoolEntryDto = {\n index: number;\n kind: string;\n refs?: number[];\n size?: number;\n encoding?: number;\n len_kind?: string;\n flag_kind?: string;\n sentinel?: string;\n disc_kind?: string;\n total_variants?: number;\n enum_id?: string;\n};\n\nexport type CalEnumVariantDto = {\n variant_name: string;\n payload_kind?: string;\n descriptor: CalSignedDescriptorDto;\n};\n\n/** A substructure CAL serves only as opaque TLV (e.g. HIDE_RULE). */\nexport type CalSubstructureDto = {\n descriptor: string;\n};\n\nexport type CalValueFlowPortDto = CalSubstructureDto & {\n account_indices: number[];\n optional_account_strategy?: string;\n token_value: CalTokenValueDto;\n active_when?: CalActiveWhenPredicateDto[];\n};\n\nexport type CalHideRuleDto = CalSubstructureDto & {\n rule_set_index?: number;\n target?: CalValueDto;\n condition?: string;\n};\n\nexport type CalAccountResetDto = CalSubstructureDto & {\n account_index?: number;\n require_pre_balance_zero?: boolean;\n value_kind?: string;\n token?: CalTokenValueDto;\n require_native_pre_balance_zero?: boolean;\n};\n\nexport type CalSlotConstraintDto = {\n signer: string;\n writable: string;\n};\n\nexport type CalAccountSchemaDto = {\n count_min?: number;\n count_max?: number;\n remaining_policy?: CalSlotConstraintDto;\n slots?: CalSlotConstraintDto[];\n};\n\nexport type CalDisplayFieldDto = CalSubstructureDto & {\n name?: string;\n param?: { type: string; value?: CalValueDto; token?: CalValueDto };\n};\n\nexport type CalInstructionDescriptorDto = {\n discriminator_hex?: string;\n instruction_name?: string;\n descriptor: CalSignedDescriptorDto;\n idl_descriptor?: {\n type_pool?: CalTypePoolEntryDto[];\n root_type?: number;\n };\n mint_association?: CalMintAssociationDto;\n owner_association?: CalOwnerAssociationDto;\n enum_variants?: Record<string, Record<string, CalEnumVariantDto>>;\n display_fields?: CalDisplayFieldDto[];\n value_flow_ports?: CalValueFlowPortDto[];\n hide_rules?: CalHideRuleDto[];\n account_resets?: CalAccountResetDto[];\n /** Absent means \"no ACCOUNT_SCHEMA check\". */\n account_schema?: CalAccountSchemaDto;\n};\n\n// One program object of the `solana_programs` response: the program `id`, its\n// `chain_id`, and the flat `instructions` array (keyed downstream by\n// `discriminator_hex`).\nexport type CalInstructionProgramDto = {\n id: string;\n chain_id: number;\n instructions: CalInstructionDescriptorDto[];\n};\n\n// Outer shape: array of program objects (one per requested `id`).\nexport type CalInstructionInfoResponseDto = CalInstructionProgramDto[];\n\n// --- Validation codecs (runtime). Validate only the fields the loaders read;\n// `Codec.interface` ignores unknown extras so CAL can add fields freely. ---\n\nconst calSignaturesCodec = Codec.interface({\n prod: optional(string),\n test: optional(string),\n});\n\nconst calSignedDescriptorCodec = Codec.interface({\n data: string,\n signatures: calSignaturesCodec,\n});\n\nconst calEnumVariantCodec = Codec.interface({\n descriptor: calSignedDescriptorCodec,\n});\n\nconst calSubstructureCodec = Codec.interface({\n descriptor: string,\n});\n\nconst calSlotConstraintCodec = Codec.interface({\n signer: string,\n writable: string,\n});\n\nconst calAccountSchemaCodec = Codec.interface({\n count_min: optional(number),\n count_max: optional(number),\n remaining_policy: optional(calSlotConstraintCodec),\n slots: optional(array(calSlotConstraintCodec)),\n});\n\nconst calInstructionDescriptorCodec = Codec.interface({\n discriminator_hex: optional(string),\n descriptor: calSignedDescriptorCodec,\n enum_variants: optional(record(string, record(string, calEnumVariantCodec))),\n display_fields: optional(array(calSubstructureCodec)),\n value_flow_ports: optional(array(calSubstructureCodec)),\n hide_rules: optional(array(calSubstructureCodec)),\n account_resets: optional(array(calSubstructureCodec)),\n account_schema: optional(calAccountSchemaCodec),\n});\n\n/**\n * Codec for one program object of the `solana_programs` response. Used by the\n * datasource to validate the CAL payload before handing it to the loaders.\n * Only loader-consumed fields are validated; unrelated CAL fields\n * (`idl_descriptor`, `mint_association`, \u2026) are ignored.\n */\nexport const calInstructionProgramCodec = Codec.interface({\n id: string,\n chain_id: number,\n instructions: array(calInstructionDescriptorCodec),\n});\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gCAAAE,IAAA,eAAAC,EAAAH,GAQA,IAAAI,EAA+D,qBAgJ/D,MAAMC,EAAqB,QAAM,UAAU,CACzC,QAAM,YAAS,QAAM,EACrB,QAAM,YAAS,QAAM,CACvB,CAAC,EAEKC,EAA2B,QAAM,UAAU,CAC/C,KAAM,SACN,WAAYD,CACd,CAAC,EAEKE,EAAsB,QAAM,UAAU,CAC1C,WAAYD,CACd,CAAC,EAEKE,EAAuB,QAAM,UAAU,CAC3C,WAAY,QACd,CAAC,EAEKC,EAAyB,QAAM,UAAU,CAC7C,OAAQ,SACR,SAAU,QACZ,CAAC,EAEKC,EAAwB,QAAM,UAAU,CAC5C,aAAW,YAAS,QAAM,EAC1B,aAAW,YAAS,QAAM,EAC1B,oBAAkB,YAASD,CAAsB,EACjD,SAAO,eAAS,SAAMA,CAAsB,CAAC,CAC/C,CAAC,EAEKE,EAAgC,QAAM,UAAU,CACpD,qBAAmB,YAAS,QAAM,EAClC,WAAYL,EACZ,iBAAe,eAAS,UAAO,YAAQ,UAAO,SAAQC,CAAmB,CAAC,CAAC,EAC3E,kBAAgB,eAAS,SAAMC,CAAoB,CAAC,EACpD,oBAAkB,eAAS,SAAMA,CAAoB,CAAC,EACtD,cAAY,eAAS,SAAMA,CAAoB,CAAC,EAChD,kBAAgB,eAAS,SAAMA,CAAoB,CAAC,EACpD,kBAAgB,YAASE,CAAqB,CAChD,CAAC,EAQYR,EAA6B,QAAM,UAAU,CACxD,GAAI,SACJ,SAAU,SACV,gBAAc,SAAMS,CAA6B,CACnD,CAAC",
6
+ "names": ["InstructionInfoDto_exports", "__export", "calInstructionProgramCodec", "__toCommonJS", "import_purify_ts", "calSignaturesCodec", "calSignedDescriptorCodec", "calEnumVariantCodec", "calSubstructureCodec", "calSlotConstraintCodec", "calAccountSchemaCodec", "calInstructionDescriptorCodec"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var s=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var S=(n,t)=>{for(var a in t)s(n,a,{get:t[a],enumerable:!0})},g=(n,t,a,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of D(t))!I.call(n,o)&&o!==a&&s(n,o,{get:()=>t[o],enumerable:!(r=C(t,o))||r.enumerable});return n};var E=n=>g(s({},"__esModule",{value:!0}),n);var P={};S(P,{toAccountResets:()=>_,toDisplayFields:()=>f,toInstructionInfoPayload:()=>x,toProgramEnumVariants:()=>V,toValueFlowPorts:()=>d});module.exports=E(P);var i=require("purify-ts"),e=require("../../../../modules/solana/model/SolanaPayloads"),l=require("../../../../shared/utils/uIntCodec");function p(n,t){return n[t]}function d(n=[]){return n.map(t=>({account_indices:t.account_indices,optional_account_strategy:t.optional_account_strategy,token_value:t.token_value}))}function _(n=[]){return n.flatMap(t=>t.account_index===void 0?[]:[{account_index:t.account_index,require_pre_balance_zero:t.require_pre_balance_zero}])}function f(n=[]){return n.map(t=>({name:t.name,param:t.param??{type:""}}))}function F(n){return[...(n.display_fields??[]).map(t=>({kind:e.SolanaInstructionSubstructureKind.DISPLAY_FIELD,data:t.descriptor})),...(n.value_flow_ports??[]).map(t=>({kind:e.SolanaInstructionSubstructureKind.VALUE_FLOW_PORT,data:t.descriptor})),...(n.hide_rules??[]).map(t=>({kind:e.SolanaInstructionSubstructureKind.HIDE_RULE,data:t.descriptor})),...(n.account_resets??[]).map(t=>({kind:e.SolanaInstructionSubstructureKind.ACCOUNT_RESET,data:t.descriptor}))]}function m(n,t){const a=[];for(const[r,o]of Object.entries(n.enum_variants??{}))for(const[y,u]of Object.entries(o)){const c=Number(y);l.u16Codec.decode(c).isLeft()||a.push({enumId:r,variantIndex:c,descriptor:{data:u.descriptor.data,signature:p(u.descriptor.signatures,t)??""}})}return a}function V(n,t){return Object.values(n).flatMap(a=>m(a,t))}function x(n,t,a,r){const o=p(a.descriptor.signatures,r);return o?(0,i.Right)({programId:n,discriminator:t,instructionName:a.instruction_name,instructionInfo:{data:a.descriptor.data,signature:o},substructures:F(a),enumVariants:m(a,r),idlDescriptor:{typePool:a.idl_descriptor?.type_pool??[],rootType:a.idl_descriptor?.root_type??0},mintAssociations:a.mint_association?[a.mint_association]:[],valueFlowPorts:d(a.value_flow_ports),accountResets:_(a.account_resets),displayFields:f(a.display_fields)}):(0,i.Left)(new Error(`[ContextModule] InstructionInfoDataSource: missing '${r}' signature for (${n}, ${t})`))}0&&(module.exports={toAccountResets,toDisplayFields,toInstructionInfoPayload,toProgramEnumVariants,toValueFlowPorts});
1
+ "use strict";var s=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var R=Object.prototype.hasOwnProperty;var x=(n,t)=>{for(var a in t)s(n,a,{get:t[a],enumerable:!0})},A=(n,t,a,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of g(t))!R.call(n,e)&&e!==a&&s(n,e,{get:()=>t[e],enumerable:!(o=w(t,e))||o.enumerable});return n};var b=n=>A(s({},"__esModule",{value:!0}),n);var F={};x(F,{toAccountResets:()=>S,toAccountSchema:()=>y,toDisplayFields:()=>D,toHideRules:()=>f,toInstructionInfoPayload:()=>V,toOwnerAssociations:()=>m,toProgramEnumVariants:()=>v,toValueFlowPorts:()=>C});module.exports=b(F);var r=require("purify-ts"),i=require("../../../../modules/solana/model/SolanaPayloads"),_=require("../../../../shared/utils/uIntCodec");function d(n,t){return n[t]}function C(n=[]){return n.map(t=>({account_indices:t.account_indices,optional_account_strategy:t.optional_account_strategy,token_value:t.token_value,active_when:t.active_when}))}function S(n=[]){return n.flatMap(t=>t.account_index===void 0?[]:[{account_index:t.account_index,require_pre_balance_zero:t.require_pre_balance_zero,value_kind:t.value_kind,token:t.token,require_native_pre_balance_zero:t.require_native_pre_balance_zero}])}function f(n=[]){return n.map(t=>({rule_set_index:t.rule_set_index,target:t.target,condition:t.condition}))}function m(n){return n===void 0?[]:n.account_index===void 0||n.owner===void 0?[]:[{account_index:n.account_index,owner:n.owner}]}const l=new Set(["FORBIDDEN","EITHER","REQUIRED"]);function p(n){const t=l.has(n.signer)?n.signer:"EITHER",a=l.has(n.writable)?n.writable:"EITHER";return{signer:t,writable:a}}function y(n){if(n!==void 0)return{count_min:n.count_min??0,count_max:n.count_max??255,remaining_policy:n.remaining_policy?p(n.remaining_policy):{signer:"EITHER",writable:"EITHER"},slots:(n.slots??[]).map(p)}}function D(n=[]){return n.map(t=>({name:t.name,param:t.param??{type:""}}))}function h(n){return[...(n.display_fields??[]).map(t=>({kind:i.SolanaInstructionSubstructureKind.DISPLAY_FIELD,data:t.descriptor})),...(n.value_flow_ports??[]).map(t=>({kind:i.SolanaInstructionSubstructureKind.VALUE_FLOW_PORT,data:t.descriptor})),...(n.hide_rules??[]).map(t=>({kind:i.SolanaInstructionSubstructureKind.HIDE_RULE,data:t.descriptor})),...(n.account_resets??[]).map(t=>({kind:i.SolanaInstructionSubstructureKind.ACCOUNT_RESET,data:t.descriptor}))]}function I(n,t){const a=[];for(const[o,e]of Object.entries(n.enum_variants??{}))for(const[E,c]of Object.entries(e)){const u=Number(E);_.u16Codec.decode(u).isLeft()||a.push({enumId:o,variantIndex:u,descriptor:{data:c.descriptor.data,signature:d(c.descriptor.signatures,t)??""}})}return a}function v(n,t){return Object.values(n).flatMap(a=>I(a,t))}function V(n,t,a,o){const e=d(a.descriptor.signatures,o);return e?(0,r.Right)({programId:n,discriminator:t,instructionName:a.instruction_name,instructionInfo:{data:a.descriptor.data,signature:e},substructures:h(a),enumVariants:I(a,o),idlDescriptor:{typePool:a.idl_descriptor?.type_pool??[],rootType:a.idl_descriptor?.root_type??0},mintAssociations:a.mint_association?[a.mint_association]:[],ownerAssociations:m(a.owner_association),valueFlowPorts:C(a.value_flow_ports),accountResets:S(a.account_resets),displayFields:D(a.display_fields),hideRules:f(a.hide_rules),accountSchema:y(a.account_schema)}):(0,r.Left)(new Error(`[ContextModule] InstructionInfoDataSource: missing '${o}' signature for (${n}, ${t})`))}0&&(module.exports={toAccountResets,toAccountSchema,toDisplayFields,toHideRules,toInstructionInfoPayload,toOwnerAssociations,toProgramEnumVariants,toValueFlowPorts});
2
2
  //# sourceMappingURL=InstructionInfoMapper.js.map