@aztec/foundation 0.0.1-commit.96bb3f7 → 0.0.1-commit.993d240

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 (352) hide show
  1. package/dest/array/sorted_array.d.ts +6 -1
  2. package/dest/array/sorted_array.d.ts.map +1 -1
  3. package/dest/array/sorted_array.js +18 -15
  4. package/dest/bigint-buffer/index.d.ts +1 -1
  5. package/dest/bigint-buffer/index.d.ts.map +1 -1
  6. package/dest/bigint-buffer/index.js +6 -1
  7. package/dest/branded-types/block_number.d.ts +6 -3
  8. package/dest/branded-types/block_number.d.ts.map +1 -1
  9. package/dest/branded-types/block_number.js +18 -4
  10. package/dest/branded-types/buffer32_hash.d.ts +27 -0
  11. package/dest/branded-types/buffer32_hash.d.ts.map +1 -0
  12. package/dest/branded-types/buffer32_hash.js +12 -0
  13. package/dest/branded-types/checkpoint_number.d.ts +9 -3
  14. package/dest/branded-types/checkpoint_number.d.ts.map +1 -1
  15. package/dest/branded-types/checkpoint_number.js +11 -0
  16. package/dest/branded-types/epoch.d.ts +2 -2
  17. package/dest/branded-types/epoch.d.ts.map +1 -1
  18. package/dest/branded-types/index.d.ts +3 -1
  19. package/dest/branded-types/index.d.ts.map +1 -1
  20. package/dest/branded-types/index.js +2 -0
  21. package/dest/branded-types/index_within_checkpoint.d.ts +42 -0
  22. package/dest/branded-types/index_within_checkpoint.d.ts.map +1 -0
  23. package/dest/branded-types/index_within_checkpoint.js +59 -0
  24. package/dest/branded-types/slot.d.ts +5 -2
  25. package/dest/branded-types/slot.d.ts.map +1 -1
  26. package/dest/branded-types/slot.js +3 -0
  27. package/dest/buffer/buffer16.d.ts +6 -1
  28. package/dest/buffer/buffer16.d.ts.map +1 -1
  29. package/dest/buffer/buffer32.d.ts +28 -58
  30. package/dest/buffer/buffer32.d.ts.map +1 -1
  31. package/dest/buffer/buffer32.js +29 -63
  32. package/dest/buffer/index.d.ts +2 -1
  33. package/dest/buffer/index.d.ts.map +1 -1
  34. package/dest/buffer/index.js +1 -0
  35. package/dest/buffer/utils.d.ts +3 -0
  36. package/dest/buffer/utils.d.ts.map +1 -0
  37. package/dest/buffer/utils.js +7 -0
  38. package/dest/collection/array.d.ts +22 -1
  39. package/dest/collection/array.d.ts.map +1 -1
  40. package/dest/collection/array.js +84 -0
  41. package/dest/collection/index.d.ts +3 -1
  42. package/dest/collection/index.d.ts.map +1 -1
  43. package/dest/collection/index.js +2 -0
  44. package/dest/collection/lru_map.d.ts +41 -0
  45. package/dest/collection/lru_map.d.ts.map +1 -0
  46. package/dest/collection/lru_map.js +119 -0
  47. package/dest/collection/lru_set.d.ts +35 -0
  48. package/dest/collection/lru_set.d.ts.map +1 -0
  49. package/dest/collection/lru_set.js +95 -0
  50. package/dest/committable/committable.js +1 -1
  51. package/dest/config/env_var.d.ts +2 -2
  52. package/dest/config/env_var.d.ts.map +1 -1
  53. package/dest/config/index.d.ts +50 -29
  54. package/dest/config/index.d.ts.map +1 -1
  55. package/dest/config/index.js +57 -43
  56. package/dest/config/network_config.d.ts +15 -41
  57. package/dest/config/network_config.d.ts.map +1 -1
  58. package/dest/config/network_config.js +4 -1
  59. package/dest/config/network_name.d.ts +2 -2
  60. package/dest/config/network_name.d.ts.map +1 -1
  61. package/dest/config/network_name.js +2 -2
  62. package/dest/config/secret_value.d.ts +2 -2
  63. package/dest/config/secret_value.d.ts.map +1 -1
  64. package/dest/crypto/aes128/index.d.ts +2 -1
  65. package/dest/crypto/aes128/index.d.ts.map +1 -1
  66. package/dest/crypto/aes128/index.js +11 -2
  67. package/dest/crypto/bls/bn254_keystore.d.ts +9 -176
  68. package/dest/crypto/bls/bn254_keystore.d.ts.map +1 -1
  69. package/dest/crypto/bls/bn254_keystore.js +0 -17
  70. package/dest/crypto/ecdsa/signature.d.ts +10 -1
  71. package/dest/crypto/ecdsa/signature.d.ts.map +1 -1
  72. package/dest/crypto/poseidon/index.d.ts +1 -2
  73. package/dest/crypto/poseidon/index.d.ts.map +1 -1
  74. package/dest/crypto/poseidon/index.js +40 -42
  75. package/dest/crypto/random/randomness_singleton.d.ts +4 -3
  76. package/dest/crypto/random/randomness_singleton.d.ts.map +1 -1
  77. package/dest/crypto/random/randomness_singleton.js +4 -4
  78. package/dest/crypto/schnorr/index.d.ts +8 -7
  79. package/dest/crypto/schnorr/index.d.ts.map +1 -1
  80. package/dest/crypto/schnorr/index.js +6 -6
  81. package/dest/crypto/schnorr/signature.d.ts +9 -29
  82. package/dest/crypto/schnorr/signature.d.ts.map +1 -1
  83. package/dest/crypto/schnorr/signature.js +20 -36
  84. package/dest/crypto/secp256k1-signer/utils.d.ts +12 -1
  85. package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -1
  86. package/dest/crypto/secp256k1-signer/utils.js +26 -0
  87. package/dest/crypto/sync/poseidon/index.d.ts +1 -2
  88. package/dest/crypto/sync/poseidon/index.d.ts.map +1 -1
  89. package/dest/crypto/sync/poseidon/index.js +0 -8
  90. package/dest/curves/bls12/field.d.ts +3 -3
  91. package/dest/curves/bls12/field.d.ts.map +1 -1
  92. package/dest/curves/bls12/field.js +0 -5
  93. package/dest/curves/bls12/point.d.ts +11 -2
  94. package/dest/curves/bls12/point.d.ts.map +1 -1
  95. package/dest/curves/bn254/field.d.ts +24 -19
  96. package/dest/curves/bn254/field.d.ts.map +1 -1
  97. package/dest/curves/bn254/field.js +28 -19
  98. package/dest/curves/grumpkin/point.d.ts +21 -26
  99. package/dest/curves/grumpkin/point.d.ts.map +1 -1
  100. package/dest/curves/grumpkin/point.js +29 -43
  101. package/dest/error/index.d.ts +4 -4
  102. package/dest/error/index.d.ts.map +1 -1
  103. package/dest/eth-address/index.d.ts +2 -2
  104. package/dest/eth-address/index.d.ts.map +1 -1
  105. package/dest/eth-address/index.js +0 -3
  106. package/dest/eth-signature/eth_signature.d.ts +6 -2
  107. package/dest/eth-signature/eth_signature.d.ts.map +1 -1
  108. package/dest/eth-signature/eth_signature.js +7 -2
  109. package/dest/fifo/fifo_frame_reader.d.ts +41 -0
  110. package/dest/fifo/fifo_frame_reader.d.ts.map +1 -0
  111. package/dest/fifo/fifo_frame_reader.js +74 -0
  112. package/dest/fifo/index.d.ts +2 -0
  113. package/dest/fifo/index.d.ts.map +1 -0
  114. package/dest/fifo/index.js +1 -0
  115. package/dest/fifo_set/fifo_set.d.ts +15 -0
  116. package/dest/fifo_set/fifo_set.d.ts.map +1 -0
  117. package/dest/fifo_set/fifo_set.js +39 -0
  118. package/dest/fifo_set/index.d.ts +2 -0
  119. package/dest/fifo_set/index.d.ts.map +1 -0
  120. package/dest/fifo_set/index.js +1 -0
  121. package/dest/jest/setup.js +28 -1
  122. package/dest/json-rpc/client/fetch.d.ts +1 -1
  123. package/dest/json-rpc/client/fetch.d.ts.map +1 -1
  124. package/dest/json-rpc/client/fetch.js +4 -3
  125. package/dest/json-rpc/client/safe_json_rpc_client.d.ts +2 -1
  126. package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -1
  127. package/dest/json-rpc/client/safe_json_rpc_client.js +3 -3
  128. package/dest/json-rpc/client/undici.d.ts +1 -1
  129. package/dest/json-rpc/client/undici.d.ts.map +1 -1
  130. package/dest/json-rpc/client/undici.js +23 -4
  131. package/dest/json-rpc/fixtures/class_a.d.ts +3 -3
  132. package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -1
  133. package/dest/json-rpc/fixtures/class_b.d.ts +3 -3
  134. package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -1
  135. package/dest/json-rpc/fixtures/test_state.d.ts +4 -8
  136. package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -1
  137. package/dest/json-rpc/fixtures/test_state.js +57 -17
  138. package/dest/json-rpc/server/api_key_auth.d.ts +19 -0
  139. package/dest/json-rpc/server/api_key_auth.d.ts.map +1 -0
  140. package/dest/json-rpc/server/api_key_auth.js +57 -0
  141. package/dest/json-rpc/server/index.d.ts +2 -1
  142. package/dest/json-rpc/server/index.d.ts.map +1 -1
  143. package/dest/json-rpc/server/index.js +1 -0
  144. package/dest/json-rpc/server/safe_json_rpc_server.d.ts +8 -3
  145. package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -1
  146. package/dest/json-rpc/server/safe_json_rpc_server.js +28 -14
  147. package/dest/log/bigint-utils.d.ts +5 -0
  148. package/dest/log/bigint-utils.d.ts.map +1 -0
  149. package/dest/log/bigint-utils.js +21 -0
  150. package/dest/log/gcloud-logger-config.d.ts +1 -1
  151. package/dest/log/gcloud-logger-config.d.ts.map +1 -1
  152. package/dest/log/gcloud-logger-config.js +3 -0
  153. package/dest/log/libp2p_logger.d.ts +5 -2
  154. package/dest/log/libp2p_logger.d.ts.map +1 -1
  155. package/dest/log/libp2p_logger.js +14 -4
  156. package/dest/log/log-filters.d.ts +17 -4
  157. package/dest/log/log-filters.d.ts.map +1 -1
  158. package/dest/log/log-filters.js +26 -12
  159. package/dest/log/pino-logger-server.d.ts +9 -0
  160. package/dest/log/pino-logger-server.d.ts.map +1 -0
  161. package/dest/log/pino-logger-server.js +18 -0
  162. package/dest/log/pino-logger.d.ts +37 -8
  163. package/dest/log/pino-logger.d.ts.map +1 -1
  164. package/dest/log/pino-logger.js +137 -29
  165. package/dest/noir/noir_package_config.d.ts +19 -104
  166. package/dest/noir/noir_package_config.d.ts.map +1 -1
  167. package/dest/noir/noir_package_config.js +1 -1
  168. package/dest/queue/base_memory_queue.d.ts +2 -2
  169. package/dest/queue/base_memory_queue.d.ts.map +1 -1
  170. package/dest/queue/batch_queue.d.ts +1 -1
  171. package/dest/queue/batch_queue.d.ts.map +1 -1
  172. package/dest/queue/batch_queue.js +1 -0
  173. package/dest/queue/semaphore.d.ts +5 -1
  174. package/dest/queue/semaphore.d.ts.map +1 -1
  175. package/dest/retry/index.d.ts +22 -1
  176. package/dest/retry/index.d.ts.map +1 -1
  177. package/dest/retry/index.js +32 -0
  178. package/dest/schemas/api.d.ts +12 -10
  179. package/dest/schemas/api.d.ts.map +1 -1
  180. package/dest/schemas/api.js +7 -1
  181. package/dest/schemas/parse.d.ts +4 -4
  182. package/dest/schemas/parse.d.ts.map +1 -1
  183. package/dest/schemas/parse.js +6 -5
  184. package/dest/schemas/schemas.d.ts +15 -15
  185. package/dest/schemas/types.d.ts +3 -3
  186. package/dest/schemas/types.d.ts.map +1 -1
  187. package/dest/schemas/utils.d.ts +7 -11
  188. package/dest/schemas/utils.d.ts.map +1 -1
  189. package/dest/schemas/utils.js +2 -18
  190. package/dest/serialize/buffer_reader.d.ts +14 -4
  191. package/dest/serialize/buffer_reader.d.ts.map +1 -1
  192. package/dest/serialize/buffer_reader.js +26 -4
  193. package/dest/serialize/buffer_sink.d.ts +134 -0
  194. package/dest/serialize/buffer_sink.d.ts.map +1 -0
  195. package/dest/serialize/buffer_sink.js +297 -0
  196. package/dest/serialize/index.d.ts +2 -1
  197. package/dest/serialize/index.d.ts.map +1 -1
  198. package/dest/serialize/index.js +1 -0
  199. package/dest/serialize/serialize.d.ts +19 -1
  200. package/dest/serialize/serialize.d.ts.map +1 -1
  201. package/dest/serialize/serialize.js +31 -0
  202. package/dest/sleep/index.d.ts +2 -1
  203. package/dest/sleep/index.d.ts.map +1 -1
  204. package/dest/sleep/index.js +10 -1
  205. package/dest/string/index.js +1 -1
  206. package/dest/timer/date.d.ts +25 -1
  207. package/dest/timer/date.d.ts.map +1 -1
  208. package/dest/timer/date.js +33 -0
  209. package/dest/timer/index.d.ts +2 -2
  210. package/dest/timer/index.d.ts.map +1 -1
  211. package/dest/timer/index.js +1 -1
  212. package/dest/timer/timeout.d.ts +3 -1
  213. package/dest/timer/timeout.d.ts.map +1 -1
  214. package/dest/timer/timeout.js +26 -0
  215. package/dest/transport/dispatch/create_dispatch_proxy.d.ts +11 -2
  216. package/dest/transport/dispatch/create_dispatch_proxy.d.ts.map +1 -1
  217. package/dest/transport/index.d.ts +1 -2
  218. package/dest/transport/index.d.ts.map +1 -1
  219. package/dest/transport/index.js +0 -1
  220. package/dest/transport/transport_client.js +2 -2
  221. package/dest/trees/balanced_merkle_tree_root.d.ts +16 -0
  222. package/dest/trees/balanced_merkle_tree_root.d.ts.map +1 -0
  223. package/dest/trees/{balanced_merkle_tree.js → balanced_merkle_tree_root.js} +3 -19
  224. package/dest/trees/hasher.d.ts +4 -1
  225. package/dest/trees/hasher.d.ts.map +1 -1
  226. package/dest/trees/hasher.js +10 -5
  227. package/dest/trees/index.d.ts +4 -4
  228. package/dest/trees/index.d.ts.map +1 -1
  229. package/dest/trees/index.js +3 -3
  230. package/dest/trees/indexed_merkle_tree_calculator.d.ts +1 -1
  231. package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -1
  232. package/dest/trees/indexed_merkle_tree_calculator.js +5 -1
  233. package/dest/trees/membership_witness.d.ts +12 -2
  234. package/dest/trees/membership_witness.d.ts.map +1 -1
  235. package/dest/trees/membership_witness.js +9 -0
  236. package/dest/trees/merkle_tree_calculator.d.ts +4 -2
  237. package/dest/trees/merkle_tree_calculator.d.ts.map +1 -1
  238. package/dest/trees/merkle_tree_calculator.js +1 -5
  239. package/dest/trees/sibling_path.d.ts +6 -4
  240. package/dest/trees/sibling_path.d.ts.map +1 -1
  241. package/dest/trees/sibling_path.js +10 -8
  242. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts +2 -2
  243. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts.map +1 -1
  244. package/dest/trees/unbalanced_merkle_tree_calculator.js +1 -1
  245. package/dest/trees/{unbalanced_merkle_tree.d.ts → unbalanced_merkle_tree_root.d.ts} +4 -9
  246. package/dest/trees/unbalanced_merkle_tree_root.d.ts.map +1 -0
  247. package/dest/trees/{unbalanced_merkle_tree.js → unbalanced_merkle_tree_root.js} +9 -54
  248. package/dest/trees/unbalanced_tree_store.d.ts +5 -1
  249. package/dest/trees/unbalanced_tree_store.d.ts.map +1 -1
  250. package/dest/trees/unbalanced_tree_store.js +49 -1
  251. package/dest/types/index.d.ts +12 -2
  252. package/dest/types/index.d.ts.map +1 -1
  253. package/dest/types/index.js +3 -0
  254. package/package.json +29 -6
  255. package/src/array/sorted_array.ts +22 -17
  256. package/src/bigint-buffer/index.ts +6 -1
  257. package/src/branded-types/block_number.ts +25 -2
  258. package/src/branded-types/buffer32_hash.ts +38 -0
  259. package/src/branded-types/checkpoint_number.ts +16 -1
  260. package/src/branded-types/epoch.ts +1 -1
  261. package/src/branded-types/index.ts +2 -0
  262. package/src/branded-types/index_within_checkpoint.ts +88 -0
  263. package/src/branded-types/slot.ts +6 -1
  264. package/src/buffer/buffer16.ts +3 -0
  265. package/src/buffer/buffer32.ts +39 -68
  266. package/src/buffer/index.ts +1 -0
  267. package/src/buffer/utils.ts +8 -0
  268. package/src/collection/array.ts +86 -0
  269. package/src/collection/index.ts +2 -0
  270. package/src/collection/lru_map.ts +143 -0
  271. package/src/collection/lru_set.ts +115 -0
  272. package/src/committable/committable.ts +1 -1
  273. package/src/config/env_var.ts +84 -28
  274. package/src/config/index.ts +132 -95
  275. package/src/config/network_config.ts +3 -0
  276. package/src/config/network_name.ts +4 -4
  277. package/src/config/secret_value.ts +1 -1
  278. package/src/crypto/aes128/index.ts +11 -2
  279. package/src/crypto/bls/bn254_keystore.ts +0 -23
  280. package/src/crypto/poseidon/index.ts +42 -44
  281. package/src/crypto/random/randomness_singleton.ts +9 -5
  282. package/src/crypto/schnorr/index.ts +9 -8
  283. package/src/crypto/schnorr/signature.ts +17 -46
  284. package/src/crypto/secp256k1-signer/utils.ts +32 -0
  285. package/src/crypto/sync/poseidon/index.ts +0 -9
  286. package/src/curves/bls12/field.ts +0 -7
  287. package/src/curves/bn254/field.ts +41 -36
  288. package/src/curves/grumpkin/point.ts +23 -40
  289. package/src/eth-address/index.ts +0 -4
  290. package/src/eth-signature/eth_signature.ts +7 -1
  291. package/src/fifo/fifo_frame_reader.ts +98 -0
  292. package/src/fifo/index.ts +1 -0
  293. package/src/fifo_set/fifo_set.ts +52 -0
  294. package/src/fifo_set/index.ts +1 -0
  295. package/src/jest/setup.mjs +31 -1
  296. package/src/json-rpc/client/fetch.ts +4 -3
  297. package/src/json-rpc/client/safe_json_rpc_client.ts +4 -2
  298. package/src/json-rpc/client/undici.ts +23 -3
  299. package/src/json-rpc/fixtures/test_state.ts +10 -10
  300. package/src/json-rpc/server/api_key_auth.ts +63 -0
  301. package/src/json-rpc/server/index.ts +1 -0
  302. package/src/json-rpc/server/safe_json_rpc_server.ts +32 -14
  303. package/src/log/bigint-utils.ts +25 -0
  304. package/src/log/gcloud-logger-config.ts +5 -0
  305. package/src/log/libp2p_logger.ts +12 -5
  306. package/src/log/log-filters.ts +29 -11
  307. package/src/log/pino-logger-server.ts +25 -0
  308. package/src/log/pino-logger.ts +160 -39
  309. package/src/noir/noir_package_config.ts +32 -20
  310. package/src/queue/base_memory_queue.ts +1 -1
  311. package/src/queue/batch_queue.ts +1 -0
  312. package/src/queue/semaphore.ts +5 -0
  313. package/src/retry/index.ts +48 -0
  314. package/src/schemas/api.ts +25 -25
  315. package/src/schemas/parse.ts +9 -6
  316. package/src/schemas/schemas.ts +4 -4
  317. package/src/schemas/types.ts +2 -2
  318. package/src/schemas/utils.ts +4 -38
  319. package/src/serialize/buffer_reader.ts +36 -9
  320. package/src/serialize/buffer_sink.ts +350 -0
  321. package/src/serialize/index.ts +1 -0
  322. package/src/serialize/serialize.ts +32 -0
  323. package/src/sleep/index.ts +10 -1
  324. package/src/string/index.ts +1 -1
  325. package/src/timer/date.ts +48 -0
  326. package/src/timer/index.ts +1 -1
  327. package/src/timer/timeout.ts +31 -0
  328. package/src/transport/dispatch/create_dispatch_proxy.ts +11 -1
  329. package/src/transport/index.ts +0 -1
  330. package/src/transport/transport_client.ts +2 -2
  331. package/src/trees/{balanced_merkle_tree.ts → balanced_merkle_tree_root.ts} +3 -22
  332. package/src/trees/hasher.ts +12 -0
  333. package/src/trees/index.ts +3 -3
  334. package/src/trees/indexed_merkle_tree_calculator.ts +5 -1
  335. package/src/trees/membership_witness.ts +8 -0
  336. package/src/trees/merkle_tree_calculator.ts +4 -10
  337. package/src/trees/sibling_path.ts +11 -6
  338. package/src/trees/unbalanced_merkle_tree_calculator.ts +1 -2
  339. package/src/trees/{unbalanced_merkle_tree.ts → unbalanced_merkle_tree_root.ts} +9 -70
  340. package/src/trees/unbalanced_tree_store.ts +57 -2
  341. package/src/types/index.ts +20 -1
  342. package/dest/crypto/serialize.d.ts +0 -51
  343. package/dest/crypto/serialize.d.ts.map +0 -1
  344. package/dest/crypto/serialize.js +0 -68
  345. package/dest/transport/dispatch/create_dispatch_fn.d.ts +0 -25
  346. package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +0 -1
  347. package/dest/transport/dispatch/create_dispatch_fn.js +0 -17
  348. package/dest/trees/balanced_merkle_tree.d.ts +0 -22
  349. package/dest/trees/balanced_merkle_tree.d.ts.map +0 -1
  350. package/dest/trees/unbalanced_merkle_tree.d.ts.map +0 -1
  351. package/src/crypto/serialize.ts +0 -85
  352. package/src/transport/dispatch/create_dispatch_fn.ts +0 -35
