@aztec/foundation 0.76.4 → 0.77.0-testnet-ignition.21

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 (459) hide show
  1. package/dest/array/array.d.ts +1 -1
  2. package/dest/array/array.d.ts.map +1 -1
  3. package/dest/array/array.js +19 -26
  4. package/dest/array/index.js +0 -1
  5. package/dest/async-map/index.js +2 -4
  6. package/dest/async-pool/index.js +6 -9
  7. package/dest/bigint-buffer/index.js +6 -13
  8. package/dest/buffer/buffer32.d.ts +1 -1
  9. package/dest/buffer/buffer32.d.ts.map +1 -1
  10. package/dest/buffer/buffer32.js +53 -66
  11. package/dest/buffer/index.js +0 -1
  12. package/dest/collection/array.d.ts +1 -1
  13. package/dest/collection/array.d.ts.map +1 -1
  14. package/dest/collection/array.js +47 -59
  15. package/dest/collection/index.js +0 -1
  16. package/dest/collection/object.js +9 -9
  17. package/dest/committable/committable.js +15 -20
  18. package/dest/committable/index.js +0 -1
  19. package/dest/config/env_var.d.ts +1 -1
  20. package/dest/config/env_var.d.ts.map +1 -1
  21. package/dest/config/env_var.js +1 -2
  22. package/dest/config/index.d.ts +1 -1
  23. package/dest/config/index.d.ts.map +1 -1
  24. package/dest/config/index.js +31 -36
  25. package/dest/crypto/aes128/index.d.ts +34 -0
  26. package/dest/crypto/aes128/index.d.ts.map +1 -0
  27. package/dest/crypto/aes128/index.js +49 -0
  28. package/dest/crypto/ecdsa/index.d.ts +39 -0
  29. package/dest/crypto/ecdsa/index.d.ts.map +1 -0
  30. package/dest/crypto/ecdsa/index.js +88 -0
  31. package/dest/crypto/ecdsa/signature.d.ts +71 -0
  32. package/dest/crypto/ecdsa/signature.d.ts.map +1 -0
  33. package/dest/crypto/ecdsa/signature.js +92 -0
  34. package/dest/crypto/grumpkin/index.d.ts +47 -0
  35. package/dest/crypto/grumpkin/index.d.ts.map +1 -0
  36. package/dest/crypto/grumpkin/index.js +154 -0
  37. package/dest/crypto/index.d.ts +6 -0
  38. package/dest/crypto/index.d.ts.map +1 -1
  39. package/dest/crypto/index.js +6 -1
  40. package/dest/crypto/keccak/index.js +60 -69
  41. package/dest/crypto/keys/index.js +2 -3
  42. package/dest/crypto/pedersen/index.js +0 -1
  43. package/dest/crypto/pedersen/pedersen.elliptic.js +153 -146
  44. package/dest/crypto/pedersen/pedersen.noble.js +140 -142
  45. package/dest/crypto/pedersen/pedersen.wasm.js +17 -16
  46. package/dest/crypto/poseidon/index.js +15 -19
  47. package/dest/crypto/random/index.js +7 -12
  48. package/dest/crypto/random/randomness_singleton.js +12 -12
  49. package/dest/crypto/schnorr/index.d.ts +30 -0
  50. package/dest/crypto/schnorr/index.d.ts.map +1 -0
  51. package/dest/crypto/schnorr/index.js +68 -0
  52. package/dest/crypto/schnorr/signature.d.ts +70 -0
  53. package/dest/crypto/schnorr/signature.d.ts.map +1 -0
  54. package/dest/crypto/schnorr/signature.js +93 -0
  55. package/dest/crypto/secp256k1/index.d.ts +32 -0
  56. package/dest/crypto/secp256k1/index.d.ts.map +1 -0
  57. package/dest/crypto/secp256k1/index.js +116 -0
  58. package/dest/crypto/secp256k1-signer/index.js +0 -1
  59. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts +2 -2
  60. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts.map +1 -1
  61. package/dest/crypto/secp256k1-signer/secp256k1_signer.js +8 -9
  62. package/dest/crypto/secp256k1-signer/utils.js +11 -16
  63. package/dest/crypto/serialize.d.ts +53 -0
  64. package/dest/crypto/serialize.d.ts.map +1 -0
  65. package/dest/crypto/serialize.js +68 -0
  66. package/dest/crypto/sha256/index.js +80 -30
  67. package/dest/crypto/sha512/index.js +2 -4
  68. package/dest/crypto/signature/index.d.ts +19 -0
  69. package/dest/crypto/signature/index.d.ts.map +1 -0
  70. package/dest/crypto/signature/index.js +3 -0
  71. package/dest/crypto/sync/index.js +1 -2
  72. package/dest/crypto/sync/pedersen/index.js +14 -13
  73. package/dest/crypto/sync/poseidon/index.js +10 -14
  74. package/dest/decorators/index.js +0 -1
  75. package/dest/decorators/memoize.js +1 -2
  76. package/dest/error/index.js +6 -19
  77. package/dest/eth-address/index.js +92 -113
  78. package/dest/eth-signature/eth_signature.js +21 -27
  79. package/dest/eth-signature/index.js +0 -1
  80. package/dest/fields/coordinate.d.ts +1 -1
  81. package/dest/fields/coordinate.d.ts.map +1 -1
  82. package/dest/fields/coordinate.js +47 -46
  83. package/dest/fields/fields.d.ts.map +1 -1
  84. package/dest/fields/fields.js +112 -126
  85. package/dest/fields/index.js +0 -1
  86. package/dest/fields/point.js +119 -129
  87. package/dest/fs/index.js +0 -1
  88. package/dest/fs/run_in_dir.d.ts +1 -1
  89. package/dest/fs/run_in_dir.d.ts.map +1 -1
  90. package/dest/fs/run_in_dir.js +16 -7
  91. package/dest/index.d.ts +0 -2
  92. package/dest/index.d.ts.map +1 -1
  93. package/dest/index.js +0 -3
  94. package/dest/iterable/all.js +3 -4
  95. package/dest/iterable/filter.js +10 -11
  96. package/dest/iterable/index.js +0 -1
  97. package/dest/iterable/isAsyncIt.js +1 -3
  98. package/dest/iterable/map.js +10 -11
  99. package/dest/iterable/peek.js +14 -14
  100. package/dest/iterable/sort.js +4 -5
  101. package/dest/iterable/take.js +6 -7
  102. package/dest/iterable/toArray.js +1 -2
  103. package/dest/jest/setup.js +7 -0
  104. package/dest/json-rpc/client/fetch.js +25 -20
  105. package/dest/json-rpc/client/index.js +0 -1
  106. package/dest/json-rpc/client/safe_json_rpc_client.js +20 -9
  107. package/dest/json-rpc/client/undici.d.ts +1 -1
  108. package/dest/json-rpc/client/undici.d.ts.map +1 -1
  109. package/dest/json-rpc/client/undici.js +16 -17
  110. package/dest/json-rpc/convert.d.ts +1 -1
  111. package/dest/json-rpc/convert.d.ts.map +1 -1
  112. package/dest/json-rpc/convert.js +10 -20
  113. package/dest/json-rpc/fixtures/class_a.js +8 -5
  114. package/dest/json-rpc/fixtures/class_b.js +8 -5
  115. package/dest/json-rpc/fixtures/test_state.js +53 -40
  116. package/dest/json-rpc/index.js +0 -1
  117. package/dest/json-rpc/js_utils.js +2 -5
  118. package/dest/json-rpc/server/index.js +0 -1
  119. package/dest/json-rpc/server/safe_json_rpc_server.js +145 -101
  120. package/dest/json-rpc/server/telemetry.js +0 -2
  121. package/dest/json-rpc/test/index.js +0 -1
  122. package/dest/json-rpc/test/integration.d.ts +1 -1
  123. package/dest/json-rpc/test/integration.d.ts.map +1 -1
  124. package/dest/json-rpc/test/integration.js +11 -5
  125. package/dest/log/console.d.ts +1 -1
  126. package/dest/log/console.d.ts.map +1 -1
  127. package/dest/log/console.js +14 -16
  128. package/dest/log/debug.d.ts +1 -1
  129. package/dest/log/debug.d.ts.map +1 -1
  130. package/dest/log/debug.js +9 -18
  131. package/dest/log/gcloud-logger-config.js +17 -15
  132. package/dest/log/index.d.ts +1 -0
  133. package/dest/log/index.d.ts.map +1 -1
  134. package/dest/log/index.js +1 -1
  135. package/dest/log/libp2p_logger.d.ts +7 -0
  136. package/dest/log/libp2p_logger.d.ts.map +1 -0
  137. package/dest/log/libp2p_logger.js +55 -0
  138. package/dest/log/log-filters.js +14 -13
  139. package/dest/log/log-levels.js +10 -2
  140. package/dest/log/log_fn.js +1 -2
  141. package/dest/log/log_history.js +21 -25
  142. package/dest/log/pino-logger.d.ts +8 -4
  143. package/dest/log/pino-logger.d.ts.map +1 -1
  144. package/dest/log/pino-logger.js +92 -74
  145. package/dest/message/index.js +7 -3
  146. package/dest/mutex/index.d.ts +1 -1
  147. package/dest/mutex/index.d.ts.map +1 -1
  148. package/dest/mutex/index.js +34 -32
  149. package/dest/mutex/mutex_database.js +4 -2
  150. package/dest/noir/index.js +0 -1
  151. package/dest/noir/noir_package_config.js +13 -8
  152. package/dest/promise/index.js +0 -1
  153. package/dest/promise/running-promise.d.ts +8 -2
  154. package/dest/promise/running-promise.d.ts.map +1 -1
  155. package/dest/promise/running-promise.js +44 -31
  156. package/dest/promise/utils.js +3 -5
  157. package/dest/queue/base_memory_queue.js +51 -59
  158. package/dest/queue/batch_queue.js +34 -27
  159. package/dest/queue/bounded_serial_queue.js +41 -51
  160. package/dest/queue/fifo_memory_queue.d.ts +1 -1
  161. package/dest/queue/fifo_memory_queue.d.ts.map +1 -1
  162. package/dest/queue/fifo_memory_queue.js +4 -8
  163. package/dest/queue/index.js +0 -1
  164. package/dest/queue/priority_memory_queue.js +3 -4
  165. package/dest/queue/priority_queue.js +5 -5
  166. package/dest/queue/semaphore.js +15 -19
  167. package/dest/queue/serial_queue.js +37 -47
  168. package/dest/retry/index.js +21 -18
  169. package/dest/running-promise/index.js +0 -1
  170. package/dest/schemas/api.d.ts +2 -2
  171. package/dest/schemas/api.d.ts.map +1 -1
  172. package/dest/schemas/api.js +2 -7
  173. package/dest/schemas/index.d.ts +1 -1
  174. package/dest/schemas/index.d.ts.map +1 -1
  175. package/dest/schemas/index.js +1 -2
  176. package/dest/schemas/parse.js +4 -8
  177. package/dest/schemas/schemas.d.ts +1 -16
  178. package/dest/schemas/schemas.d.ts.map +1 -1
  179. package/dest/schemas/schemas.js +28 -56
  180. package/dest/schemas/types.d.ts +1 -1
  181. package/dest/schemas/types.d.ts.map +1 -1
  182. package/dest/schemas/types.js +1 -2
  183. package/dest/schemas/utils.d.ts +1 -1
  184. package/dest/schemas/utils.d.ts.map +1 -1
  185. package/dest/schemas/utils.js +18 -31
  186. package/dest/serialize/buffer_reader.d.ts +1 -1
  187. package/dest/serialize/buffer_reader.d.ts.map +1 -1
  188. package/dest/serialize/buffer_reader.js +164 -188
  189. package/dest/serialize/field_reader.d.ts +1 -1
  190. package/dest/serialize/field_reader.d.ts.map +1 -1
  191. package/dest/serialize/field_reader.js +70 -79
  192. package/dest/serialize/free_funcs.d.ts +1 -1
  193. package/dest/serialize/free_funcs.d.ts.map +1 -1
  194. package/dest/serialize/free_funcs.js +40 -37
  195. package/dest/serialize/index.js +0 -1
  196. package/dest/serialize/serialize.js +72 -83
  197. package/dest/serialize/type_registry.js +10 -14
  198. package/dest/serialize/types.js +4 -5
  199. package/dest/sleep/index.js +25 -29
  200. package/dest/string/index.js +0 -1
  201. package/dest/testing/files/index.js +3 -7
  202. package/dest/testing/index.js +0 -1
  203. package/dest/testing/port_allocator.js +7 -10
  204. package/dest/testing/snapshot_serializer.d.ts +1 -1
  205. package/dest/testing/snapshot_serializer.d.ts.map +1 -1
  206. package/dest/testing/snapshot_serializer.js +14 -9
  207. package/dest/testing/test_data.js +7 -8
  208. package/dest/timer/date.js +9 -7
  209. package/dest/timer/elapsed.js +10 -7
  210. package/dest/timer/index.js +0 -1
  211. package/dest/timer/timeout.js +34 -34
  212. package/dest/timer/timer.js +17 -21
  213. package/dest/transport/browser/index.js +0 -1
  214. package/dest/transport/browser/message_port_socket.d.ts +1 -1
  215. package/dest/transport/browser/message_port_socket.d.ts.map +1 -1
  216. package/dest/transport/browser/message_port_socket.js +26 -30
  217. package/dest/transport/browser/shared_worker_connector.d.ts +1 -1
  218. package/dest/transport/browser/shared_worker_connector.d.ts.map +1 -1
  219. package/dest/transport/browser/shared_worker_connector.js +8 -10
  220. package/dest/transport/browser/shared_worker_listener.d.ts +1 -1
  221. package/dest/transport/browser/shared_worker_listener.d.ts.map +1 -1
  222. package/dest/transport/browser/shared_worker_listener.js +13 -17
  223. package/dest/transport/browser/worker_connector.d.ts +1 -1
  224. package/dest/transport/browser/worker_connector.d.ts.map +1 -1
  225. package/dest/transport/browser/worker_connector.js +12 -12
  226. package/dest/transport/browser/worker_listener.d.ts +1 -1
  227. package/dest/transport/browser/worker_listener.d.ts.map +1 -1
  228. package/dest/transport/browser/worker_listener.js +13 -17
  229. package/dest/transport/dispatch/create_dispatch_fn.js +2 -4
  230. package/dest/transport/dispatch/create_dispatch_proxy.d.ts +2 -2
  231. package/dest/transport/dispatch/create_dispatch_proxy.d.ts.map +1 -1
  232. package/dest/transport/dispatch/create_dispatch_proxy.js +16 -13
  233. package/dest/transport/dispatch/messages.js +4 -3
  234. package/dest/transport/index.js +0 -1
  235. package/dest/transport/interface/connector.d.ts +1 -1
  236. package/dest/transport/interface/connector.d.ts.map +1 -1
  237. package/dest/transport/interface/connector.js +3 -2
  238. package/dest/transport/interface/listener.d.ts +1 -1
  239. package/dest/transport/interface/listener.d.ts.map +1 -1
  240. package/dest/transport/interface/listener.js +4 -2
  241. package/dest/transport/interface/socket.js +7 -2
  242. package/dest/transport/interface/transferable.js +7 -9
  243. package/dest/transport/node/index.js +0 -1
  244. package/dest/transport/node/node_connector.d.ts +2 -2
  245. package/dest/transport/node/node_connector.d.ts.map +1 -1
  246. package/dest/transport/node/node_connector.js +9 -11
  247. package/dest/transport/node/node_connector_socket.d.ts +2 -2
  248. package/dest/transport/node/node_connector_socket.d.ts.map +1 -1
  249. package/dest/transport/node/node_connector_socket.js +21 -25
  250. package/dest/transport/node/node_listener.d.ts +1 -1
  251. package/dest/transport/node/node_listener.d.ts.map +1 -1
  252. package/dest/transport/node/node_listener.js +11 -15
  253. package/dest/transport/node/node_listener_socket.d.ts +2 -2
  254. package/dest/transport/node/node_listener_socket.d.ts.map +1 -1
  255. package/dest/transport/node/node_listener_socket.js +23 -27
  256. package/dest/transport/transport_client.d.ts +1 -1
  257. package/dest/transport/transport_client.d.ts.map +1 -1
  258. package/dest/transport/transport_client.js +47 -46
  259. package/dest/transport/transport_server.d.ts +1 -1
  260. package/dest/transport/transport_server.d.ts.map +1 -1
  261. package/dest/transport/transport_server.js +68 -55
  262. package/dest/trees/hasher.d.ts +39 -0
  263. package/dest/trees/hasher.d.ts.map +1 -0
  264. package/dest/trees/hasher.js +5 -0
  265. package/dest/trees/index.d.ts +8 -56
  266. package/dest/trees/index.d.ts.map +1 -1
  267. package/dest/trees/index.js +8 -1
  268. package/dest/trees/indexed_merkle_tree.d.ts +13 -0
  269. package/dest/trees/indexed_merkle_tree.d.ts.map +1 -0
  270. package/dest/trees/indexed_merkle_tree.js +27 -0
  271. package/dest/trees/indexed_merkle_tree_calculator.d.ts +23 -0
  272. package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -0
  273. package/dest/trees/indexed_merkle_tree_calculator.js +83 -0
  274. package/dest/trees/indexed_tree_leaf.d.ts +57 -0
  275. package/dest/trees/indexed_tree_leaf.d.ts.map +1 -0
  276. package/dest/trees/indexed_tree_leaf.js +5 -0
  277. package/dest/trees/membership_witness.d.ts +62 -0
  278. package/dest/trees/membership_witness.d.ts.map +1 -0
  279. package/dest/trees/membership_witness.js +70 -0
  280. package/dest/trees/merkle_tree.d.ts +18 -0
  281. package/dest/trees/merkle_tree.d.ts.map +1 -0
  282. package/dest/trees/merkle_tree.js +58 -0
  283. package/dest/trees/merkle_tree_calculator.d.ts +16 -0
  284. package/dest/trees/merkle_tree_calculator.d.ts.map +1 -0
  285. package/dest/trees/merkle_tree_calculator.js +61 -0
  286. package/dest/trees/sibling_path.d.ts +132 -0
  287. package/dest/trees/sibling_path.d.ts.map +1 -0
  288. package/dest/trees/sibling_path.js +144 -0
  289. package/dest/trees/unbalanced_merkle_tree.d.ts +1 -1
  290. package/dest/trees/unbalanced_merkle_tree.d.ts.map +1 -1
  291. package/dest/trees/unbalanced_merkle_tree.js +28 -18
  292. package/dest/trees/unbalanced_tree_store.js +43 -29
  293. package/dest/types/index.js +1 -3
  294. package/dest/url/index.js +4 -8
  295. package/dest/validation/index.js +2 -5
  296. package/dest/wasm/empty_wasi_sdk.js +142 -160
  297. package/dest/wasm/index.d.ts +1 -1
  298. package/dest/wasm/index.d.ts.map +1 -1
  299. package/dest/wasm/index.js +0 -1
  300. package/dest/wasm/wasm_module.js +80 -90
  301. package/dest/worker/browser/index.js +0 -1
  302. package/dest/worker/browser/start_web_module.d.ts +1 -1
  303. package/dest/worker/browser/start_web_module.d.ts.map +1 -1
  304. package/dest/worker/browser/start_web_module.js +9 -5
  305. package/dest/worker/browser/web_data_store.d.ts +1 -1
  306. package/dest/worker/browser/web_data_store.d.ts.map +1 -1
  307. package/dest/worker/browser/web_data_store.js +12 -15
  308. package/dest/worker/browser/web_worker.d.ts +1 -1
  309. package/dest/worker/browser/web_worker.d.ts.map +1 -1
  310. package/dest/worker/browser/web_worker.js +6 -5
  311. package/dest/worker/data_store.js +3 -2
  312. package/dest/worker/index.d.ts +1 -1
  313. package/dest/worker/index.d.ts.map +1 -1
  314. package/dest/worker/index.js +0 -1
  315. package/dest/worker/node/index.js +0 -1
  316. package/dest/worker/node/node_data_store.d.ts +1 -1
  317. package/dest/worker/node/node_data_store.d.ts.map +1 -1
  318. package/dest/worker/node/node_data_store.js +4 -5
  319. package/dest/worker/node/node_worker.d.ts +1 -1
  320. package/dest/worker/node/node_worker.d.ts.map +1 -1
  321. package/dest/worker/node/node_worker.js +6 -5
  322. package/dest/worker/node/start_node_module.d.ts +1 -1
  323. package/dest/worker/node/start_node_module.d.ts.map +1 -1
  324. package/dest/worker/node/start_node_module.js +9 -5
  325. package/dest/worker/wasm_worker.d.ts +2 -2
  326. package/dest/worker/wasm_worker.d.ts.map +1 -1
  327. package/dest/worker/wasm_worker.js +3 -2
  328. package/dest/worker/worker_pool.d.ts +1 -1
  329. package/dest/worker/worker_pool.d.ts.map +1 -1
  330. package/dest/worker/worker_pool.js +32 -43
  331. package/package.json +5 -5
  332. package/src/array/array.ts +1 -1
  333. package/src/buffer/buffer32.ts +1 -1
  334. package/src/collection/array.ts +1 -1
  335. package/src/config/env_var.ts +7 -5
  336. package/src/config/index.ts +1 -1
  337. package/src/crypto/aes128/index.ts +59 -0
  338. package/src/crypto/ecdsa/index.ts +70 -0
  339. package/src/crypto/ecdsa/signature.ts +100 -0
  340. package/src/crypto/grumpkin/index.ts +97 -0
  341. package/src/crypto/index.ts +6 -0
  342. package/src/crypto/keys/index.ts +1 -1
  343. package/src/crypto/pedersen/pedersen.wasm.ts +3 -3
  344. package/src/crypto/poseidon/index.ts +5 -5
  345. package/src/crypto/schnorr/index.ts +55 -0
  346. package/src/crypto/schnorr/signature.ts +116 -0
  347. package/src/crypto/secp256k1/index.ts +57 -0
  348. package/src/crypto/secp256k1-signer/secp256k1_signer.ts +2 -2
  349. package/src/crypto/serialize.ts +85 -0
  350. package/src/crypto/signature/index.ts +17 -0
  351. package/src/crypto/sync/index.ts +1 -1
  352. package/src/fields/coordinate.ts +1 -1
  353. package/src/fields/fields.ts +2 -1
  354. package/src/fs/run_in_dir.ts +8 -1
  355. package/src/index.ts +0 -2
  356. package/src/json-rpc/client/undici.ts +1 -1
  357. package/src/json-rpc/convert.ts +1 -1
  358. package/src/json-rpc/server/safe_json_rpc_server.ts +1 -1
  359. package/src/json-rpc/test/integration.ts +1 -1
  360. package/src/log/console.ts +1 -1
  361. package/src/log/debug.ts +1 -1
  362. package/src/log/gcloud-logger-config.ts +1 -1
  363. package/src/log/index.ts +1 -0
  364. package/src/log/libp2p_logger.ts +67 -0
  365. package/src/log/pino-logger.ts +16 -16
  366. package/src/mutex/index.ts +1 -1
  367. package/src/promise/running-promise.ts +24 -5
  368. package/src/queue/fifo_memory_queue.ts +1 -1
  369. package/src/schemas/api.ts +2 -2
  370. package/src/schemas/index.ts +1 -1
  371. package/src/schemas/schemas.ts +2 -26
  372. package/src/schemas/types.ts +1 -1
  373. package/src/schemas/utils.ts +1 -1
  374. package/src/serialize/buffer_reader.ts +1 -1
  375. package/src/serialize/field_reader.ts +1 -1
  376. package/src/serialize/free_funcs.ts +1 -1
  377. package/src/testing/snapshot_serializer.ts +1 -1
  378. package/src/transport/browser/message_port_socket.ts +1 -1
  379. package/src/transport/browser/shared_worker_connector.ts +1 -1
  380. package/src/transport/browser/shared_worker_listener.ts +1 -1
  381. package/src/transport/browser/worker_connector.ts +1 -1
  382. package/src/transport/browser/worker_listener.ts +1 -1
  383. package/src/transport/dispatch/create_dispatch_proxy.ts +2 -2
  384. package/src/transport/interface/connector.ts +1 -1
  385. package/src/transport/interface/listener.ts +1 -1
  386. package/src/transport/node/node_connector.ts +2 -2
  387. package/src/transport/node/node_connector_socket.ts +2 -2
  388. package/src/transport/node/node_listener.ts +1 -1
  389. package/src/transport/node/node_listener_socket.ts +2 -2
  390. package/src/transport/transport_client.ts +2 -2
  391. package/src/transport/transport_server.ts +3 -3
  392. package/src/trees/hasher.ts +39 -0
  393. package/src/trees/index.ts +8 -57
  394. package/src/trees/indexed_merkle_tree.ts +36 -0
  395. package/src/trees/indexed_merkle_tree_calculator.ts +94 -0
  396. package/src/trees/indexed_tree_leaf.ts +56 -0
  397. package/src/trees/membership_witness.ts +99 -0
  398. package/src/trees/merkle_tree.ts +72 -0
  399. package/src/trees/merkle_tree_calculator.ts +67 -0
  400. package/src/trees/sibling_path.ts +183 -0
  401. package/src/trees/unbalanced_merkle_tree.ts +2 -2
  402. package/src/wasm/index.ts +1 -1
  403. package/src/worker/browser/start_web_module.ts +1 -1
  404. package/src/worker/browser/web_data_store.ts +1 -1
  405. package/src/worker/browser/web_worker.ts +1 -1
  406. package/src/worker/index.ts +1 -1
  407. package/src/worker/node/node_data_store.ts +1 -1
  408. package/src/worker/node/node_worker.ts +1 -1
  409. package/src/worker/node/start_node_module.ts +1 -1
  410. package/src/worker/wasm_worker.ts +2 -2
  411. package/src/worker/worker_pool.ts +1 -1
  412. package/dest/abi/abi.d.ts +0 -853
  413. package/dest/abi/abi.d.ts.map +0 -1
  414. package/dest/abi/abi.js +0 -214
  415. package/dest/abi/buffer.d.ts +0 -18
  416. package/dest/abi/buffer.d.ts.map +0 -1
  417. package/dest/abi/buffer.js +0 -34
  418. package/dest/abi/decoder.d.ts +0 -58
  419. package/dest/abi/decoder.d.ts.map +0 -1
  420. package/dest/abi/decoder.js +0 -180
  421. package/dest/abi/encoder.d.ts +0 -16
  422. package/dest/abi/encoder.d.ts.map +0 -1
  423. package/dest/abi/encoder.js +0 -174
  424. package/dest/abi/event_selector.d.ts +0 -52
  425. package/dest/abi/event_selector.d.ts.map +0 -1
  426. package/dest/abi/event_selector.js +0 -76
  427. package/dest/abi/function_selector.d.ts +0 -65
  428. package/dest/abi/function_selector.d.ts.map +0 -1
  429. package/dest/abi/function_selector.js +0 -92
  430. package/dest/abi/index.d.ts +0 -10
  431. package/dest/abi/index.d.ts.map +0 -1
  432. package/dest/abi/index.js +0 -10
  433. package/dest/abi/note_selector.d.ts +0 -42
  434. package/dest/abi/note_selector.d.ts.map +0 -1
  435. package/dest/abi/note_selector.js +0 -63
  436. package/dest/abi/selector.d.ts +0 -42
  437. package/dest/abi/selector.d.ts.map +0 -1
  438. package/dest/abi/selector.js +0 -57
  439. package/dest/abi/u128.d.ts +0 -13
  440. package/dest/abi/u128.d.ts.map +0 -1
  441. package/dest/abi/u128.js +0 -58
  442. package/dest/abi/utils.d.ts +0 -44
  443. package/dest/abi/utils.d.ts.map +0 -1
  444. package/dest/abi/utils.js +0 -72
  445. package/dest/aztec-address/index.d.ts +0 -57
  446. package/dest/aztec-address/index.d.ts.map +0 -1
  447. package/dest/aztec-address/index.js +0 -114
  448. package/src/abi/abi.ts +0 -504
  449. package/src/abi/buffer.ts +0 -36
  450. package/src/abi/decoder.ts +0 -195
  451. package/src/abi/encoder.ts +0 -170
  452. package/src/abi/event_selector.ts +0 -92
  453. package/src/abi/function_selector.ts +0 -124
  454. package/src/abi/index.ts +0 -9
  455. package/src/abi/note_selector.ts +0 -78
  456. package/src/abi/selector.ts +0 -64
  457. package/src/abi/u128.ts +0 -71
  458. package/src/abi/utils.ts +0 -86
  459. package/src/aztec-address/index.ts +0 -146
