@aztec-labs/foundation 6.0.0-nightly.20260829

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 (805) hide show
  1. package/README.md +1 -0
  2. package/dest/array/array.d.ts +68 -0
  3. package/dest/array/array.d.ts.map +1 -0
  4. package/dest/array/array.js +100 -0
  5. package/dest/array/index.d.ts +3 -0
  6. package/dest/array/index.d.ts.map +1 -0
  7. package/dest/array/index.js +2 -0
  8. package/dest/array/sorted_array.d.ts +15 -0
  9. package/dest/array/sorted_array.d.ts.map +1 -0
  10. package/dest/array/sorted_array.js +109 -0
  11. package/dest/async-map/index.d.ts +13 -0
  12. package/dest/async-map/index.d.ts.map +1 -0
  13. package/dest/async-map/index.js +17 -0
  14. package/dest/async-pool/index.d.ts +3 -0
  15. package/dest/async-pool/index.d.ts.map +1 -0
  16. package/dest/async-pool/index.js +48 -0
  17. package/dest/bigint/index.d.ts +7 -0
  18. package/dest/bigint/index.d.ts.map +1 -0
  19. package/dest/bigint/index.js +15 -0
  20. package/dest/bigint-buffer/index.d.ts +40 -0
  21. package/dest/bigint-buffer/index.d.ts.map +1 -0
  22. package/dest/bigint-buffer/index.js +81 -0
  23. package/dest/branded-types/block_number.d.ts +56 -0
  24. package/dest/branded-types/block_number.d.ts.map +1 -0
  25. package/dest/branded-types/block_number.js +89 -0
  26. package/dest/branded-types/buffer32_hash.d.ts +27 -0
  27. package/dest/branded-types/buffer32_hash.d.ts.map +1 -0
  28. package/dest/branded-types/buffer32_hash.js +12 -0
  29. package/dest/branded-types/checkpoint_number.d.ts +60 -0
  30. package/dest/branded-types/checkpoint_number.d.ts.map +1 -0
  31. package/dest/branded-types/checkpoint_number.js +88 -0
  32. package/dest/branded-types/epoch.d.ts +42 -0
  33. package/dest/branded-types/epoch.d.ts.map +1 -0
  34. package/dest/branded-types/epoch.js +59 -0
  35. package/dest/branded-types/index.d.ts +8 -0
  36. package/dest/branded-types/index.d.ts.map +1 -0
  37. package/dest/branded-types/index.js +6 -0
  38. package/dest/branded-types/index_within_checkpoint.d.ts +42 -0
  39. package/dest/branded-types/index_within_checkpoint.d.ts.map +1 -0
  40. package/dest/branded-types/index_within_checkpoint.js +59 -0
  41. package/dest/branded-types/slot.d.ts +45 -0
  42. package/dest/branded-types/slot.d.ts.map +1 -0
  43. package/dest/branded-types/slot.js +62 -0
  44. package/dest/branded-types/types.d.ts +5 -0
  45. package/dest/branded-types/types.d.ts.map +1 -0
  46. package/dest/branded-types/types.js +1 -0
  47. package/dest/buffer/buffer16.d.ts +82 -0
  48. package/dest/buffer/buffer16.d.ts.map +1 -0
  49. package/dest/buffer/buffer16.js +102 -0
  50. package/dest/buffer/buffer32.d.ts +54 -0
  51. package/dest/buffer/buffer32.d.ts.map +1 -0
  52. package/dest/buffer/buffer32.js +83 -0
  53. package/dest/buffer/index.d.ts +4 -0
  54. package/dest/buffer/index.d.ts.map +1 -0
  55. package/dest/buffer/index.js +3 -0
  56. package/dest/buffer/utils.d.ts +3 -0
  57. package/dest/buffer/utils.d.ts.map +1 -0
  58. package/dest/buffer/utils.js +7 -0
  59. package/dest/collection/array.d.ts +135 -0
  60. package/dest/collection/array.d.ts.map +1 -0
  61. package/dest/collection/array.js +302 -0
  62. package/dest/collection/index.d.ts +5 -0
  63. package/dest/collection/index.d.ts.map +1 -0
  64. package/dest/collection/index.js +4 -0
  65. package/dest/collection/lru_map.d.ts +41 -0
  66. package/dest/collection/lru_map.d.ts.map +1 -0
  67. package/dest/collection/lru_map.js +119 -0
  68. package/dest/collection/lru_set.d.ts +35 -0
  69. package/dest/collection/lru_set.d.ts.map +1 -0
  70. package/dest/collection/lru_set.js +95 -0
  71. package/dest/collection/object.d.ts +30 -0
  72. package/dest/collection/object.d.ts.map +1 -0
  73. package/dest/collection/object.js +57 -0
  74. package/dest/committable/committable.d.ts +28 -0
  75. package/dest/committable/committable.d.ts.map +1 -0
  76. package/dest/committable/committable.js +36 -0
  77. package/dest/committable/index.d.ts +2 -0
  78. package/dest/committable/index.d.ts.map +1 -0
  79. package/dest/committable/index.js +1 -0
  80. package/dest/config/env_var.d.ts +2 -0
  81. package/dest/config/env_var.d.ts.map +1 -0
  82. package/dest/config/env_var.js +1 -0
  83. package/dest/config/index.d.ts +154 -0
  84. package/dest/config/index.d.ts.map +1 -0
  85. package/dest/config/index.js +272 -0
  86. package/dest/config/network_config.d.ts +28 -0
  87. package/dest/config/network_config.d.ts.map +1 -0
  88. package/dest/config/network_config.js +14 -0
  89. package/dest/config/network_name.d.ts +3 -0
  90. package/dest/config/network_name.d.ts.map +1 -0
  91. package/dest/config/network_name.js +19 -0
  92. package/dest/config/parse-env.d.ts +3 -0
  93. package/dest/config/parse-env.d.ts.map +1 -0
  94. package/dest/config/parse-env.js +7 -0
  95. package/dest/config/secret_value.d.ts +28 -0
  96. package/dest/config/secret_value.d.ts.map +1 -0
  97. package/dest/config/secret_value.js +36 -0
  98. package/dest/crypto/aes128/index.d.ts +33 -0
  99. package/dest/crypto/aes128/index.d.ts.map +1 -0
  100. package/dest/crypto/aes128/index.js +71 -0
  101. package/dest/crypto/bls/bn254_keystore.d.ts +129 -0
  102. package/dest/crypto/bls/bn254_keystore.d.ts.map +1 -0
  103. package/dest/crypto/bls/bn254_keystore.js +206 -0
  104. package/dest/crypto/bls/index.d.ts +13 -0
  105. package/dest/crypto/bls/index.d.ts.map +1 -0
  106. package/dest/crypto/bls/index.js +87 -0
  107. package/dest/crypto/bn254/index.d.ts +39 -0
  108. package/dest/crypto/bn254/index.d.ts.map +1 -0
  109. package/dest/crypto/bn254/index.js +56 -0
  110. package/dest/crypto/ecdsa/index.d.ts +39 -0
  111. package/dest/crypto/ecdsa/index.d.ts.map +1 -0
  112. package/dest/crypto/ecdsa/index.js +102 -0
  113. package/dest/crypto/ecdsa/signature.d.ts +69 -0
  114. package/dest/crypto/ecdsa/signature.d.ts.map +1 -0
  115. package/dest/crypto/ecdsa/signature.js +92 -0
  116. package/dest/crypto/grumpkin/index.d.ts +42 -0
  117. package/dest/crypto/grumpkin/index.d.ts.map +1 -0
  118. package/dest/crypto/grumpkin/index.js +160 -0
  119. package/dest/crypto/keccak/index.d.ts +26 -0
  120. package/dest/crypto/keccak/index.d.ts.map +1 -0
  121. package/dest/crypto/keccak/index.js +248 -0
  122. package/dest/crypto/keys/index.d.ts +4 -0
  123. package/dest/crypto/keys/index.d.ts.map +1 -0
  124. package/dest/crypto/keys/index.js +34 -0
  125. package/dest/crypto/pedersen/index.d.ts +2 -0
  126. package/dest/crypto/pedersen/index.d.ts.map +1 -0
  127. package/dest/crypto/pedersen/index.js +1 -0
  128. package/dest/crypto/pedersen/pedersen.noble.d.ts +9 -0
  129. package/dest/crypto/pedersen/pedersen.noble.d.ts.map +1 -0
  130. package/dest/crypto/pedersen/pedersen.noble.js +558 -0
  131. package/dest/crypto/pedersen/pedersen.wasm.d.ts +19 -0
  132. package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -0
  133. package/dest/crypto/pedersen/pedersen.wasm.js +51 -0
  134. package/dest/crypto/poseidon/index.d.ts +23 -0
  135. package/dest/crypto/poseidon/index.d.ts.map +1 -0
  136. package/dest/crypto/poseidon/index.js +71 -0
  137. package/dest/crypto/random/index.d.ts +23 -0
  138. package/dest/crypto/random/index.d.ts.map +1 -0
  139. package/dest/crypto/random/index.js +38 -0
  140. package/dest/crypto/random/randomness_singleton.d.ts +24 -0
  141. package/dest/crypto/random/randomness_singleton.d.ts.map +1 -0
  142. package/dest/crypto/random/randomness_singleton.js +55 -0
  143. package/dest/crypto/schnorr/index.d.ts +32 -0
  144. package/dest/crypto/schnorr/index.d.ts.map +1 -0
  145. package/dest/crypto/schnorr/index.js +60 -0
  146. package/dest/crypto/schnorr/signature.d.ts +48 -0
  147. package/dest/crypto/schnorr/signature.d.ts.map +1 -0
  148. package/dest/crypto/schnorr/signature.js +77 -0
  149. package/dest/crypto/secp256k1/index.d.ts +30 -0
  150. package/dest/crypto/secp256k1/index.d.ts.map +1 -0
  151. package/dest/crypto/secp256k1/index.js +121 -0
  152. package/dest/crypto/secp256k1-signer/index.d.ts +3 -0
  153. package/dest/crypto/secp256k1-signer/index.d.ts.map +1 -0
  154. package/dest/crypto/secp256k1-signer/index.js +2 -0
  155. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts +24 -0
  156. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts.map +1 -0
  157. package/dest/crypto/secp256k1-signer/secp256k1_signer.js +30 -0
  158. package/dest/crypto/secp256k1-signer/utils.d.ts +102 -0
  159. package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -0
  160. package/dest/crypto/secp256k1-signer/utils.js +196 -0
  161. package/dest/crypto/sha256/index.d.ts +37 -0
  162. package/dest/crypto/sha256/index.d.ts.map +1 -0
  163. package/dest/crypto/sha256/index.js +208 -0
  164. package/dest/crypto/sha512/index.d.ts +9 -0
  165. package/dest/crypto/sha512/index.d.ts.map +1 -0
  166. package/dest/crypto/sha512/index.js +12 -0
  167. package/dest/crypto/signature/index.d.ts +17 -0
  168. package/dest/crypto/signature/index.d.ts.map +1 -0
  169. package/dest/crypto/signature/index.js +3 -0
  170. package/dest/crypto/sync/index.d.ts +3 -0
  171. package/dest/crypto/sync/index.d.ts.map +1 -0
  172. package/dest/crypto/sync/index.js +4 -0
  173. package/dest/crypto/sync/pedersen/index.d.ts +19 -0
  174. package/dest/crypto/sync/pedersen/index.d.ts.map +1 -0
  175. package/dest/crypto/sync/pedersen/index.js +45 -0
  176. package/dest/crypto/sync/poseidon/index.d.ts +23 -0
  177. package/dest/crypto/sync/poseidon/index.d.ts.map +1 -0
  178. package/dest/crypto/sync/poseidon/index.js +60 -0
  179. package/dest/curves/bls12/field.d.ts +148 -0
  180. package/dest/curves/bls12/field.d.ts.map +1 -0
  181. package/dest/curves/bls12/field.js +357 -0
  182. package/dest/curves/bls12/index.d.ts +3 -0
  183. package/dest/curves/bls12/index.d.ts.map +1 -0
  184. package/dest/curves/bls12/index.js +2 -0
  185. package/dest/curves/bls12/point.d.ts +229 -0
  186. package/dest/curves/bls12/point.d.ts.map +1 -0
  187. package/dest/curves/bls12/point.js +400 -0
  188. package/dest/curves/bn254/field.d.ts +185 -0
  189. package/dest/curves/bn254/field.d.ts.map +1 -0
  190. package/dest/curves/bn254/field.js +420 -0
  191. package/dest/curves/bn254/index.d.ts +3 -0
  192. package/dest/curves/bn254/index.d.ts.map +1 -0
  193. package/dest/curves/bn254/index.js +2 -0
  194. package/dest/curves/bn254/point.d.ts +54 -0
  195. package/dest/curves/bn254/point.d.ts.map +1 -0
  196. package/dest/curves/bn254/point.js +143 -0
  197. package/dest/curves/grumpkin/index.d.ts +10 -0
  198. package/dest/curves/grumpkin/index.d.ts.map +1 -0
  199. package/dest/curves/grumpkin/index.js +3 -0
  200. package/dest/curves/grumpkin/point.d.ts +168 -0
  201. package/dest/curves/grumpkin/point.d.ts.map +1 -0
  202. package/dest/curves/grumpkin/point.js +263 -0
  203. package/dest/decorators/index.d.ts +2 -0
  204. package/dest/decorators/index.d.ts.map +1 -0
  205. package/dest/decorators/index.js +1 -0
  206. package/dest/decorators/memoize.d.ts +2 -0
  207. package/dest/decorators/memoize.d.ts.map +1 -0
  208. package/dest/decorators/memoize.js +11 -0
  209. package/dest/error/index.d.ts +21 -0
  210. package/dest/error/index.d.ts.map +1 -0
  211. package/dest/error/index.js +17 -0
  212. package/dest/eth-address/index.d.ts +143 -0
  213. package/dest/eth-address/index.d.ts.map +1 -0
  214. package/dest/eth-address/index.js +224 -0
  215. package/dest/eth-signature/eth_signature.d.ts +65 -0
  216. package/dest/eth-signature/eth_signature.d.ts.map +1 -0
  217. package/dest/eth-signature/eth_signature.js +110 -0
  218. package/dest/eth-signature/index.d.ts +2 -0
  219. package/dest/eth-signature/index.d.ts.map +1 -0
  220. package/dest/eth-signature/index.js +1 -0
  221. package/dest/fifo/fifo_frame_reader.d.ts +41 -0
  222. package/dest/fifo/fifo_frame_reader.d.ts.map +1 -0
  223. package/dest/fifo/fifo_frame_reader.js +91 -0
  224. package/dest/fifo/index.d.ts +2 -0
  225. package/dest/fifo/index.d.ts.map +1 -0
  226. package/dest/fifo/index.js +1 -0
  227. package/dest/fifo_set/fifo_set.d.ts +15 -0
  228. package/dest/fifo_set/fifo_set.d.ts.map +1 -0
  229. package/dest/fifo_set/fifo_set.js +39 -0
  230. package/dest/fifo_set/index.d.ts +2 -0
  231. package/dest/fifo_set/index.d.ts.map +1 -0
  232. package/dest/fifo_set/index.js +1 -0
  233. package/dest/fs/index.d.ts +3 -0
  234. package/dest/fs/index.d.ts.map +1 -0
  235. package/dest/fs/index.js +2 -0
  236. package/dest/fs/run_in_dir.d.ts +2 -0
  237. package/dest/fs/run_in_dir.d.ts.map +1 -0
  238. package/dest/fs/run_in_dir.js +31 -0
  239. package/dest/fs/try_rm_dir.d.ts +3 -0
  240. package/dest/fs/try_rm_dir.d.ts.map +1 -0
  241. package/dest/fs/try_rm_dir.js +16 -0
  242. package/dest/iterable/all.d.ts +9 -0
  243. package/dest/iterable/all.d.ts.map +1 -0
  244. package/dest/iterable/all.js +18 -0
  245. package/dest/iterable/filter.d.ts +10 -0
  246. package/dest/iterable/filter.d.ts.map +1 -0
  247. package/dest/iterable/filter.js +48 -0
  248. package/dest/iterable/first.d.ts +8 -0
  249. package/dest/iterable/first.d.ts.map +1 -0
  250. package/dest/iterable/first.js +11 -0
  251. package/dest/iterable/index.d.ts +9 -0
  252. package/dest/iterable/index.d.ts.map +1 -0
  253. package/dest/iterable/index.js +8 -0
  254. package/dest/iterable/isAsyncIt.d.ts +7 -0
  255. package/dest/iterable/isAsyncIt.d.ts.map +1 -0
  256. package/dest/iterable/isAsyncIt.js +7 -0
  257. package/dest/iterable/map.d.ts +12 -0
  258. package/dest/iterable/map.d.ts.map +1 -0
  259. package/dest/iterable/map.js +36 -0
  260. package/dest/iterable/peek.d.ts +19 -0
  261. package/dest/iterable/peek.d.ts.map +1 -0
  262. package/dest/iterable/peek.js +33 -0
  263. package/dest/iterable/sort.d.ts +14 -0
  264. package/dest/iterable/sort.d.ts.map +1 -0
  265. package/dest/iterable/sort.js +15 -0
  266. package/dest/iterable/take.d.ts +10 -0
  267. package/dest/iterable/take.d.ts.map +1 -0
  268. package/dest/iterable/take.js +32 -0
  269. package/dest/iterable/toArray.d.ts +2 -0
  270. package/dest/iterable/toArray.d.ts.map +1 -0
  271. package/dest/iterable/toArray.js +7 -0
  272. package/dest/iterator/filter.d.ts +3 -0
  273. package/dest/iterator/filter.d.ts.map +1 -0
  274. package/dest/iterator/filter.js +7 -0
  275. package/dest/iterator/index.d.ts +2 -0
  276. package/dest/iterator/index.d.ts.map +1 -0
  277. package/dest/iterator/index.js +1 -0
  278. package/dest/jest/env.js +48 -0
  279. package/dest/jest/setup.js +34 -0
  280. package/dest/jest/setupAfterEnv.js +3 -0
  281. package/dest/json-rpc/client/fetch.d.ts +37 -0
  282. package/dest/json-rpc/client/fetch.d.ts.map +1 -0
  283. package/dest/json-rpc/client/fetch.js +67 -0
  284. package/dest/json-rpc/client/index.d.ts +3 -0
  285. package/dest/json-rpc/client/index.d.ts.map +1 -0
  286. package/dest/json-rpc/client/index.js +2 -0
  287. package/dest/json-rpc/client/safe_json_rpc_client.d.ts +33 -0
  288. package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -0
  289. package/dest/json-rpc/client/safe_json_rpc_client.js +218 -0
  290. package/dest/json-rpc/client/undici.d.ts +16 -0
  291. package/dest/json-rpc/client/undici.d.ts.map +1 -0
  292. package/dest/json-rpc/client/undici.js +112 -0
  293. package/dest/json-rpc/convert.d.ts +20 -0
  294. package/dest/json-rpc/convert.d.ts.map +1 -0
  295. package/dest/json-rpc/convert.js +40 -0
  296. package/dest/json-rpc/errors.d.ts +4 -0
  297. package/dest/json-rpc/errors.d.ts.map +1 -0
  298. package/dest/json-rpc/errors.js +6 -0
  299. package/dest/json-rpc/fixtures/class_a.d.ts +13 -0
  300. package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -0
  301. package/dest/json-rpc/fixtures/class_a.js +20 -0
  302. package/dest/json-rpc/fixtures/class_b.d.ts +13 -0
  303. package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -0
  304. package/dest/json-rpc/fixtures/class_b.js +20 -0
  305. package/dest/json-rpc/fixtures/test_state.d.ts +85 -0
  306. package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -0
  307. package/dest/json-rpc/fixtures/test_state.js +171 -0
  308. package/dest/json-rpc/index.d.ts +3 -0
  309. package/dest/json-rpc/index.d.ts.map +1 -0
  310. package/dest/json-rpc/index.js +2 -0
  311. package/dest/json-rpc/js_utils.d.ts +13 -0
  312. package/dest/json-rpc/js_utils.d.ts.map +1 -0
  313. package/dest/json-rpc/js_utils.js +16 -0
  314. package/dest/json-rpc/server/api_key_auth.d.ts +19 -0
  315. package/dest/json-rpc/server/api_key_auth.d.ts.map +1 -0
  316. package/dest/json-rpc/server/api_key_auth.js +57 -0
  317. package/dest/json-rpc/server/index.d.ts +3 -0
  318. package/dest/json-rpc/server/index.d.ts.map +1 -0
  319. package/dest/json-rpc/server/index.js +2 -0
  320. package/dest/json-rpc/server/safe_json_rpc_server.d.ts +177 -0
  321. package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -0
  322. package/dest/json-rpc/server/safe_json_rpc_server.js +570 -0
  323. package/dest/json-rpc/test/index.d.ts +2 -0
  324. package/dest/json-rpc/test/index.d.ts.map +1 -0
  325. package/dest/json-rpc/test/index.js +1 -0
  326. package/dest/json-rpc/test/integration.d.ts +14 -0
  327. package/dest/json-rpc/test/integration.d.ts.map +1 -0
  328. package/dest/json-rpc/test/integration.js +21 -0
  329. package/dest/log/aws-logger-config.d.ts +8 -0
  330. package/dest/log/aws-logger-config.d.ts.map +1 -0
  331. package/dest/log/aws-logger-config.js +55 -0
  332. package/dest/log/bigint-utils.d.ts +5 -0
  333. package/dest/log/bigint-utils.d.ts.map +1 -0
  334. package/dest/log/bigint-utils.js +21 -0
  335. package/dest/log/console.d.ts +11 -0
  336. package/dest/log/console.d.ts.map +1 -0
  337. package/dest/log/console.js +36 -0
  338. package/dest/log/gcloud-logger-config.d.ts +13 -0
  339. package/dest/log/gcloud-logger-config.d.ts.map +1 -0
  340. package/dest/log/gcloud-logger-config.js +61 -0
  341. package/dest/log/index.d.ts +7 -0
  342. package/dest/log/index.d.ts.map +1 -0
  343. package/dest/log/index.js +6 -0
  344. package/dest/log/libp2p_logger.d.ts +10 -0
  345. package/dest/log/libp2p_logger.d.ts.map +1 -0
  346. package/dest/log/libp2p_logger.js +76 -0
  347. package/dest/log/log-filters.d.ts +20 -0
  348. package/dest/log/log-filters.d.ts.map +1 -0
  349. package/dest/log/log-filters.js +73 -0
  350. package/dest/log/log-levels.d.ts +3 -0
  351. package/dest/log/log-levels.d.ts.map +1 -0
  352. package/dest/log/log-levels.js +10 -0
  353. package/dest/log/log_fn.d.ts +7 -0
  354. package/dest/log/log_fn.d.ts.map +1 -0
  355. package/dest/log/log_fn.js +1 -0
  356. package/dest/log/noir_debug_log_util.d.ts +14 -0
  357. package/dest/log/noir_debug_log_util.d.ts.map +1 -0
  358. package/dest/log/noir_debug_log_util.js +14 -0
  359. package/dest/log/pino-logger-server.d.ts +9 -0
  360. package/dest/log/pino-logger-server.d.ts.map +1 -0
  361. package/dest/log/pino-logger-server.js +18 -0
  362. package/dest/log/pino-logger.d.ts +86 -0
  363. package/dest/log/pino-logger.d.ts.map +1 -0
  364. package/dest/log/pino-logger.js +347 -0
  365. package/dest/message/index.d.ts +32 -0
  366. package/dest/message/index.d.ts.map +1 -0
  367. package/dest/message/index.js +27 -0
  368. package/dest/mutex/index.d.ts +53 -0
  369. package/dest/mutex/index.d.ts.map +1 -0
  370. package/dest/mutex/index.js +78 -0
  371. package/dest/mutex/mutex_database.d.ts +10 -0
  372. package/dest/mutex/mutex_database.d.ts.map +1 -0
  373. package/dest/mutex/mutex_database.js +4 -0
  374. package/dest/noir/index.d.ts +2 -0
  375. package/dest/noir/index.d.ts.map +1 -0
  376. package/dest/noir/index.js +1 -0
  377. package/dest/noir/noir_package_config.d.ts +44 -0
  378. package/dest/noir/noir_package_config.d.ts.map +1 -0
  379. package/dest/noir/noir_package_config.js +36 -0
  380. package/dest/number/index.d.ts +3 -0
  381. package/dest/number/index.d.ts.map +1 -0
  382. package/dest/number/index.js +12 -0
  383. package/dest/profiler/index.d.ts +2 -0
  384. package/dest/profiler/index.d.ts.map +1 -0
  385. package/dest/profiler/index.js +1 -0
  386. package/dest/profiler/profiler.d.ts +8 -0
  387. package/dest/profiler/profiler.d.ts.map +1 -0
  388. package/dest/profiler/profiler.js +97 -0
  389. package/dest/promise/index.d.ts +3 -0
  390. package/dest/promise/index.d.ts.map +1 -0
  391. package/dest/promise/index.js +2 -0
  392. package/dest/promise/running-promise.d.ts +53 -0
  393. package/dest/promise/running-promise.d.ts.map +1 -0
  394. package/dest/promise/running-promise.js +122 -0
  395. package/dest/promise/utils.d.ts +25 -0
  396. package/dest/promise/utils.d.ts.map +1 -0
  397. package/dest/promise/utils.js +40 -0
  398. package/dest/queue/base_memory_queue.d.ts +65 -0
  399. package/dest/queue/base_memory_queue.d.ts.map +1 -0
  400. package/dest/queue/base_memory_queue.js +116 -0
  401. package/dest/queue/batch_queue.d.ts +47 -0
  402. package/dest/queue/batch_queue.d.ts.map +1 -0
  403. package/dest/queue/batch_queue.js +106 -0
  404. package/dest/queue/bounded_serial_queue.d.ts +56 -0
  405. package/dest/queue/bounded_serial_queue.d.ts.map +1 -0
  406. package/dest/queue/bounded_serial_queue.js +84 -0
  407. package/dest/queue/fifo_memory_queue.d.ts +21 -0
  408. package/dest/queue/fifo_memory_queue.d.ts.map +1 -0
  409. package/dest/queue/fifo_memory_queue.js +29 -0
  410. package/dest/queue/index.d.ts +7 -0
  411. package/dest/queue/index.d.ts.map +1 -0
  412. package/dest/queue/index.js +6 -0
  413. package/dest/queue/priority_memory_queue.d.ts +13 -0
  414. package/dest/queue/priority_memory_queue.d.ts.map +1 -0
  415. package/dest/queue/priority_memory_queue.js +16 -0
  416. package/dest/queue/priority_queue.d.ts +14 -0
  417. package/dest/queue/priority_queue.d.ts.map +1 -0
  418. package/dest/queue/priority_queue.js +29 -0
  419. package/dest/queue/semaphore.d.ts +27 -0
  420. package/dest/queue/semaphore.d.ts.map +1 -0
  421. package/dest/queue/semaphore.js +26 -0
  422. package/dest/queue/serial_queue.d.ts +49 -0
  423. package/dest/queue/serial_queue.d.ts.map +1 -0
  424. package/dest/queue/serial_queue.js +74 -0
  425. package/dest/retry/index.d.ts +83 -0
  426. package/dest/retry/index.d.ts.map +1 -0
  427. package/dest/retry/index.js +146 -0
  428. package/dest/running-promise/index.d.ts +2 -0
  429. package/dest/running-promise/index.d.ts.map +1 -0
  430. package/dest/running-promise/index.js +1 -0
  431. package/dest/schemas/api.d.ts +23 -0
  432. package/dest/schemas/api.d.ts.map +1 -0
  433. package/dest/schemas/api.js +9 -0
  434. package/dest/schemas/index.d.ts +6 -0
  435. package/dest/schemas/index.d.ts.map +1 -0
  436. package/dest/schemas/index.js +5 -0
  437. package/dest/schemas/parse.d.ts +9 -0
  438. package/dest/schemas/parse.d.ts.map +1 -0
  439. package/dest/schemas/parse.js +23 -0
  440. package/dest/schemas/schemas.d.ts +46 -0
  441. package/dest/schemas/schemas.d.ts.map +1 -0
  442. package/dest/schemas/schemas.js +56 -0
  443. package/dest/schemas/types.d.ts +33 -0
  444. package/dest/schemas/types.d.ts.map +1 -0
  445. package/dest/schemas/types.js +25 -0
  446. package/dest/schemas/utils.d.ts +47 -0
  447. package/dest/schemas/utils.d.ts.map +1 -0
  448. package/dest/schemas/utils.js +54 -0
  449. package/dest/serialize/buffer_reader.d.ts +274 -0
  450. package/dest/serialize/buffer_reader.d.ts.map +1 -0
  451. package/dest/serialize/buffer_reader.js +359 -0
  452. package/dest/serialize/buffer_sink.d.ts +134 -0
  453. package/dest/serialize/buffer_sink.d.ts.map +1 -0
  454. package/dest/serialize/buffer_sink.js +297 -0
  455. package/dest/serialize/field_reader.d.ts +121 -0
  456. package/dest/serialize/field_reader.d.ts.map +1 -0
  457. package/dest/serialize/field_reader.js +164 -0
  458. package/dest/serialize/free_funcs.d.ts +107 -0
  459. package/dest/serialize/free_funcs.d.ts.map +1 -0
  460. package/dest/serialize/free_funcs.js +183 -0
  461. package/dest/serialize/index.d.ts +8 -0
  462. package/dest/serialize/index.d.ts.map +1 -0
  463. package/dest/serialize/index.js +7 -0
  464. package/dest/serialize/serialize.d.ts +168 -0
  465. package/dest/serialize/serialize.d.ts.map +1 -0
  466. package/dest/serialize/serialize.js +258 -0
  467. package/dest/serialize/type_registry.d.ts +23 -0
  468. package/dest/serialize/type_registry.d.ts.map +1 -0
  469. package/dest/serialize/type_registry.js +61 -0
  470. package/dest/serialize/types.d.ts +33 -0
  471. package/dest/serialize/types.d.ts.map +1 -0
  472. package/dest/serialize/types.js +21 -0
  473. package/dest/sleep/index.d.ts +54 -0
  474. package/dest/sleep/index.d.ts.map +1 -0
  475. package/dest/sleep/index.js +80 -0
  476. package/dest/string/index.d.ts +18 -0
  477. package/dest/string/index.d.ts.map +1 -0
  478. package/dest/string/index.js +62 -0
  479. package/dest/testing/files/index.d.ts +20 -0
  480. package/dest/testing/files/index.d.ts.map +1 -0
  481. package/dest/testing/files/index.js +59 -0
  482. package/dest/testing/formatting.d.ts +4 -0
  483. package/dest/testing/formatting.d.ts.map +1 -0
  484. package/dest/testing/formatting.js +3 -0
  485. package/dest/testing/index.d.ts +5 -0
  486. package/dest/testing/index.d.ts.map +1 -0
  487. package/dest/testing/index.js +4 -0
  488. package/dest/testing/port_allocator.d.ts +10 -0
  489. package/dest/testing/port_allocator.d.ts.map +1 -0
  490. package/dest/testing/port_allocator.js +29 -0
  491. package/dest/testing/snapshot_serializer.d.ts +5 -0
  492. package/dest/testing/snapshot_serializer.d.ts.map +1 -0
  493. package/dest/testing/snapshot_serializer.js +32 -0
  494. package/dest/testing/test_data.d.ts +7 -0
  495. package/dest/testing/test_data.d.ts.map +1 -0
  496. package/dest/testing/test_data.js +29 -0
  497. package/dest/timer/date.d.ts +39 -0
  498. package/dest/timer/date.d.ts.map +1 -0
  499. package/dest/timer/date.js +62 -0
  500. package/dest/timer/elapsed.d.ts +13 -0
  501. package/dest/timer/elapsed.d.ts.map +1 -0
  502. package/dest/timer/elapsed.js +25 -0
  503. package/dest/timer/index.d.ts +5 -0
  504. package/dest/timer/index.d.ts.map +1 -0
  505. package/dest/timer/index.js +4 -0
  506. package/dest/timer/timeout.d.ts +56 -0
  507. package/dest/timer/timeout.d.ts.map +1 -0
  508. package/dest/timer/timeout.js +113 -0
  509. package/dest/timer/timer.d.ts +37 -0
  510. package/dest/timer/timer.d.ts.map +1 -0
  511. package/dest/timer/timer.js +40 -0
  512. package/dest/transport/dispatch/create_dispatch_proxy.d.ts +111 -0
  513. package/dest/transport/dispatch/create_dispatch_proxy.d.ts.map +1 -0
  514. package/dest/transport/dispatch/create_dispatch_proxy.js +59 -0
  515. package/dest/transport/dispatch/messages.d.ts +52 -0
  516. package/dest/transport/dispatch/messages.d.ts.map +1 -0
  517. package/dest/transport/dispatch/messages.js +13 -0
  518. package/dest/transport/index.d.ts +10 -0
  519. package/dest/transport/index.d.ts.map +1 -0
  520. package/dest/transport/index.js +9 -0
  521. package/dest/transport/interface/connector.d.ts +8 -0
  522. package/dest/transport/interface/connector.d.ts.map +1 -0
  523. package/dest/transport/interface/connector.js +3 -0
  524. package/dest/transport/interface/listener.d.ts +12 -0
  525. package/dest/transport/interface/listener.d.ts.map +1 -0
  526. package/dest/transport/interface/listener.js +4 -0
  527. package/dest/transport/interface/socket.d.ts +13 -0
  528. package/dest/transport/interface/socket.d.ts.map +1 -0
  529. package/dest/transport/interface/socket.js +7 -0
  530. package/dest/transport/interface/transferable.d.ts +68 -0
  531. package/dest/transport/interface/transferable.d.ts.map +1 -0
  532. package/dest/transport/interface/transferable.js +63 -0
  533. package/dest/transport/node/index.d.ts +3 -0
  534. package/dest/transport/node/index.d.ts.map +1 -0
  535. package/dest/transport/node/index.js +2 -0
  536. package/dest/transport/node/node_connector.d.ts +27 -0
  537. package/dest/transport/node/node_connector.d.ts.map +1 -0
  538. package/dest/transport/node/node_connector.js +26 -0
  539. package/dest/transport/node/node_connector_socket.d.ts +41 -0
  540. package/dest/transport/node/node_connector_socket.d.ts.map +1 -0
  541. package/dest/transport/node/node_connector_socket.js +44 -0
  542. package/dest/transport/node/node_listener.d.ts +25 -0
  543. package/dest/transport/node/node_listener.d.ts.map +1 -0
  544. package/dest/transport/node/node_listener.js +26 -0
  545. package/dest/transport/node/node_listener_socket.d.ts +36 -0
  546. package/dest/transport/node/node_listener_socket.d.ts.map +1 -0
  547. package/dest/transport/node/node_listener_socket.js +40 -0
  548. package/dest/transport/transport_client.d.ts +60 -0
  549. package/dest/transport/transport_client.d.ts.map +1 -0
  550. package/dest/transport/transport_client.js +96 -0
  551. package/dest/transport/transport_server.d.ts +47 -0
  552. package/dest/transport/transport_server.d.ts.map +1 -0
  553. package/dest/transport/transport_server.js +114 -0
  554. package/dest/trees/balanced_merkle_tree_root.d.ts +16 -0
  555. package/dest/trees/balanced_merkle_tree_root.d.ts.map +1 -0
  556. package/dest/trees/balanced_merkle_tree_root.js +50 -0
  557. package/dest/trees/hasher.d.ts +40 -0
  558. package/dest/trees/hasher.d.ts.map +1 -0
  559. package/dest/trees/hasher.js +10 -0
  560. package/dest/trees/index.d.ts +13 -0
  561. package/dest/trees/index.d.ts.map +1 -0
  562. package/dest/trees/index.js +12 -0
  563. package/dest/trees/indexed_merkle_tree.d.ts +11 -0
  564. package/dest/trees/indexed_merkle_tree.d.ts.map +1 -0
  565. package/dest/trees/indexed_merkle_tree.js +27 -0
  566. package/dest/trees/indexed_merkle_tree_calculator.d.ts +21 -0
  567. package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -0
  568. package/dest/trees/indexed_merkle_tree_calculator.js +87 -0
  569. package/dest/trees/indexed_tree_leaf.d.ts +55 -0
  570. package/dest/trees/indexed_tree_leaf.d.ts.map +1 -0
  571. package/dest/trees/indexed_tree_leaf.js +5 -0
  572. package/dest/trees/membership_witness.d.ts +63 -0
  573. package/dest/trees/membership_witness.d.ts.map +1 -0
  574. package/dest/trees/membership_witness.js +83 -0
  575. package/dest/trees/merkle_tree.d.ts +16 -0
  576. package/dest/trees/merkle_tree.d.ts.map +1 -0
  577. package/dest/trees/merkle_tree.js +58 -0
  578. package/dest/trees/merkle_tree_calculator.d.ts +16 -0
  579. package/dest/trees/merkle_tree_calculator.d.ts.map +1 -0
  580. package/dest/trees/merkle_tree_calculator.js +57 -0
  581. package/dest/trees/sibling_path.d.ts +96 -0
  582. package/dest/trees/sibling_path.d.ts.map +1 -0
  583. package/dest/trees/sibling_path.js +139 -0
  584. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts +48 -0
  585. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts.map +1 -0
  586. package/dest/trees/unbalanced_merkle_tree_calculator.js +154 -0
  587. package/dest/trees/unbalanced_merkle_tree_root.d.ts +27 -0
  588. package/dest/trees/unbalanced_merkle_tree_root.d.ts.map +1 -0
  589. package/dest/trees/unbalanced_merkle_tree_root.js +83 -0
  590. package/dest/trees/unbalanced_tree_store.d.ts +24 -0
  591. package/dest/trees/unbalanced_tree_store.d.ts.map +1 -0
  592. package/dest/trees/unbalanced_tree_store.js +148 -0
  593. package/dest/types/index.d.ts +68 -0
  594. package/dest/types/index.d.ts.map +1 -0
  595. package/dest/types/index.js +24 -0
  596. package/dest/url/index.d.ts +9 -0
  597. package/dest/url/index.d.ts.map +1 -0
  598. package/dest/url/index.js +62 -0
  599. package/dest/validation/index.d.ts +9 -0
  600. package/dest/validation/index.d.ts.map +1 -0
  601. package/dest/validation/index.js +15 -0
  602. package/package.json +213 -0
  603. package/src/array/array.ts +147 -0
  604. package/src/array/index.ts +2 -0
  605. package/src/array/sorted_array.ts +138 -0
  606. package/src/async-map/index.ts +18 -0
  607. package/src/async-pool/index.ts +51 -0
  608. package/src/bigint/index.ts +20 -0
  609. package/src/bigint-buffer/index.ts +92 -0
  610. package/src/branded-types/block_number.ts +135 -0
  611. package/src/branded-types/buffer32_hash.ts +38 -0
  612. package/src/branded-types/checkpoint_number.ts +130 -0
  613. package/src/branded-types/epoch.ts +88 -0
  614. package/src/branded-types/index.ts +8 -0
  615. package/src/branded-types/index_within_checkpoint.ts +88 -0
  616. package/src/branded-types/slot.ts +93 -0
  617. package/src/branded-types/types.ts +2 -0
  618. package/src/buffer/buffer16.ts +135 -0
  619. package/src/buffer/buffer32.ts +116 -0
  620. package/src/buffer/index.ts +3 -0
  621. package/src/buffer/utils.ts +8 -0
  622. package/src/collection/array.ts +351 -0
  623. package/src/collection/index.ts +4 -0
  624. package/src/collection/lru_map.ts +143 -0
  625. package/src/collection/lru_set.ts +115 -0
  626. package/src/collection/object.ts +89 -0
  627. package/src/committable/committable.ts +46 -0
  628. package/src/committable/index.ts +1 -0
  629. package/src/config/env_var.ts +412 -0
  630. package/src/config/index.ts +419 -0
  631. package/src/config/network_config.ts +21 -0
  632. package/src/config/network_name.ts +28 -0
  633. package/src/config/parse-env.ts +4 -0
  634. package/src/config/secret_value.ts +49 -0
  635. package/src/crypto/aes128/index.ts +77 -0
  636. package/src/crypto/bls/bn254_keystore.ts +276 -0
  637. package/src/crypto/bls/index.ts +76 -0
  638. package/src/crypto/bn254/index.ts +64 -0
  639. package/src/crypto/ecdsa/index.ts +88 -0
  640. package/src/crypto/ecdsa/signature.ts +100 -0
  641. package/src/crypto/grumpkin/index.ts +90 -0
  642. package/src/crypto/keccak/index.ts +283 -0
  643. package/src/crypto/keys/index.ts +26 -0
  644. package/src/crypto/pedersen/index.ts +1 -0
  645. package/src/crypto/pedersen/pedersen.noble.ts +573 -0
  646. package/src/crypto/pedersen/pedersen.wasm.ts +52 -0
  647. package/src/crypto/poseidon/index.ts +83 -0
  648. package/src/crypto/random/index.ts +47 -0
  649. package/src/crypto/random/randomness_singleton.ts +64 -0
  650. package/src/crypto/schnorr/index.ts +61 -0
  651. package/src/crypto/schnorr/signature.ts +87 -0
  652. package/src/crypto/secp256k1/index.ts +61 -0
  653. package/src/crypto/secp256k1-signer/index.ts +2 -0
  654. package/src/crypto/secp256k1-signer/secp256k1_signer.ts +38 -0
  655. package/src/crypto/secp256k1-signer/utils.ts +244 -0
  656. package/src/crypto/sha256/index.ts +194 -0
  657. package/src/crypto/sha512/index.ts +16 -0
  658. package/src/crypto/signature/index.ts +17 -0
  659. package/src/crypto/sync/index.ts +6 -0
  660. package/src/crypto/sync/pedersen/index.ts +46 -0
  661. package/src/crypto/sync/poseidon/index.ts +72 -0
  662. package/src/curves/bls12/field.ts +456 -0
  663. package/src/curves/bls12/index.ts +2 -0
  664. package/src/curves/bls12/point.ts +450 -0
  665. package/src/curves/bn254/field.ts +531 -0
  666. package/src/curves/bn254/index.ts +2 -0
  667. package/src/curves/bn254/point.ts +170 -0
  668. package/src/curves/grumpkin/index.ts +11 -0
  669. package/src/curves/grumpkin/point.ts +300 -0
  670. package/src/decorators/index.ts +1 -0
  671. package/src/decorators/memoize.ts +11 -0
  672. package/src/error/index.ts +22 -0
  673. package/src/eth-address/index.ts +269 -0
  674. package/src/eth-signature/eth_signature.ts +155 -0
  675. package/src/eth-signature/index.ts +1 -0
  676. package/src/fifo/fifo_frame_reader.ts +113 -0
  677. package/src/fifo/index.ts +1 -0
  678. package/src/fifo_set/fifo_set.ts +52 -0
  679. package/src/fifo_set/index.ts +1 -0
  680. package/src/fs/index.ts +2 -0
  681. package/src/fs/run_in_dir.ts +33 -0
  682. package/src/fs/try_rm_dir.ts +15 -0
  683. package/src/iterable/all.ts +32 -0
  684. package/src/iterable/filter.ts +77 -0
  685. package/src/iterable/first.ts +14 -0
  686. package/src/iterable/index.ts +8 -0
  687. package/src/iterable/isAsyncIt.ts +8 -0
  688. package/src/iterable/map.ts +66 -0
  689. package/src/iterable/peek.ts +58 -0
  690. package/src/iterable/sort.ts +39 -0
  691. package/src/iterable/take.ts +54 -0
  692. package/src/iterable/toArray.ts +9 -0
  693. package/src/iterator/filter.ts +11 -0
  694. package/src/iterator/index.ts +1 -0
  695. package/src/jest/env.mjs +52 -0
  696. package/src/jest/setup.mjs +38 -0
  697. package/src/jest/setupAfterEnv.mjs +3 -0
  698. package/src/json-rpc/README.md +55 -0
  699. package/src/json-rpc/client/fetch.ts +98 -0
  700. package/src/json-rpc/client/index.ts +2 -0
  701. package/src/json-rpc/client/safe_json_rpc_client.ts +283 -0
  702. package/src/json-rpc/client/undici.ts +128 -0
  703. package/src/json-rpc/convert.ts +52 -0
  704. package/src/json-rpc/errors.ts +6 -0
  705. package/src/json-rpc/fixtures/class_a.ts +18 -0
  706. package/src/json-rpc/fixtures/class_b.ts +18 -0
  707. package/src/json-rpc/fixtures/test_state.ts +143 -0
  708. package/src/json-rpc/index.ts +2 -0
  709. package/src/json-rpc/js_utils.ts +21 -0
  710. package/src/json-rpc/server/api_key_auth.ts +63 -0
  711. package/src/json-rpc/server/index.ts +2 -0
  712. package/src/json-rpc/server/safe_json_rpc_server.ts +626 -0
  713. package/src/json-rpc/test/index.ts +1 -0
  714. package/src/json-rpc/test/integration.ts +35 -0
  715. package/src/log/aws-logger-config.ts +32 -0
  716. package/src/log/bigint-utils.ts +25 -0
  717. package/src/log/console.ts +42 -0
  718. package/src/log/gcloud-logger-config.ts +72 -0
  719. package/src/log/index.ts +6 -0
  720. package/src/log/libp2p_logger.ts +93 -0
  721. package/src/log/log-filters.ts +81 -0
  722. package/src/log/log-levels.ts +3 -0
  723. package/src/log/log_fn.ts +5 -0
  724. package/src/log/noir_debug_log_util.ts +21 -0
  725. package/src/log/pino-logger-server.ts +25 -0
  726. package/src/log/pino-logger.ts +406 -0
  727. package/src/message/index.ts +47 -0
  728. package/src/mutex/index.ts +84 -0
  729. package/src/mutex/mutex_database.ts +11 -0
  730. package/src/noir/index.ts +1 -0
  731. package/src/noir/noir_package_config.ts +66 -0
  732. package/src/number/index.ts +14 -0
  733. package/src/profiler/index.ts +1 -0
  734. package/src/profiler/profiler.ts +125 -0
  735. package/src/promise/index.ts +2 -0
  736. package/src/promise/running-promise.ts +138 -0
  737. package/src/promise/utils.ts +60 -0
  738. package/src/queue/base_memory_queue.ts +138 -0
  739. package/src/queue/batch_queue.ts +121 -0
  740. package/src/queue/bounded_serial_queue.ts +103 -0
  741. package/src/queue/fifo_memory_queue.ts +39 -0
  742. package/src/queue/index.ts +6 -0
  743. package/src/queue/priority_memory_queue.ts +20 -0
  744. package/src/queue/priority_queue.ts +34 -0
  745. package/src/queue/semaphore.ts +38 -0
  746. package/src/queue/serial_queue.ts +86 -0
  747. package/src/retry/index.ts +185 -0
  748. package/src/running-promise/index.ts +1 -0
  749. package/src/schemas/api.ts +47 -0
  750. package/src/schemas/index.ts +5 -0
  751. package/src/schemas/parse.ts +32 -0
  752. package/src/schemas/schemas.ts +93 -0
  753. package/src/schemas/types.ts +36 -0
  754. package/src/schemas/utils.ts +91 -0
  755. package/src/serialize/buffer_reader.ts +472 -0
  756. package/src/serialize/buffer_sink.ts +350 -0
  757. package/src/serialize/field_reader.ts +208 -0
  758. package/src/serialize/free_funcs.ts +198 -0
  759. package/src/serialize/index.ts +7 -0
  760. package/src/serialize/serialize.ts +320 -0
  761. package/src/serialize/type_registry.ts +75 -0
  762. package/src/serialize/types.ts +40 -0
  763. package/src/sleep/index.ts +90 -0
  764. package/src/string/index.ts +80 -0
  765. package/src/testing/files/index.ts +74 -0
  766. package/src/testing/formatting.ts +3 -0
  767. package/src/testing/index.ts +4 -0
  768. package/src/testing/port_allocator.ts +31 -0
  769. package/src/testing/snapshot_serializer.ts +33 -0
  770. package/src/testing/test_data.ts +36 -0
  771. package/src/timer/date.ts +82 -0
  772. package/src/timer/elapsed.ts +23 -0
  773. package/src/timer/index.ts +4 -0
  774. package/src/timer/timeout.ts +136 -0
  775. package/src/timer/timer.ts +48 -0
  776. package/src/transport/dispatch/create_dispatch_proxy.ts +151 -0
  777. package/src/transport/dispatch/messages.ts +58 -0
  778. package/src/transport/index.ts +9 -0
  779. package/src/transport/interface/connector.ts +8 -0
  780. package/src/transport/interface/listener.ts +15 -0
  781. package/src/transport/interface/socket.ts +14 -0
  782. package/src/transport/interface/transferable.ts +125 -0
  783. package/src/transport/node/index.ts +2 -0
  784. package/src/transport/node/node_connector.ts +30 -0
  785. package/src/transport/node/node_connector_socket.ts +52 -0
  786. package/src/transport/node/node_listener.ts +34 -0
  787. package/src/transport/node/node_listener_socket.ts +48 -0
  788. package/src/transport/transport_client.ts +130 -0
  789. package/src/transport/transport_server.ts +111 -0
  790. package/src/trees/balanced_merkle_tree_root.ts +65 -0
  791. package/src/trees/hasher.ts +51 -0
  792. package/src/trees/index.ts +12 -0
  793. package/src/trees/indexed_merkle_tree.ts +40 -0
  794. package/src/trees/indexed_merkle_tree_calculator.ts +98 -0
  795. package/src/trees/indexed_tree_leaf.ts +56 -0
  796. package/src/trees/membership_witness.ts +112 -0
  797. package/src/trees/merkle_tree.ts +75 -0
  798. package/src/trees/merkle_tree_calculator.ts +66 -0
  799. package/src/trees/sibling_path.ts +177 -0
  800. package/src/trees/unbalanced_merkle_tree_calculator.ts +176 -0
  801. package/src/trees/unbalanced_merkle_tree_root.ts +112 -0
  802. package/src/trees/unbalanced_tree_store.ts +161 -0
  803. package/src/types/index.ts +103 -0
  804. package/src/url/index.ts +72 -0
  805. package/src/validation/index.ts +18 -0