@@ -91,3 +91,35 @@ import { Timer } from '../timer/index.js';
91
91
  }
92
92
  }
93
93
  }
94
+ /**
95
+ * Retry an asynchronous function until it returns a truthy value or the maximum number of retries is exceeded.
96
+ * The function is retried periodically with a fixed interval between attempts.
97
+ *
98
+ * @param fn - The asynchronous function to be retried, which should return a truthy value upon success or undefined otherwise.
99
+ * @param name - The optional name of the operation, used for generating error messages.
100
+ * @param maxRetries - The maximum number of retry attempts before throwing an error.
101
+ * @param retryInterval - The optional interval, in seconds, between retry attempts. Defaults to 1 second.
102
+ * @returns A Promise that resolves with the successful (truthy) result of the provided function, or rejects if retries are exhausted.
103
+ */ export async function retryTimes(fn, name = '', maxRetries, retryInterval = 1) {
104
+ for(let attempt = 0; attempt <= maxRetries; attempt++){
105
+ const result = await fn();
106
+ if (result) {
107
+ return result;
108
+ }
109
+ if (attempt < maxRetries) {
110
+ await sleep(retryInterval * 1000);
111
+ }
112
+ }
113
+ throw new Error(name ? `Retries exhausted awaiting ${name}` : 'Retries exhausted');
114
+ }
115
+ /**
116
+ * Convenience wrapper around retryUntil with fast polling for tests.
117
+ * Uses 10s timeout and 100ms polling interval by default.
118
+ *
119
+ * @param fn - The function to retry until it returns a truthy value.
120
+ * @param name - Description of what we're waiting for (for error messages).
121
+ * @param timeout - Optional timeout in seconds. Defaults to 10s.
122
+ * @param interval - Optional interval in seconds. Defaults to 0.1s (100ms).
123
+ */ export function retryFastUntil(fn, name = '', timeout = 10, interval = 0.1) {
124
+ return retryUntil(fn, name, timeout, interval);
125
+ }
@@ -1,21 +1,23 @@
1
1
  import type { z } from 'zod';
