@aztec-labs/foundation 6.0.0-nightly.20260829

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (805) hide show
  1. package/README.md +1 -0
  2. package/dest/array/array.d.ts +68 -0
  3. package/dest/array/array.d.ts.map +1 -0
  4. package/dest/array/array.js +100 -0
  5. package/dest/array/index.d.ts +3 -0
  6. package/dest/array/index.d.ts.map +1 -0
  7. package/dest/array/index.js +2 -0
  8. package/dest/array/sorted_array.d.ts +15 -0
  9. package/dest/array/sorted_array.d.ts.map +1 -0
  10. package/dest/array/sorted_array.js +109 -0
  11. package/dest/async-map/index.d.ts +13 -0
  12. package/dest/async-map/index.d.ts.map +1 -0
  13. package/dest/async-map/index.js +17 -0
  14. package/dest/async-pool/index.d.ts +3 -0
  15. package/dest/async-pool/index.d.ts.map +1 -0
  16. package/dest/async-pool/index.js +48 -0
  17. package/dest/bigint/index.d.ts +7 -0
  18. package/dest/bigint/index.d.ts.map +1 -0
  19. package/dest/bigint/index.js +15 -0
  20. package/dest/bigint-buffer/index.d.ts +40 -0
  21. package/dest/bigint-buffer/index.d.ts.map +1 -0
  22. package/dest/bigint-buffer/index.js +81 -0
  23. package/dest/branded-types/block_number.d.ts +56 -0
  24. package/dest/branded-types/block_number.d.ts.map +1 -0
  25. package/dest/branded-types/block_number.js +89 -0
  26. package/dest/branded-types/buffer32_hash.d.ts +27 -0
  27. package/dest/branded-types/buffer32_hash.d.ts.map +1 -0
  28. package/dest/branded-types/buffer32_hash.js +12 -0
  29. package/dest/branded-types/checkpoint_number.d.ts +60 -0
  30. package/dest/branded-types/checkpoint_number.d.ts.map +1 -0
  31. package/dest/branded-types/checkpoint_number.js +88 -0
  32. package/dest/branded-types/epoch.d.ts +42 -0
  33. package/dest/branded-types/epoch.d.ts.map +1 -0
  34. package/dest/branded-types/epoch.js +59 -0
  35. package/dest/branded-types/index.d.ts +8 -0
  36. package/dest/branded-types/index.d.ts.map +1 -0
  37. package/dest/branded-types/index.js +6 -0
  38. package/dest/branded-types/index_within_checkpoint.d.ts +42 -0
  39. package/dest/branded-types/index_within_checkpoint.d.ts.map +1 -0
  40. package/dest/branded-types/index_within_checkpoint.js +59 -0
  41. package/dest/branded-types/slot.d.ts +45 -0
  42. package/dest/branded-types/slot.d.ts.map +1 -0
  43. package/dest/branded-types/slot.js +62 -0
  44. package/dest/branded-types/types.d.ts +5 -0
  45. package/dest/branded-types/types.d.ts.map +1 -0
  46. package/dest/branded-types/types.js +1 -0
  47. package/dest/buffer/buffer16.d.ts +82 -0
  48. package/dest/buffer/buffer16.d.ts.map +1 -0
  49. package/dest/buffer/buffer16.js +102 -0
  50. package/dest/buffer/buffer32.d.ts +54 -0
  51. package/dest/buffer/buffer32.d.ts.map +1 -0
  52. package/dest/buffer/buffer32.js +83 -0
  53. package/dest/buffer/index.d.ts +4 -0
  54. package/dest/buffer/index.d.ts.map +1 -0
  55. package/dest/buffer/index.js +3 -0
  56. package/dest/buffer/utils.d.ts +3 -0
  57. package/dest/buffer/utils.d.ts.map +1 -0
  58. package/dest/buffer/utils.js +7 -0
  59. package/dest/collection/array.d.ts +135 -0
  60. package/dest/collection/array.d.ts.map +1 -0
  61. package/dest/collection/array.js +302 -0
  62. package/dest/collection/index.d.ts +5 -0
  63. package/dest/collection/index.d.ts.map +1 -0
  64. package/dest/collection/index.js +4 -0
  65. package/dest/collection/lru_map.d.ts +41 -0
  66. package/dest/collection/lru_map.d.ts.map +1 -0
  67. package/dest/collection/lru_map.js +119 -0
  68. package/dest/collection/lru_set.d.ts +35 -0
  69. package/dest/collection/lru_set.d.ts.map +1 -0
  70. package/dest/collection/lru_set.js +95 -0
  71. package/dest/collection/object.d.ts +30 -0
  72. package/dest/collection/object.d.ts.map +1 -0
  73. package/dest/collection/object.js +57 -0
  74. package/dest/committable/committable.d.ts +28 -0
  75. package/dest/committable/committable.d.ts.map +1 -0
  76. package/dest/committable/committable.js +36 -0
  77. package/dest/committable/index.d.ts +2 -0
  78. package/dest/committable/index.d.ts.map +1 -0
  79. package/dest/committable/index.js +1 -0
  80. package/dest/config/env_var.d.ts +2 -0
  81. package/dest/config/env_var.d.ts.map +1 -0
  82. package/dest/config/env_var.js +1 -0
  83. package/dest/config/index.d.ts +154 -0
  84. package/dest/config/index.d.ts.map +1 -0
  85. package/dest/config/index.js +272 -0
  86. package/dest/config/network_config.d.ts +28 -0
  87. package/dest/config/network_config.d.ts.map +1 -0
  88. package/dest/config/network_config.js +14 -0
  89. package/dest/config/network_name.d.ts +3 -0
  90. package/dest/config/network_name.d.ts.map +1 -0
  91. package/dest/config/network_name.js +19 -0
  92. package/dest/config/parse-env.d.ts +3 -0
  93. package/dest/config/parse-env.d.ts.map +1 -0
  94. package/dest/config/parse-env.js +7 -0
  95. package/dest/config/secret_value.d.ts +28 -0
  96. package/dest/config/secret_value.d.ts.map +1 -0
  97. package/dest/config/secret_value.js +36 -0
  98. package/dest/crypto/aes128/index.d.ts +33 -0
  99. package/dest/crypto/aes128/index.d.ts.map +1 -0
  100. package/dest/crypto/aes128/index.js +71 -0
  101. package/dest/crypto/bls/bn254_keystore.d.ts +129 -0
  102. package/dest/crypto/bls/bn254_keystore.d.ts.map +1 -0
  103. package/dest/crypto/bls/bn254_keystore.js +206 -0
  104. package/dest/crypto/bls/index.d.ts +13 -0
  105. package/dest/crypto/bls/index.d.ts.map +1 -0
  106. package/dest/crypto/bls/index.js +87 -0
  107. package/dest/crypto/bn254/index.d.ts +39 -0
  108. package/dest/crypto/bn254/index.d.ts.map +1 -0
  109. package/dest/crypto/bn254/index.js +56 -0
  110. package/dest/crypto/ecdsa/index.d.ts +39 -0
  111. package/dest/crypto/ecdsa/index.d.ts.map +1 -0
  112. package/dest/crypto/ecdsa/index.js +102 -0
  113. package/dest/crypto/ecdsa/signature.d.ts +69 -0
  114. package/dest/crypto/ecdsa/signature.d.ts.map +1 -0
  115. package/dest/crypto/ecdsa/signature.js +92 -0
  116. package/dest/crypto/grumpkin/index.d.ts +42 -0
  117. package/dest/crypto/grumpkin/index.d.ts.map +1 -0
  118. package/dest/crypto/grumpkin/index.js +160 -0
  119. package/dest/crypto/keccak/index.d.ts +26 -0
  120. package/dest/crypto/keccak/index.d.ts.map +1 -0
  121. package/dest/crypto/keccak/index.js +248 -0
  122. package/dest/crypto/keys/index.d.ts +4 -0
  123. package/dest/crypto/keys/index.d.ts.map +1 -0
  124. package/dest/crypto/keys/index.js +34 -0
  125. package/dest/crypto/pedersen/index.d.ts +2 -0
  126. package/dest/crypto/pedersen/index.d.ts.map +1 -0
  127. package/dest/crypto/pedersen/index.js +1 -0
  128. package/dest/crypto/pedersen/pedersen.noble.d.ts +9 -0
  129. package/dest/crypto/pedersen/pedersen.noble.d.ts.map +1 -0
  130. package/dest/crypto/pedersen/pedersen.noble.js +558 -0
  131. package/dest/crypto/pedersen/pedersen.wasm.d.ts +19 -0
  132. package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -0
  133. package/dest/crypto/pedersen/pedersen.wasm.js +51 -0
  134. package/dest/crypto/poseidon/index.d.ts +23 -0
  135. package/dest/crypto/poseidon/index.d.ts.map +1 -0
  136. package/dest/crypto/poseidon/index.js +71 -0
  137. package/dest/crypto/random/index.d.ts +23 -0
  138. package/dest/crypto/random/index.d.ts.map +1 -0
  139. package/dest/crypto/random/index.js +38 -0
  140. package/dest/crypto/random/randomness_singleton.d.ts +24 -0
  141. package/dest/crypto/random/randomness_singleton.d.ts.map +1 -0
  142. package/dest/crypto/random/randomness_singleton.js +55 -0
  143. package/dest/crypto/schnorr/index.d.ts +32 -0
  144. package/dest/crypto/schnorr/index.d.ts.map +1 -0
  145. package/dest/crypto/schnorr/index.js +60 -0
  146. package/dest/crypto/schnorr/signature.d.ts +48 -0
  147. package/dest/crypto/schnorr/signature.d.ts.map +1 -0
  148. package/dest/crypto/schnorr/signature.js +77 -0
  149. package/dest/crypto/secp256k1/index.d.ts +30 -0
  150. package/dest/crypto/secp256k1/index.d.ts.map +1 -0
  151. package/dest/crypto/secp256k1/index.js +121 -0
  152. package/dest/crypto/secp256k1-signer/index.d.ts +3 -0
  153. package/dest/crypto/secp256k1-signer/index.d.ts.map +1 -0
  154. package/dest/crypto/secp256k1-signer/index.js +2 -0
  155. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts +24 -0
  156. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts.map +1 -0
  157. package/dest/crypto/secp256k1-signer/secp256k1_signer.js +30 -0
  158. package/dest/crypto/secp256k1-signer/utils.d.ts +102 -0
  159. package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -0
  160. package/dest/crypto/secp256k1-signer/utils.js +196 -0
  161. package/dest/crypto/sha256/index.d.ts +37 -0
  162. package/dest/crypto/sha256/index.d.ts.map +1 -0
  163. package/dest/crypto/sha256/index.js +208 -0
  164. package/dest/crypto/sha512/index.d.ts +9 -0
  165. package/dest/crypto/sha512/index.d.ts.map +1 -0
  166. package/dest/crypto/sha512/index.js +12 -0
  167. package/dest/crypto/signature/index.d.ts +17 -0
  168. package/dest/crypto/signature/index.d.ts.map +1 -0
  169. package/dest/crypto/signature/index.js +3 -0
  170. package/dest/crypto/sync/index.d.ts +3 -0
  171. package/dest/crypto/sync/index.d.ts.map +1 -0
  172. package/dest/crypto/sync/index.js +4 -0
  173. package/dest/crypto/sync/pedersen/index.d.ts +19 -0
  174. package/dest/crypto/sync/pedersen/index.d.ts.map +1 -0
  175. package/dest/crypto/sync/pedersen/index.js +45 -0
  176. package/dest/crypto/sync/poseidon/index.d.ts +23 -0
  177. package/dest/crypto/sync/poseidon/index.d.ts.map +1 -0
  178. package/dest/crypto/sync/poseidon/index.js +60 -0
  179. package/dest/curves/bls12/field.d.ts +148 -0
  180. package/dest/curves/bls12/field.d.ts.map +1 -0
  181. package/dest/curves/bls12/field.js +357 -0
  182. package/dest/curves/bls12/index.d.ts +3 -0
  183. package/dest/curves/bls12/index.d.ts.map +1 -0
  184. package/dest/curves/bls12/index.js +2 -0
  185. package/dest/curves/bls12/point.d.ts +229 -0
  186. package/dest/curves/bls12/point.d.ts.map +1 -0
  187. package/dest/curves/bls12/point.js +400 -0
  188. package/dest/curves/bn254/field.d.ts +185 -0
  189. package/dest/curves/bn254/field.d.ts.map +1 -0
  190. package/dest/curves/bn254/field.js +420 -0
  191. package/dest/curves/bn254/index.d.ts +3 -0
  192. package/dest/curves/bn254/index.d.ts.map +1 -0
  193. package/dest/curves/bn254/index.js +2 -0
  194. package/dest/curves/bn254/point.d.ts +54 -0
  195. package/dest/curves/bn254/point.d.ts.map +1 -0
  196. package/dest/curves/bn254/point.js +143 -0
  197. package/dest/curves/grumpkin/index.d.ts +10 -0
  198. package/dest/curves/grumpkin/index.d.ts.map +1 -0
  199. package/dest/curves/grumpkin/index.js +3 -0
  200. package/dest/curves/grumpkin/point.d.ts +168 -0
  201. package/dest/curves/grumpkin/point.d.ts.map +1 -0
  202. package/dest/curves/grumpkin/point.js +263 -0
  203. package/dest/decorators/index.d.ts +2 -0
  204. package/dest/decorators/index.d.ts.map +1 -0
  205. package/dest/decorators/index.js +1 -0
  206. package/dest/decorators/memoize.d.ts +2 -0
  207. package/dest/decorators/memoize.d.ts.map +1 -0
  208. package/dest/decorators/memoize.js +11 -0
  209. package/dest/error/index.d.ts +21 -0
  210. package/dest/error/index.d.ts.map +1 -0
  211. package/dest/error/index.js +17 -0
  212. package/dest/eth-address/index.d.ts +143 -0
  213. package/dest/eth-address/index.d.ts.map +1 -0
  214. package/dest/eth-address/index.js +224 -0
  215. package/dest/eth-signature/eth_signature.d.ts +65 -0
  216. package/dest/eth-signature/eth_signature.d.ts.map +1 -0
  217. package/dest/eth-signature/eth_signature.js +110 -0
  218. package/dest/eth-signature/index.d.ts +2 -0
  219. package/dest/eth-signature/index.d.ts.map +1 -0
  220. package/dest/eth-signature/index.js +1 -0
  221. package/dest/fifo/fifo_frame_reader.d.ts +41 -0
  222. package/dest/fifo/fifo_frame_reader.d.ts.map +1 -0
  223. package/dest/fifo/fifo_frame_reader.js +91 -0
  224. package/dest/fifo/index.d.ts +2 -0
  225. package/dest/fifo/index.d.ts.map +1 -0
  226. package/dest/fifo/index.js +1 -0
  227. package/dest/fifo_set/fifo_set.d.ts +15 -0
  228. package/dest/fifo_set/fifo_set.d.ts.map +1 -0
  229. package/dest/fifo_set/fifo_set.js +39 -0
  230. package/dest/fifo_set/index.d.ts +2 -0
  231. package/dest/fifo_set/index.d.ts.map +1 -0
  232. package/dest/fifo_set/index.js +1 -0
  233. package/dest/fs/index.d.ts +3 -0
  234. package/dest/fs/index.d.ts.map +1 -0
  235. package/dest/fs/index.js +2 -0
  236. package/dest/fs/run_in_dir.d.ts +2 -0
  237. package/dest/fs/run_in_dir.d.ts.map +1 -0
  238. package/dest/fs/run_in_dir.js +31 -0
  239. package/dest/fs/try_rm_dir.d.ts +3 -0
  240. package/dest/fs/try_rm_dir.d.ts.map +1 -0
  241. package/dest/fs/try_rm_dir.js +16 -0
  242. package/dest/iterable/all.d.ts +9 -0
  243. package/dest/iterable/all.d.ts.map +1 -0
  244. package/dest/iterable/all.js +18 -0
  245. package/dest/iterable/filter.d.ts +10 -0
  246. package/dest/iterable/filter.d.ts.map +1 -0
  247. package/dest/iterable/filter.js +48 -0
  248. package/dest/iterable/first.d.ts +8 -0
  249. package/dest/iterable/first.d.ts.map +1 -0
  250. package/dest/iterable/first.js +11 -0
  251. package/dest/iterable/index.d.ts +9 -0
  252. package/dest/iterable/index.d.ts.map +1 -0
  253. package/dest/iterable/index.js +8 -0
  254. package/dest/iterable/isAsyncIt.d.ts +7 -0
  255. package/dest/iterable/isAsyncIt.d.ts.map +1 -0
  256. package/dest/iterable/isAsyncIt.js +7 -0
  257. package/dest/iterable/map.d.ts +12 -0
  258. package/dest/iterable/map.d.ts.map +1 -0
  259. package/dest/iterable/map.js +36 -0
  260. package/dest/iterable/peek.d.ts +19 -0
  261. package/dest/iterable/peek.d.ts.map +1 -0
  262. package/dest/iterable/peek.js +33 -0
  263. package/dest/iterable/sort.d.ts +14 -0
  264. package/dest/iterable/sort.d.ts.map +1 -0
  265. package/dest/iterable/sort.js +15 -0
  266. package/dest/iterable/take.d.ts +10 -0
  267. package/dest/iterable/take.d.ts.map +1 -0
  268. package/dest/iterable/take.js +32 -0
  269. package/dest/iterable/toArray.d.ts +2 -0
  270. package/dest/iterable/toArray.d.ts.map +1 -0
  271. package/dest/iterable/toArray.js +7 -0
  272. package/dest/iterator/filter.d.ts +3 -0
  273. package/dest/iterator/filter.d.ts.map +1 -0
  274. package/dest/iterator/filter.js +7 -0
  275. package/dest/iterator/index.d.ts +2 -0
  276. package/dest/iterator/index.d.ts.map +1 -0
  277. package/dest/iterator/index.js +1 -0
  278. package/dest/jest/env.js +48 -0
  279. package/dest/jest/setup.js +34 -0
  280. package/dest/jest/setupAfterEnv.js +3 -0
  281. package/dest/json-rpc/client/fetch.d.ts +37 -0
  282. package/dest/json-rpc/client/fetch.d.ts.map +1 -0
  283. package/dest/json-rpc/client/fetch.js +67 -0
  284. package/dest/json-rpc/client/index.d.ts +3 -0
  285. package/dest/json-rpc/client/index.d.ts.map +1 -0
  286. package/dest/json-rpc/client/index.js +2 -0
  287. package/dest/json-rpc/client/safe_json_rpc_client.d.ts +33 -0
  288. package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -0
  289. package/dest/json-rpc/client/safe_json_rpc_client.js +218 -0
  290. package/dest/json-rpc/client/undici.d.ts +16 -0
  291. package/dest/json-rpc/client/undici.d.ts.map +1 -0
  292. package/dest/json-rpc/client/undici.js +112 -0
  293. package/dest/json-rpc/convert.d.ts +20 -0
  294. package/dest/json-rpc/convert.d.ts.map +1 -0
  295. package/dest/json-rpc/convert.js +40 -0
  296. package/dest/json-rpc/errors.d.ts +4 -0
  297. package/dest/json-rpc/errors.d.ts.map +1 -0
  298. package/dest/json-rpc/errors.js +6 -0
  299. package/dest/json-rpc/fixtures/class_a.d.ts +13 -0
  300. package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -0
  301. package/dest/json-rpc/fixtures/class_a.js +20 -0
  302. package/dest/json-rpc/fixtures/class_b.d.ts +13 -0
  303. package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -0
  304. package/dest/json-rpc/fixtures/class_b.js +20 -0
  305. package/dest/json-rpc/fixtures/test_state.d.ts +85 -0
  306. package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -0
  307. package/dest/json-rpc/fixtures/test_state.js +171 -0
  308. package/dest/json-rpc/index.d.ts +3 -0
  309. package/dest/json-rpc/index.d.ts.map +1 -0
  310. package/dest/json-rpc/index.js +2 -0
  311. package/dest/json-rpc/js_utils.d.ts +13 -0
  312. package/dest/json-rpc/js_utils.d.ts.map +1 -0
  313. package/dest/json-rpc/js_utils.js +16 -0
  314. package/dest/json-rpc/server/api_key_auth.d.ts +19 -0
  315. package/dest/json-rpc/server/api_key_auth.d.ts.map +1 -0
  316. package/dest/json-rpc/server/api_key_auth.js +57 -0
  317. package/dest/json-rpc/server/index.d.ts +3 -0
  318. package/dest/json-rpc/server/index.d.ts.map +1 -0
  319. package/dest/json-rpc/server/index.js +2 -0
  320. package/dest/json-rpc/server/safe_json_rpc_server.d.ts +177 -0
  321. package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -0
  322. package/dest/json-rpc/server/safe_json_rpc_server.js +570 -0
  323. package/dest/json-rpc/test/index.d.ts +2 -0
  324. package/dest/json-rpc/test/index.d.ts.map +1 -0
  325. package/dest/json-rpc/test/index.js +1 -0
  326. package/dest/json-rpc/test/integration.d.ts +14 -0
  327. package/dest/json-rpc/test/integration.d.ts.map +1 -0
  328. package/dest/json-rpc/test/integration.js +21 -0
  329. package/dest/log/aws-logger-config.d.ts +8 -0
  330. package/dest/log/aws-logger-config.d.ts.map +1 -0
  331. package/dest/log/aws-logger-config.js +55 -0
  332. package/dest/log/bigint-utils.d.ts +5 -0
  333. package/dest/log/bigint-utils.d.ts.map +1 -0
  334. package/dest/log/bigint-utils.js +21 -0
  335. package/dest/log/console.d.ts +11 -0
  336. package/dest/log/console.d.ts.map +1 -0
  337. package/dest/log/console.js +36 -0
  338. package/dest/log/gcloud-logger-config.d.ts +13 -0
  339. package/dest/log/gcloud-logger-config.d.ts.map +1 -0
  340. package/dest/log/gcloud-logger-config.js +61 -0
  341. package/dest/log/index.d.ts +7 -0
  342. package/dest/log/index.d.ts.map +1 -0
  343. package/dest/log/index.js +6 -0
  344. package/dest/log/libp2p_logger.d.ts +10 -0
  345. package/dest/log/libp2p_logger.d.ts.map +1 -0
  346. package/dest/log/libp2p_logger.js +76 -0
  347. package/dest/log/log-filters.d.ts +20 -0
  348. package/dest/log/log-filters.d.ts.map +1 -0
  349. package/dest/log/log-filters.js +73 -0
  350. package/dest/log/log-levels.d.ts +3 -0
  351. package/dest/log/log-levels.d.ts.map +1 -0
  352. package/dest/log/log-levels.js +10 -0
  353. package/dest/log/log_fn.d.ts +7 -0
  354. package/dest/log/log_fn.d.ts.map +1 -0
  355. package/dest/log/log_fn.js +1 -0
  356. package/dest/log/noir_debug_log_util.d.ts +14 -0
  357. package/dest/log/noir_debug_log_util.d.ts.map +1 -0
  358. package/dest/log/noir_debug_log_util.js +14 -0
  359. package/dest/log/pino-logger-server.d.ts +9 -0
  360. package/dest/log/pino-logger-server.d.ts.map +1 -0
  361. package/dest/log/pino-logger-server.js +18 -0
  362. package/dest/log/pino-logger.d.ts +86 -0
  363. package/dest/log/pino-logger.d.ts.map +1 -0
  364. package/dest/log/pino-logger.js +347 -0
  365. package/dest/message/index.d.ts +32 -0
  366. package/dest/message/index.d.ts.map +1 -0
  367. package/dest/message/index.js +27 -0
  368. package/dest/mutex/index.d.ts +53 -0
  369. package/dest/mutex/index.d.ts.map +1 -0
  370. package/dest/mutex/index.js +78 -0
  371. package/dest/mutex/mutex_database.d.ts +10 -0
  372. package/dest/mutex/mutex_database.d.ts.map +1 -0
  373. package/dest/mutex/mutex_database.js +4 -0
  374. package/dest/noir/index.d.ts +2 -0
  375. package/dest/noir/index.d.ts.map +1 -0
  376. package/dest/noir/index.js +1 -0
  377. package/dest/noir/noir_package_config.d.ts +44 -0
  378. package/dest/noir/noir_package_config.d.ts.map +1 -0
  379. package/dest/noir/noir_package_config.js +36 -0
  380. package/dest/number/index.d.ts +3 -0
  381. package/dest/number/index.d.ts.map +1 -0
  382. package/dest/number/index.js +12 -0
  383. package/dest/profiler/index.d.ts +2 -0
  384. package/dest/profiler/index.d.ts.map +1 -0
  385. package/dest/profiler/index.js +1 -0
  386. package/dest/profiler/profiler.d.ts +8 -0
  387. package/dest/profiler/profiler.d.ts.map +1 -0
  388. package/dest/profiler/profiler.js +97 -0
  389. package/dest/promise/index.d.ts +3 -0
  390. package/dest/promise/index.d.ts.map +1 -0
  391. package/dest/promise/index.js +2 -0
  392. package/dest/promise/running-promise.d.ts +53 -0
  393. package/dest/promise/running-promise.d.ts.map +1 -0
  394. package/dest/promise/running-promise.js +122 -0
  395. package/dest/promise/utils.d.ts +25 -0
  396. package/dest/promise/utils.d.ts.map +1 -0
  397. package/dest/promise/utils.js +40 -0
  398. package/dest/queue/base_memory_queue.d.ts +65 -0
  399. package/dest/queue/base_memory_queue.d.ts.map +1 -0
  400. package/dest/queue/base_memory_queue.js +116 -0
  401. package/dest/queue/batch_queue.d.ts +47 -0
  402. package/dest/queue/batch_queue.d.ts.map +1 -0
  403. package/dest/queue/batch_queue.js +106 -0
  404. package/dest/queue/bounded_serial_queue.d.ts +56 -0
  405. package/dest/queue/bounded_serial_queue.d.ts.map +1 -0
  406. package/dest/queue/bounded_serial_queue.js +84 -0
  407. package/dest/queue/fifo_memory_queue.d.ts +21 -0
  408. package/dest/queue/fifo_memory_queue.d.ts.map +1 -0
  409. package/dest/queue/fifo_memory_queue.js +29 -0
  410. package/dest/queue/index.d.ts +7 -0
  411. package/dest/queue/index.d.ts.map +1 -0
  412. package/dest/queue/index.js +6 -0
  413. package/dest/queue/priority_memory_queue.d.ts +13 -0
  414. package/dest/queue/priority_memory_queue.d.ts.map +1 -0
  415. package/dest/queue/priority_memory_queue.js +16 -0
  416. package/dest/queue/priority_queue.d.ts +14 -0
  417. package/dest/queue/priority_queue.d.ts.map +1 -0
  418. package/dest/queue/priority_queue.js +29 -0
  419. package/dest/queue/semaphore.d.ts +27 -0
  420. package/dest/queue/semaphore.d.ts.map +1 -0
  421. package/dest/queue/semaphore.js +26 -0
  422. package/dest/queue/serial_queue.d.ts +49 -0
  423. package/dest/queue/serial_queue.d.ts.map +1 -0
  424. package/dest/queue/serial_queue.js +74 -0
  425. package/dest/retry/index.d.ts +83 -0
  426. package/dest/retry/index.d.ts.map +1 -0
  427. package/dest/retry/index.js +146 -0
  428. package/dest/running-promise/index.d.ts +2 -0
  429. package/dest/running-promise/index.d.ts.map +1 -0
  430. package/dest/running-promise/index.js +1 -0
  431. package/dest/schemas/api.d.ts +23 -0
  432. package/dest/schemas/api.d.ts.map +1 -0
  433. package/dest/schemas/api.js +9 -0
  434. package/dest/schemas/index.d.ts +6 -0
  435. package/dest/schemas/index.d.ts.map +1 -0
  436. package/dest/schemas/index.js +5 -0
  437. package/dest/schemas/parse.d.ts +9 -0
  438. package/dest/schemas/parse.d.ts.map +1 -0
  439. package/dest/schemas/parse.js +23 -0
  440. package/dest/schemas/schemas.d.ts +46 -0
  441. package/dest/schemas/schemas.d.ts.map +1 -0
  442. package/dest/schemas/schemas.js +56 -0
  443. package/dest/schemas/types.d.ts +33 -0
  444. package/dest/schemas/types.d.ts.map +1 -0
  445. package/dest/schemas/types.js +25 -0
  446. package/dest/schemas/utils.d.ts +47 -0
  447. package/dest/schemas/utils.d.ts.map +1 -0
  448. package/dest/schemas/utils.js +54 -0
  449. package/dest/serialize/buffer_reader.d.ts +274 -0
  450. package/dest/serialize/buffer_reader.d.ts.map +1 -0
  451. package/dest/serialize/buffer_reader.js +359 -0
  452. package/dest/serialize/buffer_sink.d.ts +134 -0
  453. package/dest/serialize/buffer_sink.d.ts.map +1 -0
  454. package/dest/serialize/buffer_sink.js +297 -0
  455. package/dest/serialize/field_reader.d.ts +121 -0
  456. package/dest/serialize/field_reader.d.ts.map +1 -0
  457. package/dest/serialize/field_reader.js +164 -0
  458. package/dest/serialize/free_funcs.d.ts +107 -0
  459. package/dest/serialize/free_funcs.d.ts.map +1 -0
  460. package/dest/serialize/free_funcs.js +183 -0
  461. package/dest/serialize/index.d.ts +8 -0
  462. package/dest/serialize/index.d.ts.map +1 -0
  463. package/dest/serialize/index.js +7 -0
  464. package/dest/serialize/serialize.d.ts +168 -0
  465. package/dest/serialize/serialize.d.ts.map +1 -0
  466. package/dest/serialize/serialize.js +258 -0
  467. package/dest/serialize/type_registry.d.ts +23 -0
  468. package/dest/serialize/type_registry.d.ts.map +1 -0
  469. package/dest/serialize/type_registry.js +61 -0
  470. package/dest/serialize/types.d.ts +33 -0
  471. package/dest/serialize/types.d.ts.map +1 -0
  472. package/dest/serialize/types.js +21 -0
  473. package/dest/sleep/index.d.ts +54 -0
  474. package/dest/sleep/index.d.ts.map +1 -0
  475. package/dest/sleep/index.js +80 -0
  476. package/dest/string/index.d.ts +18 -0
  477. package/dest/string/index.d.ts.map +1 -0
  478. package/dest/string/index.js +62 -0
  479. package/dest/testing/files/index.d.ts +20 -0
  480. package/dest/testing/files/index.d.ts.map +1 -0
  481. package/dest/testing/files/index.js +59 -0
  482. package/dest/testing/formatting.d.ts +4 -0
  483. package/dest/testing/formatting.d.ts.map +1 -0
  484. package/dest/testing/formatting.js +3 -0
  485. package/dest/testing/index.d.ts +5 -0
  486. package/dest/testing/index.d.ts.map +1 -0
  487. package/dest/testing/index.js +4 -0
  488. package/dest/testing/port_allocator.d.ts +10 -0
  489. package/dest/testing/port_allocator.d.ts.map +1 -0
  490. package/dest/testing/port_allocator.js +29 -0
  491. package/dest/testing/snapshot_serializer.d.ts +5 -0
  492. package/dest/testing/snapshot_serializer.d.ts.map +1 -0
  493. package/dest/testing/snapshot_serializer.js +32 -0
  494. package/dest/testing/test_data.d.ts +7 -0
  495. package/dest/testing/test_data.d.ts.map +1 -0
  496. package/dest/testing/test_data.js +29 -0
  497. package/dest/timer/date.d.ts +39 -0
  498. package/dest/timer/date.d.ts.map +1 -0
  499. package/dest/timer/date.js +62 -0
  500. package/dest/timer/elapsed.d.ts +13 -0
  501. package/dest/timer/elapsed.d.ts.map +1 -0
  502. package/dest/timer/elapsed.js +25 -0
  503. package/dest/timer/index.d.ts +5 -0
  504. package/dest/timer/index.d.ts.map +1 -0
  505. package/dest/timer/index.js +4 -0
  506. package/dest/timer/timeout.d.ts +56 -0
  507. package/dest/timer/timeout.d.ts.map +1 -0
  508. package/dest/timer/timeout.js +113 -0
  509. package/dest/timer/timer.d.ts +37 -0
  510. package/dest/timer/timer.d.ts.map +1 -0
  511. package/dest/timer/timer.js +40 -0
  512. package/dest/transport/dispatch/create_dispatch_proxy.d.ts +111 -0
  513. package/dest/transport/dispatch/create_dispatch_proxy.d.ts.map +1 -0
  514. package/dest/transport/dispatch/create_dispatch_proxy.js +59 -0
  515. package/dest/transport/dispatch/messages.d.ts +52 -0
  516. package/dest/transport/dispatch/messages.d.ts.map +1 -0
  517. package/dest/transport/dispatch/messages.js +13 -0
  518. package/dest/transport/index.d.ts +10 -0
  519. package/dest/transport/index.d.ts.map +1 -0
  520. package/dest/transport/index.js +9 -0
  521. package/dest/transport/interface/connector.d.ts +8 -0
  522. package/dest/transport/interface/connector.d.ts.map +1 -0
  523. package/dest/transport/interface/connector.js +3 -0
  524. package/dest/transport/interface/listener.d.ts +12 -0
  525. package/dest/transport/interface/listener.d.ts.map +1 -0
  526. package/dest/transport/interface/listener.js +4 -0
  527. package/dest/transport/interface/socket.d.ts +13 -0
  528. package/dest/transport/interface/socket.d.ts.map +1 -0
  529. package/dest/transport/interface/socket.js +7 -0
  530. package/dest/transport/interface/transferable.d.ts +68 -0
  531. package/dest/transport/interface/transferable.d.ts.map +1 -0
  532. package/dest/transport/interface/transferable.js +63 -0
  533. package/dest/transport/node/index.d.ts +3 -0
  534. package/dest/transport/node/index.d.ts.map +1 -0
  535. package/dest/transport/node/index.js +2 -0
  536. package/dest/transport/node/node_connector.d.ts +27 -0
  537. package/dest/transport/node/node_connector.d.ts.map +1 -0
  538. package/dest/transport/node/node_connector.js +26 -0
  539. package/dest/transport/node/node_connector_socket.d.ts +41 -0
  540. package/dest/transport/node/node_connector_socket.d.ts.map +1 -0
  541. package/dest/transport/node/node_connector_socket.js +44 -0
  542. package/dest/transport/node/node_listener.d.ts +25 -0
  543. package/dest/transport/node/node_listener.d.ts.map +1 -0
  544. package/dest/transport/node/node_listener.js +26 -0
  545. package/dest/transport/node/node_listener_socket.d.ts +36 -0
  546. package/dest/transport/node/node_listener_socket.d.ts.map +1 -0
  547. package/dest/transport/node/node_listener_socket.js +40 -0
  548. package/dest/transport/transport_client.d.ts +60 -0
  549. package/dest/transport/transport_client.d.ts.map +1 -0
  550. package/dest/transport/transport_client.js +96 -0
  551. package/dest/transport/transport_server.d.ts +47 -0
  552. package/dest/transport/transport_server.d.ts.map +1 -0
  553. package/dest/transport/transport_server.js +114 -0
  554. package/dest/trees/balanced_merkle_tree_root.d.ts +16 -0
  555. package/dest/trees/balanced_merkle_tree_root.d.ts.map +1 -0
  556. package/dest/trees/balanced_merkle_tree_root.js +50 -0
  557. package/dest/trees/hasher.d.ts +40 -0
  558. package/dest/trees/hasher.d.ts.map +1 -0
  559. package/dest/trees/hasher.js +10 -0
  560. package/dest/trees/index.d.ts +13 -0
  561. package/dest/trees/index.d.ts.map +1 -0
  562. package/dest/trees/index.js +12 -0
  563. package/dest/trees/indexed_merkle_tree.d.ts +11 -0
  564. package/dest/trees/indexed_merkle_tree.d.ts.map +1 -0
  565. package/dest/trees/indexed_merkle_tree.js +27 -0
  566. package/dest/trees/indexed_merkle_tree_calculator.d.ts +21 -0
  567. package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -0
  568. package/dest/trees/indexed_merkle_tree_calculator.js +87 -0
  569. package/dest/trees/indexed_tree_leaf.d.ts +55 -0
  570. package/dest/trees/indexed_tree_leaf.d.ts.map +1 -0
  571. package/dest/trees/indexed_tree_leaf.js +5 -0
  572. package/dest/trees/membership_witness.d.ts +63 -0
  573. package/dest/trees/membership_witness.d.ts.map +1 -0
  574. package/dest/trees/membership_witness.js +83 -0
  575. package/dest/trees/merkle_tree.d.ts +16 -0
  576. package/dest/trees/merkle_tree.d.ts.map +1 -0
  577. package/dest/trees/merkle_tree.js +58 -0
  578. package/dest/trees/merkle_tree_calculator.d.ts +16 -0
  579. package/dest/trees/merkle_tree_calculator.d.ts.map +1 -0
  580. package/dest/trees/merkle_tree_calculator.js +57 -0
  581. package/dest/trees/sibling_path.d.ts +96 -0
  582. package/dest/trees/sibling_path.d.ts.map +1 -0
  583. package/dest/trees/sibling_path.js +139 -0
  584. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts +48 -0
  585. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts.map +1 -0
  586. package/dest/trees/unbalanced_merkle_tree_calculator.js +154 -0
  587. package/dest/trees/unbalanced_merkle_tree_root.d.ts +27 -0
  588. package/dest/trees/unbalanced_merkle_tree_root.d.ts.map +1 -0
  589. package/dest/trees/unbalanced_merkle_tree_root.js +83 -0
  590. package/dest/trees/unbalanced_tree_store.d.ts +24 -0
  591. package/dest/trees/unbalanced_tree_store.d.ts.map +1 -0
  592. package/dest/trees/unbalanced_tree_store.js +148 -0
  593. package/dest/types/index.d.ts +68 -0
  594. package/dest/types/index.d.ts.map +1 -0
  595. package/dest/types/index.js +24 -0
  596. package/dest/url/index.d.ts +9 -0
  597. package/dest/url/index.d.ts.map +1 -0
  598. package/dest/url/index.js +62 -0
  599. package/dest/validation/index.d.ts +9 -0
  600. package/dest/validation/index.d.ts.map +1 -0
  601. package/dest/validation/index.js +15 -0
  602. package/package.json +213 -0
  603. package/src/array/array.ts +147 -0
  604. package/src/array/index.ts +2 -0
  605. package/src/array/sorted_array.ts +138 -0
  606. package/src/async-map/index.ts +18 -0
  607. package/src/async-pool/index.ts +51 -0
  608. package/src/bigint/index.ts +20 -0
  609. package/src/bigint-buffer/index.ts +92 -0
  610. package/src/branded-types/block_number.ts +135 -0
  611. package/src/branded-types/buffer32_hash.ts +38 -0
  612. package/src/branded-types/checkpoint_number.ts +130 -0
  613. package/src/branded-types/epoch.ts +88 -0
  614. package/src/branded-types/index.ts +8 -0
  615. package/src/branded-types/index_within_checkpoint.ts +88 -0
  616. package/src/branded-types/slot.ts +93 -0
  617. package/src/branded-types/types.ts +2 -0
  618. package/src/buffer/buffer16.ts +135 -0
  619. package/src/buffer/buffer32.ts +116 -0
  620. package/src/buffer/index.ts +3 -0
  621. package/src/buffer/utils.ts +8 -0
  622. package/src/collection/array.ts +351 -0
  623. package/src/collection/index.ts +4 -0
  624. package/src/collection/lru_map.ts +143 -0
  625. package/src/collection/lru_set.ts +115 -0
  626. package/src/collection/object.ts +89 -0
  627. package/src/committable/committable.ts +46 -0
  628. package/src/committable/index.ts +1 -0
  629. package/src/config/env_var.ts +412 -0
  630. package/src/config/index.ts +419 -0
  631. package/src/config/network_config.ts +21 -0
  632. package/src/config/network_name.ts +28 -0
  633. package/src/config/parse-env.ts +4 -0
  634. package/src/config/secret_value.ts +49 -0
  635. package/src/crypto/aes128/index.ts +77 -0
  636. package/src/crypto/bls/bn254_keystore.ts +276 -0
  637. package/src/crypto/bls/index.ts +76 -0
  638. package/src/crypto/bn254/index.ts +64 -0
  639. package/src/crypto/ecdsa/index.ts +88 -0
  640. package/src/crypto/ecdsa/signature.ts +100 -0
  641. package/src/crypto/grumpkin/index.ts +90 -0
  642. package/src/crypto/keccak/index.ts +283 -0
  643. package/src/crypto/keys/index.ts +26 -0
  644. package/src/crypto/pedersen/index.ts +1 -0
  645. package/src/crypto/pedersen/pedersen.noble.ts +573 -0
  646. package/src/crypto/pedersen/pedersen.wasm.ts +52 -0
  647. package/src/crypto/poseidon/index.ts +83 -0
  648. package/src/crypto/random/index.ts +47 -0
  649. package/src/crypto/random/randomness_singleton.ts +64 -0
  650. package/src/crypto/schnorr/index.ts +61 -0
  651. package/src/crypto/schnorr/signature.ts +87 -0
  652. package/src/crypto/secp256k1/index.ts +61 -0
  653. package/src/crypto/secp256k1-signer/index.ts +2 -0
  654. package/src/crypto/secp256k1-signer/secp256k1_signer.ts +38 -0
  655. package/src/crypto/secp256k1-signer/utils.ts +244 -0
  656. package/src/crypto/sha256/index.ts +194 -0
  657. package/src/crypto/sha512/index.ts +16 -0
  658. package/src/crypto/signature/index.ts +17 -0
  659. package/src/crypto/sync/index.ts +6 -0
  660. package/src/crypto/sync/pedersen/index.ts +46 -0
  661. package/src/crypto/sync/poseidon/index.ts +72 -0
  662. package/src/curves/bls12/field.ts +456 -0
  663. package/src/curves/bls12/index.ts +2 -0
  664. package/src/curves/bls12/point.ts +450 -0
  665. package/src/curves/bn254/field.ts +531 -0
  666. package/src/curves/bn254/index.ts +2 -0
  667. package/src/curves/bn254/point.ts +170 -0
  668. package/src/curves/grumpkin/index.ts +11 -0
  669. package/src/curves/grumpkin/point.ts +300 -0
  670. package/src/decorators/index.ts +1 -0
  671. package/src/decorators/memoize.ts +11 -0
  672. package/src/error/index.ts +22 -0
  673. package/src/eth-address/index.ts +269 -0
  674. package/src/eth-signature/eth_signature.ts +155 -0
  675. package/src/eth-signature/index.ts +1 -0
  676. package/src/fifo/fifo_frame_reader.ts +113 -0
  677. package/src/fifo/index.ts +1 -0
  678. package/src/fifo_set/fifo_set.ts +52 -0
  679. package/src/fifo_set/index.ts +1 -0
  680. package/src/fs/index.ts +2 -0
  681. package/src/fs/run_in_dir.ts +33 -0
  682. package/src/fs/try_rm_dir.ts +15 -0
  683. package/src/iterable/all.ts +32 -0
  684. package/src/iterable/filter.ts +77 -0
  685. package/src/iterable/first.ts +14 -0
  686. package/src/iterable/index.ts +8 -0
  687. package/src/iterable/isAsyncIt.ts +8 -0
  688. package/src/iterable/map.ts +66 -0
  689. package/src/iterable/peek.ts +58 -0
  690. package/src/iterable/sort.ts +39 -0
  691. package/src/iterable/take.ts +54 -0
  692. package/src/iterable/toArray.ts +9 -0
  693. package/src/iterator/filter.ts +11 -0
  694. package/src/iterator/index.ts +1 -0
  695. package/src/jest/env.mjs +52 -0
  696. package/src/jest/setup.mjs +38 -0
  697. package/src/jest/setupAfterEnv.mjs +3 -0
  698. package/src/json-rpc/README.md +55 -0
  699. package/src/json-rpc/client/fetch.ts +98 -0
  700. package/src/json-rpc/client/index.ts +2 -0
  701. package/src/json-rpc/client/safe_json_rpc_client.ts +283 -0
  702. package/src/json-rpc/client/undici.ts +128 -0
  703. package/src/json-rpc/convert.ts +52 -0
  704. package/src/json-rpc/errors.ts +6 -0
  705. package/src/json-rpc/fixtures/class_a.ts +18 -0
  706. package/src/json-rpc/fixtures/class_b.ts +18 -0
  707. package/src/json-rpc/fixtures/test_state.ts +143 -0
  708. package/src/json-rpc/index.ts +2 -0
  709. package/src/json-rpc/js_utils.ts +21 -0
  710. package/src/json-rpc/server/api_key_auth.ts +63 -0
  711. package/src/json-rpc/server/index.ts +2 -0
  712. package/src/json-rpc/server/safe_json_rpc_server.ts +626 -0
  713. package/src/json-rpc/test/index.ts +1 -0
  714. package/src/json-rpc/test/integration.ts +35 -0
  715. package/src/log/aws-logger-config.ts +32 -0
  716. package/src/log/bigint-utils.ts +25 -0
  717. package/src/log/console.ts +42 -0
  718. package/src/log/gcloud-logger-config.ts +72 -0
  719. package/src/log/index.ts +6 -0
  720. package/src/log/libp2p_logger.ts +93 -0
  721. package/src/log/log-filters.ts +81 -0
  722. package/src/log/log-levels.ts +3 -0
  723. package/src/log/log_fn.ts +5 -0
  724. package/src/log/noir_debug_log_util.ts +21 -0
  725. package/src/log/pino-logger-server.ts +25 -0
  726. package/src/log/pino-logger.ts +406 -0
  727. package/src/message/index.ts +47 -0
  728. package/src/mutex/index.ts +84 -0
  729. package/src/mutex/mutex_database.ts +11 -0
  730. package/src/noir/index.ts +1 -0
  731. package/src/noir/noir_package_config.ts +66 -0
  732. package/src/number/index.ts +14 -0
  733. package/src/profiler/index.ts +1 -0
  734. package/src/profiler/profiler.ts +125 -0
  735. package/src/promise/index.ts +2 -0
  736. package/src/promise/running-promise.ts +138 -0
  737. package/src/promise/utils.ts +60 -0
  738. package/src/queue/base_memory_queue.ts +138 -0
  739. package/src/queue/batch_queue.ts +121 -0
  740. package/src/queue/bounded_serial_queue.ts +103 -0
  741. package/src/queue/fifo_memory_queue.ts +39 -0
  742. package/src/queue/index.ts +6 -0
  743. package/src/queue/priority_memory_queue.ts +20 -0
  744. package/src/queue/priority_queue.ts +34 -0
  745. package/src/queue/semaphore.ts +38 -0
  746. package/src/queue/serial_queue.ts +86 -0
  747. package/src/retry/index.ts +185 -0
  748. package/src/running-promise/index.ts +1 -0
  749. package/src/schemas/api.ts +47 -0
  750. package/src/schemas/index.ts +5 -0
  751. package/src/schemas/parse.ts +32 -0
  752. package/src/schemas/schemas.ts +93 -0
  753. package/src/schemas/types.ts +36 -0
  754. package/src/schemas/utils.ts +91 -0
  755. package/src/serialize/buffer_reader.ts +472 -0
  756. package/src/serialize/buffer_sink.ts +350 -0
  757. package/src/serialize/field_reader.ts +208 -0
  758. package/src/serialize/free_funcs.ts +198 -0
  759. package/src/serialize/index.ts +7 -0
  760. package/src/serialize/serialize.ts +320 -0
  761. package/src/serialize/type_registry.ts +75 -0
  762. package/src/serialize/types.ts +40 -0
  763. package/src/sleep/index.ts +90 -0
  764. package/src/string/index.ts +80 -0
  765. package/src/testing/files/index.ts +74 -0
  766. package/src/testing/formatting.ts +3 -0
  767. package/src/testing/index.ts +4 -0
  768. package/src/testing/port_allocator.ts +31 -0
  769. package/src/testing/snapshot_serializer.ts +33 -0
  770. package/src/testing/test_data.ts +36 -0
  771. package/src/timer/date.ts +82 -0
  772. package/src/timer/elapsed.ts +23 -0
  773. package/src/timer/index.ts +4 -0
  774. package/src/timer/timeout.ts +136 -0
  775. package/src/timer/timer.ts +48 -0
  776. package/src/transport/dispatch/create_dispatch_proxy.ts +151 -0
  777. package/src/transport/dispatch/messages.ts +58 -0
  778. package/src/transport/index.ts +9 -0
  779. package/src/transport/interface/connector.ts +8 -0
  780. package/src/transport/interface/listener.ts +15 -0
  781. package/src/transport/interface/socket.ts +14 -0
  782. package/src/transport/interface/transferable.ts +125 -0
  783. package/src/transport/node/index.ts +2 -0
  784. package/src/transport/node/node_connector.ts +30 -0
  785. package/src/transport/node/node_connector_socket.ts +52 -0
  786. package/src/transport/node/node_listener.ts +34 -0
  787. package/src/transport/node/node_listener_socket.ts +48 -0
  788. package/src/transport/transport_client.ts +130 -0
  789. package/src/transport/transport_server.ts +111 -0
  790. package/src/trees/balanced_merkle_tree_root.ts +65 -0
  791. package/src/trees/hasher.ts +51 -0
  792. package/src/trees/index.ts +12 -0
  793. package/src/trees/indexed_merkle_tree.ts +40 -0
  794. package/src/trees/indexed_merkle_tree_calculator.ts +98 -0
  795. package/src/trees/indexed_tree_leaf.ts +56 -0
  796. package/src/trees/membership_witness.ts +112 -0
  797. package/src/trees/merkle_tree.ts +75 -0
  798. package/src/trees/merkle_tree_calculator.ts +66 -0
  799. package/src/trees/sibling_path.ts +177 -0
  800. package/src/trees/unbalanced_merkle_tree_calculator.ts +176 -0
  801. package/src/trees/unbalanced_merkle_tree_root.ts +112 -0
  802. package/src/trees/unbalanced_tree_store.ts +161 -0
  803. package/src/types/index.ts +103 -0
  804. package/src/url/index.ts +72 -0
  805. package/src/validation/index.ts +18 -0
