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

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 (777) hide show
  1. package/dest/array/array.d.ts +6 -9
  2. package/dest/array/array.d.ts.map +1 -1
  3. package/dest/array/array.js +11 -11
  4. package/dest/array/index.d.ts +2 -1
  5. package/dest/array/index.d.ts.map +1 -1
  6. package/dest/array/index.js +1 -0
  7. package/dest/array/sorted_array.d.ts +15 -0
  8. package/dest/array/sorted_array.d.ts.map +1 -0
  9. package/dest/array/sorted_array.js +109 -0
  10. package/dest/async-map/index.d.ts +1 -1
  11. package/dest/async-pool/index.d.ts +1 -1
  12. package/dest/async-pool/index.d.ts.map +1 -1
  13. package/dest/async-pool/index.js +1 -0
  14. package/dest/bigint/index.d.ts +7 -0
  15. package/dest/bigint/index.d.ts.map +1 -0
  16. package/dest/bigint/index.js +15 -0
  17. package/dest/bigint-buffer/index.d.ts +1 -3
  18. package/dest/bigint-buffer/index.d.ts.map +1 -1
  19. package/dest/bigint-buffer/index.js +6 -1
  20. package/dest/branded-types/block_number.d.ts +56 -0
  21. package/dest/branded-types/block_number.d.ts.map +1 -0
  22. package/dest/branded-types/block_number.js +89 -0
  23. package/dest/branded-types/buffer32_hash.d.ts +27 -0
  24. package/dest/branded-types/buffer32_hash.d.ts.map +1 -0
  25. package/dest/branded-types/buffer32_hash.js +12 -0
  26. package/dest/branded-types/checkpoint_number.d.ts +60 -0
  27. package/dest/branded-types/checkpoint_number.d.ts.map +1 -0
  28. package/dest/branded-types/checkpoint_number.js +88 -0
  29. package/dest/branded-types/epoch.d.ts +42 -0
  30. package/dest/branded-types/epoch.d.ts.map +1 -0
  31. package/dest/branded-types/epoch.js +59 -0
  32. package/dest/branded-types/index.d.ts +8 -0
  33. package/dest/branded-types/index.d.ts.map +1 -0
  34. package/dest/branded-types/index.js +6 -0
  35. package/dest/branded-types/index_within_checkpoint.d.ts +42 -0
  36. package/dest/branded-types/index_within_checkpoint.d.ts.map +1 -0
  37. package/dest/branded-types/index_within_checkpoint.js +59 -0
  38. package/dest/branded-types/slot.d.ts +45 -0
  39. package/dest/branded-types/slot.d.ts.map +1 -0
  40. package/dest/branded-types/slot.js +62 -0
  41. package/dest/branded-types/types.d.ts +5 -0
  42. package/dest/branded-types/types.d.ts.map +1 -0
  43. package/dest/branded-types/types.js +1 -0
  44. package/dest/buffer/buffer16.d.ts +82 -0
  45. package/dest/buffer/buffer16.d.ts.map +1 -0
  46. package/dest/buffer/buffer16.js +102 -0
  47. package/dest/buffer/buffer32.d.ts +32 -69
  48. package/dest/buffer/buffer32.d.ts.map +1 -1
  49. package/dest/buffer/buffer32.js +36 -68
  50. package/dest/buffer/index.d.ts +3 -1
  51. package/dest/buffer/index.d.ts.map +1 -1
  52. package/dest/buffer/index.js +2 -0
  53. package/dest/buffer/utils.d.ts +3 -0
  54. package/dest/buffer/utils.d.ts.map +1 -0
  55. package/dest/buffer/utils.js +7 -0
  56. package/dest/collection/array.d.ts +38 -4
  57. package/dest/collection/array.d.ts.map +1 -1
  58. package/dest/collection/array.js +141 -3
  59. package/dest/collection/index.d.ts +3 -1
  60. package/dest/collection/index.d.ts.map +1 -1
  61. package/dest/collection/index.js +2 -0
  62. package/dest/collection/lru_map.d.ts +41 -0
  63. package/dest/collection/lru_map.d.ts.map +1 -0
  64. package/dest/collection/lru_map.js +119 -0
  65. package/dest/collection/lru_set.d.ts +35 -0
  66. package/dest/collection/lru_set.d.ts.map +1 -0
  67. package/dest/collection/lru_set.js +95 -0
  68. package/dest/collection/object.d.ts +17 -1
  69. package/dest/collection/object.d.ts.map +1 -1
  70. package/dest/collection/object.js +25 -0
  71. package/dest/committable/committable.d.ts +1 -1
  72. package/dest/committable/committable.d.ts.map +1 -1
  73. package/dest/committable/committable.js +1 -1
  74. package/dest/committable/index.d.ts +1 -1
  75. package/dest/config/env_var.d.ts +2 -2
  76. package/dest/config/env_var.d.ts.map +1 -1
  77. package/dest/config/index.d.ts +88 -13
  78. package/dest/config/index.d.ts.map +1 -1
  79. package/dest/config/index.js +153 -22
  80. package/dest/config/network_config.d.ts +28 -0
  81. package/dest/config/network_config.d.ts.map +1 -0
  82. package/dest/config/network_config.js +14 -0
  83. package/dest/config/network_name.d.ts +3 -0
  84. package/dest/config/network_name.d.ts.map +1 -0
  85. package/dest/config/network_name.js +19 -0
  86. package/dest/config/parse-env.d.ts +3 -0
  87. package/dest/config/parse-env.d.ts.map +1 -0
  88. package/dest/config/parse-env.js +7 -0
  89. package/dest/config/secret_value.d.ts +28 -0
  90. package/dest/config/secret_value.d.ts.map +1 -0
  91. package/dest/config/secret_value.js +36 -0
  92. package/dest/crypto/aes128/index.d.ts +4 -5
  93. package/dest/crypto/aes128/index.d.ts.map +1 -1
  94. package/dest/crypto/aes128/index.js +30 -8
  95. package/dest/crypto/bls/bn254_keystore.d.ts +129 -0
  96. package/dest/crypto/bls/bn254_keystore.d.ts.map +1 -0
  97. package/dest/crypto/bls/bn254_keystore.js +201 -0
  98. package/dest/crypto/bls/index.d.ts +13 -0
  99. package/dest/crypto/bls/index.d.ts.map +1 -0
  100. package/dest/crypto/bls/index.js +87 -0
  101. package/dest/crypto/bn254/index.d.ts +39 -0
  102. package/dest/crypto/bn254/index.d.ts.map +1 -0
  103. package/dest/crypto/bn254/index.js +56 -0
  104. package/dest/crypto/ecdsa/index.d.ts +3 -3
  105. package/dest/crypto/ecdsa/index.d.ts.map +1 -1
  106. package/dest/crypto/ecdsa/index.js +62 -48
  107. package/dest/crypto/ecdsa/signature.d.ts +3 -5
  108. package/dest/crypto/ecdsa/signature.d.ts.map +1 -1
  109. package/dest/crypto/ecdsa/signature.js +2 -2
  110. package/dest/crypto/grumpkin/index.d.ts +10 -15
  111. package/dest/crypto/grumpkin/index.d.ts.map +1 -1
  112. package/dest/crypto/grumpkin/index.js +61 -55
  113. package/dest/crypto/keccak/index.d.ts +3 -5
  114. package/dest/crypto/keccak/index.d.ts.map +1 -1
  115. package/dest/crypto/keys/index.d.ts +2 -4
  116. package/dest/crypto/keys/index.d.ts.map +1 -1
  117. package/dest/crypto/keys/index.js +8 -5
  118. package/dest/crypto/pedersen/index.d.ts +1 -1
  119. package/dest/crypto/pedersen/pedersen.noble.d.ts +3 -5
  120. package/dest/crypto/pedersen/pedersen.noble.d.ts.map +1 -1
  121. package/dest/crypto/pedersen/pedersen.wasm.d.ts +4 -6
  122. package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -1
  123. package/dest/crypto/pedersen/pedersen.wasm.js +24 -14
  124. package/dest/crypto/poseidon/index.d.ts +2 -5
  125. package/dest/crypto/poseidon/index.d.ts.map +1 -1
  126. package/dest/crypto/poseidon/index.js +41 -28
  127. package/dest/crypto/random/index.d.ts +2 -4
  128. package/dest/crypto/random/index.d.ts.map +1 -1
  129. package/dest/crypto/random/index.js +2 -34
  130. package/dest/crypto/random/randomness_singleton.d.ts +4 -5
  131. package/dest/crypto/random/randomness_singleton.d.ts.map +1 -1
  132. package/dest/crypto/random/randomness_singleton.js +5 -5
  133. package/dest/crypto/schnorr/index.d.ts +10 -8
  134. package/dest/crypto/schnorr/index.d.ts.map +1 -1
  135. package/dest/crypto/schnorr/index.js +34 -42
  136. package/dest/crypto/schnorr/signature.d.ts +13 -35
  137. package/dest/crypto/schnorr/signature.d.ts.map +1 -1
  138. package/dest/crypto/schnorr/signature.js +21 -37
  139. package/dest/crypto/secp256k1/index.d.ts +5 -7
  140. package/dest/crypto/secp256k1/index.d.ts.map +1 -1
  141. package/dest/crypto/secp256k1/index.js +23 -18
  142. package/dest/crypto/secp256k1-signer/index.d.ts +1 -1
  143. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts +1 -1
  144. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts.map +1 -1
  145. package/dest/crypto/secp256k1-signer/utils.d.ts +67 -5
  146. package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -1
  147. package/dest/crypto/secp256k1-signer/utils.js +118 -6
  148. package/dest/crypto/sha256/index.d.ts +23 -6
  149. package/dest/crypto/sha256/index.d.ts.map +1 -1
  150. package/dest/crypto/sha256/index.js +43 -1
  151. package/dest/crypto/sha512/index.d.ts +3 -5
  152. package/dest/crypto/sha512/index.d.ts.map +1 -1
  153. package/dest/crypto/sha512/index.js +1 -1
  154. package/dest/crypto/signature/index.d.ts +2 -4
  155. package/dest/crypto/signature/index.d.ts.map +1 -1
  156. package/dest/crypto/sync/index.d.ts +1 -1
  157. package/dest/crypto/sync/index.js +1 -1
  158. package/dest/crypto/sync/pedersen/index.d.ts +4 -6
  159. package/dest/crypto/sync/pedersen/index.d.ts.map +1 -1
  160. package/dest/crypto/sync/pedersen/index.js +18 -11
  161. package/dest/crypto/sync/poseidon/index.d.ts +2 -5
  162. package/dest/crypto/sync/poseidon/index.d.ts.map +1 -1
  163. package/dest/crypto/sync/poseidon/index.js +23 -16
  164. package/dest/curves/bls12/field.d.ts +148 -0
  165. package/dest/curves/bls12/field.d.ts.map +1 -0
  166. package/dest/curves/bls12/field.js +357 -0
  167. package/dest/curves/bls12/index.d.ts +3 -0
  168. package/dest/curves/bls12/index.d.ts.map +1 -0
  169. package/dest/curves/bls12/index.js +2 -0
  170. package/dest/curves/bls12/point.d.ts +229 -0
  171. package/dest/curves/bls12/point.d.ts.map +1 -0
  172. package/dest/curves/bls12/point.js +400 -0
  173. package/dest/curves/bn254/field.d.ts +185 -0
  174. package/dest/curves/bn254/field.d.ts.map +1 -0
  175. package/dest/{fields/fields.js → curves/bn254/field.js} +111 -74
  176. package/dest/curves/bn254/index.d.ts +3 -0
  177. package/dest/curves/bn254/index.d.ts.map +1 -0
  178. package/dest/curves/bn254/index.js +2 -0
  179. package/dest/curves/bn254/point.d.ts +54 -0
  180. package/dest/curves/bn254/point.d.ts.map +1 -0
  181. package/dest/curves/bn254/point.js +143 -0
  182. package/dest/curves/grumpkin/index.d.ts +10 -0
  183. package/dest/curves/grumpkin/index.d.ts.map +1 -0
  184. package/dest/curves/grumpkin/index.js +3 -0
  185. package/dest/{fields → curves/grumpkin}/point.d.ts +26 -33
  186. package/dest/curves/grumpkin/point.d.ts.map +1 -0
  187. package/dest/{fields → curves/grumpkin}/point.js +53 -50
  188. package/dest/decorators/index.d.ts +1 -1
  189. package/dest/decorators/memoize.d.ts +1 -1
  190. package/dest/decorators/memoize.d.ts.map +1 -1
  191. package/dest/error/index.d.ts +1 -1
  192. package/dest/eth-address/index.d.ts +19 -10
  193. package/dest/eth-address/index.d.ts.map +1 -1
  194. package/dest/eth-address/index.js +31 -5
  195. package/dest/eth-signature/eth_signature.d.ts +19 -16
  196. package/dest/eth-signature/eth_signature.d.ts.map +1 -1
  197. package/dest/eth-signature/eth_signature.js +37 -18
  198. package/dest/eth-signature/index.d.ts +1 -1
  199. package/dest/fifo/fifo_frame_reader.d.ts +41 -0
  200. package/dest/fifo/fifo_frame_reader.d.ts.map +1 -0
  201. package/dest/fifo/fifo_frame_reader.js +91 -0
  202. package/dest/fifo/index.d.ts +2 -0
  203. package/dest/fifo/index.d.ts.map +1 -0
  204. package/dest/fifo/index.js +1 -0
  205. package/dest/fifo_set/fifo_set.d.ts +15 -0
  206. package/dest/fifo_set/fifo_set.d.ts.map +1 -0
  207. package/dest/fifo_set/fifo_set.js +39 -0
  208. package/dest/fifo_set/index.d.ts +2 -0
  209. package/dest/fifo_set/index.d.ts.map +1 -0
  210. package/dest/fifo_set/index.js +1 -0
  211. package/dest/fs/index.d.ts +2 -1
  212. package/dest/fs/index.d.ts.map +1 -1
  213. package/dest/fs/index.js +1 -0
  214. package/dest/fs/run_in_dir.d.ts +1 -1
  215. package/dest/fs/try_rm_dir.d.ts +3 -0
  216. package/dest/fs/try_rm_dir.d.ts.map +1 -0
  217. package/dest/fs/try_rm_dir.js +16 -0
  218. package/dest/iterable/all.d.ts +1 -1
  219. package/dest/iterable/filter.d.ts +1 -1
  220. package/dest/iterable/filter.js +1 -1
  221. package/dest/iterable/index.d.ts +1 -1
  222. package/dest/iterable/isAsyncIt.d.ts +1 -1
  223. package/dest/iterable/map.d.ts +1 -1
  224. package/dest/iterable/map.js +1 -1
  225. package/dest/iterable/peek.d.ts +1 -1
  226. package/dest/iterable/sort.d.ts +1 -1
  227. package/dest/iterable/take.d.ts +1 -1
  228. package/dest/iterable/toArray.d.ts +1 -1
  229. package/dest/iterator/filter.d.ts +3 -0
  230. package/dest/iterator/filter.d.ts.map +1 -0
  231. package/dest/iterator/filter.js +7 -0
  232. package/dest/iterator/index.d.ts +2 -0
  233. package/dest/iterator/index.d.ts.map +1 -0
  234. package/dest/iterator/index.js +1 -0
  235. package/dest/jest/env.js +48 -0
  236. package/dest/jest/setup.js +28 -1
  237. package/dest/jest/setupAfterEnv.js +3 -0
  238. package/dest/json-rpc/client/fetch.d.ts +3 -3
  239. package/dest/json-rpc/client/fetch.d.ts.map +1 -1
  240. package/dest/json-rpc/client/fetch.js +18 -31
  241. package/dest/json-rpc/client/index.d.ts +1 -1
  242. package/dest/json-rpc/client/safe_json_rpc_client.d.ts +11 -4
  243. package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -1
  244. package/dest/json-rpc/client/safe_json_rpc_client.js +175 -15
  245. package/dest/json-rpc/client/undici.d.ts +1 -1
  246. package/dest/json-rpc/client/undici.d.ts.map +1 -1
  247. package/dest/json-rpc/client/undici.js +29 -11
  248. package/dest/json-rpc/convert.d.ts +3 -10
  249. package/dest/json-rpc/convert.d.ts.map +1 -1
  250. package/dest/json-rpc/convert.js +1 -9
  251. package/dest/json-rpc/errors.d.ts +4 -0
  252. package/dest/json-rpc/errors.d.ts.map +1 -0
  253. package/dest/json-rpc/errors.js +6 -0
  254. package/dest/json-rpc/fixtures/class_a.d.ts +6 -4
  255. package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -1
  256. package/dest/json-rpc/fixtures/class_b.d.ts +6 -4
  257. package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -1
  258. package/dest/json-rpc/fixtures/test_state.d.ts +4 -8
  259. package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -1
  260. package/dest/json-rpc/fixtures/test_state.js +57 -17
  261. package/dest/json-rpc/index.d.ts +3 -2
  262. package/dest/json-rpc/index.d.ts.map +1 -1
  263. package/dest/json-rpc/index.js +2 -1
  264. package/dest/json-rpc/js_utils.d.ts +1 -1
  265. package/dest/json-rpc/js_utils.d.ts.map +1 -1
  266. package/dest/json-rpc/server/api_key_auth.d.ts +19 -0
  267. package/dest/json-rpc/server/api_key_auth.d.ts.map +1 -0
  268. package/dest/json-rpc/server/api_key_auth.js +57 -0
  269. package/dest/json-rpc/server/index.d.ts +2 -1
  270. package/dest/json-rpc/server/index.d.ts.map +1 -1
  271. package/dest/json-rpc/server/index.js +1 -0
  272. package/dest/json-rpc/server/safe_json_rpc_server.d.ts +29 -25
  273. package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -1
  274. package/dest/json-rpc/server/safe_json_rpc_server.js +178 -59
  275. package/dest/json-rpc/test/index.d.ts +1 -1
  276. package/dest/json-rpc/test/integration.d.ts +2 -3
  277. package/dest/json-rpc/test/integration.d.ts.map +1 -1
  278. package/dest/log/bigint-utils.d.ts +5 -0
  279. package/dest/log/bigint-utils.d.ts.map +1 -0
  280. package/dest/log/bigint-utils.js +21 -0
  281. package/dest/log/console.d.ts +1 -1
  282. package/dest/log/console.d.ts.map +1 -1
  283. package/dest/log/gcloud-logger-config.d.ts +1 -2
  284. package/dest/log/gcloud-logger-config.d.ts.map +1 -1
  285. package/dest/log/gcloud-logger-config.js +4 -9
  286. package/dest/log/index.d.ts +5 -5
  287. package/dest/log/index.d.ts.map +1 -1
  288. package/dest/log/index.js +4 -4
  289. package/dest/log/libp2p_logger.d.ts +5 -2
  290. package/dest/log/libp2p_logger.d.ts.map +1 -1
  291. package/dest/log/libp2p_logger.js +27 -6
  292. package/dest/log/log-filters.d.ts +17 -4
  293. package/dest/log/log-filters.d.ts.map +1 -1
  294. package/dest/log/log-filters.js +26 -12
  295. package/dest/log/log-levels.d.ts +1 -1
  296. package/dest/log/log_fn.d.ts +2 -2
  297. package/dest/log/log_fn.d.ts.map +1 -1
  298. package/dest/log/noir_debug_log_util.d.ts +14 -0
  299. package/dest/log/noir_debug_log_util.d.ts.map +1 -0
  300. package/dest/log/noir_debug_log_util.js +14 -0
  301. package/dest/log/pino-logger-server.d.ts +9 -0
  302. package/dest/log/pino-logger-server.d.ts.map +1 -0
  303. package/dest/log/pino-logger-server.js +18 -0
  304. package/dest/log/pino-logger.d.ts +40 -11
  305. package/dest/log/pino-logger.d.ts.map +1 -1
  306. package/dest/log/pino-logger.js +165 -31
  307. package/dest/message/index.d.ts +1 -1
  308. package/dest/message/index.d.ts.map +1 -1
  309. package/dest/mutex/index.d.ts +1 -1
  310. package/dest/mutex/index.d.ts.map +1 -1
  311. package/dest/mutex/mutex_database.d.ts +1 -1
  312. package/dest/mutex/mutex_database.d.ts.map +1 -1
  313. package/dest/noir/index.d.ts +1 -1
  314. package/dest/noir/noir_package_config.d.ts +19 -104
  315. package/dest/noir/noir_package_config.d.ts.map +1 -1
  316. package/dest/noir/noir_package_config.js +1 -1
  317. package/dest/number/index.d.ts +3 -0
  318. package/dest/number/index.d.ts.map +1 -0
  319. package/dest/number/index.js +12 -0
  320. package/dest/profiler/index.d.ts +2 -0
  321. package/dest/profiler/index.d.ts.map +1 -0
  322. package/dest/profiler/index.js +1 -0
  323. package/dest/profiler/profiler.d.ts +8 -0
  324. package/dest/profiler/profiler.d.ts.map +1 -0
  325. package/dest/profiler/profiler.js +97 -0
  326. package/dest/promise/index.d.ts +1 -1
  327. package/dest/promise/running-promise.d.ts +2 -2
  328. package/dest/promise/running-promise.d.ts.map +1 -1
  329. package/dest/promise/running-promise.js +2 -2
  330. package/dest/promise/utils.d.ts +1 -1
  331. package/dest/queue/base_memory_queue.d.ts +2 -2
  332. package/dest/queue/base_memory_queue.d.ts.map +1 -1
  333. package/dest/queue/batch_queue.d.ts +2 -2
  334. package/dest/queue/batch_queue.d.ts.map +1 -1
  335. package/dest/queue/batch_queue.js +2 -1
  336. package/dest/queue/bounded_serial_queue.d.ts +1 -1
  337. package/dest/queue/bounded_serial_queue.d.ts.map +1 -1
  338. package/dest/queue/fifo_memory_queue.d.ts +1 -1
  339. package/dest/queue/fifo_memory_queue.d.ts.map +1 -1
  340. package/dest/queue/index.d.ts +1 -1
  341. package/dest/queue/priority_memory_queue.d.ts +1 -1
  342. package/dest/queue/priority_memory_queue.d.ts.map +1 -1
  343. package/dest/queue/priority_queue.d.ts +1 -1
  344. package/dest/queue/priority_queue.d.ts.map +1 -1
  345. package/dest/queue/semaphore.d.ts +5 -1
  346. package/dest/queue/semaphore.d.ts.map +1 -1
  347. package/dest/queue/serial_queue.d.ts +3 -3
  348. package/dest/queue/serial_queue.d.ts.map +1 -1
  349. package/dest/queue/serial_queue.js +7 -5
  350. package/dest/retry/index.d.ts +25 -3
  351. package/dest/retry/index.d.ts.map +1 -1
  352. package/dest/retry/index.js +34 -2
  353. package/dest/running-promise/index.d.ts +1 -1
  354. package/dest/schemas/api.d.ts +12 -10
  355. package/dest/schemas/api.d.ts.map +1 -1
  356. package/dest/schemas/api.js +7 -1
  357. package/dest/schemas/index.d.ts +1 -1
  358. package/dest/schemas/parse.d.ts +4 -4
  359. package/dest/schemas/parse.d.ts.map +1 -1
  360. package/dest/schemas/parse.js +7 -6
  361. package/dest/schemas/schemas.d.ts +30 -29
  362. package/dest/schemas/schemas.d.ts.map +1 -1
  363. package/dest/schemas/schemas.js +29 -11
  364. package/dest/schemas/types.d.ts +32 -2
  365. package/dest/schemas/types.d.ts.map +1 -1
  366. package/dest/schemas/types.js +25 -1
  367. package/dest/schemas/utils.d.ts +10 -16
  368. package/dest/schemas/utils.d.ts.map +1 -1
  369. package/dest/schemas/utils.js +17 -23
  370. package/dest/serialize/buffer_reader.d.ts +41 -6
  371. package/dest/serialize/buffer_reader.d.ts.map +1 -1
  372. package/dest/serialize/buffer_reader.js +70 -6
  373. package/dest/serialize/buffer_sink.d.ts +134 -0
  374. package/dest/serialize/buffer_sink.d.ts.map +1 -0
  375. package/dest/serialize/buffer_sink.js +297 -0
  376. package/dest/serialize/field_reader.d.ts +12 -3
  377. package/dest/serialize/field_reader.d.ts.map +1 -1
  378. package/dest/serialize/field_reader.js +19 -2
  379. package/dest/serialize/free_funcs.d.ts +25 -23
  380. package/dest/serialize/free_funcs.d.ts.map +1 -1
  381. package/dest/serialize/free_funcs.js +22 -28
  382. package/dest/serialize/index.d.ts +2 -1
  383. package/dest/serialize/index.d.ts.map +1 -1
  384. package/dest/serialize/index.js +1 -0
  385. package/dest/serialize/serialize.d.ts +24 -7
  386. package/dest/serialize/serialize.d.ts.map +1 -1
  387. package/dest/serialize/serialize.js +32 -1
  388. package/dest/serialize/type_registry.d.ts +1 -1
  389. package/dest/serialize/type_registry.d.ts.map +1 -1
  390. package/dest/serialize/types.d.ts +1 -1
  391. package/dest/sleep/index.d.ts +4 -1
  392. package/dest/sleep/index.d.ts.map +1 -1
  393. package/dest/sleep/index.js +14 -1
  394. package/dest/string/index.d.ts +8 -3
  395. package/dest/string/index.d.ts.map +1 -1
  396. package/dest/string/index.js +27 -1
  397. package/dest/testing/files/index.d.ts +2 -3
  398. package/dest/testing/files/index.d.ts.map +1 -1
  399. package/dest/testing/files/index.js +3 -3
  400. package/dest/testing/formatting.d.ts +4 -0
  401. package/dest/testing/formatting.d.ts.map +1 -0
  402. package/dest/testing/formatting.js +3 -0
  403. package/dest/testing/index.d.ts +2 -1
  404. package/dest/testing/index.d.ts.map +1 -1
  405. package/dest/testing/index.js +1 -0
  406. package/dest/testing/port_allocator.d.ts +1 -1
  407. package/dest/testing/snapshot_serializer.d.ts +1 -1
  408. package/dest/testing/test_data.d.ts +1 -1
  409. package/dest/timer/date.d.ts +28 -2
  410. package/dest/timer/date.d.ts.map +1 -1
  411. package/dest/timer/date.js +41 -3
  412. package/dest/timer/elapsed.d.ts +1 -1
  413. package/dest/timer/index.d.ts +2 -2
  414. package/dest/timer/index.d.ts.map +1 -1
  415. package/dest/timer/index.js +1 -1
  416. package/dest/timer/timeout.d.ts +21 -6
  417. package/dest/timer/timeout.d.ts.map +1 -1
  418. package/dest/timer/timeout.js +69 -22
  419. package/dest/timer/timer.d.ts +1 -1
  420. package/dest/timer/timer.d.ts.map +1 -1
  421. package/dest/transport/dispatch/create_dispatch_proxy.d.ts +11 -2
  422. package/dest/transport/dispatch/create_dispatch_proxy.d.ts.map +1 -1
  423. package/dest/transport/dispatch/messages.d.ts +1 -1
  424. package/dest/transport/index.d.ts +1 -3
  425. package/dest/transport/index.d.ts.map +1 -1
  426. package/dest/transport/index.js +0 -2
  427. package/dest/transport/interface/connector.d.ts +1 -1
  428. package/dest/transport/interface/connector.d.ts.map +1 -1
  429. package/dest/transport/interface/listener.d.ts +1 -2
  430. package/dest/transport/interface/listener.d.ts.map +1 -1
  431. package/dest/transport/interface/socket.d.ts +1 -1
  432. package/dest/transport/interface/socket.d.ts.map +1 -1
  433. package/dest/transport/interface/transferable.d.ts +1 -1
  434. package/dest/transport/node/index.d.ts +1 -1
  435. package/dest/transport/node/node_connector.d.ts +1 -2
  436. package/dest/transport/node/node_connector.d.ts.map +1 -1
  437. package/dest/transport/node/node_connector_socket.d.ts +1 -2
  438. package/dest/transport/node/node_connector_socket.d.ts.map +1 -1
  439. package/dest/transport/node/node_listener.d.ts +1 -2
  440. package/dest/transport/node/node_listener.d.ts.map +1 -1
  441. package/dest/transport/node/node_listener_socket.d.ts +1 -2
  442. package/dest/transport/node/node_listener_socket.d.ts.map +1 -1
  443. package/dest/transport/transport_client.d.ts +1 -2
  444. package/dest/transport/transport_client.d.ts.map +1 -1
  445. package/dest/transport/transport_client.js +2 -2
  446. package/dest/transport/transport_server.d.ts +1 -10
  447. package/dest/transport/transport_server.d.ts.map +1 -1
  448. package/dest/trees/balanced_merkle_tree_root.d.ts +16 -0
  449. package/dest/trees/balanced_merkle_tree_root.d.ts.map +1 -0
  450. package/dest/trees/balanced_merkle_tree_root.js +50 -0
  451. package/dest/trees/hasher.d.ts +8 -7
  452. package/dest/trees/hasher.d.ts.map +1 -1
  453. package/dest/trees/hasher.js +10 -5
  454. package/dest/trees/index.d.ts +5 -3
  455. package/dest/trees/index.d.ts.map +1 -1
  456. package/dest/trees/index.js +4 -2
  457. package/dest/trees/indexed_merkle_tree.d.ts +1 -3
  458. package/dest/trees/indexed_merkle_tree.d.ts.map +1 -1
  459. package/dest/trees/indexed_merkle_tree.js +1 -1
  460. package/dest/trees/indexed_merkle_tree_calculator.d.ts +2 -4
  461. package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -1
  462. package/dest/trees/indexed_merkle_tree_calculator.js +5 -1
  463. package/dest/trees/indexed_tree_leaf.d.ts +1 -3
  464. package/dest/trees/indexed_tree_leaf.d.ts.map +1 -1
  465. package/dest/trees/membership_witness.d.ts +10 -5
  466. package/dest/trees/membership_witness.d.ts.map +1 -1
  467. package/dest/trees/membership_witness.js +23 -1
  468. package/dest/trees/merkle_tree.d.ts +1 -3
  469. package/dest/trees/merkle_tree.d.ts.map +1 -1
  470. package/dest/trees/merkle_tree_calculator.d.ts +4 -4
  471. package/dest/trees/merkle_tree_calculator.d.ts.map +1 -1
  472. package/dest/trees/merkle_tree_calculator.js +1 -5
  473. package/dest/trees/sibling_path.d.ts +7 -41
  474. package/dest/trees/sibling_path.d.ts.map +1 -1
  475. package/dest/trees/sibling_path.js +11 -9
  476. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts +48 -0
  477. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts.map +1 -0
  478. package/dest/trees/unbalanced_merkle_tree_calculator.js +154 -0
  479. package/dest/trees/unbalanced_merkle_tree_root.d.ts +27 -0
  480. package/dest/trees/unbalanced_merkle_tree_root.d.ts.map +1 -0
  481. package/dest/trees/unbalanced_merkle_tree_root.js +83 -0
  482. package/dest/trees/unbalanced_tree_store.d.ts +6 -1
  483. package/dest/trees/unbalanced_tree_store.d.ts.map +1 -1
  484. package/dest/trees/unbalanced_tree_store.js +55 -1
  485. package/dest/types/index.d.ts +52 -3
  486. package/dest/types/index.d.ts.map +1 -1
  487. package/dest/types/index.js +21 -0
  488. package/dest/url/index.d.ts +1 -1
  489. package/dest/url/index.d.ts.map +1 -1
  490. package/dest/url/index.js +1 -1
  491. package/dest/validation/index.d.ts +1 -1
  492. package/package.json +84 -47
  493. package/src/array/array.ts +13 -16
  494. package/src/array/index.ts +1 -0
  495. package/src/array/sorted_array.ts +138 -0
  496. package/src/async-pool/index.ts +1 -0
  497. package/src/bigint/index.ts +20 -0
  498. package/src/bigint-buffer/index.ts +6 -1
  499. package/src/branded-types/block_number.ts +135 -0
  500. package/src/branded-types/buffer32_hash.ts +38 -0
  501. package/src/branded-types/checkpoint_number.ts +130 -0
  502. package/src/branded-types/epoch.ts +88 -0
  503. package/src/branded-types/index.ts +8 -0
  504. package/src/branded-types/index_within_checkpoint.ts +88 -0
  505. package/src/branded-types/slot.ts +93 -0
  506. package/src/branded-types/types.ts +2 -0
  507. package/src/buffer/buffer16.ts +136 -0
  508. package/src/buffer/buffer32.ts +47 -74
  509. package/src/buffer/index.ts +2 -0
  510. package/src/buffer/utils.ts +8 -0
  511. package/src/collection/array.ts +152 -4
  512. package/src/collection/index.ts +2 -0
  513. package/src/collection/lru_map.ts +143 -0
  514. package/src/collection/lru_set.ts +115 -0
  515. package/src/collection/object.ts +37 -0
  516. package/src/committable/committable.ts +1 -1
  517. package/src/config/env_var.ts +237 -63
  518. package/src/config/index.ts +265 -29
  519. package/src/config/network_config.ts +21 -0
  520. package/src/config/network_name.ts +28 -0
  521. package/src/config/parse-env.ts +4 -0
  522. package/src/config/secret_value.ts +49 -0
  523. package/src/crypto/aes128/index.ts +30 -12
  524. package/src/crypto/bls/bn254_keystore.ts +264 -0
  525. package/src/crypto/bls/index.ts +77 -0
  526. package/src/crypto/bn254/index.ts +64 -0
  527. package/src/crypto/ecdsa/index.ts +41 -23
  528. package/src/crypto/ecdsa/signature.ts +2 -2
  529. package/src/crypto/grumpkin/index.ts +38 -46
  530. package/src/crypto/keys/index.ts +6 -6
  531. package/src/crypto/pedersen/pedersen.wasm.ts +23 -19
  532. package/src/crypto/poseidon/index.ts +43 -37
  533. package/src/crypto/random/index.ts +2 -40
  534. package/src/crypto/random/randomness_singleton.ts +6 -4
  535. package/src/crypto/schnorr/index.ts +29 -24
  536. package/src/crypto/schnorr/signature.ts +18 -47
  537. package/src/crypto/secp256k1/index.ts +15 -11
  538. package/src/crypto/secp256k1-signer/utils.ts +152 -7
  539. package/src/crypto/sha256/index.ts +48 -1
  540. package/src/crypto/sha512/index.ts +1 -1
  541. package/src/crypto/signature/index.ts +1 -1
  542. package/src/crypto/sync/index.ts +1 -1
  543. package/src/crypto/sync/pedersen/index.ts +17 -16
  544. package/src/crypto/sync/poseidon/index.ts +23 -27
  545. package/src/curves/bls12/field.ts +456 -0
  546. package/src/curves/bls12/index.ts +2 -0
  547. package/src/curves/bls12/point.ts +450 -0
  548. package/src/{fields/fields.ts → curves/bn254/field.ts} +117 -91
  549. package/src/curves/bn254/index.ts +2 -0
  550. package/src/curves/bn254/point.ts +170 -0
  551. package/src/curves/grumpkin/index.ts +11 -0
  552. package/src/{fields → curves/grumpkin}/point.ts +47 -47
  553. package/src/eth-address/index.ts +35 -7
  554. package/src/eth-signature/eth_signature.ts +50 -22
  555. package/src/fifo/fifo_frame_reader.ts +113 -0
  556. package/src/fifo/index.ts +1 -0
  557. package/src/fifo_set/fifo_set.ts +52 -0
  558. package/src/fifo_set/index.ts +1 -0
  559. package/src/fs/index.ts +1 -0
  560. package/src/fs/try_rm_dir.ts +15 -0
  561. package/src/iterable/filter.ts +1 -1
  562. package/src/iterable/map.ts +1 -1
  563. package/src/iterator/filter.ts +11 -0
  564. package/src/iterator/index.ts +1 -0
  565. package/src/jest/env.mjs +52 -0
  566. package/src/jest/setup.mjs +31 -1
  567. package/src/jest/setupAfterEnv.mjs +3 -0
  568. package/src/json-rpc/client/fetch.ts +16 -34
  569. package/src/json-rpc/client/safe_json_rpc_client.ts +230 -15
  570. package/src/json-rpc/client/undici.ts +31 -18
  571. package/src/json-rpc/convert.ts +3 -12
  572. package/src/json-rpc/errors.ts +6 -0
  573. package/src/json-rpc/fixtures/class_a.ts +4 -1
  574. package/src/json-rpc/fixtures/class_b.ts +4 -1
  575. package/src/json-rpc/fixtures/test_state.ts +10 -10
  576. package/src/json-rpc/index.ts +2 -1
  577. package/src/json-rpc/server/api_key_auth.ts +63 -0
  578. package/src/json-rpc/server/index.ts +1 -0
  579. package/src/json-rpc/server/safe_json_rpc_server.ts +162 -51
  580. package/src/json-rpc/test/integration.ts +1 -1
  581. package/src/log/bigint-utils.ts +25 -0
  582. package/src/log/console.ts +4 -1
  583. package/src/log/gcloud-logger-config.ts +8 -7
  584. package/src/log/index.ts +4 -4
  585. package/src/log/libp2p_logger.ts +33 -7
  586. package/src/log/log-filters.ts +29 -11
  587. package/src/log/log_fn.ts +1 -1
  588. package/src/log/noir_debug_log_util.ts +21 -0
  589. package/src/log/pino-logger-server.ts +25 -0
  590. package/src/log/pino-logger.ts +193 -40
  591. package/src/message/index.ts +5 -1
  592. package/src/mutex/mutex_database.ts +2 -3
  593. package/src/noir/noir_package_config.ts +32 -20
  594. package/src/number/index.ts +14 -0
  595. package/src/profiler/index.ts +1 -0
  596. package/src/profiler/profiler.ts +125 -0
  597. package/src/promise/running-promise.ts +2 -2
  598. package/src/queue/base_memory_queue.ts +1 -1
  599. package/src/queue/batch_queue.ts +2 -1
  600. package/src/queue/bounded_serial_queue.ts +4 -1
  601. package/src/queue/semaphore.ts +5 -0
  602. package/src/queue/serial_queue.ts +5 -5
  603. package/src/retry/index.ts +58 -5
  604. package/src/schemas/api.ts +25 -25
  605. package/src/schemas/parse.ts +10 -7
  606. package/src/schemas/schemas.ts +45 -16
  607. package/src/schemas/types.ts +34 -1
  608. package/src/schemas/utils.ts +25 -46
  609. package/src/serialize/buffer_reader.ts +96 -12
  610. package/src/serialize/buffer_sink.ts +350 -0
  611. package/src/serialize/field_reader.ts +28 -4
  612. package/src/serialize/free_funcs.ts +26 -32
  613. package/src/serialize/index.ts +1 -0
  614. package/src/serialize/serialize.ts +35 -1
  615. package/src/sleep/index.ts +16 -1
  616. package/src/string/index.ts +36 -1
  617. package/src/testing/files/index.ts +7 -3
  618. package/src/testing/formatting.ts +3 -0
  619. package/src/testing/index.ts +1 -0
  620. package/src/timer/date.ts +61 -3
  621. package/src/timer/index.ts +1 -1
  622. package/src/timer/timeout.ts +85 -19
  623. package/src/transport/dispatch/create_dispatch_proxy.ts +11 -1
  624. package/src/transport/index.ts +0 -2
  625. package/src/transport/interface/connector.ts +0 -1
  626. package/src/transport/interface/listener.ts +2 -3
  627. package/src/transport/interface/socket.ts +2 -3
  628. package/src/transport/transport_client.ts +5 -6
  629. package/src/transport/transport_server.ts +4 -1
  630. package/src/trees/balanced_merkle_tree_root.ts +65 -0
  631. package/src/trees/hasher.ts +16 -4
  632. package/src/trees/index.ts +4 -2
  633. package/src/trees/indexed_merkle_tree.ts +6 -2
  634. package/src/trees/indexed_merkle_tree_calculator.ts +7 -3
  635. package/src/trees/membership_witness.ts +22 -1
  636. package/src/trees/merkle_tree.ts +4 -1
  637. package/src/trees/merkle_tree_calculator.ts +9 -10
  638. package/src/trees/sibling_path.ts +12 -7
  639. package/src/trees/unbalanced_merkle_tree_calculator.ts +176 -0
  640. package/src/trees/unbalanced_merkle_tree_root.ts +112 -0
  641. package/src/trees/unbalanced_tree_store.ts +62 -3
  642. package/src/types/index.ts +82 -4
  643. package/src/url/index.ts +0 -1
  644. package/dest/crypto/index.d.ts +0 -15
  645. package/dest/crypto/index.d.ts.map +0 -1
  646. package/dest/crypto/index.js +0 -14
  647. package/dest/crypto/pedersen/pedersen.elliptic.d.ts +0 -13
  648. package/dest/crypto/pedersen/pedersen.elliptic.d.ts.map +0 -1
  649. package/dest/crypto/pedersen/pedersen.elliptic.js +0 -582
  650. package/dest/crypto/serialize.d.ts +0 -53
  651. package/dest/crypto/serialize.d.ts.map +0 -1
  652. package/dest/crypto/serialize.js +0 -68
  653. package/dest/fields/coordinate.d.ts +0 -68
  654. package/dest/fields/coordinate.d.ts.map +0 -1
  655. package/dest/fields/coordinate.js +0 -96
  656. package/dest/fields/fields.d.ts +0 -176
  657. package/dest/fields/fields.d.ts.map +0 -1
  658. package/dest/fields/index.d.ts +0 -4
  659. package/dest/fields/index.d.ts.map +0 -1
  660. package/dest/fields/index.js +0 -3
  661. package/dest/fields/point.d.ts.map +0 -1
  662. package/dest/index.d.ts +0 -31
  663. package/dest/index.d.ts.map +0 -1
  664. package/dest/index.js +0 -31
  665. package/dest/json-rpc/server/telemetry.d.ts +0 -2
  666. package/dest/json-rpc/server/telemetry.d.ts.map +0 -1
  667. package/dest/json-rpc/server/telemetry.js +0 -0
  668. package/dest/log/debug.d.ts +0 -56
  669. package/dest/log/debug.d.ts.map +0 -1
  670. package/dest/log/debug.js +0 -75
  671. package/dest/log/log_history.d.ts +0 -31
  672. package/dest/log/log_history.d.ts.map +0 -1
  673. package/dest/log/log_history.js +0 -38
  674. package/dest/transport/browser/index.d.ts +0 -5
  675. package/dest/transport/browser/index.d.ts.map +0 -1
  676. package/dest/transport/browser/index.js +0 -4
  677. package/dest/transport/browser/message_port_socket.d.ts +0 -37
  678. package/dest/transport/browser/message_port_socket.d.ts.map +0 -1
  679. package/dest/transport/browser/message_port_socket.js +0 -42
  680. package/dest/transport/browser/shared_worker_connector.d.ts +0 -19
  681. package/dest/transport/browser/shared_worker_connector.d.ts.map +0 -1
  682. package/dest/transport/browser/shared_worker_connector.js +0 -19
  683. package/dest/transport/browser/shared_worker_listener.d.ts +0 -38
  684. package/dest/transport/browser/shared_worker_listener.d.ts.map +0 -1
  685. package/dest/transport/browser/shared_worker_listener.js +0 -33
  686. package/dest/transport/browser/worker_connector.d.ts +0 -26
  687. package/dest/transport/browser/worker_connector.d.ts.map +0 -1
  688. package/dest/transport/browser/worker_connector.js +0 -30
  689. package/dest/transport/browser/worker_listener.d.ts +0 -39
  690. package/dest/transport/browser/worker_listener.d.ts.map +0 -1
  691. package/dest/transport/browser/worker_listener.js +0 -35
  692. package/dest/transport/dispatch/create_dispatch_fn.d.ts +0 -25
  693. package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +0 -1
  694. package/dest/transport/dispatch/create_dispatch_fn.js +0 -17
  695. package/dest/trees/unbalanced_merkle_tree.d.ts +0 -17
  696. package/dest/trees/unbalanced_merkle_tree.d.ts.map +0 -1
  697. package/dest/trees/unbalanced_merkle_tree.js +0 -100
  698. package/dest/wasm/empty_wasi_sdk.d.ts +0 -130
  699. package/dest/wasm/empty_wasi_sdk.d.ts.map +0 -1
  700. package/dest/wasm/empty_wasi_sdk.js +0 -148
  701. package/dest/wasm/index.d.ts +0 -2
  702. package/dest/wasm/index.d.ts.map +0 -1
  703. package/dest/wasm/index.js +0 -1
  704. package/dest/wasm/wasm_module.d.ts +0 -136
  705. package/dest/wasm/wasm_module.d.ts.map +0 -1
  706. package/dest/wasm/wasm_module.js +0 -196
  707. package/dest/worker/browser/index.d.ts +0 -3
  708. package/dest/worker/browser/index.d.ts.map +0 -1
  709. package/dest/worker/browser/index.js +0 -2
  710. package/dest/worker/browser/start_web_module.d.ts +0 -7
  711. package/dest/worker/browser/start_web_module.d.ts.map +0 -1
  712. package/dest/worker/browser/start_web_module.js +0 -27
  713. package/dest/worker/browser/web_data_store.d.ts +0 -24
  714. package/dest/worker/browser/web_data_store.d.ts.map +0 -1
  715. package/dest/worker/browser/web_data_store.js +0 -29
  716. package/dest/worker/browser/web_worker.d.ts +0 -10
  717. package/dest/worker/browser/web_worker.d.ts.map +0 -1
  718. package/dest/worker/browser/web_worker.js +0 -25
  719. package/dest/worker/data_store.d.ts +0 -21
  720. package/dest/worker/data_store.d.ts.map +0 -1
  721. package/dest/worker/data_store.js +0 -3
  722. package/dest/worker/index.d.ts +0 -3
  723. package/dest/worker/index.d.ts.map +0 -1
  724. package/dest/worker/index.js +0 -1
  725. package/dest/worker/node/index.d.ts +0 -3
  726. package/dest/worker/node/index.d.ts.map +0 -1
  727. package/dest/worker/node/index.js +0 -2
  728. package/dest/worker/node/node_data_store.d.ts +0 -13
  729. package/dest/worker/node/node_data_store.d.ts.map +0 -1
  730. package/dest/worker/node/node_data_store.js +0 -20
  731. package/dest/worker/node/node_worker.d.ts +0 -6
  732. package/dest/worker/node/node_worker.d.ts.map +0 -1
  733. package/dest/worker/node/node_worker.js +0 -22
  734. package/dest/worker/node/start_node_module.d.ts +0 -7
  735. package/dest/worker/node/start_node_module.d.ts.map +0 -1
  736. package/dest/worker/node/start_node_module.js +0 -31
  737. package/dest/worker/wasm_worker.d.ts +0 -9
  738. package/dest/worker/wasm_worker.d.ts.map +0 -1
  739. package/dest/worker/wasm_worker.js +0 -3
  740. package/dest/worker/worker_pool.d.ts +0 -40
  741. package/dest/worker/worker_pool.d.ts.map +0 -1
  742. package/dest/worker/worker_pool.js +0 -51
  743. package/src/crypto/index.ts +0 -14
  744. package/src/crypto/pedersen/pedersen.elliptic.ts +0 -584
  745. package/src/crypto/serialize.ts +0 -85
  746. package/src/fields/coordinate.ts +0 -104
  747. package/src/fields/index.ts +0 -3
  748. package/src/index.ts +0 -31
  749. package/src/json-rpc/server/telemetry.ts +0 -0
  750. package/src/log/debug.ts +0 -104
  751. package/src/log/log_history.ts +0 -44
  752. package/src/transport/browser/index.ts +0 -4
  753. package/src/transport/browser/message_port_socket.ts +0 -48
  754. package/src/transport/browser/shared_worker_connector.ts +0 -21
  755. package/src/transport/browser/shared_worker_listener.ts +0 -53
  756. package/src/transport/browser/worker_connector.ts +0 -30
  757. package/src/transport/browser/worker_listener.ts +0 -54
  758. package/src/transport/dispatch/create_dispatch_fn.ts +0 -35
  759. package/src/trees/unbalanced_merkle_tree.ts +0 -103
  760. package/src/wasm/README.md +0 -6
  761. package/src/wasm/empty_wasi_sdk.ts +0 -166
  762. package/src/wasm/fixtures/gcd.wasm +0 -0
  763. package/src/wasm/fixtures/gcd.wat +0 -27
  764. package/src/wasm/index.ts +0 -1
  765. package/src/wasm/wasm_module.ts +0 -260
  766. package/src/worker/browser/index.ts +0 -2
  767. package/src/worker/browser/start_web_module.ts +0 -24
  768. package/src/worker/browser/web_data_store.ts +0 -38
  769. package/src/worker/browser/web_worker.ts +0 -25
  770. package/src/worker/data_store.ts +0 -19
  771. package/src/worker/index.ts +0 -2
  772. package/src/worker/node/index.ts +0 -2
  773. package/src/worker/node/node_data_store.ts +0 -27
  774. package/src/worker/node/node_worker.ts +0 -23
  775. package/src/worker/node/start_node_module.ts +0 -30
  776. package/src/worker/wasm_worker.ts +0 -7
  777. package/src/worker/worker_pool.ts +0 -73
