@aztec/foundation 0.0.0-test.0

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 (736) hide show
  1. package/README.md +1 -0
  2. package/dest/array/array.d.ts +71 -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 +2 -0
  6. package/dest/array/index.d.ts.map +1 -0
  7. package/dest/array/index.js +1 -0
  8. package/dest/async-map/index.d.ts +13 -0
  9. package/dest/async-map/index.d.ts.map +1 -0
  10. package/dest/async-map/index.js +17 -0
  11. package/dest/async-pool/index.d.ts +3 -0
  12. package/dest/async-pool/index.d.ts.map +1 -0
  13. package/dest/async-pool/index.js +47 -0
  14. package/dest/bigint-buffer/index.d.ts +42 -0
  15. package/dest/bigint-buffer/index.d.ts.map +1 -0
  16. package/dest/bigint-buffer/index.js +76 -0
  17. package/dest/buffer/buffer32.d.ts +91 -0
  18. package/dest/buffer/buffer32.d.ts.map +1 -0
  19. package/dest/buffer/buffer32.js +115 -0
  20. package/dest/buffer/index.d.ts +2 -0
  21. package/dest/buffer/index.d.ts.map +1 -0
  22. package/dest/buffer/index.js +1 -0
  23. package/dest/collection/array.d.ts +101 -0
  24. package/dest/collection/array.d.ts.map +1 -0
  25. package/dest/collection/array.js +164 -0
  26. package/dest/collection/index.d.ts +3 -0
  27. package/dest/collection/index.d.ts.map +1 -0
  28. package/dest/collection/index.js +2 -0
  29. package/dest/collection/object.d.ts +14 -0
  30. package/dest/collection/object.d.ts.map +1 -0
  31. package/dest/collection/object.js +32 -0
  32. package/dest/committable/committable.d.ts +28 -0
  33. package/dest/committable/committable.d.ts.map +1 -0
  34. package/dest/committable/committable.js +36 -0
  35. package/dest/committable/index.d.ts +2 -0
  36. package/dest/committable/index.d.ts.map +1 -0
  37. package/dest/committable/index.js +1 -0
  38. package/dest/config/env_var.d.ts +2 -0
  39. package/dest/config/env_var.d.ts.map +1 -0
  40. package/dest/config/env_var.js +1 -0
  41. package/dest/config/index.d.ts +66 -0
  42. package/dest/config/index.d.ts.map +1 -0
  43. package/dest/config/index.js +125 -0
  44. package/dest/crypto/aes128/index.d.ts +34 -0
  45. package/dest/crypto/aes128/index.d.ts.map +1 -0
  46. package/dest/crypto/aes128/index.js +49 -0
  47. package/dest/crypto/ecdsa/index.d.ts +39 -0
  48. package/dest/crypto/ecdsa/index.d.ts.map +1 -0
  49. package/dest/crypto/ecdsa/index.js +88 -0
  50. package/dest/crypto/ecdsa/signature.d.ts +71 -0
  51. package/dest/crypto/ecdsa/signature.d.ts.map +1 -0
  52. package/dest/crypto/ecdsa/signature.js +92 -0
  53. package/dest/crypto/grumpkin/index.d.ts +47 -0
  54. package/dest/crypto/grumpkin/index.d.ts.map +1 -0
  55. package/dest/crypto/grumpkin/index.js +154 -0
  56. package/dest/crypto/index.d.ts +15 -0
  57. package/dest/crypto/index.d.ts.map +1 -0
  58. package/dest/crypto/index.js +14 -0
  59. package/dest/crypto/keccak/index.d.ts +28 -0
  60. package/dest/crypto/keccak/index.d.ts.map +1 -0
  61. package/dest/crypto/keccak/index.js +248 -0
  62. package/dest/crypto/keys/index.d.ts +5 -0
  63. package/dest/crypto/keys/index.d.ts.map +1 -0
  64. package/dest/crypto/keys/index.js +7 -0
  65. package/dest/crypto/pedersen/index.d.ts +2 -0
  66. package/dest/crypto/pedersen/index.d.ts.map +1 -0
  67. package/dest/crypto/pedersen/index.js +1 -0
  68. package/dest/crypto/pedersen/pedersen.elliptic.d.ts +13 -0
  69. package/dest/crypto/pedersen/pedersen.elliptic.d.ts.map +1 -0
  70. package/dest/crypto/pedersen/pedersen.elliptic.js +582 -0
  71. package/dest/crypto/pedersen/pedersen.noble.d.ts +11 -0
  72. package/dest/crypto/pedersen/pedersen.noble.d.ts.map +1 -0
  73. package/dest/crypto/pedersen/pedersen.noble.js +558 -0
  74. package/dest/crypto/pedersen/pedersen.wasm.d.ts +21 -0
  75. package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -0
  76. package/dest/crypto/pedersen/pedersen.wasm.js +41 -0
  77. package/dest/crypto/poseidon/index.d.ts +26 -0
  78. package/dest/crypto/poseidon/index.d.ts.map +1 -0
  79. package/dest/crypto/poseidon/index.js +58 -0
  80. package/dest/crypto/random/index.d.ts +25 -0
  81. package/dest/crypto/random/index.d.ts.map +1 -0
  82. package/dest/crypto/random/index.js +70 -0
  83. package/dest/crypto/random/randomness_singleton.d.ts +25 -0
  84. package/dest/crypto/random/randomness_singleton.d.ts.map +1 -0
  85. package/dest/crypto/random/randomness_singleton.js +55 -0
  86. package/dest/crypto/schnorr/index.d.ts +30 -0
  87. package/dest/crypto/schnorr/index.d.ts.map +1 -0
  88. package/dest/crypto/schnorr/index.js +68 -0
  89. package/dest/crypto/schnorr/signature.d.ts +70 -0
  90. package/dest/crypto/schnorr/signature.d.ts.map +1 -0
  91. package/dest/crypto/schnorr/signature.js +93 -0
  92. package/dest/crypto/secp256k1/index.d.ts +32 -0
  93. package/dest/crypto/secp256k1/index.d.ts.map +1 -0
  94. package/dest/crypto/secp256k1/index.js +116 -0
  95. package/dest/crypto/secp256k1-signer/index.d.ts +3 -0
  96. package/dest/crypto/secp256k1-signer/index.d.ts.map +1 -0
  97. package/dest/crypto/secp256k1-signer/index.js +2 -0
  98. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts +24 -0
  99. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts.map +1 -0
  100. package/dest/crypto/secp256k1-signer/secp256k1_signer.js +30 -0
  101. package/dest/crypto/secp256k1-signer/utils.d.ts +40 -0
  102. package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -0
  103. package/dest/crypto/secp256k1-signer/utils.js +84 -0
  104. package/dest/crypto/serialize.d.ts +53 -0
  105. package/dest/crypto/serialize.d.ts.map +1 -0
  106. package/dest/crypto/serialize.js +68 -0
  107. package/dest/crypto/sha256/index.d.ts +20 -0
  108. package/dest/crypto/sha256/index.d.ts.map +1 -0
  109. package/dest/crypto/sha256/index.js +166 -0
  110. package/dest/crypto/sha512/index.d.ts +11 -0
  111. package/dest/crypto/sha512/index.d.ts.map +1 -0
  112. package/dest/crypto/sha512/index.js +12 -0
  113. package/dest/crypto/signature/index.d.ts +19 -0
  114. package/dest/crypto/signature/index.d.ts.map +1 -0
  115. package/dest/crypto/signature/index.js +3 -0
  116. package/dest/crypto/sync/index.d.ts +3 -0
  117. package/dest/crypto/sync/index.d.ts.map +1 -0
  118. package/dest/crypto/sync/index.js +4 -0
  119. package/dest/crypto/sync/pedersen/index.d.ts +21 -0
  120. package/dest/crypto/sync/pedersen/index.d.ts.map +1 -0
  121. package/dest/crypto/sync/pedersen/index.js +38 -0
  122. package/dest/crypto/sync/poseidon/index.d.ts +26 -0
  123. package/dest/crypto/sync/poseidon/index.d.ts.map +1 -0
  124. package/dest/crypto/sync/poseidon/index.js +53 -0
  125. package/dest/decorators/index.d.ts +2 -0
  126. package/dest/decorators/index.d.ts.map +1 -0
  127. package/dest/decorators/index.js +1 -0
  128. package/dest/decorators/memoize.d.ts +2 -0
  129. package/dest/decorators/memoize.d.ts.map +1 -0
  130. package/dest/decorators/memoize.js +11 -0
  131. package/dest/error/index.d.ts +21 -0
  132. package/dest/error/index.d.ts.map +1 -0
  133. package/dest/error/index.js +17 -0
  134. package/dest/eth-address/index.d.ts +134 -0
  135. package/dest/eth-address/index.d.ts.map +1 -0
  136. package/dest/eth-address/index.js +198 -0
  137. package/dest/eth-signature/eth_signature.d.ts +62 -0
  138. package/dest/eth-signature/eth_signature.d.ts.map +1 -0
  139. package/dest/eth-signature/eth_signature.js +91 -0
  140. package/dest/eth-signature/index.d.ts +2 -0
  141. package/dest/eth-signature/index.d.ts.map +1 -0
  142. package/dest/eth-signature/index.js +1 -0
  143. package/dest/fields/coordinate.d.ts +68 -0
  144. package/dest/fields/coordinate.d.ts.map +1 -0
  145. package/dest/fields/coordinate.js +96 -0
  146. package/dest/fields/fields.d.ts +176 -0
  147. package/dest/fields/fields.d.ts.map +1 -0
  148. package/dest/fields/fields.js +383 -0
  149. package/dest/fields/index.d.ts +4 -0
  150. package/dest/fields/index.d.ts.map +1 -0
  151. package/dest/fields/index.js +3 -0
  152. package/dest/fields/point.d.ts +175 -0
  153. package/dest/fields/point.d.ts.map +1 -0
  154. package/dest/fields/point.js +260 -0
  155. package/dest/fs/index.d.ts +2 -0
  156. package/dest/fs/index.d.ts.map +1 -0
  157. package/dest/fs/index.js +1 -0
  158. package/dest/fs/run_in_dir.d.ts +2 -0
  159. package/dest/fs/run_in_dir.d.ts.map +1 -0
  160. package/dest/fs/run_in_dir.js +31 -0
  161. package/dest/index.d.ts +31 -0
  162. package/dest/index.d.ts.map +1 -0
  163. package/dest/index.js +31 -0
  164. package/dest/iterable/all.d.ts +9 -0
  165. package/dest/iterable/all.d.ts.map +1 -0
  166. package/dest/iterable/all.js +18 -0
  167. package/dest/iterable/filter.d.ts +10 -0
  168. package/dest/iterable/filter.d.ts.map +1 -0
  169. package/dest/iterable/filter.js +48 -0
  170. package/dest/iterable/index.d.ts +8 -0
  171. package/dest/iterable/index.d.ts.map +1 -0
  172. package/dest/iterable/index.js +7 -0
  173. package/dest/iterable/isAsyncIt.d.ts +7 -0
  174. package/dest/iterable/isAsyncIt.d.ts.map +1 -0
  175. package/dest/iterable/isAsyncIt.js +7 -0
  176. package/dest/iterable/map.d.ts +12 -0
  177. package/dest/iterable/map.d.ts.map +1 -0
  178. package/dest/iterable/map.js +36 -0
  179. package/dest/iterable/peek.d.ts +19 -0
  180. package/dest/iterable/peek.d.ts.map +1 -0
  181. package/dest/iterable/peek.js +33 -0
  182. package/dest/iterable/sort.d.ts +14 -0
  183. package/dest/iterable/sort.d.ts.map +1 -0
  184. package/dest/iterable/sort.js +15 -0
  185. package/dest/iterable/take.d.ts +10 -0
  186. package/dest/iterable/take.d.ts.map +1 -0
  187. package/dest/iterable/take.js +32 -0
  188. package/dest/iterable/toArray.d.ts +2 -0
  189. package/dest/iterable/toArray.d.ts.map +1 -0
  190. package/dest/iterable/toArray.js +7 -0
  191. package/dest/jest/setup.js +7 -0
  192. package/dest/json-rpc/client/fetch.d.ts +32 -0
  193. package/dest/json-rpc/client/fetch.d.ts.map +1 -0
  194. package/dest/json-rpc/client/fetch.js +77 -0
  195. package/dest/json-rpc/client/index.d.ts +3 -0
  196. package/dest/json-rpc/client/index.d.ts.map +1 -0
  197. package/dest/json-rpc/client/index.js +2 -0
  198. package/dest/json-rpc/client/safe_json_rpc_client.d.ts +26 -0
  199. package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -0
  200. package/dest/json-rpc/client/safe_json_rpc_client.js +57 -0
  201. package/dest/json-rpc/client/undici.d.ts +5 -0
  202. package/dest/json-rpc/client/undici.d.ts.map +1 -0
  203. package/dest/json-rpc/client/undici.js +63 -0
  204. package/dest/json-rpc/convert.d.ts +27 -0
  205. package/dest/json-rpc/convert.d.ts.map +1 -0
  206. package/dest/json-rpc/convert.js +48 -0
  207. package/dest/json-rpc/fixtures/class_a.d.ts +11 -0
  208. package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -0
  209. package/dest/json-rpc/fixtures/class_a.js +20 -0
  210. package/dest/json-rpc/fixtures/class_b.d.ts +11 -0
  211. package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -0
  212. package/dest/json-rpc/fixtures/class_b.js +20 -0
  213. package/dest/json-rpc/fixtures/test_state.d.ts +89 -0
  214. package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -0
  215. package/dest/json-rpc/fixtures/test_state.js +131 -0
  216. package/dest/json-rpc/index.d.ts +2 -0
  217. package/dest/json-rpc/index.d.ts.map +1 -0
  218. package/dest/json-rpc/index.js +1 -0
  219. package/dest/json-rpc/js_utils.d.ts +13 -0
  220. package/dest/json-rpc/js_utils.d.ts.map +1 -0
  221. package/dest/json-rpc/js_utils.js +16 -0
  222. package/dest/json-rpc/server/index.d.ts +2 -0
  223. package/dest/json-rpc/server/index.d.ts.map +1 -0
  224. package/dest/json-rpc/server/index.js +1 -0
  225. package/dest/json-rpc/server/safe_json_rpc_server.d.ts +140 -0
  226. package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -0
  227. package/dest/json-rpc/server/safe_json_rpc_server.js +346 -0
  228. package/dest/json-rpc/server/telemetry.d.ts +2 -0
  229. package/dest/json-rpc/server/telemetry.d.ts.map +1 -0
  230. package/dest/json-rpc/server/telemetry.js +0 -0
  231. package/dest/json-rpc/test/index.d.ts +2 -0
  232. package/dest/json-rpc/test/index.d.ts.map +1 -0
  233. package/dest/json-rpc/test/index.js +1 -0
  234. package/dest/json-rpc/test/integration.d.ts +15 -0
  235. package/dest/json-rpc/test/integration.d.ts.map +1 -0
  236. package/dest/json-rpc/test/integration.js +21 -0
  237. package/dest/log/console.d.ts +11 -0
  238. package/dest/log/console.d.ts.map +1 -0
  239. package/dest/log/console.js +36 -0
  240. package/dest/log/debug.d.ts +56 -0
  241. package/dest/log/debug.d.ts.map +1 -0
  242. package/dest/log/debug.js +75 -0
  243. package/dest/log/gcloud-logger-config.d.ts +14 -0
  244. package/dest/log/gcloud-logger-config.d.ts.map +1 -0
  245. package/dest/log/gcloud-logger-config.js +66 -0
  246. package/dest/log/index.d.ts +7 -0
  247. package/dest/log/index.d.ts.map +1 -0
  248. package/dest/log/index.js +6 -0
  249. package/dest/log/libp2p_logger.d.ts +7 -0
  250. package/dest/log/libp2p_logger.d.ts.map +1 -0
  251. package/dest/log/libp2p_logger.js +55 -0
  252. package/dest/log/log-filters.d.ts +7 -0
  253. package/dest/log/log-filters.d.ts.map +1 -0
  254. package/dest/log/log-filters.js +59 -0
  255. package/dest/log/log-levels.d.ts +3 -0
  256. package/dest/log/log-levels.d.ts.map +1 -0
  257. package/dest/log/log-levels.js +10 -0
  258. package/dest/log/log_fn.d.ts +7 -0
  259. package/dest/log/log_fn.d.ts.map +1 -0
  260. package/dest/log/log_fn.js +1 -0
  261. package/dest/log/log_history.d.ts +31 -0
  262. package/dest/log/log_history.d.ts.map +1 -0
  263. package/dest/log/log_history.js +38 -0
  264. package/dest/log/pino-logger.d.ts +57 -0
  265. package/dest/log/pino-logger.d.ts.map +1 -0
  266. package/dest/log/pino-logger.js +207 -0
  267. package/dest/message/index.d.ts +32 -0
  268. package/dest/message/index.d.ts.map +1 -0
  269. package/dest/message/index.js +27 -0
  270. package/dest/mutex/index.d.ts +53 -0
  271. package/dest/mutex/index.d.ts.map +1 -0
  272. package/dest/mutex/index.js +78 -0
  273. package/dest/mutex/mutex_database.d.ts +10 -0
  274. package/dest/mutex/mutex_database.d.ts.map +1 -0
  275. package/dest/mutex/mutex_database.js +4 -0
  276. package/dest/noir/index.d.ts +2 -0
  277. package/dest/noir/index.d.ts.map +1 -0
  278. package/dest/noir/index.js +1 -0
  279. package/dest/noir/noir_package_config.d.ts +129 -0
  280. package/dest/noir/noir_package_config.d.ts.map +1 -0
  281. package/dest/noir/noir_package_config.js +36 -0
  282. package/dest/promise/index.d.ts +3 -0
  283. package/dest/promise/index.d.ts.map +1 -0
  284. package/dest/promise/index.js +2 -0
  285. package/dest/promise/running-promise.d.ts +47 -0
  286. package/dest/promise/running-promise.d.ts.map +1 -0
  287. package/dest/promise/running-promise.js +110 -0
  288. package/dest/promise/utils.d.ts +12 -0
  289. package/dest/promise/utils.d.ts.map +1 -0
  290. package/dest/promise/utils.js +20 -0
  291. package/dest/queue/base_memory_queue.d.ts +65 -0
  292. package/dest/queue/base_memory_queue.d.ts.map +1 -0
  293. package/dest/queue/base_memory_queue.js +116 -0
  294. package/dest/queue/batch_queue.d.ts +47 -0
  295. package/dest/queue/batch_queue.d.ts.map +1 -0
  296. package/dest/queue/batch_queue.js +105 -0
  297. package/dest/queue/bounded_serial_queue.d.ts +56 -0
  298. package/dest/queue/bounded_serial_queue.d.ts.map +1 -0
  299. package/dest/queue/bounded_serial_queue.js +84 -0
  300. package/dest/queue/fifo_memory_queue.d.ts +21 -0
  301. package/dest/queue/fifo_memory_queue.d.ts.map +1 -0
  302. package/dest/queue/fifo_memory_queue.js +29 -0
  303. package/dest/queue/index.d.ts +7 -0
  304. package/dest/queue/index.d.ts.map +1 -0
  305. package/dest/queue/index.js +6 -0
  306. package/dest/queue/priority_memory_queue.d.ts +13 -0
  307. package/dest/queue/priority_memory_queue.d.ts.map +1 -0
  308. package/dest/queue/priority_memory_queue.js +16 -0
  309. package/dest/queue/priority_queue.d.ts +14 -0
  310. package/dest/queue/priority_queue.d.ts.map +1 -0
  311. package/dest/queue/priority_queue.js +29 -0
  312. package/dest/queue/semaphore.d.ts +23 -0
  313. package/dest/queue/semaphore.d.ts.map +1 -0
  314. package/dest/queue/semaphore.js +26 -0
  315. package/dest/queue/serial_queue.d.ts +49 -0
  316. package/dest/queue/serial_queue.d.ts.map +1 -0
  317. package/dest/queue/serial_queue.js +72 -0
  318. package/dest/retry/index.d.ts +44 -0
  319. package/dest/retry/index.d.ts.map +1 -0
  320. package/dest/retry/index.js +93 -0
  321. package/dest/running-promise/index.d.ts +2 -0
  322. package/dest/running-promise/index.d.ts.map +1 -0
  323. package/dest/running-promise/index.js +1 -0
  324. package/dest/schemas/api.d.ts +21 -0
  325. package/dest/schemas/api.d.ts.map +1 -0
  326. package/dest/schemas/api.js +3 -0
  327. package/dest/schemas/index.d.ts +6 -0
  328. package/dest/schemas/index.d.ts.map +1 -0
  329. package/dest/schemas/index.js +5 -0
  330. package/dest/schemas/parse.d.ts +9 -0
  331. package/dest/schemas/parse.d.ts.map +1 -0
  332. package/dest/schemas/parse.js +22 -0
  333. package/dest/schemas/schemas.d.ts +45 -0
  334. package/dest/schemas/schemas.d.ts.map +1 -0
  335. package/dest/schemas/schemas.js +38 -0
  336. package/dest/schemas/types.d.ts +3 -0
  337. package/dest/schemas/types.d.ts.map +1 -0
  338. package/dest/schemas/types.js +1 -0
  339. package/dest/schemas/utils.d.ts +53 -0
  340. package/dest/schemas/utils.d.ts.map +1 -0
  341. package/dest/schemas/utils.js +60 -0
  342. package/dest/serialize/buffer_reader.d.ts +239 -0
  343. package/dest/serialize/buffer_reader.d.ts.map +1 -0
  344. package/dest/serialize/buffer_reader.js +290 -0
  345. package/dest/serialize/field_reader.d.ts +112 -0
  346. package/dest/serialize/field_reader.d.ts.map +1 -0
  347. package/dest/serialize/field_reader.js +147 -0
  348. package/dest/serialize/free_funcs.d.ts +105 -0
  349. package/dest/serialize/free_funcs.d.ts.map +1 -0
  350. package/dest/serialize/free_funcs.js +189 -0
  351. package/dest/serialize/index.d.ts +7 -0
  352. package/dest/serialize/index.d.ts.map +1 -0
  353. package/dest/serialize/index.js +6 -0
  354. package/dest/serialize/serialize.d.ts +182 -0
  355. package/dest/serialize/serialize.d.ts.map +1 -0
  356. package/dest/serialize/serialize.js +248 -0
  357. package/dest/serialize/type_registry.d.ts +23 -0
  358. package/dest/serialize/type_registry.d.ts.map +1 -0
  359. package/dest/serialize/type_registry.js +61 -0
  360. package/dest/serialize/types.d.ts +33 -0
  361. package/dest/serialize/types.d.ts.map +1 -0
  362. package/dest/serialize/types.js +21 -0
  363. package/dest/sleep/index.d.ts +51 -0
  364. package/dest/sleep/index.d.ts.map +1 -0
  365. package/dest/sleep/index.js +67 -0
  366. package/dest/string/index.d.ts +11 -0
  367. package/dest/string/index.d.ts.map +1 -0
  368. package/dest/string/index.js +24 -0
  369. package/dest/testing/files/index.d.ts +20 -0
  370. package/dest/testing/files/index.d.ts.map +1 -0
  371. package/dest/testing/files/index.js +58 -0
  372. package/dest/testing/index.d.ts +4 -0
  373. package/dest/testing/index.d.ts.map +1 -0
  374. package/dest/testing/index.js +3 -0
  375. package/dest/testing/port_allocator.d.ts +10 -0
  376. package/dest/testing/port_allocator.d.ts.map +1 -0
  377. package/dest/testing/port_allocator.js +29 -0
  378. package/dest/testing/snapshot_serializer.d.ts +5 -0
  379. package/dest/testing/snapshot_serializer.d.ts.map +1 -0
  380. package/dest/testing/snapshot_serializer.js +32 -0
  381. package/dest/testing/test_data.d.ts +7 -0
  382. package/dest/testing/test_data.d.ts.map +1 -0
  383. package/dest/testing/test_data.js +29 -0
  384. package/dest/timer/date.d.ts +13 -0
  385. package/dest/timer/date.d.ts.map +1 -0
  386. package/dest/timer/date.js +24 -0
  387. package/dest/timer/elapsed.d.ts +13 -0
  388. package/dest/timer/elapsed.d.ts.map +1 -0
  389. package/dest/timer/elapsed.js +25 -0
  390. package/dest/timer/index.d.ts +5 -0
  391. package/dest/timer/index.d.ts.map +1 -0
  392. package/dest/timer/index.js +4 -0
  393. package/dest/timer/timeout.d.ts +41 -0
  394. package/dest/timer/timeout.d.ts.map +1 -0
  395. package/dest/timer/timeout.js +66 -0
  396. package/dest/timer/timer.d.ts +37 -0
  397. package/dest/timer/timer.d.ts.map +1 -0
  398. package/dest/timer/timer.js +40 -0
  399. package/dest/transport/browser/index.d.ts +5 -0
  400. package/dest/transport/browser/index.d.ts.map +1 -0
  401. package/dest/transport/browser/index.js +4 -0
  402. package/dest/transport/browser/message_port_socket.d.ts +37 -0
  403. package/dest/transport/browser/message_port_socket.d.ts.map +1 -0
  404. package/dest/transport/browser/message_port_socket.js +42 -0
  405. package/dest/transport/browser/shared_worker_connector.d.ts +19 -0
  406. package/dest/transport/browser/shared_worker_connector.d.ts.map +1 -0
  407. package/dest/transport/browser/shared_worker_connector.js +19 -0
  408. package/dest/transport/browser/shared_worker_listener.d.ts +38 -0
  409. package/dest/transport/browser/shared_worker_listener.d.ts.map +1 -0
  410. package/dest/transport/browser/shared_worker_listener.js +33 -0
  411. package/dest/transport/browser/worker_connector.d.ts +26 -0
  412. package/dest/transport/browser/worker_connector.d.ts.map +1 -0
  413. package/dest/transport/browser/worker_connector.js +30 -0
  414. package/dest/transport/browser/worker_listener.d.ts +39 -0
  415. package/dest/transport/browser/worker_listener.d.ts.map +1 -0
  416. package/dest/transport/browser/worker_listener.js +35 -0
  417. package/dest/transport/dispatch/create_dispatch_fn.d.ts +25 -0
  418. package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +1 -0
  419. package/dest/transport/dispatch/create_dispatch_fn.js +17 -0
  420. package/dest/transport/dispatch/create_dispatch_proxy.d.ts +102 -0
  421. package/dest/transport/dispatch/create_dispatch_proxy.d.ts.map +1 -0
  422. package/dest/transport/dispatch/create_dispatch_proxy.js +59 -0
  423. package/dest/transport/dispatch/messages.d.ts +52 -0
  424. package/dest/transport/dispatch/messages.d.ts.map +1 -0
  425. package/dest/transport/dispatch/messages.js +13 -0
  426. package/dest/transport/index.d.ts +12 -0
  427. package/dest/transport/index.d.ts.map +1 -0
  428. package/dest/transport/index.js +11 -0
  429. package/dest/transport/interface/connector.d.ts +8 -0
  430. package/dest/transport/interface/connector.d.ts.map +1 -0
  431. package/dest/transport/interface/connector.js +3 -0
  432. package/dest/transport/interface/listener.d.ts +13 -0
  433. package/dest/transport/interface/listener.d.ts.map +1 -0
  434. package/dest/transport/interface/listener.js +4 -0
  435. package/dest/transport/interface/socket.d.ts +13 -0
  436. package/dest/transport/interface/socket.d.ts.map +1 -0
  437. package/dest/transport/interface/socket.js +7 -0
  438. package/dest/transport/interface/transferable.d.ts +68 -0
  439. package/dest/transport/interface/transferable.d.ts.map +1 -0
  440. package/dest/transport/interface/transferable.js +63 -0
  441. package/dest/transport/node/index.d.ts +3 -0
  442. package/dest/transport/node/index.d.ts.map +1 -0
  443. package/dest/transport/node/index.js +2 -0
  444. package/dest/transport/node/node_connector.d.ts +28 -0
  445. package/dest/transport/node/node_connector.d.ts.map +1 -0
  446. package/dest/transport/node/node_connector.js +26 -0
  447. package/dest/transport/node/node_connector_socket.d.ts +42 -0
  448. package/dest/transport/node/node_connector_socket.d.ts.map +1 -0
  449. package/dest/transport/node/node_connector_socket.js +44 -0
  450. package/dest/transport/node/node_listener.d.ts +26 -0
  451. package/dest/transport/node/node_listener.d.ts.map +1 -0
  452. package/dest/transport/node/node_listener.js +26 -0
  453. package/dest/transport/node/node_listener_socket.d.ts +37 -0
  454. package/dest/transport/node/node_listener_socket.d.ts.map +1 -0
  455. package/dest/transport/node/node_listener_socket.js +40 -0
  456. package/dest/transport/transport_client.d.ts +61 -0
  457. package/dest/transport/transport_client.d.ts.map +1 -0
  458. package/dest/transport/transport_client.js +96 -0
  459. package/dest/transport/transport_server.d.ts +56 -0
  460. package/dest/transport/transport_server.d.ts.map +1 -0
  461. package/dest/transport/transport_server.js +114 -0
  462. package/dest/trees/hasher.d.ts +39 -0
  463. package/dest/trees/hasher.d.ts.map +1 -0
  464. package/dest/trees/hasher.js +5 -0
  465. package/dest/trees/index.d.ts +11 -0
  466. package/dest/trees/index.d.ts.map +1 -0
  467. package/dest/trees/index.js +10 -0
  468. package/dest/trees/indexed_merkle_tree.d.ts +13 -0
  469. package/dest/trees/indexed_merkle_tree.d.ts.map +1 -0
  470. package/dest/trees/indexed_merkle_tree.js +27 -0
  471. package/dest/trees/indexed_merkle_tree_calculator.d.ts +23 -0
  472. package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -0
  473. package/dest/trees/indexed_merkle_tree_calculator.js +83 -0
  474. package/dest/trees/indexed_tree_leaf.d.ts +57 -0
  475. package/dest/trees/indexed_tree_leaf.d.ts.map +1 -0
  476. package/dest/trees/indexed_tree_leaf.js +5 -0
  477. package/dest/trees/membership_witness.d.ts +62 -0
  478. package/dest/trees/membership_witness.d.ts.map +1 -0
  479. package/dest/trees/membership_witness.js +70 -0
  480. package/dest/trees/merkle_tree.d.ts +18 -0
  481. package/dest/trees/merkle_tree.d.ts.map +1 -0
  482. package/dest/trees/merkle_tree.js +58 -0
  483. package/dest/trees/merkle_tree_calculator.d.ts +16 -0
  484. package/dest/trees/merkle_tree_calculator.d.ts.map +1 -0
  485. package/dest/trees/merkle_tree_calculator.js +61 -0
  486. package/dest/trees/sibling_path.d.ts +132 -0
  487. package/dest/trees/sibling_path.d.ts.map +1 -0
  488. package/dest/trees/sibling_path.js +144 -0
  489. package/dest/trees/unbalanced_merkle_tree.d.ts +17 -0
  490. package/dest/trees/unbalanced_merkle_tree.d.ts.map +1 -0
  491. package/dest/trees/unbalanced_merkle_tree.js +100 -0
  492. package/dest/trees/unbalanced_tree_store.d.ts +19 -0
  493. package/dest/trees/unbalanced_tree_store.d.ts.map +1 -0
  494. package/dest/trees/unbalanced_tree_store.js +94 -0
  495. package/dest/types/index.d.ts +19 -0
  496. package/dest/types/index.d.ts.map +1 -0
  497. package/dest/types/index.js +3 -0
  498. package/dest/url/index.d.ts +9 -0
  499. package/dest/url/index.d.ts.map +1 -0
  500. package/dest/url/index.js +62 -0
  501. package/dest/validation/index.d.ts +9 -0
  502. package/dest/validation/index.d.ts.map +1 -0
  503. package/dest/validation/index.js +15 -0
  504. package/dest/wasm/empty_wasi_sdk.d.ts +130 -0
  505. package/dest/wasm/empty_wasi_sdk.d.ts.map +1 -0
  506. package/dest/wasm/empty_wasi_sdk.js +148 -0
  507. package/dest/wasm/index.d.ts +2 -0
  508. package/dest/wasm/index.d.ts.map +1 -0
  509. package/dest/wasm/index.js +1 -0
  510. package/dest/wasm/wasm_module.d.ts +136 -0
  511. package/dest/wasm/wasm_module.d.ts.map +1 -0
  512. package/dest/wasm/wasm_module.js +196 -0
  513. package/dest/worker/browser/index.d.ts +3 -0
  514. package/dest/worker/browser/index.d.ts.map +1 -0
  515. package/dest/worker/browser/index.js +2 -0
  516. package/dest/worker/browser/start_web_module.d.ts +7 -0
  517. package/dest/worker/browser/start_web_module.d.ts.map +1 -0
  518. package/dest/worker/browser/start_web_module.js +27 -0
  519. package/dest/worker/browser/web_data_store.d.ts +24 -0
  520. package/dest/worker/browser/web_data_store.d.ts.map +1 -0
  521. package/dest/worker/browser/web_data_store.js +29 -0
  522. package/dest/worker/browser/web_worker.d.ts +10 -0
  523. package/dest/worker/browser/web_worker.d.ts.map +1 -0
  524. package/dest/worker/browser/web_worker.js +25 -0
  525. package/dest/worker/data_store.d.ts +21 -0
  526. package/dest/worker/data_store.d.ts.map +1 -0
  527. package/dest/worker/data_store.js +3 -0
  528. package/dest/worker/index.d.ts +3 -0
  529. package/dest/worker/index.d.ts.map +1 -0
  530. package/dest/worker/index.js +1 -0
  531. package/dest/worker/node/index.d.ts +3 -0
  532. package/dest/worker/node/index.d.ts.map +1 -0
  533. package/dest/worker/node/index.js +2 -0
  534. package/dest/worker/node/node_data_store.d.ts +13 -0
  535. package/dest/worker/node/node_data_store.d.ts.map +1 -0
  536. package/dest/worker/node/node_data_store.js +20 -0
  537. package/dest/worker/node/node_worker.d.ts +6 -0
  538. package/dest/worker/node/node_worker.d.ts.map +1 -0
  539. package/dest/worker/node/node_worker.js +22 -0
  540. package/dest/worker/node/start_node_module.d.ts +7 -0
  541. package/dest/worker/node/start_node_module.d.ts.map +1 -0
  542. package/dest/worker/node/start_node_module.js +31 -0
  543. package/dest/worker/wasm_worker.d.ts +9 -0
  544. package/dest/worker/wasm_worker.d.ts.map +1 -0
  545. package/dest/worker/wasm_worker.js +3 -0
  546. package/dest/worker/worker_pool.d.ts +40 -0
  547. package/dest/worker/worker_pool.d.ts.map +1 -0
  548. package/dest/worker/worker_pool.js +51 -0
  549. package/package.json +176 -0
  550. package/src/array/array.ts +150 -0
  551. package/src/array/index.ts +1 -0
  552. package/src/async-map/index.ts +18 -0
  553. package/src/async-pool/index.ts +50 -0
  554. package/src/bigint-buffer/index.ts +87 -0
  555. package/src/buffer/buffer32.ts +144 -0
  556. package/src/buffer/index.ts +1 -0
  557. package/src/collection/array.ts +203 -0
  558. package/src/collection/index.ts +2 -0
  559. package/src/collection/object.ts +52 -0
  560. package/src/committable/committable.ts +46 -0
  561. package/src/committable/index.ts +1 -0
  562. package/src/config/env_var.ts +207 -0
  563. package/src/config/index.ts +167 -0
  564. package/src/crypto/aes128/index.ts +59 -0
  565. package/src/crypto/ecdsa/index.ts +70 -0
  566. package/src/crypto/ecdsa/signature.ts +100 -0
  567. package/src/crypto/grumpkin/index.ts +97 -0
  568. package/src/crypto/index.ts +14 -0
  569. package/src/crypto/keccak/index.ts +283 -0
  570. package/src/crypto/keys/index.ts +10 -0
  571. package/src/crypto/pedersen/index.ts +1 -0
  572. package/src/crypto/pedersen/pedersen.elliptic.ts +584 -0
  573. package/src/crypto/pedersen/pedersen.noble.ts +573 -0
  574. package/src/crypto/pedersen/pedersen.wasm.ts +48 -0
  575. package/src/crypto/poseidon/index.ts +77 -0
  576. package/src/crypto/random/index.ts +85 -0
  577. package/src/crypto/random/randomness_singleton.ts +62 -0
  578. package/src/crypto/schnorr/index.ts +55 -0
  579. package/src/crypto/schnorr/signature.ts +116 -0
  580. package/src/crypto/secp256k1/index.ts +57 -0
  581. package/src/crypto/secp256k1-signer/index.ts +2 -0
  582. package/src/crypto/secp256k1-signer/secp256k1_signer.ts +38 -0
  583. package/src/crypto/secp256k1-signer/utils.ts +99 -0
  584. package/src/crypto/serialize.ts +85 -0
  585. package/src/crypto/sha256/index.ts +147 -0
  586. package/src/crypto/sha512/index.ts +16 -0
  587. package/src/crypto/signature/index.ts +17 -0
  588. package/src/crypto/sync/index.ts +6 -0
  589. package/src/crypto/sync/pedersen/index.ts +45 -0
  590. package/src/crypto/sync/poseidon/index.ts +76 -0
  591. package/src/decorators/index.ts +1 -0
  592. package/src/decorators/memoize.ts +11 -0
  593. package/src/error/index.ts +22 -0
  594. package/src/eth-address/index.ts +241 -0
  595. package/src/eth-signature/eth_signature.ts +128 -0
  596. package/src/eth-signature/index.ts +1 -0
  597. package/src/fields/coordinate.ts +104 -0
  598. package/src/fields/fields.ts +505 -0
  599. package/src/fields/index.ts +3 -0
  600. package/src/fields/point.ts +300 -0
  601. package/src/fs/index.ts +1 -0
  602. package/src/fs/run_in_dir.ts +33 -0
  603. package/src/index.ts +31 -0
  604. package/src/iterable/all.ts +32 -0
  605. package/src/iterable/filter.ts +77 -0
  606. package/src/iterable/index.ts +7 -0
  607. package/src/iterable/isAsyncIt.ts +8 -0
  608. package/src/iterable/map.ts +66 -0
  609. package/src/iterable/peek.ts +58 -0
  610. package/src/iterable/sort.ts +39 -0
  611. package/src/iterable/take.ts +54 -0
  612. package/src/iterable/toArray.ts +9 -0
  613. package/src/jest/setup.mjs +9 -0
  614. package/src/json-rpc/README.md +55 -0
  615. package/src/json-rpc/client/fetch.ts +103 -0
  616. package/src/json-rpc/client/index.ts +2 -0
  617. package/src/json-rpc/client/safe_json_rpc_client.ts +67 -0
  618. package/src/json-rpc/client/undici.ts +75 -0
  619. package/src/json-rpc/convert.ts +61 -0
  620. package/src/json-rpc/fixtures/class_a.ts +15 -0
  621. package/src/json-rpc/fixtures/class_b.ts +15 -0
  622. package/src/json-rpc/fixtures/test_state.ts +143 -0
  623. package/src/json-rpc/index.ts +1 -0
  624. package/src/json-rpc/js_utils.ts +21 -0
  625. package/src/json-rpc/server/index.ts +1 -0
  626. package/src/json-rpc/server/safe_json_rpc_server.ts +376 -0
  627. package/src/json-rpc/server/telemetry.ts +0 -0
  628. package/src/json-rpc/test/index.ts +1 -0
  629. package/src/json-rpc/test/integration.ts +35 -0
  630. package/src/log/console.ts +39 -0
  631. package/src/log/debug.ts +104 -0
  632. package/src/log/gcloud-logger-config.ts +71 -0
  633. package/src/log/index.ts +6 -0
  634. package/src/log/libp2p_logger.ts +67 -0
  635. package/src/log/log-filters.ts +63 -0
  636. package/src/log/log-levels.ts +3 -0
  637. package/src/log/log_fn.ts +5 -0
  638. package/src/log/log_history.ts +44 -0
  639. package/src/log/pino-logger.ts +243 -0
  640. package/src/message/index.ts +43 -0
  641. package/src/mutex/index.ts +84 -0
  642. package/src/mutex/mutex_database.ts +12 -0
  643. package/src/noir/index.ts +1 -0
  644. package/src/noir/noir_package_config.ts +54 -0
  645. package/src/promise/index.ts +2 -0
  646. package/src/promise/running-promise.ts +125 -0
  647. package/src/promise/utils.ts +29 -0
  648. package/src/queue/base_memory_queue.ts +138 -0
  649. package/src/queue/batch_queue.ts +120 -0
  650. package/src/queue/bounded_serial_queue.ts +100 -0
  651. package/src/queue/fifo_memory_queue.ts +39 -0
  652. package/src/queue/index.ts +6 -0
  653. package/src/queue/priority_memory_queue.ts +20 -0
  654. package/src/queue/priority_queue.ts +34 -0
  655. package/src/queue/semaphore.ts +33 -0
  656. package/src/queue/serial_queue.ts +86 -0
  657. package/src/retry/index.ts +100 -0
  658. package/src/running-promise/index.ts +1 -0
  659. package/src/schemas/api.ts +47 -0
  660. package/src/schemas/index.ts +5 -0
  661. package/src/schemas/parse.ts +29 -0
  662. package/src/schemas/schemas.ts +64 -0
  663. package/src/schemas/types.ts +3 -0
  664. package/src/schemas/utils.ts +112 -0
  665. package/src/serialize/buffer_reader.ts +383 -0
  666. package/src/serialize/field_reader.ts +184 -0
  667. package/src/serialize/free_funcs.ts +204 -0
  668. package/src/serialize/index.ts +6 -0
  669. package/src/serialize/serialize.ts +336 -0
  670. package/src/serialize/type_registry.ts +75 -0
  671. package/src/serialize/types.ts +40 -0
  672. package/src/sleep/index.ts +75 -0
  673. package/src/string/index.ts +31 -0
  674. package/src/testing/files/index.ts +69 -0
  675. package/src/testing/index.ts +3 -0
  676. package/src/testing/port_allocator.ts +31 -0
  677. package/src/testing/snapshot_serializer.ts +33 -0
  678. package/src/testing/test_data.ts +36 -0
  679. package/src/timer/date.ts +24 -0
  680. package/src/timer/elapsed.ts +23 -0
  681. package/src/timer/index.ts +4 -0
  682. package/src/timer/timeout.ts +70 -0
  683. package/src/timer/timer.ts +48 -0
  684. package/src/transport/browser/index.ts +4 -0
  685. package/src/transport/browser/message_port_socket.ts +48 -0
  686. package/src/transport/browser/shared_worker_connector.ts +21 -0
  687. package/src/transport/browser/shared_worker_listener.ts +53 -0
  688. package/src/transport/browser/worker_connector.ts +30 -0
  689. package/src/transport/browser/worker_listener.ts +54 -0
  690. package/src/transport/dispatch/create_dispatch_fn.ts +35 -0
  691. package/src/transport/dispatch/create_dispatch_proxy.ts +141 -0
  692. package/src/transport/dispatch/messages.ts +58 -0
  693. package/src/transport/index.ts +11 -0
  694. package/src/transport/interface/connector.ts +9 -0
  695. package/src/transport/interface/listener.ts +16 -0
  696. package/src/transport/interface/socket.ts +15 -0
  697. package/src/transport/interface/transferable.ts +125 -0
  698. package/src/transport/node/index.ts +2 -0
  699. package/src/transport/node/node_connector.ts +30 -0
  700. package/src/transport/node/node_connector_socket.ts +52 -0
  701. package/src/transport/node/node_listener.ts +34 -0
  702. package/src/transport/node/node_listener_socket.ts +48 -0
  703. package/src/transport/transport_client.ts +131 -0
  704. package/src/transport/transport_server.ts +108 -0
  705. package/src/trees/hasher.ts +39 -0
  706. package/src/trees/index.ts +10 -0
  707. package/src/trees/indexed_merkle_tree.ts +36 -0
  708. package/src/trees/indexed_merkle_tree_calculator.ts +94 -0
  709. package/src/trees/indexed_tree_leaf.ts +56 -0
  710. package/src/trees/membership_witness.ts +99 -0
  711. package/src/trees/merkle_tree.ts +72 -0
  712. package/src/trees/merkle_tree_calculator.ts +67 -0
  713. package/src/trees/sibling_path.ts +183 -0
  714. package/src/trees/unbalanced_merkle_tree.ts +103 -0
  715. package/src/trees/unbalanced_tree_store.ts +102 -0
  716. package/src/types/index.ts +25 -0
  717. package/src/url/index.ts +73 -0
  718. package/src/validation/index.ts +18 -0
  719. package/src/wasm/README.md +6 -0
  720. package/src/wasm/empty_wasi_sdk.ts +166 -0
  721. package/src/wasm/fixtures/gcd.wasm +0 -0
  722. package/src/wasm/fixtures/gcd.wat +27 -0
  723. package/src/wasm/index.ts +1 -0
  724. package/src/wasm/wasm_module.ts +260 -0
  725. package/src/worker/browser/index.ts +2 -0
  726. package/src/worker/browser/start_web_module.ts +24 -0
  727. package/src/worker/browser/web_data_store.ts +38 -0
  728. package/src/worker/browser/web_worker.ts +25 -0
  729. package/src/worker/data_store.ts +19 -0
  730. package/src/worker/index.ts +2 -0
  731. package/src/worker/node/index.ts +2 -0
  732. package/src/worker/node/node_data_store.ts +27 -0
  733. package/src/worker/node/node_worker.ts +23 -0
  734. package/src/worker/node/start_node_module.ts +30 -0
  735. package/src/worker/wasm_worker.ts +7 -0
  736. package/src/worker/worker_pool.ts +73 -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,9 @@