@@ -0,0 +1,125 @@
1
+ import { AsyncLocalStorage } from 'node:async_hooks';
2
+ import * as fs from 'node:fs';
3
+ import * as path from 'node:path';
4
+ import { performance } from 'node:perf_hooks';
5
+
6
+ interface Span {
7
+ label: string;
8
+ start: number;
9
+ dur: number;
10
+ count: number;
11
+ children: Span[];
12
+ parent: Span | undefined;
13
+ }
14
+
15
+ interface ProfileData {
16
+ spans: SerializedSpan[];
17
+ timestamp: string;
18
+ totalTime: number;
19
+ }
20
+
21
+ interface SerializedSpan {
22
+ label: string;
23
+ dur: number;
24
+ count: number;
25
+ children: SerializedSpan[];
26
+ }
27
+
28
+ const als = new AsyncLocalStorage<Span>();
29
+ const roots: Span[] = [];
30
+
31
+ function reset(): void {
32
+ roots.length = 0;
33
+ }
34
+
35
+ // Strip out circular references (parent) and unused fields (start) for JSON serialization
36
+ function serializeSpans(spans: Span[]): SerializedSpan[] {
37
+ return spans.map(span => ({
38
+ label: span.label,
39
+ dur: span.dur,
40
+ count: span.count,
41
+ children: serializeSpans(span.children),
42
+ }));
43
+ }
44
+
45
+ let i = 0;
46
+ function save(): void {
47
+ if (roots.length === 0) {
48
+ return;
49
+ }
50
+
51
+ // Find max single execution time across all spans (dur/count since dur is accumulated)
52
+ const findMaxSingleDuration = (spans: Span[]): number => {
53
+ let max = 0;
54
+ for (const span of spans) {
55
+ const singleDur = span.dur / span.count;
56
+ max = Math.max(max, singleDur);
57
+ if (span.children.length > 0) {
58
+ max = Math.max(max, findMaxSingleDuration(span.children));
59
+ }
60
+ }
61
+ return max;
62
+ };
63
+
64
+ const profileData: ProfileData = {
65
+ spans: serializeSpans(roots),
66
+ timestamp: new Date().toISOString(),
67
+ totalTime: findMaxSingleDuration(roots),
68
+ };
69
+
70
+ const profilePath = path.join(process.cwd(), `profile-${i++}.json`);
71
+ process.stdout.write(`Writing profile data to ${profilePath}\n`);
72
+ fs.writeFileSync(profilePath, JSON.stringify(profileData, null, 2));
73
+ }
74
+
75
+ // Hook into Jest to save after each test
76
+ if (typeof afterEach === 'function') {
77
+ afterEach(() => {
78
+ save();
79
+ reset();
80
+ });
81
+ }
82
+
83
+ // Also save on process exit for non-Jest environments
84
+ process.on('exit', () => {
85
+ save();
86
+ });
87
+
88
+ // Wrapper for async functions to maintain context properly
89
+ async function runAsync<ReturnType>(label: string, fn: () => Promise<ReturnType>): Promise<ReturnType> {
90
+ const parent = als.getStore();
91
+
92
+ // Check if we already have a span with this label in the current context
93
+ let existingSpan: Span | undefined;
94
+ if (parent) {
95
+ existingSpan = parent.children.find(c => c.label === label);
96
+ } else {
97
+ existingSpan = roots.find(r => r.label === label);
98
+ }
99
+
100
+ let span: Span;
101
+ if (existingSpan) {
102
+ // Reuse existing span and increment count
103
+ span = existingSpan;
104
+ span.count++;
105
+ } else {
106
+ // Create new span
107
+ span = { label, start: performance.now(), dur: 0, count: 1, children: [], parent };
108
+ if (parent) {
109
+ parent.children.push(span);
110
+ } else {
111
+ roots.push(span);
112
+ }
113
+ }
114
+
115
+ const startTime = performance.now();
116
+ const result: ReturnType = await als.run(span, fn);
117
+ const elapsed = performance.now() - startTime;
118
+
119
+ // Add to total duration (for averaging)
120
+ span.dur += elapsed;
121
+
122
+ return result;
123
+ }
124
+
125
+ export const profiler = { reset, runAsync };
@@ -0,0 +1,2 @@
1
+ export * from './running-promise.js';
2
+ export * from './utils.js';
@@ -0,0 +1,138 @@
1
+ import { InterruptError } from '../error/index.js';
2
+ import { type Logger, createLogger } from '../log/pino-logger.js';
3
+ import { InterruptibleSleep } from '../sleep/index.js';
4
+ import { type PromiseWithResolvers, promiseWithResolvers } from './utils.js';
5
+
6
+ const EXIT = Symbol.for('RunningPromise.EXIT');
7
+
8
+ export type ErrorHandler = (err: unknown) => typeof EXIT | void | Promise<typeof EXIT | void>;
9
+
10
+ export function makeLoggingErrorHandler(
11
+ logger: Logger,
12
+ ...ignoredErrors: (new (...args: any[]) => Error)[]
13
+ ): ErrorHandler {
14
+ return err => {
15
+ if (err instanceof Error && !ignoredErrors.some(ErrorType => err instanceof ErrorType)) {
16
+ logger.error('Error in running promise', err);
17
+ }
18
+ };
19
+ }
20
+
21
+ /**
22
+ * RunningPromise is a utility class that helps manage the execution of an asynchronous function
23
+ * at a specified polling interval. It allows starting, stopping, and checking the status of the
24
+ * internally managed promise. The class also supports interrupting the polling process when stopped.
25
+ */
26
+ export class RunningPromise {
27
+ private running = false;
28
+ private runningPromise = Promise.resolve();
29
+ private interruptibleSleep = new InterruptibleSleep();
30
+ private requested: PromiseWithResolvers<void> | undefined = undefined;
31
+
32
+ public static readonly EXIT: typeof EXIT = EXIT;
33
+
34
+ constructor(
35
+ private fn: () => void | Promise<void>,
36
+ private logger = createLogger('running-promise'),
37
+ private pollingIntervalMS = 10000,
38
+ private handleError: ErrorHandler = makeLoggingErrorHandler(logger),
39
+ ) {}
40
+
41
+ /**
42
+ * Starts the running promise.
43
+ */
44
+ public start() {
45
+ if (this.running) {
46
+ this.logger.warn(`Attempted to start running promise that was already started`);
47
+ return this;
48
+ }
49
+ this.running = true;
50
+
51
+ const poll = async () => {
52
+ while (this.running) {
53
+ const requested = this.requested;
54
+ this.requested = undefined;
55
+ try {
56
+ await this.fn();
57
+ } catch (err) {
58
+ const code = await this.handleError(err);
59
+ if (code === RunningPromise.EXIT) {
60
+ this.logger.warn('Error handler has requested to exit', { err });
61
+ this.running = false;
62
+ }
63
+ }
64
+
65
+ // If an immediate run had been requested *before* the function started running, resolve the request.
66
+ if (requested) {
67
+ requested.resolve();
68
+ }
69
+
70
+ // If no immediate run was requested, sleep for the polling interval.
71
+ if (this.requested === undefined && this.running) {
72
+ await this.interruptibleSleep.sleep(this.pollingIntervalMS);
73
+ }
74
+ }
75
+
76
+ // A trigger that arrived after the final pass started will never be served by any pass, so settle it as
77
+ // failed rather than leaving its caller waiting forever.
78
+ const unserved = this.requested;
79
+ this.requested = undefined;
80
+ unserved?.reject(new InterruptError('RunningPromise stopped before serving trigger'));
81
+ };
82
+ this.runningPromise = poll();
83
+ return this;
84
+ }
85
+
86
+ /**
87
+ * Stops the running promise, resolves any pending interruptible sleep,
88
+ * and waits for the currently executing function to complete.
89
+ */
90
+ async stop(): Promise<void> {
91
+ if (!this.running) {
92
+ return;
93
+ }
94
+ this.running = false;
95
+ this.interruptibleSleep.interrupt();
96
+ await this.runningPromise;
97
+ }
98
+
99
+ /**
100
+ * Checks if the running promise is currently active.
101
+ * @returns True if the promise is running.
102
+ */
103
+ public isRunning() {
104
+ return this.running;
105
+ }
106
+
107
+ /**
108
+ * Triggers an immediate run of the function, bypassing the polling interval.
109
+ *
110
+ * Resolves only after a complete run of the function that *started after* this call: a run already in flight is
111
+ * allowed to finish first, and the function is then called again. Concurrent callers coalesce onto a single such
112
+ * run. Rejects if the loop stops (via `stop()` or an error handler requesting exit) before that run happens.
113
+ *
114
+ * Calling this from inside the function itself and awaiting the result deadlocks, since the awaited run cannot
115
+ * start until the current one returns. That usage is not supported.
116
+ */
117
+ public async trigger(): Promise<void> {
118
+ if (!this.running) {
119
+ return this.fn();
120
+ }
121
+
122
+ let requested = this.requested;
123
+ if (!requested) {
124
+ requested = promiseWithResolvers<void>();
125
+ this.requested = requested;
126
+ this.interruptibleSleep.interrupt();
127
+ }
128
+ await requested.promise;
129
+ }
130
+
131
+ /**
132
+ * Updates the polling interval. The new interval will take effect after the next poll.
133
+ * @param pollingIntervalMS The polling interval in milliseconds.
134
+ */
135
+ setPollingIntervalMS(pollingIntervalMS: number) {
136
+ this.pollingIntervalMS = pollingIntervalMS;
137
+ }
138
+ }
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Like `Promise.all`, but runs every promise to completion before resolving or rejecting.
3
+ *
4
+ * `Promise.all` rejects as soon as one input rejects, abandoning the still-running siblings. When those siblings have
5
+ * side effects, the caller observes the rejection and reacts to the failure while the abandoned work is still
6
+ * producing effects. This helper instead guarantees that by the time it rejects, no input is still running.
7
+ *
8
+ * The signature mirrors `Promise.all`'s declaration in TypeScript's standard library, so call sites type exactly as
9
+ * they did with `Promise.all` (in particular, heterogeneous tuples keep their per-position types).
10
+ */
11
+ export async function allToCompletion<T extends readonly unknown[] | []>(
12
+ promises: T,
13
+ ): Promise<{ -readonly [P in keyof T]: Awaited<T[P]> }> {
14
+ const results = await Promise.allSettled<unknown>(promises);
15
+ const failures = results.filter((result): result is PromiseRejectedResult => result.status === 'rejected');
16
+ if (failures.length === 1) {
17
+ // Rethrow a lone failure as-is so error identity is preserved for callers that inspect error types.
18
+ throw failures[0].reason;
19
+ } else if (failures.length > 1) {
20
+ throw new AggregateError(
21
+ failures.map(failure => failure.reason),
22
+ `${failures.length} of ${results.length} concurrent operations failed: ${failures
23
+ .map(failure => (failure.reason instanceof Error ? failure.reason.message : String(failure.reason)))
24
+ .join(' | ')}`,
25
+ );
26
+ }
27
+ return results.map(result => (result as PromiseFulfilledResult<unknown>).value) as {
28
+ -readonly [P in keyof T]: Awaited<T[P]>;
29
+ };
30
+ }
31
+
32
+ export type PromiseWithResolvers<T> = {
33
+ promise: Promise<T>;
34
+ resolve: (value: T) => void;
35
+ reject: (reason?: any) => void;
36
+ };
37
+
38
+ /**
39
+ * A polyfill for the Promise.withResolvers proposed API.
40
+ * @see https://github.com/tc39/proposal-promise-with-resolvers
41
+ * @returns A promise with resolvers.
42
+ */
43
+ export function promiseWithResolvers<T>(): PromiseWithResolvers<T> {
44
+ // use ! operator to avoid TS error
45
+ let resolve!: (value: T) => void;
46
+ let reject!: (reason?: any) => void;
47
+
48
+ // the ES spec guarantees that the promise executor is called synchronously
49
+ // so the resolve and reject functions will be defined
50
+ const promise = new Promise<T>((res, rej) => {
51
+ resolve = res;
52
+ reject = rej;
53
+ });
54
+
55
+ return {
56
+ promise,
57
+ resolve,
58
+ reject,
59
+ };
60
+ }
@@ -0,0 +1,138 @@
1
+ import { TimeoutError } from '../error/index.js';
2
+ import { createLogger } from '../log/index.js';
3
+
4
+ export abstract class BaseMemoryQueue<T> {
5
+ private waiting: ((item: T | null) => void)[] = [];
6
+ private flushing = false;
7
+
8
+ constructor(private log = createLogger('foundation:memory_fifo')) {}
9
+
10
+ protected abstract get items(): {
11
+ length: number;
12
+ get(): T | undefined;
13
+ put(item: T): void;
14
+ clear: () => void;
15
+ };
16
+
17
+ /**
18
+ * Returns the current number of items in the queue.
19
+ * The length represents the size of the queue at the time of invocation and may change as new items are added or consumed.
20
+ *
21
+ * @returns The number of items in the queue.
22
+ */
23
+ public length() {
24
+ return this.items.length;
25
+ }
26
+
27
+ /**
28
+ * Returns next item within the queue, or undefined if the queue is empty. Does not block.
29
+ * @returns The next item in the queue.
30
+ */
31
+ public getImmediate(): T | undefined {
32
+ return this.items.get();
33
+ }
34
+
35
+ /**
36
+ * Returns next item within the queue, or blocks until an item has been put into the queue.
37
+ *
38
+ * If given a timeout, the promise will reject if no item is received after `timeoutSec` seconds.
39
+ * If the timeout is undefined (default), this call will block until an item is available or the queue is closed.
40
+ * If the timeout is 0 and there are no items available then the queue will immediately reject with a TimeoutError.
41
+ *
42
+ * If the queue is flushing, `null` is returned.
43
+ * @param timeoutSec - The timeout in seconds.
44
+ * @returns A result promise.
45
+ */
46
+ public get(timeoutSec?: number): Promise<T | null> {
47
+ if (this.items.length) {
48
+ return Promise.resolve(this.items.get()!);
49
+ }
50
+
51
+ if (this.items.length === 0 && this.flushing) {
52
+ return Promise.resolve(null);
53
+ }
54
+
55
+ // if the caller doesn't want to wait for an item to be available
56
+ // immediately reject with a Timeout error
57
+ if (timeoutSec === 0) {
58
+ return Promise.reject(new TimeoutError('Timeout getting item from queue.'));
59
+ }
60
+
61
+ return new Promise<T | null>((resolve, reject) => {
62
+ this.waiting.push(resolve);
63
+
64
+ if (timeoutSec) {
65
+ setTimeout(() => {
66
+ const index = this.waiting.findIndex(r => r === resolve);
67
+ if (index > -1) {
68
+ this.waiting.splice(index, 1);
69
+ const err = new TimeoutError('Timeout getting item from queue.');
70
+ reject(err);
71
+ }
72
+ }, timeoutSec * 1000);
73
+ }
74
+ });
75
+ }
76
+
77
+ /**
78
+ * Put an item onto back of the queue.
79
+ * @param item - The item to enqueue.
80
+ * @returns A boolean indicating whether the item was successfully added to the queue.
81
+ */
82
+ public put(item: T): boolean {
83
+ if (this.flushing) {
84
+ this.log.warn('Discarding item because queue is flushing');
85
+ return false;
86
+ } else if (this.waiting.length) {
87
+ this.waiting.shift()!(item);
88
+ return true;
89
+ } else {
90
+ this.items.put(item);
91
+ return true;
92
+ }
93
+ }
94
+
95
+ /**
96
+ * Once ended, no further items are added to queue. Consumers will consume remaining items within the queue.
97
+ * The queue is not reusable after calling `end()`.
98
+ * Any consumers waiting for an item receive null.
99
+ */
100
+ public end() {
101
+ this.flushing = true;
102
+ this.waiting.forEach(resolve => resolve(null));
103
+ }
104
+
105
+ /**
106
+ * Once cancelled, all items are discarded from the queue, and no further items are added to the queue.
107
+ * The queue is not reusable after calling `cancel()`.
108
+ * Any consumers waiting for an item receive null.
109
+ */
110
+ public cancel() {
111
+ this.flushing = true;
112
+ this.items.clear();
113
+ this.waiting.forEach(resolve => resolve(null));
114
+ }
115
+
116
+ /**
117
+ * Process items from the queue using a provided handler function.
118
+ * The function iterates over items in the queue, invoking the handler for each item until the queue is empty and flushing.
119
+ * If the handler throws an error, it will be caught and logged as 'Queue handler exception:', but the iteration will continue.
120
+ * The process function returns a promise that resolves when there are no more items in the queue and the queue is flushing.
121
+ *
122
+ * @param handler - A function that takes an item of type T and returns a Promise<void> after processing the item.
123
+ * @returns A Promise<void> that resolves when the queue is finished processing.
124
+ */
125
+ public async process(handler: (item: T) => Promise<void> | void) {
126
+ try {
127
+ while (true) {
128
+ const item = await this.get();
129
+ if (item === null) {
130
+ break;
131
+ }
132
+ await handler(item);
133
+ }
134
+ } catch (err) {
135
+ this.log.error('Queue handler exception', err);
136
+ }
137
+ }
138
+ }
@@ -0,0 +1,121 @@
1
+ import { createLogger } from '../log/pino-logger.js';
2
+ import { type PromiseWithResolvers, promiseWithResolvers } from '../promise/utils.js';
3
+ import { FifoMemoryQueue } from './fifo_memory_queue.js';
4
+
5
+ type Batch<T, K> = {
6
+ items: Array<T>;
7
+ key: K;
8
+ deferred: PromiseWithResolvers<void>;
9
+ enqueueTimeout: ReturnType<typeof setTimeout>;
10
+ };
11
+
12
+ /**
13
+ * A queue that groups items into batches based on a group key.
14
+ *
15
+ * The batching algorithm is greedy, meaning that as long as consecutive items have the same group key then they will
16
+ * be batched together. As soon as an item with a different group key is encountered, the old batch is flushed to the
17
+ * queue and a new batch is started.
18
+ *
19
+ * A batch can also be flushed to the queue if:
20
+ * - it reaches the selected batch size limit
21
+ * - or the batch duration limit is hit (in milliseconds)
22
+ *
23
+ * This ensures that batches don't grow too big and that they are flushed at a minimum rate of 1 batch every interval.
24
+ *
25
+ * The consumer side of this queue will process batches as quickly as possible.
26
+ */
27
+ export class BatchQueue<T, K extends string | number> {
28
+ private container = new FifoMemoryQueue<Batch<T, K>>();
29
+ private currentBatch?: Batch<T, K>;
30
+ private runningPromise?: Promise<void>;
31
+
32
+ constructor(
33
+ private processBatch: (items: Array<T>, key: K) => void | Promise<void>,
34
+ private maxBatchSize: number,
35
+ private maxBatchDuration: number,
36
+ private log = createLogger('foundation:batch_queue'),
37
+ ) {}
38
+
39
+ /**
40
+ * Put an item in the queue. It will be routed based on the given key
41
+ * @param item - The item to add
42
+ * @param key - The group key for this item
43
+ * @returns A promise that resolves or rejects when the batch this item is part of is processed
44
+ */
45
+ public put(item: T, key: K): Promise<void> {
46
+ if (!this.runningPromise) {
47
+ return Promise.reject(new Error('BatchQueue is not started'));
48
+ }
49
+
50
+ let currentBatch = this.currentBatch;
51
+ if (!currentBatch || currentBatch.key !== key || currentBatch.items.length >= this.maxBatchSize) {
52
+ this.flushCurrentBatch();
53
+
54
+ this.log.trace('Creating new batch', { key });
55
+ currentBatch = {
56
+ items: [],
57
+ key,
58
+ deferred: promiseWithResolvers(),
59
+ enqueueTimeout: setTimeout(this.flushCurrentBatch, this.maxBatchDuration),
60
+ };
61
+
62
+ this.currentBatch = currentBatch;
63
+ }
64
+
65
+ currentBatch.items.push(item);
66
+ if (currentBatch.items.length >= this.maxBatchSize) {
67
+ this.flushCurrentBatch();
68
+ }
69
+
70
+ return currentBatch.deferred.promise;
71
+ }
72
+
73
+ /**
74
+ * Immediately flushes the current batch, starting a new one
75
+ */
76
+ public flushCurrentBatch = (): void => {
77
+ if (this.currentBatch) {
78
+ this.log.trace('Flushing batch', { size: this.currentBatch.items.length, key: this.currentBatch.key });
79
+ clearTimeout(this.currentBatch.enqueueTimeout);
80
+ this.container.put(this.currentBatch);
81
+ this.currentBatch = undefined;
82
+ }
83
+ };
84
+
85
+ /**
86
+ * Starts the queue.
87
+ */
88
+ public start() {
89
+ if (this.runningPromise) {
90
+ return;
91
+ }
92
+
93
+ this.runningPromise = this.container.process(this.execProcessor);
94
+ }
95
+
96
+ /**
97
+ * Stops the queue. Any items in the queue will continue to be processed but new items won't be accepted anymore
98
+ * @returns A promise that resolves when the queue is drained completely
99
+ */
100
+ public stop(): Promise<void> {
101
+ const runningPromise = this.runningPromise;
102
+ this.runningPromise = undefined;
103
+
104
+ if (!runningPromise) {
105
+ return Promise.resolve();
106
+ }
107
+
108
+ this.flushCurrentBatch();
109
+ this.container.end();
110
+ return runningPromise;
111
+ }
112
+
113
+ private execProcessor = async (batch: Batch<T, K>): Promise<void> => {
114
+ try {
115
+ await this.processBatch(batch.items, batch.key);
116
+ batch.deferred.resolve();
117
+ } catch (err) {
118
+ batch.deferred.reject(err);
119
+ }
120
+ };
121
+ }
@@ -0,0 +1,103 @@
1
+ import { createLogger } from '../log/index.js';
2
+ import { Semaphore } from './semaphore.js';
3
+ import { SerialQueue } from './serial_queue.js';
4
+
5
+ /**
6
+ * Leverages the unbounded SerialQueue and Semaphore to create a SerialQueue that will block when putting an item
7
+ * if the queue size = maxQueueSize.
8
+ */
9
+ export class BoundedSerialQueue {
10
+ private readonly queue = new SerialQueue();
11
+ private semaphore: Semaphore;
12
+
13
+ constructor(
14
+ maxQueueSize: number,
15
+ private log = createLogger('foundation:bounded_serial_queue'),
16
+ ) {
17
+ this.semaphore = new Semaphore(maxQueueSize);
18
+ }
19
+
20
+ /**
21
+ * Initializes the underlying SerialQueue instance, allowing items to be processed from the queue.
22
+ * The start method should be called before using the BoundedSerialQueue to ensure proper functionality.
23
+ */
24
+ public start() {
25
+ this.queue.start();
26
+ }
27
+
28
+ /**
29
+ * Returns the current number of items in the queue.
30
+ * This is useful for monitoring the size of BoundedSerialQueue and understanding its utilization.
31
+ *
32
+ * @returns The length of the queue as an integer value.
33
+ */
34
+ public length() {
35
+ return this.queue.length();
36
+ }
37
+
38
+ /**
39
+ * Cancels the current operation in the SerialQueue, if any, and clears the queue.
40
+ * Any pending tasks in the queue will not be executed, and the queue will be emptied.
41
+ * This method is useful for cleaning up resources and stopping ongoing processes when they are no longer needed.
42
+ * @returns A promise, resolved once cancelled.
43
+ */
44
+ public cancel() {
45
+ return this.queue.cancel();
46
+ }
47
+
48
+ /**
49
+ * Ends the queue processing gracefully, preventing new items from being added.
50
+ * The currently executing item, if any, will complete and remaining queued items
51
+ * will be processed in order. Once all items have been processed, the queue becomes
52
+ * permanently unusable.
53
+ *
54
+ * @returns A promise that resolves when all items in the queue have been processed.
55
+ */
56
+ public end() {
57
+ return this.queue.end();
58
+ }
59
+
60
+ /**
61
+ * The caller will block until fn is successfully enqueued.
62
+ * The fn itself is execute asynchronously and its result discarded.
63
+ * TODO(AD) do we need this if we have exec()?
64
+ * @param fn - The function to call once unblocked.
65
+ */
66
+ public async put(fn: () => Promise<void>): Promise<void> {
67
+ await this.semaphore.acquire();
68
+ this.queue
69
+ .put(async () => {
70
+ try {
71
+ await fn();
72
+ } finally {
73
+ this.semaphore.release();
74
+ }
75
+ })
76
+ .catch(err => {
77
+ this.log.error('BoundedSerialQueue handler exception:', err);
78
+ });
79
+ }
80
+
81
+ /**
82
+ * The caller will block until fn is successfully executed, and it's result returned.
83
+ * @param fn - The function.
84
+ * @returns A promise that resolves with the result once executed.
85
+ */
86
+ public async exec<T>(fn: () => Promise<T>): Promise<T> {
87
+ await this.semaphore.acquire();
88
+ return this.queue.put(async () => {
89
+ try {
90
+ return await fn();
91
+ } finally {
92
+ this.semaphore.release();
93
+ }
94
+ });
95
+ }
96
+
97
+ /**
98
+ * Awaiting this ensures the queue is empty before resuming.
99
+ */
100
+ public async syncPoint() {
101
+ await this.queue.syncPoint();
102
+ }
103
+ }