@@ -0,0 +1,63 @@
1
+ import { timingSafeEqual } from 'crypto';
2
+ import type Koa from 'koa';
3
+
4
+ import { sha256 } from '../../crypto/sha256/index.js';
5
+ import { createLogger } from '../../log/index.js';
6
+
7
+ const log = createLogger('json-rpc:api-key-auth');
8
+
9
+ /**
10
+ * Computes the SHA-256 hash of a string and returns it as a Buffer.
11
+ * @param input - The input string to hash.
12
+ * @returns The SHA-256 hash as a Buffer.
13
+ */
14
+ export function sha256Hash(input: string): Buffer {
15
+ return sha256(Buffer.from(input));
16
+ }
17
+
18
+ /**
19
+ * Creates a Koa middleware that enforces API key authentication on all requests
20
+ * except the health check endpoint (GET /status).
21
+ *
22
+ * The API key can be provided via the `x-api-key` header or the `Authorization: Bearer <key>` header.
23
+ * Comparison is done by hashing the provided key with SHA-256 and comparing against the stored hash.
24
+ *
25
+ * @param apiKeyHash - The SHA-256 hash of the expected API key as a Buffer.
26
+ * @returns A Koa middleware that rejects requests without a valid API key.
27
+ */
28
+ export function getApiKeyAuthMiddleware(
29
+ apiKeyHash: Buffer,
30
+ ): (ctx: Koa.Context, next: () => Promise<void>) => Promise<void> {
31
+ return async (ctx: Koa.Context, next: () => Promise<void>) => {
32
+ // Allow health check through without auth
33
+ if (ctx.path === '/status' && ctx.method === 'GET') {
34
+ return next();
35
+ }
36
+
37
+ const providedKey = ctx.get('x-api-key') || ctx.get('authorization')?.replace(/^Bearer\s+/i, '');
38
+ if (!providedKey) {
39
+ log.warn(`Rejected admin RPC request from ${ctx.ip}: missing API key`);
40
+ ctx.status = 401;
41
+ ctx.body = {
42
+ jsonrpc: '2.0',
43
+ id: null,
44
+ error: { code: -32000, message: 'Unauthorized: invalid or missing API key' },
45
+ };
46
+ return;
47
+ }
48
+
49
+ const providedHashBuf = sha256Hash(providedKey);
50
+ if (!timingSafeEqual(apiKeyHash, providedHashBuf)) {
51
+ log.warn(`Rejected admin RPC request from ${ctx.ip}: invalid API key`);
52
+ ctx.status = 401;
53
+ ctx.body = {
54
+ jsonrpc: '2.0',
55
+ id: null,
56
+ error: { code: -32000, message: 'Unauthorized: invalid or missing API key' },
57
+ };
58
+ return;
59
+ }
60
+
61
+ await next();
62
+ };
63
+ }
@@ -1 +1,2 @@
1
+ export * from './api_key_auth.js';
1
2
  export * from './safe_json_rpc_server.js';
