@aztec/foundation 0.0.0-test.1 → 0.0.1-commit.b655e406

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 (510) hide show
  1. package/dest/array/array.d.ts +5 -0
  2. package/dest/array/array.d.ts.map +1 -1
  3. package/dest/array/array.js +11 -0
  4. package/dest/async-pool/index.d.ts.map +1 -1
  5. package/dest/async-pool/index.js +1 -0
  6. package/dest/bigint/index.d.ts +7 -0
  7. package/dest/bigint/index.d.ts.map +1 -0
  8. package/dest/bigint/index.js +15 -0
  9. package/dest/bigint-buffer/index.d.ts +0 -2
  10. package/dest/bigint-buffer/index.d.ts.map +1 -1
  11. package/dest/buffer/buffer16.d.ts +80 -0
  12. package/dest/buffer/buffer16.d.ts.map +1 -0
  13. package/dest/buffer/buffer16.js +100 -0
  14. package/dest/buffer/buffer32.d.ts +3 -7
  15. package/dest/buffer/buffer32.d.ts.map +1 -1
  16. package/dest/buffer/buffer32.js +6 -6
  17. package/dest/buffer/index.d.ts +1 -0
  18. package/dest/buffer/index.d.ts.map +1 -1
  19. package/dest/buffer/index.js +1 -0
  20. package/dest/collection/array.d.ts +16 -3
  21. package/dest/collection/array.d.ts.map +1 -1
  22. package/dest/collection/array.js +57 -3
  23. package/dest/collection/object.d.ts +16 -0
  24. package/dest/collection/object.d.ts.map +1 -1
  25. package/dest/collection/object.js +25 -0
  26. package/dest/config/env_var.d.ts +1 -1
  27. package/dest/config/env_var.d.ts.map +1 -1
  28. package/dest/config/index.d.ts +48 -1
  29. package/dest/config/index.d.ts.map +1 -1
  30. package/dest/config/index.js +115 -7
  31. package/dest/config/network_config.d.ts +42 -0
  32. package/dest/config/network_config.d.ts.map +1 -0
  33. package/dest/config/network_config.js +9 -0
  34. package/dest/config/network_name.d.ts +3 -0
  35. package/dest/config/network_name.d.ts.map +1 -0
  36. package/dest/config/network_name.js +19 -0
  37. package/dest/config/secret_value.d.ts +28 -0
  38. package/dest/config/secret_value.d.ts.map +1 -0
  39. package/dest/config/secret_value.js +34 -0
  40. package/dest/crypto/aes128/index.d.ts +2 -4
  41. package/dest/crypto/aes128/index.d.ts.map +1 -1
  42. package/dest/crypto/aes128/index.js +23 -6
  43. package/dest/crypto/bls/bn254_keystore.d.ts +296 -0
  44. package/dest/crypto/bls/bn254_keystore.d.ts.map +1 -0
  45. package/dest/crypto/bls/bn254_keystore.js +218 -0
  46. package/dest/crypto/bls/index.d.ts +13 -0
  47. package/dest/crypto/bls/index.d.ts.map +1 -0
  48. package/dest/crypto/bls/index.js +87 -0
  49. package/dest/crypto/bn254/bn254_utils.d.ts +39 -0
  50. package/dest/crypto/bn254/bn254_utils.d.ts.map +1 -0
  51. package/dest/crypto/bn254/bn254_utils.js +56 -0
  52. package/dest/crypto/bn254/index.d.ts +55 -0
  53. package/dest/crypto/bn254/index.d.ts.map +1 -0
  54. package/dest/crypto/bn254/index.js +142 -0
  55. package/dest/crypto/ecdsa/index.d.ts +2 -2
  56. package/dest/crypto/ecdsa/index.d.ts.map +1 -1
  57. package/dest/crypto/ecdsa/index.js +70 -48
  58. package/dest/crypto/ecdsa/signature.d.ts +1 -3
  59. package/dest/crypto/ecdsa/signature.d.ts.map +1 -1
  60. package/dest/crypto/grumpkin/index.d.ts +6 -13
  61. package/dest/crypto/grumpkin/index.d.ts.map +1 -1
  62. package/dest/crypto/grumpkin/index.js +69 -54
  63. package/dest/crypto/index.d.ts +2 -0
  64. package/dest/crypto/index.d.ts.map +1 -1
  65. package/dest/crypto/index.js +2 -0
  66. package/dest/crypto/keccak/index.d.ts +2 -4
  67. package/dest/crypto/keccak/index.d.ts.map +1 -1
  68. package/dest/crypto/keys/index.d.ts +0 -2
  69. package/dest/crypto/keys/index.d.ts.map +1 -1
  70. package/dest/crypto/keys/index.js +9 -4
  71. package/dest/crypto/pedersen/pedersen.noble.d.ts +2 -4
  72. package/dest/crypto/pedersen/pedersen.noble.d.ts.map +1 -1
  73. package/dest/crypto/pedersen/pedersen.wasm.d.ts +2 -4
  74. package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -1
  75. package/dest/crypto/pedersen/pedersen.wasm.js +29 -13
  76. package/dest/crypto/poseidon/index.d.ts +0 -2
  77. package/dest/crypto/poseidon/index.d.ts.map +1 -1
  78. package/dest/crypto/poseidon/index.js +42 -17
  79. package/dest/crypto/random/index.d.ts +1 -3
  80. package/dest/crypto/random/index.d.ts.map +1 -1
  81. package/dest/crypto/random/index.js +2 -34
  82. package/dest/crypto/random/randomness_singleton.d.ts +0 -2
  83. package/dest/crypto/random/randomness_singleton.d.ts.map +1 -1
  84. package/dest/crypto/schnorr/index.d.ts.map +1 -1
  85. package/dest/crypto/schnorr/index.js +35 -37
  86. package/dest/crypto/schnorr/signature.d.ts +3 -5
  87. package/dest/crypto/schnorr/signature.d.ts.map +1 -1
  88. package/dest/crypto/secp256k1/index.d.ts +4 -6
  89. package/dest/crypto/secp256k1/index.d.ts.map +1 -1
  90. package/dest/crypto/secp256k1/index.js +29 -18
  91. package/dest/crypto/secp256k1-signer/utils.d.ts +55 -4
  92. package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -1
  93. package/dest/crypto/secp256k1-signer/utils.js +92 -6
  94. package/dest/crypto/serialize.d.ts +4 -6
  95. package/dest/crypto/serialize.d.ts.map +1 -1
  96. package/dest/crypto/sha256/index.d.ts +21 -4
  97. package/dest/crypto/sha256/index.d.ts.map +1 -1
  98. package/dest/crypto/sha256/index.js +42 -0
  99. package/dest/crypto/sha512/index.d.ts +1 -3
  100. package/dest/crypto/sha512/index.d.ts.map +1 -1
  101. package/dest/crypto/signature/index.d.ts +0 -2
  102. package/dest/crypto/signature/index.d.ts.map +1 -1
  103. package/dest/crypto/sync/index.js +3 -1
  104. package/dest/crypto/sync/pedersen/index.d.ts +2 -4
  105. package/dest/crypto/sync/pedersen/index.d.ts.map +1 -1
  106. package/dest/crypto/sync/pedersen/index.js +17 -10
  107. package/dest/crypto/sync/poseidon/index.d.ts +0 -2
  108. package/dest/crypto/sync/poseidon/index.d.ts.map +1 -1
  109. package/dest/crypto/sync/poseidon/index.js +27 -12
  110. package/dest/decorators/memoize.d.ts.map +1 -1
  111. package/dest/eth-address/index.d.ts +6 -7
  112. package/dest/eth-address/index.d.ts.map +1 -1
  113. package/dest/eth-address/index.js +5 -0
  114. package/dest/eth-signature/eth_signature.d.ts +16 -14
  115. package/dest/eth-signature/eth_signature.d.ts.map +1 -1
  116. package/dest/eth-signature/eth_signature.js +31 -17
  117. package/dest/fields/bls12_fields.d.ts +148 -0
  118. package/dest/fields/bls12_fields.d.ts.map +1 -0
  119. package/dest/fields/bls12_fields.js +359 -0
  120. package/dest/fields/bls12_point.d.ts +229 -0
  121. package/dest/fields/bls12_point.d.ts.map +1 -0
  122. package/dest/fields/bls12_point.js +398 -0
  123. package/dest/fields/coordinate.d.ts +0 -2
  124. package/dest/fields/coordinate.d.ts.map +1 -1
  125. package/dest/fields/fields.d.ts +6 -3
  126. package/dest/fields/fields.d.ts.map +1 -1
  127. package/dest/fields/fields.js +43 -15
  128. package/dest/fields/index.d.ts +2 -0
  129. package/dest/fields/index.d.ts.map +1 -1
  130. package/dest/fields/index.js +2 -0
  131. package/dest/fields/point.d.ts +2 -4
  132. package/dest/fields/point.d.ts.map +1 -1
  133. package/dest/fields/point.js +3 -3
  134. package/dest/fs/index.d.ts +1 -0
  135. package/dest/fs/index.d.ts.map +1 -1
  136. package/dest/fs/index.js +1 -0
  137. package/dest/fs/try_rm_dir.d.ts +3 -0
  138. package/dest/fs/try_rm_dir.d.ts.map +1 -0
  139. package/dest/fs/try_rm_dir.js +16 -0
  140. package/dest/index.d.ts +1 -2
  141. package/dest/index.d.ts.map +1 -1
  142. package/dest/index.js +1 -2
  143. package/dest/iterable/filter.js +1 -1
  144. package/dest/iterable/map.js +1 -1
  145. package/dest/jest/env.js +48 -0
  146. package/dest/jest/setupAfterEnv.js +3 -0
  147. package/dest/json-rpc/client/fetch.d.ts +2 -2
  148. package/dest/json-rpc/client/fetch.d.ts.map +1 -1
  149. package/dest/json-rpc/client/fetch.js +16 -30
  150. package/dest/json-rpc/client/safe_json_rpc_client.d.ts +9 -3
  151. package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -1
  152. package/dest/json-rpc/client/safe_json_rpc_client.js +173 -13
  153. package/dest/json-rpc/client/undici.d.ts.map +1 -1
  154. package/dest/json-rpc/client/undici.js +6 -7
  155. package/dest/json-rpc/convert.d.ts +2 -9
  156. package/dest/json-rpc/convert.d.ts.map +1 -1
  157. package/dest/json-rpc/convert.js +1 -9
  158. package/dest/json-rpc/errors.d.ts +4 -0
  159. package/dest/json-rpc/errors.d.ts.map +1 -0
  160. package/dest/json-rpc/errors.js +6 -0
  161. package/dest/json-rpc/fixtures/class_a.d.ts +5 -3
  162. package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -1
  163. package/dest/json-rpc/fixtures/class_b.d.ts +5 -3
  164. package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -1
  165. package/dest/json-rpc/index.d.ts +2 -1
  166. package/dest/json-rpc/index.d.ts.map +1 -1
  167. package/dest/json-rpc/index.js +2 -1
  168. package/dest/json-rpc/js_utils.d.ts.map +1 -1
  169. package/dest/json-rpc/server/safe_json_rpc_server.d.ts +21 -22
  170. package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -1
  171. package/dest/json-rpc/server/safe_json_rpc_server.js +161 -56
  172. package/dest/json-rpc/test/integration.d.ts +1 -2
  173. package/dest/json-rpc/test/integration.d.ts.map +1 -1
  174. package/dest/log/console.d.ts.map +1 -1
  175. package/dest/log/gcloud-logger-config.d.ts +0 -1
  176. package/dest/log/gcloud-logger-config.d.ts.map +1 -1
  177. package/dest/log/gcloud-logger-config.js +1 -9
  178. package/dest/log/index.d.ts +4 -4
  179. package/dest/log/index.d.ts.map +1 -1
  180. package/dest/log/index.js +4 -4
  181. package/dest/log/libp2p_logger.js +13 -2
  182. package/dest/log/log_fn.d.ts +1 -1
  183. package/dest/log/log_fn.d.ts.map +1 -1
  184. package/dest/log/noir_debug_log_util.d.ts +14 -0
  185. package/dest/log/noir_debug_log_util.d.ts.map +1 -0
  186. package/dest/log/noir_debug_log_util.js +14 -0
  187. package/dest/log/pino-logger.d.ts +2 -2
  188. package/dest/log/pino-logger.d.ts.map +1 -1
  189. package/dest/log/pino-logger.js +28 -2
  190. package/dest/message/index.d.ts.map +1 -1
  191. package/dest/mutex/mutex_database.d.ts.map +1 -1
  192. package/dest/noir/noir_package_config.d.ts +4 -4
  193. package/dest/number/index.d.ts +3 -0
  194. package/dest/number/index.d.ts.map +1 -0
  195. package/dest/number/index.js +12 -0
  196. package/dest/profiler/index.d.ts +2 -0
  197. package/dest/profiler/index.d.ts.map +1 -0
  198. package/dest/profiler/index.js +1 -0
  199. package/dest/profiler/profiler.d.ts +8 -0
  200. package/dest/profiler/profiler.d.ts.map +1 -0
  201. package/dest/profiler/profiler.js +97 -0
  202. package/dest/promise/running-promise.d.ts +1 -1
  203. package/dest/promise/running-promise.d.ts.map +1 -1
  204. package/dest/promise/running-promise.js +2 -2
  205. package/dest/queue/batch_queue.d.ts +1 -1
  206. package/dest/queue/batch_queue.js +1 -1
  207. package/dest/queue/bounded_serial_queue.d.ts.map +1 -1
  208. package/dest/queue/serial_queue.d.ts +2 -2
  209. package/dest/queue/serial_queue.d.ts.map +1 -1
  210. package/dest/queue/serial_queue.js +7 -5
  211. package/dest/retry/index.d.ts +3 -2
  212. package/dest/retry/index.d.ts.map +1 -1
  213. package/dest/retry/index.js +2 -2
  214. package/dest/schemas/api.d.ts.map +1 -1
  215. package/dest/schemas/parse.js +1 -1
  216. package/dest/schemas/schemas.d.ts +9 -6
  217. package/dest/schemas/schemas.d.ts.map +1 -1
  218. package/dest/schemas/schemas.js +15 -1
  219. package/dest/schemas/utils.d.ts +1 -3
  220. package/dest/schemas/utils.d.ts.map +1 -1
  221. package/dest/serialize/buffer_reader.d.ts +27 -2
  222. package/dest/serialize/buffer_reader.d.ts.map +1 -1
  223. package/dest/serialize/buffer_reader.js +44 -2
  224. package/dest/serialize/field_reader.d.ts +10 -1
  225. package/dest/serialize/field_reader.d.ts.map +1 -1
  226. package/dest/serialize/field_reader.js +18 -1
  227. package/dest/serialize/free_funcs.d.ts +23 -21
  228. package/dest/serialize/free_funcs.d.ts.map +1 -1
  229. package/dest/serialize/free_funcs.js +21 -27
  230. package/dest/serialize/serialize.d.ts +4 -5
  231. package/dest/serialize/serialize.d.ts.map +1 -1
  232. package/dest/string/index.d.ts +7 -2
  233. package/dest/string/index.d.ts.map +1 -1
  234. package/dest/string/index.js +27 -1
  235. package/dest/testing/files/index.d.ts +0 -2
  236. package/dest/testing/files/index.d.ts.map +1 -1
  237. package/dest/testing/files/index.js +2 -2
  238. package/dest/testing/formatting.d.ts +4 -0
  239. package/dest/testing/formatting.d.ts.map +1 -0
  240. package/dest/testing/formatting.js +3 -0
  241. package/dest/testing/index.d.ts +1 -0
  242. package/dest/testing/index.d.ts.map +1 -1
  243. package/dest/testing/index.js +1 -0
  244. package/dest/timer/date.d.ts +2 -1
  245. package/dest/timer/date.d.ts.map +1 -1
  246. package/dest/timer/date.js +5 -3
  247. package/dest/timer/index.d.ts +1 -1
  248. package/dest/timer/index.d.ts.map +1 -1
  249. package/dest/timer/index.js +1 -1
  250. package/dest/timer/timeout.d.ts +18 -5
  251. package/dest/timer/timeout.d.ts.map +1 -1
  252. package/dest/timer/timeout.js +43 -22
  253. package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +1 -1
  254. package/dest/transport/index.d.ts +0 -1
  255. package/dest/transport/index.d.ts.map +1 -1
  256. package/dest/transport/index.js +0 -1
  257. package/dest/transport/interface/connector.d.ts.map +1 -1
  258. package/dest/transport/interface/listener.d.ts +0 -1
  259. package/dest/transport/interface/listener.d.ts.map +1 -1
  260. package/dest/transport/interface/socket.d.ts.map +1 -1
  261. package/dest/transport/node/node_connector.d.ts +0 -1
  262. package/dest/transport/node/node_connector.d.ts.map +1 -1
  263. package/dest/transport/node/node_connector_socket.d.ts +0 -1
  264. package/dest/transport/node/node_connector_socket.d.ts.map +1 -1
  265. package/dest/transport/node/node_listener.d.ts +0 -1
  266. package/dest/transport/node/node_listener.d.ts.map +1 -1
  267. package/dest/transport/node/node_listener_socket.d.ts +0 -1
  268. package/dest/transport/node/node_listener_socket.d.ts.map +1 -1
  269. package/dest/transport/transport_client.d.ts +0 -1
  270. package/dest/transport/transport_client.d.ts.map +1 -1
  271. package/dest/transport/transport_server.d.ts.map +1 -1
  272. package/dest/trees/hasher.d.ts +4 -6
  273. package/dest/trees/hasher.d.ts.map +1 -1
  274. package/dest/trees/index.d.ts +1 -0
  275. package/dest/trees/index.d.ts.map +1 -1
  276. package/dest/trees/index.js +1 -0
  277. package/dest/trees/indexed_merkle_tree.d.ts +0 -2
  278. package/dest/trees/indexed_merkle_tree.d.ts.map +1 -1
  279. package/dest/trees/indexed_merkle_tree_calculator.d.ts +1 -3
  280. package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -1
  281. package/dest/trees/indexed_tree_leaf.d.ts +0 -2
  282. package/dest/trees/indexed_tree_leaf.d.ts.map +1 -1
  283. package/dest/trees/membership_witness.d.ts +19 -3
  284. package/dest/trees/membership_witness.d.ts.map +1 -1
  285. package/dest/trees/membership_witness.js +13 -0
  286. package/dest/trees/merkle_tree.d.ts +0 -2
  287. package/dest/trees/merkle_tree.d.ts.map +1 -1
  288. package/dest/trees/merkle_tree_calculator.d.ts +11 -3
  289. package/dest/trees/merkle_tree_calculator.d.ts.map +1 -1
  290. package/dest/trees/merkle_tree_calculator.js +31 -1
  291. package/dest/trees/sibling_path.d.ts +6 -8
  292. package/dest/trees/sibling_path.d.ts.map +1 -1
  293. package/dest/trees/unbalanced_merkle_tree.d.ts +19 -8
  294. package/dest/trees/unbalanced_merkle_tree.d.ts.map +1 -1
  295. package/dest/trees/unbalanced_merkle_tree.js +49 -50
  296. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts +48 -0
  297. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts.map +1 -0
  298. package/dest/trees/unbalanced_merkle_tree_calculator.js +162 -0
  299. package/dest/trees/unbalanced_tree_store.d.ts +1 -0
  300. package/dest/trees/unbalanced_tree_store.d.ts.map +1 -1
  301. package/dest/trees/unbalanced_tree_store.js +6 -0
  302. package/dest/types/index.d.ts +25 -2
  303. package/dest/types/index.d.ts.map +1 -1
  304. package/dest/url/index.d.ts.map +1 -1
  305. package/dest/url/index.js +1 -1
  306. package/package.json +35 -41
  307. package/src/array/array.ts +13 -0
  308. package/src/async-pool/index.ts +1 -0
  309. package/src/bigint/index.ts +20 -0
  310. package/src/buffer/buffer16.ts +133 -0
  311. package/src/buffer/buffer32.ts +8 -6
  312. package/src/buffer/index.ts +1 -0
  313. package/src/collection/array.ts +66 -4
  314. package/src/collection/object.ts +37 -0
  315. package/src/config/env_var.ts +142 -52
  316. package/src/config/index.ts +191 -8
  317. package/src/config/network_config.ts +16 -0
  318. package/src/config/network_name.ts +28 -0
  319. package/src/config/secret_value.ts +49 -0
  320. package/src/crypto/aes128/index.ts +19 -10
  321. package/src/crypto/bls/bn254_keystore.ts +287 -0
  322. package/src/crypto/bls/index.ts +77 -0
  323. package/src/crypto/bn254/bn254_utils.ts +64 -0
  324. package/src/crypto/bn254/index.ts +170 -0
  325. package/src/crypto/ecdsa/index.ts +41 -23
  326. package/src/crypto/grumpkin/index.ts +35 -45
  327. package/src/crypto/index.ts +2 -0
  328. package/src/crypto/keys/index.ts +5 -5
  329. package/src/crypto/pedersen/pedersen.wasm.ts +22 -18
  330. package/src/crypto/poseidon/index.ts +32 -24
  331. package/src/crypto/random/index.ts +2 -40
  332. package/src/crypto/schnorr/index.ts +20 -17
  333. package/src/crypto/secp256k1/index.ts +15 -11
  334. package/src/crypto/secp256k1-signer/utils.ts +120 -7
  335. package/src/crypto/sha256/index.ts +47 -0
  336. package/src/crypto/sync/index.ts +1 -1
  337. package/src/crypto/sync/pedersen/index.ts +16 -15
  338. package/src/crypto/sync/poseidon/index.ts +27 -22
  339. package/src/eth-address/index.ts +9 -2
  340. package/src/eth-signature/eth_signature.ts +44 -22
  341. package/src/fields/bls12_fields.ts +463 -0
  342. package/src/fields/bls12_point.ts +450 -0
  343. package/src/fields/fields.ts +37 -9
  344. package/src/fields/index.ts +2 -0
  345. package/src/fields/point.ts +1 -3
  346. package/src/fs/index.ts +1 -0
  347. package/src/fs/try_rm_dir.ts +15 -0
  348. package/src/index.ts +1 -2
  349. package/src/iterable/filter.ts +1 -1
  350. package/src/iterable/map.ts +1 -1
  351. package/src/jest/env.mjs +52 -0
  352. package/src/jest/setupAfterEnv.mjs +3 -0
  353. package/src/json-rpc/client/fetch.ts +14 -33
  354. package/src/json-rpc/client/safe_json_rpc_client.ts +226 -13
  355. package/src/json-rpc/client/undici.ts +8 -15
  356. package/src/json-rpc/convert.ts +3 -12
  357. package/src/json-rpc/errors.ts +6 -0
  358. package/src/json-rpc/fixtures/class_a.ts +4 -1
  359. package/src/json-rpc/fixtures/class_b.ts +4 -1
  360. package/src/json-rpc/index.ts +2 -1
  361. package/src/json-rpc/server/safe_json_rpc_server.ts +141 -48
  362. package/src/json-rpc/test/integration.ts +1 -1
  363. package/src/log/console.ts +4 -1
  364. package/src/log/gcloud-logger-config.ts +3 -7
  365. package/src/log/index.ts +4 -4
  366. package/src/log/libp2p_logger.ts +21 -2
  367. package/src/log/log_fn.ts +1 -1
  368. package/src/log/noir_debug_log_util.ts +21 -0
  369. package/src/log/pino-logger.ts +33 -2
  370. package/src/message/index.ts +5 -1
  371. package/src/mutex/mutex_database.ts +2 -3
  372. package/src/number/index.ts +14 -0
  373. package/src/profiler/index.ts +1 -0
  374. package/src/profiler/profiler.ts +125 -0
  375. package/src/promise/running-promise.ts +2 -2
  376. package/src/queue/batch_queue.ts +1 -1
  377. package/src/queue/bounded_serial_queue.ts +4 -1
  378. package/src/queue/serial_queue.ts +5 -5
  379. package/src/retry/index.ts +10 -5
  380. package/src/schemas/api.ts +4 -4
  381. package/src/schemas/parse.ts +1 -1
  382. package/src/schemas/schemas.ts +19 -1
  383. package/src/serialize/buffer_reader.ts +60 -3
  384. package/src/serialize/field_reader.ts +27 -3
  385. package/src/serialize/free_funcs.ts +25 -31
  386. package/src/serialize/serialize.ts +2 -0
  387. package/src/string/index.ts +36 -1
  388. package/src/testing/files/index.ts +6 -2
  389. package/src/testing/formatting.ts +3 -0
  390. package/src/testing/index.ts +1 -0
  391. package/src/timer/date.ts +9 -3
  392. package/src/timer/index.ts +1 -1
  393. package/src/timer/timeout.ts +54 -19
  394. package/src/transport/index.ts +0 -1
  395. package/src/transport/interface/connector.ts +0 -1
  396. package/src/transport/interface/listener.ts +2 -3
  397. package/src/transport/interface/socket.ts +2 -3
  398. package/src/transport/transport_client.ts +3 -4
  399. package/src/transport/transport_server.ts +4 -1
  400. package/src/trees/hasher.ts +4 -4
  401. package/src/trees/index.ts +1 -0
  402. package/src/trees/indexed_merkle_tree.ts +5 -1
  403. package/src/trees/indexed_merkle_tree_calculator.ts +2 -2
  404. package/src/trees/membership_witness.ts +13 -0
  405. package/src/trees/merkle_tree.ts +4 -1
  406. package/src/trees/merkle_tree_calculator.ts +43 -5
  407. package/src/trees/unbalanced_merkle_tree.ts +50 -42
  408. package/src/trees/unbalanced_merkle_tree_calculator.ts +194 -0
  409. package/src/trees/unbalanced_tree_store.ts +5 -1
  410. package/src/types/index.ts +25 -4
  411. package/src/url/index.ts +0 -1
  412. package/dest/crypto/pedersen/pedersen.elliptic.d.ts +0 -13
  413. package/dest/crypto/pedersen/pedersen.elliptic.d.ts.map +0 -1
  414. package/dest/crypto/pedersen/pedersen.elliptic.js +0 -582
  415. package/dest/log/debug.d.ts +0 -56
  416. package/dest/log/debug.d.ts.map +0 -1
  417. package/dest/log/debug.js +0 -75
  418. package/dest/log/log_history.d.ts +0 -31
  419. package/dest/log/log_history.d.ts.map +0 -1
  420. package/dest/log/log_history.js +0 -38
  421. package/dest/transport/browser/index.d.ts +0 -5
  422. package/dest/transport/browser/index.d.ts.map +0 -1
  423. package/dest/transport/browser/index.js +0 -4
  424. package/dest/transport/browser/message_port_socket.d.ts +0 -37
  425. package/dest/transport/browser/message_port_socket.d.ts.map +0 -1
  426. package/dest/transport/browser/message_port_socket.js +0 -42
  427. package/dest/transport/browser/shared_worker_connector.d.ts +0 -19
  428. package/dest/transport/browser/shared_worker_connector.d.ts.map +0 -1
  429. package/dest/transport/browser/shared_worker_connector.js +0 -19
  430. package/dest/transport/browser/shared_worker_listener.d.ts +0 -38
  431. package/dest/transport/browser/shared_worker_listener.d.ts.map +0 -1
  432. package/dest/transport/browser/shared_worker_listener.js +0 -33
  433. package/dest/transport/browser/worker_connector.d.ts +0 -26
  434. package/dest/transport/browser/worker_connector.d.ts.map +0 -1
  435. package/dest/transport/browser/worker_connector.js +0 -30
  436. package/dest/transport/browser/worker_listener.d.ts +0 -39
  437. package/dest/transport/browser/worker_listener.d.ts.map +0 -1
  438. package/dest/transport/browser/worker_listener.js +0 -35
  439. package/dest/wasm/empty_wasi_sdk.d.ts +0 -130
  440. package/dest/wasm/empty_wasi_sdk.d.ts.map +0 -1
  441. package/dest/wasm/empty_wasi_sdk.js +0 -148
  442. package/dest/wasm/index.d.ts +0 -2
  443. package/dest/wasm/index.d.ts.map +0 -1
  444. package/dest/wasm/index.js +0 -1
  445. package/dest/wasm/wasm_module.d.ts +0 -136
  446. package/dest/wasm/wasm_module.d.ts.map +0 -1
  447. package/dest/wasm/wasm_module.js +0 -196
  448. package/dest/worker/browser/index.d.ts +0 -3
  449. package/dest/worker/browser/index.d.ts.map +0 -1
  450. package/dest/worker/browser/index.js +0 -2
  451. package/dest/worker/browser/start_web_module.d.ts +0 -7
  452. package/dest/worker/browser/start_web_module.d.ts.map +0 -1
  453. package/dest/worker/browser/start_web_module.js +0 -27
  454. package/dest/worker/browser/web_data_store.d.ts +0 -24
  455. package/dest/worker/browser/web_data_store.d.ts.map +0 -1
  456. package/dest/worker/browser/web_data_store.js +0 -29
  457. package/dest/worker/browser/web_worker.d.ts +0 -10
  458. package/dest/worker/browser/web_worker.d.ts.map +0 -1
  459. package/dest/worker/browser/web_worker.js +0 -25
  460. package/dest/worker/data_store.d.ts +0 -21
  461. package/dest/worker/data_store.d.ts.map +0 -1
  462. package/dest/worker/data_store.js +0 -3
  463. package/dest/worker/index.d.ts +0 -3
  464. package/dest/worker/index.d.ts.map +0 -1
  465. package/dest/worker/index.js +0 -1
  466. package/dest/worker/node/index.d.ts +0 -3
  467. package/dest/worker/node/index.d.ts.map +0 -1
  468. package/dest/worker/node/index.js +0 -2
  469. package/dest/worker/node/node_data_store.d.ts +0 -13
  470. package/dest/worker/node/node_data_store.d.ts.map +0 -1
  471. package/dest/worker/node/node_data_store.js +0 -20
  472. package/dest/worker/node/node_worker.d.ts +0 -6
  473. package/dest/worker/node/node_worker.d.ts.map +0 -1
  474. package/dest/worker/node/node_worker.js +0 -22
  475. package/dest/worker/node/start_node_module.d.ts +0 -7
  476. package/dest/worker/node/start_node_module.d.ts.map +0 -1
  477. package/dest/worker/node/start_node_module.js +0 -31
  478. package/dest/worker/wasm_worker.d.ts +0 -9
  479. package/dest/worker/wasm_worker.d.ts.map +0 -1
  480. package/dest/worker/wasm_worker.js +0 -3
  481. package/dest/worker/worker_pool.d.ts +0 -40
  482. package/dest/worker/worker_pool.d.ts.map +0 -1
  483. package/dest/worker/worker_pool.js +0 -51
  484. package/src/crypto/pedersen/pedersen.elliptic.ts +0 -584
  485. package/src/log/debug.ts +0 -104
  486. package/src/log/log_history.ts +0 -44
  487. package/src/transport/browser/index.ts +0 -4
  488. package/src/transport/browser/message_port_socket.ts +0 -48
  489. package/src/transport/browser/shared_worker_connector.ts +0 -21
  490. package/src/transport/browser/shared_worker_listener.ts +0 -53
  491. package/src/transport/browser/worker_connector.ts +0 -30
  492. package/src/transport/browser/worker_listener.ts +0 -54
  493. package/src/wasm/README.md +0 -6
  494. package/src/wasm/empty_wasi_sdk.ts +0 -166
  495. package/src/wasm/fixtures/gcd.wasm +0 -0
  496. package/src/wasm/fixtures/gcd.wat +0 -27
  497. package/src/wasm/index.ts +0 -1
  498. package/src/wasm/wasm_module.ts +0 -260
  499. package/src/worker/browser/index.ts +0 -2
  500. package/src/worker/browser/start_web_module.ts +0 -24
  501. package/src/worker/browser/web_data_store.ts +0 -38
  502. package/src/worker/browser/web_worker.ts +0 -25
  503. package/src/worker/data_store.ts +0 -19
  504. package/src/worker/index.ts +0 -2
  505. package/src/worker/node/index.ts +0 -2
  506. package/src/worker/node/node_data_store.ts +0 -27
  507. package/src/worker/node/node_worker.ts +0 -23
  508. package/src/worker/node/start_node_module.ts +0 -30
  509. package/src/worker/wasm_worker.ts +0 -7
  510. package/src/worker/worker_pool.ts +0 -73