@@ -0,0 +1,54 @@
1
+ import { isAsyncIterable } from './isAsyncIt.js';
2
+
3
+ /**
4
+ * Stop iteration after n items have been received.
5
+ * @param source - An iterable to take n items from.
6
+ * @param limit - The number of items to take from the iterable.
7
+ * @returns A generator, limited to n items.
8
+ */
9
+ function take<T>(source: Iterable<T>, limit: number): Generator<T, void, undefined>;
10
+ function take<T>(source: Iterable<T> | AsyncIterable<T>, limit: number): AsyncGenerator<T, void, undefined>;
11
+ function take<T>(
12
+ source: Iterable<T> | AsyncIterable<T>,
13
+ limit: number,
14
+ ): AsyncGenerator<T, void, undefined> | Generator<T, void, undefined> {
15
+ if (isAsyncIterable(source)) {
16
+ return (async function* () {
17
+ let items = 0;
18
+
19
+ if (limit < 1) {
20
+ return;
21
+ }
22
+
23
+ for await (const entry of source) {
24
+ yield entry;
25
+
26
+ items++;
27
+
28
+ if (items === limit) {
29
+ return;
30
+ }
31
+ }
32
+ })();
33
+ }
34
+
35
+ return (function* () {
36
+ let items = 0;
37
+
38
+ if (limit < 1) {
39
+ return;
40
+ }
41
+
42
+ for (const entry of source) {
43
+ yield entry;
44
+
45
+ items++;
46
+
47
+ if (items === limit) {
48
+ return;
49
+ }
50
+ }
51
+ })();
52
+ }
53
+
54
+ export { take };
@@ -0,0 +1,9 @@
1
+ export async function toArray<T>(
2
+ iterator: Iterable<T> | AsyncIterableIterator<T> | AsyncIterable<T> | IterableIterator<T>,
3
+ ): Promise<T[]> {
4
+ const arr = [];
5
+ for await (const i of iterator) {
6
+ arr.push(i);
7
+ }
8
+ return arr;
9
+ }
@@ -0,0 +1,11 @@
1
+ /** Wraps an async iterable iterator such that it filters values based on a predicate. */
2
+ export async function* filter<T>(
3
+ iterator: AsyncIterableIterator<T>,
4
+ predicate: (item: T) => boolean | Promise<boolean>,
5
+ ): AsyncIterableIterator<T> {
6
+ for await (const item of iterator) {
7
+ if (await predicate(item)) {
8
+ yield item;
9
+ }
10
+ }
11
+ }
@@ -0,0 +1 @@
1
+ export { filter } from './filter.js';
@@ -0,0 +1,52 @@
1
+ import { TestEnvironment } from 'jest-environment-node';
2
+
3
+ // What errors should be ignored in after hooks
4
+ const IgnoredErrors = ['HttpRequestError', 'CodeError'];
5
+
6
+ /** Custom Jest environment that ignores any whitelisted unhandled rejections that occur during `after` hooks */
7
+ export default class CustomEnvironment extends TestEnvironment {
8
+ constructor(config, context) {
9
+ super(config, context);
10
+ }
11
+
12
+ async handleTestEvent(event, state) {
13
+ if (event.name === 'setup') {
14
+ // Jest 29 reports both unhandledRejection and uncaughtException events as plain `error`, without any means to differentiate them
15
+ // (see https://github.com/jestjs/jest/issues/9210). Jest 30 fixes it as part of a larger change (see
16
+ // https://github.com/jestjs/jest/pull/14315/files#diff-9bdc1fdb60c8631b1e346eff6e4899c4e64ae3a44f4f12d0d7ac70c2aabd1d93R12-R29),
17
+ // but we cannot update to 30 as it is still in beta at the time of writing this code. So we remove jest's unhandledRejection listener,
18
+ // replace it with our own, and delegate to the original listener only if the error is not in the ignored list.
19
+ const parentProcess = event.parentProcess;
20
+ const [jestListener] = parentProcess.listeners('unhandledRejection');
21
+ parentProcess.removeAllListeners('unhandledRejection');
22
+ const patchedListener = (err, _promise) => {
23
+ if (state.isInAfterHook && IgnoredErrors.some(error => err && err.name && err.name.includes(error))) {
24
+ // Ignore the error only if it was an unhandled async rejection (not sync exception), it's on the IgnoredErrors list, and we're in an after hook.
25
+ console.error('Ignoring unhandled rejection in after hook:', err);
26
+ } else if (state.isInAfterHook) {
27
+ // Log non-ignored unhandled rejection in an after hook, and pass the error to the original jest listener to fail the test.
28
+ console.error(`Unhandled rejection in after hook:`, err);
29
+ jestListener && jestListener(err);
30
+ } else {
31
+ // Otherwise, just delegate to the original jest listener, to emit the `error` event under the hood.
32
+ jestListener && jestListener(err);
33
+ }
34
+ };
35
+ parentProcess.on('unhandledRejection', patchedListener);
36
+ state.patchedListener = patchedListener;
37
+ } else if (event.name === 'teardown') {
38
+ // Remove the patched handler we added in setup.
39
+ const parentProcess = state.parentProcess;
40
+ parentProcess.removeListener('unhandledRejection', state.patchedListener);
41
+ } else if (event.name === 'hook_start' && event.hook.type.startsWith('after')) {
42
+ // Track that we have entered an after hook.
43
+ state.isInAfterHook = true;
44
+ } else if (
45
+ (event.name === 'hook_success' || event.name === 'hook_failure') &&
46
+ event.hook.type.startsWith('after')
47
+ ) {
48
+ // Reset the flag that we are in an after hook when we exit it.
49
+ state.isInAfterHook = false;
50
+ }
51
+ }
52
+ }
@@ -0,0 +1,38 @@
1
+ import { parseBooleanEnv } from '@aztec-labs/foundation/config';
2
+ import { overwriteLoggingStream, pinoPrettyOpts } from '@aztec-labs/foundation/log';
3
+ import pretty from 'pino-pretty';
4
+
5
+ // Overwrite logging stream with pino-pretty. We define this as a separate
6
+ // file so we don't mess up with dependencies in non-testing environments,
7
+ // since pino-pretty messes up with browser bundles.
8
+ // See also https://www.npmjs.com/package/pino-pretty?activeTab=readme#user-content-usage-with-jest
9
+ if (!parseBooleanEnv(process.env.LOG_JSON)) {
10
+ overwriteLoggingStream(pretty(pinoPrettyOpts));
11
+ }
12
+
13
+ // Prevent timers from keeping the process alive after tests complete.
14
+ // Libraries like viem create internal polling loops (via setTimeout) that
15
+ // reschedule themselves indefinitely. In test environments we never want a
16
+ // timer to be the reason the process can't exit. We also unref stdout/stderr
17
+ // which, when they are pipes (as in Jest workers), remain ref'd by default.
18
+ {
19
+ const origSetTimeout = globalThis.setTimeout;
20
+ const origSetInterval = globalThis.setInterval;
21
+ globalThis.setTimeout = function unrefSetTimeout(...args) {
22
+ const id = origSetTimeout.apply(this, args);
23
+ id?.unref?.();
24
+ return id;
25
+ };
26
+ // Preserve .unref, .__promisify__ etc. that may exist on the original
27
+ Object.setPrototypeOf(globalThis.setTimeout, origSetTimeout);
28
+
29
+ globalThis.setInterval = function unrefSetInterval(...args) {
30
+ const id = origSetInterval.apply(this, args);
31
+ id?.unref?.();
32
+ return id;
33
+ };
34
+ Object.setPrototypeOf(globalThis.setInterval, origSetInterval);
35
+
36
+ if (process.stdout?._handle?.unref) process.stdout._handle.unref();
37
+ if (process.stderr?._handle?.unref) process.stderr._handle.unref();
38
+ }
@@ -0,0 +1,3 @@
1
+ if (Array.isArray(globalThis.__extraEqualityTesters)) {
2
+ expect.addEqualityTesters(globalThis.__extraEqualityTesters);
3
+ }
@@ -0,0 +1,55 @@
1
+ # json-rpc
2
+
3
+ json-rpc
4
+
5
+ ```
6
+ -- src
7
+ -- client
8
+ Code to use by a client wishing to use a json-rpc server
9
+ Includes syntax sugar for making requests with normal method syntax
10
+ -- server
11
+ Code for easily turning a class into an exposed RPC with one endpoint per method
12
+ ```
13
+
14
+ Each createJsonRpcClient and JsonRpcServer call needs a map of classes that will be translated in input and output values.
15
+ By default, Buffer is handled, but other user-made classes need to define toString() and static fromString() like so:
16
+
17
+ ```
18
+ class PublicKey {
19
+ toString() {
20
+ return '...';
21
+ }
22
+ static fromString(str) {
23
+ return new PublicKey(...);
24
+ }
25
+ }
26
+ ```
27
+
28
+ ## Usage
29
+
30
+ In Dapp:
31
+
32
+ ```
33
+ const wallet = createJsonRpcClient<WalletImplementation>('wallet-server.com', /*register classes*/ {PublicKey, TxRequest});
34
+ const response = await wallet.signTxRequest(accountPubKey, txRequest);
35
+ ```
36
+
37
+ The client will send `[{ name: 'PublicKey', value: accountPubKey.toString() }, { name: 'TxRequest', txRequest.toString() }]` to the server.
38
+
39
+ In wallet:
40
+
41
+ ```
42
+ const publicClient = createJsonRpcClient<PublicClient>('public-client.com', /*register classes*/ ...);
43
+ const keyStore = createJsonRpcClient<KeyStore>('key-store.com', /*register classes*/ ...);
44
+ ```
45
+
46
+ Different clients for different services.
47
+
48
+ -- server
49
+ Running a wallet server:
50
+
51
+ ```
52
+ const wallet = new WalletImplementation();
53
+ const server = new JsonRpcServer(wallet, /*register classes*/ ...);
54
+ server.start(8080);
55
+ ```
@@ -0,0 +1,98 @@
1
+ import { format, inspect } from 'util';
2
+
3
+ import { type Logger, createLogger } from '../../log/index.js';
4
+ import { NoRetryError, makeBackoff, retry } from '../../retry/index.js';
5
+ import { jsonStringify } from '../convert.js';
6
+
7
+ const log = createLogger('json-rpc:json_rpc_client');
8
+
9
+ export type JsonRpcFetch = (
10
+ host: string,
11
+ body: any,
12
+ extraHeaders?: Record<string, string>,
13
+ noRetry?: boolean,
14
+ ) => Promise<{ response: any; headers: { get: (header: string) => string | null | undefined } }>;
15
+
16
+ export type JsonRpcFetchConfig = {
17
+ credentials?: RequestCredentials;
18
+ };
19
+
20
+ /**
21
+ * A normal fetch function that does not retry.
22
+ * Alternatives are a fetch function with retries, or a mocked fetch.
23
+ * @param host - The host URL.
24
+ * @param method - The RPC method name.
25
+ * @param body - The RPC payload.
26
+ * @param noRetry - Whether to throw a `NoRetryError` in case the response is a 5xx error and the body contains an error
27
+ * message (see `retry` function for more details).
28
+ * @param config - Fetch transport configuration.
29
+ * @returns The parsed JSON response, or throws an error.
30
+ */
31
+ export async function defaultFetch(
32
+ host: string,
33
+ body: unknown,
34
+ extraHeaders: Record<string, string> = {},
35
+ noRetry = false,
36
+ config: JsonRpcFetchConfig = {},
37
+ ): Promise<{ response: any; headers: { get: (header: string) => string | null | undefined } }> {
38
+ log.debug(format(`JsonRpcClient.fetch`, host, '->', body));
39
+ let resp: Response;
40
+ try {
41
+ resp = await fetch(host, {
42
+ method: 'POST',
43
+ body: jsonStringify(body),
44
+ headers: { 'content-type': 'application/json', ...extraHeaders },
45
+ credentials: config.credentials,
46
+ });
47
+ } catch (err) {
48
+ const errorMessage = `Error fetching from host ${host}: ${inspect(err)}`;
49
+ throw new Error(errorMessage);
50
+ }
51
+
52
+ let responseJson;
53
+ const responseText = await resp.text();
54
+ try {
55
+ responseJson = JSON.parse(responseText);
56
+ } catch {
57
+ if (!resp.ok) {
58
+ throw new Error(resp.statusText);
59
+ }
60
+ throw new Error(`Failed to parse body as JSON: ${responseText}`);
61
+ }
62
+
63
+ if (!resp.ok) {
64
+ const errorMessage = `Error ${resp.status} from server ${host}: ${responseJson?.error?.message ?? JSON.stringify(responseJson)}`;
65
+ if (noRetry || (resp.status >= 400 && resp.status < 500)) {
66
+ throw new NoRetryError(errorMessage);
67
+ } else {
68
+ throw new Error(errorMessage);
69
+ }
70
+ }
71
+
72
+ return { response: responseJson, headers: resp.headers };
73
+ }
74
+
75
+ /**
76
+ * Makes a fetch function that retries based on the given attempts.
77
+ * @param retries - Sequence of intervals (in seconds) to retry.
78
+ * @param noRetry - Whether to stop retries on server errors.
79
+ * @param log - Optional logger for logging attempts.
80
+ * @param config - Fetch transport configuration.
81
+ * @returns A fetch function.
82
+ */
83
+ export function makeFetch(
84
+ retries: number[],
85
+ defaultNoRetry: boolean,
86
+ log?: Logger,
87
+ config: JsonRpcFetchConfig = {},
88
+ ): JsonRpcFetch {
89
+ return async (host: string, body: unknown, extraHeaders: Record<string, string> = {}, noRetry?: boolean) => {
90
+ return await retry(
91
+ () => defaultFetch(host, body, extraHeaders, noRetry ?? defaultNoRetry, config),
92
+ `JsonRpcClient request to ${host}`,
93
+ makeBackoff(retries),
94
+ log,
95
+ false,
96
+ );
97
+ };
98
+ }
@@ -0,0 +1,2 @@
1
+ export * from './safe_json_rpc_client.js';
2
+ export * from './fetch.js';
@@ -0,0 +1,283 @@
1
+ import { format } from 'util';
2
+
3
+ import { type Logger, createLogger } from '../../log/pino-logger.js';
4
+ import { type PromiseWithResolvers, promiseWithResolvers } from '../../promise/utils.js';
5
+ import { type ApiSchema, type ApiSchemaFor, getSchemaReturnType, schemaHasMethod } from '../../schemas/api.js';
6
+ import { jsonStringify } from '../convert.js';
7
+ import { type JsonRpcFetch, defaultFetch } from './fetch.js';
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
+ // 1 mb, matching the JSON-RPC server's default maxBodySizeBytes so the client never assembles a batch the
18
+ // server rejects for exceeding the body limit
19
+ const DEFAULT_MAX_REQUESTY_BODY_SIZE = 1 * 1024 * 1024;
20
+
21
+ export type SafeJsonRpcClientOptions = {
22
+ namespaceMethods?: string | false;
23
+ fetch?: JsonRpcFetch;
24
+ log?: Logger;
25
+ batchWindowMS?: number;
26
+ maxBatchSize?: number;
27
+ maxRequestBodySize?: number;
28
+ extraHeaders?: Record<string, string>;
29
+ onResponse?: (res: {
30
+ response: any;
31
+ headers: { get: (header: string) => string | null | undefined };
32
+ }) => Promise<void>;
33
+ };
34
+
35
+ type JsonRpcRequest = {
36
+ jsonrpc: '2.0';
37
+ id?: number;
38
+ method: string;
39
+ params?: Array<any>;
40
+ };
41
+
42
+ type JsonRpcResponse =
43
+ | {
44
+ jsonrpc: '2.0';
45
+ id?: number;
46
+ result: any;
47
+ }
48
+ | {
49
+ jsonrpc: '2.0';
50
+ id?: number;
51
+ error: { code: number; data?: any; message: string };
52
+ };
53
+
54
+ // expose helpful information on the RPC clients such that we can recognize them later
55
+ const SEND_BATCH = Symbol('JsonRpcClient.sendBatch');
56
+ const CLIENT_ID = Symbol('JsonRpcClient.clientId');
57
+
58
+ let nextClientId = 1;
59
+ // keep a reference to clients so that we can force send a batch
60
+ const clients = new Map<number, WeakRef<{ [SEND_BATCH]: () => Promise<void> }>>();
61
+
62
+ /**
63
+ * Creates a Proxy object that delegates over RPC and validates outputs against a given schema.
64
+ * The server is expected to be a JsonRpcServer.
65
+ * @param host - The host URL.
66
+ * @param schema - The api schema to validate returned data against.
67
+ * @param fetch - The fetch implementation to use.
68
+ */
69
+ export function createSafeJsonRpcClient<T extends object>(
70
+ host: string,
71
+ schema: ApiSchemaFor<T>,
72
+ config: SafeJsonRpcClientOptions = {},
73
+ ): T {
74
+ const fetch = config.fetch ?? defaultFetch;
75
+ const log = config.log ?? createLogger('json-rpc:client');
76
+ const {
77
+ namespaceMethods = false,
78
+ batchWindowMS = DEFAULT_BATCH_WINDOW_MS,
79
+ maxBatchSize = DEFAULT_MAX_BATCH_SIZE,
80
+ maxRequestBodySize = DEFAULT_MAX_REQUESTY_BODY_SIZE,
81
+ } = config;
82
+
83
+ let id = 0;
84
+ let sendBatchTimeoutHandle: NodeJS.Timeout | undefined;
85
+ const queue: Array<{
86
+ request: JsonRpcRequest;
87
+ deferred: PromiseWithResolvers<JsonRpcResponse>;
88
+ encodedLength: number;
89
+ }> = [];
90
+
91
+ const sendBatch = async (): Promise<void> => {
92
+ if (sendBatchTimeoutHandle !== undefined) {
93
+ clearTimeout(sendBatchTimeoutHandle);
94
+ sendBatchTimeoutHandle = undefined;
95
+ }
96
+
97
+ const rpcCalls: typeof queue = [];
98
+ let bodySize = 0;
99
+
100
+ while (queue.length > 0 && rpcCalls.length < maxBatchSize && bodySize < maxRequestBodySize) {
101
+ const item = queue[0];
102
+ if (!item) {
103
+ break;
104
+ }
105
+
106
+ const tmpBodySize = bodySize + item.encodedLength;
107
+ if (tmpBodySize >= maxRequestBodySize) {
108
+ break;
109
+ }
110
+
111
+ bodySize = tmpBodySize;
112
+ queue.shift();
113
+ rpcCalls.push(item);
114
+ }
115
+
116
+ // no-op
117
+ if (rpcCalls.length === 0) {
118
+ return;
119
+ }
120
+
121
+ // schedule another call if there are more items to send
122
+ if (queue.length > 0) {
123
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
124
+ sendBatchTimeoutHandle = setTimeout(sendBatch, batchWindowMS);
125
+ }
126
+
127
+ log.debug(`Executing JSON-RPC batch of size: ${rpcCalls.length} body size: ${bodySize} bytes`, {
128
+ methods: rpcCalls.map(({ request }) => request.method),
129
+ });
130
+ try {
131
+ const { response, headers } = await fetch(
132
+ host,
133
+ rpcCalls.map(({ request }) => request),
134
+ config.extraHeaders,
135
+ );
136
+
137
+ if (config.onResponse) {
138
+ await config.onResponse({ response, headers });
139
+ }
140
+
141
+ if (!Array.isArray(response) || response.length !== rpcCalls.length) {
142
+ log.warn(
143
+ `Invalid response received from JSON-RPC server. Expected array of responses of length ${rpcCalls.length}`,
144
+ { response },
145
+ );
146
+ for (let i = 0; i < rpcCalls.length; i++) {
147
+ const { request, deferred } = rpcCalls[i];
148
+ deferred.resolve({
149
+ id: request.id,
150
+ jsonrpc: '2.0',
151
+ error: {
152
+ code: -32000,
153
+ data: response,
154
+ message: response.message ?? 'Failed request',
155
+ },
156
+ });
157
+ }
158
+ } else {
159
+ for (let i = 0; i < response.length; i++) {
160
+ const resp: JsonRpcResponse = response[i];
161
+ const { request, deferred } = rpcCalls[i];
162
+
163
+ if (resp.id !== request.id) {
164
+ log.warn(`Invalid response received at index ${i} from JSON-RPC server: id mismatch`, {
165
+ requestMethod: request.method,
166
+ requestId: request.id,
167
+ responseId: resp.id,
168
+ });
169
+ deferred.resolve({
170
+ id: request.id,
171
+ jsonrpc: '2.0',
172
+ error: {
173
+ code: -32001,
174
+ data: resp,
175
+ message: 'RPC id mismatch',
176
+ },
177
+ });
178
+ } else {
179
+ deferred.resolve(resp);
180
+ }
181
+ }
182
+ }
183
+ } catch (err) {
184
+ // Re-throw ComponentsVersionsError immediately without converting to JSON-RPC error
185
+ // This ensures version mismatch errors are surfaced to the user instead of being hidden
186
+ if (err && typeof err === 'object' && 'name' in err && err.name === 'ComponentsVersionsError') {
187
+ // Reject all pending requests with the version error
188
+ for (let i = 0; i < rpcCalls.length; i++) {
189
+ rpcCalls[i].deferred.reject(err);
190
+ }
191
+ return; // Return early, the promises are already rejected
192
+ }
193
+ log.warn(`Failed to fetch from the remote server`, err);
194
+ for (let i = 0; i < rpcCalls.length; i++) {
195
+ const { request, deferred } = rpcCalls[i];
196
+ deferred.resolve({
197
+ id: request.id,
198
+ jsonrpc: '2.0',
199
+ error: {
200
+ code: -32000,
201
+ data: err,
202
+ message: (err as any).message ?? 'Failed request',
203
+ },
204
+ });
205
+ }
206
+ }
207
+ };
208
+
209
+ const request = async (methodName: string, params: any[]): Promise<any> => {
210
+ if (!schemaHasMethod(schema, methodName)) {
211
+ throw new Error(`Unspecified method ${methodName} in client schema`);
212
+ }
213
+ const method = namespaceMethods ? `${namespaceMethods}_${methodName}` : methodName;
214
+ const body: JsonRpcRequest = { jsonrpc: '2.0', id: id++, method, params };
215
+
216
+ const deferred = promiseWithResolvers<JsonRpcResponse>();
217
+ const encodedLength = jsonStringify(body).length;
218
+ if (encodedLength >= maxRequestBodySize) {
219
+ throw new Error(`Request body too large: ${encodedLength}`);
220
+ }
221
+
222
+ queue.push({ request: body, deferred, encodedLength });
223
+
224
+ if (sendBatchTimeoutHandle === undefined) {
225
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
226
+ sendBatchTimeoutHandle = setTimeout(sendBatch, batchWindowMS);
227
+ }
228
+
229
+ log.debug(format(`request`, method, params));
230
+ const response = await deferred.promise;
231
+ log.debug(format(`result`, method, response));
232
+
233
+ if ('error' in response) {
234
+ throw new Error(response.error.message, { cause: response.error });
235
+ }
236
+ // TODO(palla/schemas): Find a better way to handle null responses (JSON.stringify(null) is string "null").
237
+ if ([null, undefined, 'null', 'undefined'].includes(response.result)) {
238
+ return;
239
+ }
240
+ return getSchemaReturnType((schema as ApiSchema)[methodName]).parseAsync(response.result);
241
+ };
242
+
243
+ const clientId = nextClientId++;
244
+ const proxy: any = { [CLIENT_ID]: clientId, [SEND_BATCH]: sendBatch };
245
+ for (const method of Object.keys(schema)) {
246
+ // attach the clientId to the promise so that if we want to trigger a batch immediately, we can do that
247
+ proxy[method] = (...params: any[]) => Object.assign(request(method, params), { [CLIENT_ID]: clientId });
248
+ }
249
+
250
+ clients.set(clientId, new WeakRef(proxy));
251
+
252
+ return proxy as T;
253
+ }
254
+
255
+ /**
256
+ * Triggers a batch to be sent immediately
257
+ */
258
+ export async function batch<T extends readonly unknown[]>(
259
+ values: T,
260
+ ): Promise<{ -readonly [P in keyof T]: Awaited<T[P]> }> {
261
+ const clientIdsSeen = new Set<number>();
262
+
263
+ await Promise.allSettled(
264
+ values.map(val => {
265
+ if (typeof val === 'object' && val && Object.hasOwn(val, CLIENT_ID)) {
266
+ const clientId = (val as { [CLIENT_ID]: any })[CLIENT_ID];
267
+ if (typeof clientId === 'number') {
268
+ if (clientIdsSeen.has(clientId)) {
269
+ return;
270
+ }
271
+
272
+ clientIdsSeen.add(clientId);
273
+ const client = clients.get(clientId)?.deref();
274
+ if (client) {
275
+ return client[SEND_BATCH]();
276
+ }
277
+ }
278
+ }
279
+ }),
280
+ );
281
+
282
+ return Promise.all(values);
283
+ }