@ledgerhq/device-signer-kit-ethereum 0.0.0-try-to-fix-20250429171448 → 0.0.0-verify-safe-address-20251016105127

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 (631) hide show
  1. package/README.md +112 -1
  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.test.js +1 -1
  5. package/lib/cjs/api/SignerEthBuilder.test.js.map +2 -2
  6. package/lib/cjs/api/app-binder/SignDelegationAuthorizationTypes.js +2 -0
  7. package/lib/cjs/api/app-binder/SignDelegationAuthorizationTypes.js.map +7 -0
  8. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
  9. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
  10. package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
  11. package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js.map +2 -2
  12. package/lib/cjs/api/app-binder/VerifySafeAddressDeviceActionTypes.js +2 -0
  13. package/lib/cjs/api/app-binder/VerifySafeAddressDeviceActionTypes.js.map +7 -0
  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/SafeAddressOptions.js +2 -0
  23. package/lib/cjs/api/model/SafeAddressOptions.js.map +7 -0
  24. package/lib/cjs/api/model/TransactionOptions.js +1 -1
  25. package/lib/cjs/api/model/TransactionOptions.js.map +1 -1
  26. package/lib/cjs/api/model/TypedDataOptions.js +2 -0
  27. package/lib/cjs/api/model/TypedDataOptions.js.map +7 -0
  28. package/lib/cjs/internal/DefaultSignerEth.js +1 -1
  29. package/lib/cjs/internal/DefaultSignerEth.js.map +3 -3
  30. package/lib/cjs/internal/DefaultSignerEth.test.js +1 -1
  31. package/lib/cjs/internal/DefaultSignerEth.test.js.map +3 -3
  32. package/lib/cjs/internal/address/di/addressModule.js +1 -1
  33. package/lib/cjs/internal/address/di/addressModule.js.map +3 -3
  34. package/lib/cjs/internal/address/di/addressModule.test.js +1 -1
  35. package/lib/cjs/internal/address/di/addressModule.test.js.map +2 -2
  36. package/lib/cjs/internal/address/use-case/GetAddressUseCase.js +1 -1
  37. package/lib/cjs/internal/address/use-case/GetAddressUseCase.js.map +2 -2
  38. package/lib/cjs/internal/address/use-case/GetAddressUseCase.test.js +1 -1
  39. package/lib/cjs/internal/address/use-case/GetAddressUseCase.test.js.map +2 -2
  40. package/lib/cjs/internal/app-binder/EthAppBinder.js +1 -1
  41. package/lib/cjs/internal/app-binder/EthAppBinder.js.map +3 -3
  42. package/lib/cjs/internal/app-binder/EthAppBinder.test.js +1 -1
  43. package/lib/cjs/internal/app-binder/EthAppBinder.test.js.map +3 -3
  44. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.js +2 -0
  45. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.js.map +7 -0
  46. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js +2 -0
  47. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js.map +7 -0
  48. package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.js +2 -0
  49. package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.js.map +7 -0
  50. package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.test.js +2 -0
  51. package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.test.js.map +7 -0
  52. package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.js +2 -0
  53. package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.js.map +7 -0
  54. package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.test.js +2 -0
  55. package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.test.js.map +7 -0
  56. package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.js +1 -1
  57. package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.js.map +3 -3
  58. package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.test.js +1 -1
  59. package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.test.js.map +3 -3
  60. package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.js +2 -0
  61. package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.js.map +7 -0
  62. package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js +2 -0
  63. package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js.map +7 -0
  64. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
  65. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
  66. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  67. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
  68. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
  69. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
  70. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
  71. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
  72. package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js +2 -0
  73. package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js.map +7 -0
  74. package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js +2 -0
  75. package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js.map +7 -0
  76. package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
  77. package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  78. package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js +2 -0
  79. package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js.map +7 -0
  80. package/lib/cjs/internal/app-binder/di/appBinderModule.js +1 -1
  81. package/lib/cjs/internal/app-binder/di/appBinderModule.js.map +3 -3
  82. package/lib/cjs/internal/app-binder/task/BuildBaseContexts.js +2 -0
  83. package/lib/cjs/internal/app-binder/task/BuildBaseContexts.js.map +7 -0
  84. package/lib/cjs/internal/app-binder/task/BuildBaseContexts.test.js +2 -0
  85. package/lib/cjs/internal/app-binder/task/BuildBaseContexts.test.js.map +7 -0
  86. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
  87. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
  88. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
  89. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +3 -3
  90. package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.js +2 -0
  91. package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.js.map +7 -0
  92. package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.test.js +2 -0
  93. package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.test.js.map +7 -0
  94. package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.js +2 -0
  95. package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.js.map +7 -0
  96. package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.test.js +2 -0
  97. package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.test.js.map +7 -0
  98. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.js +2 -0
  99. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.js.map +7 -0
  100. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.test.js +2 -0
  101. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.test.js.map +7 -0
  102. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js +1 -1
  103. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js.map +3 -3
  104. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js +1 -1
  105. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js.map +3 -3
  106. package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.js +2 -0
  107. package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.js.map +7 -0
  108. package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.test.js +2 -0
  109. package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.test.js.map +7 -0
  110. package/lib/cjs/internal/app-binder/task/ParseTransactionTask.js +2 -0
  111. package/lib/cjs/internal/app-binder/task/ParseTransactionTask.js.map +7 -0
  112. package/lib/cjs/internal/app-binder/task/ParseTransactionTask.test.js +2 -0
  113. package/lib/cjs/internal/app-binder/task/ParseTransactionTask.test.js.map +7 -0
  114. package/lib/cjs/internal/app-binder/task/ProvideContextTask.js +2 -0
  115. package/lib/cjs/internal/app-binder/task/ProvideContextTask.js.map +7 -0
  116. package/lib/cjs/internal/app-binder/task/ProvideContextTask.test.js +2 -0
  117. package/lib/cjs/internal/app-binder/task/ProvideContextTask.test.js.map +7 -0
  118. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.js +1 -1
  119. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.js.map +3 -3
  120. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
  121. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +3 -3
  122. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.js +2 -0
  123. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.js.map +7 -0
  124. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.test.js +2 -0
  125. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.test.js.map +7 -0
  126. package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.js +1 -1
  127. package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.js.map +3 -3
  128. package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.test.js +1 -1
  129. package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.test.js.map +3 -3
  130. package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.js +2 -0
  131. package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.js.map +7 -0
  132. package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js +2 -0
  133. package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js.map +7 -0
  134. package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.js +1 -1
  135. package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.js.map +3 -3
  136. package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.test.js +1 -1
  137. package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.test.js.map +3 -3
  138. package/lib/cjs/internal/app-binder/task/SignTypedDataLegacyTask.js +2 -0
  139. package/lib/cjs/internal/app-binder/task/SignTypedDataLegacyTask.js.map +7 -0
  140. package/lib/cjs/internal/app-binder/task/SignTypedDataLegacyTask.test.js +2 -0
  141. package/lib/cjs/internal/app-binder/task/SignTypedDataLegacyTask.test.js.map +7 -0
  142. package/lib/cjs/internal/di.js +1 -1
  143. package/lib/cjs/internal/di.js.map +3 -3
  144. package/lib/cjs/internal/eip7702/di/eip7702Module.js +2 -0
  145. package/lib/cjs/internal/eip7702/di/eip7702Module.js.map +7 -0
  146. package/lib/cjs/internal/eip7702/di/eip7702Module.test.js +2 -0
  147. package/lib/cjs/internal/eip7702/di/eip7702Module.test.js.map +7 -0
  148. package/lib/cjs/internal/eip7702/di/eip7702Types.js +2 -0
  149. package/lib/cjs/internal/eip7702/di/eip7702Types.js.map +7 -0
  150. package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js +2 -0
  151. package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js.map +7 -0
  152. package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js +2 -0
  153. package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js.map +7 -0
  154. package/lib/cjs/internal/message/di/messageModule.js +1 -1
  155. package/lib/cjs/internal/message/di/messageModule.js.map +3 -3
  156. package/lib/cjs/internal/message/di/messageModule.test.js +1 -1
  157. package/lib/cjs/internal/message/di/messageModule.test.js.map +2 -2
  158. package/lib/cjs/internal/message/use-case/SignMessageUseCase.js +1 -1
  159. package/lib/cjs/internal/message/use-case/SignMessageUseCase.js.map +3 -3
  160. package/lib/cjs/internal/message/use-case/SignMessageUseCase.test.js +1 -1
  161. package/lib/cjs/internal/message/use-case/SignMessageUseCase.test.js.map +2 -2
  162. package/lib/cjs/internal/safe/di/safeModule.js +2 -0
  163. package/lib/cjs/internal/safe/di/safeModule.js.map +7 -0
  164. package/lib/cjs/internal/safe/di/safeModule.test.js +2 -0
  165. package/lib/cjs/internal/safe/di/safeModule.test.js.map +7 -0
  166. package/lib/cjs/internal/safe/di/safeTypes.js +2 -0
  167. package/lib/cjs/internal/safe/di/safeTypes.js.map +7 -0
  168. package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.js +2 -0
  169. package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.js.map +7 -0
  170. package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.test.js +2 -0
  171. package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.test.js.map +7 -0
  172. package/lib/cjs/internal/shared/utils/ApplicationChecker.js +1 -1
  173. package/lib/cjs/internal/shared/utils/ApplicationChecker.js.map +3 -3
  174. package/lib/cjs/internal/shared/utils/ApplicationChecker.test.js +1 -1
  175. package/lib/cjs/internal/shared/utils/ApplicationChecker.test.js.map +2 -2
  176. package/lib/cjs/internal/transaction/di/transactionModule.js +1 -1
  177. package/lib/cjs/internal/transaction/di/transactionModule.js.map +3 -3
  178. package/lib/cjs/internal/transaction/di/transactionModule.test.js +1 -1
  179. package/lib/cjs/internal/transaction/di/transactionModule.test.js.map +2 -2
  180. package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.js +2 -0
  181. package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.js.map +7 -0
  182. package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.test.js +2 -0
  183. package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.test.js.map +7 -0
  184. package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.js +1 -1
  185. package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.js.map +3 -3
  186. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.js +1 -1
  187. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.js.map +3 -3
  188. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
  189. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js.map +3 -3
  190. package/lib/cjs/internal/typed-data/di/typedDataModule.js +1 -1
  191. package/lib/cjs/internal/typed-data/di/typedDataModule.js.map +3 -3
  192. package/lib/cjs/internal/typed-data/di/typedDataModule.test.js +1 -1
  193. package/lib/cjs/internal/typed-data/di/typedDataModule.test.js.map +2 -2
  194. package/lib/cjs/internal/typed-data/service/DefaultTypedDataParserService.js +1 -1
  195. package/lib/cjs/internal/typed-data/service/DefaultTypedDataParserService.js.map +2 -2
  196. package/lib/cjs/internal/typed-data/service/TypedDataParser.js +1 -1
  197. package/lib/cjs/internal/typed-data/service/TypedDataParser.js.map +3 -3
  198. package/lib/cjs/internal/typed-data/service/TypedDataParser.test.js +1 -1
  199. package/lib/cjs/internal/typed-data/service/TypedDataParser.test.js.map +2 -2
  200. package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.js +1 -1
  201. package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.js.map +3 -3
  202. package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.test.js +1 -1
  203. package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.test.js.map +2 -2
  204. package/lib/cjs/package.json +13 -14
  205. package/lib/esm/api/SignerEthBuilder.test.js +1 -1
  206. package/lib/esm/api/SignerEthBuilder.test.js.map +2 -2
  207. package/lib/esm/api/app-binder/SignDelegationAuthorizationTypes.js +1 -0
  208. package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
  209. package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
  210. package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
  211. package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js.map +2 -2
  212. package/lib/esm/api/app-binder/VerifySafeAddressDeviceActionTypes.js +2 -0
  213. package/lib/esm/api/app-binder/VerifySafeAddressDeviceActionTypes.js.map +7 -0
  214. package/lib/esm/api/index.js +1 -1
  215. package/lib/esm/api/index.js.map +2 -2
  216. package/lib/esm/api/model/ClearSigningType.js +2 -0
  217. package/lib/esm/api/model/ClearSigningType.js.map +7 -0
  218. package/lib/esm/api/model/MessageOptions.js +1 -0
  219. package/lib/esm/api/model/MessageOptions.js.map +7 -0
  220. package/lib/esm/api/model/SafeAddressOptions.js +1 -0
  221. package/lib/esm/api/model/SafeAddressOptions.js.map +7 -0
  222. package/lib/esm/api/model/TypedDataOptions.js +1 -0
  223. package/lib/esm/api/model/TypedDataOptions.js.map +7 -0
  224. package/lib/esm/internal/DefaultSignerEth.js +1 -1
  225. package/lib/esm/internal/DefaultSignerEth.js.map +3 -3
  226. package/lib/esm/internal/DefaultSignerEth.test.js +1 -1
  227. package/lib/esm/internal/DefaultSignerEth.test.js.map +3 -3
  228. package/lib/esm/internal/address/di/addressModule.js +1 -1
  229. package/lib/esm/internal/address/di/addressModule.js.map +3 -3
  230. package/lib/esm/internal/address/di/addressModule.test.js +1 -1
  231. package/lib/esm/internal/address/di/addressModule.test.js.map +2 -2
  232. package/lib/esm/internal/address/use-case/GetAddressUseCase.js +1 -1
  233. package/lib/esm/internal/address/use-case/GetAddressUseCase.js.map +2 -2
  234. package/lib/esm/internal/address/use-case/GetAddressUseCase.test.js +1 -1
  235. package/lib/esm/internal/address/use-case/GetAddressUseCase.test.js.map +2 -2
  236. package/lib/esm/internal/app-binder/EthAppBinder.js +1 -1
  237. package/lib/esm/internal/app-binder/EthAppBinder.js.map +3 -3
  238. package/lib/esm/internal/app-binder/EthAppBinder.test.js +1 -1
  239. package/lib/esm/internal/app-binder/EthAppBinder.test.js.map +3 -3
  240. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.js +2 -0
  241. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.js.map +7 -0
  242. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js +2 -0
  243. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js.map +7 -0
  244. package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.js +2 -0
  245. package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.js.map +7 -0
  246. package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.test.js +2 -0
  247. package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.test.js.map +7 -0
  248. package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.js +2 -0
  249. package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.js.map +7 -0
  250. package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.test.js +2 -0
  251. package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.test.js.map +7 -0
  252. package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.js +1 -1
  253. package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.js.map +3 -3
  254. package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.test.js +1 -1
  255. package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.test.js.map +3 -3
  256. package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.js +2 -0
  257. package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.js.map +7 -0
  258. package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js +2 -0
  259. package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js.map +7 -0
  260. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
  261. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
  262. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  263. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
  264. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
  265. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
  266. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
  267. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
  268. package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js +2 -0
  269. package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js.map +7 -0
  270. package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js +2 -0
  271. package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js.map +7 -0
  272. package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
  273. package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  274. package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js +2 -0
  275. package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js.map +7 -0
  276. package/lib/esm/internal/app-binder/di/appBinderModule.js +1 -1
  277. package/lib/esm/internal/app-binder/di/appBinderModule.js.map +3 -3
  278. package/lib/esm/internal/app-binder/task/BuildBaseContexts.js +2 -0
  279. package/lib/esm/internal/app-binder/task/BuildBaseContexts.js.map +7 -0
  280. package/lib/esm/internal/app-binder/task/BuildBaseContexts.test.js +2 -0
  281. package/lib/esm/internal/app-binder/task/BuildBaseContexts.test.js.map +7 -0
  282. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
  283. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
  284. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
  285. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +3 -3
  286. package/lib/esm/internal/app-binder/task/BuildFullContextsTask.js +2 -0
  287. package/lib/esm/internal/app-binder/task/BuildFullContextsTask.js.map +7 -0
  288. package/lib/esm/internal/app-binder/task/BuildFullContextsTask.test.js +2 -0
  289. package/lib/esm/internal/app-binder/task/BuildFullContextsTask.test.js.map +7 -0
  290. package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.js +2 -0
  291. package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.js.map +7 -0
  292. package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.test.js +2 -0
  293. package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.test.js.map +7 -0
  294. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.js +2 -0
  295. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.js.map +7 -0
  296. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.test.js +2 -0
  297. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.test.js.map +7 -0
  298. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js +1 -1
  299. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js.map +3 -3
  300. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js +1 -1
  301. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js.map +3 -3
  302. package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.js +2 -0
  303. package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.js.map +7 -0
  304. package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.test.js +2 -0
  305. package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.test.js.map +7 -0
  306. package/lib/esm/internal/app-binder/task/ParseTransactionTask.js +2 -0
  307. package/lib/esm/internal/app-binder/task/ParseTransactionTask.js.map +7 -0
  308. package/lib/esm/internal/app-binder/task/ParseTransactionTask.test.js +2 -0
  309. package/lib/esm/internal/app-binder/task/ParseTransactionTask.test.js.map +7 -0
  310. package/lib/esm/internal/app-binder/task/ProvideContextTask.js +2 -0
  311. package/lib/esm/internal/app-binder/task/ProvideContextTask.js.map +7 -0
  312. package/lib/esm/internal/app-binder/task/ProvideContextTask.test.js +2 -0
  313. package/lib/esm/internal/app-binder/task/ProvideContextTask.test.js.map +7 -0
  314. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.js +1 -1
  315. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.js.map +3 -3
  316. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
  317. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +3 -3
  318. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.js +2 -0
  319. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.js.map +7 -0
  320. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.test.js +2 -0
  321. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.test.js.map +7 -0
  322. package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.js +1 -1
  323. package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.js.map +3 -3
  324. package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.test.js +1 -1
  325. package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.test.js.map +3 -3
  326. package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.js +2 -0
  327. package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.js.map +7 -0
  328. package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js +2 -0
  329. package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js.map +7 -0
  330. package/lib/esm/internal/app-binder/task/SendSignTransactionTask.js +1 -1
  331. package/lib/esm/internal/app-binder/task/SendSignTransactionTask.js.map +3 -3
  332. package/lib/esm/internal/app-binder/task/SendSignTransactionTask.test.js +1 -1
  333. package/lib/esm/internal/app-binder/task/SendSignTransactionTask.test.js.map +3 -3
  334. package/lib/esm/internal/app-binder/task/SignTypedDataLegacyTask.js +2 -0
  335. package/lib/esm/internal/app-binder/task/SignTypedDataLegacyTask.js.map +7 -0
  336. package/lib/esm/internal/app-binder/task/SignTypedDataLegacyTask.test.js +2 -0
  337. package/lib/esm/internal/app-binder/task/SignTypedDataLegacyTask.test.js.map +7 -0
  338. package/lib/esm/internal/di.js +1 -1
  339. package/lib/esm/internal/di.js.map +3 -3
  340. package/lib/esm/internal/eip7702/di/eip7702Module.js +2 -0
  341. package/lib/esm/internal/eip7702/di/eip7702Module.js.map +7 -0
  342. package/lib/esm/internal/eip7702/di/eip7702Module.test.js +2 -0
  343. package/lib/esm/internal/eip7702/di/eip7702Module.test.js.map +7 -0
  344. package/lib/esm/internal/eip7702/di/eip7702Types.js +2 -0
  345. package/lib/esm/internal/eip7702/di/eip7702Types.js.map +7 -0
  346. package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js +2 -0
  347. package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js.map +7 -0
  348. package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js +2 -0
  349. package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js.map +7 -0
  350. package/lib/esm/internal/message/di/messageModule.js +1 -1
  351. package/lib/esm/internal/message/di/messageModule.js.map +3 -3
  352. package/lib/esm/internal/message/di/messageModule.test.js +1 -1
  353. package/lib/esm/internal/message/di/messageModule.test.js.map +2 -2
  354. package/lib/esm/internal/message/use-case/SignMessageUseCase.js +1 -1
  355. package/lib/esm/internal/message/use-case/SignMessageUseCase.js.map +3 -3
  356. package/lib/esm/internal/message/use-case/SignMessageUseCase.test.js +1 -1
  357. package/lib/esm/internal/message/use-case/SignMessageUseCase.test.js.map +2 -2
  358. package/lib/esm/internal/safe/di/safeModule.js +2 -0
  359. package/lib/esm/internal/safe/di/safeModule.js.map +7 -0
  360. package/lib/esm/internal/safe/di/safeModule.test.js +2 -0
  361. package/lib/esm/internal/safe/di/safeModule.test.js.map +7 -0
  362. package/lib/esm/internal/safe/di/safeTypes.js +2 -0
  363. package/lib/esm/internal/safe/di/safeTypes.js.map +7 -0
  364. package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.js +2 -0
  365. package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.js.map +7 -0
  366. package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.test.js +2 -0
  367. package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.test.js.map +7 -0
  368. package/lib/esm/internal/shared/utils/ApplicationChecker.js +1 -1
  369. package/lib/esm/internal/shared/utils/ApplicationChecker.js.map +3 -3
  370. package/lib/esm/internal/shared/utils/ApplicationChecker.test.js +1 -1
  371. package/lib/esm/internal/shared/utils/ApplicationChecker.test.js.map +2 -2
  372. package/lib/esm/internal/transaction/di/transactionModule.js +1 -1
  373. package/lib/esm/internal/transaction/di/transactionModule.js.map +3 -3
  374. package/lib/esm/internal/transaction/di/transactionModule.test.js +1 -1
  375. package/lib/esm/internal/transaction/di/transactionModule.test.js.map +2 -2
  376. package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.js +2 -0
  377. package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.js.map +7 -0
  378. package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.test.js +2 -0
  379. package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.test.js.map +7 -0
  380. package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.js +0 -1
  381. package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.js.map +4 -4
  382. package/lib/esm/internal/transaction/service/parser/TransactionParserService.js +1 -1
  383. package/lib/esm/internal/transaction/service/parser/TransactionParserService.js.map +3 -3
  384. package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
  385. package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js.map +3 -3
  386. package/lib/esm/internal/typed-data/di/typedDataModule.js +1 -1
  387. package/lib/esm/internal/typed-data/di/typedDataModule.js.map +3 -3
  388. package/lib/esm/internal/typed-data/di/typedDataModule.test.js +1 -1
  389. package/lib/esm/internal/typed-data/di/typedDataModule.test.js.map +2 -2
  390. package/lib/esm/internal/typed-data/service/DefaultTypedDataParserService.js +1 -1
  391. package/lib/esm/internal/typed-data/service/DefaultTypedDataParserService.js.map +2 -2
  392. package/lib/esm/internal/typed-data/service/TypedDataParser.js +1 -1
  393. package/lib/esm/internal/typed-data/service/TypedDataParser.js.map +3 -3
  394. package/lib/esm/internal/typed-data/service/TypedDataParser.test.js +1 -1
  395. package/lib/esm/internal/typed-data/service/TypedDataParser.test.js.map +2 -2
  396. package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.js +1 -1
  397. package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.js.map +3 -3
  398. package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.test.js +1 -1
  399. package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.test.js.map +2 -2
  400. package/lib/esm/package.json +13 -14
  401. package/lib/types/api/SignerEth.d.ts +11 -4
  402. package/lib/types/api/SignerEth.d.ts.map +1 -1
  403. package/lib/types/api/app-binder/SignDelegationAuthorizationTypes.d.ts +19 -0
  404. package/lib/types/api/app-binder/SignDelegationAuthorizationTypes.d.ts.map +1 -0
  405. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +17 -12
  406. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
  407. package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts +11 -1
  408. package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts.map +1 -1
  409. package/lib/types/api/app-binder/VerifySafeAddressDeviceActionTypes.d.ts +30 -0
  410. package/lib/types/api/app-binder/VerifySafeAddressDeviceActionTypes.d.ts.map +1 -0
  411. package/lib/types/api/index.d.ts +5 -4
  412. package/lib/types/api/index.d.ts.map +1 -1
  413. package/lib/types/api/model/AddressOptions.d.ts +1 -0
  414. package/lib/types/api/model/AddressOptions.d.ts.map +1 -1
  415. package/lib/types/api/model/ClearSigningType.d.ts +5 -0
  416. package/lib/types/api/model/ClearSigningType.d.ts.map +1 -0
  417. package/lib/types/api/model/MessageOptions.d.ts +4 -0
  418. package/lib/types/api/model/MessageOptions.d.ts.map +1 -0
  419. package/lib/types/api/model/SafeAddressOptions.d.ts +5 -0
  420. package/lib/types/api/model/SafeAddressOptions.d.ts.map +1 -0
  421. package/lib/types/api/model/TransactionOptions.d.ts +1 -0
  422. package/lib/types/api/model/TransactionOptions.d.ts.map +1 -1
  423. package/lib/types/api/model/TypedDataOptions.d.ts +4 -0
  424. package/lib/types/api/model/TypedDataOptions.d.ts.map +1 -0
  425. package/lib/types/internal/DefaultSignerEth.d.ts +10 -3
  426. package/lib/types/internal/DefaultSignerEth.d.ts.map +1 -1
  427. package/lib/types/internal/address/di/addressModule.d.ts.map +1 -1
  428. package/lib/types/internal/address/use-case/GetAddressUseCase.d.ts.map +1 -1
  429. package/lib/types/internal/app-binder/EthAppBinder.d.ts +19 -3
  430. package/lib/types/internal/app-binder/EthAppBinder.d.ts.map +1 -1
  431. package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.d.ts +28 -0
  432. package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.d.ts.map +1 -0
  433. package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.d.ts +2 -0
  434. package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.d.ts.map +1 -0
  435. package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.d.ts +20 -0
  436. package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.d.ts.map +1 -0
  437. package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.test.d.ts +2 -0
  438. package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.test.d.ts.map +1 -0
  439. package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.d.ts +34 -0
  440. package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.d.ts.map +1 -0
  441. package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.test.d.ts +2 -0
  442. package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.test.d.ts.map +1 -0
  443. package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts +29 -1
  444. package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts.map +1 -1
  445. package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.d.ts +29 -0
  446. package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.d.ts.map +1 -0
  447. package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.test.d.ts +2 -0
  448. package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.test.d.ts.map +1 -0
  449. package/lib/types/internal/app-binder/command/utils/ethAppErrors.d.ts.map +1 -1
  450. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts +15 -36
  451. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts.map +1 -1
  452. package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts +5 -2
  453. package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts.map +1 -1
  454. package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.d.ts +20 -0
  455. package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.d.ts.map +1 -0
  456. package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.d.ts +2 -0
  457. package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.d.ts.map +1 -0
  458. package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -1
  459. package/lib/types/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.d.ts.map +1 -1
  460. package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.d.ts +6 -0
  461. package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.d.ts.map +1 -0
  462. package/lib/types/internal/app-binder/di/appBinderModule.d.ts.map +1 -1
  463. package/lib/types/internal/app-binder/task/BuildBaseContexts.d.ts +51 -0
  464. package/lib/types/internal/app-binder/task/BuildBaseContexts.d.ts.map +1 -0
  465. package/lib/types/internal/app-binder/task/BuildBaseContexts.test.d.ts +2 -0
  466. package/lib/types/internal/app-binder/task/BuildBaseContexts.test.d.ts.map +1 -0
  467. package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts +8 -1
  468. package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts.map +1 -1
  469. package/lib/types/internal/app-binder/task/BuildFullContextsTask.d.ts +39 -0
  470. package/lib/types/internal/app-binder/task/BuildFullContextsTask.d.ts.map +1 -0
  471. package/lib/types/internal/app-binder/task/BuildFullContextsTask.test.d.ts +2 -0
  472. package/lib/types/internal/app-binder/task/BuildFullContextsTask.test.d.ts.map +1 -0
  473. package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.d.ts +19 -0
  474. package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.d.ts.map +1 -0
  475. package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.test.d.ts +2 -0
  476. package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.test.d.ts.map +1 -0
  477. package/lib/types/internal/app-binder/task/BuildSubcontextsTask.d.ts +28 -0
  478. package/lib/types/internal/app-binder/task/BuildSubcontextsTask.d.ts.map +1 -0
  479. package/lib/types/internal/app-binder/task/BuildSubcontextsTask.test.d.ts +2 -0
  480. package/lib/types/internal/app-binder/task/BuildSubcontextsTask.test.d.ts.map +1 -0
  481. package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts +2 -3
  482. package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts.map +1 -1
  483. package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.d.ts +21 -0
  484. package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.d.ts.map +1 -0
  485. package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.test.d.ts +2 -0
  486. package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.test.d.ts.map +1 -0
  487. package/lib/types/internal/app-binder/task/ParseTransactionTask.d.ts +17 -0
  488. package/lib/types/internal/app-binder/task/ParseTransactionTask.d.ts.map +1 -0
  489. package/lib/types/internal/app-binder/task/ParseTransactionTask.test.d.ts +2 -0
  490. package/lib/types/internal/app-binder/task/ParseTransactionTask.test.d.ts.map +1 -0
  491. package/lib/types/internal/app-binder/task/ProvideContextTask.d.ts +22 -0
  492. package/lib/types/internal/app-binder/task/ProvideContextTask.d.ts.map +1 -0
  493. package/lib/types/internal/app-binder/task/ProvideContextTask.test.d.ts +2 -0
  494. package/lib/types/internal/app-binder/task/ProvideContextTask.test.d.ts.map +1 -0
  495. package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts +14 -5
  496. package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts.map +1 -1
  497. package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.d.ts +36 -0
  498. package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.d.ts.map +1 -0
  499. package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.test.d.ts +2 -0
  500. package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.test.d.ts.map +1 -0
  501. package/lib/types/internal/app-binder/task/SendPayloadInChunksTask.d.ts +2 -2
  502. package/lib/types/internal/app-binder/task/SendPayloadInChunksTask.d.ts.map +1 -1
  503. package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.d.ts +18 -0
  504. package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.d.ts.map +1 -0
  505. package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.d.ts +2 -0
  506. package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.d.ts.map +1 -0
  507. package/lib/types/internal/app-binder/task/SendSignTransactionTask.d.ts +2 -1
  508. package/lib/types/internal/app-binder/task/SendSignTransactionTask.d.ts.map +1 -1
  509. package/lib/types/internal/app-binder/task/SignTypedDataLegacyTask.d.ts +12 -0
  510. package/lib/types/internal/app-binder/task/SignTypedDataLegacyTask.d.ts.map +1 -0
  511. package/lib/types/internal/app-binder/task/SignTypedDataLegacyTask.test.d.ts +2 -0
  512. package/lib/types/internal/app-binder/task/SignTypedDataLegacyTask.test.d.ts.map +1 -0
  513. package/lib/types/internal/di.d.ts.map +1 -1
  514. package/lib/types/internal/eip7702/di/eip7702Module.d.ts +3 -0
  515. package/lib/types/internal/eip7702/di/eip7702Module.d.ts.map +1 -0
  516. package/lib/types/internal/eip7702/di/eip7702Module.test.d.ts +2 -0
  517. package/lib/types/internal/eip7702/di/eip7702Module.test.d.ts.map +1 -0
  518. package/lib/types/internal/eip7702/di/eip7702Types.d.ts +4 -0
  519. package/lib/types/internal/eip7702/di/eip7702Types.d.ts.map +1 -0
  520. package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.d.ts +8 -0
  521. package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.d.ts.map +1 -0
  522. package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.d.ts +2 -0
  523. package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.d.ts.map +1 -0
  524. package/lib/types/internal/message/di/messageModule.d.ts.map +1 -1
  525. package/lib/types/internal/message/use-case/SignMessageUseCase.d.ts +2 -1
  526. package/lib/types/internal/message/use-case/SignMessageUseCase.d.ts.map +1 -1
  527. package/lib/types/internal/safe/di/safeModule.d.ts +3 -0
  528. package/lib/types/internal/safe/di/safeModule.d.ts.map +1 -0
  529. package/lib/types/internal/safe/di/safeModule.test.d.ts +2 -0
  530. package/lib/types/internal/safe/di/safeModule.test.d.ts.map +1 -0
  531. package/lib/types/internal/safe/di/safeTypes.d.ts +4 -0
  532. package/lib/types/internal/safe/di/safeTypes.d.ts.map +1 -0
  533. package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.d.ts +9 -0
  534. package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.d.ts.map +1 -0
  535. package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.test.d.ts +2 -0
  536. package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.test.d.ts.map +1 -0
  537. package/lib/types/internal/shared/utils/ApplicationChecker.d.ts.map +1 -1
  538. package/lib/types/internal/transaction/di/transactionModule.d.ts.map +1 -1
  539. package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.d.ts +8 -0
  540. package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.d.ts.map +1 -0
  541. package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.test.d.ts +2 -0
  542. package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.test.d.ts.map +1 -0
  543. package/lib/types/internal/transaction/service/mapper/TransactionMapperService.d.ts +4 -7
  544. package/lib/types/internal/transaction/service/mapper/TransactionMapperService.d.ts.map +1 -1
  545. package/lib/types/internal/transaction/service/parser/TransactionParserService.d.ts +2 -2
  546. package/lib/types/internal/transaction/service/parser/TransactionParserService.d.ts.map +1 -1
  547. package/lib/types/internal/typed-data/di/typedDataModule.d.ts.map +1 -1
  548. package/lib/types/internal/typed-data/service/TypedDataParser.d.ts +4 -2
  549. package/lib/types/internal/typed-data/service/TypedDataParser.d.ts.map +1 -1
  550. package/lib/types/internal/typed-data/use-case/SignTypedDataUseCase.d.ts +2 -1
  551. package/lib/types/internal/typed-data/use-case/SignTypedDataUseCase.d.ts.map +1 -1
  552. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  553. package/package.json +19 -20
  554. package/lib/cjs/internal/app-binder/constant/plugins.js +0 -2
  555. package/lib/cjs/internal/app-binder/constant/plugins.js.map +0 -7
  556. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js +0 -2
  557. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js.map +0 -7
  558. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js +0 -2
  559. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js.map +0 -7
  560. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js +0 -2
  561. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js.map +0 -7
  562. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js +0 -2
  563. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +0 -7
  564. package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js +0 -2
  565. package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js.map +0 -7
  566. package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js +0 -2
  567. package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js.map +0 -7
  568. package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.js +0 -2
  569. package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.js.map +0 -7
  570. package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js +0 -2
  571. package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js.map +0 -7
  572. package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.js +0 -2
  573. package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.js.map +0 -7
  574. package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js +0 -2
  575. package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js.map +0 -7
  576. package/lib/cjs/internal/transaction/service/mapper/TransactionMapper.js +0 -2
  577. package/lib/cjs/internal/transaction/service/mapper/TransactionMapper.js.map +0 -7
  578. package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.test.js +0 -2
  579. package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.test.js.map +0 -7
  580. package/lib/esm/internal/app-binder/constant/plugins.js +0 -2
  581. package/lib/esm/internal/app-binder/constant/plugins.js.map +0 -7
  582. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js +0 -2
  583. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js.map +0 -7
  584. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js +0 -2
  585. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js.map +0 -7
  586. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js +0 -2
  587. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js.map +0 -7
  588. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js +0 -2
  589. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +0 -7
  590. package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js +0 -2
  591. package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js.map +0 -7
  592. package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js +0 -2
  593. package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js.map +0 -7
  594. package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.js +0 -2
  595. package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.js.map +0 -7
  596. package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js +0 -2
  597. package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js.map +0 -7
  598. package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.js +0 -2
  599. package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.js.map +0 -7
  600. package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js +0 -2
  601. package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js.map +0 -7
  602. package/lib/esm/internal/transaction/service/mapper/TransactionMapper.js +0 -1
  603. package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.test.js +0 -2
  604. package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.test.js.map +0 -7
  605. package/lib/types/internal/app-binder/constant/plugins.d.ts +0 -2
  606. package/lib/types/internal/app-binder/constant/plugins.d.ts.map +0 -1
  607. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts +0 -32
  608. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts.map +0 -1
  609. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.test.d.ts +0 -2
  610. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.test.d.ts.map +0 -1
  611. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts +0 -38
  612. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts.map +0 -1
  613. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.test.d.ts +0 -2
  614. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.test.d.ts.map +0 -1
  615. package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.d.ts +0 -80
  616. package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.d.ts.map +0 -1
  617. package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.d.ts +0 -2
  618. package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.d.ts.map +0 -1
  619. package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.d.ts +0 -28
  620. package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.d.ts.map +0 -1
  621. package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.test.d.ts +0 -2
  622. package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.test.d.ts.map +0 -1
  623. package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.d.ts +0 -7
  624. package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.d.ts.map +0 -1
  625. package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.test.d.ts +0 -2
  626. package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.test.d.ts.map +0 -1
  627. package/lib/types/internal/transaction/service/mapper/TransactionMapper.d.ts +0 -6
  628. package/lib/types/internal/transaction/service/mapper/TransactionMapper.d.ts.map +0 -1
  629. package/lib/types/internal/transaction/service/mapper/TransactionMapperService.test.d.ts +0 -2
  630. package/lib/types/internal/transaction/service/mapper/TransactionMapperService.test.d.ts.map +0 -1
  631. /package/lib/esm/{internal/transaction/service/mapper/TransactionMapper.js.map → api/app-binder/SignDelegationAuthorizationTypes.js.map} +0 -0
