@ledgerhq/device-signer-kit-ethereum 0.0.0-signer-eth-plugin-fix-20250331141239 → 0.0.0-transaction-unfunded-20250917151052

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 (470) hide show
  1. package/README.md +53 -0
  2. package/lib/cjs/api/SignerEth.js +1 -1
  3. package/lib/cjs/api/SignerEth.js.map +1 -1
  4. package/lib/cjs/api/SignerEthBuilder.js +1 -1
  5. package/lib/cjs/api/SignerEthBuilder.js.map +3 -3
  6. package/lib/cjs/api/SignerEthBuilder.test.js +1 -1
  7. package/lib/cjs/api/SignerEthBuilder.test.js.map +3 -3
  8. package/lib/cjs/api/app-binder/SignDelegationAuthorizationTypes.js +2 -0
  9. package/lib/cjs/api/app-binder/SignDelegationAuthorizationTypes.js.map +7 -0
  10. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
  11. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
  12. package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
  13. package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js.map +2 -2
  14. package/lib/cjs/api/index.js +1 -1
  15. package/lib/cjs/api/index.js.map +3 -3
  16. package/lib/cjs/api/model/AddressOptions.js +1 -1
  17. package/lib/cjs/api/model/AddressOptions.js.map +1 -1
  18. package/lib/cjs/api/model/ClearSigningType.js +2 -0
  19. package/lib/cjs/api/model/ClearSigningType.js.map +7 -0
  20. package/lib/cjs/api/model/MessageOptions.js +2 -0
  21. package/lib/cjs/api/model/MessageOptions.js.map +7 -0
  22. package/lib/cjs/api/model/TransactionOptions.js +1 -1
  23. package/lib/cjs/api/model/TransactionOptions.js.map +1 -1
  24. package/lib/cjs/api/model/TypedDataOptions.js +2 -0
  25. package/lib/cjs/api/model/TypedDataOptions.js.map +7 -0
  26. package/lib/cjs/internal/DefaultSignerEth.js +1 -1
  27. package/lib/cjs/internal/DefaultSignerEth.js.map +3 -3
  28. package/lib/cjs/internal/DefaultSignerEth.test.js +1 -1
  29. package/lib/cjs/internal/DefaultSignerEth.test.js.map +3 -3
  30. package/lib/cjs/internal/address/di/addressModule.js +1 -1
  31. package/lib/cjs/internal/address/di/addressModule.js.map +3 -3
  32. package/lib/cjs/internal/address/di/addressModule.test.js +1 -1
  33. package/lib/cjs/internal/address/di/addressModule.test.js.map +2 -2
  34. package/lib/cjs/internal/address/use-case/GetAddressUseCase.js +1 -1
  35. package/lib/cjs/internal/address/use-case/GetAddressUseCase.js.map +2 -2
  36. package/lib/cjs/internal/address/use-case/GetAddressUseCase.test.js +1 -1
  37. package/lib/cjs/internal/address/use-case/GetAddressUseCase.test.js.map +2 -2
  38. package/lib/cjs/internal/app-binder/EthAppBinder.js +1 -1
  39. package/lib/cjs/internal/app-binder/EthAppBinder.js.map +3 -3
  40. package/lib/cjs/internal/app-binder/EthAppBinder.test.js +1 -1
  41. package/lib/cjs/internal/app-binder/EthAppBinder.test.js.map +3 -3
  42. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.js +2 -0
  43. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.js.map +7 -0
  44. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js +2 -0
  45. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js.map +7 -0
  46. package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.js +2 -0
  47. package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.js.map +7 -0
  48. package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.test.js +2 -0
  49. package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.test.js.map +7 -0
  50. package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.js +2 -0
  51. package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.js.map +7 -0
  52. package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js +2 -0
  53. package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js.map +7 -0
  54. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
  55. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
  56. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  57. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
  58. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
  59. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
  60. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
  61. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +2 -2
  62. package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
  63. package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  64. package/lib/cjs/internal/app-binder/di/appBinderModule.js +1 -1
  65. package/lib/cjs/internal/app-binder/di/appBinderModule.js.map +3 -3
  66. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
  67. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
  68. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
  69. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +2 -2
  70. package/lib/cjs/internal/app-binder/task/BuildSubContextTask.js +2 -0
  71. package/lib/cjs/internal/app-binder/task/BuildSubContextTask.js.map +7 -0
  72. package/lib/cjs/internal/app-binder/task/BuildSubContextTask.test.js +2 -0
  73. package/lib/cjs/internal/app-binder/task/BuildSubContextTask.test.js.map +7 -0
  74. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js +1 -1
  75. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js.map +3 -3
  76. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js +1 -1
  77. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js.map +3 -3
  78. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js +1 -1
  79. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js.map +3 -3
  80. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js +1 -1
  81. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js.map +3 -3
  82. package/lib/cjs/internal/app-binder/task/PreBuildContextTask.js +2 -0
  83. package/lib/cjs/internal/app-binder/task/PreBuildContextTask.js.map +7 -0
  84. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.js.map +2 -2
  85. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
  86. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +2 -2
  87. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js +1 -1
  88. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js.map +3 -3
  89. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js +1 -1
  90. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +3 -3
  91. package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.js +1 -1
  92. package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.js.map +3 -3
  93. package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.test.js +1 -1
  94. package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.test.js.map +3 -3
  95. package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.js +2 -0
  96. package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.js.map +7 -0
  97. package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js +2 -0
  98. package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js.map +7 -0
  99. package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.js +1 -1
  100. package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.js.map +3 -3
  101. package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.test.js +1 -1
  102. package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.test.js.map +3 -3
  103. package/lib/cjs/internal/app-binder/task/SignTypedDataLegacyTask.js +2 -0
  104. package/lib/cjs/internal/app-binder/task/SignTypedDataLegacyTask.js.map +7 -0
  105. package/lib/cjs/internal/app-binder/task/SignTypedDataLegacyTask.test.js +2 -0
  106. package/lib/cjs/internal/app-binder/task/SignTypedDataLegacyTask.test.js.map +7 -0
  107. package/lib/cjs/internal/di.js +1 -1
  108. package/lib/cjs/internal/di.js.map +3 -3
  109. package/lib/cjs/internal/eip7702/di/eip7702Module.js +2 -0
  110. package/lib/cjs/internal/eip7702/di/eip7702Module.js.map +7 -0
  111. package/lib/cjs/internal/eip7702/di/eip7702Module.test.js +2 -0
  112. package/lib/cjs/internal/eip7702/di/eip7702Module.test.js.map +7 -0
  113. package/lib/cjs/internal/eip7702/di/eip7702Types.js +2 -0
  114. package/lib/cjs/internal/eip7702/di/eip7702Types.js.map +7 -0
  115. package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js +2 -0
  116. package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js.map +7 -0
  117. package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js +2 -0
  118. package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js.map +7 -0
  119. package/lib/cjs/internal/message/di/messageModule.js +1 -1
  120. package/lib/cjs/internal/message/di/messageModule.js.map +3 -3
  121. package/lib/cjs/internal/message/di/messageModule.test.js +1 -1
  122. package/lib/cjs/internal/message/di/messageModule.test.js.map +2 -2
  123. package/lib/cjs/internal/message/use-case/SignMessageUseCase.js +1 -1
  124. package/lib/cjs/internal/message/use-case/SignMessageUseCase.js.map +3 -3
  125. package/lib/cjs/internal/message/use-case/SignMessageUseCase.test.js +1 -1
  126. package/lib/cjs/internal/message/use-case/SignMessageUseCase.test.js.map +2 -2
  127. package/lib/cjs/internal/shared/utils/ApplicationChecker.js +1 -1
  128. package/lib/cjs/internal/shared/utils/ApplicationChecker.js.map +3 -3
  129. package/lib/cjs/internal/shared/utils/ApplicationChecker.test.js +1 -1
  130. package/lib/cjs/internal/shared/utils/ApplicationChecker.test.js.map +2 -2
  131. package/lib/cjs/internal/transaction/di/transactionModule.js +1 -1
  132. package/lib/cjs/internal/transaction/di/transactionModule.js.map +3 -3
  133. package/lib/cjs/internal/transaction/di/transactionModule.test.js +1 -1
  134. package/lib/cjs/internal/transaction/di/transactionModule.test.js.map +2 -2
  135. package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.js +2 -0
  136. package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.js.map +7 -0
  137. package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.test.js +2 -0
  138. package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.test.js.map +7 -0
  139. package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.js +1 -1
  140. package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.js.map +3 -3
  141. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.js +1 -1
  142. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.js.map +3 -3
  143. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
  144. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js.map +3 -3
  145. package/lib/cjs/internal/typed-data/di/typedDataModule.js +1 -1
  146. package/lib/cjs/internal/typed-data/di/typedDataModule.js.map +3 -3
  147. package/lib/cjs/internal/typed-data/di/typedDataModule.test.js +1 -1
  148. package/lib/cjs/internal/typed-data/di/typedDataModule.test.js.map +2 -2
  149. package/lib/cjs/internal/typed-data/service/DefaultTypedDataParserService.js +1 -1
  150. package/lib/cjs/internal/typed-data/service/DefaultTypedDataParserService.js.map +2 -2
  151. package/lib/cjs/internal/typed-data/service/TypedDataParser.js +1 -1
  152. package/lib/cjs/internal/typed-data/service/TypedDataParser.js.map +3 -3
  153. package/lib/cjs/internal/typed-data/service/TypedDataParser.test.js +1 -1
  154. package/lib/cjs/internal/typed-data/service/TypedDataParser.test.js.map +2 -2
  155. package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.js +1 -1
  156. package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.js.map +3 -3
  157. package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.test.js +1 -1
  158. package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.test.js.map +2 -2
  159. package/lib/cjs/package.json +13 -14
  160. package/lib/esm/api/SignerEthBuilder.js +1 -1
  161. package/lib/esm/api/SignerEthBuilder.js.map +3 -3
  162. package/lib/esm/api/SignerEthBuilder.test.js +1 -1
  163. package/lib/esm/api/SignerEthBuilder.test.js.map +3 -3
  164. package/lib/esm/api/app-binder/SignDelegationAuthorizationTypes.js +1 -0
  165. package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
  166. package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
  167. package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
  168. package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js.map +2 -2
  169. package/lib/esm/api/index.js +1 -1
  170. package/lib/esm/api/index.js.map +2 -2
  171. package/lib/esm/api/model/ClearSigningType.js +2 -0
  172. package/lib/esm/api/model/ClearSigningType.js.map +7 -0
  173. package/lib/esm/api/model/MessageOptions.js +1 -0
  174. package/lib/esm/api/model/MessageOptions.js.map +7 -0
  175. package/lib/esm/api/model/TypedDataOptions.js +1 -0
  176. package/lib/esm/api/model/TypedDataOptions.js.map +7 -0
  177. package/lib/esm/internal/DefaultSignerEth.js +1 -1
  178. package/lib/esm/internal/DefaultSignerEth.js.map +3 -3
  179. package/lib/esm/internal/DefaultSignerEth.test.js +1 -1
  180. package/lib/esm/internal/DefaultSignerEth.test.js.map +3 -3
  181. package/lib/esm/internal/address/di/addressModule.js +1 -1
  182. package/lib/esm/internal/address/di/addressModule.js.map +3 -3
  183. package/lib/esm/internal/address/di/addressModule.test.js +1 -1
  184. package/lib/esm/internal/address/di/addressModule.test.js.map +2 -2
  185. package/lib/esm/internal/address/use-case/GetAddressUseCase.js +1 -1
  186. package/lib/esm/internal/address/use-case/GetAddressUseCase.js.map +2 -2
  187. package/lib/esm/internal/address/use-case/GetAddressUseCase.test.js +1 -1
  188. package/lib/esm/internal/address/use-case/GetAddressUseCase.test.js.map +2 -2
  189. package/lib/esm/internal/app-binder/EthAppBinder.js +1 -1
  190. package/lib/esm/internal/app-binder/EthAppBinder.js.map +3 -3
  191. package/lib/esm/internal/app-binder/EthAppBinder.test.js +1 -1
  192. package/lib/esm/internal/app-binder/EthAppBinder.test.js.map +3 -3
  193. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.js +2 -0
  194. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.js.map +7 -0
  195. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js +2 -0
  196. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js.map +7 -0
  197. package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.js +2 -0
  198. package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.js.map +7 -0
  199. package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.test.js +2 -0
  200. package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.test.js.map +7 -0
  201. package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.js +2 -0
  202. package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.js.map +7 -0
  203. package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js +2 -0
  204. package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js.map +7 -0
  205. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
  206. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
  207. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  208. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
  209. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
  210. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
  211. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
  212. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +2 -2
  213. package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
  214. package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  215. package/lib/esm/internal/app-binder/di/appBinderModule.js +1 -1
  216. package/lib/esm/internal/app-binder/di/appBinderModule.js.map +3 -3
  217. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
  218. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
  219. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
  220. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +2 -2
  221. package/lib/esm/internal/app-binder/task/BuildSubContextTask.js +2 -0
  222. package/lib/esm/internal/app-binder/task/BuildSubContextTask.js.map +7 -0
  223. package/lib/esm/internal/app-binder/task/BuildSubContextTask.test.js +2 -0
  224. package/lib/esm/internal/app-binder/task/BuildSubContextTask.test.js.map +7 -0
  225. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js +1 -1
  226. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js.map +3 -3
  227. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js +1 -1
  228. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js.map +3 -3
  229. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js +1 -1
  230. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js.map +3 -3
  231. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js +1 -1
  232. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js.map +3 -3
  233. package/lib/esm/internal/app-binder/task/PreBuildContextTask.js +2 -0
  234. package/lib/esm/internal/app-binder/task/PreBuildContextTask.js.map +7 -0
  235. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.js.map +2 -2
  236. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
  237. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +2 -2
  238. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js +1 -1
  239. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js.map +3 -3
  240. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js +1 -1
  241. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +3 -3
  242. package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.js +1 -1
  243. package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.js.map +3 -3
  244. package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.test.js +1 -1
  245. package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.test.js.map +3 -3
  246. package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.js +2 -0
  247. package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.js.map +7 -0
  248. package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js +2 -0
  249. package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js.map +7 -0
  250. package/lib/esm/internal/app-binder/task/SendSignTransactionTask.js +1 -1
  251. package/lib/esm/internal/app-binder/task/SendSignTransactionTask.js.map +3 -3
  252. package/lib/esm/internal/app-binder/task/SendSignTransactionTask.test.js +1 -1
  253. package/lib/esm/internal/app-binder/task/SendSignTransactionTask.test.js.map +3 -3
  254. package/lib/esm/internal/app-binder/task/SignTypedDataLegacyTask.js +2 -0
  255. package/lib/esm/internal/app-binder/task/SignTypedDataLegacyTask.js.map +7 -0
  256. package/lib/esm/internal/app-binder/task/SignTypedDataLegacyTask.test.js +2 -0
  257. package/lib/esm/internal/app-binder/task/SignTypedDataLegacyTask.test.js.map +7 -0
  258. package/lib/esm/internal/di.js +1 -1
  259. package/lib/esm/internal/di.js.map +3 -3
  260. package/lib/esm/internal/eip7702/di/eip7702Module.js +2 -0
  261. package/lib/esm/internal/eip7702/di/eip7702Module.js.map +7 -0
  262. package/lib/esm/internal/eip7702/di/eip7702Module.test.js +2 -0
  263. package/lib/esm/internal/eip7702/di/eip7702Module.test.js.map +7 -0
  264. package/lib/esm/internal/eip7702/di/eip7702Types.js +2 -0
  265. package/lib/esm/internal/eip7702/di/eip7702Types.js.map +7 -0
  266. package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js +2 -0
  267. package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js.map +7 -0
  268. package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js +2 -0
  269. package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js.map +7 -0
  270. package/lib/esm/internal/message/di/messageModule.js +1 -1
  271. package/lib/esm/internal/message/di/messageModule.js.map +3 -3
  272. package/lib/esm/internal/message/di/messageModule.test.js +1 -1
  273. package/lib/esm/internal/message/di/messageModule.test.js.map +2 -2
  274. package/lib/esm/internal/message/use-case/SignMessageUseCase.js +1 -1
  275. package/lib/esm/internal/message/use-case/SignMessageUseCase.js.map +3 -3
  276. package/lib/esm/internal/message/use-case/SignMessageUseCase.test.js +1 -1
  277. package/lib/esm/internal/message/use-case/SignMessageUseCase.test.js.map +2 -2
  278. package/lib/esm/internal/shared/utils/ApplicationChecker.js +1 -1
  279. package/lib/esm/internal/shared/utils/ApplicationChecker.js.map +3 -3
  280. package/lib/esm/internal/shared/utils/ApplicationChecker.test.js +1 -1
  281. package/lib/esm/internal/shared/utils/ApplicationChecker.test.js.map +2 -2
  282. package/lib/esm/internal/transaction/di/transactionModule.js +1 -1
  283. package/lib/esm/internal/transaction/di/transactionModule.js.map +3 -3
  284. package/lib/esm/internal/transaction/di/transactionModule.test.js +1 -1
  285. package/lib/esm/internal/transaction/di/transactionModule.test.js.map +2 -2
  286. package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.js +2 -0
  287. package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.js.map +7 -0
  288. package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.test.js +2 -0
  289. package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.test.js.map +7 -0
  290. package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.js +0 -1
  291. package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.js.map +4 -4
  292. package/lib/esm/internal/transaction/service/parser/TransactionParserService.js +1 -1
  293. package/lib/esm/internal/transaction/service/parser/TransactionParserService.js.map +3 -3
  294. package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
  295. package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js.map +3 -3
  296. package/lib/esm/internal/typed-data/di/typedDataModule.js +1 -1
  297. package/lib/esm/internal/typed-data/di/typedDataModule.js.map +3 -3
  298. package/lib/esm/internal/typed-data/di/typedDataModule.test.js +1 -1
  299. package/lib/esm/internal/typed-data/di/typedDataModule.test.js.map +2 -2
  300. package/lib/esm/internal/typed-data/service/DefaultTypedDataParserService.js +1 -1
  301. package/lib/esm/internal/typed-data/service/DefaultTypedDataParserService.js.map +2 -2
  302. package/lib/esm/internal/typed-data/service/TypedDataParser.js +1 -1
  303. package/lib/esm/internal/typed-data/service/TypedDataParser.js.map +3 -3
  304. package/lib/esm/internal/typed-data/service/TypedDataParser.test.js +1 -1
  305. package/lib/esm/internal/typed-data/service/TypedDataParser.test.js.map +2 -2
  306. package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.js +1 -1
  307. package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.js.map +3 -3
  308. package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.test.js +1 -1
  309. package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.test.js.map +2 -2
  310. package/lib/esm/package.json +13 -14
  311. package/lib/types/api/SignerEth.d.ts +8 -4
  312. package/lib/types/api/SignerEth.d.ts.map +1 -1
  313. package/lib/types/api/SignerEthBuilder.d.ts +4 -2
  314. package/lib/types/api/SignerEthBuilder.d.ts.map +1 -1
  315. package/lib/types/api/app-binder/SignDelegationAuthorizationTypes.d.ts +19 -0
  316. package/lib/types/api/app-binder/SignDelegationAuthorizationTypes.d.ts.map +1 -0
  317. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +14 -10
  318. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
  319. package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts +7 -1
  320. package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts.map +1 -1
  321. package/lib/types/api/index.d.ts +5 -4
  322. package/lib/types/api/index.d.ts.map +1 -1
  323. package/lib/types/api/model/AddressOptions.d.ts +1 -0
  324. package/lib/types/api/model/AddressOptions.d.ts.map +1 -1
  325. package/lib/types/api/model/ClearSigningType.d.ts +5 -0
  326. package/lib/types/api/model/ClearSigningType.d.ts.map +1 -0
  327. package/lib/types/api/model/MessageOptions.d.ts +4 -0
  328. package/lib/types/api/model/MessageOptions.d.ts.map +1 -0
  329. package/lib/types/api/model/TransactionOptions.d.ts +1 -0
  330. package/lib/types/api/model/TransactionOptions.d.ts.map +1 -1
  331. package/lib/types/api/model/TypedDataOptions.d.ts +4 -0
  332. package/lib/types/api/model/TypedDataOptions.d.ts.map +1 -0
  333. package/lib/types/internal/DefaultSignerEth.d.ts +7 -3
  334. package/lib/types/internal/DefaultSignerEth.d.ts.map +1 -1
  335. package/lib/types/internal/address/di/addressModule.d.ts.map +1 -1
  336. package/lib/types/internal/address/use-case/GetAddressUseCase.d.ts.map +1 -1
  337. package/lib/types/internal/app-binder/EthAppBinder.d.ts +13 -3
  338. package/lib/types/internal/app-binder/EthAppBinder.d.ts.map +1 -1
  339. package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.d.ts +28 -0
  340. package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.d.ts.map +1 -0
  341. package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.d.ts +2 -0
  342. package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.d.ts.map +1 -0
  343. package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.d.ts +20 -0
  344. package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.d.ts.map +1 -0
  345. package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.test.d.ts +2 -0
  346. package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.test.d.ts.map +1 -0
  347. package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.d.ts +29 -0
  348. package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.d.ts.map +1 -0
  349. package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.test.d.ts +2 -0
  350. package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.test.d.ts.map +1 -0
  351. package/lib/types/internal/app-binder/command/utils/ethAppErrors.d.ts.map +1 -1
  352. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts +14 -31
  353. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts.map +1 -1
  354. package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts +1 -2
  355. package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts.map +1 -1
  356. package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -1
  357. package/lib/types/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.d.ts.map +1 -1
  358. package/lib/types/internal/app-binder/di/appBinderModule.d.ts.map +1 -1
  359. package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts.map +1 -1
  360. package/lib/types/internal/app-binder/task/BuildSubContextTask.d.ts +20 -0
  361. package/lib/types/internal/app-binder/task/BuildSubContextTask.d.ts.map +1 -0
  362. package/lib/types/internal/app-binder/task/BuildSubContextTask.test.d.ts +2 -0
  363. package/lib/types/internal/app-binder/task/BuildSubContextTask.test.d.ts.map +1 -0
  364. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts +10 -14
  365. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts.map +1 -1
  366. package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts +2 -3
  367. package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts.map +1 -1
  368. package/lib/types/internal/app-binder/task/PreBuildContextTask.d.ts +17 -0
  369. package/lib/types/internal/app-binder/task/PreBuildContextTask.d.ts.map +1 -0
  370. package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts +0 -2
  371. package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts.map +1 -1
  372. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts +28 -22
  373. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts.map +1 -1
  374. package/lib/types/internal/app-binder/task/SendPayloadInChunksTask.d.ts +2 -2
  375. package/lib/types/internal/app-binder/task/SendPayloadInChunksTask.d.ts.map +1 -1
  376. package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.d.ts +18 -0
  377. package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.d.ts.map +1 -0
  378. package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.d.ts +2 -0
  379. package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.d.ts.map +1 -0
  380. package/lib/types/internal/app-binder/task/SendSignTransactionTask.d.ts +2 -1
  381. package/lib/types/internal/app-binder/task/SendSignTransactionTask.d.ts.map +1 -1
  382. package/lib/types/internal/app-binder/task/SignTypedDataLegacyTask.d.ts +12 -0
  383. package/lib/types/internal/app-binder/task/SignTypedDataLegacyTask.d.ts.map +1 -0
  384. package/lib/types/internal/app-binder/task/SignTypedDataLegacyTask.test.d.ts +2 -0
  385. package/lib/types/internal/app-binder/task/SignTypedDataLegacyTask.test.d.ts.map +1 -0
  386. package/lib/types/internal/di.d.ts.map +1 -1
  387. package/lib/types/internal/eip7702/di/eip7702Module.d.ts +3 -0
  388. package/lib/types/internal/eip7702/di/eip7702Module.d.ts.map +1 -0
  389. package/lib/types/internal/eip7702/di/eip7702Module.test.d.ts +2 -0
  390. package/lib/types/internal/eip7702/di/eip7702Module.test.d.ts.map +1 -0
  391. package/lib/types/internal/eip7702/di/eip7702Types.d.ts +4 -0
  392. package/lib/types/internal/eip7702/di/eip7702Types.d.ts.map +1 -0
  393. package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.d.ts +8 -0
  394. package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.d.ts.map +1 -0
  395. package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.d.ts +2 -0
  396. package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.d.ts.map +1 -0
  397. package/lib/types/internal/message/di/messageModule.d.ts.map +1 -1
  398. package/lib/types/internal/message/use-case/SignMessageUseCase.d.ts +2 -1
  399. package/lib/types/internal/message/use-case/SignMessageUseCase.d.ts.map +1 -1
  400. package/lib/types/internal/shared/utils/ApplicationChecker.d.ts.map +1 -1
  401. package/lib/types/internal/transaction/di/transactionModule.d.ts.map +1 -1
  402. package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.d.ts +8 -0
  403. package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.d.ts.map +1 -0
  404. package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.test.d.ts +2 -0
  405. package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.test.d.ts.map +1 -0
  406. package/lib/types/internal/transaction/service/mapper/TransactionMapperService.d.ts +4 -7
  407. package/lib/types/internal/transaction/service/mapper/TransactionMapperService.d.ts.map +1 -1
  408. package/lib/types/internal/transaction/service/parser/TransactionParserService.d.ts +2 -2
  409. package/lib/types/internal/transaction/service/parser/TransactionParserService.d.ts.map +1 -1
  410. package/lib/types/internal/typed-data/di/typedDataModule.d.ts.map +1 -1
  411. package/lib/types/internal/typed-data/service/TypedDataParser.d.ts +4 -2
  412. package/lib/types/internal/typed-data/service/TypedDataParser.d.ts.map +1 -1
  413. package/lib/types/internal/typed-data/use-case/SignTypedDataUseCase.d.ts +2 -1
  414. package/lib/types/internal/typed-data/use-case/SignTypedDataUseCase.d.ts.map +1 -1
  415. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  416. package/package.json +19 -20
  417. package/lib/cjs/internal/app-binder/constant/plugins.js +0 -2
  418. package/lib/cjs/internal/app-binder/constant/plugins.js.map +0 -7
  419. package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js +0 -2
  420. package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js.map +0 -7
  421. package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js +0 -2
  422. package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js.map +0 -7
  423. package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.js +0 -2
  424. package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.js.map +0 -7
  425. package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js +0 -2
  426. package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js.map +0 -7
  427. package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.js +0 -2
  428. package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.js.map +0 -7
  429. package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js +0 -2
  430. package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js.map +0 -7
  431. package/lib/cjs/internal/transaction/service/mapper/TransactionMapper.js +0 -2
  432. package/lib/cjs/internal/transaction/service/mapper/TransactionMapper.js.map +0 -7
  433. package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.test.js +0 -2
  434. package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.test.js.map +0 -7
  435. package/lib/esm/internal/app-binder/constant/plugins.js +0 -2
  436. package/lib/esm/internal/app-binder/constant/plugins.js.map +0 -7
  437. package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js +0 -2
  438. package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js.map +0 -7
  439. package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js +0 -2
  440. package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js.map +0 -7
  441. package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.js +0 -2
  442. package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.js.map +0 -7
  443. package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js +0 -2
  444. package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js.map +0 -7
  445. package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.js +0 -2
  446. package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.js.map +0 -7
  447. package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js +0 -2
  448. package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js.map +0 -7
  449. package/lib/esm/internal/transaction/service/mapper/TransactionMapper.js +0 -1
  450. package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.test.js +0 -2
  451. package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.test.js.map +0 -7
  452. package/lib/types/internal/app-binder/constant/plugins.d.ts +0 -2
  453. package/lib/types/internal/app-binder/constant/plugins.d.ts.map +0 -1
  454. package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.d.ts +0 -80
  455. package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.d.ts.map +0 -1
  456. package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.d.ts +0 -2
  457. package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.d.ts.map +0 -1
  458. package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.d.ts +0 -28
  459. package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.d.ts.map +0 -1
  460. package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.test.d.ts +0 -2
  461. package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.test.d.ts.map +0 -1
  462. package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.d.ts +0 -7
  463. package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.d.ts.map +0 -1
  464. package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.test.d.ts +0 -2
  465. package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.test.d.ts.map +0 -1
  466. package/lib/types/internal/transaction/service/mapper/TransactionMapper.d.ts +0 -6
  467. package/lib/types/internal/transaction/service/mapper/TransactionMapper.d.ts.map +0 -1
  468. package/lib/types/internal/transaction/service/mapper/TransactionMapperService.test.d.ts +0 -2
  469. package/lib/types/internal/transaction/service/mapper/TransactionMapperService.test.d.ts.map +0 -1
  470. /package/lib/esm/{internal/transaction/service/mapper/TransactionMapper.js.map → api/app-binder/SignDelegationAuthorizationTypes.js.map} +0 -0