1
+ import { overwriteLoggingStream, pinoPrettyOpts } from '@aztec/foundation/log';
2
+
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
+ overwriteLoggingStream(pretty(pinoPrettyOpts));
@@ -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,103 @@
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
+ rpcMethod: string,
12
+ body: any,
13
+ useApiEndpoints: boolean,
14
+ extraHeaders?: Record<string, string>,
15
+ noRetry?: boolean,
16
+ ) => Promise<{ response: any; headers: { get: (header: string) => string | null | undefined } }>;
17
+
18
+ /**
19
+ * A normal fetch function that does not retry.
20
+ * Alternatives are a fetch function with retries, or a mocked fetch.
21
+ * @param host - The host URL.
22
+ * @param method - The RPC method name.
23
+ * @param body - The RPC payload.
24
+ * @param noRetry - Whether to throw a `NoRetryError` in case the response is a 5xx error and the body contains an error
25
+ * message (see `retry` function for more details).
26
+ * @returns The parsed JSON response, or throws an error.
27
+ */
28
+ export async function defaultFetch(
29
+ host: string,
30
+ rpcMethod: string,
31
+ body: any,
32
+ useApiEndpoints: boolean,
33
+ extraHeaders: Record<string, string> = {},
34
+ noRetry = false,
35
+ ): Promise<{ response: any; headers: { get: (header: string) => string | null | undefined } }> {
36
+ log.debug(format(`JsonRpcClient.fetch`, host, rpcMethod, '->', body));
37
+ let resp: Response;
38
+ 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
+ }
52
+ } catch (err) {
53
+ const errorMessage = `Error fetching from host ${host} with method ${rpcMethod}: ${inspect(err)}`;
54
+ throw new Error(errorMessage);
55
+ }
56
+
57
+ let responseJson;
58
+ try {
59
+ responseJson = await resp.json();
60
+ } catch (err) {
61
+ if (!resp.ok) {
62
+ throw new Error(resp.statusText);
63
+ }
64
+ throw new Error(`Failed to parse body as JSON: ${resp.text()}`);
65
+ }
66
+
67
+ if (!resp.ok) {
68
+ const errorMessage = `Error ${resp.status} from server ${host} on ${rpcMethod}: ${responseJson.error.message}`;
69
+ if (noRetry || (resp.status >= 400 && resp.status < 500)) {
70
+ throw new NoRetryError(errorMessage);
71
+ } else {
72
+ throw new Error(errorMessage);
73
+ }
74
+ }
75
+
76
+ return { response: responseJson, headers: resp.headers };
77
+ }
78
+
79
+ /**
80
+ * Makes a fetch function that retries based on the given attempts.
81
+ * @param retries - Sequence of intervals (in seconds) to retry.
82
+ * @param noRetry - Whether to stop retries on server errors.
83
+ * @param log - Optional logger for logging attempts.
84
+ * @returns A fetch function.
85
+ */
86
+ 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
+ ) => {
95
+ return await retry(
96
+ () => defaultFetch(host, rpcMethod, body, useApiEndpoints, extraHeaders, noRetry ?? defaultNoRetry),
97
+ `JsonRpcClient request ${rpcMethod} to ${host}`,
98
+ makeBackoff(retries),
99
+ log,
100
+ false,
101
+ );
102
+ };
103
+ }
@@ -0,0 +1,2 @@
1
+ export * from './safe_json_rpc_client.js';
2
+ export * from './fetch.js';
@@ -0,0 +1,67 @@
1
+ import { format } from 'util';
2
+
3
+ import { type Logger, createLogger } from '../../log/pino-logger.js';
4
+ import { type ApiSchema, type ApiSchemaFor, schemaHasMethod } from '../../schemas/api.js';
5
+ import { type JsonRpcFetch, defaultFetch } from './fetch.js';
6
+
7
+ export type SafeJsonRpcClientOptions = {
8
+ useApiEndpoints?: boolean;
9
+ namespaceMethods?: string | false;
10
+ fetch?: JsonRpcFetch;
11
+ log?: Logger;
12
+ onResponse?: (res: {
13
+ response: any;
14
+ headers: { get: (header: string) => string | null | undefined };
15
+ }) => Promise<void>;
16
+ };
17
+
18
+ /**
19
+ * Creates a Proxy object that delegates over RPC and validates outputs against a given schema.
20
+ * The server is expected to be a JsonRpcServer.
21
+ * @param host - The host URL.
22
+ * @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
+ * @param fetch - The fetch implementation to use.
26
+ */
27
+ export function createSafeJsonRpcClient<T extends object>(
28
+ host: string,
29
+ schema: ApiSchemaFor<T>,
30
+ config: SafeJsonRpcClientOptions = {},
31
+ ): T {
32
+ const fetch = config.fetch ?? defaultFetch;
33
+ const log = config.log ?? createLogger('json-rpc:client');
34
+ const { useApiEndpoints = false, namespaceMethods = false } = config;
35
+
36
+ let id = 0;
37
+ const request = async (methodName: string, params: any[]): Promise<any> => {
38
+ if (!schemaHasMethod(schema, methodName)) {
39
+ throw new Error(`Unspecified method ${methodName} in client schema`);
40
+ }
41
+ const method = namespaceMethods ? `${namespaceMethods}_${methodName}` : methodName;
42
+ const body = { jsonrpc: '2.0', id: id++, method, params };
43
+
44
+ log.debug(format(`request`, method, params));
45
+ const { response, headers } = await fetch(host, method, body, useApiEndpoints);
46
+ log.debug(format(`result`, method, response));
47
+
48
+ if (config.onResponse) {
49
+ await config.onResponse({ response, headers });
50
+ }
51
+ if (response.error) {
52
+ throw response.error;
53
+ }
54
+ // TODO(palla/schemas): Find a better way to handle null responses (JSON.stringify(null) is string "null").
55
+ if ([null, undefined, 'null', 'undefined'].includes(response.result)) {
56
+ return;
57
+ }
58
+ return (schema as ApiSchema)[methodName].returnType().parseAsync(response.result);
59
+ };
60
+
61
+ const proxy: any = {};
62
+ for (const method of Object.keys(schema)) {
63
+ proxy[method] = (...params: any[]) => request(method, params);
64
+ }
65
+
66
+ return proxy as T;
67
+ }
@@ -0,0 +1,75 @@
1
+ import { Agent, type Dispatcher } from 'undici';
2
+
3
+ import { createLogger } from '../../log/pino-logger.js';
4
+ import { NoRetryError } from '../../retry/index.js';
5
+ import { jsonStringify } from '../convert.js';
6
+ import type { JsonRpcFetch } from './fetch.js';
7
+
8
+ const log = createLogger('json-rpc:json_rpc_client:undici');
9
+
10
+ export { Agent };
11
+
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>;
23
+ try {
24
+ resp = await client.request<string>({
25
+ method: 'POST',
26
+ origin: new URL(host),
27
+ path: useApiEndpoints ? rpcMethod : '/',
28
+ body: jsonStringify(body),
29
+ headers: {
30
+ ...extraHeaders,
31
+ 'content-type': 'application/json',
32
+ },
33
+ });
34
+ } catch (err) {
35
+ const errorMessage = `Error fetching from host ${host} with method ${rpcMethod}: ${String(err)}`;
36
+ throw new Error(errorMessage);
37
+ }
38
+
39
+ let responseJson: any;
40
+ const responseOk = resp.statusCode >= 200 && resp.statusCode <= 299;
41
+ try {
42
+ responseJson = await resp.body.json();
43
+ } catch (err) {
44
+ if (!responseOk) {
45
+ throw new Error('HTTP ' + resp.statusCode);
46
+ }
47
+ throw new Error(`Failed to parse body as JSON: ${await resp.body.text()}`);
48
+ }
49
+
50
+ if (!responseOk) {
51
+ const errorMessage = `Error ${resp.statusCode} response from server ${host} on ${rpcMethod}: ${responseJson.error.message}`;
52
+ if (noRetry || (resp.statusCode >= 400 && resp.statusCode < 500)) {
53
+ throw new NoRetryError(errorMessage);
54
+ } else {
55
+ throw new Error(errorMessage);
56
+ }
57
+ }
58
+
59
+ const headers = new Headers();
60
+ for (const [key, value] of Object.entries(resp.headers)) {
61
+ if (typeof value === 'string') {
62
+ headers.append(key, value);
63
+ } else if (Array.isArray(value)) {
64
+ for (const v of value) {
65
+ headers.append(key, v);
66
+ }
67
+ }
68
+ }
69
+
70
+ return {
71
+ response: responseJson,
72
+ headers,
73
+ };
74
+ };
75
+ }
@@ -0,0 +1,61 @@
1
+ import { Buffer } from 'buffer';
2
+
3
+ import type { ZodFor } from '../schemas/types.js';
4
+
5
+ /**
6
+ * Parses a json string and then feeds it to a zod schema.
7
+ * @param json - JSON string.
8
+ * @param schema - Zod schema.
9
+ * @returns Result of parsing json with schema.
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 {
21
+ return schema.parse(JSON.parse(json));
22
+ }
23
+
24
+ /**
25
+ * JSON.stringify helper that stringifies bigints, buffers, maps, and sets.
26
+ * @param obj - The object to be stringified.
27
+ * @returns The resulting string.
28
+ */
29
+ export function jsonStringify(obj: object, prettify?: boolean): string {
30
+ return JSON.stringify(
31
+ obj,
32
+ (_key, value) => {
33
+ if (typeof value === 'bigint') {
34
+ return value.toString();
35
+ } else if (typeof value === 'object' && value && value.type === 'Buffer' && Array.isArray(value.data)) {
36
+ return Buffer.from(value.data).toString('base64');
37
+ } else if (typeof value === 'object' && value && Buffer.isBuffer(value)) {
38
+ return value.toString('base64');
39
+ } else if (typeof value === 'object' && value instanceof Map) {
40
+ return Array.from(value.entries());
41
+ } else if (typeof value === 'object' && value instanceof Set) {
42
+ return Array.from(value.values());
43
+ } else {
44
+ return value;
45
+ }
46
+ },
47
+ prettify ? 2 : 0,
48
+ );
49
+ }
50
+
51
+ /**
52
+ * Calls jsonStringify but swallows errors.
53
+ * Use for logging, when you don't want to potentially introduce another thing that throws.
54
+ */
55
+ export function tryJsonStringify(obj: any, prettify?: boolean): string | undefined {
56
+ try {
57
+ return jsonStringify(obj, prettify);
58
+ } catch (e) {
59
+ return undefined;
60
+ }
61
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Test class for testing string converter.
3
+ */
4
+ export class ToStringClass {
5
+ constructor(/** A value */ public readonly x: string, /** Another value */ public readonly y: string) {}
6
+
7
+ toString(): string {
8
+ return [this.x, this.y].join('-');
9
+ }
10
+
11
+ static fromString(value: string) {
12
+ const [x, y] = value.split('-');
13
+ return new ToStringClass(x, y);
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Test class for testing string converter.
3
+ */
4
+ export class ToStringClass {
5
+ constructor(/** A value */ public readonly x: string, /** Another value */ public readonly y: string) {}
6
+
7
+ toString(): string {
8
+ return [this.x, this.y].join('-');
9
+ }
10
+
11
+ static fromString(value: string) {
12
+ const [x, y] = value.split('-');
13
+ return new ToStringClass(x, y);
14
+ }
15
+ }
@@ -0,0 +1,143 @@
1
+ import { z } from 'zod';
2
+
3
+ import { type ApiSchemaFor, optional, schemas } from '../../schemas/index.js';
4
+ import { sleep } from '../../sleep/index.js';
5
+
6
+ /**
7
+ * Contrived example for JSON RPC tests.
8
+ */
9
+ export class TestNote {
10
+ constructor(private data: string) {}
11
+
12
+ static get schema() {
13
+ return z.object({ data: z.string() }).transform(({ data }) => new TestNote(data));
14
+ }
15
+
16
+ toJSON() {
17
+ return { data: this.data };
18
+ }
19
+
20
+ /**
21
+ * Create a string representation of this class.
22
+ * @returns The string representation.
23
+ */
24
+ toString(): string {
25
+ return this.data;
26
+ }
27
+ /**
28
+ * Creates a string representation of this class.
29
+ * @param data - The data.
30
+ * @returns The string representation.
31
+ */
32
+ static fromString(data: string): TestNote {
33
+ return new TestNote(data);
34
+ }
35
+ }
36
+
37
+ export interface TestStateApi {
38
+ getNote: (index: number) => Promise<TestNote | undefined>;
39
+ getNotes: (limit?: number) => Promise<TestNote[]>;
40
+ getNotes2: (limit: bigint | undefined) => Promise<TestNote[]>;
41
+ getNotes3: (limit?: number) => Promise<TestNote[]>;
42
+ clear: () => Promise<void>;
43
+ addNotes: (notes: TestNote[]) => Promise<TestNote[]>;
44
+ fail: () => Promise<void>;
45
+ count: () => Promise<number>;
46
+ getStatus: () => Promise<{ status: string; count: bigint }>;
47
+ getTuple(): Promise<[string, string | undefined, number]>;
48
+ }
49
+
50
+ /**
51
+ * Represents a simple state management for TestNote instances.
52
+ * Provides functionality to get a note by index and add notes asynchronously.
53
+ * Primarily used for testing JSON RPC-related functionalities.
54
+ */
55
+ export class TestState implements TestStateApi {
56
+ constructor(public notes: TestNote[]) {}
57
+ /**
58
+ * Retrieve the TestNote instance at the specified index from the notes array.
59
+ * This method allows getting a desired TestNote from the collection of notes
60
+ * maintained by the TestState instance using the provided index value.
61
+ *
62
+ * @param index - The index of the TestNote to be retrieved from the notes array.
63
+ * @returns The TestNote instance corresponding to the given index.
64
+ */
65
+ async getNote(index: number): Promise<TestNote> {
66
+ await sleep(0.1);
67
+ return this.notes[index];
68
+ }
69
+
70
+ fail(): Promise<void> {
71
+ throw new Error('Test state failed');
72
+ }
73
+
74
+ async count(): Promise<number> {
75
+ await sleep(0.1);
76
+ return this.notes.length;
77
+ }
78
+
79
+ async getNotes(limit?: number): Promise<TestNote[]> {
80
+ await sleep(0.1);
81
+ return limit ? this.notes.slice(0, limit) : this.notes;
82
+ }
83
+
84
+ async getNotes2(limit: bigint | undefined): Promise<TestNote[]> {
85
+ await sleep(0.1);
86
+ return limit ? this.notes.slice(0, Number(limit)) : this.notes;
87
+ }
88
+
89
+ async getNotes3(limit = 1): Promise<TestNote[]> {
90
+ await sleep(0.1);
91
+ return limit ? this.notes.slice(0, Number(limit)) : this.notes;
92
+ }
93
+
94
+ async clear(): Promise<void> {
95
+ await sleep(0.1);
96
+ this.notes = [];
97
+ }
98
+
99
+ /**
100
+ * Add an array of TestNote instances to the current TestState's notes.
101
+ * This function simulates asynchronous behavior by waiting for a duration
102
+ * equal to the number of notes being added. It then returns the updated
103
+ * list of TestNote instances in the TestState.
104
+ *
105
+ * @param notes - An array of TestNote instances to be added.
106
+ * @returns A Promise that resolves to an array of TestNote instances, including the newly added notes.
107
+ */
108
+ async addNotes(notes: TestNote[]): Promise<TestNote[]> {
109
+ for (const note of notes) {
110
+ this.notes.push(note);
111
+ }
112
+ await sleep(notes.length);
113
+ return this.notes;
114
+ }
115
+
116
+ async forceClear() {
117
+ await sleep(0.1);
118
+ this.notes = [];
119
+ }
120
+
121
+ async getStatus(): Promise<{ status: string; count: bigint }> {
122
+ await sleep(0.1);
123
+ return { status: 'ok', count: BigInt(this.notes.length) };
124
+ }
125
+
126
+ async getTuple(): Promise<[string, string | undefined, number]> {
127
+ await sleep(0.1);
128
+ return ['a', undefined, 1];
129
+ }
130
+ }
131
+
132
+ export const TestStateSchema: ApiSchemaFor<TestStateApi> = {
133
+ getNote: z.function().args(z.number()).returns(TestNote.schema.optional()),
134
+ getNotes: z.function().args(optional(schemas.Integer)).returns(z.array(TestNote.schema)),
135
+ getNotes2: z.function().args(optional(schemas.BigInt)).returns(z.array(TestNote.schema)),
136
+ getNotes3: z.function().args(optional(schemas.Integer)).returns(z.array(TestNote.schema)),
137
+ clear: z.function().returns(z.void()),
138
+ addNotes: z.function().args(z.array(TestNote.schema)).returns(z.array(TestNote.schema)),
139
+ fail: z.function().returns(z.void()),
140
+ count: z.function().returns(z.number()),
141
+ getStatus: z.function().returns(z.object({ status: z.string(), count: schemas.BigInt })),
142
+ getTuple: z.function().returns(z.tuple([z.string(), optional(z.string()), z.number()])),
143
+ };
@@ -0,0 +1 @@
1
+ export { jsonStringify, jsonParseWithSchema, jsonParseWithSchemaSync, tryJsonStringify } from './convert.js';
@@ -0,0 +1,21 @@
1
+ // Make sure this property was not inherited
2
+ // TODO(palla): Delete this file
3
+
4
+ /**
5
+ * Does this own the property?
6
+ * @param obj - An object.
7
+ * @param method - A property name.
8
+ */
9
+ export const hasOwnProperty = (obj: any, propertyName: string) =>
10
+ Object.prototype.hasOwnProperty.call(obj, propertyName);
11
+
12
+ /**
13
+ * Helper function to assert a condition is truthy
14
+ * @param x - A boolean condition to assert.
15
+ * @param err - Error message to throw if x isn't met.
16
+ */
17
+ export function assert(x: any, err: string): asserts x {
18
+ if (!x) {
19
+ throw new Error(err);
20
+ }
21
+ }
@@ -0,0 +1 @@
1
+ export * from './safe_json_rpc_server.js';