@@ -0,0 +1,55 @@
1
+ import { BarretenbergSync } from '@aztec/bb.js';
2
+ import { type GrumpkinScalar, Point } from '@aztec/foundation/fields';
3
+ import { numToInt32BE } from '@aztec/foundation/serialize';
4
+
5
+ import { concatenateUint8Arrays } from '../serialize.js';
6
+ import { SchnorrSignature } from './signature.js';
7
+
8
+ export * from './signature.js';
9
+
10
+ /**
11
+ * Schnorr signature construction and helper operations.
12
+ */
13
+ export class Schnorr {
14
+ /**
15
+ * Computes a grumpkin public key from a private key.
16
+ * @param privateKey - The private key.
17
+ * @returns A grumpkin public key.
18
+ */
19
+ public async computePublicKey(privateKey: GrumpkinScalar): Promise<Point> {
20
+ const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
21
+ const [result] = api.getWasm().callWasmExport('schnorr_compute_public_key', [privateKey.toBuffer()], [64]);
22
+ return Point.fromBuffer(Buffer.from(result));
23
+ }
24
+
25
+ /**
26
+ * Constructs a Schnorr signature given a msg and a private key.
27
+ * @param msg - Message over which the signature is constructed.
28
+ * @param privateKey - The private key of the signer.
29
+ * @returns A Schnorr signature of the form (s, e).
30
+ */
31
+ public async constructSignature(msg: Uint8Array, privateKey: GrumpkinScalar) {
32
+ const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
33
+ const messageArray = concatenateUint8Arrays([numToInt32BE(msg.length), msg]);
34
+ const [s, e] = api
35
+ .getWasm()
36
+ .callWasmExport('schnorr_construct_signature', [messageArray, privateKey.toBuffer()], [32, 32]);
37
+ return new SchnorrSignature(Buffer.from([...s, ...e]));
38
+ }
39
+
40
+ /**
41
+ * Verifies a Schnorr signature given a Grumpkin public key.
42
+ * @param msg - Message over which the signature was constructed.
43
+ * @param pubKey - The Grumpkin public key of the signer.
44
+ * @param sig - The Schnorr signature.
45
+ * @returns True or false.
46
+ */
47
+ public async verifySignature(msg: Uint8Array, pubKey: Point, sig: SchnorrSignature) {
48
+ const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
49
+ const messageArray = concatenateUint8Arrays([numToInt32BE(msg.length), msg]);
50
+ const [result] = api
51
+ .getWasm()
52
+ .callWasmExport('schnorr_verify_signature', [messageArray, pubKey.toBuffer(), sig.s, sig.e], [1]);
53
+ return result[0] === 1;
54
+ }
55
+ }
@@ -0,0 +1,116 @@
1
+ import { randomBytes } from '@aztec/foundation/crypto';
2
+ import { Fr } from '@aztec/foundation/fields';
3
+ import { BufferReader, mapTuple } from '@aztec/foundation/serialize';
4
+
5
+ import type { Signature } from '../signature/index.js';
6
+
7
+ /**
8
+ * Schnorr signature used for transactions.
9
+ * @see cpp/barretenberg/cpp/src/barretenberg/crypto/schnorr/schnorr.hpp
10
+ */
11
+ export class SchnorrSignature implements Signature {
12
+ /**
13
+ * The size of the signature in bytes.
14
+ */
15
+ public static SIZE = 64;
16
+
17
+ /**
18
+ * An empty signature.
19
+ */
20
+ public static EMPTY = new SchnorrSignature(Buffer.alloc(64));
21
+
22
+ constructor(private buffer: Buffer) {
23
+ if (buffer.length !== SchnorrSignature.SIZE) {
24
+ throw new Error(`Invalid signature buffer of length ${buffer.length}.`);
25
+ }
26
+ }
27
+
28
+ /**
29
+ * Determines if the provided signature is valid or not.
30
+ * @param signature - The data to be checked.
31
+ * @returns Boolean indicating if the provided data is a valid schnorr signature.
32
+ */
33
+ public static isSignature(signature: string) {
34
+ return /^(0x)?[0-9a-f]{128}$/i.test(signature);
35
+ }
36
+
37
+ /**
38
+ * Constructs a SchnorrSignature from the provided string.
39
+ * @param signature - The string to be converted to a schnorr signature.
40
+ * @returns The constructed schnorr signature.
41
+ */
42
+ public static fromString(signature: string) {
43
+ if (!SchnorrSignature.isSignature(signature)) {
44
+ throw new Error(`Invalid signature string: ${signature}`);
45
+ }
46
+ return new SchnorrSignature(Buffer.from(signature.replace(/^0x/i, ''), 'hex'));
47
+ }
48
+
49
+ /**
50
+ * Generates a random schnorr signature.
51
+ * @returns The randomly constructed signature.
52
+ */
53
+ public static random() {
54
+ return new SchnorrSignature(randomBytes(64));
55
+ }
56
+
57
+ /**
58
+ * Returns the 's' component of the signature.
59
+ * @returns A buffer containing the signature's 's' component.
60
+ */
61
+ get s() {
62
+ return this.buffer.subarray(0, 32);
63
+ }
64
+
65
+ /**
66
+ * Returns the 'e' component of the signature.
67
+ * @returns A buffer containing the signature's 'e' component.
68
+ */
69
+ get e() {
70
+ return this.buffer.subarray(32);
71
+ }
72
+
73
+ /**
74
+ * Returns the full signature as a buffer.
75
+ * @returns A buffer containing the signature.
76
+ */
77
+ toBuffer() {
78
+ return this.buffer;
79
+ }
80
+
81
+ /**
82
+ * Deserializes from a buffer.
83
+ * @param buffer - The buffer representation of the object.
84
+ * @returns The new object.
85
+ */
86
+ static fromBuffer(buffer: Buffer | BufferReader): SchnorrSignature {
87
+ const reader = BufferReader.asReader(buffer);
88
+ return new SchnorrSignature(reader.readBytes(SchnorrSignature.SIZE));
89
+ }
90
+
91
+ /**
92
+ * Returns the full signature as a hex string.
93
+ * @returns A string containing the signature in hex format.
94
+ */
95
+ toString() {
96
+ return `0x${this.buffer.toString('hex')}`;
97
+ }
98
+
99
+ /**
100
+ * Converts the signature to an array of three fields.
101
+ * @returns The signature components as an array of three fields
102
+ */
103
+ toFields(): Fr[] {
104
+ const sig = this.toBuffer();
105
+
106
+ const buf1 = Buffer.alloc(32);
107
+ const buf2 = Buffer.alloc(32);
108
+ const buf3 = Buffer.alloc(32);
109
+
110
+ sig.copy(buf1, 1, 0, 31);
111
+ sig.copy(buf2, 1, 31, 62);
112
+ sig.copy(buf3, 1, 62, 64);
113
+
114
+ return mapTuple([buf1, buf2, buf3], Fr.fromBuffer);
115
+ }
116
+ }
@@ -0,0 +1,57 @@
1
+ import { BarretenbergSync } from '@aztec/bb.js';
2
+
3
+ /**
4
+ * Secp256k1 elliptic curve operations.
5
+ */
6
+ export class Secp256k1 {
7
+ // prettier-ignore
8
+ static generator = Buffer.from([
9
+ 0x79, 0xbe, 0x66, 0x7e, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xce, 0x87, 0x0b, 0x07,
10
+ 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xce, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8, 0x17, 0x98,
11
+ 0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4, 0xfb, 0xfc, 0x0e, 0x11, 0x08, 0xa8,
12
+ 0xfd, 0x17, 0xb4, 0x48, 0xa6, 0x85, 0x54, 0x19, 0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10, 0xd4, 0xb8,
13
+ ]);
14
+
15
+ /**
16
+ * Point generator
17
+ * @returns The generator for the curve.
18
+ */
19
+ public generator(): Buffer {
20
+ return Secp256k1.generator;
21
+ }
22
+
23
+ /**
24
+ * Multiplies a point by a scalar (adds the point `scalar` amount of time).
25
+ * @param point - Point to multiply.
26
+ * @param scalar - Scalar to multiply by.
27
+ * @returns Result of the multiplication.
28
+ */
29
+ public async mul(point: Uint8Array, scalar: Uint8Array) {
30
+ const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
31
+ const [result] = api.getWasm().callWasmExport('ecc_secp256k1__mul', [point, scalar], [64]);
32
+ return Buffer.from(result);
33
+ }
34
+
35
+ /**
36
+ * Gets a random field element.
37
+ * @returns Random field element.
38
+ */
39
+ public async getRandomFr() {
40
+ const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
41
+ const [result] = api.getWasm().callWasmExport('ecc_secp256k1__get_random_scalar_mod_circuit_modulus', [], [32]);
42
+ return Buffer.from(result);
43
+ }
44
+
45
+ /**
46
+ * Converts a 512 bits long buffer to a field.
47
+ * @param uint512Buf - The buffer to convert.
48
+ * @returns Buffer representation of the field element.
49
+ */
50
+ public async reduce512BufferToFr(uint512Buf: Buffer) {
51
+ const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
52
+ const [result] = api
53
+ .getWasm()
54
+ .callWasmExport('ecc_secp256k1__reduce512_buffer_mod_circuit_modulus', [uint512Buf], [32]);
55
+ return Buffer.from(result);
56
+ }
57
+ }
@@ -1,6 +1,6 @@
1
1
  import { Buffer32 } from '@aztec/foundation/buffer';