2
2
  import type { ZodNullableOptional } from './utils.js';
3
- type ZodParameterTypeFor<T> = undefined extends T ? ZodNullableOptional<z.ZodType<T, z.ZodTypeDef, any>> : z.ZodType<T, z.ZodTypeDef, any>;
4
- type ZodReturnTypeFor<T> = z.ZodType<T, z.ZodTypeDef, any>;
5
- type ZodMapParameterTypes<T> = T extends [] ? [] : T extends [item: infer Head, ...infer Rest] ? [ZodParameterTypeFor<Head>, ...{
6
- [K in keyof Rest]: ZodParameterTypeFor<Rest[K]>;
7
- }] : T extends [item?: infer Head, ...infer Rest] ? [ZodNullableOptional<ZodParameterTypeFor<Head>>, ...{
8
- [K in keyof Rest]: ZodParameterTypeFor<Rest[K]>;
9
- }] : never;
3
+ type ZodParameterTypeFor<T> = undefined extends T ? ZodNullableOptional<z.ZodType<T, any>> : z.ZodType<T, any>;
4
+ type ZodReturnTypeFor<T> = z.ZodType<T, any>;
5
+ type ZodMapParameterTypes<T extends readonly unknown[]> = {
6
+ [K in keyof T]-?: ZodParameterTypeFor<T[K]>;
7
+ };
10
8
  /** Maps all functions in an interface to their schema representation. */
11
9
  export type ApiSchemaFor<T> = {
12
- [K in keyof T]: T[K] extends (...args: infer Args) => Promise<infer Ret> ? z.ZodFunction<z.ZodTuple<ZodMapParameterTypes<Args>, z.ZodUnknown>, ZodReturnTypeFor<Ret>> : never;
10
+ [K in keyof T]: T[K] extends (...args: infer Args) => Promise<infer Ret> ? z.ZodFunction<z.ZodTuple<ZodMapParameterTypes<Args>, null>, ZodReturnTypeFor<Ret>> : never;
13
11
  };
14
12
  /** Generic Api schema not bounded to a specific implementation. */
15
13
  export type ApiSchema = {
16
14
  [key: string]: z.ZodFunction<z.ZodTuple<any, any>, z.ZodTypeAny>;
17
15
  };
18
16
  /** Return whether an API schema defines a valid function schema for a given method name. */