@@ -10,7 +10,13 @@ import { ZodError } from 'zod';
10
10
 
11
11
  import { type Logger, createLogger } from '../../log/index.js';
12
12
  import { promiseWithResolvers } from '../../promise/utils.js';
13
- import { type ApiSchema, type ApiSchemaFor, parseWithOptionals, schemaHasMethod } from '../../schemas/index.js';
13
+ import {
14
+ type ApiSchema,
15
+ type ApiSchemaFor,
16
+ getSchemaParameters,
17
+ parseWithOptionals,
18
+ schemaHasMethod,
19
+ } from '../../schemas/index.js';
14
20
  import { jsonStringify } from '../convert.js';
15
21
  import { assert } from '../js_utils.js';
16
22
 
@@ -23,6 +29,21 @@ export type DiagnosticsData = {
23
29
 
24
30
  export type DiagnosticsMiddleware = (ctx: DiagnosticsData, next: () => Promise<void>) => Promise<void>;
25
31
 
32
+ export type SafeJsonRpcServerConfig = {
33
+ /** Maximum batch size for batched rpc requests */
34
+ maxBatchSize: number;
35
+ /** Return an HTTP 200 status code on errors, but include an error object as per the JSON RPC spec */
36
+ http200OnError: boolean;
37
+ /** The maximum body size the server will accept */
38
+ maxBodySizeBytes: string;
39
+ };
40
+
41
+ const defaultServerConfig: SafeJsonRpcServerConfig = {
42
+ http200OnError: false,
43
+ maxBatchSize: 100,
44
+ maxBodySizeBytes: '1mb',
45
+ };
46
+
26
47
  export class SafeJsonRpcServer {
27
48
  /**
28
49
  * The HTTP server accepting remote requests.
@@ -30,21 +51,28 @@ export class SafeJsonRpcServer {
30
51
  */
31
52
  private httpServer?: http.Server;
32
53
 
54
+ private config: SafeJsonRpcServerConfig;
55
+
33
56
  constructor(
34
- /** The proxy object to delegate requests to. */
57
+ /** The proxy object to delegate requests to */
35
58
  private readonly proxy: Proxy,
36
- /**
37
- * Return an HTTP 200 status code on errors, but include an error object
38
- * as per the JSON RPC spec
39
- */
40
- private http200OnError = false,
59
+ config: Partial<SafeJsonRpcServerConfig> = {},
41
60
  /** Health check function */
42
61
  private readonly healthCheck: StatusCheckFn = () => true,
43
- /** Additional middlewares */
62
+ /** Additional Koa middlewares */
44
63
  private extraMiddlewares: Application.Middleware[] = [],
64
+ /** Additional per-request diagnostics middlewares */
65
+ private diagnosticsMiddleware?: DiagnosticsMiddleware,
45
66
  /** Logger */
46
67
  private log = createLogger('json-rpc:server'),
47
- ) {}
68
+ ) {
69
+ this.config = { ...defaultServerConfig, ...config };
70
+
71
+ // handle empty string
72
+ if (!this.config.maxBodySizeBytes) {
73
+ this.config.maxBodySizeBytes = defaultServerConfig.maxBodySizeBytes;
74
+ }
75
+ }
48
76
 
49
77
  public isHealthy(): boolean | Promise<boolean> {
50
78
  return this.healthCheck();
@@ -63,20 +91,13 @@ export class SafeJsonRpcServer {
63
91
  await next();
64
92
  } catch (err: any) {
65
93
  const method = (ctx.request.body as any)?.method ?? 'unknown';
66
- this.log.warn(`Error in JSON RPC server call ${method}: ${inspect(err)}`);
67
- if (err instanceof SyntaxError) {
94
+ this.log.warn(`Uncaught error in JSON RPC server call ${method}: ${inspect(err)}`);
95
+ if (err && 'name' in err && err.name === 'BadRequestError') {
68
96
  ctx.status = 400;
69
- ctx.body = { jsonrpc: '2.0', id: null, error: { code: -32700, message: `Parse error: ${err.message}` } };
70
- } else if (err instanceof ZodError) {
71
- const message = err.issues.map(e => `${e.message} (${e.path.join('.')})`).join('. ') || 'Validation error';
97
+ ctx.body = { jsonrpc: '2.0', id: null, error: { code: -32000, message: `Bad request: ${err.message}` } };
98
+ } else if (err && err instanceof SyntaxError) {
72
99
  ctx.status = 400;
73
- ctx.body = { jsonrpc: '2.0', id: null, error: { code: -32701, message } };
74
- } else if (this.http200OnError) {
75
- ctx.body = {
76
- jsonrpc: '2.0',
77
- id: null,
78
- error: { code: err.code || -32600, data: err.data, message: err.message },
79
- };
100
+ ctx.body = { jsonrpc: '2.0', id: null, error: { code: -32700, message: `Parse error: ${err.message}` } };
80
101
  } else {
81
102
  ctx.status = 500;
82
103
  ctx.body = { jsonrpc: '2.0', id: null, error: { code: -32600, message: err.message ?? 'Internal error' } };
@@ -107,7 +128,12 @@ export class SafeJsonRpcServer {
107
128
  app.use(middleware);
108
129
  }
109
130
  app.use(exceptionHandler);
110
- app.use(bodyParser({ jsonLimit: '50mb', enableTypes: ['json'], detectJSON: () => true }));
131
+ app.use(
132
+ bodyParser({
133
+ jsonLimit: this.config.maxBodySizeBytes,
134
+ enableTypes: ['json'],
135
+ }),
136
+ );
111
137
  app.use(cors());
112
138
  app.use(router.routes());
113
139
  app.use(router.allowedMethods());
@@ -124,23 +150,102 @@ export class SafeJsonRpcServer {
124
150
  const router = new Router({ prefix });
125
151
  // "JSON RPC mode" where a single endpoint is used and the method is given in the request body
126
152
  router.post('/', async (ctx: Koa.Context) => {
127
- const { params = [], jsonrpc, id, method } = ctx.request.body as any;
128
- // Fail if not a registered function in the proxy
129
- if (typeof method !== 'string' || method === 'constructor' || !this.proxy.hasMethod(method)) {
130
- ctx.status = 400;
131
- const code = -32601;
132
- const message = `Method not found: ${method}`;
133
- ctx.body = { jsonrpc, id, error: { code, message } };
153
+ if (Array.isArray(ctx.request.body)) {
154
+ if (ctx.request.body.length > this.config.maxBatchSize) {
155
+ ctx.status = this.config.http200OnError ? 200 : 400;
156
+ ctx.body = {
157
+ jsonrpc: '2.0',
158
+ error: {
159
+ code: -32600,
160
+ message: `Batch request exceeds maximum allowed size of ${this.config.maxBatchSize}`,
161
+ },
162
+ id: null,
163
+ };
164
+ return;
165
+ }
166
+ const resp = await this.processBatch(ctx.request.body, ctx.request.headers);
167
+ if (Array.isArray(resp)) {
168
+ ctx.status = 200;
169
+ ctx.body = resp;
170
+ } else {
171
+ ctx.status = this.config.http200OnError ? 200 : 400;
172
+ ctx.body = resp;
173
+ }
134
174
  } else {
135
- ctx.status = 200;
136
- const result = await this.proxy.call(method, params);
137
- ctx.body = { jsonrpc, id, result };
175
+ const resp = await this.processRequest(ctx.request.body, ctx.request.headers);
176
+ if ('error' in resp) {
177
+ ctx.status = this.config.http200OnError ? 200 : 400;
178
+ }
179
+
180
+ ctx.body = resp;
138
181
  }
139
182
  });
140
183
 
141
184
  return router;
142
185
  }
143
186
 
187
+ private async processBatch(requests: any[], headers: http.IncomingHttpHeaders = {}) {
188
+ if (requests.length === 0) {
189
+ return { jsonrpc: '2.0', error: { code: -32600, message: 'Invalid Request' }, id: null };
190
+ }
191
+ const results = await Promise.allSettled(requests.map(req => this.processRequest(req, headers)));
192
+ return results.map(res => {
193
+ if (res.status === 'fulfilled') {
194
+ return res.value;
195
+ }
196
+
197
+ this.log.warn(`Uncaught error executing request in batch: ${res.reason}.`);
198
+ return { jsonrpc: '2.0', error: { code: -32600, message: 'Invalid Request' }, id: null };
199
+ });
200
+ }
201
+
202
+ private async processRequest(request: any, headers: http.IncomingHttpHeaders = {}) {
203
+ if (!request || typeof request !== 'object') {
204
+ return { jsonrpc: '2.0', error: { code: -32600, message: 'Invalid Request' }, id: null };
205
+ }
206
+
207
+ const { params = [], jsonrpc = '2.0', id, method } = request;
208
+ if (typeof method !== 'string' || !method) {
209
+ return { jsonrpc: '2.0', id, error: { code: -32600, message: `Invalid request` } };
210
+ }
211
+
212
+ // Fail if not a registered function in the proxy
213
+ if (typeof method !== 'string' || method === 'constructor' || !this.proxy.hasMethod(method)) {
214
+ return { jsonrpc, id, error: { code: -32601, message: `Method not found: ${method}` } };
215
+ } else {
216
+ try {
217
+ let result: any;
218
+
219
+ if (this.diagnosticsMiddleware) {
220
+ await this.diagnosticsMiddleware({ id: id ?? null, method, params, headers }, async () => {
221
+ result = await this.proxy.call(method, params);
222
+ });
223
+ } else {
224
+ result = await this.proxy.call(method, params);
225
+ }
226
+
227
+ return { jsonrpc, id, result };
228
+ } catch (err: any) {
229
+ if (err && err instanceof ZodError) {
230
+ const message = err.issues.map(e => `${e.message} (${e.path.join('.')})`).join('. ') || 'Validation error';
231
+ return { jsonrpc: '2.0', id, error: { code: -32701, message } };
232
+ } else if (err) {
233
+ return {
234
+ jsonrpc,
235
+ id,
236
+ error: { code: -32702, data: err.data, message: err.message },
237
+ };
238
+ } else {
239
+ return {
240
+ jsonrpc,
241
+ id,
242
+ error: { code: -32702, message: 'Error executing request' },
243
+ };
244
+ }
245
+ }
246
+ }
247
+ }
248
+
144
249
  /**
145
250
  * Start this server with koa.
146
251
  * @param port - Port number.
@@ -201,7 +306,10 @@ export class SafeJsonProxy<T extends object = any> implements Proxy {
201
306
  private log = createLogger('json-rpc:proxy');
202
307
  private schema: ApiSchema;
203
308
 
204
- constructor(private handler: T, schema: ApiSchemaFor<T>) {
309
+ constructor(
310
+ private handler: T,
311
+ schema: ApiSchemaFor<T>,
312
+ ) {
205
313
  this.schema = schema;
206
314
  }
207
315
 
@@ -218,7 +326,7 @@ export class SafeJsonProxy<T extends object = any> implements Proxy {
218
326
  assert(schemaHasMethod(this.schema, methodName), `Method ${methodName} not found in schema`);
219
327
  const method = this.handler[methodName as keyof T];
220
328
  assert(typeof method === 'function', `Method ${methodName} is not a function`);
221
- const args = await parseWithOptionals(jsonParams, this.schema[methodName].parameters());
329
+ const args = await parseWithOptionals(jsonParams, getSchemaParameters(this.schema[methodName]));
222
330
  const ret = await method.apply(this.handler, args);
223
331
  this.log.debug(format('response', methodName, ret));
224
332
  return ret;
@@ -265,7 +373,10 @@ function makeAggregateHealthcheck(namedHandlers: NamespacedApiHandlers, log?: Lo
265
373
  return async () => {
266
374
  try {
267
375
  const results = await Promise.all(
268
- Object.entries(namedHandlers).map(([name, [, , healthCheck]]) => [name, healthCheck ? healthCheck() : true]),
376
+ Object.entries(namedHandlers).map(async ([name, [, , healthCheck]]) => [
377
+ name,
378
+ healthCheck ? await healthCheck() : true,
379
+ ]),
269
380
  );
270
381
  const failed = results.filter(([_, result]) => !result);
271
382
  if (failed.length > 0) {
@@ -280,12 +391,14 @@ function makeAggregateHealthcheck(namedHandlers: NamespacedApiHandlers, log?: Lo
280
391
  };
281
392
  }
282
393
 
283
- export type SafeJsonRpcServerOptions = {
284
- http200OnError: boolean;
285
- healthCheck?: StatusCheckFn;
286
- log?: Logger;
287
- middlewares?: Application.Middleware[];
288
- };
394
+ export type SafeJsonRpcServerOptions = Partial<
395
+ SafeJsonRpcServerConfig & {
396
+ healthCheck: StatusCheckFn;
397
+ diagnostic: DiagnosticsMiddleware;
398
+ log: Logger;
399
+ middlewares: Application.Middleware[];
400
+ }
401
+ >;
289
402
 
290
403
  /**
291
404
  * Creates a single SafeJsonRpcServer from multiple handlers.
@@ -294,24 +407,22 @@ export type SafeJsonRpcServerOptions = {
294
407
  */
295
408
  export function createNamespacedSafeJsonRpcServer(
296
409
  handlers: NamespacedApiHandlers,
297
- options: Partial<Omit<SafeJsonRpcServerOptions, 'healthcheck'>> = {
298
- log: createLogger('json-rpc:server'),
299
- },
410
+ options: Omit<SafeJsonRpcServerOptions, 'healthcheck'> = {},
300
411
  ): SafeJsonRpcServer {
301
- const { middlewares, http200OnError, log } = options;
412
+ const { diagnostic, middlewares, log } = options;
302
413
  const proxy = new NamespacedSafeJsonProxy(handlers);
303
414
  const healthCheck = makeAggregateHealthcheck(handlers, log);
304
- return new SafeJsonRpcServer(proxy, http200OnError, healthCheck, middlewares, log);
415
+ return new SafeJsonRpcServer(proxy, options, healthCheck, middlewares, diagnostic, log);
305
416
  }
306
417
 
307
418
  export function createSafeJsonRpcServer<T extends object = any>(
308
419
  handler: T,
309
420
  schema: ApiSchemaFor<T>,
310
- options: Partial<SafeJsonRpcServerOptions> = {},
421
+ options: SafeJsonRpcServerOptions = {},
311
422
  ) {
312
- const { http200OnError, log, healthCheck, middlewares: extraMiddlewares } = options;
423
+ const { diagnostic, log, healthCheck, middlewares: extraMiddlewares } = options;
313
424
  const proxy = new SafeJsonProxy(handler, schema);
314
- return new SafeJsonRpcServer(proxy, http200OnError, healthCheck, extraMiddlewares, log);
425
+ return new SafeJsonRpcServer(proxy, options, healthCheck, extraMiddlewares, diagnostic, log);
315
426
  }
316
427
 
317
428
  /**
@@ -326,7 +437,7 @@ export function createStatusRouter(getCurrentStatus: StatusCheckFn, apiPrefix =
326
437
  let ok: boolean;
327
438
  try {
328
439
  ok = (await getCurrentStatus()) === true;
329
- } catch (err) {
440
+ } catch {
330
441
  ok = false;
331
442
  }
332
443
 
@@ -364,7 +475,7 @@ export async function startHttpRpcServer(
364
475
 
365
476
  const { promise, resolve } = promiseWithResolvers<void>();
366
477
  const listenPort = options.port ? (typeof options.port === 'string' ? parseInt(options.port) : options.port) : 0;
367
- httpServer.listen(listenPort, options.host, () => resolve());
478
+ httpServer.listen({ host: options.host, port: listenPort, reuseAddress: true }, () => resolve());
368
479
 
369
480
  // Wait until listen callback is called
370
481
  if (!options.noWait) {
@@ -20,7 +20,7 @@ export type JsonRpcTestContext<T extends object> = {
20
20
  export async function createJsonRpcTestSetup<T extends object>(
21
21
  handler: T,
22
22
  schema: ApiSchemaFor<T>,
23
- serverOptions: Partial<SafeJsonRpcServerOptions> = {},
23
+ serverOptions: SafeJsonRpcServerOptions = {},
24
24
  clientOptions: SafeJsonRpcClientOptions = {},
25
25
  ): Promise<JsonRpcTestContext<T>> {
26
26
  const server = createSafeJsonRpcServer<T>(handler, schema, serverOptions);
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Converts bigint values to strings recursively in a log object to avoid serialization issues.
3
+ */
4
+ export function convertBigintsToStrings(obj: unknown): unknown {
5
+ if (typeof obj === 'bigint') {
6
+ return String(obj);
7
+ }
8
+
9
+ if (Array.isArray(obj)) {
10
+ return obj.map(item => convertBigintsToStrings(item));
11
+ }
12
+
13
+ if (obj !== null && typeof obj === 'object') {
14
+ if (typeof (obj as any).toJSON === 'function') {
15
+ return convertBigintsToStrings((obj as any).toJSON());
16
+ }
17
+ const result: Record<string, unknown> = {};
18
+ for (const key in obj) {
19
+ result[key] = convertBigintsToStrings((obj as Record<string, unknown>)[key]);
20
+ }
21
+ return result;
22
+ }
23
+
24
+ return obj;
25
+ }
@@ -7,7 +7,10 @@ import type { LogFn } from './log_fn.js';
7
7
  * which can be useful for controlling the format of the output or redirecting logs to a different destination.
8
8
  */
9
9
  class ConsoleLogger {
10
- constructor(private prefix: string, private logger: (...args: any[]) => void = console.log) {}
10
+ constructor(
11
+ private prefix: string,
12
+ private logger: (...args: any[]) => void = console.log,
13
+ ) {}
11
14
 
12
15
  /**
13
16
  * Log messages with the specified prefix using the provided logger.
@@ -1,5 +1,7 @@
1
1
  import type { pino } from 'pino';
2
2
 
3
+ import { convertBigintsToStrings } from './bigint-utils.js';
4
+
3
5
  /* eslint-disable camelcase */
4
6
 
5
7
  const GOOGLE_CLOUD_TRACE_ID = 'logging.googleapis.com/trace';
@@ -13,12 +15,11 @@ const GOOGLE_CLOUD_TRACE_SAMPLED = 'logging.googleapis.com/trace_sampled';
13
15
  */
14
16
  export const GoogleCloudLoggerConfig = {
15
17
  messageKey: 'message',
16
- // Same as pino.stdTimeFunctions.isoTime but uses "timestamp" key instead of "time"
17
- timestamp(): string {
18
- return `,"timestamp":"${new Date(Date.now()).toISOString()}"`;
19
- },
20
18
  formatters: {
21
19
  log(object: Record<string, unknown>): Record<string, unknown> {
20
+ // Convert bigints to strings recursively to avoid serialization issues
21
+ object = convertBigintsToStrings(object) as Record<string, unknown>;
22
+
22
23
  // Add trace context attributes following Cloud Logging structured log format described
23
24
  // in https://cloud.google.com/logging/docs/structured-logging#special-payload-fields
24
25
  const { trace_id, span_id, trace_flags, ...rest } = object;
@@ -39,12 +40,12 @@ export const GoogleCloudLoggerConfig = {
39
40
  // Severity labels https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry#LogSeverity
40
41
  let severity: string;
41
42
 
42
- switch (label as pino.Level | keyof typeof customLevels) {
43
+ switch (label as pino.Level | keyof CustomLevels) {
43
44
  case 'trace':
44
45
  case 'debug':
46
+ case 'verbose':
45
47
  severity = 'DEBUG';
46
48
  break;
47
- case 'verbose':
48
49
  case 'info':
49
50
  severity = 'INFO';
50
51
  break;
@@ -68,4 +69,4 @@ export const GoogleCloudLoggerConfig = {
68
69
  } satisfies pino.LoggerOptions;
69
70
 
70
71
  // Define custom logging levels for pino. Duplicate from pino-logger.ts.
71
- const customLevels = { verbose: 25 };
72
+ type CustomLevels = { verbose: 25 };
package/src/log/index.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export * from './console.js';
2
- export * from './debug.js';
3
- export * from './pino-logger.js';
4
- export * from './log_history.js';
5
- export * from './log_fn.js';
6
2
  export * from './libp2p_logger.js';
3
+ export * from './log_fn.js';
4
+ export * from './noir_debug_log_util.js';
5
+ export * from './pino-logger.js';
6
+ export * from './log-levels.js';
@@ -2,15 +2,17 @@ import type { ComponentLogger, Logger } from '@libp2p/interface';
2
2
 
3
3
  import { getLogLevelFromFilters } from './log-filters.js';
4
4
  import type { LogLevel } from './log-levels.js';
5
- import { logFilters, logger } from './pino-logger.js';
5
+ import { type LoggerBindings, logFilters, logger } from './pino-logger.js';
6
6
 
7
7
  /**
8
8
  * Creates a libp2p compatible logger that wraps our pino logger.
9
9
  * This adapter implements the ComponentLogger interface required by libp2p.
10
+ * @param namespace - Base namespace for the logger
11
+ * @param bindings - Optional bindings to pass to the logger (actor, instanceId)
10
12
  */
11
- export function createLibp2pComponentLogger(namespace: string): ComponentLogger {
13
+ export function createLibp2pComponentLogger(namespace: string, bindings?: LoggerBindings): ComponentLogger {
12
14
  return {
13
- forComponent: (component: string) => createLibp2pLogger(`${namespace}:${component}`),
15
+ forComponent: (component: string) => createLibp2pLogger(`${namespace}:${component}`, bindings),
14
16
  };
15
17
  }
16
18
 
@@ -24,16 +26,21 @@ function replaceFormatting(message: string) {
24
26
  return message.replace(/(%p|%a)/g, '%s');
25
27
  }
26
28
 
27
- function createLibp2pLogger(component: string): Logger {
29
+ function createLibp2pLogger(component: string, bindings?: LoggerBindings): Logger {
28
30
  // Create a direct pino logger instance for libp2p that supports string interpolation
29
- const log = logger.child({ module: component }, { level: getLogLevelFromFilters(logFilters, component) });
31
+ const actor = bindings?.actor;
32
+ const instanceId = bindings?.instanceId;
33
+ const log = logger.child(
34
+ { module: component, ...(actor && { actor }), ...(instanceId && { instanceId }) },
35
+ { level: getLogLevelFromFilters(logFilters, component) },
36
+ );
30
37
 
31
38
  const logIfEnabled = (level: LogLevel, message: string, ...args: unknown[]) => {
32
39
  if (!log.isLevelEnabled(level)) {
33
40
  return;
34
41
  }
35
42
 
36
- log[level](replaceFormatting(message), ...args);
43
+ log[level](replaceFormatting(message), ...formatArgs(message, args));
37
44
  };
38
45
 
39
46
  // Default log level is trace as this is super super noisy
@@ -45,7 +52,7 @@ function createLibp2pLogger(component: string): Logger {
45
52
  enabled: log.isLevelEnabled('debug'),
46
53
  error(message: string, ...args: unknown[]) {
47
54
  // We write error outputs as debug as they are often expected, e.g. connection errors can happen in happy paths
48
- logIfEnabled('debug', message, ...args);
55
+ logIfEnabled('debug', `error: ${message}`, ...args);
49
56
  },
50
57
 
51
58
  debug(message: string, ...args: unknown[]) {
@@ -65,3 +72,22 @@ function createLibp2pLogger(component: string): Logger {
65
72
  },
66
73
  });
67
74
  }
75
+
76
+ function formatArgs(message: string, args: unknown[]) {
77
+ if (!args) {
78
+ return args;
79
+ }
80
+ return args.map(arg => {
81
+ if (
82
+ typeof arg === 'object' &&
83
+ arg &&
84
+ 'err' in arg &&
85
+ arg.err instanceof Error &&
86
+ 'type' in arg.err &&
87
+ arg.err.type === 'AbortError'
88
+ ) {
89
+ delete arg.err; // Remove the AbortError from the logs
90
+ }
91
+ return arg;
92
+ });
93
+ }
@@ -19,22 +19,40 @@ export function getLogLevelFromFilters(filters: LogFilters, module: string): Log
19
19
  return undefined;
20
20
  }
21
21
 
22
- export function assertLogLevel(level: string): asserts level is LogLevel {
23
- if (!LogLevels.includes(level as LogLevel)) {
24
- throw new Error(`Invalid log level: ${level}`);
22
+ /**
23
+ * Parses the LOG_LEVEL env string into a default level and per-module filter overrides.
24
+ *
25
+ * Format: `<default_level>;<level>:<module1>,<module2>;<level>:<module3>;...`
26
+ * - First segment (before the first `;`) is the default log level for all modules.
27
+ * - Remaining segments are `level:module` pairs: apply the given level to the listed modules (comma-separated).
28
+ * - Later filters override earlier ones for overlapping module matches.
29
+ * - The `aztec:` prefix is stripped from module names; spaces are trimmed.
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * parseLogLevel('debug;warn:module1,module2;error:module3', 'info')
34
+ * // => ['debug', [['module3', 'error'], ['module2', 'warn'], ['module1', 'warn']]]
35
+ * ```
36
+ */
37
+ export function parseLogLevelEnvVar(
38
+ logLevelEnvVar: string | undefined,
39
+ defaultLevel: LogLevel,
40
+ ): [LogLevel, LogFilters] {
41
+ if (!logLevelEnvVar) {
42
+ return [defaultLevel, []];
25
43
  }
44
+ const [level] = logLevelEnvVar.split(';', 1);
45
+ assertValidLogLevel(level);
46
+ return [level, parseFilters(logLevelEnvVar.slice(level.length + 1))];
26
47
  }
27
48
 
28
- export function parseEnv(env: string | undefined, defaultLevel: LogLevel): [LogLevel, LogFilters] {
29
- if (!env) {
30
- return [defaultLevel, []];
49
+ function assertValidLogLevel(level: string): asserts level is LogLevel {
50
+ if (!LogLevels.includes(level as LogLevel)) {
51
+ throw new Error(`Invalid log level: ${level}`);
31
52
  }
32
- const [level] = env.split(';', 1);
33
- assertLogLevel(level);
34
- return [level, parseFilters(env.slice(level.length + 1))];
35
53
  }
36
54
 
37
- export function parseFilters(definition: string | undefined): LogFilters {
55
+ function parseFilters(definition: string | undefined): LogFilters {
38
56
  if (!definition) {
39
57
  return [];
40
58
  }
@@ -48,7 +66,7 @@ export function parseFilters(definition: string | undefined): LogFilters {
48
66
  throw new Error(`Invalid log filter statement: ${statement}`);
49
67
  }
50
68
  const sanitizedLevel = level.trim().toLowerCase();
51
- assertLogLevel(sanitizedLevel);
69
+ assertValidLogLevel(sanitizedLevel);
52
70
  for (const module of modules.split(',')) {
53
71
  filters.push([
54
72
  module
package/src/log/log_fn.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /** Structured log data to include with the message. */
2
- export type LogData = Record<string, string | number | bigint | boolean | { toString(): string } | undefined>;
2
+ export type LogData = Record<string, string | number | bigint | boolean | { toString(): string } | undefined | null>;
3
3
 
4
4
  /** A callable logger instance. */
5
5
  export type LogFn = (msg: string, data?: unknown) => void;
@@ -0,0 +1,21 @@
1
+ interface Printable {
2
+ toString(): string;
3
+ }
4
+
5
+ /**
6
+ * Format a debug string filling in `'{0}'` entries with their
7
+ * corresponding values from the args array, amd `'{}'` with the whole array.
8
+ *
9
+ * @param formatStr - str of form `'this is a string with some entries like {0} and {1}'`
10
+ * @param args - array of fields to fill in the string format entries with
11
+ * @returns formatted string
12
+ */
13
+ export function applyStringFormatting(formatStr: string, args: Printable[]): string {
14
+ return formatStr
15
+ .replace(/{(\d+)}/g, (match, index) => {
16
+ return typeof args[index] === 'undefined' ? match : args[index].toString();
17
+ })
18
+ .replace(/{}/g, (_match, _index) => {
19
+ return args.toString();
20
+ });
21
+ }