@@ -1,2 +1,2 @@
1
- "use strict";var y=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var P=(u,t)=>{for(var r in t)y(u,r,{get:t[r],enumerable:!0})},I=(u,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of x(t))!C.call(u,e)&&e!==r&&y(u,e,{get:()=>t[e],enumerable:!(n=g(t,e))||n.enumerable});return u};var N=u=>I(y({},"__esModule",{value:!0}),u),p=(u,t,r,n)=>{for(var e=n>1?void 0:n?g(t,r):t,c=u.length-1,E;c>=0;c--)(E=u[c])&&(e=(n?E(t,r,e):E(e))||e);return n&&e&&y(t,r,e),e};var D={};P(D,{TransactionParserService:()=>d});module.exports=N(D);var i=require("@ledgerhq/context-module"),s=require("@ledgerhq/device-management-kit"),w=require("ethers"),L=require("inversify"),a=require("purify-ts");const F=4,m=32;let d=class{extractValue(t,r){return a.Either.encase(()=>w.Transaction.from((0,s.bufferToHexaString)(t))).chain(n=>r===i.ContainerPath.FROM?(0,a.Left)(new Error("Cannot get 'FROM' field of an unsigned transaction")):r===i.ContainerPath.TO?a.Maybe.fromNullable(n.to).map(e=>(0,s.hexaStringToBuffer)(e)).filter(e=>e!==null).map(e=>[e]).toEither(new Error("Faild to extract TO field of transaction")):r===i.ContainerPath.VALUE?a.Maybe.fromNullable(n.value).map(e=>new s.ByteArrayBuilder().add256BitUIntToData(e).build()).map(e=>[e]).toEither(new Error("Faild to extract VALUE field of transaction")):a.Maybe.fromNullable(n.data).toEither(new Error("Transaction calldata is empty")).chain(e=>a.Maybe.fromNullable((0,s.hexaStringToBuffer)(e)).toEither(new Error(`Invalid hex string calldata: ${e}`))).chain(e=>this.extractCalldataValue(e,r)))}extractCalldataValue(t,r){return t=t.slice(F),r.length===0?(0,a.Left)(new Error("Path is empty")):this.extractCalldataValueAt(t,r,0,0)}extractCalldataValueAt(t,r,n,e){const c=r[r.length-1],E=c.type===i.DataPathElementType.SLICE?c:null;for(;r.length>0;){const l=r[0];switch(r=r.slice(1),l.type){case i.DataPathElementType.TUPLE:e=n,n+=l.offset*m;break;case i.DataPathElementType.ARRAY:return this.getU256(t.slice(n)).toEither(new Error(`Invalid array length at offset ${n}`)).chain(o=>{n+=m,e=n;const h=l.start===void 0?0:l.start<0?o+l.start:l.start,b=l.end===void 0?o:l.end<0?o+l.end:l.end;return h<0||h>=o||b>o||h>=b?(0,a.Left)(new Error(`Array slice out of bounds, start=${l.start}, end=${l.end}`)):Array.from({length:b-h},(A,U)=>U).map(A=>n+(A+h)*l.itemSize*m).reduce((A,U)=>A.chain(f=>this.extractCalldataValueAt(t,r,U,e).map(T=>[...f,...T])),(0,a.Right)([]))});case i.DataPathElementType.REF:if(this.getU256(t.slice(n)).ifJust(o=>n=e+o).isNothing())return(0,a.Left)(new Error(`Invalid ref at offset ${n}`));break;case i.DataPathElementType.LEAF:switch(l.leafType){case i.DataPathLeafType.ARRAY_LEAF:return(0,a.Left)(new Error("Array leaf is not supported in v1 of protocol"));case i.DataPathLeafType.TUPLE_LEAF:return(0,a.Left)(new Error("Tuple leaf is not supported in v1 of protocol"));case i.DataPathLeafType.STATIC_LEAF:return this.getSlice(t,n,m).chain(o=>E===null?(0,a.Right)([o]):this.sliceLeaf(o,E));case i.DataPathLeafType.DYNAMIC_LEAF:return this.getU256(t.slice(n)).toEither(new Error(`Invalid leaf length at offset ${n}`)).chain(o=>(n+=m,this.getSlice(t,n,o).chain(h=>E===null?(0,a.Right)([h]):this.sliceLeaf(h,E))))}break;case i.DataPathElementType.SLICE:return(0,a.Left)(new Error("Slice can only be used as last element of the path"))}}return(0,a.Left)(new Error("Path did not resolve to a leaf element"))}sliceLeaf(t,r){const n=t.length,e=r.start===void 0?0:r.start<0?n+r.start:r.start,c=r.end===void 0?n:r.end<0?n+r.end:r.end;return e>=c?(0,a.Left)(new Error(`invalid leaf slice: start ${e}, end ${c}`)):this.getSlice(t,e,c-e).map(E=>[E])}getSlice(t,r,n){return r<0||t.length<r+n?(0,a.Left)(new Error(`calldata too small to slice at offset ${r} of length ${n}`)):(0,a.Right)(t.slice(r,r+n))}getU256(t){return a.Maybe.fromNullable(new s.ByteArrayParser(t).extract256BitUInt(!0)).filter(r=>r<=Number.MAX_SAFE_INTEGER).map(r=>Number(r))}};d=p([(0,L.injectable)()],d);0&&(module.exports={TransactionParserService});
1
+ "use strict";var y=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var P=(c,t)=>{for(var r in t)y(c,r,{get:t[r],enumerable:!0})},f=(c,t,r,e)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of x(t))!C.call(c,n)&&n!==r&&y(c,n,{get:()=>t[n],enumerable:!(e=g(t,n))||e.enumerable});return c};var I=c=>f(y({},"__esModule",{value:!0}),c),p=(c,t,r,e)=>{for(var n=e>1?void 0:e?g(t,r):t,u=c.length-1,a;u>=0;u--)(a=c[u])&&(n=(e?a(t,r,n):a(n))||n);return e&&n&&y(t,r,n),n};var F={};P(F,{TransactionParserService:()=>d});module.exports=I(F);var l=require("@ledgerhq/context-module"),h=require("@ledgerhq/device-management-kit"),w=require("inversify"),i=require("purify-ts");const N=4,m=32;let d=class{extractValue(t,r){const{to:e,data:n,value:u}=t;return r===l.ContainerPath.FROM?(0,i.Left)(new Error("Cannot get 'FROM' field of an unsigned transaction")):r===l.ContainerPath.TO?i.Maybe.fromNullable(e).map(a=>(0,h.hexaStringToBuffer)(a)).filter(a=>a!==null).map(a=>[a]).toEither(new Error("Faild to extract TO field of transaction")):r===l.ContainerPath.VALUE?i.Maybe.fromNullable(u).map(a=>new h.ByteArrayBuilder().add256BitUIntToData(a).build()).map(a=>[a]).toEither(new Error("Faild to extract VALUE field of transaction")):i.Maybe.fromNullable(n).toEither(new Error("Transaction calldata is empty")).chain(a=>i.Maybe.fromNullable((0,h.hexaStringToBuffer)(a)).toEither(new Error(`Invalid hex string calldata: ${a}`))).chain(a=>this.extractCalldataValue(a,r))}extractCalldataValue(t,r){return t=t.slice(N),r.length===0?(0,i.Left)(new Error("Path is empty")):this.extractCalldataValueAt(t,r,0,0)}extractCalldataValueAt(t,r,e,n){const u=r[r.length-1],a=u.type===l.DataPathElementType.SLICE?u:null;for(;r.length>0;){const o=r[0];switch(r=r.slice(1),o.type){case l.DataPathElementType.TUPLE:n=e,e+=o.offset*m;break;case l.DataPathElementType.ARRAY:return this.getU256(t.slice(e)).toEither(new Error(`Invalid array length at offset ${e}`)).chain(s=>{e+=m,n=e;const E=o.start===void 0?0:o.start<0?s+o.start:o.start,b=o.end===void 0?s:o.end<0?s+o.end:o.end;return E<0||E>=s||b>s||E>=b?(0,i.Left)(new Error(`Array slice out of bounds, start=${o.start}, end=${o.end}`)):Array.from({length:b-E},(A,U)=>U).map(A=>e+(A+E)*o.itemSize*m).reduce((A,U)=>A.chain(L=>this.extractCalldataValueAt(t,r,U,n).map(T=>[...L,...T])),(0,i.Right)([]))});case l.DataPathElementType.REF:if(this.getU256(t.slice(e)).ifJust(s=>e=n+s).isNothing())return(0,i.Left)(new Error(`Invalid ref at offset ${e}`));break;case l.DataPathElementType.LEAF:switch(o.leafType){case l.DataPathLeafType.ARRAY_LEAF:return(0,i.Left)(new Error("Array leaf is not supported in v1 of protocol"));case l.DataPathLeafType.TUPLE_LEAF:return(0,i.Left)(new Error("Tuple leaf is not supported in v1 of protocol"));case l.DataPathLeafType.STATIC_LEAF:return this.getSlice(t,e,m).chain(s=>a===null?(0,i.Right)([s]):this.sliceLeaf(s,a));case l.DataPathLeafType.DYNAMIC_LEAF:return this.getU256(t.slice(e)).toEither(new Error(`Invalid leaf length at offset ${e}`)).chain(s=>(e+=m,this.getSlice(t,e,s).chain(E=>a===null?(0,i.Right)([E]):this.sliceLeaf(E,a))))}break;case l.DataPathElementType.SLICE:return(0,i.Left)(new Error("Slice can only be used as last element of the path"))}}return(0,i.Left)(new Error("Path did not resolve to a leaf element"))}sliceLeaf(t,r){const e=t.length,n=r.start===void 0?0:r.start<0?e+r.start:r.start,u=r.end===void 0?e:r.end<0?e+r.end:r.end;return n>=u?(0,i.Left)(new Error(`invalid leaf slice: start ${n}, end ${u}`)):this.getSlice(t,n,u-n).map(a=>[a])}getSlice(t,r,e){return r<0||t.length<r+e?(0,i.Left)(new Error(`calldata too small to slice at offset ${r} of length ${e}`)):(0,i.Right)(t.slice(r,r+e))}getU256(t){return i.Maybe.fromNullable(new h.ByteArrayParser(t).extract256BitUInt(!0)).filter(r=>r<=Number.MAX_SAFE_INTEGER).map(r=>Number(r))}};d=p([(0,w.injectable)()],d);0&&(module.exports={TransactionParserService});
2
2
  //# sourceMappingURL=TransactionParserService.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/transaction/service/parser/TransactionParserService.ts"],