19
- export declare function schemaHasMethod(schema: ApiSchema, methodName: string): boolean;
17
+ export declare function schemaHasMethod<T extends ApiSchema>(schema: T, methodName: string): methodName is Extract<keyof T, string>;
18
+ /** Returns the parameter tuple schema for an API method schema. */
19
+ export declare function getSchemaParameters<T extends z.ZodFunction<z.ZodTuple<any, any>, z.ZodTypeAny>>(schema: T): z.ZodTuple<any, any>;
20
+ /** Returns the return value schema for an API method schema. */
21
+ export declare function getSchemaReturnType<T extends z.ZodFunction<z.ZodTuple<any, any>, z.ZodTypeAny>>(schema: T): z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
20
22
  export {};
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NoZW1hcy9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRTdCLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBR3RELEtBQUssbUJBQW1CLENBQUMsQ0FBQyxJQUFJLFNBQVMsU0FBUyxDQUFDLEdBQzdDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FDcEQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUVwQyxLQUFLLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBUzNELEtBQUssb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQ3ZDLEVBQUUsR0FDRixDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUN6QyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUc7S0FBRyxDQUFDLElBQUksTUFBTSxJQUFJLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQUUsQ0FBQyxHQUNuRixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLElBQUksRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQzFDLENBQUMsbUJBQW1CLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHO0tBQUcsQ0FBQyxJQUFJLE1BQU0sSUFBSSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUFFLENBQUMsR0FDeEcsS0FBSyxDQUFDO0FBRWQseUVBQXlFO0FBQ3pFLE1BQU0sTUFBTSxZQUFZLENBQUMsQ0FBQyxJQUFJO0tBQzNCLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksRUFBRSxNQUFNLElBQUksS0FBSyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsR0FDcEUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUMxRixLQUFLO0NBQ1YsQ0FBQztBQUVGLG1FQUFtRTtBQUNuRSxNQUFNLE1BQU0sU0FBUyxHQUFHO0lBQ3RCLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztDQUNsRSxDQUFDO0FBRUYsNEZBQTRGO0FBQzVGLHdCQUFnQixlQUFlLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxXQU9wRSJ9
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NoZW1hcy9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRTdCLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBR3RELEtBQUssbUJBQW1CLENBQUMsQ0FBQyxJQUFJLFNBQVMsU0FBUyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUUvRyxLQUFLLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUU3QyxLQUFLLG9CQUFvQixDQUFDLENBQUMsU0FBUyxTQUFTLE9BQU8sRUFBRSxJQUFJO0tBQ3ZELENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzVDLENBQUM7QUFFRix5RUFBeUU7QUFDekUsTUFBTSxNQUFNLFlBQVksQ0FBQyxDQUFDLElBQUk7S0FDM0IsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxFQUFFLE1BQU0sSUFBSSxLQUFLLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUNwRSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDbEYsS0FBSztDQUNWLENBQUM7QUFFRixtRUFBbUU7QUFDbkUsTUFBTSxNQUFNLFNBQVMsR0FBRztJQUN0QixDQUFDLEdBQUcsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7Q0FDbEUsQ0FBQztBQUVGLDRGQUE0RjtBQUM1Rix3QkFBZ0IsZUFBZSxDQUFDLENBQUMsU0FBUyxTQUFTLEVBQ2pELE1BQU0sRUFBRSxDQUFDLEVBQ1QsVUFBVSxFQUFFLE1BQU0sR0FDakIsVUFBVSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FPeEM7QUFFRCxtRUFBbUU7QUFDbkUsd0JBQWdCLG1CQUFtQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyx3QkFFekc7QUFFRCxnRUFBZ0U7QUFDaEUsd0JBQWdCLG1CQUFtQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQywyRUFFekcifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/schemas/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGtD,KAAK,mBAAmB,CAAC,CAAC,IAAI,SAAS,SAAS,CAAC,GAC7C,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,GACpD,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAEpC,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAS3D,KAAK,oBAAoB,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,GACvC,EAAE,GACF,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GACzC,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,GAAG;KAAG,CAAC,IAAI,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,GACnF,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GAC1C,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG;KAAG,CAAC,IAAI,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,GACxG,KAAK,CAAC;AAEd,yEAAyE;AACzE,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;KAC3B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,IAAI,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,GACpE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAC1F,KAAK;CACV,CAAC;AAEF,mEAAmE;AACnE,MAAM,MAAM,SAAS,GAAG;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;CAClE,CAAC;AAEF,4FAA4F;AAC5F,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAOpE"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/schemas/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGtD,KAAK,mBAAmB,CAAC,CAAC,IAAI,SAAS,SAAS,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAE/G,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAE7C,KAAK,oBAAoB,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,IAAI;KACvD,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5C,CAAC;AAEF,yEAAyE;AACzE,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;KAC3B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,IAAI,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,GACpE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAClF,KAAK;CACV,CAAC;AAEF,mEAAmE;AACnE,MAAM,MAAM,SAAS,GAAG;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;CAClE,CAAC;AAEF,4FAA4F;AAC5F,wBAAgB,eAAe,CAAC,CAAC,SAAS,SAAS,EACjD,MAAM,EAAE,CAAC,EACT,UAAU,EAAE,MAAM,GACjB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAOxC;AAED,mEAAmE;AACnE,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,wBAEzG;AAED,gEAAgE;AAChE,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,2EAEzG"}
@@ -1,3 +1,9 @@
1
1
  /** Return whether an API schema defines a valid function schema for a given method name. */ export function schemaHasMethod(schema, methodName) {
2
- return typeof methodName === 'string' && Object.hasOwn(schema, methodName) && typeof schema[methodName].parameters === 'function' && typeof schema[methodName].returnType === 'function';
2
+ return typeof methodName === 'string' && Object.hasOwn(schema, methodName) && schema[methodName].def.input !== undefined && schema[methodName].def.output !== undefined;
3
+ }
4
+ /** Returns the parameter tuple schema for an API method schema. */ export function getSchemaParameters(schema) {
5
+ return schema.def.input;
6
+ }
7
+ /** Returns the return value schema for an API method schema. */ export function getSchemaReturnType(schema) {
8
+ return schema.def.output;
3
9
  }
@@ -1,9 +1,9 @@
1
1
  import { z } from 'zod';
2
2
  /** Parses the given arguments using a tuple from the provided schemas. */
3
- export declare function parse<T extends [] | [z.ZodTypeAny, ...z.ZodTypeAny[]]>(args: IArguments, ...schemas: T): z.AssertArray<{ [k in keyof T]: T[k] extends z.ZodType<any, any, any> ? T[k]["_output"] : never; }>;
3
+ export declare function parse<T extends [] | [z.ZodTypeAny, ...z.ZodTypeAny[]]>(args: IArguments, ...schemas: T): [];
4
4
  /**
5
5
  * Parses the given arguments against a tuple, allowing empty for optional items.
6
- * @dev Zod doesn't like tuplues with optional items. See https://github.com/colinhacks/zod/discussions/949.
6
+ * @dev Zod doesn't like tuples with optional items. See https://github.com/colinhacks/zod/discussions/949.
7
7
  */
8
- export declare function parseWithOptionals<T extends z.AnyZodTuple>(args: any[], schema: T): Promise<T['_output']>;
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWFzL3BhcnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFJeEIsMEVBQTBFO0FBQzFFLHdCQUFnQixLQUFLLENBQUMsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsdUdBRXRHO0FBRUQ7OztHQUdHO0FBQ0gsd0JBQWdCLGtCQUFrQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FNekcifQ==
8
+ export declare function parseWithOptionals<T extends z.ZodTuple<any, any>>(args: any[], schema: T): Promise<z.output<T>>;
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWFzL3BhcnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFJeEIsMEVBQTBFO0FBQzFFLHdCQUFnQixLQUFLLENBQUMsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsTUFJdEc7QUFFRDs7O0dBR0c7QUFDSCx3QkFBZ0Isa0JBQWtCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBTy9HIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/schemas/parse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,0EAA0E;AAC1E,wBAAgB,KAAK,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,EAAE,CAAC,uGAEtG;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAMzG"}
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/schemas/parse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,0EAA0E;AAC1E,wBAAgB,KAAK,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,EAAE,CAAC,MAItG;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAO/G"}
@@ -1,14 +1,15 @@
1
1
  import { z } from 'zod';
2
2
  import { times } from '../collection/array.js';
3
3
  /** Parses the given arguments using a tuple from the provided schemas. */ export function parse(args, ...schemas) {
4
- return z.tuple(schemas).parse(args);
4
+ return schemas.length === 0 ? z.tuple([]).parse(args) : z.tuple(schemas).parse(args);
5
5
  }
6
6
  /**
7
7
  * Parses the given arguments against a tuple, allowing empty for optional items.
8
- * @dev Zod doesn't like tuplues with optional items. See https://github.com/colinhacks/zod/discussions/949.
8
+ * @dev Zod doesn't like tuples with optional items. See https://github.com/colinhacks/zod/discussions/949.
9
9
  */ export function parseWithOptionals(args, schema) {
10
- const missingCount = schema.items.length - args.length;
11
- const optionalCount = schema.items.filter(isOptional).length;
10
+ const items = schema.def.items;
11
+ const missingCount = items.length - args.length;
12
+ const optionalCount = items.filter(isOptional).length;
12
13
  const toParse = missingCount > 0 && missingCount <= optionalCount ? args.concat(times(missingCount, ()=>undefined)) : args;
13
14
  return schema.parseAsync(toParse);
14
15
  }
@@ -17,6 +18,6 @@ function isOptional(schema) {
17
18
  return schema.isOptional();
18
19
  } catch {
19
20
  // See https://github.com/colinhacks/zod/issues/1911
20
- return schema._def.typeName === 'ZodOptional';
21
+ return schema.def.type === 'optional';
21
22
  }
22
23
  }
@@ -8,37 +8,37 @@ import { Point } from '../curves/grumpkin/point.js';
8
8
  import { EthAddress } from '../eth-address/index.js';