2
- import { type EthAddress } from '@aztec/foundation/eth-address';
3
- import { type Signature } from '@aztec/foundation/eth-signature';
2
+ import type { EthAddress } from '@aztec/foundation/eth-address';
3
+ import type { Signature } from '@aztec/foundation/eth-signature';
4
4
 
5
5
  import { addressFromPrivateKey, makeEthSignDigest, signMessage } from './utils.js';
6
6
 
@@ -0,0 +1,85 @@
1
+ // TODO find a new home for this as we move to external bb.js
2
+ // See https://github.com/AztecProtocol/aztec-packages/issues/782
3
+ import { Buffer } from 'buffer';
4
+
5
+ /**
6
+ * For serializing an array of fixed length buffers.
7
+ * TODO move to foundation pkg.
8
+ * @param arr - Array of bufffers.
9
+ * @returns The serialized buffers.
10
+ */
11
+ export function serializeBufferArrayToVector(arr: Buffer[]) {
12
+ const lengthBuf = Buffer.alloc(4);
13
+ lengthBuf.writeUInt32BE(arr.length, 0);
14
+ return Buffer.concat([lengthBuf, ...arr]);
15
+ }
16
+
17
+ /**
18
+ * Helper function for deserializeArrayFromVector.
19
+ */
20
+ type DeserializeFn<T> = (
21
+ buf: Buffer,
22
+ offset: number,
23
+ ) => {
24
+ /**
25
+ * The deserialized type.
26
+ */
27
+ elem: T;
28
+ /**
29
+ * How many bytes to advance by.
30
+ */
31
+ adv: number;
32
+ };
33
+
34
+ /**
35
+ * For deserializing numbers to 32-bit little-endian form.
36
+ * TODO move to foundation pkg.
37
+ * @param n - The number.
38
+ * @returns The endian-corrected number.
39
+ */
40
+ export function deserializeArrayFromVector<T>(deserialize: DeserializeFn<T>, vector: Buffer, offset = 0) {
41
+ let pos = offset;
42
+ const size = vector.readUInt32BE(pos);
43
+ pos += 4;
44
+ const arr = new Array<T>(size);
45
+ for (let i = 0; i < size; ++i) {
46
+ const { elem, adv } = deserialize(vector, pos);
47
+ pos += adv;
48
+ arr[i] = elem;
49
+ }
50
+ return { elem: arr, adv: pos - offset };
51
+ }
52
+
53
+ /**
54
+ * For serializing numbers to 32 bit little-endian form.
55
+ * TODO move to foundation pkg.
56
+ * @param n - The number.
57
+ * @returns The endian-corrected number.
58
+ */
59
+ export function numToUInt32LE(n: number, bufferSize = 4) {
60
+ const buf = Buffer.alloc(bufferSize);
61
+ buf.writeUInt32LE(n, bufferSize - 4);
62
+ return buf;
63
+ }
64
+
65
+ /**
66
+ * Deserialize the 256-bit number at address `offset`.
67
+ * @param buf - The buffer.
68
+ * @param offset - The address.
69
+ * @returns The derserialized 256-bit field.
70
+ */
71
+ export function deserializeField(buf: Buffer, offset = 0) {
72
+ const adv = 32;
73
+ return { elem: buf.slice(offset, offset + adv), adv };
74
+ }
75
+
76
+ export function concatenateUint8Arrays(arrayOfUint8Arrays: Uint8Array[]) {
77
+ const totalLength = arrayOfUint8Arrays.reduce((prev, curr) => prev + curr.length, 0);
78
+ const result = new Uint8Array(totalLength);
79
+ let length = 0;
80
+ for (const array of arrayOfUint8Arrays) {
81
+ result.set(array, length);
82
+ length += array.length;
83
+ }
84
+ return result;
85
+ }
@@ -0,0 +1,17 @@
1
+ import type { Fr } from '@aztec/foundation/fields';
2
+
3
+ /**
4
+ * Interface to represent a signature.
5
+ */
6
+ export interface Signature {
7
+ /**
8
+ * Serializes to a buffer.
9
+ * @returns A buffer.
10
+ */
11
+ toBuffer(): Buffer;
12
+ /**
13
+ * Serializes to an array of fields.
14
+ * @returns Fields.
15
+ */
16
+ toFields(): Fr[];
17
+ }
@@ -3,4 +3,4 @@ import { BarretenbergSync } from '@aztec/bb.js';
3
3
  export * from './poseidon/index.js';