@@ -8,9 +8,7 @@ const log = createLogger('json-rpc:json_rpc_client');
8
8
 
9
9
  export type JsonRpcFetch = (
10
10
  host: string,
11
- rpcMethod: string,
12
11
  body: any,
13
- useApiEndpoints: boolean,
14
12
  extraHeaders?: Record<string, string>,
15
13
  noRetry?: boolean,
16
14
  ) => Promise<{ response: any; headers: { get: (header: string) => string | null | undefined } }>;
@@ -27,45 +25,35 @@ export type JsonRpcFetch = (
27
25
  */
28
26
  export async function defaultFetch(
29
27
  host: string,
30
- rpcMethod: string,
31
- body: any,
32
- useApiEndpoints: boolean,
28
+ body: unknown,
33
29
  extraHeaders: Record<string, string> = {},
34
30
  noRetry = false,
35
31
  ): Promise<{ response: any; headers: { get: (header: string) => string | null | undefined } }> {
36
- log.debug(format(`JsonRpcClient.fetch`, host, rpcMethod, '->', body));
32
+ log.debug(format(`JsonRpcClient.fetch`, host, '->', body));
37
33
  let resp: Response;
38
34
  try {
39
- if (useApiEndpoints) {
40
- resp = await fetch(`${host}/${rpcMethod}`, {
41
- method: 'POST',
42
- body: jsonStringify(body),
43
- headers: { 'content-type': 'application/json', ...extraHeaders },
44
- });
45
- } else {
46
- resp = await fetch(host, {
47
- method: 'POST',
48
- body: jsonStringify({ ...body, method: rpcMethod }),
49
- headers: { 'content-type': 'application/json', ...extraHeaders },
50
- });
51
- }
35
+ resp = await fetch(host, {
36
+ method: 'POST',
37
+ body: jsonStringify(body),
38
+ headers: { 'content-type': 'application/json', ...extraHeaders },
39
+ });
52
40
  } catch (err) {
53
- const errorMessage = `Error fetching from host ${host} with method ${rpcMethod}: ${inspect(err)}`;
41
+ const errorMessage = `Error fetching from host ${host}: ${inspect(err)}`;
54
42
  throw new Error(errorMessage);
55
43
  }
56
44
 
57
45
  let responseJson;
58
46
  try {
59
47
  responseJson = await resp.json();
60
- } catch (err) {
48
+ } catch {
61
49
  if (!resp.ok) {
62
50
  throw new Error(resp.statusText);
63
51
  }
64
- throw new Error(`Failed to parse body as JSON: ${resp.text()}`);
52
+ throw new Error(`Failed to parse body as JSON: ${await resp.text()}`);
65
53
  }
66
54
 
67
55
  if (!resp.ok) {
68
- const errorMessage = `Error ${resp.status} from server ${host} on ${rpcMethod}: ${responseJson.error.message}`;
56
+ const errorMessage = `Error ${resp.status} from server ${host}: ${responseJson.error.message}`;
69
57
  if (noRetry || (resp.status >= 400 && resp.status < 500)) {
70
58
  throw new NoRetryError(errorMessage);
71
59
  } else {
@@ -84,17 +72,10 @@ export async function defaultFetch(
84
72
  * @returns A fetch function.
85
73
  */
86
74
  export function makeFetch(retries: number[], defaultNoRetry: boolean, log?: Logger): typeof defaultFetch {
87
- return async (
88
- host: string,
89
- rpcMethod: string,
90
- body: any,
91
- useApiEndpoints: boolean,
92
- extraHeaders: Record<string, string> = {},
93
- noRetry?: boolean,
94
- ) => {
75
+ return async (host: string, body: unknown, extraHeaders: Record<string, string> = {}, noRetry?: boolean) => {
95
76
  return await retry(
96
- () => defaultFetch(host, rpcMethod, body, useApiEndpoints, extraHeaders, noRetry ?? defaultNoRetry),
97
- `JsonRpcClient request ${rpcMethod} to ${host}`,
77
+ () => defaultFetch(host, body, extraHeaders, noRetry ?? defaultNoRetry),
78
+ `JsonRpcClient request to ${host}`,
98
79
  makeBackoff(retries),
99
80
  log,
100
81
  false,
@@ -1,27 +1,67 @@
1
1
  import { format } from 'util';
2
2
 
3
3
  import { type Logger, createLogger } from '../../log/pino-logger.js';
4
+ import { type PromiseWithResolvers, promiseWithResolvers } from '../../promise/utils.js';
4
5
  import { type ApiSchema, type ApiSchemaFor, schemaHasMethod } from '../../schemas/api.js';
6
+ import { jsonStringify } from '../convert.js';
5
7
  import { type JsonRpcFetch, defaultFetch } from './fetch.js';
6
8
 
9
+ // batch window of 0 would capture all requests in the current sync iteration of the event loop
10
+ // and send them all at once in a single batch
11
+ // minimal latency
12
+ const DEFAULT_BATCH_WINDOW_MS = 0;
13
+
14
+ // the maximum size of a batched request
15
+ const DEFAULT_MAX_BATCH_SIZE = 100;
16
+
17
+ // 10 mb
18
+ const DEFAULT_MAX_REQUESTY_BODY_SIZE = 10 * 1024 * 1024;
19
+
7
20
  export type SafeJsonRpcClientOptions = {
8
- useApiEndpoints?: boolean;
9
21
  namespaceMethods?: string | false;
10
22
  fetch?: JsonRpcFetch;
11
23
  log?: Logger;
24
+ batchWindowMS?: number;
25
+ maxBatchSize?: number;
26
+ maxRequestBodySize?: number;
12
27
  onResponse?: (res: {
13
28
  response: any;
14
29
  headers: { get: (header: string) => string | null | undefined };
15
30
  }) => Promise<void>;
16
31
  };
17
32
 
33
+ type JsonRpcRequest = {
34
+ jsonrpc: '2.0';
35
+ id?: number;
36
+ method: string;
37
+ params?: Array<any>;
38
+ };
39
+
40
+ type JsonRpcResponse =
41
+ | {
42
+ jsonrpc: '2.0';
43
+ id?: number;
44
+ result: any;
45
+ }
46
+ | {
47
+ jsonrpc: '2.0';
48
+ id?: number;
49
+ error: { code: number; data?: any; message: string };
50
+ };
51
+
52
+ // expose helpful information on the RPC clients such that we can recognize them later
53
+ const SEND_BATCH = Symbol('JsonRpcClient.sendBatch');
54
+ const CLIENT_ID = Symbol('JsonRpcClient.clientId');
55
+
56
+ let nextClientId = 1;
57
+ // keep a reference to clients so that we can force send a batch
58
+ const clients = new Map<number, WeakRef<{ [SEND_BATCH]: () => Promise<void> }>>();
59
+
18
60
  /**
19
61
  * Creates a Proxy object that delegates over RPC and validates outputs against a given schema.
20
62
  * The server is expected to be a JsonRpcServer.
21
63
  * @param host - The host URL.
22
64
  * @param schema - The api schema to validate returned data against.
23
- * @param useApiEndpoints - Whether to use the API endpoints or the default RPC endpoint.
24
- * @param namespaceMethods - String value (or false/empty) to namespace all methods sent to the server. e.g. 'getInfo' -\> 'pxe_getInfo'
25
65
  * @param fetch - The fetch implementation to use.
26
66
  */
27
67
  export function createSafeJsonRpcClient<T extends object>(
@@ -31,25 +71,164 @@ export function createSafeJsonRpcClient<T extends object>(
31
71
  ): T {
32
72
  const fetch = config.fetch ?? defaultFetch;
33
73
  const log = config.log ?? createLogger('json-rpc:client');
34
- const { useApiEndpoints = false, namespaceMethods = false } = config;
74
+ const {
75
+ namespaceMethods = false,
76
+ batchWindowMS = DEFAULT_BATCH_WINDOW_MS,
77
+ maxBatchSize = DEFAULT_MAX_BATCH_SIZE,
78
+ maxRequestBodySize = DEFAULT_MAX_REQUESTY_BODY_SIZE,
79
+ } = config;
35
80
 
36
81
  let id = 0;
82
+ let sendBatchTimeoutHandle: NodeJS.Timeout | undefined;
83
+ const queue: Array<{
84
+ request: JsonRpcRequest;
85
+ deferred: PromiseWithResolvers<JsonRpcResponse>;
86
+ encodedLength: number;
87
+ }> = [];
88
+
89
+ const sendBatch = async (): Promise<void> => {
90
+ if (sendBatchTimeoutHandle !== undefined) {
91
+ clearTimeout(sendBatchTimeoutHandle);
92
+ sendBatchTimeoutHandle = undefined;
93
+ }
94
+
95
+ const rpcCalls: typeof queue = [];
96
+ let bodySize = 0;
97
+
98
+ while (queue.length > 0 && rpcCalls.length < maxBatchSize && bodySize < maxRequestBodySize) {
99
+ const item = queue[0];
100
+ if (!item) {
101
+ break;
102
+ }
103
+
104
+ const tmpBodySize = bodySize + item.encodedLength;
105
+ if (tmpBodySize >= maxRequestBodySize) {
106
+ break;
107
+ }
108
+
109
+ bodySize = tmpBodySize;
110
+ queue.shift();
111
+ rpcCalls.push(item);
112
+ }
113
+
114
+ // no-op
115
+ if (rpcCalls.length === 0) {
116
+ return;
117
+ }
118
+
119
+ // schedule another call if there are more items to send
120
+ if (queue.length > 0) {
121
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
122
+ sendBatchTimeoutHandle = setTimeout(sendBatch, batchWindowMS);
123
+ }
124
+
125
+ log.debug(`Executing JSON-RPC batch of size: ${rpcCalls.length} body size: ${bodySize} bytes`, {
126
+ methods: rpcCalls.map(({ request }) => request.method),
127
+ });
128
+ try {
129
+ const { response, headers } = await fetch(
130
+ host,
131
+ rpcCalls.map(({ request }) => request),
132
+ );
133
+
134
+ if (config.onResponse) {
135
+ await config.onResponse({ response, headers });
136
+ }
137
+
138
+ if (!Array.isArray(response) || response.length !== rpcCalls.length) {
139
+ log.warn(
140
+ `Invalid response received from JSON-RPC server. Expected array of responses of length ${rpcCalls.length}`,
141
+ { response },
142
+ );
143
+ for (let i = 0; i < rpcCalls.length; i++) {
144
+ const { request, deferred } = rpcCalls[i];
145
+ deferred.resolve({
146
+ id: request.id,
147
+ jsonrpc: '2.0',
148
+ error: {
149
+ code: -32000,
150
+ data: response,
151
+ message: response.message ?? 'Failed request',
152
+ },
153
+ });
154
+ }
155
+ } else {
156
+ for (let i = 0; i < response.length; i++) {
157
+ const resp: JsonRpcResponse = response[i];
158
+ const { request, deferred } = rpcCalls[i];
159
+
160
+ if (resp.id !== request.id) {
161
+ log.warn(`Invalid response received at index ${i} from JSON-RPC server: id mismatch`, {
162
+ requestMethod: request.method,
163
+ requestId: request.id,
164
+ responseId: resp.id,
165
+ });
166
+ deferred.resolve({
167
+ id: request.id,
168
+ jsonrpc: '2.0',
169
+ error: {
170
+ code: -32001,
171
+ data: resp,
172
+ message: 'RPC id mismatch',
173
+ },
174
+ });
175
+ } else {
176
+ deferred.resolve(resp);
177
+ }
178
+ }
179
+ }
180
+ } catch (err) {
181
+ // Re-throw ComponentsVersionsError immediately without converting to JSON-RPC error
182
+ // This ensures version mismatch errors are surfaced to the user instead of being hidden
183
+ if (err && typeof err === 'object' && 'name' in err && err.name === 'ComponentsVersionsError') {
184
+ // Reject all pending requests with the version error
185
+ for (let i = 0; i < rpcCalls.length; i++) {
186
+ rpcCalls[i].deferred.reject(err);
187
+ }
188
+ return; // Return early, the promises are already rejected
189
+ }
190
+ log.warn(`Failed to fetch from the remote server`, err);
191
+ for (let i = 0; i < rpcCalls.length; i++) {
192
+ const { request, deferred } = rpcCalls[i];
193
+ deferred.resolve({
194
+ id: request.id,
195
+ jsonrpc: '2.0',
196
+ error: {
197
+ code: -32000,
198
+ data: err,
199
+ message: (err as any).message ?? 'Failed request',
200
+ },
201
+ });
202
+ }
203
+ }
204
+ };
205
+
37
206
  const request = async (methodName: string, params: any[]): Promise<any> => {
38
207
  if (!schemaHasMethod(schema, methodName)) {
39
208
  throw new Error(`Unspecified method ${methodName} in client schema`);
40
209
  }
41
210
  const method = namespaceMethods ? `${namespaceMethods}_${methodName}` : methodName;
42
- const body = { jsonrpc: '2.0', id: id++, method, params };
211
+ const body: JsonRpcRequest = { jsonrpc: '2.0', id: id++, method, params };
212
+
213
+ const deferred = promiseWithResolvers<JsonRpcResponse>();
214
+ const encodedLength = jsonStringify(body).length;
215
+ if (encodedLength >= maxRequestBodySize) {
216
+ throw new Error(`Request body too large: ${encodedLength}`);
217
+ }
218
+
219
+ queue.push({ request: body, deferred, encodedLength });
220
+
221
+ if (sendBatchTimeoutHandle === undefined) {
222
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
223
+ sendBatchTimeoutHandle = setTimeout(sendBatch, batchWindowMS);
224
+ }
43
225
 
44
226
  log.debug(format(`request`, method, params));
45
- const { response, headers } = await fetch(host, method, body, useApiEndpoints);
227
+ const response = await deferred.promise;
46
228
  log.debug(format(`result`, method, response));
47
229
 
48
- if (config.onResponse) {
49
- await config.onResponse({ response, headers });
50
- }
51
- if (response.error) {
52
- throw response.error;
230
+ if ('error' in response) {
231
+ throw new Error(response.error.message, { cause: response.error });
53
232
  }
54
233
  // TODO(palla/schemas): Find a better way to handle null responses (JSON.stringify(null) is string "null").
55
234
  if ([null, undefined, 'null', 'undefined'].includes(response.result)) {
@@ -58,10 +237,44 @@ export function createSafeJsonRpcClient<T extends object>(
58
237
  return (schema as ApiSchema)[methodName].returnType().parseAsync(response.result);
59
238
  };
60
239
 
61
- const proxy: any = {};
240
+ const clientId = nextClientId++;
241
+ const proxy: any = { [CLIENT_ID]: clientId, [SEND_BATCH]: sendBatch };
62
242
  for (const method of Object.keys(schema)) {
63
- proxy[method] = (...params: any[]) => request(method, params);
243
+ // attach the clientId to the promise so that if we want to trigger a batch immediately, we can do that
244
+ proxy[method] = (...params: any[]) => Object.assign(request(method, params), { [CLIENT_ID]: clientId });
64
245
  }
65
246
 
247
+ clients.set(clientId, new WeakRef(proxy));
248
+
66
249
  return proxy as T;
67
250
  }
251
+
252
+ /**
253
+ * Triggers a batch to be sent immediately
254
+ */
255
+ export async function batch<T extends readonly unknown[]>(
256
+ values: T,
257
+ ): Promise<{ -readonly [P in keyof T]: Awaited<T[P]> }> {
258
+ const clientIdsSeen = new Set<number>();
259
+
260
+ await Promise.allSettled(
261
+ values.map(val => {
262
+ if (typeof val === 'object' && val && Object.hasOwn(val, CLIENT_ID)) {
263
+ const clientId = (val as { [CLIENT_ID]: any })[CLIENT_ID];
264
+ if (typeof clientId === 'number') {
265
+ if (clientIdsSeen.has(clientId)) {
266
+ return;
267
+ }
268
+
269
+ clientIdsSeen.add(clientId);
270
+ const client = clients.get(clientId)?.deref();
271
+ if (client) {
272
+ return client[SEND_BATCH]();
273
+ }
274
+ }
275
+ }
276
+ }),
277
+ );
278
+
279
+ return Promise.all(values);
280
+ }
@@ -10,21 +10,14 @@ const log = createLogger('json-rpc:json_rpc_client:undici');
10
10
  export { Agent };
11
11
 
12
12
  export function makeUndiciFetch(client = new Agent()): JsonRpcFetch {
13
- return async (
14
- host: string,
15
- rpcMethod: string,
16
- body: any,
17
- useApiEndpoints: boolean,
18
- extraHeaders: Record<string, string> = {},
19
- noRetry = false,
20
- ) => {
21
- log.trace(`JsonRpcClient.fetch: ${host} ${rpcMethod}`, { host, rpcMethod, body });
22
- let resp: Dispatcher.ResponseData<string>;
13
+ return async (host: string, body: unknown, extraHeaders: Record<string, string> = {}, noRetry = false) => {
14
+ log.trace(`JsonRpcClient.fetch: ${host}`, { host, body });
15
+ let resp: Dispatcher.ResponseData;
23
16
  try {
24
- resp = await client.request<string>({
17
+ resp = await client.request({
25
18
  method: 'POST',
26
19
  origin: new URL(host),
27
- path: useApiEndpoints ? rpcMethod : '/',
20
+ path: '/',
28
21
  body: jsonStringify(body),
29
22
  headers: {
30
23
  ...extraHeaders,
@@ -32,7 +25,7 @@ export function makeUndiciFetch(client = new Agent()): JsonRpcFetch {
32
25
  },
33
26
  });
34
27
  } catch (err) {
35
- const errorMessage = `Error fetching from host ${host} with method ${rpcMethod}: ${String(err)}`;
28
+ const errorMessage = `Error fetching from host ${host}: ${String(err)}`;
36
29
  throw new Error(errorMessage);
37
30
  }
38
31
 
@@ -40,7 +33,7 @@ export function makeUndiciFetch(client = new Agent()): JsonRpcFetch {
40
33
  const responseOk = resp.statusCode >= 200 && resp.statusCode <= 299;
41
34
  try {
42
35
  responseJson = await resp.body.json();
43
- } catch (err) {
36
+ } catch {
44
37
  if (!responseOk) {
45
38
  throw new Error('HTTP ' + resp.statusCode);
46
39
  }
@@ -48,7 +41,7 @@ export function makeUndiciFetch(client = new Agent()): JsonRpcFetch {
48
41
  }
49
42
 
50
43
  if (!responseOk) {
51
- const errorMessage = `Error ${resp.statusCode} response from server ${host} on ${rpcMethod}: ${responseJson.error.message}`;
44
+ const errorMessage = `Error ${resp.statusCode} response from server ${host}: ${responseJson}`;
52
45
  if (noRetry || (resp.statusCode >= 400 && resp.statusCode < 500)) {
53
46
  throw new NoRetryError(errorMessage);
54
47
  } else {
@@ -8,16 +8,7 @@ import type { ZodFor } from '../schemas/types.js';
8
8
  * @param schema - Zod schema.
9
9
  * @returns Result of parsing json with schema.
10
10
  */
11
- export function jsonParseWithSchema<T>(json: string, schema: ZodFor<T>): Promise<T> {
12
- return schema.parseAsync(JSON.parse(json));
13
- }
14
- /**
15
- * Parses a json string and then feeds it to a zod schema.
16
- * @param json - JSON string.
17
- * @param schema - Zod schema.
18
- * @returns Result of parsing json with schema.
19
- */
20
- export function jsonParseWithSchemaSync<T>(json: string, schema: ZodFor<T>): T {
11
+ export function jsonParseWithSchema<T>(json: string, schema: ZodFor<T>): T {
21
12
  return schema.parse(JSON.parse(json));
22
13
  }
23
14
 
@@ -26,7 +17,7 @@ export function jsonParseWithSchemaSync<T>(json: string, schema: ZodFor<T>): T {
26
17
  * @param obj - The object to be stringified.
27
18
  * @returns The resulting string.
28
19
  */
29
- export function jsonStringify(obj: object, prettify?: boolean): string {
20
+ export function jsonStringify(obj: unknown, prettify?: boolean): string {
30
21
  return JSON.stringify(
31
22
  obj,
32
23
  (_key, value) => {
@@ -55,7 +46,7 @@ export function jsonStringify(obj: object, prettify?: boolean): string {
55
46
  export function tryJsonStringify(obj: any, prettify?: boolean): string | undefined {
56
47
  try {
57
48
  return jsonStringify(obj, prettify);
58
- } catch (e) {
49
+ } catch {
59
50
  return undefined;
60
51
  }
61
52
  }
@@ -0,0 +1,6 @@
1
+ export class BadRequestError extends Error {
2
+ constructor(message: string) {
3
+ super(message);
4
+ this.name = 'BadRequestError';
5
+ }
6
+ }
@@ -2,7 +2,10 @@
2
2
  * Test class for testing string converter.
3
3
  */
4
4
  export class ToStringClass {
5
- constructor(/** A value */ public readonly x: string, /** Another value */ public readonly y: string) {}
5
+ constructor(
6
+ /** A value */ public readonly x: string,
7
+ /** Another value */ public readonly y: string,
8
+ ) {}
6
9
 
7
10
  toString(): string {
8
11
  return [this.x, this.y].join('-');
@@ -2,7 +2,10 @@
2
2
  * Test class for testing string converter.
3
3
  */
4
4
  export class ToStringClass {
5
- constructor(/** A value */ public readonly x: string, /** Another value */ public readonly y: string) {}
5
+ constructor(
6
+ /** A value */ public readonly x: string,
7
+ /** Another value */ public readonly y: string,
8
+ ) {}
6
9
 
7
10
  toString(): string {
8
11
  return [this.x, this.y].join('-');
@@ -1 +1,2 @@
1
- export { jsonStringify, jsonParseWithSchema, jsonParseWithSchemaSync, tryJsonStringify } from './convert.js';
1
+ export { jsonStringify, jsonParseWithSchema, tryJsonStringify } from './convert.js';
2
+ export { BadRequestError } from './errors.js';