9
9
  export declare const schemas: {
10
10
  /** Accepts a number, bigint, or string as an EpochNumber. */
11
- EpochNumber: z.ZodEffects<z.ZodPipeline<z.ZodUnion<[z.ZodNumber, z.ZodBigInt, z.ZodString]>, z.ZodNumber>, EpochNumber, string | number | bigint>;
11
+ EpochNumber: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodBigInt, z.ZodString]>, z.ZodCoercedNumber<string | number | bigint>>, z.ZodTransform<EpochNumber, number>>;
12
12
  /** Accepts a number, bigint, or string as a SlotNumber. */
13
- SlotNumber: z.ZodEffects<z.ZodPipeline<z.ZodUnion<[z.ZodNumber, z.ZodBigInt, z.ZodString]>, z.ZodNumber>, SlotNumber, string | number | bigint>;
13
+ SlotNumber: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodBigInt, z.ZodString]>, z.ZodCoercedNumber<string | number | bigint>>, z.ZodTransform<SlotNumber, number>>;
14
14
  /** Accepts a hex string. */
15
- EthAddress: z.ZodType<EthAddress, any, string>;
15
+ EthAddress: z.ZodType<EthAddress, string, z.core.$ZodTypeInternals<EthAddress, string>>;
16
16
  /** Accepts a hex string. */
17
- Fr: z.ZodType<Fr, any, string>;
17
+ Fr: z.ZodType<Fr, string, z.core.$ZodTypeInternals<Fr, string>>;
18
18
  /** Accepts a hex string. */
19
- Fq: z.ZodType<Fq, any, string>;
19
+ Fq: z.ZodType<Fq, string, z.core.$ZodTypeInternals<Fq, string>>;
20
20
  /** Point. Serialized as a hex string. */
21
- Point: z.ZodType<Point, any, string>;
21
+ Point: z.ZodType<Point, string, z.core.$ZodTypeInternals<Point, string>>;
22
22
  /** Coerces truthy-like string values to boolean. */
23
- Boolean: z.ZodUnion<[z.ZodBoolean, z.ZodEffects<z.ZodEffects<z.ZodNumber, 0 | 1, number>, boolean, number>, z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>, boolean, string>]>;
23
+ Boolean: z.ZodUnion<readonly [z.ZodBoolean, z.ZodPipe<z.ZodNumber & z.ZodType<0 | 1, number, z.core.$ZodTypeInternals<0 | 1, number>>, z.ZodTransform<boolean, 0 | 1>>, z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodTransform<boolean, string>>]>;
24
24
  /** Coerces any input to bigint. */