4
4
  export * from './pedersen/index.js';
5
5
 
6
- await BarretenbergSync.initSingleton();
6
+ await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
@@ -1,5 +1,5 @@
1
1
  import { toBigIntBE } from '../bigint-buffer/index.js';
2
- import { type Tuple } from '../serialize/types.js';
2
+ import type { Tuple } from '../serialize/types.js';
3
3
  import { Fr } from './fields.js';
4
4
 
5
5
  /**
@@ -319,7 +319,8 @@ export class Fr extends BaseField {
319
319
  * @returns A square root of the field element (null if it does not exist).
320
320
  */
321
321
  async sqrt(): Promise<Fr | null> {
322
- const wasm = (await BarretenbergSync.initSingleton()).getWasm();
322
+ const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
323
+ const wasm = api.getWasm();
323
324
  const [buf] = wasm.callWasmExport('bn254_fr_sqrt', [this.toBuffer()], [Fr.SIZE_IN_BYTES + 1]);
324
325
  const isSqrt = buf[0] === 1;
325
326
  if (!isSqrt) {
@@ -1,12 +1,15 @@
1
1
  import { promises as fs } from 'fs';
2
2
  import * as path from 'path';
3
3
 
4
+ import { createLogger } from '../log/pino-logger.js';
5
+
4
6
  // Create a random directory underneath a 'base' directory
5
7
  // Calls a provided method, ensures the random directory is cleaned up afterwards unless the operation fails
6
8
  export async function runInDirectory<T>(
7
9
  workingDirBase: string,
8
10
  fn: (dir: string) => Promise<T>,
9
11
  skipCleanup: boolean | undefined,
12
+ logger = createLogger('foundation:run-in-directory'),
10
13
  ): Promise<T> {
11
14
  // Create random directory to be used for temp files
12
15
  const workingDirectory = await fs.mkdtemp(path.join(workingDirBase, 'tmp-'));
@@ -20,7 +23,11 @@ export async function runInDirectory<T>(
20
23
  throw err;
21
24
  } finally {
22
25
  if (!skipCleanup) {
23
- await fs.rm(workingDirectory, { recursive: true, force: true });
26
+ try {
27
+ await fs.rm(workingDirectory, { recursive: true, force: true, maxRetries: 3, retryDelay: 100 });
28
+ } catch (err) {
29
+ logger.warn(`Failed to cleanup temporary directory ${workingDirectory}: ${err}`, { err });
30
+ }
24
31
  }
25
32
  }
26
33
  }
package/src/index.ts CHANGED
@@ -1,7 +1,5 @@
1
1
  // Reexport all folders at the root for packages targeting CommonJS
2
- export * as abi from './abi/index.js';
3
2
  export * as asyncMap from './async-map/index.js';
4
- export * as aztecAddress from './aztec-address/index.js';
5
3
  export * as bigintBuffer from './bigint-buffer/index.js';
6
4
  export * as collection from './collection/index.js';
7
5
  export * as committable from './committable/index.js';
@@ -3,7 +3,7 @@ import { Agent, type Dispatcher } from 'undici';
3
3
  import { createLogger } from '../../log/pino-logger.js';
4
4
  import { NoRetryError } from '../../retry/index.js';
5
5
  import { jsonStringify } from '../convert.js';
6
- import { type JsonRpcFetch } from './fetch.js';
6
+ import type { JsonRpcFetch } from './fetch.js';
7
7
 
8
8
  const log = createLogger('json-rpc:json_rpc_client:undici');
9
9
 
@@ -1,6 +1,6 @@
1
1
  import { Buffer } from 'buffer';
2
2
 
3
- import { type ZodFor } from '../schemas/types.js';
3
+ import type { ZodFor } from '../schemas/types.js';
4
4
 
5
5
  /**
6
6
  * Parses a json string and then feeds it to a zod schema.
@@ -4,7 +4,7 @@ import { type default as Application, default as Koa } from 'koa';
4
4
  import bodyParser from 'koa-bodyparser';
5
5
  import compress from 'koa-compress';
6
6
  import Router from 'koa-router';
7
- import { type AddressInfo } from 'net';
7
+ import type { AddressInfo } from 'net';
8
8
  import { format, inspect } from 'util';
9
9
  import { ZodError } from 'zod';
10
10
 
@@ -1,6 +1,6 @@
1
1
  import type http from 'http';
2
2
 
3
- import { type ApiSchemaFor } from '../../schemas/api.js';
3
+ import type { ApiSchemaFor } from '../../schemas/api.js';
4
4
  import { makeFetch } from '../client/fetch.js';
5
5
  import { type SafeJsonRpcClientOptions, createSafeJsonRpcClient } from '../client/safe_json_rpc_client.js';
6
6
  import {
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable no-console */
2
- import { type LogFn } from './log_fn.js';
2
+ import type { LogFn } from './log_fn.js';
3
3
 
4
4
  /**
5
5
  * ConsoleLogger is a utility class that provides customizable console logging functionality.
package/src/log/debug.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import debug from 'debug';
2
2
 
3
- import { type LogFn } from './log_fn.js';
3
+ import type { LogFn } from './log_fn.js';
4
4
 
5
5
  let preLogHook: ((...args: any[]) => void) | undefined;
6
6
  let postLogHook: ((...args: any[]) => void) | undefined;
@@ -1,4 +1,4 @@
1
- import { type pino } from 'pino';
1
+ import type { pino } from 'pino';
2
2
 
3
3
  /* eslint-disable camelcase */
4
4
 
package/src/log/index.ts CHANGED
@@ -3,3 +3,4 @@ export * from './debug.js';
3
3
  export * from './pino-logger.js';
4
4
  export * from './log_history.js';
5
5
  export * from './log_fn.js';
6
+ export * from './libp2p_logger.js';
@@ -0,0 +1,67 @@
1
+ import type { ComponentLogger, Logger } from '@libp2p/interface';
2
+
3
+ import { getLogLevelFromFilters } from './log-filters.js';
4
+ import type { LogLevel } from './log-levels.js';
5
+ import { logFilters, logger } from './pino-logger.js';
6
+
7
+ /**
8
+ * Creates a libp2p compatible logger that wraps our pino logger.
9
+ * This adapter implements the ComponentLogger interface required by libp2p.
10
+ */
11
+ export function createLibp2pComponentLogger(namespace: string): ComponentLogger {
12
+ return {
13
+ forComponent: (component: string) => createLibp2pLogger(`${namespace}:${component}`),
14
+ };
15
+ }
16
+
17
+ // Lipp2p libraries use arbitrary string substitutions, so we need to replace them with %s, this is slow so avoid doing it unless trace debugging
18
+ function replaceFormatting(message: string) {
19
+ // Message can sometimes not be a string, e.g. an error object, just return it as is
20
+ if (!message?.replace) {
21
+ return message;
22
+ }
23
+
24
+ return message.replace(/(%p|%a)/g, '%s');
25
+ }
26
+
27
+ function createLibp2pLogger(component: string): Logger {
28
+ // Create a direct pino logger instance for libp2p that supports string interpolation
29
+ const log = logger.child({ module: component }, { level: getLogLevelFromFilters(logFilters, component) });
30
+
31
+ const logIfEnabled = (level: LogLevel, message: string, ...args: unknown[]) => {
32
+ if (!log.isLevelEnabled(level)) {
33
+ return;
34
+ }
35
+
36
+ log[level](replaceFormatting(message), ...args);
37
+ };
38
+
39
+ // Default log level is trace as this is super super noisy
40
+ const logFn = (message: string, ...args: unknown[]) => {
41
+ logIfEnabled('trace', message, ...args);
42
+ };
43
+
44
+ return Object.assign(logFn, {
45
+ enabled: log.isLevelEnabled('debug'),
46
+ error(message: string, ...args: unknown[]) {
47
+ // 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);
49
+ },
50
+
51
+ debug(message: string, ...args: unknown[]) {
52
+ logIfEnabled('debug', message, ...args);
53
+ },
54
+
55
+ info(message: string, ...args: unknown[]) {
56
+ logIfEnabled('info', message, ...args);
57
+ },
58
+
59
+ warn(message: string, ...args: unknown[]) {
60
+ logIfEnabled('warn', message, ...args);
61
+ },
62
+
63
+ trace(message: string, ...args: unknown[]) {
64
+ logIfEnabled('trace', message, ...args);
65
+ },
66
+ });
67
+ }
@@ -1,33 +1,24 @@
1
1
  import { createColors, isColorSupported } from 'colorette';
2
2
  import isNode from 'detect-node';
3
3
  import { pino, symbols } from 'pino';
4
- import { type Writable } from 'stream';
4
+ import type { Writable } from 'stream';
5
5
  import { inspect } from 'util';
6
6
 
7
7
  import { compactArray } from '../collection/array.js';
8
8
  import { type EnvVar, parseBooleanEnv } from '../config/index.js';
9
9
  import { GoogleCloudLoggerConfig } from './gcloud-logger-config.js';
10
10
  import { getLogLevelFromFilters, parseEnv } from './log-filters.js';
11
- import { type LogLevel } from './log-levels.js';
12
- import { type LogData, type LogFn } from './log_fn.js';
11
+ import type { LogLevel } from './log-levels.js';
12
+ import type { LogData, LogFn } from './log_fn.js';
13
13
 
14
- export function createLogger(module: string, fixedTerms = {}): Logger {
14
+ export function createLogger(module: string): Logger {
15
15
  module = logNameHandlers.reduce((moduleName, handler) => handler(moduleName), module.replace(/^aztec:/, ''));
16
16
  const pinoLogger = logger.child({ module }, { level: getLogLevelFromFilters(logFilters, module) });
17
17
 
18
- // Only perform copy of data if fixed terms are provided
19
- const hasFixedTerms = Object.keys(fixedTerms).length > 0;
20
-
21
18
  // We check manually for isLevelEnabled to avoid calling processLogData unnecessarily.
22
19
  // Note that isLevelEnabled is missing from the browser version of pino.
23
20
  const logFn = (level: LogLevel, msg: string, data?: unknown) =>
24
- isLevelEnabled(pinoLogger, level) &&
25
- pinoLogger[level](
26
- hasFixedTerms
27
- ? processLogData({ ...fixedTerms, ...(data ?? {}) } as LogData)
28
- : processLogData((data as LogData) ?? {}),
29
- msg,
30
- );
21
+ isLevelEnabled(pinoLogger, level) && pinoLogger[level](processLogData((data as LogData) ?? {}), msg);
31
22
 
32
23
  return {
33
24
  silent: () => {},
@@ -83,6 +74,15 @@ export function removeLogNameHandler(handler: LogNameHandler) {
83
74
  }
84
75
  }
85
76
 
77
+ /** Creates all loggers within the given callback with the suffix appended to the module name. */
78
+ export async function withLogNameSuffix<T>(suffix: string, callback: () => Promise<T>): Promise<T> {
79
+ const logNameHandler = (module: string) => `${module}:${suffix}`;
80
+ addLogNameHandler(logNameHandler);
81
+ const result = await callback();
82
+ removeLogNameHandler(logNameHandler);
83
+ return result;
84
+ }
85
+
86
86
  // Patch isLevelEnabled missing from pino/browser.
87
87
  function isLevelEnabled(logger: pino.Logger<'verbose', boolean>, level: LogLevel): boolean {
88
88
  return typeof logger.isLevelEnabled === 'function'
@@ -92,7 +92,7 @@ function isLevelEnabled(logger: pino.Logger<'verbose', boolean>, level: LogLevel
92
92
 
93
93
  // Load log levels from environment variables.
94
94
  const defaultLogLevel = process.env.NODE_ENV === 'test' ? 'silent' : 'info';
95
- const [logLevel, logFilters] = parseEnv(process.env.LOG_LEVEL, defaultLogLevel);
95
+ export const [logLevel, logFilters] = parseEnv(process.env.LOG_LEVEL, defaultLogLevel);
96
96
 
97
97
  // Define custom logging levels for pino.
98
98
  const customLevels = { verbose: 25 };
@@ -178,7 +178,7 @@ function makeLogger() {
178
178
  }
179
179
  }
180
180
 
181
- const logger = makeLogger();
181
+ export const logger = makeLogger();
182
182
 
183
183
  // Log the logger configuration.
184
184
  logger.verbose(
@@ -1,4 +1,4 @@
1
- import { type MutexDatabase } from './mutex_database.js';
1
+ import type { MutexDatabase } from './mutex_database.js';
2
2
 
3
3
  export * from './mutex_database.js';
4
4