4
- "sourcesContent": ["import type {\n DataPathElement,\n DataPathElementSlice,\n GenericPath,\n} from \"@ledgerhq/context-module\";\nimport {\n ContainerPath,\n DataPathElementType,\n DataPathLeafType,\n} from \"@ledgerhq/context-module\";\nimport {\n bufferToHexaString,\n ByteArrayBuilder,\n ByteArrayParser,\n hexaStringToBuffer,\n} from \"@ledgerhq/device-management-kit\";\nimport { Transaction } from \"ethers\";\nimport { injectable } from \"inversify\";\nimport { Either, Left, Maybe, Right } from \"purify-ts\";\n\n/**\n * The goal of this service it to implement the GenericPath parser in the context\n * of an ethereum transaction.\n *\n * The abi of an ethereum transaction calldata is specified here:\n * https://docs.soliditylang.org/en/latest/abi-spec.html\n *\n * To be noted:\n * - calldata is composed of:\n * - the selector on 4 bytes\n * - chunks of 32 bytes, whatever the size of the item contained in that chunk\n * - static elements (fixed size) are encoded \"in-place\", always in 1 chunk padded with zeros\n * (even a bool is on 32 bytes)\n * - dynamic elements (variable size) are behind references (pointers) and then encoded with length+value\n *\n * Examples extracted from the abi specification:\n * - example for a function with static elements:\n * signature: baz(uint32 x, bool y)\n * parameters: x = 69\n * y = true\n * - Encoding:\n * 0xcdcd77c0: the selector\n * [0] 0x0000000000000000000000000000000000000000000000000000000000000045: value = 69\n * [1] 0x0000000000000000000000000000000000000000000000000000000000000001: value = true\n *\n * - example for a function with dynamic elements:\n * signature: g(uint256[][] x, string[] x)\n * parameters: x = [[1, 2], [3]]\n * y = [\"one\", \"two\", \"three\"]\n * - Encoding:\n * 0x2289b18c: the selector\n * [0] 0x0000000000000000000000000000000000000000000000000000000000000040: offset of x\n * [1] 0x0000000000000000000000000000000000000000000000000000000000000140: offset of y\n * [2] 0x0000000000000000000000000000000000000000000000000000000000000002: length of x\n * [3] 0x0000000000000000000000000000000000000000000000000000000000000040: offset of x[0]\n * [4] 0x00000000000000000000000000000000000000000000000000000000000000a0: offset of x[1]\n * [5] 0x0000000000000000000000000000000000000000000000000000000000000002: length of x[0]\n * [6] 0x0000000000000000000000000000000000000000000000000000000000000001: value of x[0][0] = 1\n * [7] 0x0000000000000000000000000000000000000000000000000000000000000002: value of x[0][1] = 2\n * [8] 0x0000000000000000000000000000000000000000000000000000000000000001: length of x[1]\n * [9] 0x0000000000000000000000000000000000000000000000000000000000000003: value of x[1][0] = 3\n * [10] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y\n * [11] 0x0000000000000000000000000000000000000000000000000000000000000060: offset of y[0]\n * [12] 0x00000000000000000000000000000000000000000000000000000000000000a0: offset of y[1]\n * [13] 0x00000000000000000000000000000000000000000000000000000000000000e0: offset of y[2]\n * [14] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y[0]\n * [15] 0x6f6e650000000000000000000000000000000000000000000000000000000000: value of y[0] = \"one\"\n * [16] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y[1]\n * [17] 0x74776f0000000000000000000000000000000000000000000000000000000000: value of y[1] = \"two\"\n * [18] 0x0000000000000000000000000000000000000000000000000000000000000005: length of y[2]\n * [19] 0x7468726565000000000000000000000000000000000000000000000000000000: value of y[2] = \"three\"\n */\nconst SELECTOR_LENGTH = 4;\nconst CHUNK_SIZE = 32;\n\n@injectable()\nexport class TransactionParserService {\n public extractValue(\n serializedTransaction: Uint8Array,\n path: GenericPath,\n ): Either<Error, Uint8Array[]> {\n return Either.encase(() =>\n Transaction.from(bufferToHexaString(serializedTransaction)),\n ).chain((transaction) => {\n /**\n * We can first check container paths, which are in the transaction envelop\n */\n if (path === ContainerPath.FROM) {\n // 'from' is not part of the unsigned ethereum transaction, and can\n // only by recovered from the transaction signature later on.\n // Therefore we cannot extract it from a transaction before signing it.\n // It is not an issue since that field will typically be displayed as an\n // address on the device and therefore don't require additional descriptors.\n return Left(\n new Error(\"Cannot get 'FROM' field of an unsigned transaction\"),\n );\n } else if (path === ContainerPath.TO) {\n return Maybe.fromNullable(transaction.to)\n .map((str) => hexaStringToBuffer(str))\n .filter((bytes) => bytes !== null)\n .map((bytes) => [bytes])\n .toEither(new Error(\"Faild to extract TO field of transaction\"));\n } else if (path === ContainerPath.VALUE) {\n return Maybe.fromNullable(transaction.value)\n .map((num) => new ByteArrayBuilder().add256BitUIntToData(num).build())\n .map((bytes) => [bytes])\n .toEither(new Error(\"Faild to extract VALUE field of transaction\"));\n }\n\n /**\n * If it was not a path in the container, it means it's a path in the calldata\n */\n return Maybe.fromNullable(transaction.data)\n .toEither(new Error(\"Transaction calldata is empty\"))\n .chain((calldata) =>\n Maybe.fromNullable(hexaStringToBuffer(calldata)).toEither(\n new Error(`Invalid hex string calldata: ${calldata}`),\n ),\n )\n .chain((calldata) => this.extractCalldataValue(calldata, path));\n });\n }\n\n private extractCalldataValue(\n data: Uint8Array,\n path: DataPathElement[],\n ): Either<Error, Uint8Array[]> {\n data = data.slice(SELECTOR_LENGTH); // Remove the selector from the calldata\n if (path.length === 0) {\n return Left(new Error(\"Path is empty\"));\n }\n return this.extractCalldataValueAt(data, path, 0, 0);\n }\n\n private extractCalldataValueAt(\n data: Uint8Array,\n path: DataPathElement[],\n offset: number,\n parentOffset: number,\n ): Either<Error, Uint8Array[]> {\n // If the path ends with a slice, store it now as it is only allowed at the end of a binary path.\n const lastElement = path[path.length - 1]!;\n const leafSlice: DataPathElementSlice | null =\n lastElement.type === DataPathElementType.SLICE ? lastElement : null;\n\n while (path.length > 0) {\n const element = path[0]!;\n path = path.slice(1);\n switch (element.type) {\n case DataPathElementType.TUPLE:\n // A tuple contain 1 element per chunk\n parentOffset = offset;\n offset += element.offset * CHUNK_SIZE;\n break;\n case DataPathElementType.ARRAY:\n // An array contains a length, followed by the list of elements.\n // See the examples with dynamic types at the top of this file for more informations.\n return this.getU256(data.slice(offset))\n .toEither(new Error(`Invalid array length at offset ${offset}`))\n .chain((length) => {\n // Skip the array length\n offset += CHUNK_SIZE;\n parentOffset = offset;\n // Select the array slice to iterate on\n const start =\n element.start === undefined\n ? 0\n : element.start < 0\n ? length + element.start\n : element.start;\n const end =\n element.end === undefined\n ? length\n : element.end < 0\n ? length + element.end\n : element.end;\n if (\n start < 0 ||\n start >= length ||\n end > length ||\n start >= end\n ) {\n return Left(\n new Error(\n `Array slice out of bounds, start=${element.start}, end=${element.end}`,\n ),\n );\n }\n // Iterate on the array slice\n return Array.from({ length: end - start }, (_, i) => i)\n .map(\n (i) => offset + (i + start) * element.itemSize * CHUNK_SIZE,\n )\n .reduce(\n (acc: Either<Error, Uint8Array[]>, arrayOffset) =>\n acc.chain((values) =>\n this.extractCalldataValueAt(\n data,\n path,\n arrayOffset,\n parentOffset,\n ).map((newValues) => [...values, ...newValues]),\n ),\n Right([]),\n );\n });\n case DataPathElementType.REF:\n // A reference means the current slot points to a new offset in the calldata (a kind of pointer).\n // That offset is relative to its 'parent' element, here named parentOffset.\n // See the examples with dynamic types at the top of this file for more informations.\n if (\n this.getU256(data.slice(offset))\n .ifJust((reference) => (offset = parentOffset + reference))\n .isNothing()\n ) {\n return Left(new Error(`Invalid ref at offset ${offset}`));\n }\n break;\n case DataPathElementType.LEAF:\n // A leaf means we reached the end of the path.\n // We have to check the leaf type to know how to extract the data.\n switch (element.leafType) {\n case DataPathLeafType.ARRAY_LEAF:\n return Left(\n new Error(\"Array leaf is not supported in v1 of protocol\"),\n );\n case DataPathLeafType.TUPLE_LEAF:\n return Left(\n new Error(\"Tuple leaf is not supported in v1 of protocol\"),\n );\n case DataPathLeafType.STATIC_LEAF:\n // A static leaf is the chunk of current offset (data of static size)\n return this.getSlice(data, offset, CHUNK_SIZE).chain((leaf) => {\n if (leafSlice === null) {\n return Right([leaf]);\n } else {\n return this.sliceLeaf(leaf, leafSlice);\n }\n });\n case DataPathLeafType.DYNAMIC_LEAF:\n // A dynamic leaf is composed of a length followed by the actual value\n // (data of variable size such as a string).\n // See the examples with dynamic types at the top of this file for more informations.\n return this.getU256(data.slice(offset))\n .toEither(new Error(`Invalid leaf length at offset ${offset}`))\n .chain((length) => {\n // Skip dynamic leaf length\n offset += CHUNK_SIZE;\n return this.getSlice(data, offset, length).chain((leaf) => {\n if (leafSlice === null) {\n return Right([leaf]);\n } else {\n return this.sliceLeaf(leaf, leafSlice);\n }\n });\n });\n }\n break;\n case DataPathElementType.SLICE:\n // If the last element was a slice, it was already popped at the beginning of this function\n return Left(\n new Error(\"Slice can only be used as last element of the path\"),\n );\n }\n }\n // We should have early-returned on a leaf\n return Left(new Error(\"Path did not resolve to a leaf element\"));\n }\n\n private sliceLeaf(\n data: Uint8Array,\n leafSlice: DataPathElementSlice,\n ): Either<Error, Uint8Array[]> {\n const length = data.length;\n const start =\n leafSlice.start === undefined\n ? 0\n : leafSlice.start < 0\n ? length + leafSlice.start\n : leafSlice.start;\n const end =\n leafSlice.end === undefined\n ? length\n : leafSlice.end < 0\n ? length + leafSlice.end\n : leafSlice.end;\n if (start >= end) {\n return Left(new Error(`invalid leaf slice: start ${start}, end ${end}`));\n }\n return this.getSlice(data, start, end - start).map((leaf) => [leaf]);\n }\n\n getSlice(\n data: Uint8Array,\n offset: number,\n size: number,\n ): Either<Error, Uint8Array> {\n return offset < 0 || data.length < offset + size\n ? Left(\n new Error(\n `calldata too small to slice at offset ${offset} of length ${size}`,\n ),\n )\n : Right(data.slice(offset, offset + size));\n }\n\n getU256(data: Uint8Array): Maybe<number> {\n // https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding\n return Maybe.fromNullable(new ByteArrayParser(data).extract256BitUInt(true))\n .filter((res) => res <= Number.MAX_SAFE_INTEGER)\n .map((res) => Number(res));\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["TransactionParserService_exports", "__export", "TransactionParserService", "__toCommonJS", "import_context_module", "import_device_management_kit", "import_ethers", "import_inversify", "import_purify_ts", "SELECTOR_LENGTH", "CHUNK_SIZE", "TransactionParserService", "serializedTransaction", "path", "transaction", "str", "bytes", "num", "calldata", "data", "offset", "parentOffset", "lastElement", "leafSlice", "element", "length", "start", "end", "_", "i", "acc", "arrayOffset", "values", "newValues", "reference", "leaf", "size", "res", "__decorateClass"]
4
+ "sourcesContent": ["import type {\n DataPathElement,\n DataPathElementSlice,\n GenericPath,\n TransactionSubset,\n} from \"@ledgerhq/context-module\";\nimport {\n ContainerPath,\n DataPathElementType,\n DataPathLeafType,\n} from \"@ledgerhq/context-module\";\nimport {\n ByteArrayBuilder,\n ByteArrayParser,\n hexaStringToBuffer,\n} from \"@ledgerhq/device-management-kit\";\nimport { injectable } from \"inversify\";\nimport { Either, Left, Maybe, Right } from \"purify-ts\";\n\n/**\n * The goal of this service it to implement the GenericPath parser in the context\n * of an ethereum transaction.\n *\n * The abi of an ethereum transaction calldata is specified here:\n * https://docs.soliditylang.org/en/latest/abi-spec.html\n *\n * To be noted:\n * - calldata is composed of:\n * - the selector on 4 bytes\n * - chunks of 32 bytes, whatever the size of the item contained in that chunk\n * - static elements (fixed size) are encoded \"in-place\", always in 1 chunk padded with zeros\n * (even a bool is on 32 bytes)\n * - dynamic elements (variable size) are behind references (pointers) and then encoded with length+value\n *\n * Examples extracted from the abi specification:\n * - example for a function with static elements:\n * signature: baz(uint32 x, bool y)\n * parameters: x = 69\n * y = true\n * - Encoding:\n * 0xcdcd77c0: the selector\n * [0] 0x0000000000000000000000000000000000000000000000000000000000000045: value = 69\n * [1] 0x0000000000000000000000000000000000000000000000000000000000000001: value = true\n *\n * - example for a function with dynamic elements:\n * signature: g(uint256[][] x, string[] x)\n * parameters: x = [[1, 2], [3]]\n * y = [\"one\", \"two\", \"three\"]\n * - Encoding:\n * 0x2289b18c: the selector\n * [0] 0x0000000000000000000000000000000000000000000000000000000000000040: offset of x\n * [1] 0x0000000000000000000000000000000000000000000000000000000000000140: offset of y\n * [2] 0x0000000000000000000000000000000000000000000000000000000000000002: length of x\n * [3] 0x0000000000000000000000000000000000000000000000000000000000000040: offset of x[0]\n * [4] 0x00000000000000000000000000000000000000000000000000000000000000a0: offset of x[1]\n * [5] 0x0000000000000000000000000000000000000000000000000000000000000002: length of x[0]\n * [6] 0x0000000000000000000000000000000000000000000000000000000000000001: value of x[0][0] = 1\n * [7] 0x0000000000000000000000000000000000000000000000000000000000000002: value of x[0][1] = 2\n * [8] 0x0000000000000000000000000000000000000000000000000000000000000001: length of x[1]\n * [9] 0x0000000000000000000000000000000000000000000000000000000000000003: value of x[1][0] = 3\n * [10] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y\n * [11] 0x0000000000000000000000000000000000000000000000000000000000000060: offset of y[0]\n * [12] 0x00000000000000000000000000000000000000000000000000000000000000a0: offset of y[1]\n * [13] 0x00000000000000000000000000000000000000000000000000000000000000e0: offset of y[2]\n * [14] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y[0]\n * [15] 0x6f6e650000000000000000000000000000000000000000000000000000000000: value of y[0] = \"one\"\n * [16] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y[1]\n * [17] 0x74776f0000000000000000000000000000000000000000000000000000000000: value of y[1] = \"two\"\n * [18] 0x0000000000000000000000000000000000000000000000000000000000000005: length of y[2]\n * [19] 0x7468726565000000000000000000000000000000000000000000000000000000: value of y[2] = \"three\"\n */\nconst SELECTOR_LENGTH = 4;\nconst CHUNK_SIZE = 32;\n\n@injectable()\nexport class TransactionParserService {\n public extractValue(\n subset: TransactionSubset,\n path: GenericPath,\n ): Either<Error, Uint8Array[]> {\n const { to, data, value } = subset;\n /**\n * We can first check container paths, which are in the transaction envelop\n */\n if (path === ContainerPath.FROM) {\n // 'from' is not part of the unsigned ethereum transaction, and can\n // only by recovered from the transaction signature later on.\n // Therefore we cannot extract it from a transaction before signing it.\n // It is not an issue since that field will typically be displayed as an\n // address on the device and therefore don't require additional descriptors.\n return Left(\n new Error(\"Cannot get 'FROM' field of an unsigned transaction\"),\n );\n } else if (path === ContainerPath.TO) {\n return Maybe.fromNullable(to)\n .map((str) => hexaStringToBuffer(str))\n .filter((bytes) => bytes !== null)\n .map((bytes) => [bytes])\n .toEither(new Error(\"Faild to extract TO field of transaction\"));\n } else if (path === ContainerPath.VALUE) {\n return Maybe.fromNullable(value)\n .map((num) => new ByteArrayBuilder().add256BitUIntToData(num).build())\n .map((bytes) => [bytes])\n .toEither(new Error(\"Faild to extract VALUE field of transaction\"));\n }\n\n /**\n * If it was not a path in the container, it means it's a path in the calldata\n */\n return Maybe.fromNullable(data)\n .toEither(new Error(\"Transaction calldata is empty\"))\n .chain((calldata) =>\n Maybe.fromNullable(hexaStringToBuffer(calldata)).toEither(\n new Error(`Invalid hex string calldata: ${calldata}`),\n ),\n )\n .chain((calldata) => this.extractCalldataValue(calldata, path));\n }\n\n private extractCalldataValue(\n data: Uint8Array,\n path: DataPathElement[],\n ): Either<Error, Uint8Array[]> {\n data = data.slice(SELECTOR_LENGTH); // Remove the selector from the calldata\n if (path.length === 0) {\n return Left(new Error(\"Path is empty\"));\n }\n return this.extractCalldataValueAt(data, path, 0, 0);\n }\n\n private extractCalldataValueAt(\n data: Uint8Array,\n path: DataPathElement[],\n offset: number,\n parentOffset: number,\n ): Either<Error, Uint8Array[]> {\n // If the path ends with a slice, store it now as it is only allowed at the end of a binary path.\n const lastElement = path[path.length - 1]!;\n const leafSlice: DataPathElementSlice | null =\n lastElement.type === DataPathElementType.SLICE ? lastElement : null;\n\n while (path.length > 0) {\n const element = path[0]!;\n path = path.slice(1);\n switch (element.type) {\n case DataPathElementType.TUPLE:\n // A tuple contain 1 element per chunk\n parentOffset = offset;\n offset += element.offset * CHUNK_SIZE;\n break;\n case DataPathElementType.ARRAY:\n // An array contains a length, followed by the list of elements.\n // See the examples with dynamic types at the top of this file for more informations.\n return this.getU256(data.slice(offset))\n .toEither(new Error(`Invalid array length at offset ${offset}`))\n .chain((length) => {\n // Skip the array length\n offset += CHUNK_SIZE;\n parentOffset = offset;\n // Select the array slice to iterate on\n const start =\n element.start === undefined\n ? 0\n : element.start < 0\n ? length + element.start\n : element.start;\n const end =\n element.end === undefined\n ? length\n : element.end < 0\n ? length + element.end\n : element.end;\n if (\n start < 0 ||\n start >= length ||\n end > length ||\n start >= end\n ) {\n return Left(\n new Error(\n `Array slice out of bounds, start=${element.start}, end=${element.end}`,\n ),\n );\n }\n // Iterate on the array slice\n return Array.from({ length: end - start }, (_, i) => i)\n .map(\n (i) => offset + (i + start) * element.itemSize * CHUNK_SIZE,\n )\n .reduce(\n (acc: Either<Error, Uint8Array[]>, arrayOffset) =>\n acc.chain((values) =>\n this.extractCalldataValueAt(\n data,\n path,\n arrayOffset,\n parentOffset,\n ).map((newValues) => [...values, ...newValues]),\n ),\n Right([]),\n );\n });\n case DataPathElementType.REF:\n // A reference means the current slot points to a new offset in the calldata (a kind of pointer).\n // That offset is relative to its 'parent' element, here named parentOffset.\n // See the examples with dynamic types at the top of this file for more informations.\n if (\n this.getU256(data.slice(offset))\n .ifJust((reference) => (offset = parentOffset + reference))\n .isNothing()\n ) {\n return Left(new Error(`Invalid ref at offset ${offset}`));\n }\n break;\n case DataPathElementType.LEAF:\n // A leaf means we reached the end of the path.\n // We have to check the leaf type to know how to extract the data.\n switch (element.leafType) {\n case DataPathLeafType.ARRAY_LEAF:\n return Left(\n new Error(\"Array leaf is not supported in v1 of protocol\"),\n );\n case DataPathLeafType.TUPLE_LEAF:\n return Left(\n new Error(\"Tuple leaf is not supported in v1 of protocol\"),\n );\n case DataPathLeafType.STATIC_LEAF:\n // A static leaf is the chunk of current offset (data of static size)\n return this.getSlice(data, offset, CHUNK_SIZE).chain((leaf) => {\n if (leafSlice === null) {\n return Right([leaf]);\n } else {\n return this.sliceLeaf(leaf, leafSlice);\n }\n });\n case DataPathLeafType.DYNAMIC_LEAF:\n // A dynamic leaf is composed of a length followed by the actual value\n // (data of variable size such as a string).\n // See the examples with dynamic types at the top of this file for more informations.\n return this.getU256(data.slice(offset))\n .toEither(new Error(`Invalid leaf length at offset ${offset}`))\n .chain((length) => {\n // Skip dynamic leaf length\n offset += CHUNK_SIZE;\n return this.getSlice(data, offset, length).chain((leaf) => {\n if (leafSlice === null) {\n return Right([leaf]);\n } else {\n return this.sliceLeaf(leaf, leafSlice);\n }\n });\n });\n }\n break;\n case DataPathElementType.SLICE:\n // If the last element was a slice, it was already popped at the beginning of this function\n return Left(\n new Error(\"Slice can only be used as last element of the path\"),\n );\n }\n }\n // We should have early-returned on a leaf\n return Left(new Error(\"Path did not resolve to a leaf element\"));\n }\n\n private sliceLeaf(\n data: Uint8Array,\n leafSlice: DataPathElementSlice,\n ): Either<Error, Uint8Array[]> {\n const length = data.length;\n const start =\n leafSlice.start === undefined\n ? 0\n : leafSlice.start < 0\n ? length + leafSlice.start\n : leafSlice.start;\n const end =\n leafSlice.end === undefined\n ? length\n : leafSlice.end < 0\n ? length + leafSlice.end\n : leafSlice.end;\n if (start >= end) {\n return Left(new Error(`invalid leaf slice: start ${start}, end ${end}`));\n }\n return this.getSlice(data, start, end - start).map((leaf) => [leaf]);\n }\n\n getSlice(\n data: Uint8Array,\n offset: number,\n size: number,\n ): Either<Error, Uint8Array> {\n return offset < 0 || data.length < offset + size\n ? Left(\n new Error(\n `calldata too small to slice at offset ${offset} of length ${size}`,\n ),\n )\n : Right(data.slice(offset, offset + size));\n }\n\n getU256(data: Uint8Array): Maybe<number> {\n // https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding\n return Maybe.fromNullable(new ByteArrayParser(data).extract256BitUInt(true))\n .filter((res) => res <= Number.MAX_SAFE_INTEGER)\n .map((res) => Number(res));\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["TransactionParserService_exports", "__export", "TransactionParserService", "__toCommonJS", "import_context_module", "import_device_management_kit", "import_inversify", "import_purify_ts", "SELECTOR_LENGTH", "CHUNK_SIZE", "TransactionParserService", "subset", "path", "to", "data", "value", "str", "bytes", "num", "calldata", "offset", "parentOffset", "lastElement", "leafSlice", "element", "length", "start", "end", "_", "i", "acc", "arrayOffset", "values", "newValues", "reference", "leaf", "size", "res", "__decorateClass"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var s=require("@ledgerhq/context-module"),a=require("@ledgerhq/device-management-kit"),l=require("ethers"),n=require("./TransactionParserService");describe("TransactionParserService",()=>{const i=new n.TransactionParserService,o=(0,a.hexaStringToBuffer)("0x3f32cF0B1DF94157EE1c3876c49BE3732C92a98f"),r=81818275935222000n,p=new a.ByteArrayBuilder().add256BitUIntToData(81818275935222000n).build();beforeEach(()=>{vi.clearAllMocks()}),describe("Container paths",()=>{it("should extract TO of the container",()=>{const c=(0,a.hexaStringToBuffer)(l.Transaction.from({to:(0,a.bufferToHexaString)(o),value:r,data:"0x"}).unsignedSerialized),e=i.extractValue(c,s.ContainerPath.TO);expect(e.isRight()).toStrictEqual(!0),expect(e.unsafeCoerce()).toStrictEqual([o])}),it("should extract VALUE of the container",()=>{const c=(0,a.hexaStringToBuffer)(l.Transaction.from({to:(0,a.bufferToHexaString)(o),value:r,data:"0x"}).unsignedSerialized),e=i.extractValue(c,s.ContainerPath.VALUE);expect(e.isRight()).toStrictEqual(!0),expect(e.unsafeCoerce()).toStrictEqual([p])}),it("Unavailable container fields",()=>{const c=(0,a.hexaStringToBuffer)(l.Transaction.from({data:"0x",signature:{r:"0x73b969418389828a6328fdb96e747296226832894b8bb46d60f231a9960ec3b5",s:"0x4806aaccc52354f4a42ef9efe0d89dd8cf95210829443ad7f4a9017d6b02de07",v:1}}).unsignedSerialized),e=i.extractValue(c,s.ContainerPath.FROM),t=i.extractValue(c,s.ContainerPath.TO);expect(e.isRight()).toStrictEqual(!1),expect(t.isRight()).toStrictEqual(!1)}),it("invalid transaction format",()=>{const c=(0,a.hexaStringToBuffer)("0xdeadbeef"),e=i.extractValue(c,s.ContainerPath.FROM);expect(e.isRight()).toStrictEqual(!1)})}),describe("Data paths in a calldata with static elements",()=>{const c=(0,a.hexaStringToBuffer)(l.Transaction.from({to:(0,a.bufferToHexaString)(o),value:r,data:"0xcdcd77c000000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000000000000000000000000000000000000001"}).unsignedSerialized);it("Extract the first element",()=>{const e=[{type:"TUPLE",offset:0},{type:"LEAF",leafType:"STATIC_LEAF"}],t=i.extractValue(c,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,a.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000045")])}),it("Extract the second element",()=>{const e=[{type:"TUPLE",offset:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=i.extractValue(c,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,a.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000001")])}),it("Slice the static leaf",()=>{const e=[{type:"TUPLE",offset:0},{type:"LEAF",leafType:"STATIC_LEAF"},{type:"SLICE",start:-4}],t=i.extractValue(c,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,a.hexaStringToBuffer)("0x00000045")])}),it("Out of bounds",()=>{const e=[{type:"TUPLE",offset:2},{type:"LEAF",leafType:"STATIC_LEAF"}],t=i.extractValue(c,e);expect(t.isRight()).toStrictEqual(!1)})}),describe("Data paths in a calldata with dynamic elements",()=>{const c=(0,a.hexaStringToBuffer)(l.Transaction.from({to:(0,a.bufferToHexaString)(o),value:r,data:"0x2289b18c000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000036f6e650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000374776f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057468726565000000000000000000000000000000000000000000000000000000"}).unsignedSerialized);it("Extract all the elements of x, concatenated together",()=>{const e=[{type:"TUPLE",offset:0},{type:"REF"},{type:"ARRAY",itemSize:1},{type:"REF"},{type:"ARRAY",itemSize:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=i.extractValue(c,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,a.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000001"),(0,a.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000002"),(0,a.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000003")])}),it("Extract all the elements of x[0]",()=>{const e=[{type:"TUPLE",offset:0},{type:"REF"},{type:"ARRAY",itemSize:1,start:0,end:1},{type:"REF"},{type:"ARRAY",itemSize:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=i.extractValue(c,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,a.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000001"),(0,a.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000002")])}),it("Extract all the elements of x[0:-1][-1:]",()=>{const e=[{type:"TUPLE",offset:0},{type:"REF"},{type:"ARRAY",itemSize:1,start:0,end:-1},{type:"REF"},{type:"ARRAY",itemSize:1,start:-1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=i.extractValue(c,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,a.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000002")])}),it("Array out of bounds",()=>{const e=[{type:"TUPLE",offset:0},{type:"REF"},{type:"ARRAY",itemSize:1,start:0,end:1},{type:"REF"},{type:"ARRAY",itemSize:1,start:2,end:3},{type:"LEAF",leafType:"STATIC_LEAF"}],t=i.extractValue(c,e);expect(t.isRight()).toStrictEqual(!1)}),it("Extract all the elements of x[1]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"}],t=i.extractValue(c,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,a.hexaStringToBuffer)("0x6f6e65"),(0,a.hexaStringToBuffer)("0x74776f"),(0,a.hexaStringToBuffer)("0x7468726565")])}),it("Extract all the elements of x[1][:2]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1,end:2},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"}],t=i.extractValue(c,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,a.hexaStringToBuffer)("0x6f6e65"),(0,a.hexaStringToBuffer)("0x74776f")])}),it("Slice the dynamic leaf with [1:-2]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1,start:2,end:3},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"},{type:"SLICE",start:1,end:-2}],t=i.extractValue(c,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,a.hexaStringToBuffer)("0x6872")])}),it("Slice the dynamic leaf with [-1:]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1,start:2,end:3},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"},{type:"SLICE",start:-1}],t=i.extractValue(c,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,a.hexaStringToBuffer)("0x65")])}),it("Slice the dynamic leaf with [:1]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1,start:2,end:3},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"},{type:"SLICE",end:1}],t=i.extractValue(c,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,a.hexaStringToBuffer)("0x74")])}),it("Error no leaf",()=>{const e=[{type:"TUPLE",offset:1}],t=i.extractValue(c,e);expect(t.isRight()).toStrictEqual(!1)}),it("Error slice not at the end",()=>{const e=[{type:"TUPLE",offset:1},{type:"SLICE",start:0,end:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=i.extractValue(c,e);expect(t.isRight()).toStrictEqual(!1)}),it("Error empty slice",()=>{const e=[{type:"TUPLE",offset:1},{type:"LEAF",leafType:"DYNAMIC_LEAF"},{type:"SLICE",start:0,end:0}],t=i.extractValue(c,e);expect(t.isRight()).toStrictEqual(!1)})}),describe("Array of tuples, with bigger itemSize",()=>{const c=(0,a.hexaStringToBuffer)(l.Transaction.from({to:(0,a.bufferToHexaString)(o),value:r,data:"0xcdcd77c000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000006"}).unsignedSerialized);it("Extract the first tuple element of all array elements",()=>{const e=[{type:"REF"},{type:"ARRAY",itemSize:2},{type:"TUPLE",offset:0},{type:"LEAF",leafType:"STATIC_LEAF"}],t=i.extractValue(c,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,a.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000001"),(0,a.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000003"),(0,a.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000005")])}),it("Extract the second tuple element of all array elements",()=>{const e=[{type:"REF"},{type:"ARRAY",itemSize:2},{type:"TUPLE",offset:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=i.extractValue(c,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,a.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000002"),(0,a.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000004"),(0,a.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000006")])})}),describe("Malformed calldata",()=>{const c=(0,a.hexaStringToBuffer)(l.Transaction.from({to:(0,a.bufferToHexaString)(o),value:r,data:"0x2289b18c0000000000000000000000000000000000000000000000000000000000000080f000000000000000000000000000000000000000000000000000000000000140f000000000000000000000000000000000000000000000000000000000000002"}).unsignedSerialized);it("Dynamic leaf length overflow",()=>{const e=[{type:"TUPLE",offset:1},{type:"LEAF",leafType:"DYNAMIC_LEAF"}],t=i.extractValue(c,e);expect(t.isRight()).toStrictEqual(!1)}),it("Calldata smaller than dynamic leaf",()=>{const e=[{type:"TUPLE",offset:0},{type:"LEAF",leafType:"DYNAMIC_LEAF"}],t=i.extractValue(c,e);expect(t.isRight()).toStrictEqual(!1)}),it("Array length overflow",()=>{const e=[{type:"TUPLE",offset:1},{type:"ARRAY",itemSize:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=i.extractValue(c,e);expect(t.isRight()).toStrictEqual(!1)}),it("Calldata smaller than array length",()=>{const e=[{type:"TUPLE",offset:0},{type:"ARRAY",itemSize:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=i.extractValue(c,e);expect(t.isRight()).toStrictEqual(!1)}),it("Ref out of bounds",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"LEAF",leafType:"STATIC_LEAF"}],t=i.extractValue(c,e);expect(t.isRight()).toStrictEqual(!1)})})});
1
+ "use strict";var o=require("@ledgerhq/context-module"),c=require("@ledgerhq/device-management-kit"),r=require("./TransactionParserService");describe("TransactionParserService",()=>{const l=new r.TransactionParserService,i=(0,c.hexaStringToBuffer)("0x3f32cF0B1DF94157EE1c3876c49BE3732C92a98f"),s=81818275935222000n,n=new c.ByteArrayBuilder().add256BitUIntToData(81818275935222000n).build();beforeEach(()=>{vi.clearAllMocks()}),describe("Container paths",()=>{it("should extract TO of the container",()=>{const a={chainId:1,data:"0x",selector:"0x",to:(0,c.bufferToHexaString)(i),value:s},e=l.extractValue(a,o.ContainerPath.TO);expect(e.isRight()).toStrictEqual(!0),expect(e.unsafeCoerce()).toStrictEqual([i])}),it("should extract VALUE of the container",()=>{const a={chainId:1,data:"0x",selector:"0x",to:(0,c.bufferToHexaString)(i),value:s},e=l.extractValue(a,o.ContainerPath.VALUE);expect(e.isRight()).toStrictEqual(!0),expect(e.unsafeCoerce()).toStrictEqual([n])}),it("Unavailable container fields",()=>{const a={chainId:1,data:"0x",selector:"0x",to:void 0,from:void 0,value:s},e=l.extractValue(a,o.ContainerPath.FROM),t=l.extractValue(a,o.ContainerPath.TO);expect(e.isRight()).toStrictEqual(!1),expect(t.isRight()).toStrictEqual(!1)}),it("invalid transaction format",()=>{const a=(0,c.hexaStringToBuffer)("0xdeadbeef"),e=l.extractValue(a,o.ContainerPath.FROM);expect(e.isRight()).toStrictEqual(!1)})}),describe("Data paths in a calldata with static elements",()=>{const a={chainId:1,data:"0xcdcd77c000000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000000000000000000000000000000000000001",selector:"0xcdcd77c",to:(0,c.bufferToHexaString)(i),value:s};it("Extract the first element",()=>{const e=[{type:"TUPLE",offset:0},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000045")])}),it("Extract the second element",()=>{const e=[{type:"TUPLE",offset:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000001")])}),it("Slice the static leaf",()=>{const e=[{type:"TUPLE",offset:0},{type:"LEAF",leafType:"STATIC_LEAF"},{type:"SLICE",start:-4}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x00000045")])}),it("Out of bounds",()=>{const e=[{type:"TUPLE",offset:2},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)})}),describe("Data paths in a calldata with dynamic elements",()=>{const a={to:(0,c.bufferToHexaString)(i),value:s,chainId:1,data:"0x2289b18c000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000036f6e650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000374776f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057468726565000000000000000000000000000000000000000000000000000000",selector:"0x2289b18c"};it("Extract all the elements of x, concatenated together",()=>{const e=[{type:"TUPLE",offset:0},{type:"REF"},{type:"ARRAY",itemSize:1},{type:"REF"},{type:"ARRAY",itemSize:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000001"),(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000002"),(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000003")])}),it("Extract all the elements of x[0]",()=>{const e=[{type:"TUPLE",offset:0},{type:"REF"},{type:"ARRAY",itemSize:1,start:0,end:1},{type:"REF"},{type:"ARRAY",itemSize:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000001"),(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000002")])}),it("Extract all the elements of x[0:-1][-1:]",()=>{const e=[{type:"TUPLE",offset:0},{type:"REF"},{type:"ARRAY",itemSize:1,start:0,end:-1},{type:"REF"},{type:"ARRAY",itemSize:1,start:-1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000002")])}),it("Array out of bounds",()=>{const e=[{type:"TUPLE",offset:0},{type:"REF"},{type:"ARRAY",itemSize:1,start:0,end:1},{type:"REF"},{type:"ARRAY",itemSize:1,start:2,end:3},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Extract all the elements of x[1]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x6f6e65"),(0,c.hexaStringToBuffer)("0x74776f"),(0,c.hexaStringToBuffer)("0x7468726565")])}),it("Extract all the elements of x[1][:2]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1,end:2},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x6f6e65"),(0,c.hexaStringToBuffer)("0x74776f")])}),it("Slice the dynamic leaf with [1:-2]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1,start:2,end:3},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"},{type:"SLICE",start:1,end:-2}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x6872")])}),it("Slice the dynamic leaf with [-1:]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1,start:2,end:3},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"},{type:"SLICE",start:-1}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x65")])}),it("Slice the dynamic leaf with [:1]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1,start:2,end:3},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"},{type:"SLICE",end:1}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x74")])}),it("Error no leaf",()=>{const e=[{type:"TUPLE",offset:1}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Error slice not at the end",()=>{const e=[{type:"TUPLE",offset:1},{type:"SLICE",start:0,end:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Error empty slice",()=>{const e=[{type:"TUPLE",offset:1},{type:"LEAF",leafType:"DYNAMIC_LEAF"},{type:"SLICE",start:0,end:0}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)})}),describe("Array of tuples, with bigger itemSize",()=>{const a={chainId:1,data:"0xcdcd77c000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000006",selector:"0xcdcd77c",to:(0,c.bufferToHexaString)(i),value:s};it("Extract the first tuple element of all array elements",()=>{const e=[{type:"REF"},{type:"ARRAY",itemSize:2},{type:"TUPLE",offset:0},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000001"),(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000003"),(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000005")])}),it("Extract the second tuple element of all array elements",()=>{const e=[{type:"REF"},{type:"ARRAY",itemSize:2},{type:"TUPLE",offset:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000002"),(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000004"),(0,c.hexaStringToBuffer)("0x0000000000000000000000000000000000000000000000000000000000000006")])})}),describe("Malformed calldata",()=>{const a={chainId:1,data:"0x2289b18c0000000000000000000000000000000000000000000000000000000000000080f000000000000000000000000000000000000000000000000000000000000140f000000000000000000000000000000000000000000000000000000000000002",selector:"0x2289b18c",to:(0,c.bufferToHexaString)(i),value:s};it("Dynamic leaf length overflow",()=>{const e=[{type:"TUPLE",offset:1},{type:"LEAF",leafType:"DYNAMIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Calldata smaller than dynamic leaf",()=>{const e=[{type:"TUPLE",offset:0},{type:"LEAF",leafType:"DYNAMIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Array length overflow",()=>{const e=[{type:"TUPLE",offset:1},{type:"ARRAY",itemSize:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Calldata smaller than array length",()=>{const e=[{type:"TUPLE",offset:0},{type:"ARRAY",itemSize:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Ref out of bounds",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"LEAF",leafType:"STATIC_LEAF"}],t=l.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)})})});
2
2
  //# sourceMappingURL=TransactionParserService.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/transaction/service/parser/TransactionParserService.test.ts"],
4
- "sourcesContent": ["import { ContainerPath, type DataPathElement } from \"@ledgerhq/context-module\";\nimport {\n bufferToHexaString,\n ByteArrayBuilder,\n hexaStringToBuffer,\n} from \"@ledgerhq/device-management-kit\";\nimport { Transaction } from \"ethers\";\n\nimport { TransactionParserService } from \"./TransactionParserService\";\n\ndescribe(\"TransactionParserService\", () => {\n const parser = new TransactionParserService();\n\n const TO = hexaStringToBuffer(\"0x3f32cF0B1DF94157EE1c3876c49BE3732C92a98f\")!;\n const VALUE = 81818275935222000n;\n const VALUE_BIN = new ByteArrayBuilder()\n .add256BitUIntToData(81818275935222000n)\n .build();\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n describe(\"Container paths\", () => {\n it(\"should extract TO of the container\", () => {\n // GIVEN\n const transaction = hexaStringToBuffer(\n Transaction.from({\n to: bufferToHexaString(TO),\n value: VALUE,\n data: \"0x\",\n }).unsignedSerialized,\n )!;\n\n // WHEN\n const value = parser.extractValue(transaction, ContainerPath.TO);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([TO]);\n });\n\n it(\"should extract VALUE of the container\", () => {\n // GIVEN\n const transaction = hexaStringToBuffer(\n Transaction.from({\n to: bufferToHexaString(TO),\n value: VALUE,\n data: \"0x\",\n }).unsignedSerialized,\n )!;\n\n // WHEN\n const value = parser.extractValue(transaction, ContainerPath.VALUE);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([VALUE_BIN]);\n });\n\n it(\"Unavailable container fields\", () => {\n // GIVEN\n const transaction = hexaStringToBuffer(\n Transaction.from({\n data: \"0x\",\n signature: {\n r: \"0x73b969418389828a6328fdb96e747296226832894b8bb46d60f231a9960ec3b5\",\n s: \"0x4806aaccc52354f4a42ef9efe0d89dd8cf95210829443ad7f4a9017d6b02de07\",\n v: 1,\n },\n }).unsignedSerialized,\n )!;\n\n // WHEN\n const from = parser.extractValue(transaction, ContainerPath.FROM);\n const to = parser.extractValue(transaction, ContainerPath.TO);\n\n // THEN\n expect(from.isRight()).toStrictEqual(false);\n expect(to.isRight()).toStrictEqual(false);\n });\n\n it(\"invalid transaction format\", () => {\n // GIVEN\n const transaction = hexaStringToBuffer(\"0xdeadbeef\")!;\n\n // WHEN\n const from = parser.extractValue(transaction, ContainerPath.FROM);\n\n // THEN\n expect(from.isRight()).toStrictEqual(false);\n });\n });\n\n describe(\"Data paths in a calldata with static elements\", () => {\n // Example from abi specification:\n // https://docs.soliditylang.org/en/latest/abi-spec.html\n //\n // function baz(uint32 x, bool y)\n // parameters: x = 69\n // y = true\n // calldata:\n // 0xcdcd77c0\n // [0] 0x0000000000000000000000000000000000000000000000000000000000000045\n // [1] 0x0000000000000000000000000000000000000000000000000000000000000001\n const TX = hexaStringToBuffer(\n Transaction.from({\n to: bufferToHexaString(TO),\n value: VALUE,\n data: \"0xcdcd77c000000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000000000000000000000000000000000000001\",\n }).unsignedSerialized,\n )!;\n\n it(\"Extract the first element\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000045\",\n )!,\n ]);\n });\n\n it(\"Extract the second element\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n )!,\n ]);\n });\n\n it(\"Slice the static leaf\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n {\n type: \"SLICE\",\n start: -4,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\"0x00000045\")!,\n ]);\n });\n\n it(\"Out of bounds\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 2,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n });\n\n describe(\"Data paths in a calldata with dynamic elements\", () => {\n // Example from abi specification:\n // https://docs.soliditylang.org/en/latest/abi-spec.html\n //\n // function g(uint256[][] x, string[] x)\n // parameters: x = [[1, 2], [3]]\n // y = [\"one\", \"two\", \"three\"]\n // calldata:\n // 0x2289b18c\n // [0] 0x0000000000000000000000000000000000000000000000000000000000000040: offset of x\n // [1] 0x0000000000000000000000000000000000000000000000000000000000000140: offset of y\n // [2] 0x0000000000000000000000000000000000000000000000000000000000000002: length of x\n // [3] 0x0000000000000000000000000000000000000000000000000000000000000040: offset of x[0]\n // [4] 0x00000000000000000000000000000000000000000000000000000000000000a0: offset of x[1]\n // [5] 0x0000000000000000000000000000000000000000000000000000000000000002: length of x[0]\n // [6] 0x0000000000000000000000000000000000000000000000000000000000000001: value of x[0][0] = 1\n // [7] 0x0000000000000000000000000000000000000000000000000000000000000002: value of x[0][1] = 2\n // [8] 0x0000000000000000000000000000000000000000000000000000000000000001: length of x[1]\n // [9] 0x0000000000000000000000000000000000000000000000000000000000000003: value of x[1][0] = 3\n // [10] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y\n // [11] 0x0000000000000000000000000000000000000000000000000000000000000060: offset of y[0]\n // [12] 0x00000000000000000000000000000000000000000000000000000000000000a0: offset of y[1]\n // [13] 0x00000000000000000000000000000000000000000000000000000000000000e0: offset of y[2]\n // [14] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y[0]\n // [15] 0x6f6e650000000000000000000000000000000000000000000000000000000000: value of y[0] = \"one\"\n // [16] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y[1]\n // [17] 0x74776f0000000000000000000000000000000000000000000000000000000000: value of y[1] = \"two\"\n // [18] 0x0000000000000000000000000000000000000000000000000000000000000005: length of y[2]\n // [19] 0x7468726565000000000000000000000000000000000000000000000000000000: value of y[2] = \"three\"\n const TX = hexaStringToBuffer(\n Transaction.from({\n to: bufferToHexaString(TO),\n value: VALUE,\n data: \"0x2289b18c000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000036f6e650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000374776f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057468726565000000000000000000000000000000000000000000000000000000\",\n }).unsignedSerialized,\n )!;\n\n it(\"Extract all the elements of x, concatenated together\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000003\",\n )!,\n ]);\n });\n\n it(\"Extract all the elements of x[0]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 0,\n end: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n )!,\n ]);\n });\n\n it(\"Extract all the elements of x[0:-1][-1:]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 0,\n end: -1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: -1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n )!,\n ]);\n });\n\n it(\"Array out of bounds\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 0,\n end: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 2,\n end: 3,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Extract all the elements of x[1]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\"0x6f6e65\")!,\n hexaStringToBuffer(\"0x74776f\")!,\n hexaStringToBuffer(\"0x7468726565\")!,\n ]);\n });\n\n it(\"Extract all the elements of x[1][:2]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n end: 2,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\"0x6f6e65\")!,\n hexaStringToBuffer(\"0x74776f\")!,\n ]);\n });\n\n it(\"Slice the dynamic leaf with [1:-2]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 2,\n end: 3,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n {\n type: \"SLICE\",\n start: 1,\n end: -2,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\"0x6872\")!,\n ]);\n });\n\n it(\"Slice the dynamic leaf with [-1:]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 2,\n end: 3,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n {\n type: \"SLICE\",\n start: -1,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([hexaStringToBuffer(\"0x65\")!]);\n });\n\n it(\"Slice the dynamic leaf with [:1]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 2,\n end: 3,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n {\n type: \"SLICE\",\n end: 1,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([hexaStringToBuffer(\"0x74\")!]);\n });\n\n it(\"Error no leaf\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Error slice not at the end\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"SLICE\",\n start: 0,\n end: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Error empty slice\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n {\n type: \"SLICE\",\n start: 0,\n end: 0,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n });\n\n describe(\"Array of tuples, with bigger itemSize\", () => {\n // Example constructed with an array of tuples just for the tests\n //\n // function baz((uint32, uint32) myTuple[])\n // parameters: myTuple = [ (1, 2), (3, 4), (5, 6) ]\n // calldata:\n // 0xcdcd77c0\n // [0] 0x0000000000000000000000000000000000000000000000000000000000000020\n // [1] 0x0000000000000000000000000000000000000000000000000000000000000003\n // [2] 0x0000000000000000000000000000000000000000000000000000000000000001\n // [3] 0x0000000000000000000000000000000000000000000000000000000000000002\n // [4] 0x0000000000000000000000000000000000000000000000000000000000000003\n // [5] 0x0000000000000000000000000000000000000000000000000000000000000004\n // [6] 0x0000000000000000000000000000000000000000000000000000000000000005\n // [7] 0x0000000000000000000000000000000000000000000000000000000000000006\n const TX = hexaStringToBuffer(\n Transaction.from({\n to: bufferToHexaString(TO),\n value: VALUE,\n data: \"0xcdcd77c000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000006\",\n }).unsignedSerialized,\n )!;\n\n it(\"Extract the first tuple element of all array elements\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 2,\n },\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000003\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000005\",\n )!,\n ]);\n });\n\n it(\"Extract the second tuple element of all array elements\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 2,\n },\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000004\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000006\",\n )!,\n ]);\n });\n });\n\n describe(\"Malformed calldata\", () => {\n // Example constructed with invalid data just for the tests\n //\n // calldata:\n // 0x2289b18c\n // [0] 0x0000000000000000000000000000000000000000000000000000000000000080\n // [1] 0xf000000000000000000000000000000000000000000000000000000000000140\n // [2] 0xf000000000000000000000000000000000000000000000000000000000000002\n const TX = hexaStringToBuffer(\n Transaction.from({\n to: bufferToHexaString(TO),\n value: VALUE,\n data: \"0x2289b18c0000000000000000000000000000000000000000000000000000000000000080f000000000000000000000000000000000000000000000000000000000000140f000000000000000000000000000000000000000000000000000000000000002\",\n }).unsignedSerialized,\n )!;\n\n it(\"Dynamic leaf length overflow\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Calldata smaller than dynamic leaf\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Array length overflow\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Calldata smaller than array length\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Ref out of bounds\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(TX, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["import_context_module", "import_device_management_kit", "import_ethers", "import_TransactionParserService", "parser", "TO", "VALUE", "VALUE_BIN", "transaction", "value", "from", "to", "TX", "path"]
4
+ "sourcesContent": ["import {\n ContainerPath,\n type DataPathElement,\n type TransactionSubset,\n} from \"@ledgerhq/context-module\";\nimport {\n bufferToHexaString,\n ByteArrayBuilder,\n hexaStringToBuffer,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { TransactionParserService } from \"./TransactionParserService\";\n\ndescribe(\"TransactionParserService\", () => {\n const parser = new TransactionParserService();\n\n const TO = hexaStringToBuffer(\"0x3f32cF0B1DF94157EE1c3876c49BE3732C92a98f\")!;\n const VALUE = 81818275935222000n;\n const VALUE_BIN = new ByteArrayBuilder()\n .add256BitUIntToData(81818275935222000n)\n .build();\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n describe(\"Container paths\", () => {\n it(\"should extract TO of the container\", () => {\n // GIVEN\n const subset = {\n chainId: 1,\n data: \"0x\",\n selector: \"0x\",\n to: bufferToHexaString(TO),\n value: VALUE,\n };\n\n // WHEN\n const value = parser.extractValue(subset, ContainerPath.TO);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([TO]);\n });\n\n it(\"should extract VALUE of the container\", () => {\n // GIVEN\n\n const subset = {\n chainId: 1,\n data: \"0x\",\n selector: \"0x\",\n to: bufferToHexaString(TO),\n value: VALUE,\n };\n\n // WHEN\n const value = parser.extractValue(subset, ContainerPath.VALUE);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([VALUE_BIN]);\n });\n\n it(\"Unavailable container fields\", () => {\n // GIVEN\n const subset = {\n chainId: 1,\n data: \"0x\",\n selector: \"0x\",\n to: undefined,\n from: undefined,\n value: VALUE,\n };\n\n // WHEN\n const from = parser.extractValue(subset, ContainerPath.FROM);\n const to = parser.extractValue(subset, ContainerPath.TO);\n\n // THEN\n expect(from.isRight()).toStrictEqual(false);\n expect(to.isRight()).toStrictEqual(false);\n });\n\n it(\"invalid transaction format\", () => {\n // GIVEN\n const transaction = hexaStringToBuffer(\n \"0xdeadbeef\",\n ) as unknown as TransactionSubset;\n\n // WHEN\n const from = parser.extractValue(transaction, ContainerPath.FROM);\n\n // THEN\n expect(from.isRight()).toStrictEqual(false);\n });\n });\n\n describe(\"Data paths in a calldata with static elements\", () => {\n // Example from abi specification:\n // https://docs.soliditylang.org/en/latest/abi-spec.html\n //\n // function baz(uint32 x, bool y)\n // parameters: x = 69\n // y = true\n // calldata:\n // 0xcdcd77c0\n // [0] 0x0000000000000000000000000000000000000000000000000000000000000045\n // [1] 0x0000000000000000000000000000000000000000000000000000000000000001\n const subset = {\n chainId: 1,\n data: \"0xcdcd77c000000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000000000000000000000000000000000000001\",\n selector: \"0xcdcd77c\",\n to: bufferToHexaString(TO),\n value: VALUE,\n };\n\n it(\"Extract the first element\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000045\",\n )!,\n ]);\n });\n\n it(\"Extract the second element\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n )!,\n ]);\n });\n\n it(\"Slice the static leaf\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n {\n type: \"SLICE\",\n start: -4,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\"0x00000045\")!,\n ]);\n });\n\n it(\"Out of bounds\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 2,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n });\n\n describe(\"Data paths in a calldata with dynamic elements\", () => {\n // Example from abi specification:\n // https://docs.soliditylang.org/en/latest/abi-spec.html\n //\n // function g(uint256[][] x, string[] x)\n // parameters: x = [[1, 2], [3]]\n // y = [\"one\", \"two\", \"three\"]\n // calldata:\n // 0x2289b18c\n // [0] 0x0000000000000000000000000000000000000000000000000000000000000040: offset of x\n // [1] 0x0000000000000000000000000000000000000000000000000000000000000140: offset of y\n // [2] 0x0000000000000000000000000000000000000000000000000000000000000002: length of x\n // [3] 0x0000000000000000000000000000000000000000000000000000000000000040: offset of x[0]\n // [4] 0x00000000000000000000000000000000000000000000000000000000000000a0: offset of x[1]\n // [5] 0x0000000000000000000000000000000000000000000000000000000000000002: length of x[0]\n // [6] 0x0000000000000000000000000000000000000000000000000000000000000001: value of x[0][0] = 1\n // [7] 0x0000000000000000000000000000000000000000000000000000000000000002: value of x[0][1] = 2\n // [8] 0x0000000000000000000000000000000000000000000000000000000000000001: length of x[1]\n // [9] 0x0000000000000000000000000000000000000000000000000000000000000003: value of x[1][0] = 3\n // [10] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y\n // [11] 0x0000000000000000000000000000000000000000000000000000000000000060: offset of y[0]\n // [12] 0x00000000000000000000000000000000000000000000000000000000000000a0: offset of y[1]\n // [13] 0x00000000000000000000000000000000000000000000000000000000000000e0: offset of y[2]\n // [14] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y[0]\n // [15] 0x6f6e650000000000000000000000000000000000000000000000000000000000: value of y[0] = \"one\"\n // [16] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y[1]\n // [17] 0x74776f0000000000000000000000000000000000000000000000000000000000: value of y[1] = \"two\"\n // [18] 0x0000000000000000000000000000000000000000000000000000000000000005: length of y[2]\n // [19] 0x7468726565000000000000000000000000000000000000000000000000000000: value of y[2] = \"three\"\n const subset = {\n to: bufferToHexaString(TO),\n value: VALUE,\n chainId: 1,\n data: \"0x2289b18c000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000036f6e650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000374776f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057468726565000000000000000000000000000000000000000000000000000000\",\n selector: \"0x2289b18c\",\n };\n it(\"Extract all the elements of x, concatenated together\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000003\",\n )!,\n ]);\n });\n\n it(\"Extract all the elements of x[0]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 0,\n end: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n )!,\n ]);\n });\n\n it(\"Extract all the elements of x[0:-1][-1:]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 0,\n end: -1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: -1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n )!,\n ]);\n });\n\n it(\"Array out of bounds\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 0,\n end: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 2,\n end: 3,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Extract all the elements of x[1]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\"0x6f6e65\")!,\n hexaStringToBuffer(\"0x74776f\")!,\n hexaStringToBuffer(\"0x7468726565\")!,\n ]);\n });\n\n it(\"Extract all the elements of x[1][:2]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n end: 2,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\"0x6f6e65\")!,\n hexaStringToBuffer(\"0x74776f\")!,\n ]);\n });\n\n it(\"Slice the dynamic leaf with [1:-2]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 2,\n end: 3,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n {\n type: \"SLICE\",\n start: 1,\n end: -2,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\"0x6872\")!,\n ]);\n });\n\n it(\"Slice the dynamic leaf with [-1:]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 2,\n end: 3,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n {\n type: \"SLICE\",\n start: -1,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([hexaStringToBuffer(\"0x65\")!]);\n });\n\n it(\"Slice the dynamic leaf with [:1]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 2,\n end: 3,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n {\n type: \"SLICE\",\n end: 1,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([hexaStringToBuffer(\"0x74\")!]);\n });\n\n it(\"Error no leaf\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Error slice not at the end\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"SLICE\",\n start: 0,\n end: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Error empty slice\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n {\n type: \"SLICE\",\n start: 0,\n end: 0,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n });\n\n describe(\"Array of tuples, with bigger itemSize\", () => {\n // Example constructed with an array of tuples just for the tests\n //\n // function baz((uint32, uint32) myTuple[])\n // parameters: myTuple = [ (1, 2), (3, 4), (5, 6) ]\n // calldata:\n // 0xcdcd77c0\n // [0] 0x0000000000000000000000000000000000000000000000000000000000000020\n // [1] 0x0000000000000000000000000000000000000000000000000000000000000003\n // [2] 0x0000000000000000000000000000000000000000000000000000000000000001\n // [3] 0x0000000000000000000000000000000000000000000000000000000000000002\n // [4] 0x0000000000000000000000000000000000000000000000000000000000000003\n // [5] 0x0000000000000000000000000000000000000000000000000000000000000004\n // [6] 0x0000000000000000000000000000000000000000000000000000000000000005\n // [7] 0x0000000000000000000000000000000000000000000000000000000000000006\n const subset = {\n chainId: 1,\n data: \"0xcdcd77c000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000006\",\n selector: \"0xcdcd77c\",\n to: bufferToHexaString(TO),\n value: VALUE,\n };\n\n it(\"Extract the first tuple element of all array elements\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 2,\n },\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000003\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000005\",\n )!,\n ]);\n });\n\n it(\"Extract the second tuple element of all array elements\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 2,\n },\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000004\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000006\",\n )!,\n ]);\n });\n });\n\n describe(\"Malformed calldata\", () => {\n // Example constructed with invalid data just for the tests\n //\n // calldata:\n // 0x2289b18c\n // [0] 0x0000000000000000000000000000000000000000000000000000000000000080\n // [1] 0xf000000000000000000000000000000000000000000000000000000000000140\n // [2] 0xf000000000000000000000000000000000000000000000000000000000000002\n const subset = {\n chainId: 1,\n data: \"0x2289b18c0000000000000000000000000000000000000000000000000000000000000080f000000000000000000000000000000000000000000000000000000000000140f000000000000000000000000000000000000000000000000000000000000002\",\n selector: \"0x2289b18c\",\n to: bufferToHexaString(TO),\n value: VALUE,\n };\n\n it(\"Dynamic leaf length overflow\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Calldata smaller than dynamic leaf\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Array length overflow\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Calldata smaller than array length\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Ref out of bounds\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["import_context_module", "import_device_management_kit", "import_TransactionParserService", "parser", "TO", "VALUE", "VALUE_BIN", "subset", "value", "from", "to", "transaction", "path"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var i=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var D=Object.prototype.hasOwnProperty;var c=(e,t)=>{for(var o in t)i(e,o,{get:t[o],enumerable:!0})},u=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of m(t))!D.call(e,a)&&a!==o&&i(e,a,{get:()=>t[a],enumerable:!(r=y(t,a))||r.enumerable});return e};var _=e=>u(i({},"__esModule",{value:!0}),e);var T={};c(T,{typedDataModuleFactory:()=>f});module.exports=_(T);var p=require("inversify"),n=require("../../typed-data/di/typedDataTypes"),d=require("../../typed-data/service/DefaultTypedDataParserService"),s=require("../../typed-data/use-case/SignTypedDataUseCase");const f=()=>new p.ContainerModule((e,t,o,r,a,v,S)=>{e(n.typedDataTypes.SignTypedDataUseCase).to(s.SignTypedDataUseCase),e(n.typedDataTypes.TypedDataParserService).to(d.DefaultTypedDataParserService)});0&&(module.exports={typedDataModuleFactory});
1
+ "use strict";var o=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var n=(e,a)=>{for(var r in a)o(e,r,{get:a[r],enumerable:!0})},T=(e,a,r,i)=>{if(a&&typeof a=="object"||typeof a=="function")for(let t of D(a))!f.call(e,t)&&t!==r&&o(e,t,{get:()=>a[t],enumerable:!(i=d(a,t))||i.enumerable});return e};var c=e=>T(o({},"__esModule",{value:!0}),e);var l={};n(l,{typedDataModuleFactory:()=>S});module.exports=c(l);var m=require("inversify"),p=require("../../typed-data/di/typedDataTypes"),s=require("../../typed-data/service/DefaultTypedDataParserService"),y=require("../../typed-data/use-case/SignTypedDataUseCase");const S=()=>new m.ContainerModule(({bind:e})=>{e(p.typedDataTypes.SignTypedDataUseCase).to(y.SignTypedDataUseCase),e(p.typedDataTypes.TypedDataParserService).to(s.DefaultTypedDataParserService)});0&&(module.exports={typedDataModuleFactory});
2
2
  //# sourceMappingURL=typedDataModule.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/typed-data/di/typedDataModule.ts"],
4
- "sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { typedDataTypes } from \"@internal/typed-data/di/typedDataTypes\";\nimport { DefaultTypedDataParserService } from \"@internal/typed-data/service/DefaultTypedDataParserService\";\nimport { SignTypedDataUseCase } from \"@internal/typed-data/use-case/SignTypedDataUseCase\";\n\nexport const typedDataModuleFactory = () =>\n new ContainerModule(\n (\n bind,\n _unbind,\n _isBound,\n _rebind,\n _unbindAsync,\n _onActivation,\n _onDeactivation,\n ) => {\n bind(typedDataTypes.SignTypedDataUseCase).to(SignTypedDataUseCase);\n bind(typedDataTypes.TypedDataParserService).to(\n DefaultTypedDataParserService,\n );\n },\n );\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAgC,qBAEhCC,EAA+B,kDAC/BC,EAA8C,sEAC9CC,EAAqC,8DAE9B,MAAML,EAAyB,IACpC,IAAI,kBACF,CACEM,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,IACG,CACHN,EAAK,iBAAe,oBAAoB,EAAE,GAAG,sBAAoB,EACjEA,EAAK,iBAAe,sBAAsB,EAAE,GAC1C,+BACF,CACF,CACF",
6
- "names": ["typedDataModule_exports", "__export", "typedDataModuleFactory", "__toCommonJS", "import_inversify", "import_typedDataTypes", "import_DefaultTypedDataParserService", "import_SignTypedDataUseCase", "bind", "_unbind", "_isBound", "_rebind", "_unbindAsync", "_onActivation", "_onDeactivation"]
4
+ "sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { typedDataTypes } from \"@internal/typed-data/di/typedDataTypes\";\nimport { DefaultTypedDataParserService } from \"@internal/typed-data/service/DefaultTypedDataParserService\";\nimport { SignTypedDataUseCase } from \"@internal/typed-data/use-case/SignTypedDataUseCase\";\n\nexport const typedDataModuleFactory = () =>\n new ContainerModule(({ bind }) => {\n bind(typedDataTypes.SignTypedDataUseCase).to(SignTypedDataUseCase);\n bind(typedDataTypes.TypedDataParserService).to(\n DefaultTypedDataParserService,\n );\n });\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAgC,qBAEhCC,EAA+B,kDAC/BC,EAA8C,sEAC9CC,EAAqC,8DAE9B,MAAML,EAAyB,IACpC,IAAI,kBAAgB,CAAC,CAAE,KAAAM,CAAK,IAAM,CAChCA,EAAK,iBAAe,oBAAoB,EAAE,GAAG,sBAAoB,EACjEA,EAAK,iBAAe,sBAAsB,EAAE,GAC1C,+BACF,CACF,CAAC",
6
+ "names": ["typedDataModule_exports", "__export", "typedDataModuleFactory", "__toCommonJS", "import_inversify", "import_typedDataTypes", "import_DefaultTypedDataParserService", "import_SignTypedDataUseCase", "bind"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var o=require("inversify"),a=require("./typedDataModule");describe("TypedDataModuleFactory",()=>{describe("Default",()=>{let t,e;beforeEach(()=>{e=(0,a.typedDataModuleFactory)(),t=new o.Container,t.load(e)}),it("should return the typed data module",()=>{expect(e).toBeDefined()})})});
1
+ "use strict";var o=require("inversify"),a=require("./typedDataModule");describe("TypedDataModuleFactory",()=>{describe("Default",()=>{let t,e;beforeEach(()=>{e=(0,a.typedDataModuleFactory)(),t=new o.Container,t.loadSync(e)}),it("should return the typed data module",()=>{expect(e).toBeDefined()})})});
2
2
  //# sourceMappingURL=typedDataModule.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/typed-data/di/typedDataModule.test.ts"],
4
- "sourcesContent": ["import { Container } from \"inversify\";\n\nimport { typedDataModuleFactory } from \"./typedDataModule\";\n\ndescribe(\"TypedDataModuleFactory\", () => {\n describe(\"Default\", () => {\n let container: Container;\n let mod: ReturnType<typeof typedDataModuleFactory>;\n beforeEach(() => {\n mod = typedDataModuleFactory();\n container = new Container();\n container.load(mod);\n });\n\n it(\"should return the typed data module\", () => {\n expect(mod).toBeDefined();\n });\n });\n});\n"],
5
- "mappings": "aAAA,IAAAA,EAA0B,qBAE1BC,EAAuC,6BAEvC,SAAS,yBAA0B,IAAM,CACvC,SAAS,UAAW,IAAM,CACxB,IAAIC,EACAC,EACJ,WAAW,IAAM,CACfA,KAAM,0BAAuB,EAC7BD,EAAY,IAAI,YAChBA,EAAU,KAAKC,CAAG,CACpB,CAAC,EAED,GAAG,sCAAuC,IAAM,CAC9C,OAAOA,CAAG,EAAE,YAAY,CAC1B,CAAC,CACH,CAAC,CACH,CAAC",
4
+ "sourcesContent": ["import { Container } from \"inversify\";\n\nimport { typedDataModuleFactory } from \"./typedDataModule\";\n\ndescribe(\"TypedDataModuleFactory\", () => {\n describe(\"Default\", () => {\n let container: Container;\n let mod: ReturnType<typeof typedDataModuleFactory>;\n beforeEach(() => {\n mod = typedDataModuleFactory();\n container = new Container();\n container.loadSync(mod);\n });\n\n it(\"should return the typed data module\", () => {\n expect(mod).toBeDefined();\n });\n });\n});\n"],
5
+ "mappings": "aAAA,IAAAA,EAA0B,qBAE1BC,EAAuC,6BAEvC,SAAS,yBAA0B,IAAM,CACvC,SAAS,UAAW,IAAM,CACxB,IAAIC,EACAC,EACJ,WAAW,IAAM,CACfA,KAAM,0BAAuB,EAC7BD,EAAY,IAAI,YAChBA,EAAU,SAASC,CAAG,CACxB,CAAC,EAED,GAAG,sCAAuC,IAAM,CAC9C,OAAOA,CAAG,EAAE,YAAY,CAC1B,CAAC,CACH,CAAC,CACH,CAAC",
6
6
  "names": ["import_inversify", "import_typedDataModule", "container", "mod"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var i=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var E=Object.prototype.hasOwnProperty;var f=(o,r)=>{for(var s in r)i(o,s,{get:r[s],enumerable:!0})},h=(o,r,s,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let e of g(r))!E.call(o,e)&&e!==s&&i(o,e,{get:()=>r[e],enumerable:!(t=a(r,e))||t.enumerable});return o};var D=o=>h(i({},"__esModule",{value:!0}),o),c=(o,r,s,t)=>{for(var e=t>1?void 0:t?a(r,s):r,p=o.length-1,m;p>=0;p--)(m=o[p])&&(e=(t?m(r,s,e):m(e))||e);return t&&e&&i(r,s,e),e};var P={};f(P,{DefaultTypedDataParserService:()=>n});module.exports=D(P);var y=require("inversify"),d=require("./TypedDataParser");let n=class{parse(r){const s=new d.TypedDataParser(r.types),t=s.getStructDefinitions(),e=s.parse("EIP712Domain",r.domain),p=s.parse(r.primaryType,r.message);return e.chain(m=>p.map(T=>({types:t,domain:m,message:T})))}};n=c([(0,y.injectable)()],n);0&&(module.exports={DefaultTypedDataParserService});
1
+ "use strict";var i=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var E=Object.prototype.hasOwnProperty;var f=(o,r)=>{for(var s in r)i(o,s,{get:r[s],enumerable:!0})},h=(o,r,s,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let e of g(r))!E.call(o,e)&&e!==s&&i(o,e,{get:()=>r[e],enumerable:!(t=a(r,e))||t.enumerable});return o};var D=o=>h(i({},"__esModule",{value:!0}),o),c=(o,r,s,t)=>{for(var e=t>1?void 0:t?a(r,s):r,m=o.length-1,p;m>=0;m--)(p=o[m])&&(e=(t?p(r,s,e):p(e))||e);return t&&e&&i(r,s,e),e};var P={};f(P,{DefaultTypedDataParserService:()=>n});module.exports=D(P);var y=require("inversify"),d=require("./TypedDataParser");let n=class{parse(r){const s=new d.TypedDataParser(r.types,r.domain),t=s.getStructDefinitions(),e=s.parse("EIP712Domain",r.domain),m=s.parse(r.primaryType,r.message);return e.chain(p=>m.map(T=>({types:t,domain:p,message:T})))}};n=c([(0,y.injectable)()],n);0&&(module.exports={DefaultTypedDataParserService});
2
2
  //# sourceMappingURL=DefaultTypedDataParserService.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/typed-data/service/DefaultTypedDataParserService.ts"],
4
- "sourcesContent": ["import { injectable } from \"inversify\";\nimport { Either } from \"purify-ts\";\n\nimport { TypedData } from \"@api/model/TypedData\";\n\nimport { TypedDataParser } from \"./TypedDataParser\";\nimport {\n ParsedTypedData,\n TypedDataParserService,\n} from \"./TypedDataParserService\";\n\n@injectable()\nexport class DefaultTypedDataParserService implements TypedDataParserService {\n parse(data: TypedData): Either<Error, ParsedTypedData> {\n const parser = new TypedDataParser(data.types);\n const types = parser.getStructDefinitions();\n const domainResult = parser.parse(\n \"EIP712Domain\",\n data.domain as Record<string, unknown>,\n );\n const messageResult = parser.parse(data.primaryType, data.message);\n return domainResult.chain((domain) =>\n messageResult.map((message) => ({\n types,\n domain,\n message,\n })),\n );\n }\n}\n"],
5
- "mappings": "2iBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAA2B,qBAK3BC,EAAgC,6BAOzB,IAAMC,EAAN,KAAsE,CAC3E,MAAMC,EAAiD,CACrD,MAAMC,EAAS,IAAI,kBAAgBD,EAAK,KAAK,EACvCE,EAAQD,EAAO,qBAAqB,EACpCE,EAAeF,EAAO,MAC1B,eACAD,EAAK,MACP,EACMI,EAAgBH,EAAO,MAAMD,EAAK,YAAaA,EAAK,OAAO,EACjE,OAAOG,EAAa,MAAOE,GACzBD,EAAc,IAAKE,IAAa,CAC9B,MAAAJ,EACA,OAAAG,EACA,QAAAC,CACF,EAAE,CACJ,CACF,CACF,EAjBaP,EAANQ,EAAA,IADN,cAAW,GACCR",
4
+ "sourcesContent": ["import { injectable } from \"inversify\";\nimport { Either } from \"purify-ts\";\n\nimport { TypedData } from \"@api/model/TypedData\";\n\nimport { TypedDataParser } from \"./TypedDataParser\";\nimport {\n ParsedTypedData,\n TypedDataParserService,\n} from \"./TypedDataParserService\";\n\n@injectable()\nexport class DefaultTypedDataParserService implements TypedDataParserService {\n parse(data: TypedData): Either<Error, ParsedTypedData> {\n const parser = new TypedDataParser(data.types, data.domain);\n const types = parser.getStructDefinitions();\n const domainResult = parser.parse(\n \"EIP712Domain\",\n data.domain as Record<string, unknown>,\n );\n const messageResult = parser.parse(data.primaryType, data.message);\n return domainResult.chain((domain) =>\n messageResult.map((message) => ({\n types,\n domain,\n message,\n })),\n );\n }\n}\n"],
5
+ "mappings": "2iBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAA2B,qBAK3BC,EAAgC,6BAOzB,IAAMC,EAAN,KAAsE,CAC3E,MAAMC,EAAiD,CACrD,MAAMC,EAAS,IAAI,kBAAgBD,EAAK,MAAOA,EAAK,MAAM,EACpDE,EAAQD,EAAO,qBAAqB,EACpCE,EAAeF,EAAO,MAC1B,eACAD,EAAK,MACP,EACMI,EAAgBH,EAAO,MAAMD,EAAK,YAAaA,EAAK,OAAO,EACjE,OAAOG,EAAa,MAAOE,GACzBD,EAAc,IAAKE,IAAa,CAC9B,MAAAJ,EACA,OAAAG,EACA,QAAAC,CACF,EAAE,CACJ,CACF,CACF,EAjBaP,EAANQ,EAAA,IADN,cAAW,GACCR",
6
6
  "names": ["DefaultTypedDataParserService_exports", "__export", "DefaultTypedDataParserService", "__toCommonJS", "import_inversify", "import_TypedDataParser", "DefaultTypedDataParserService", "data", "parser", "types", "domainResult", "messageResult", "domain", "message", "__decorateClass"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var l=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var h=(u,t)=>{for(var e in t)l(u,e,{get:t[e],enumerable:!0})},V=(u,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of m(t))!T.call(u,i)&&i!==e&&l(u,i,{get:()=>t[i],enumerable:!(r=f(t,i))||r.enumerable});return u};var g=u=>V(l({},"__esModule",{value:!0}),u);var D={};h(D,{TypedDataParser:()=>v});module.exports=g(D);var a=require("purify-ts"),s=require("../../typed-data/model/Types"),p=require("./TypedDataEncoder");class v{structs;constructor(t){const e={};for(const[r,i]of Object.entries(t)){const o={};for(const n of i)o[n.name]=this.parseType(n.type);e[r]=o}this.structs=e}getStructDefinitions(){return this.structs}parse(t,e){if(!this.isRecord(e))return(0,a.Left)(new Error("Message is not a record"));const r=[{path:"",type:"",value:new s.TypedDataValueRoot(t)}];return this.visitValue(t,e,"",i=>r.push(i))?(0,a.Right)(r):(0,a.Left)(new Error("Failed to parse"))}isRecord(t){return typeof t=="object"&&t!==null}parseType(t){return this.tryParsePrimitiveType(t).mapOrDefault(e=>e,this.tryParseArrayType(t).mapOrDefault(e=>e,new s.StructType(t)))}tryParsePrimitiveType(t){{const e=t.match(/^(((u?)int)(\d+))$/);if(e){const r=parseInt(e[4]);return r%8!==0||r===0||r>256?a.Nothing:(0,a.Just)(new s.PrimitiveType(e[1],e[3]?"uint":"int",(0,a.Just)(r/8)))}}{const e=t.match(/^((bytes)(\d*))$/);if(e){const r=e[3]?parseInt(e[3]):null;return r!==null&&(r===0||r>32)?a.Nothing:(0,a.Just)(new s.PrimitiveType(e[1],"bytes",a.Maybe.fromNullable(r)))}}return t==="address"||t==="bool"||t==="string"?(0,a.Just)(new s.PrimitiveType(t,t,a.Nothing)):a.Nothing}tryParseArrayType(t){const e=t.match(/^([^[[]*)(((\[\d*\])*)\[\d*\])$/);if(e){const r=[...e[2].matchAll(/\[(\d*)\]/g)];if(r&&r.length>0){const i=r.map(([,n])=>n?(0,a.Just)(parseInt(n)):a.Nothing),o=this.tryParsePrimitiveType(e[1]).mapOrDefault(n=>n,new s.StructType(e[1]));return(0,a.Just)(new s.ArrayType(t,o,e[1]+e[3],i[i.length-1],i))}}return a.Nothing}visitValue(t,e,r,i){return this.tryVisitStructValue(t,e,r,i)||this.tryVisitPrimitiveValue(t,e,r,i)||this.tryVisitArrayValue(t,e,r,i)}tryVisitPrimitiveValue(t,e,r,i){return!this.isRecord(e)&&!Array.isArray(e)&&this.tryParsePrimitiveType(t).chain(o=>(0,p.encodeTypedDataValue)(o,e).ifJust(n=>{i({path:r,type:t,value:new s.TypedDataValueField(n)})})).isJust()}tryVisitStructValue(t,e,r,i){const o=this.structs[t];if(o===void 0||!this.isRecord(e))return!1;for(const[n,y]of Object.entries(o)){const d=e[n];if(d===void 0)return!1;const c=r.length?`${r}.${n}`:n;if(!this.visitValue(y.typeName,d,`${c}`,i))return!1}return!0}tryVisitArrayValue(t,e,r,i){return Array.isArray(e)&&this.tryParseArrayType(t).filter(o=>o.count.mapOrDefault(n=>e.length==n,!0)).mapOrDefault(o=>{i({path:r,type:t,value:new s.TypedDataValueArray(e.length)});for(const n of e){const y=r.length?`${r}.[]`:"[]";if(!this.visitValue(o.rowType,n,`${y}`,i))return!1}return!0},!1)}}0&&(module.exports={TypedDataParser});
1
+ "use strict";var y=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var h=(u,e)=>{for(var t in e)y(u,t,{get:e[t],enumerable:!0})},g=(u,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of f(e))!T.call(u,i)&&i!==t&&y(u,i,{get:()=>e[i],enumerable:!(r=m(e,i))||r.enumerable});return u};var V=u=>g(y({},"__esModule",{value:!0}),u);var v={};h(v,{TypedDataParser:()=>D});module.exports=V(v);var a=require("purify-ts"),o=require("../../typed-data/model/Types"),l=require("./TypedDataEncoder");class D{domainTypeName="EIP712Domain";domainDefaultTypes={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"};structs;constructor(e,t){if(!(this.domainTypeName in e)){const i=[];Object.entries(this.domainDefaultTypes).forEach(([s,n])=>{s in t&&i.push({name:s,type:n})}),i.length>0&&(e[this.domainTypeName]=i)}const r={};for(const[i,s]of Object.entries(e)){const n={};for(const d of s)n[d.name]=this.parseType(d.type);r[i]=n}this.structs=r}getStructDefinitions(){return this.structs}parse(e,t){if(!this.isRecord(t))return(0,a.Left)(new Error("Message is not a record"));const r=[{path:"",type:"",value:new o.TypedDataValueRoot(e)}];return this.visitValue(e,t,"",i=>r.push(i))?(0,a.Right)(r):(0,a.Left)(new Error("Failed to parse"))}isRecord(e){return typeof e=="object"&&e!==null}parseType(e){return this.tryParsePrimitiveType(e).mapOrDefault(t=>t,this.tryParseArrayType(e).mapOrDefault(t=>t,new o.StructType(e)))}tryParsePrimitiveType(e){{const t=e.match(/^(((u?)int)(\d+))$/);if(t){const r=parseInt(t[4]);return r%8!==0||r===0||r>256?a.Nothing:(0,a.Just)(new o.PrimitiveType(t[1],t[3]?"uint":"int",(0,a.Just)(r/8)))}}{const t=e.match(/^((bytes)(\d*))$/);if(t){const r=t[3]?parseInt(t[3]):null;return r!==null&&(r===0||r>32)?a.Nothing:(0,a.Just)(new o.PrimitiveType(t[1],"bytes",a.Maybe.fromNullable(r)))}}return e==="address"||e==="bool"||e==="string"?(0,a.Just)(new o.PrimitiveType(e,e,a.Nothing)):a.Nothing}tryParseArrayType(e){const t=e.match(/^([^[[]*)(((\[\d*\])*)\[\d*\])$/);if(t){const r=[...t[2].matchAll(/\[(\d*)\]/g)];if(r&&r.length>0){const i=r.map(([,n])=>n?(0,a.Just)(parseInt(n)):a.Nothing),s=this.tryParsePrimitiveType(t[1]).mapOrDefault(n=>n,new o.StructType(t[1]));return(0,a.Just)(new o.ArrayType(e,s,t[1]+t[3],i[i.length-1],i))}}return a.Nothing}visitValue(e,t,r,i){return this.tryVisitStructValue(e,t,r,i)||this.tryVisitPrimitiveValue(e,t,r,i)||this.tryVisitArrayValue(e,t,r,i)}tryVisitPrimitiveValue(e,t,r,i){return!this.isRecord(t)&&!Array.isArray(t)&&this.tryParsePrimitiveType(e).chain(s=>(0,l.encodeTypedDataValue)(s,t).ifJust(n=>{i({path:r,type:e,value:new o.TypedDataValueField(n)})})).isJust()}tryVisitStructValue(e,t,r,i){const s=this.structs[e];if(s===void 0||!this.isRecord(t))return!1;for(const[n,d]of Object.entries(s)){const p=t[n];if(p===void 0)return!1;const c=r.length?`${r}.${n}`:n;if(!this.visitValue(d.typeName,p,`${c}`,i))return!1}return!0}tryVisitArrayValue(e,t,r,i){return Array.isArray(t)&&this.tryParseArrayType(e).filter(s=>s.count.mapOrDefault(n=>t.length==n,!0)).mapOrDefault(s=>{i({path:r,type:e,value:new o.TypedDataValueArray(t.length)});for(const n of t){const d=r.length?`${r}.[]`:"[]";if(!this.visitValue(s.rowType,n,`${d}`,i))return!1}return!0},!1)}}0&&(module.exports={TypedDataParser});
2
2
  //# sourceMappingURL=TypedDataParser.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/typed-data/service/TypedDataParser.ts"],
4
- "sourcesContent": ["import { type Either, Just, Left, Maybe, Nothing, Right } from \"purify-ts\";\n\nimport { type TypedDataField } from \"@api/model/TypedData\";\nimport {\n ArrayType,\n type FieldName,\n type FieldType,\n PrimitiveType,\n type StructName,\n StructType,\n type TypedDataValue,\n TypedDataValueArray,\n TypedDataValueField,\n TypedDataValueRoot,\n} from \"@internal/typed-data/model/Types\";\n\nimport { encodeTypedDataValue } from \"./TypedDataEncoder\";\n\n/**\n * A parser for EIP-712 typed data messages.\n *\n * ```typescript\n * const types = {\n * Person: [\n * { name: 'name', type: 'string' },\n * { name: 'age', type: 'uint256' },\n * { name: \"wallets\", type: \"address[]\" },\n * ],\n * };\n * const parser = new TypedDataParser(types);\n *\n * const message = {\n * name: 'Alice',\n * age: 30,\n * wallets: [\n * \"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB\",\n * \"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB\",\n * ],\n * };\n * const rootType = 'Person';\n *\n * const result = parser.parse(rootType, message);\n * ```\n */\nexport class TypedDataParser {\n private readonly structs: Record<StructName, Record<FieldName, FieldType>>;\n\n /**\n * Creates a new instance of the TypedDataParser class.\n * @param types The types to be used for parsing the message.\n */\n constructor(types: Record<string, Array<TypedDataField>>) {\n // Parse the types to be used later for parsing a message.\n const structs: Record<StructName, Record<FieldName, FieldType>> = {};\n for (const [typedName, typedData] of Object.entries(types)) {\n const parsedTypedData: Record<FieldName, FieldType> = {};\n for (const data of typedData) {\n parsedTypedData[data.name] = this.parseType(data.type);\n }\n structs[typedName] = parsedTypedData;\n }\n this.structs = structs;\n }\n\n /**\n * Returns the parsed definitions of custom structs as defined in the types passed to the constructor.\n * @returns The struct definitions.\n */\n public getStructDefinitions(): Record<\n StructName,\n Record<FieldName, FieldType>\n > {\n return this.structs;\n }\n\n /**\n * Parses a message according to the primary type and the types passed to the constructor.\n * @param primaryType The root type of the message.\n * @param message The message to parse.\n * @returns An Either containing the parsed values or an error.\n */\n public parse(\n primaryType: string,\n message: unknown,\n ): Either<Error, Array<TypedDataValue>> {\n if (!this.isRecord(message)) {\n return Left(new Error(\"Message is not a record\"));\n }\n const values: Array<TypedDataValue> = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(primaryType),\n },\n ];\n return this.visitValue(primaryType, message, \"\", (val) => values.push(val))\n ? Right(values)\n : Left(new Error(\"Failed to parse\"));\n }\n\n private isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n }\n\n /**\n * Parses a type string description into a PrimitiveType, ArrayType, or StructType object.\n * The description string should match https://eips.ethereum.org/EIPS/eip-712#definition-of-typed-structured-data-%F0%9D%95%8A\n * Any string which doesn't match those patterns is considered a custom struct.\n * @param type The type string to parse.\n * @returns The parsed type object.\n */\n private parseType(type: string): PrimitiveType | ArrayType | StructType {\n return this.tryParsePrimitiveType(type).mapOrDefault(\n (just) => just,\n this.tryParseArrayType(type).mapOrDefault(\n (just) => just,\n new StructType(type),\n ),\n );\n }\n\n private tryParsePrimitiveType(type: string): Maybe<PrimitiveType> {\n // int8 to int256 and uint8 to uint256\n {\n const match = type.match(/^(((u?)int)(\\d+))$/);\n if (match) {\n const size = parseInt(match[4]!);\n if (size % 8 !== 0 || size === 0 || size > 256) {\n return Nothing; // Unsupported number\n }\n return Just(\n new PrimitiveType(\n match[1]!, // typeName such as uint64\n match[3] ? \"uint\" : \"int\", // name such as uint\n Just(size / 8), // size in bytes such as 8 for an uint64\n ),\n );\n }\n }\n\n // bytes1 to bytes32, or bytes (dynamic size)\n {\n const match = type.match(/^((bytes)(\\d*))$/);\n if (match) {\n const size = match[3] ? parseInt(match[3]) : null;\n if (size !== null && (size === 0 || size > 32)) {\n return Nothing; // Unsupported byte array\n }\n return Just(\n new PrimitiveType(\n match[1]!, // typename such as bytes32\n \"bytes\", // name\n Maybe.fromNullable(size), // size in bytes, or null for a dynamic size\n ),\n );\n }\n }\n\n // Other primitive types\n if (type === \"address\" || type === \"bool\" || type === \"string\") {\n return Just(\n new PrimitiveType(\n type, // typeName\n type, // name\n Nothing, // size not applicable for those types\n ),\n );\n }\n\n // Not a primitive type\n return Nothing;\n }\n\n private tryParseArrayType(type: string): Maybe<ArrayType> {\n // Try to match an array such as: foo[2][][3]\n const match = type.match(/^([^[[]*)(((\\[\\d*\\])*)\\[\\d*\\])$/);\n if (match) {\n const matchLevels = [...match[2]!.matchAll(/\\[(\\d*)\\]/g)];\n if (matchLevels && matchLevels.length > 0) {\n const levels = matchLevels.map(([, size]) =>\n size ? Just(parseInt(size)) : Nothing,\n );\n const rootType = this.tryParsePrimitiveType(match[1]!).mapOrDefault(\n (just) => just,\n new StructType(match[1]!),\n );\n return Just(\n new ArrayType(\n type, // typeName such as: foo[2][][3]\n rootType, // rootType such as: foo\n match[1]! + match[3], // rowType such as: foo[2][]\n levels[levels.length - 1]!, // rows count such as: 3\n levels, // All levels for that array (null for dynamic size), such as: [2, null, 3]\n ),\n );\n }\n }\n\n // Not an array\n return Nothing;\n }\n\n /**\n * Visits a value and its children recursively, parsing them into TypedDataValue objects.\n * @param type The type of the value.\n * @param value The value to visit.\n * @param path The path of the value.\n * @param callback The callback to call for each parsed value.\n * @returns True if the value and its children were successfully parsed, false otherwise.\n */\n private visitValue(\n type: string,\n value: unknown,\n path: string,\n callback: (parsedValue: TypedDataValue) => void,\n ): boolean {\n return (\n this.tryVisitStructValue(type, value, path, callback) ||\n this.tryVisitPrimitiveValue(type, value, path, callback) ||\n this.tryVisitArrayValue(type, value, path, callback)\n );\n }\n\n private tryVisitPrimitiveValue(\n type: string,\n value: unknown,\n path: string,\n callback: (parsedValue: TypedDataValue) => void,\n ): boolean {\n // Basic type (address, bool, uint256, etc)\n return (\n !this.isRecord(value) &&\n !Array.isArray(value) &&\n this.tryParsePrimitiveType(type)\n .chain((primitiveType) =>\n encodeTypedDataValue(primitiveType, value).ifJust((encoded) => {\n callback({\n path,\n type,\n value: new TypedDataValueField(encoded),\n });\n }),\n )\n .isJust()\n );\n }\n\n private tryVisitStructValue(\n type: string,\n value: unknown,\n path: string,\n callback: (parsedValue: TypedDataValue) => void,\n ): boolean {\n const structType = this.structs[type];\n if (structType === undefined || !this.isRecord(value)) {\n return false;\n }\n for (const [fieldName, fieldType] of Object.entries(structType)) {\n const fieldValue = value[fieldName];\n if (fieldValue === undefined) {\n return false;\n }\n const nextPath = path.length ? `${path}.${fieldName}` : fieldName;\n if (\n !this.visitValue(\n fieldType.typeName,\n fieldValue,\n `${nextPath}`,\n callback,\n )\n ) {\n return false;\n }\n }\n return true;\n }\n\n private tryVisitArrayValue(\n type: string,\n value: unknown,\n path: string,\n callback: (parsedValue: TypedDataValue) => void,\n ): boolean {\n return (\n Array.isArray(value) &&\n this.tryParseArrayType(type)\n .filter((t) => t.count.mapOrDefault((c) => value.length == c, true))\n .mapOrDefault((t) => {\n callback({\n path: path,\n type,\n value: new TypedDataValueArray(value.length),\n });\n for (const entry of value) {\n const nextPath = path.length ? `${path}.[]` : \"[]\";\n if (!this.visitValue(t.rowType, entry, `${nextPath}`, callback)) {\n return false;\n }\n }\n return true;\n }, false)\n );\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["TypedDataParser_exports", "__export", "TypedDataParser", "__toCommonJS", "import_purify_ts", "import_Types", "import_TypedDataEncoder", "types", "structs", "typedName", "typedData", "parsedTypedData", "data", "primaryType", "message", "values", "val", "value", "type", "just", "match", "size", "matchLevels", "levels", "rootType", "path", "callback", "primitiveType", "encoded", "structType", "fieldName", "fieldType", "fieldValue", "nextPath", "t", "c", "entry"]
4
+ "sourcesContent": ["import { type Either, Just, Left, Maybe, Nothing, Right } from \"purify-ts\";\n\nimport type { TypedDataDomain, TypedDataField } from \"@api/model/TypedData\";\nimport {\n ArrayType,\n type FieldName,\n type FieldType,\n PrimitiveType,\n type StructName,\n StructType,\n type TypedDataValue,\n TypedDataValueArray,\n TypedDataValueField,\n TypedDataValueRoot,\n} from \"@internal/typed-data/model/Types\";\n\nimport { encodeTypedDataValue } from \"./TypedDataEncoder\";\n\n/**\n * A parser for EIP-712 typed data messages.\n *\n * ```typescript\n * const types = {\n * Person: [\n * { name: 'name', type: 'string' },\n * { name: 'age', type: 'uint256' },\n * { name: \"wallets\", type: \"address[]\" },\n * ],\n * };\n * const parser = new TypedDataParser(types);\n *\n * const message = {\n * name: 'Alice',\n * age: 30,\n * wallets: [\n * \"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB\",\n * \"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB\",\n * ],\n * };\n * const rootType = 'Person';\n *\n * const result = parser.parse(rootType, message);\n * ```\n */\nexport class TypedDataParser {\n // Domain types from EIP712 specification:\n // https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator\n private readonly domainTypeName: string = \"EIP712Domain\";\n private readonly domainDefaultTypes: Record<string, string> = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\",\n };\n\n private readonly structs: Record<StructName, Record<FieldName, FieldType>>;\n\n /**\n * Creates a new instance of the TypedDataParser class.\n * @param types The types to be used for parsing the message.\n */\n constructor(\n types: Record<string, Array<TypedDataField>>,\n domain: TypedDataDomain,\n ) {\n // Append EIP712Domain to types if missing\n if (!(this.domainTypeName in types)) {\n const domainTypes: Array<TypedDataField> = [];\n Object.entries(this.domainDefaultTypes).forEach(([name, type]) => {\n if (name in domain) {\n domainTypes.push({ name, type });\n }\n });\n if (domainTypes.length > 0) {\n types[this.domainTypeName] = domainTypes;\n }\n }\n\n // Parse the types to be used later for parsing a message.\n const structs: Record<StructName, Record<FieldName, FieldType>> = {};\n for (const [typedName, typedData] of Object.entries(types)) {\n const parsedTypedData: Record<FieldName, FieldType> = {};\n for (const data of typedData) {\n parsedTypedData[data.name] = this.parseType(data.type);\n }\n structs[typedName] = parsedTypedData;\n }\n this.structs = structs;\n }\n\n /**\n * Returns the parsed definitions of custom structs as defined in the types passed to the constructor.\n * @returns The struct definitions.\n */\n public getStructDefinitions(): Record<\n StructName,\n Record<FieldName, FieldType>\n > {\n return this.structs;\n }\n\n /**\n * Parses a message according to the primary type and the types passed to the constructor.\n * @param primaryType The root type of the message.\n * @param message The message to parse.\n * @returns An Either containing the parsed values or an error.\n */\n public parse(\n primaryType: string,\n message: unknown,\n ): Either<Error, Array<TypedDataValue>> {\n if (!this.isRecord(message)) {\n return Left(new Error(\"Message is not a record\"));\n }\n const values: Array<TypedDataValue> = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(primaryType),\n },\n ];\n return this.visitValue(primaryType, message, \"\", (val) => values.push(val))\n ? Right(values)\n : Left(new Error(\"Failed to parse\"));\n }\n\n private isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n }\n\n /**\n * Parses a type string description into a PrimitiveType, ArrayType, or StructType object.\n * The description string should match https://eips.ethereum.org/EIPS/eip-712#definition-of-typed-structured-data-%F0%9D%95%8A\n * Any string which doesn't match those patterns is considered a custom struct.\n * @param type The type string to parse.\n * @returns The parsed type object.\n */\n private parseType(type: string): PrimitiveType | ArrayType | StructType {\n return this.tryParsePrimitiveType(type).mapOrDefault(\n (just) => just,\n this.tryParseArrayType(type).mapOrDefault(\n (just) => just,\n new StructType(type),\n ),\n );\n }\n\n private tryParsePrimitiveType(type: string): Maybe<PrimitiveType> {\n // int8 to int256 and uint8 to uint256\n {\n const match = type.match(/^(((u?)int)(\\d+))$/);\n if (match) {\n const size = parseInt(match[4]!);\n if (size % 8 !== 0 || size === 0 || size > 256) {\n return Nothing; // Unsupported number\n }\n return Just(\n new PrimitiveType(\n match[1]!, // typeName such as uint64\n match[3] ? \"uint\" : \"int\", // name such as uint\n Just(size / 8), // size in bytes such as 8 for an uint64\n ),\n );\n }\n }\n\n // bytes1 to bytes32, or bytes (dynamic size)\n {\n const match = type.match(/^((bytes)(\\d*))$/);\n if (match) {\n const size = match[3] ? parseInt(match[3]) : null;\n if (size !== null && (size === 0 || size > 32)) {\n return Nothing; // Unsupported byte array\n }\n return Just(\n new PrimitiveType(\n match[1]!, // typename such as bytes32\n \"bytes\", // name\n Maybe.fromNullable(size), // size in bytes, or null for a dynamic size\n ),\n );\n }\n }\n\n // Other primitive types\n if (type === \"address\" || type === \"bool\" || type === \"string\") {\n return Just(\n new PrimitiveType(\n type, // typeName\n type, // name\n Nothing, // size not applicable for those types\n ),\n );\n }\n\n // Not a primitive type\n return Nothing;\n }\n\n private tryParseArrayType(type: string): Maybe<ArrayType> {\n // Try to match an array such as: foo[2][][3]\n const match = type.match(/^([^[[]*)(((\\[\\d*\\])*)\\[\\d*\\])$/);\n if (match) {\n const matchLevels = [...match[2]!.matchAll(/\\[(\\d*)\\]/g)];\n if (matchLevels && matchLevels.length > 0) {\n const levels = matchLevels.map(([, size]) =>\n size ? Just(parseInt(size)) : Nothing,\n );\n const rootType = this.tryParsePrimitiveType(match[1]!).mapOrDefault(\n (just) => just,\n new StructType(match[1]!),\n );\n return Just(\n new ArrayType(\n type, // typeName such as: foo[2][][3]\n rootType, // rootType such as: foo\n match[1]! + match[3], // rowType such as: foo[2][]\n levels[levels.length - 1]!, // rows count such as: 3\n levels, // All levels for that array (null for dynamic size), such as: [2, null, 3]\n ),\n );\n }\n }\n\n // Not an array\n return Nothing;\n }\n\n /**\n * Visits a value and its children recursively, parsing them into TypedDataValue objects.\n * @param type The type of the value.\n * @param value The value to visit.\n * @param path The path of the value.\n * @param callback The callback to call for each parsed value.\n * @returns True if the value and its children were successfully parsed, false otherwise.\n */\n private visitValue(\n type: string,\n value: unknown,\n path: string,\n callback: (parsedValue: TypedDataValue) => void,\n ): boolean {\n return (\n this.tryVisitStructValue(type, value, path, callback) ||\n this.tryVisitPrimitiveValue(type, value, path, callback) ||\n this.tryVisitArrayValue(type, value, path, callback)\n );\n }\n\n private tryVisitPrimitiveValue(\n type: string,\n value: unknown,\n path: string,\n callback: (parsedValue: TypedDataValue) => void,\n ): boolean {\n // Basic type (address, bool, uint256, etc)\n return (\n !this.isRecord(value) &&\n !Array.isArray(value) &&\n this.tryParsePrimitiveType(type)\n .chain((primitiveType) =>\n encodeTypedDataValue(primitiveType, value).ifJust((encoded) => {\n callback({\n path,\n type,\n value: new TypedDataValueField(encoded),\n });\n }),\n )\n .isJust()\n );\n }\n\n private tryVisitStructValue(\n type: string,\n value: unknown,\n path: string,\n callback: (parsedValue: TypedDataValue) => void,\n ): boolean {\n const structType = this.structs[type];\n if (structType === undefined || !this.isRecord(value)) {\n return false;\n }\n for (const [fieldName, fieldType] of Object.entries(structType)) {\n const fieldValue = value[fieldName];\n if (fieldValue === undefined) {\n return false;\n }\n const nextPath = path.length ? `${path}.${fieldName}` : fieldName;\n if (\n !this.visitValue(\n fieldType.typeName,\n fieldValue,\n `${nextPath}`,\n callback,\n )\n ) {\n return false;\n }\n }\n return true;\n }\n\n private tryVisitArrayValue(\n type: string,\n value: unknown,\n path: string,\n callback: (parsedValue: TypedDataValue) => void,\n ): boolean {\n return (\n Array.isArray(value) &&\n this.tryParseArrayType(type)\n .filter((t) => t.count.mapOrDefault((c) => value.length == c, true))\n .mapOrDefault((t) => {\n callback({\n path: path,\n type,\n value: new TypedDataValueArray(value.length),\n });\n for (const entry of value) {\n const nextPath = path.length ? `${path}.[]` : \"[]\";\n if (!this.visitValue(t.rowType, entry, `${nextPath}`, callback)) {\n return false;\n }\n }\n return true;\n }, false)\n );\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["TypedDataParser_exports", "__export", "TypedDataParser", "__toCommonJS", "import_purify_ts", "import_Types", "import_TypedDataEncoder", "types", "domain", "domainTypes", "name", "type", "structs", "typedName", "typedData", "parsedTypedData", "data", "primaryType", "message", "values", "val", "value", "just", "match", "size", "matchLevels", "levels", "rootType", "path", "callback", "primitiveType", "encoded", "structType", "fieldName", "fieldType", "fieldValue", "nextPath", "t", "c", "entry"]
7
7
  }