25
- BigInt: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodBigInt>;
25
+ BigInt: z.ZodPipe<z.ZodUnion<readonly [z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodCoercedBigInt<string | number | bigint>>;
26
26
  /** Coerces any input to integer number. */
27
- Integer: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodNumber>;
27
+ Integer: z.ZodPipe<z.ZodUnion<readonly [z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodCoercedNumber<string | number | bigint>>;
28
28
  /** Coerces input to UInt32. */
29
- UInt32: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodNumber>;
29
+ UInt32: z.ZodPipe<z.ZodUnion<readonly [z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodCoercedNumber<string | number | bigint>>;
30
30
  /** Coerces input to UInt64. */
31
- UInt64: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodBigInt>;
31
+ UInt64: z.ZodPipe<z.ZodUnion<readonly [z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodCoercedBigInt<string | number | bigint>>;
32
32
  /** Accepts a hex string as a Buffer32 type. */
33
- Buffer32: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, Buffer32, string>;
33
+ Buffer32: z.ZodPipe<z.ZodString, z.ZodTransform<Buffer32, string>>;
34
34
  /** Accepts a base64 string or an object `{ type: 'Buffer', data: [byte, byte...] }` as a buffer. */
35
35
  Buffer: import("./types.js").ZodFor<Buffer<ArrayBufferLike>>;
36
36
  /** Accepts a hex string as a buffer. */
37
- BufferHex: z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>, Buffer<ArrayBuffer>, string>;
37
+ BufferHex: z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodTransform<Buffer<ArrayBuffer>, string>>;
38
38
  /** Hex string with an optional 0x prefix which gets removed as part of the parsing. */
39
- HexString: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
39
+ HexString: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
40
40
  /** Hex string with an optional 0x prefix which gets enforced as part of the parsing. */
41
- HexStringWith0x: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, `0x${string}`, string>;
41
+ HexStringWith0x: z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>;
42
42
  /** A secret config value */
43
43
  SecretValue: typeof SecretValue.schema;
44
44
  };
@@ -1,5 +1,5 @@
1
1
  import type { ZodType } from 'zod';
2
- export type ZodFor<T> = ZodType<T, any, any>;
2
+ export type ZodFor<T> = ZodType<T, any>;
3
3
  /**
4
4
  * Creates a schema validator that enforces all properties of type T are present in the schema.
5
5
  * This provides compile-time safety to ensure schemas don't miss optional properties.
@@ -23,11 +23,11 @@ export type ZodFor<T> = ZodType<T, any, any>;
23
23
  * }));
24
24
  * ```
25
25
  */
26
- export declare function zodFor<T>(): <S extends ZodType<any, any, any>>(schema: keyof T extends keyof S["_output"] ? keyof S["_output"] extends keyof T ? S : S & {
26
+ export declare function zodFor<T>(): <S extends ZodType<any, any, import("zod/v4/core").$ZodTypeInternals<any, any>>>(schema: keyof T extends keyof S["_output"] ? keyof S["_output"] extends keyof T ? S : S & {
27
27
  __error__: "Schema has extra keys not in type";
28
28
  __extra__: Exclude<keyof S["_output"], keyof T>;
29
29
  } : S & {
30
30
  __error__: "Schema is missing keys from type";
31
31
  __missing__: Exclude<keyof T, keyof S["_output"]>;
32
32
  }) => S;
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWFzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEtBQUssQ0FBQztBQUVuQyxNQUFNLE1BQU0sTUFBTSxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUU3Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNILHdCQUFnQixNQUFNLENBQUMsQ0FBQyxNQUNRLENBQUM7Ozs7OztRQU9oQyJ9
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWFzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEtBQUssQ0FBQztBQUVuQyxNQUFNLE1BQU0sTUFBTSxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRXhDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBQ0gsd0JBQWdCLE1BQU0sQ0FBQyxDQUFDLE1BQ1EsQ0FBQzs7Ozs7O1FBT2hDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schemas/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAEnC,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,MAAM,CAAC,CAAC,MACQ,CAAC;;;;;;QAOhC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schemas/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAEnC,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAExC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,MAAM,CAAC,CAAC,MACQ,CAAC;;;;;;QAOhC"}
@@ -1,19 +1,15 @@
1
- import { type ParseInput, type ParseReturnType, type ZodObject, ZodOptional, type ZodRawShape, type ZodType, type ZodTypeAny, z } from 'zod';
1
+ import { type ZodObject, type ZodRawShape, type ZodType, type ZodTypeAny, z } from 'zod';
2
2
  import type { ZodFor } from './types.js';
3
- export declare const hexSchema: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
3
+ export declare const hexSchema: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
4
4
  /** Schema for a buffer represented as a base64 string or a Buffer object. */
5
5
  export declare const bufferSchema: ZodFor<Buffer>;
6
- export declare class ZodNullableOptional<T extends ZodTypeAny> extends ZodOptional<T> {
7
- _isNullableOptional: boolean;
8
- _parse(input: ParseInput): ParseReturnType<this['_output']>;
9
- static create<T extends ZodTypeAny>(type: T): ZodNullableOptional<T>;
10
- }
6
+ export type ZodNullableOptional<T extends ZodTypeAny> = ZodType<z.output<T> | undefined, z.input<T> | null | undefined>;
11
7
  /**
12
8
  * Declares a parameter as optional. Use this over z.optional in order to accept nulls as undefineds.
13
9
  * This is required as JSON does not have an undefined type, and null is used to represent it, so we
14
10
  * need to convert nulls to undefineds as we parse.
15
11
  */
16
- export declare function optional<T extends ZodTypeAny>(schema: T): ZodNullableOptional<T>;
12
+ export declare function optional<T extends ZodTypeAny>(schema: T): z.ZodPipe<z.ZodOptional<z.ZodNullable<T>>, z.ZodTransform<Awaited<NonNullable<z.TypeOf<T>>> | undefined, z.TypeOf<T> | null | undefined>>;
17
13
  type ToJsonIs<T, TRet> = T extends {
18
14
  toJSON(): TRet;
19
15
  } ? T : never;
@@ -30,7 +26,7 @@ export declare function hexSchemaFor<TClass extends {
30
26
  fromString(str: string): infer TInstance;
31
27
  } | {
32
28
  fromBuffer(buf: Buffer): infer TInstance;
33
- } ? ToJsonIs<TInstance, string> : never, any, string>;
29
+ } ? ToJsonIs<TInstance, string> : never, string>;
34
30
  /**
35
31
  * Creates a schema that accepts a base64 string and uses it to hydrate an instance.
36
32
  * @param klazz - Class that implements fromBuffer.
@@ -40,7 +36,7 @@ export declare function bufferSchemaFor<TClass extends {
40
36
  fromBuffer(buf: Buffer): any;
41
37
  }>(klazz: TClass, refinement?: (buf: Buffer) => boolean): ZodType<TClass extends {
42
38
  fromBuffer(buf: Buffer): infer TInstance;
43
- } ? ToJsonIs<TInstance, Buffer> : never, any, string>;
39
+ } ? ToJsonIs<TInstance, Buffer> : never, string>;
44
40
  /** Creates a schema for a js Map type that matches the serialization used in jsonStringify. */
45
41
  export declare function mapSchema<TKey, TValue>(key: ZodFor<TKey>, value: ZodFor<TValue>): ZodFor<Map<TKey, TValue>>;
46
42
  /** Creates a schema for a js Set type that matches the serialization used in jsonStringify. */
@@ -48,4 +44,4 @@ export declare function setSchema<T>(value: ZodFor<T>): ZodFor<Set<T>>;
48
44
  /** Given an already parsed and validated object, extracts the keys defined in the given schema. Does not validate again. */
49
45
  export declare function pickFromSchema<T extends object, S extends ZodObject<ZodRawShape>>(obj: T, schema: S): Partial<T>;
50
46
  export {};
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWFzL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxLQUFLLFVBQVUsRUFDZixLQUFLLGVBQWUsRUFFcEIsS0FBSyxTQUFTLEVBQ2QsV0FBVyxFQUVYLEtBQUssV0FBVyxFQUNoQixLQUFLLE9BQU8sRUFDWixLQUFLLFVBQVUsRUFDZixDQUFDLEVBQ0YsTUFBTSxLQUFLLENBQUM7QUFJYixPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFekMsZUFBTyxNQUFNLFNBQVMseUVBQWlGLENBQUM7QUFLeEcsNkVBQTZFO0FBQzdFLGVBQU8sTUFBTSxZQUFZLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FpQnRDLENBQUM7QUFFSCxxQkFBYSxtQkFBbUIsQ0FBQyxDQUFDLFNBQVMsVUFBVSxDQUFFLFNBQVEsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMzRSxtQkFBbUIsVUFBUTtJQUVsQixNQUFNLENBQUMsS0FBSyxFQUFFLFVBQVUsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBTW5FO0lBRUQsT0FBZ0IsTUFBTSxDQUFDLENBQUMsU0FBUyxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FLNUU7Q0FDRjtBQUVEOzs7O0dBSUc7QUFDSCx3QkFBZ0IsUUFBUSxDQUFDLENBQUMsU0FBUyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUMsMEJBRXZEO0FBRUQsS0FBSyxRQUFRLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVM7SUFBRSxNQUFNLElBQUksSUFBSSxDQUFBO0NBQUUsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBRWxFOzs7O0dBSUc7QUFDSCx3QkFBZ0IsWUFBWSxDQUFDLE1BQU0sU0FBUztJQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLEdBQUcsQ0FBQTtDQUFFLEdBQUc7SUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxHQUFHLENBQUE7Q0FBRSxFQUM3RyxLQUFLLEVBQUUsTUFBTSxFQUNiLFVBQVUsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sS0FBSyxPQUFPLEdBQ3RDLE9BQU8sQ0FDUixNQUFNLFNBQVM7SUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxNQUFNLFNBQVMsQ0FBQTtDQUFFLEdBQUc7SUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxNQUFNLFNBQVMsQ0FBQTtDQUFFLEdBQ3RHLFFBQVEsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLEdBQzNCLEtBQUssRUFDVCxHQUFHLEVBQ0gsTUFBTSxDQUNQLENBTUE7QUFFRDs7OztHQUlHO0FBQ0gsd0JBQWdCLGVBQWUsQ0FBQyxNQUFNLFNBQVM7SUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxHQUFHLENBQUE7Q0FBRSxFQUM3RSxLQUFLLEVBQUUsTUFBTSxFQUNiLFVBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLE1BQU0sS0FBSyxPQUFPLEdBQ3BDLE9BQU8sQ0FDUixNQUFNLFNBQVM7SUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxNQUFNLFNBQVMsQ0FBQTtDQUFFLEdBQUcsUUFBUSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsR0FBRyxLQUFLLEVBQ2pHLEdBQUcsRUFDSCxNQUFNLENBQ1AsQ0FFQTtBQUVELCtGQUErRjtBQUMvRix3QkFBZ0IsU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBRTNHO0FBRUQsK0ZBQStGO0FBQy9GLHdCQUFnQixTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUU3RDtBQUVELDRIQUE0SDtBQUM1SCx3QkFBZ0IsY0FBYyxDQUFDLENBQUMsU0FBUyxNQUFNLEVBQUUsQ0FBQyxTQUFTLFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLGNBRW5HIn0=
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWFzL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLFNBQVMsRUFBRSxLQUFLLFdBQVcsRUFBRSxLQUFLLE9BQU8sRUFBRSxLQUFLLFVBQVUsRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFJekYsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXpDLGVBQU8sTUFBTSxTQUFTLHdEQUFpRixDQUFDO0FBS3hHLDZFQUE2RTtBQUM3RSxlQUFPLE1BQU0sWUFBWSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBaUJ0QyxDQUFDO0FBRUgsTUFBTSxNQUFNLG1CQUFtQixDQUFDLENBQUMsU0FBUyxVQUFVLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLFNBQVMsQ0FBQyxDQUFDO0FBRXhIOzs7O0dBSUc7QUFDSCx3QkFBZ0IsUUFBUSxDQUFDLENBQUMsU0FBUyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUMsNklBRXZEO0FBRUQsS0FBSyxRQUFRLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVM7SUFBRSxNQUFNLElBQUksSUFBSSxDQUFBO0NBQUUsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBRWxFOzs7O0dBSUc7QUFDSCx3QkFBZ0IsWUFBWSxDQUFDLE1BQU0sU0FBUztJQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLEdBQUcsQ0FBQTtDQUFFLEdBQUc7SUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxHQUFHLENBQUE7Q0FBRSxFQUM3RyxLQUFLLEVBQUUsTUFBTSxFQUNiLFVBQVUsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sS0FBSyxPQUFPLEdBQ3RDLE9BQU8sQ0FDUixNQUFNLFNBQVM7SUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxNQUFNLFNBQVMsQ0FBQTtDQUFFLEdBQUc7SUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxNQUFNLFNBQVMsQ0FBQTtDQUFFLEdBQ3RHLFFBQVEsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLEdBQzNCLEtBQUssRUFDVCxNQUFNLENBQ1AsQ0FNQTtBQUVEOzs7O0dBSUc7QUFDSCx3QkFBZ0IsZUFBZSxDQUFDLE1BQU0sU0FBUztJQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLEdBQUcsQ0FBQTtDQUFFLEVBQzdFLEtBQUssRUFBRSxNQUFNLEVBQ2IsVUFBVSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxLQUFLLE9BQU8sR0FDcEMsT0FBTyxDQUFDLE1BQU0sU0FBUztJQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLE1BQU0sU0FBUyxDQUFBO0NBQUUsR0FBRyxRQUFRLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxHQUFHLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FFcEg7QUFFRCwrRkFBK0Y7QUFDL0Ysd0JBQWdCLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUUzRztBQUVELCtGQUErRjtBQUMvRix3QkFBZ0IsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FFN0Q7QUFFRCw0SEFBNEg7QUFDNUgsd0JBQWdCLGNBQWMsQ0FBQyxDQUFDLFNBQVMsTUFBTSxFQUFFLENBQUMsU0FBUyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxjQUVuRyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/schemas/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,eAAe,EAEpB,KAAK,SAAS,EACd,WAAW,EAEX,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,CAAC,EACF,MAAM,KAAK,CAAC;AAIb,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,eAAO,MAAM,SAAS,yEAAiF,CAAC;AAKxG,6EAA6E;AAC7E,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,CAiBtC,CAAC;AAEH,qBAAa,mBAAmB,CAAC,CAAC,SAAS,UAAU,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IAC3E,mBAAmB,UAAQ;IAElB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAMnE;IAED,OAAgB,MAAM,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAK5E;CACF;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,UAAU,EAAE,MAAM,EAAE,CAAC,0BAEvD;AAED,KAAK,QAAQ,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,SAAS;IAAE,MAAM,IAAI,IAAI,CAAA;CAAE,GAAG,CAAC,GAAG,KAAK,CAAC;AAElE;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,SAAS;IAAE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG;IAAE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC7G,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GACtC,OAAO,CACR,MAAM,SAAS;IAAE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,SAAS,CAAA;CAAE,GAAG;IAAE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,SAAS,CAAA;CAAE,GACtG,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,GAC3B,KAAK,EACT,GAAG,EACH,MAAM,CACP,CAMA;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,SAAS;IAAE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC7E,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GACpC,OAAO,CACR,MAAM,SAAS;IAAE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,SAAS,CAAA;CAAE,GAAG,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,KAAK,EACjG,GAAG,EACH,MAAM,CACP,CAEA;AAED,+FAA+F;AAC/F,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAE3G;AAED,+FAA+F;AAC/F,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAE7D;AAED,4HAA4H;AAC5H,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,cAEnG"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/schemas/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,KAAK,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIzF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,eAAO,MAAM,SAAS,wDAAiF,CAAC;AAKxG,6EAA6E;AAC7E,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,CAiBtC,CAAC;AAEH,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,UAAU,IAAI,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAExH;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,UAAU,EAAE,MAAM,EAAE,CAAC,6IAEvD;AAED,KAAK,QAAQ,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,SAAS;IAAE,MAAM,IAAI,IAAI,CAAA;CAAE,GAAG,CAAC,GAAG,KAAK,CAAC;AAElE;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,SAAS;IAAE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG;IAAE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC7G,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GACtC,OAAO,CACR,MAAM,SAAS;IAAE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,SAAS,CAAA;CAAE,GAAG;IAAE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,SAAS,CAAA;CAAE,GACtG,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,GAC3B,KAAK,EACT,MAAM,CACP,CAMA;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,SAAS;IAAE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC7E,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GACpC,OAAO,CAAC,MAAM,SAAS;IAAE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,SAAS,CAAA;CAAE,GAAG,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,KAAK,EAAE,MAAM,CAAC,CAEpH;AAED,+FAA+F;AAC/F,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAE3G;AAED,+FAA+F;AAC/F,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAE7D;AAED,4HAA4H;AAC5H,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,cAEnG"}
@@ -1,4 +1,4 @@
1
- import { OK, ZodFirstPartyTypeKind, ZodOptional, ZodParsedType, z } from 'zod';
1
+ import { z } from 'zod';
2
2
  import { pick } from '../collection/object.js';
3
3
  import { isHex, withoutHexPrefix } from '../string/index.js';
4
4
  export const hexSchema = z.string().refine(isHex, 'Not a valid hex string').transform(withoutHexPrefix);
@@ -17,28 +17,12 @@ const base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}
17
17
  // Serialization from Buffer
18
18
  z.instanceof(Buffer)
19
19
  ]);