@@ -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": ["ContainerPath", "bufferToHexaString", "ByteArrayBuilder", "hexaStringToBuffer", "Transaction", "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 it(\"Empty array\", () => {\n // GIVEN\n const path: DataPathElement[] = [];\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": ["ContainerPath", "bufferToHexaString", "ByteArrayBuilder", "hexaStringToBuffer", "TransactionParserService", "parser", "TO", "VALUE", "VALUE_BIN", "subset", "value", "from", "to", "transaction", "path"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ContainerModule as a}from"inversify";import{typedDataTypes as t}from"../../typed-data/di/typedDataTypes";import{DefaultTypedDataParserService as o}from"../../typed-data/service/DefaultTypedDataParserService";import{SignTypedDataUseCase as r}from"../../typed-data/use-case/SignTypedDataUseCase";const _=()=>new a((e,i,n,p,d,s,y)=>{e(t.SignTypedDataUseCase).to(r),e(t.TypedDataParserService).to(o)});export{_ as typedDataModuleFactory};
1
+ import{ContainerModule as t}from"inversify";import{typedDataTypes as a}from"../../typed-data/di/typedDataTypes";import{DefaultTypedDataParserService as r}from"../../typed-data/service/DefaultTypedDataParserService";import{SignTypedDataUseCase as o}from"../../typed-data/use-case/SignTypedDataUseCase";const y=()=>new t(({bind:e})=>{e(a.SignTypedDataUseCase).to(o),e(a.TypedDataParserService).to(r)});export{y as 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": "AAAA,OAAS,mBAAAA,MAAuB,YAEhC,OAAS,kBAAAC,MAAsB,yCAC/B,OAAS,iCAAAC,MAAqC,6DAC9C,OAAS,wBAAAC,MAA4B,qDAE9B,MAAMC,EAAyB,IACpC,IAAIJ,EACF,CACEK,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,IACG,CACHN,EAAKJ,EAAe,oBAAoB,EAAE,GAAGE,CAAoB,EACjEE,EAAKJ,EAAe,sBAAsB,EAAE,GAC1CC,CACF,CACF,CACF",
6
- "names": ["ContainerModule", "typedDataTypes", "DefaultTypedDataParserService", "SignTypedDataUseCase", "typedDataModuleFactory", "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": "AAAA,OAAS,mBAAAA,MAAuB,YAEhC,OAAS,kBAAAC,MAAsB,yCAC/B,OAAS,iCAAAC,MAAqC,6DAC9C,OAAS,wBAAAC,MAA4B,qDAE9B,MAAMC,EAAyB,IACpC,IAAIJ,EAAgB,CAAC,CAAE,KAAAK,CAAK,IAAM,CAChCA,EAAKJ,EAAe,oBAAoB,EAAE,GAAGE,CAAoB,EACjEE,EAAKJ,EAAe,sBAAsB,EAAE,GAC1CC,CACF,CACF,CAAC",
6
+ "names": ["ContainerModule", "typedDataTypes", "DefaultTypedDataParserService", "SignTypedDataUseCase", "typedDataModuleFactory", "bind"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{Container as o}from"inversify";import{typedDataModuleFactory as a}from"./typedDataModule";describe("TypedDataModuleFactory",()=>{describe("Default",()=>{let t,e;beforeEach(()=>{e=a(),t=new o,t.load(e)}),it("should return the typed data module",()=>{expect(e).toBeDefined()})})});
1
+ import{Container as o}from"inversify";import{typedDataModuleFactory as a}from"./typedDataModule";describe("TypedDataModuleFactory",()=>{describe("Default",()=>{let t,e;beforeEach(()=>{e=a(),t=new o,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,OAAS,aAAAA,MAAiB,YAE1B,OAAS,0BAAAC,MAA8B,oBAEvC,SAAS,yBAA0B,IAAM,CACvC,SAAS,UAAW,IAAM,CACxB,IAAIC,EACAC,EACJ,WAAW,IAAM,CACfA,EAAMF,EAAuB,EAC7BC,EAAY,IAAIF,EAChBE,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,OAAS,aAAAA,MAAiB,YAE1B,OAAS,0BAAAC,MAA8B,oBAEvC,SAAS,yBAA0B,IAAM,CACvC,SAAS,UAAW,IAAM,CACxB,IAAIC,EACAC,EACJ,WAAW,IAAM,CACfA,EAAMF,EAAuB,EAC7BC,EAAY,IAAIF,EAChBE,EAAU,SAASC,CAAG,CACxB,CAAC,EAED,GAAG,sCAAuC,IAAM,CAC9C,OAAOA,CAAG,EAAE,YAAY,CAC1B,CAAC,CACH,CAAC,CACH,CAAC",
6
6
  "names": ["Container", "typedDataModuleFactory", "container", "mod"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var c=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var i=(n,r,s,o)=>{for(var e=o>1?void 0:o?y(r,s):r,t=n.length-1,p;t>=0;t--)(p=n[t])&&(e=(o?p(r,s,e):p(e))||e);return o&&e&&c(r,s,e),e};import{injectable as d}from"inversify";import{TypedDataParser as T}from"./TypedDataParser";let m=class{parse(r){const s=new T(r.types),o=s.getStructDefinitions(),e=s.parse("EIP712Domain",r.domain),t=s.parse(r.primaryType,r.message);return e.chain(p=>t.map(a=>({types:o,domain:p,message:a})))}};m=i([d()],m);export{m as DefaultTypedDataParserService};
1
+ var c=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var i=(n,r,s,o)=>{for(var e=o>1?void 0:o?y(r,s):r,t=n.length-1,m;t>=0;t--)(m=n[t])&&(e=(o?m(r,s,e):m(e))||e);return o&&e&&c(r,s,e),e};import{injectable as d}from"inversify";import{TypedDataParser as T}from"./TypedDataParser";let p=class{parse(r){const s=new T(r.types,r.domain),o=s.getStructDefinitions(),e=s.parse("EIP712Domain",r.domain),t=s.parse(r.primaryType,r.message);return e.chain(m=>t.map(a=>({types:o,domain:m,message:a})))}};p=i([d()],p);export{p as 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": "wMAAA,OAAS,cAAAA,MAAkB,YAK3B,OAAS,mBAAAC,MAAuB,oBAOzB,IAAMC,EAAN,KAAsE,CAC3E,MAAMC,EAAiD,CACrD,MAAMC,EAAS,IAAIC,EAAgBF,EAAK,KAAK,EACvCG,EAAQF,EAAO,qBAAqB,EACpCG,EAAeH,EAAO,MAC1B,eACAD,EAAK,MACP,EACMK,EAAgBJ,EAAO,MAAMD,EAAK,YAAaA,EAAK,OAAO,EACjE,OAAOI,EAAa,MAAOE,GACzBD,EAAc,IAAKE,IAAa,CAC9B,MAAAJ,EACA,OAAAG,EACA,QAAAC,CACF,EAAE,CACJ,CACF,CACF,EAjBaR,EAANS,EAAA,CADNC,EAAW,GACCV",
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": "wMAAA,OAAS,cAAAA,MAAkB,YAK3B,OAAS,mBAAAC,MAAuB,oBAOzB,IAAMC,EAAN,KAAsE,CAC3E,MAAMC,EAAiD,CACrD,MAAMC,EAAS,IAAIC,EAAgBF,EAAK,MAAOA,EAAK,MAAM,EACpDG,EAAQF,EAAO,qBAAqB,EACpCG,EAAeH,EAAO,MAC1B,eACAD,EAAK,MACP,EACMK,EAAgBJ,EAAO,MAAMD,EAAK,YAAaA,EAAK,OAAO,EACjE,OAAOI,EAAa,MAAOE,GACzBD,EAAc,IAAKE,IAAa,CAC9B,MAAAJ,EACA,OAAAG,EACA,QAAAC,CACF,EAAE,CACJ,CACF,CACF,EAjBaR,EAANS,EAAA,CADNC,EAAW,GACCV",
6
6
  "names": ["injectable", "TypedDataParser", "DefaultTypedDataParserService", "data", "parser", "TypedDataParser", "types", "domainResult", "messageResult", "domain", "message", "__decorateClass", "injectable"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{Just as s,Left as d,Maybe as f,Nothing as o,Right as m}from"purify-ts";import{ArrayType as T,PrimitiveType as y,StructType as p,TypedDataValueArray as h,TypedDataValueField as V,TypedDataValueRoot as g}from"../../typed-data/model/Types";import{encodeTypedDataValue as v}from"./TypedDataEncoder";class R{structs;constructor(t){const e={};for(const[r,i]of Object.entries(t)){const n={};for(const a of i)n[a.name]=this.parseType(a.type);e[r]=n}this.structs=e}getStructDefinitions(){return this.structs}parse(t,e){if(!this.isRecord(e))return d(new Error("Message is not a record"));const r=[{path:"",type:"",value:new g(t)}];return this.visitValue(t,e,"",i=>r.push(i))?m(r):d(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 p(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?o:s(new y(e[1],e[3]?"uint":"int",s(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)?o:s(new y(e[1],"bytes",f.fromNullable(r)))}}return t==="address"||t==="bool"||t==="string"?s(new y(t,t,o)):o}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(([,a])=>a?s(parseInt(a)):o),n=this.tryParsePrimitiveType(e[1]).mapOrDefault(a=>a,new p(e[1]));return s(new T(t,n,e[1]+e[3],i[i.length-1],i))}}return o}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(n=>v(n,e).ifJust(a=>{i({path:r,type:t,value:new V(a)})})).isJust()}tryVisitStructValue(t,e,r,i){const n=this.structs[t];if(n===void 0||!this.isRecord(e))return!1;for(const[a,u]of Object.entries(n)){const l=e[a];if(l===void 0)return!1;const c=r.length?`${r}.${a}`:a;if(!this.visitValue(u.typeName,l,`${c}`,i))return!1}return!0}tryVisitArrayValue(t,e,r,i){return Array.isArray(e)&&this.tryParseArrayType(t).filter(n=>n.count.mapOrDefault(a=>e.length==a,!0)).mapOrDefault(n=>{i({path:r,type:t,value:new h(e.length)});for(const a of e){const u=r.length?`${r}.[]`:"[]";if(!this.visitValue(n.rowType,a,`${u}`,i))return!1}return!0},!1)}}export{R as TypedDataParser};
1
+ import{Just as o,Left as p,Maybe as m,Nothing as u,Right as f}from"purify-ts";import{ArrayType as T,PrimitiveType as d,StructType as l,TypedDataValueArray as h,TypedDataValueField as g,TypedDataValueRoot as V}from"../../typed-data/model/Types";import{encodeTypedDataValue as D}from"./TypedDataEncoder";class N{domainTypeName="EIP712Domain";domainDefaultTypes={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"};structs;constructor(t,e){if(!(this.domainTypeName in t)){const i=[];Object.entries(this.domainDefaultTypes).forEach(([n,a])=>{n in e&&i.push({name:n,type:a})}),i.length>0&&(t[this.domainTypeName]=i)}const r={};for(const[i,n]of Object.entries(t)){const a={};for(const s of n)a[s.name]=this.parseType(s.type);r[i]=a}this.structs=r}getStructDefinitions(){return this.structs}parse(t,e){if(!this.isRecord(e))return p(new Error("Message is not a record"));const r=[{path:"",type:"",value:new V(t)}];return this.visitValue(t,e,"",i=>r.push(i))?f(r):p(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 l(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?u:o(new d(e[1],e[3]?"uint":"int",o(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)?u:o(new d(e[1],"bytes",m.fromNullable(r)))}}return t==="address"||t==="bool"||t==="string"?o(new d(t,t,u)):u}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(([,a])=>a?o(parseInt(a)):u),n=this.tryParsePrimitiveType(e[1]).mapOrDefault(a=>a,new l(e[1]));return o(new T(t,n,e[1]+e[3],i[i.length-1],i))}}return u}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(n=>D(n,e).ifJust(a=>{i({path:r,type:t,value:new g(a)})})).isJust()}tryVisitStructValue(t,e,r,i){const n=this.structs[t];if(n===void 0||!this.isRecord(e))return!1;for(const[a,s]of Object.entries(n)){const y=e[a];if(y===void 0)return!1;const c=r.length?`${r}.${a}`:a;if(!this.visitValue(s.typeName,y,`${c}`,i))return!1}return!0}tryVisitArrayValue(t,e,r,i){return Array.isArray(e)&&this.tryParseArrayType(t).filter(n=>n.count.mapOrDefault(a=>e.length==a,!0)).mapOrDefault(n=>{i({path:r,type:t,value:new h(e.length)});for(const a of e){const s=r.length?`${r}.[]`:"[]";if(!this.visitValue(n.rowType,a,`${s}`,i))return!1}return!0},!1)}}export{N as 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": ["Just", "Left", "Maybe", "Nothing", "Right", "ArrayType", "PrimitiveType", "StructType", "TypedDataValueArray", "TypedDataValueField", "TypedDataValueRoot", "encodeTypedDataValue", "TypedDataParser", "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": ["Just", "Left", "Maybe", "Nothing", "Right", "ArrayType", "PrimitiveType", "StructType", "TypedDataValueArray", "TypedDataValueField", "TypedDataValueRoot", "encodeTypedDataValue", "TypedDataParser", "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
  }
@@ -1,2 +1,2 @@
1
- import{hexaStringToBuffer as u}from"@ledgerhq/device-management-kit";import{Just as s,Nothing as o,Right as w}from"purify-ts";import{ArrayType as d,PrimitiveType as r,StructType as m,TypedDataValueArray as b,TypedDataValueField as y,TypedDataValueRoot as f}from"../../typed-data/model/Types";import{TypedDataParser as p}from"./TypedDataParser";describe("TypedDataParser - types parsing",()=>{it("Parse primitive types bytes",()=>{const i={TestStruct:[{name:"test1",type:"bytes"},{name:"test2",type:"bytes1"},{name:"test3",type:"bytes2"},{name:"test4",type:"bytes31"},{name:"test5",type:"bytes32"}]},e=new p(i),t={TestStruct:{test1:new r("bytes","bytes",o),test2:new r("bytes1","bytes",s(1)),test3:new r("bytes2","bytes",s(2)),test4:new r("bytes31","bytes",s(31)),test5:new r("bytes32","bytes",s(32))}};expect(e.getStructDefinitions()).toStrictEqual(t)}),it("Parse primitive types bytes, out of bound",()=>{const i={TestStruct:[{name:"invalid1",type:"bytes0"},{name:"invalid2",type:"bytes33"}]},e=new p(i),t={TestStruct:{invalid1:new m("bytes0"),invalid2:new m("bytes33")}};expect(e.getStructDefinitions()).toStrictEqual(t)}),it("Parse primitive types number",()=>{const i={TestStruct:[{name:"test1",type:"int8"},{name:"test2",type:"uint8"},{name:"test3",type:"int16"},{name:"test4",type:"uint32"},{name:"test5",type:"uint64"},{name:"test6",type:"int128"},{name:"test7",type:"int136"},{name:"test8",type:"int144"},{name:"test9",type:"uint240"},{name:"test10",type:"uint248"},{name:"test11",type:"uint256"},{name:"test12",type:"int256"}]},e=new p(i),t={TestStruct:{test1:new r("int8","int",s(1)),test2:new r("uint8","uint",s(1)),test3:new r("int16","int",s(2)),test4:new r("uint32","uint",s(4)),test5:new r("uint64","uint",s(8)),test6:new r("int128","int",s(16)),test7:new r("int136","int",s(17)),test8:new r("int144","int",s(18)),test9:new r("uint240","uint",s(30)),test10:new r("uint248","uint",s(31)),test11:new r("uint256","uint",s(32)),test12:new r("int256","int",s(32))}};expect(e.getStructDefinitions()).toStrictEqual(t)}),it("Parse primitive types number, out of bound",()=>{const i={TestStruct:[{name:"invalid1",type:"int0"},{name:"invalid2",type:"uint0"},{name:"invalid3",type:"int7"},{name:"invalid4",type:"int257"},{name:"invalid5",type:"uint257"},{name:"invalid6",type:"int512"}]},e=new p(i),t={TestStruct:{invalid1:new m("int0"),invalid2:new m("uint0"),invalid3:new m("int7"),invalid4:new m("int257"),invalid5:new m("uint257"),invalid6:new m("int512")}};expect(e.getStructDefinitions()).toStrictEqual(t)}),it("Parse primitive types others",()=>{const i={TestStruct:[{name:"test1",type:"address"},{name:"test2",type:"bool"},{name:"test3",type:"string"}]},e=new p(i),t={TestStruct:{test1:new r("address","address",o),test2:new r("bool","bool",o),test3:new r("string","string",o)}};expect(e.getStructDefinitions()).toStrictEqual(t)}),it("Parse arrays",()=>{const i={TestStruct:[{name:"test1",type:"address[]"},{name:"test2",type:"uint16[3]"},{name:"test3",type:"custom[2][][3]"},{name:"test4",type:"string[2][][3][]"}]},e=new p(i),t={TestStruct:{test1:new d("address[]",new r("address","address",o),"address",o,[o]),test2:new d("uint16[3]",new r("uint16","uint",s(2)),"uint16",s(3),[s(3)]),test3:new d("custom[2][][3]",new m("custom"),"custom[2][]",s(3),[s(2),o,s(3)]),test4:new d("string[2][][3][]",new r("string","string",o),"string[2][][3]",o,[s(2),o,s(3),o])}};expect(e.getStructDefinitions()).toStrictEqual(t)}),it("Parse custom struct",()=>{const i={TestStruct:[{name:"test",type:"MyCustomStructure"}]},e=new p(i),t={TestStruct:{test:new m("MyCustomStructure")}};expect(e.getStructDefinitions()).toStrictEqual(t)})});describe("TypedDataParser - message parsing",()=>{const i={domain:{chainId:0,name:"Ether Mail",verifyingContract:"0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC",version:"1"},message:{contents:"Hello, Bob!",from:{name:"Cow",wallets:["0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826","0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF"]},to:[{wallets:["0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB","0xB0BdaBea57B0BDABeA57b0bdABEA57b0BDabEa57","0xB0B0b0b0b0b0B000000000000000000000000000"],name:"Bob"}]},primaryType:"Mail",types:{EIP712Domain:[{name:"name",type:"string"},{name:"version",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"}],Mail:[{name:"from",type:"Person"},{name:"to",type:"Person[1]"},{name:"contents",type:"string"}],Person:[{name:"name",type:"string"},{name:"wallets",type:"address[]"}]}};it("Parse an EIP712 message",()=>{const e=i.types,t=i.primaryType,n=i.message,a=new p(e).parse(t,n),l=[{path:"",type:"",value:new f(t)},{path:"from.name",type:"string",value:new y(new TextEncoder().encode("Cow"))},{path:"from.wallets",type:"address[]",value:new b(2)},{path:"from.wallets.[]",type:"address",value:new y(u("0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826"))},{path:"from.wallets.[]",type:"address",value:new y(u("0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF"))},{path:"to",type:"Person[1]",value:new b(1)},{path:"to.[].name",type:"string",value:new y(new TextEncoder().encode("Bob"))},{path:"to.[].wallets",type:"address[]",value:new b(3)},{path:"to.[].wallets.[]",type:"address",value:new y(u("0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB"))},{path:"to.[].wallets.[]",type:"address",value:new y(u("0xB0BdaBea57B0BDABeA57b0bdABEA57b0BDabEa57"))},{path:"to.[].wallets.[]",type:"address",value:new y(u("0xB0B0b0b0b0b0B000000000000000000000000000"))},{path:"contents",type:"string",value:new y(new TextEncoder().encode("Hello, Bob!"))}];expect(a).toStrictEqual(w(l))}),it("Parse an EIP712 domain",()=>{const e=i.types,t="EIP712Domain",n=i.domain,c=new p(e),a=[{path:"",type:"",value:new f(t)},{path:"name",type:"string",value:new y(new TextEncoder().encode("Ether Mail"))},{path:"version",type:"string",value:new y(new TextEncoder().encode("1"))},{path:"chainId",type:"uint256",value:new y(Uint8Array.from([0]))},{path:"verifyingContract",type:"address",value:new y(u("0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC"))}],l=c.parse(t,n);expect(l).toStrictEqual(w(a))}),it("Invalid primary type",()=>{const e=i.types,t="unknown",n=i.domain,a=new p(e).parse(t,n);expect(a.isLeft()).toStrictEqual(!0)}),it("Struct points to an unknown custom type",()=>{const e={Mail:[{name:"from",type:"Person"}]},t="Mail",n={from:"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826"},a=new p(e).parse(t,n);expect(a.isLeft()).toStrictEqual(!0)}),it("Array contains an unknown custom type",()=>{const e={Mail:[{name:"from",type:"Person[]"}]},t="Mail",n={from:["0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826"]},a=new p(e).parse(t,n);expect(a.isLeft()).toStrictEqual(!0)}),it("Invalid primitive value",()=>{const e={Mail:[{name:"from",type:"uint8"}]},t="Mail",n={from:3e3},a=new p(e).parse(t,n);expect(a.isLeft()).toStrictEqual(!0)}),it("Array instead of primitive value",()=>{const e={Mail:[{name:"from",type:"uint8"}]},t="Mail",n={from:[42]},a=new p(e).parse(t,n);expect(a.isLeft()).toStrictEqual(!0)}),it("Struct instead of primitive value",()=>{const e={Mail:[{name:"from",type:"uint8"}]},t="Mail",n={from:{data:42}},a=new p(e).parse(t,n);expect(a.isLeft()).toStrictEqual(!0)}),it("Struct value not a record",()=>{const e={Mail:[{name:"from",type:"Person"}],Person:[{name:"data",type:"uint8"}]},t="Mail",n={from:42},a=new p(e).parse(t,n);expect(a.isLeft()).toStrictEqual(!0)}),it("Struct field not present in value",()=>{const e={Mail:[{name:"from",type:"uint8"}]},t="Mail",n={to:42},a=new p(e).parse(t,n);expect(a.isLeft()).toStrictEqual(!0)}),it("Array value not an array",()=>{const e={Mail:[{name:"from",type:"uint8[]"}]},t="Mail",n={from:42},a=new p(e).parse(t,n);expect(a.isLeft()).toStrictEqual(!0)}),it("Array value with invalid size",()=>{const e={Mail:[{name:"from",type:"uint8[3]"}]},t="Mail",n={from:[42]},a=new p(e).parse(t,n);expect(a.isLeft()).toStrictEqual(!0)})});
1
+ import{hexaStringToBuffer as m}from"@ledgerhq/device-management-kit";import{Just as a,Nothing as c,Right as w}from"purify-ts";import{ArrayType as d,PrimitiveType as n,StructType as o,TypedDataValueArray as b,TypedDataValueField as u,TypedDataValueRoot as C}from"../../typed-data/model/Types";import{TypedDataParser as p}from"./TypedDataParser";describe("TypedDataParser - types parsing",()=>{it("Parse primitive types bytes",()=>{const s={TestStruct:[{name:"test1",type:"bytes"},{name:"test2",type:"bytes1"},{name:"test3",type:"bytes2"},{name:"test4",type:"bytes31"},{name:"test5",type:"bytes32"}]},e=new p(s,{}),t={TestStruct:{test1:new n("bytes","bytes",c),test2:new n("bytes1","bytes",a(1)),test3:new n("bytes2","bytes",a(2)),test4:new n("bytes31","bytes",a(31)),test5:new n("bytes32","bytes",a(32))}};expect(e.getStructDefinitions()).toStrictEqual(t)}),it("Parse primitive types bytes, out of bound",()=>{const s={TestStruct:[{name:"invalid1",type:"bytes0"},{name:"invalid2",type:"bytes33"}]},e=new p(s,{}),t={TestStruct:{invalid1:new o("bytes0"),invalid2:new o("bytes33")}};expect(e.getStructDefinitions()).toStrictEqual(t)}),it("Parse primitive types number",()=>{const s={TestStruct:[{name:"test1",type:"int8"},{name:"test2",type:"uint8"},{name:"test3",type:"int16"},{name:"test4",type:"uint32"},{name:"test5",type:"uint64"},{name:"test6",type:"int128"},{name:"test7",type:"int136"},{name:"test8",type:"int144"},{name:"test9",type:"uint240"},{name:"test10",type:"uint248"},{name:"test11",type:"uint256"},{name:"test12",type:"int256"}]},e=new p(s,{}),t={TestStruct:{test1:new n("int8","int",a(1)),test2:new n("uint8","uint",a(1)),test3:new n("int16","int",a(2)),test4:new n("uint32","uint",a(4)),test5:new n("uint64","uint",a(8)),test6:new n("int128","int",a(16)),test7:new n("int136","int",a(17)),test8:new n("int144","int",a(18)),test9:new n("uint240","uint",a(30)),test10:new n("uint248","uint",a(31)),test11:new n("uint256","uint",a(32)),test12:new n("int256","int",a(32))}};expect(e.getStructDefinitions()).toStrictEqual(t)}),it("Parse primitive types number, out of bound",()=>{const s={TestStruct:[{name:"invalid1",type:"int0"},{name:"invalid2",type:"uint0"},{name:"invalid3",type:"int7"},{name:"invalid4",type:"int257"},{name:"invalid5",type:"uint257"},{name:"invalid6",type:"int512"}]},e=new p(s,{}),t={TestStruct:{invalid1:new o("int0"),invalid2:new o("uint0"),invalid3:new o("int7"),invalid4:new o("int257"),invalid5:new o("uint257"),invalid6:new o("int512")}};expect(e.getStructDefinitions()).toStrictEqual(t)}),it("Parse primitive types others",()=>{const s={TestStruct:[{name:"test1",type:"address"},{name:"test2",type:"bool"},{name:"test3",type:"string"}]},e=new p(s,{}),t={TestStruct:{test1:new n("address","address",c),test2:new n("bool","bool",c),test3:new n("string","string",c)}};expect(e.getStructDefinitions()).toStrictEqual(t)}),it("Parse arrays",()=>{const s={TestStruct:[{name:"test1",type:"address[]"},{name:"test2",type:"uint16[3]"},{name:"test3",type:"custom[2][][3]"},{name:"test4",type:"string[2][][3][]"}]},e=new p(s,{}),t={TestStruct:{test1:new d("address[]",new n("address","address",c),"address",c,[c]),test2:new d("uint16[3]",new n("uint16","uint",a(2)),"uint16",a(3),[a(3)]),test3:new d("custom[2][][3]",new o("custom"),"custom[2][]",a(3),[a(2),c,a(3)]),test4:new d("string[2][][3][]",new n("string","string",c),"string[2][][3]",c,[a(2),c,a(3),c])}};expect(e.getStructDefinitions()).toStrictEqual(t)}),it("Parse custom struct",()=>{const s={TestStruct:[{name:"test",type:"MyCustomStructure"}]},e=new p(s,{}),t={TestStruct:{test:new o("MyCustomStructure")}};expect(e.getStructDefinitions()).toStrictEqual(t)}),it("Don't append domain default types if already present",()=>{const s={EIP712Domain:[{name:"name",type:"string"}],TestStruct:[{name:"test",type:"MyCustomStructure"}]},e=new p(s,{name:"Seaport",version:"1.5",chainId:1,verifyingContract:"0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC",salt:"0x42"}),t={EIP712Domain:{name:new n("string","string",c)},TestStruct:{test:new o("MyCustomStructure")}};expect(e.getStructDefinitions()).toStrictEqual(t)}),it("Append domain default types",()=>{const s={TestStruct:[{name:"test",type:"MyCustomStructure"}]},e=new p(s,{name:"Seaport",version:"1.5",chainId:1,verifyingContract:"0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC",salt:"0x42"}),t={EIP712Domain:{name:new n("string","string",c),version:new n("string","string",c),chainId:new n("uint256","uint",a(32)),verifyingContract:new n("address","address",c),salt:new n("bytes32","bytes",a(32))},TestStruct:{test:new o("MyCustomStructure")}};expect(e.getStructDefinitions()).toStrictEqual(t)}),it("Append partial domain default types",()=>{const s={TestStruct:[{name:"test",type:"MyCustomStructure"}]},e=new p(s,{name:"Seaport",chainId:1,verifyingContract:"0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC"}),t={EIP712Domain:{name:new n("string","string",c),chainId:new n("uint256","uint",a(32)),verifyingContract:new n("address","address",c)},TestStruct:{test:new o("MyCustomStructure")}};expect(e.getStructDefinitions()).toStrictEqual(t)})});describe("TypedDataParser - message parsing",()=>{const s={domain:{chainId:0,name:"Ether Mail",verifyingContract:"0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC",version:"1"},message:{contents:"Hello, Bob!",from:{name:"Cow",wallets:["0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826","0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF"]},to:[{wallets:["0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB","0xB0BdaBea57B0BDABeA57b0bdABEA57b0BDabEa57","0xB0B0b0b0b0b0B000000000000000000000000000"],name:"Bob"}]},primaryType:"Mail",types:{EIP712Domain:[{name:"name",type:"string"},{name:"version",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"}],Mail:[{name:"from",type:"Person"},{name:"to",type:"Person[1]"},{name:"contents",type:"string"}],Person:[{name:"name",type:"string"},{name:"wallets",type:"address[]"}]}};it("Parse an EIP712 message",()=>{const e=s.types,t=s.primaryType,r=s.message,i=new p(e,{}).parse(t,r),l=[{path:"",type:"",value:new C(t)},{path:"from.name",type:"string",value:new u(new TextEncoder().encode("Cow"))},{path:"from.wallets",type:"address[]",value:new b(2)},{path:"from.wallets.[]",type:"address",value:new u(m("0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826"))},{path:"from.wallets.[]",type:"address",value:new u(m("0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF"))},{path:"to",type:"Person[1]",value:new b(1)},{path:"to.[].name",type:"string",value:new u(new TextEncoder().encode("Bob"))},{path:"to.[].wallets",type:"address[]",value:new b(3)},{path:"to.[].wallets.[]",type:"address",value:new u(m("0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB"))},{path:"to.[].wallets.[]",type:"address",value:new u(m("0xB0BdaBea57B0BDABeA57b0bdABEA57b0BDabEa57"))},{path:"to.[].wallets.[]",type:"address",value:new u(m("0xB0B0b0b0b0b0B000000000000000000000000000"))},{path:"contents",type:"string",value:new u(new TextEncoder().encode("Hello, Bob!"))}];expect(i).toStrictEqual(w(l))}),it("Parse an EIP712 domain",()=>{const e=s.types,t="EIP712Domain",r=s.domain,y=new p(e,{}),i=[{path:"",type:"",value:new C(t)},{path:"name",type:"string",value:new u(new TextEncoder().encode("Ether Mail"))},{path:"version",type:"string",value:new u(new TextEncoder().encode("1"))},{path:"chainId",type:"uint256",value:new u(Uint8Array.from([0]))},{path:"verifyingContract",type:"address",value:new u(m("0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC"))}],l=y.parse(t,r);expect(l).toStrictEqual(w(i))}),it("Invalid primary type",()=>{const e=s.types,t="unknown",r=s.domain,i=new p(e,{}).parse(t,r);expect(i.isLeft()).toStrictEqual(!0)}),it("Struct points to an unknown custom type",()=>{const e={Mail:[{name:"from",type:"Person"}]},t="Mail",r={from:"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826"},i=new p(e,{}).parse(t,r);expect(i.isLeft()).toStrictEqual(!0)}),it("Array contains an unknown custom type",()=>{const e={Mail:[{name:"from",type:"Person[]"}]},t="Mail",r={from:["0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826"]},i=new p(e,{}).parse(t,r);expect(i.isLeft()).toStrictEqual(!0)}),it("Invalid primitive value",()=>{const e={Mail:[{name:"from",type:"uint8"}]},t="Mail",r={from:3e3},i=new p(e,{}).parse(t,r);expect(i.isLeft()).toStrictEqual(!0)}),it("Array instead of primitive value",()=>{const e={Mail:[{name:"from",type:"uint8"}]},t="Mail",r={from:[42]},i=new p(e,{}).parse(t,r);expect(i.isLeft()).toStrictEqual(!0)}),it("Struct instead of primitive value",()=>{const e={Mail:[{name:"from",type:"uint8"}]},t="Mail",r={from:{data:42}},i=new p(e,{}).parse(t,r);expect(i.isLeft()).toStrictEqual(!0)}),it("Struct value not a record",()=>{const e={Mail:[{name:"from",type:"Person"}],Person:[{name:"data",type:"uint8"}]},t="Mail",r={from:42},i=new p(e,{}).parse(t,r);expect(i.isLeft()).toStrictEqual(!0)}),it("Struct field not present in value",()=>{const e={Mail:[{name:"from",type:"uint8"}]},t="Mail",r={to:42},i=new p(e,{}).parse(t,r);expect(i.isLeft()).toStrictEqual(!0)}),it("Array value not an array",()=>{const e={Mail:[{name:"from",type:"uint8[]"}]},t="Mail",r={from:42},i=new p(e,{}).parse(t,r);expect(i.isLeft()).toStrictEqual(!0)}),it("Array value with invalid size",()=>{const e={Mail:[{name:"from",type:"uint8[3]"}]},t="Mail",r={from:[42]},i=new p(e,{}).parse(t,r);expect(i.isLeft()).toStrictEqual(!0)})});
2
2
  //# sourceMappingURL=TypedDataParser.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/typed-data/service/TypedDataParser.test.ts"],
4
- "sourcesContent": ["import { hexaStringToBuffer } from \"@ledgerhq/device-management-kit\";\nimport { Just, Nothing, Right } from \"purify-ts\";\n\nimport { type TypedData } from \"@api/model/TypedData\";\nimport {\n ArrayType,\n PrimitiveType,\n StructType,\n TypedDataValueArray,\n TypedDataValueField,\n TypedDataValueRoot,\n} from \"@internal/typed-data/model/Types\";\n\nimport { TypedDataParser } from \"./TypedDataParser\";\n\ndescribe(\"TypedDataParser - types parsing\", () => {\n it(\"Parse primitive types bytes\", () => {\n // GIVEN\n const types = {\n TestStruct: [\n { name: \"test1\", type: \"bytes\" },\n { name: \"test2\", type: \"bytes1\" },\n { name: \"test3\", type: \"bytes2\" },\n { name: \"test4\", type: \"bytes31\" },\n { name: \"test5\", type: \"bytes32\" },\n ],\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const expected = {\n TestStruct: {\n test1: new PrimitiveType(\"bytes\", \"bytes\", Nothing),\n test2: new PrimitiveType(\"bytes1\", \"bytes\", Just(1)),\n test3: new PrimitiveType(\"bytes2\", \"bytes\", Just(2)),\n test4: new PrimitiveType(\"bytes31\", \"bytes\", Just(31)),\n test5: new PrimitiveType(\"bytes32\", \"bytes\", Just(32)),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Parse primitive types bytes, out of bound\", () => {\n // GIVEN\n const types = {\n TestStruct: [\n { name: \"invalid1\", type: \"bytes0\" },\n { name: \"invalid2\", type: \"bytes33\" },\n ],\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const expected = {\n TestStruct: {\n invalid1: new StructType(\"bytes0\"),\n invalid2: new StructType(\"bytes33\"),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Parse primitive types number\", () => {\n // GIVEN\n const types = {\n TestStruct: [\n { name: \"test1\", type: \"int8\" },\n { name: \"test2\", type: \"uint8\" },\n { name: \"test3\", type: \"int16\" },\n { name: \"test4\", type: \"uint32\" },\n { name: \"test5\", type: \"uint64\" },\n { name: \"test6\", type: \"int128\" },\n { name: \"test7\", type: \"int136\" },\n { name: \"test8\", type: \"int144\" },\n { name: \"test9\", type: \"uint240\" },\n { name: \"test10\", type: \"uint248\" },\n { name: \"test11\", type: \"uint256\" },\n { name: \"test12\", type: \"int256\" },\n ],\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const expected = {\n TestStruct: {\n test1: new PrimitiveType(\"int8\", \"int\", Just(1)),\n test2: new PrimitiveType(\"uint8\", \"uint\", Just(1)),\n test3: new PrimitiveType(\"int16\", \"int\", Just(2)),\n test4: new PrimitiveType(\"uint32\", \"uint\", Just(4)),\n test5: new PrimitiveType(\"uint64\", \"uint\", Just(8)),\n test6: new PrimitiveType(\"int128\", \"int\", Just(16)),\n test7: new PrimitiveType(\"int136\", \"int\", Just(17)),\n test8: new PrimitiveType(\"int144\", \"int\", Just(18)),\n test9: new PrimitiveType(\"uint240\", \"uint\", Just(30)),\n test10: new PrimitiveType(\"uint248\", \"uint\", Just(31)),\n test11: new PrimitiveType(\"uint256\", \"uint\", Just(32)),\n test12: new PrimitiveType(\"int256\", \"int\", Just(32)),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Parse primitive types number, out of bound\", () => {\n // GIVEN\n const types = {\n TestStruct: [\n { name: \"invalid1\", type: \"int0\" },\n { name: \"invalid2\", type: \"uint0\" },\n { name: \"invalid3\", type: \"int7\" },\n { name: \"invalid4\", type: \"int257\" },\n { name: \"invalid5\", type: \"uint257\" },\n { name: \"invalid6\", type: \"int512\" },\n ],\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const expected = {\n TestStruct: {\n invalid1: new StructType(\"int0\"),\n invalid2: new StructType(\"uint0\"),\n invalid3: new StructType(\"int7\"),\n invalid4: new StructType(\"int257\"),\n invalid5: new StructType(\"uint257\"),\n invalid6: new StructType(\"int512\"),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Parse primitive types others\", () => {\n // GIVEN\n const types = {\n TestStruct: [\n { name: \"test1\", type: \"address\" },\n { name: \"test2\", type: \"bool\" },\n { name: \"test3\", type: \"string\" },\n ],\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const expected = {\n TestStruct: {\n test1: new PrimitiveType(\"address\", \"address\", Nothing),\n test2: new PrimitiveType(\"bool\", \"bool\", Nothing),\n test3: new PrimitiveType(\"string\", \"string\", Nothing),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Parse arrays\", () => {\n // GIVEN\n const types = {\n TestStruct: [\n { name: \"test1\", type: \"address[]\" },\n { name: \"test2\", type: \"uint16[3]\" },\n { name: \"test3\", type: \"custom[2][][3]\" },\n { name: \"test4\", type: \"string[2][][3][]\" },\n ],\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const expected = {\n TestStruct: {\n test1: new ArrayType(\n \"address[]\",\n new PrimitiveType(\"address\", \"address\", Nothing),\n \"address\",\n Nothing,\n [Nothing],\n ),\n test2: new ArrayType(\n \"uint16[3]\",\n new PrimitiveType(\"uint16\", \"uint\", Just(2)),\n \"uint16\",\n Just(3),\n [Just(3)],\n ),\n test3: new ArrayType(\n \"custom[2][][3]\",\n new StructType(\"custom\"),\n \"custom[2][]\",\n Just(3),\n [Just(2), Nothing, Just(3)],\n ),\n test4: new ArrayType(\n \"string[2][][3][]\",\n new PrimitiveType(\"string\", \"string\", Nothing),\n \"string[2][][3]\",\n Nothing,\n [Just(2), Nothing, Just(3), Nothing],\n ),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Parse custom struct\", () => {\n // GIVEN\n const types = {\n TestStruct: [{ name: \"test\", type: \"MyCustomStructure\" }],\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const expected = {\n TestStruct: {\n test: new StructType(\"MyCustomStructure\"),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n});\n\ndescribe(\"TypedDataParser - message parsing\", () => {\n const MESSAGE: TypedData = {\n domain: {\n chainId: 0,\n name: \"Ether Mail\",\n verifyingContract: \"0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC\",\n version: \"1\",\n },\n message: {\n contents: \"Hello, Bob!\",\n from: {\n name: \"Cow\",\n wallets: [\n \"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826\",\n \"0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF\",\n ],\n },\n to: [\n {\n wallets: [\n \"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB\",\n \"0xB0BdaBea57B0BDABeA57b0bdABEA57b0BDabEa57\",\n \"0xB0B0b0b0b0b0B000000000000000000000000000\",\n ],\n name: \"Bob\",\n },\n ],\n },\n primaryType: \"Mail\",\n types: {\n EIP712Domain: [\n { name: \"name\", type: \"string\" },\n { name: \"version\", type: \"string\" },\n { name: \"chainId\", type: \"uint256\" },\n { name: \"verifyingContract\", type: \"address\" },\n ],\n Mail: [\n { name: \"from\", type: \"Person\" },\n { name: \"to\", type: \"Person[1]\" },\n { name: \"contents\", type: \"string\" },\n ],\n Person: [\n { name: \"name\", type: \"string\" },\n { name: \"wallets\", type: \"address[]\" },\n ],\n },\n };\n\n it(\"Parse an EIP712 message\", () => {\n // GIVEN\n const types = MESSAGE.types;\n const primaryType = MESSAGE.primaryType;\n const message = MESSAGE.message;\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const parsed = parser.parse(primaryType, message);\n const expected = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(primaryType),\n },\n {\n path: \"from.name\",\n type: \"string\",\n value: new TypedDataValueField(new TextEncoder().encode(\"Cow\")),\n },\n {\n path: \"from.wallets\",\n type: \"address[]\",\n value: new TypedDataValueArray(2),\n },\n {\n path: \"from.wallets.[]\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826\")!,\n ),\n },\n {\n path: \"from.wallets.[]\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF\")!,\n ),\n },\n { path: \"to\", type: \"Person[1]\", value: new TypedDataValueArray(1) },\n {\n path: \"to.[].name\",\n type: \"string\",\n value: new TypedDataValueField(new TextEncoder().encode(\"Bob\")),\n },\n {\n path: \"to.[].wallets\",\n type: \"address[]\",\n value: new TypedDataValueArray(3),\n },\n {\n path: \"to.[].wallets.[]\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB\")!,\n ),\n },\n {\n path: \"to.[].wallets.[]\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xB0BdaBea57B0BDABeA57b0bdABEA57b0BDabEa57\")!,\n ),\n },\n {\n path: \"to.[].wallets.[]\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xB0B0b0b0b0b0B000000000000000000000000000\")!,\n ),\n },\n {\n path: \"contents\",\n type: \"string\",\n value: new TypedDataValueField(new TextEncoder().encode(\"Hello, Bob!\")),\n },\n ];\n expect(parsed).toStrictEqual(Right(expected));\n });\n\n it(\"Parse an EIP712 domain\", () => {\n // GIVEN\n const types = MESSAGE.types;\n const primaryType = \"EIP712Domain\";\n const message = MESSAGE.domain;\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const expected = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(primaryType),\n },\n {\n path: \"name\",\n type: \"string\",\n value: new TypedDataValueField(new TextEncoder().encode(\"Ether Mail\")),\n },\n {\n path: \"version\",\n type: \"string\",\n value: new TypedDataValueField(new TextEncoder().encode(\"1\")),\n },\n {\n path: \"chainId\",\n type: \"uint256\",\n value: new TypedDataValueField(Uint8Array.from([0])),\n },\n {\n path: \"verifyingContract\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC\")!,\n ),\n },\n ];\n const parsed = parser.parse(primaryType, message);\n expect(parsed).toStrictEqual(Right(expected));\n });\n\n it(\"Invalid primary type\", () => {\n // GIVEN\n const types = MESSAGE.types;\n const primaryType = \"unknown\";\n const message = MESSAGE.domain;\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Struct points to an unknown custom type\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"Person\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: \"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826\",\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Array contains an unknown custom type\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"Person[]\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: [\"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826\"],\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Invalid primitive value\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"uint8\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: 3000,\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Array instead of primitive value\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"uint8\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: [42],\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Struct instead of primitive value\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"uint8\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: { data: 42 },\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Struct value not a record\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"Person\" }],\n Person: [{ name: \"data\", type: \"uint8\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: 42,\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Struct field not present in value\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"uint8\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n to: 42,\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Array value not an array\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"uint8[]\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: 42,\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Array value with invalid size\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"uint8[3]\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: [42],\n };\n // WHEN\n const parser = new TypedDataParser(types);\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { hexaStringToBuffer } from \"@ledgerhq/device-management-kit\";\nimport { Just, Nothing, Right } from \"purify-ts\";\n\nimport { type TypedData } from \"@api/model/TypedData\";\nimport {\n ArrayType,\n PrimitiveType,\n StructType,\n TypedDataValueArray,\n TypedDataValueField,\n TypedDataValueRoot,\n} from \"@internal/typed-data/model/Types\";\n\nimport { TypedDataParser } from \"./TypedDataParser\";\n\ndescribe(\"TypedDataParser - types parsing\", () => {\n it(\"Parse primitive types bytes\", () => {\n // GIVEN\n const types = {\n TestStruct: [\n { name: \"test1\", type: \"bytes\" },\n { name: \"test2\", type: \"bytes1\" },\n { name: \"test3\", type: \"bytes2\" },\n { name: \"test4\", type: \"bytes31\" },\n { name: \"test5\", type: \"bytes32\" },\n ],\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const expected = {\n TestStruct: {\n test1: new PrimitiveType(\"bytes\", \"bytes\", Nothing),\n test2: new PrimitiveType(\"bytes1\", \"bytes\", Just(1)),\n test3: new PrimitiveType(\"bytes2\", \"bytes\", Just(2)),\n test4: new PrimitiveType(\"bytes31\", \"bytes\", Just(31)),\n test5: new PrimitiveType(\"bytes32\", \"bytes\", Just(32)),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Parse primitive types bytes, out of bound\", () => {\n // GIVEN\n const types = {\n TestStruct: [\n { name: \"invalid1\", type: \"bytes0\" },\n { name: \"invalid2\", type: \"bytes33\" },\n ],\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const expected = {\n TestStruct: {\n invalid1: new StructType(\"bytes0\"),\n invalid2: new StructType(\"bytes33\"),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Parse primitive types number\", () => {\n // GIVEN\n const types = {\n TestStruct: [\n { name: \"test1\", type: \"int8\" },\n { name: \"test2\", type: \"uint8\" },\n { name: \"test3\", type: \"int16\" },\n { name: \"test4\", type: \"uint32\" },\n { name: \"test5\", type: \"uint64\" },\n { name: \"test6\", type: \"int128\" },\n { name: \"test7\", type: \"int136\" },\n { name: \"test8\", type: \"int144\" },\n { name: \"test9\", type: \"uint240\" },\n { name: \"test10\", type: \"uint248\" },\n { name: \"test11\", type: \"uint256\" },\n { name: \"test12\", type: \"int256\" },\n ],\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const expected = {\n TestStruct: {\n test1: new PrimitiveType(\"int8\", \"int\", Just(1)),\n test2: new PrimitiveType(\"uint8\", \"uint\", Just(1)),\n test3: new PrimitiveType(\"int16\", \"int\", Just(2)),\n test4: new PrimitiveType(\"uint32\", \"uint\", Just(4)),\n test5: new PrimitiveType(\"uint64\", \"uint\", Just(8)),\n test6: new PrimitiveType(\"int128\", \"int\", Just(16)),\n test7: new PrimitiveType(\"int136\", \"int\", Just(17)),\n test8: new PrimitiveType(\"int144\", \"int\", Just(18)),\n test9: new PrimitiveType(\"uint240\", \"uint\", Just(30)),\n test10: new PrimitiveType(\"uint248\", \"uint\", Just(31)),\n test11: new PrimitiveType(\"uint256\", \"uint\", Just(32)),\n test12: new PrimitiveType(\"int256\", \"int\", Just(32)),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Parse primitive types number, out of bound\", () => {\n // GIVEN\n const types = {\n TestStruct: [\n { name: \"invalid1\", type: \"int0\" },\n { name: \"invalid2\", type: \"uint0\" },\n { name: \"invalid3\", type: \"int7\" },\n { name: \"invalid4\", type: \"int257\" },\n { name: \"invalid5\", type: \"uint257\" },\n { name: \"invalid6\", type: \"int512\" },\n ],\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const expected = {\n TestStruct: {\n invalid1: new StructType(\"int0\"),\n invalid2: new StructType(\"uint0\"),\n invalid3: new StructType(\"int7\"),\n invalid4: new StructType(\"int257\"),\n invalid5: new StructType(\"uint257\"),\n invalid6: new StructType(\"int512\"),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Parse primitive types others\", () => {\n // GIVEN\n const types = {\n TestStruct: [\n { name: \"test1\", type: \"address\" },\n { name: \"test2\", type: \"bool\" },\n { name: \"test3\", type: \"string\" },\n ],\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const expected = {\n TestStruct: {\n test1: new PrimitiveType(\"address\", \"address\", Nothing),\n test2: new PrimitiveType(\"bool\", \"bool\", Nothing),\n test3: new PrimitiveType(\"string\", \"string\", Nothing),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Parse arrays\", () => {\n // GIVEN\n const types = {\n TestStruct: [\n { name: \"test1\", type: \"address[]\" },\n { name: \"test2\", type: \"uint16[3]\" },\n { name: \"test3\", type: \"custom[2][][3]\" },\n { name: \"test4\", type: \"string[2][][3][]\" },\n ],\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const expected = {\n TestStruct: {\n test1: new ArrayType(\n \"address[]\",\n new PrimitiveType(\"address\", \"address\", Nothing),\n \"address\",\n Nothing,\n [Nothing],\n ),\n test2: new ArrayType(\n \"uint16[3]\",\n new PrimitiveType(\"uint16\", \"uint\", Just(2)),\n \"uint16\",\n Just(3),\n [Just(3)],\n ),\n test3: new ArrayType(\n \"custom[2][][3]\",\n new StructType(\"custom\"),\n \"custom[2][]\",\n Just(3),\n [Just(2), Nothing, Just(3)],\n ),\n test4: new ArrayType(\n \"string[2][][3][]\",\n new PrimitiveType(\"string\", \"string\", Nothing),\n \"string[2][][3]\",\n Nothing,\n [Just(2), Nothing, Just(3), Nothing],\n ),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Parse custom struct\", () => {\n // GIVEN\n const types = {\n TestStruct: [{ name: \"test\", type: \"MyCustomStructure\" }],\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const expected = {\n TestStruct: {\n test: new StructType(\"MyCustomStructure\"),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Don't append domain default types if already present\", () => {\n // GIVEN\n const types = {\n EIP712Domain: [{ name: \"name\", type: \"string\" }],\n TestStruct: [{ name: \"test\", type: \"MyCustomStructure\" }],\n };\n // WHEN\n const parser = new TypedDataParser(types, {\n name: \"Seaport\",\n version: \"1.5\",\n chainId: 1,\n verifyingContract: \"0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC\",\n salt: \"0x42\",\n });\n // THEN\n const expected = {\n EIP712Domain: {\n name: new PrimitiveType(\"string\", \"string\", Nothing),\n },\n TestStruct: {\n test: new StructType(\"MyCustomStructure\"),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Append domain default types\", () => {\n // GIVEN\n const types = {\n TestStruct: [{ name: \"test\", type: \"MyCustomStructure\" }],\n };\n // WHEN\n const parser = new TypedDataParser(types, {\n name: \"Seaport\",\n version: \"1.5\",\n chainId: 1,\n verifyingContract: \"0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC\",\n salt: \"0x42\",\n });\n // THEN\n const expected = {\n EIP712Domain: {\n name: new PrimitiveType(\"string\", \"string\", Nothing),\n version: new PrimitiveType(\"string\", \"string\", Nothing),\n chainId: new PrimitiveType(\"uint256\", \"uint\", Just(32)),\n verifyingContract: new PrimitiveType(\"address\", \"address\", Nothing),\n salt: new PrimitiveType(\"bytes32\", \"bytes\", Just(32)),\n },\n TestStruct: {\n test: new StructType(\"MyCustomStructure\"),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n\n it(\"Append partial domain default types\", () => {\n // GIVEN\n const types = {\n TestStruct: [{ name: \"test\", type: \"MyCustomStructure\" }],\n };\n // WHEN\n const parser = new TypedDataParser(types, {\n name: \"Seaport\",\n chainId: 1,\n verifyingContract: \"0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC\",\n });\n // THEN\n const expected = {\n EIP712Domain: {\n name: new PrimitiveType(\"string\", \"string\", Nothing),\n chainId: new PrimitiveType(\"uint256\", \"uint\", Just(32)),\n verifyingContract: new PrimitiveType(\"address\", \"address\", Nothing),\n },\n TestStruct: {\n test: new StructType(\"MyCustomStructure\"),\n },\n };\n expect(parser.getStructDefinitions()).toStrictEqual(expected);\n });\n});\n\ndescribe(\"TypedDataParser - message parsing\", () => {\n const MESSAGE: TypedData = {\n domain: {\n chainId: 0,\n name: \"Ether Mail\",\n verifyingContract: \"0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC\",\n version: \"1\",\n },\n message: {\n contents: \"Hello, Bob!\",\n from: {\n name: \"Cow\",\n wallets: [\n \"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826\",\n \"0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF\",\n ],\n },\n to: [\n {\n wallets: [\n \"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB\",\n \"0xB0BdaBea57B0BDABeA57b0bdABEA57b0BDabEa57\",\n \"0xB0B0b0b0b0b0B000000000000000000000000000\",\n ],\n name: \"Bob\",\n },\n ],\n },\n primaryType: \"Mail\",\n types: {\n EIP712Domain: [\n { name: \"name\", type: \"string\" },\n { name: \"version\", type: \"string\" },\n { name: \"chainId\", type: \"uint256\" },\n { name: \"verifyingContract\", type: \"address\" },\n ],\n Mail: [\n { name: \"from\", type: \"Person\" },\n { name: \"to\", type: \"Person[1]\" },\n { name: \"contents\", type: \"string\" },\n ],\n Person: [\n { name: \"name\", type: \"string\" },\n { name: \"wallets\", type: \"address[]\" },\n ],\n },\n };\n\n it(\"Parse an EIP712 message\", () => {\n // GIVEN\n const types = MESSAGE.types;\n const primaryType = MESSAGE.primaryType;\n const message = MESSAGE.message;\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const parsed = parser.parse(primaryType, message);\n const expected = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(primaryType),\n },\n {\n path: \"from.name\",\n type: \"string\",\n value: new TypedDataValueField(new TextEncoder().encode(\"Cow\")),\n },\n {\n path: \"from.wallets\",\n type: \"address[]\",\n value: new TypedDataValueArray(2),\n },\n {\n path: \"from.wallets.[]\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826\")!,\n ),\n },\n {\n path: \"from.wallets.[]\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF\")!,\n ),\n },\n { path: \"to\", type: \"Person[1]\", value: new TypedDataValueArray(1) },\n {\n path: \"to.[].name\",\n type: \"string\",\n value: new TypedDataValueField(new TextEncoder().encode(\"Bob\")),\n },\n {\n path: \"to.[].wallets\",\n type: \"address[]\",\n value: new TypedDataValueArray(3),\n },\n {\n path: \"to.[].wallets.[]\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB\")!,\n ),\n },\n {\n path: \"to.[].wallets.[]\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xB0BdaBea57B0BDABeA57b0bdABEA57b0BDabEa57\")!,\n ),\n },\n {\n path: \"to.[].wallets.[]\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xB0B0b0b0b0b0B000000000000000000000000000\")!,\n ),\n },\n {\n path: \"contents\",\n type: \"string\",\n value: new TypedDataValueField(new TextEncoder().encode(\"Hello, Bob!\")),\n },\n ];\n expect(parsed).toStrictEqual(Right(expected));\n });\n\n it(\"Parse an EIP712 domain\", () => {\n // GIVEN\n const types = MESSAGE.types;\n const primaryType = \"EIP712Domain\";\n const message = MESSAGE.domain;\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const expected = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(primaryType),\n },\n {\n path: \"name\",\n type: \"string\",\n value: new TypedDataValueField(new TextEncoder().encode(\"Ether Mail\")),\n },\n {\n path: \"version\",\n type: \"string\",\n value: new TypedDataValueField(new TextEncoder().encode(\"1\")),\n },\n {\n path: \"chainId\",\n type: \"uint256\",\n value: new TypedDataValueField(Uint8Array.from([0])),\n },\n {\n path: \"verifyingContract\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC\")!,\n ),\n },\n ];\n const parsed = parser.parse(primaryType, message);\n expect(parsed).toStrictEqual(Right(expected));\n });\n\n it(\"Invalid primary type\", () => {\n // GIVEN\n const types = MESSAGE.types;\n const primaryType = \"unknown\";\n const message = MESSAGE.domain;\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Struct points to an unknown custom type\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"Person\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: \"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826\",\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Array contains an unknown custom type\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"Person[]\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: [\"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826\"],\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Invalid primitive value\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"uint8\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: 3000,\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Array instead of primitive value\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"uint8\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: [42],\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Struct instead of primitive value\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"uint8\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: { data: 42 },\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Struct value not a record\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"Person\" }],\n Person: [{ name: \"data\", type: \"uint8\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: 42,\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Struct field not present in value\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"uint8\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n to: 42,\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Array value not an array\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"uint8[]\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: 42,\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n\n it(\"Array value with invalid size\", () => {\n // GIVEN\n const types = {\n Mail: [{ name: \"from\", type: \"uint8[3]\" }],\n };\n const primaryType = \"Mail\";\n const message = {\n from: [42],\n };\n // WHEN\n const parser = new TypedDataParser(types, {});\n // THEN\n const parsed = parser.parse(primaryType, message);\n expect(parsed.isLeft()).toStrictEqual(true);\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": ["hexaStringToBuffer", "Just", "Nothing", "Right", "ArrayType", "PrimitiveType", "StructType", "TypedDataValueArray", "TypedDataValueField", "TypedDataValueRoot", "TypedDataParser", "types", "parser", "expected", "MESSAGE", "primaryType", "message", "parsed"]
7
7
  }