20
- export class ZodNullableOptional extends ZodOptional {
21
- _isNullableOptional = true;
22
- _parse(input) {
23
- const parsedType = this._getType(input);
24
- if (parsedType === ZodParsedType.undefined || parsedType === ZodParsedType.null) {
25
- return OK(undefined);
26
- }
27
- return this._def.innerType._parse(input);
28
- }
29
- static create(type) {
30
- return new ZodNullableOptional({
31
- innerType: type,
32
- typeName: ZodFirstPartyTypeKind.ZodOptional
33
- });
34
- }
35
- }
36
20
  /**
37
21
  * Declares a parameter as optional. Use this over z.optional in order to accept nulls as undefineds.
38
22
  * This is required as JSON does not have an undefined type, and null is used to represent it, so we
39
23
  * need to convert nulls to undefineds as we parse.
40
24
  */ export function optional(schema) {
41
- return ZodNullableOptional.create(schema);
25
+ return schema.nullish().transform((value)=>value ?? undefined);
42
26
  }
43
27
  /**
44
28
  * Creates a schema that accepts a hex string and uses it to hydrate an instance.
@@ -72,6 +72,13 @@ export declare class BufferReader {
72
72
  * @returns The read 256 bit value as a bigint.
73
73
  */
74
74
  readUInt256(): bigint;
75
+ /**
76
+ * Reads a 256-bit signed integer (two's complement) from the buffer at the current index position.
77
+ * Updates the index position by 32 bytes after reading the number.
78
+ *
79
+ * @returns The read 256 bit signed value as a bigint.
80
+ */
81
+ readInt256(): bigint;
75
82
  /** Alias for readUInt256 */
76
83
  readBigInt(): bigint;
77
84
  /**
@@ -128,6 +135,7 @@ export declare class BufferReader {
128
135
  * deserializing each one using the 'fromBuffer' method of 'itemDeserializer'.
129
136
  *
130
137
  * @param itemDeserializer - Object with 'fromBuffer' method to deserialize vector elements.
138
+ * @param maxSize - Optional maximum allowed size for the vector. If the size exceeds this, an error is thrown.
131
139
  * @returns An array of deserialized elements of type T.
132
140
  */
133
141
  readVector<T>(itemDeserializer: {
@@ -135,7 +143,7 @@ export declare class BufferReader {
135
143
  * A method to deserialize data from a buffer.
136
144
  */
137
145
  fromBuffer: (reader: BufferReader) => T;
138
- }): T[];
146
+ }, maxSize?: number): T[];
139
147
  /**
140
148
  * Reads a vector of fixed size from the buffer and deserializes its elements using the provided itemDeserializer object.
141
149
  * The 'itemDeserializer' object should have a 'fromBuffer' method that takes a BufferReader instance and returns the deserialized element.
@@ -202,18 +210,20 @@ export declare class BufferReader {
202
210
  * The method first reads the size of the string, then reads the corresponding
203
211
  * number of bytes from the buffer and converts them to a string.
204
212
  *
213
+ * @param maxSize - Optional maximum allowed size for the string buffer. If the size exceeds this, an error is thrown.
205
214
  * @returns The read string from the buffer.
206
215
  */
207
- readString(): string;
216
+ readString(maxSize?: number): string;
208
217
  /**
209
218
  * Reads a buffer from the current position of the reader and advances the index.
210
219
  * The method first reads the size (number) of bytes to be read, and then returns
211
220
  * a Buffer with that size containing the bytes. Useful for reading variable-length
212
221
  * binary data encoded as (size, data) format.
213
222
  *
223
+ * @param maxSize - Optional maximum allowed size for the buffer. If the size exceeds this, an error is thrown.
214
224
  * @returns A Buffer containing the read bytes.
215
225
  */
216
- readBuffer(): Buffer;
226
+ readBuffer(maxSize?: number): Buffer;
217
227
  /**
218
228
  * Reads a buffer from the current position of the reader and advances the index.
219
229
  * The method first reads the size (number) of bytes to be read, and then returns
@@ -261,4 +271,4 @@ export interface FromBuffer<T> {
261
271
  */
262
272
  fromBuffer(buffer: Buffer): T;
263
273
  }
264
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVmZmVyX3JlYWRlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcmlhbGl6ZS9idWZmZXJfcmVhZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV4Qzs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILHFCQUFhLFlBQVk7O0lBR3JCLE9BQU8sQ0FBQyxNQUFNO0lBRmhCLE9BQU8sQ0FBQyxLQUFLLENBQVM7SUFDdEIsWUFDVSxNQUFNLEVBQUUsTUFBTSxFQUN0QixNQUFNLFNBQUksRUFHWDtJQUVEOzs7Ozs7O09BT0c7SUFDSCxPQUFjLFFBQVEsQ0FBQyxjQUFjLEVBQUUsVUFBVSxHQUFHLE1BQU0sR0FBRyxZQUFZLEdBQUcsWUFBWSxDQVV2RjtJQUVELDBFQUEwRTtJQUNuRSxPQUFPLElBQUksT0FBTyxDQUV4QjtJQUVEOzs7OztPQUtHO0lBQ0ksVUFBVSxJQUFJLE1BQU0sQ0FJMUI7SUFFRDs7OztPQUlHO0lBQ0ksV0FBVyxDQUFDLENBQUMsU0FBUyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUcvRDtJQUVEOzs7Ozs7O09BT0c7SUFDSSxVQUFVLElBQUksTUFBTSxDQU8xQjtJQUVEOzs7Ozs7O09BT0c7SUFDSSxXQUFXLElBQUksTUFBTSxDQVUzQjtJQUVEOzs7Ozs7O09BT0c7SUFDSSxXQUFXLElBQUksTUFBTSxDQVUzQjtJQUVELDRCQUE0QjtJQUNyQixVQUFVLElBQUksTUFBTSxDQUUxQjtJQUVEOzs7OztPQUtHO0lBQ0ksVUFBVSxJQUFJLE1BQU0sQ0FJMUI7SUFFRDs7Ozs7T0FLRztJQUNJLFNBQVMsSUFBSSxNQUFNLENBSXpCO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksV0FBVyxJQUFJLE9BQU8sQ0FJNUI7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUlsQztJQUVELHlDQUF5QztJQUNsQyxTQUFTLElBQUksTUFBTSxDQUl6QjtJQUVEOzs7OztPQUtHO0lBQ0ksZ0JBQWdCLElBQUksTUFBTSxFQUFFLENBSWxDO0lBRUQ7Ozs7O09BS0c7SUFDSSxpQkFBaUIsSUFBSSxNQUFNLEVBQUUsQ0FJbkM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLFVBQVUsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUU7UUFDckM7O1dBRUc7UUFDSCxVQUFVLEVBQUUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxLQUFLLENBQUMsQ0FBQztLQUN6QyxHQUFHLENBQUMsRUFBRSxDQU9OO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUU7UUFDaEQ7O1dBRUc7UUFDSCxVQUFVLEVBQUUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxLQUFLLENBQUMsQ0FBQztLQUN6QyxHQUFHLENBQUMsRUFBRSxDQU9OO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsTUFBTSxFQUNsQyxJQUFJLEVBQUUsQ0FBQyxFQUNQLGdCQUFnQixFQUFFO1FBQ2hCOztXQUVHO1FBQ0gsVUFBVSxFQUFFLENBQUMsTUFBTSxFQUFFLFlBQVksS0FBSyxDQUFDLENBQUM7S0FDekMsR0FDQSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUdiO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLGVBQWUsQ0FBQyxJQUFJLFNBQUssR0FBRyxNQUFNLEVBQUUsQ0FlMUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxVQUFVLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRTtRQUNqQzs7V0FFRztRQUNILFVBQVUsRUFBRSxDQUFDLE1BQU0sRUFBRSxZQUFZLEtBQUssQ0FBQyxDQUFDO0tBQ3pDLEdBQUcsQ0FBQyxDQUVKO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBR25DO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksVUFBVSxJQUFJLE1BQU0sQ0FFMUI7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksVUFBVSxJQUFJLE1BQU0sQ0FJMUI7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksY0FBYyxJQUFJLFVBQVUsQ0FJbEM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFO1FBQzlCOztXQUVHO1FBQ0gsVUFBVSxFQUFFLENBQUMsTUFBTSxFQUFFLFlBQVksS0FBSyxDQUFDLENBQUM7S0FDekMsR0FBRztRQUFFLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUE7S0FBRSxDQVN2QjtJQUVEOzs7T0FHRztJQUNJLFNBQVMsSUFBSSxNQUFNLENBRXpCO0lBRUQ7OztPQUdHO0lBQ0ksY0FBYyxJQUFJLE1BQU0sQ0FFOUI7Q0FTRjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxXQUFXLFVBQVUsQ0FBQyxDQUFDO0lBQzNCOzs7T0FHRztJQUNILFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQztDQUMvQiJ9
274
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVmZmVyX3JlYWRlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcmlhbGl6ZS9idWZmZXJfcmVhZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV4Qzs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILHFCQUFhLFlBQVk7O0lBR3JCLE9BQU8sQ0FBQyxNQUFNO0lBRmhCLE9BQU8sQ0FBQyxLQUFLLENBQVM7SUFDdEIsWUFDVSxNQUFNLEVBQUUsTUFBTSxFQUN0QixNQUFNLFNBQUksRUFHWDtJQUVEOzs7Ozs7O09BT0c7SUFDSCxPQUFjLFFBQVEsQ0FBQyxjQUFjLEVBQUUsVUFBVSxHQUFHLE1BQU0sR0FBRyxZQUFZLEdBQUcsWUFBWSxDQVV2RjtJQUVELDBFQUEwRTtJQUNuRSxPQUFPLElBQUksT0FBTyxDQUV4QjtJQUVEOzs7OztPQUtHO0lBQ0ksVUFBVSxJQUFJLE1BQU0sQ0FJMUI7SUFFRDs7OztPQUlHO0lBQ0ksV0FBVyxDQUFDLENBQUMsU0FBUyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUcvRDtJQUVEOzs7Ozs7O09BT0c7SUFDSSxVQUFVLElBQUksTUFBTSxDQU8xQjtJQUVEOzs7Ozs7O09BT0c7SUFDSSxXQUFXLElBQUksTUFBTSxDQVUzQjtJQUVEOzs7Ozs7O09BT0c7SUFDSSxXQUFXLElBQUksTUFBTSxDQVUzQjtJQUVEOzs7OztPQUtHO0lBQ0ksVUFBVSxJQUFJLE1BQU0sQ0FNMUI7SUFFRCw0QkFBNEI7SUFDckIsVUFBVSxJQUFJLE1BQU0sQ0FFMUI7SUFFRDs7Ozs7T0FLRztJQUNJLFVBQVUsSUFBSSxNQUFNLENBSTFCO0lBRUQ7Ozs7O09BS0c7SUFDSSxTQUFTLElBQUksTUFBTSxDQUl6QjtJQUVEOzs7Ozs7T0FNRztJQUNJLFdBQVcsSUFBSSxPQUFPLENBSTVCO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FJbEM7SUFFRCx5Q0FBeUM7SUFDbEMsU0FBUyxJQUFJLE1BQU0sQ0FJekI7SUFFRDs7Ozs7T0FLRztJQUNJLGdCQUFnQixJQUFJLE1BQU0sRUFBRSxDQUlsQztJQUVEOzs7OztPQUtHO0lBQ0ksaUJBQWlCLElBQUksTUFBTSxFQUFFLENBSW5DO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksVUFBVSxDQUFDLENBQUMsRUFDakIsZ0JBQWdCLEVBQUU7UUFDaEI7O1dBRUc7UUFDSCxVQUFVLEVBQUUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxLQUFLLENBQUMsQ0FBQztLQUN6QyxFQUNELE9BQU8sQ0FBQyxFQUFFLE1BQU0sR0FDZixDQUFDLEVBQUUsQ0FVTDtJQUVEOzs7Ozs7OztPQVFHO0lBQ0kscUJBQXFCLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixFQUFFO1FBQ2hEOztXQUVHO1FBQ0gsVUFBVSxFQUFFLENBQUMsTUFBTSxFQUFFLFlBQVksS0FBSyxDQUFDLENBQUM7S0FDekMsR0FBRyxDQUFDLEVBQUUsQ0FPTjtJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLE1BQU0sRUFDbEMsSUFBSSxFQUFFLENBQUMsRUFDUCxnQkFBZ0IsRUFBRTtRQUNoQjs7V0FFRztRQUNILFVBQVUsRUFBRSxDQUFDLE1BQU0sRUFBRSxZQUFZLEtBQUssQ0FBQyxDQUFDO0tBQ3pDLEdBQ0EsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FHYjtJQUVEOzs7Ozs7O09BT0c7SUFDSSxlQUFlLENBQUMsSUFBSSxTQUFLLEdBQUcsTUFBTSxFQUFFLENBZTFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksVUFBVSxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUU7UUFDakM7O1dBRUc7UUFDSCxVQUFVLEVBQUUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxLQUFLLENBQUMsQ0FBQztLQUN6QyxHQUFHLENBQUMsQ0FFSjtJQUVEOzs7Ozs7T0FNRztJQUNJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUduQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FFMUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQU8xQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxjQUFjLElBQUksVUFBVSxDQUlsQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksT0FBTyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUU7UUFDOUI7O1dBRUc7UUFDSCxVQUFVLEVBQUUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxLQUFLLENBQUMsQ0FBQztLQUN6QyxHQUFHO1FBQUUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQTtLQUFFLENBU3ZCO0lBRUQ7OztPQUdHO0lBQ0ksU0FBUyxJQUFJLE1BQU0sQ0FFekI7SUFFRDs7O09BR0c7SUFDSSxjQUFjLElBQUksTUFBTSxDQUU5QjtDQVNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFdBQVcsVUFBVSxDQUFDLENBQUM7SUFDM0I7OztPQUdHO0lBQ0gsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0NBQy9CIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"buffer_reader.d.ts","sourceRoot":"","sources":["../../src/serialize/buffer_reader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buffer_reader.d.ts","sourceRoot":"","sources":["../../src/serialize/buffer_reader.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { toBigIntBE } from '../bigint-buffer/index.js';
1
2
  /**
2
3
  * The BufferReader class provides a utility for reading various data types from a buffer.
3
4
  * It supports reading numbers, booleans, byte arrays, Fr and Fq field elements,
@@ -103,6 +104,18 @@
103
104
  this.index += 32;
104
105
  return result;
105
106
  }
107
+ /**
108
+ * Reads a 256-bit signed integer (two's complement) from the buffer at the current index position.
109
+ * Updates the index position by 32 bytes after reading the number.
110
+ *
111
+ * @returns The read 256 bit signed value as a bigint.
112
+ */ readInt256() {
113
+ this.#rangeCheck(32);
114
+ const unsigned = toBigIntBE(this.buffer.subarray(this.index, this.index + 32));
115
+ this.index += 32;
116
+ const signBit = 1n << 255n;
117
+ return unsigned >= signBit ? unsigned - (1n << 256n) : unsigned;
118
+ }
106
119
  /** Alias for readUInt256 */ readBigInt() {
107
120
  return this.readUInt256();
108
121
  }
@@ -181,9 +194,13 @@
181
194
  * deserializing each one using the 'fromBuffer' method of 'itemDeserializer'.
182
195
  *
183
196
  * @param itemDeserializer - Object with 'fromBuffer' method to deserialize vector elements.
197
+ * @param maxSize - Optional maximum allowed size for the vector. If the size exceeds this, an error is thrown.
184
198
  * @returns An array of deserialized elements of type T.
185
- */ readVector(itemDeserializer) {
199
+ */ readVector(itemDeserializer, maxSize) {
186
200
  const size = this.readNumber();
201
+ if (maxSize !== undefined && size > maxSize) {
202
+ throw new Error(`Vector size ${size} exceeds maximum allowed ${maxSize}`);
203
+ }
187
204
  const result = new Array(size);
188
205
  for(let i = 0; i < size; i++){
189
206
  result[i] = itemDeserializer.fromBuffer(this);
@@ -266,9 +283,10 @@
266
283
  * The method first reads the size of the string, then reads the corresponding
267
284
  * number of bytes from the buffer and converts them to a string.
268
285
  *
286
+ * @param maxSize - Optional maximum allowed size for the string buffer. If the size exceeds this, an error is thrown.
269
287
  * @returns The read string from the buffer.
270
- */ readString() {
271
- return this.readBuffer().toString();
288
+ */ readString(maxSize) {
289
+ return this.readBuffer(maxSize).toString();
272
290
  }
273
291
  /**
274
292
  * Reads a buffer from the current position of the reader and advances the index.
@@ -276,9 +294,13 @@
276
294
  * a Buffer with that size containing the bytes. Useful for reading variable-length
277
295
  * binary data encoded as (size, data) format.
278
296
  *
297
+ * @param maxSize - Optional maximum allowed size for the buffer. If the size exceeds this, an error is thrown.
279
298
  * @returns A Buffer containing the read bytes.
280
- */ readBuffer() {
299
+ */ readBuffer(maxSize) {
281
300
  const size = this.readNumber();
301
+ if (maxSize !== undefined && size > maxSize) {
302
+ throw new Error(`Buffer size ${size} exceeds maximum allowed ${maxSize}`);
303
+ }
282
304
  this.#rangeCheck(size);
283
305
  return this.readBytes(size);
284
306
  }