@aztec/foundation 0.0.0-test.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (736) hide show
  1. package/README.md +1 -0
  2. package/dest/array/array.d.ts +71 -0
  3. package/dest/array/array.d.ts.map +1 -0
  4. package/dest/array/array.js +100 -0
  5. package/dest/array/index.d.ts +2 -0
  6. package/dest/array/index.d.ts.map +1 -0
  7. package/dest/array/index.js +1 -0
  8. package/dest/async-map/index.d.ts +13 -0
  9. package/dest/async-map/index.d.ts.map +1 -0
  10. package/dest/async-map/index.js +17 -0
  11. package/dest/async-pool/index.d.ts +3 -0
  12. package/dest/async-pool/index.d.ts.map +1 -0
  13. package/dest/async-pool/index.js +47 -0
  14. package/dest/bigint-buffer/index.d.ts +42 -0
  15. package/dest/bigint-buffer/index.d.ts.map +1 -0
  16. package/dest/bigint-buffer/index.js +76 -0
  17. package/dest/buffer/buffer32.d.ts +91 -0
  18. package/dest/buffer/buffer32.d.ts.map +1 -0
  19. package/dest/buffer/buffer32.js +115 -0
  20. package/dest/buffer/index.d.ts +2 -0
  21. package/dest/buffer/index.d.ts.map +1 -0
  22. package/dest/buffer/index.js +1 -0
  23. package/dest/collection/array.d.ts +101 -0
  24. package/dest/collection/array.d.ts.map +1 -0
  25. package/dest/collection/array.js +164 -0
  26. package/dest/collection/index.d.ts +3 -0
  27. package/dest/collection/index.d.ts.map +1 -0
  28. package/dest/collection/index.js +2 -0
  29. package/dest/collection/object.d.ts +14 -0
  30. package/dest/collection/object.d.ts.map +1 -0
  31. package/dest/collection/object.js +32 -0
  32. package/dest/committable/committable.d.ts +28 -0
  33. package/dest/committable/committable.d.ts.map +1 -0
  34. package/dest/committable/committable.js +36 -0
  35. package/dest/committable/index.d.ts +2 -0
  36. package/dest/committable/index.d.ts.map +1 -0
  37. package/dest/committable/index.js +1 -0
  38. package/dest/config/env_var.d.ts +2 -0
  39. package/dest/config/env_var.d.ts.map +1 -0
  40. package/dest/config/env_var.js +1 -0
  41. package/dest/config/index.d.ts +66 -0
  42. package/dest/config/index.d.ts.map +1 -0
  43. package/dest/config/index.js +125 -0
  44. package/dest/crypto/aes128/index.d.ts +34 -0
  45. package/dest/crypto/aes128/index.d.ts.map +1 -0
  46. package/dest/crypto/aes128/index.js +49 -0
  47. package/dest/crypto/ecdsa/index.d.ts +39 -0
  48. package/dest/crypto/ecdsa/index.d.ts.map +1 -0
  49. package/dest/crypto/ecdsa/index.js +88 -0
  50. package/dest/crypto/ecdsa/signature.d.ts +71 -0
  51. package/dest/crypto/ecdsa/signature.d.ts.map +1 -0
  52. package/dest/crypto/ecdsa/signature.js +92 -0
  53. package/dest/crypto/grumpkin/index.d.ts +47 -0
  54. package/dest/crypto/grumpkin/index.d.ts.map +1 -0
  55. package/dest/crypto/grumpkin/index.js +154 -0
  56. package/dest/crypto/index.d.ts +15 -0
  57. package/dest/crypto/index.d.ts.map +1 -0
  58. package/dest/crypto/index.js +14 -0
  59. package/dest/crypto/keccak/index.d.ts +28 -0
  60. package/dest/crypto/keccak/index.d.ts.map +1 -0
  61. package/dest/crypto/keccak/index.js +248 -0
  62. package/dest/crypto/keys/index.d.ts +5 -0
  63. package/dest/crypto/keys/index.d.ts.map +1 -0
  64. package/dest/crypto/keys/index.js +7 -0
  65. package/dest/crypto/pedersen/index.d.ts +2 -0
  66. package/dest/crypto/pedersen/index.d.ts.map +1 -0
  67. package/dest/crypto/pedersen/index.js +1 -0
  68. package/dest/crypto/pedersen/pedersen.elliptic.d.ts +13 -0
  69. package/dest/crypto/pedersen/pedersen.elliptic.d.ts.map +1 -0
  70. package/dest/crypto/pedersen/pedersen.elliptic.js +582 -0
  71. package/dest/crypto/pedersen/pedersen.noble.d.ts +11 -0
  72. package/dest/crypto/pedersen/pedersen.noble.d.ts.map +1 -0
  73. package/dest/crypto/pedersen/pedersen.noble.js +558 -0
  74. package/dest/crypto/pedersen/pedersen.wasm.d.ts +21 -0
  75. package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -0
  76. package/dest/crypto/pedersen/pedersen.wasm.js +41 -0
  77. package/dest/crypto/poseidon/index.d.ts +26 -0
  78. package/dest/crypto/poseidon/index.d.ts.map +1 -0
  79. package/dest/crypto/poseidon/index.js +58 -0
  80. package/dest/crypto/random/index.d.ts +25 -0
  81. package/dest/crypto/random/index.d.ts.map +1 -0
  82. package/dest/crypto/random/index.js +70 -0
  83. package/dest/crypto/random/randomness_singleton.d.ts +25 -0
  84. package/dest/crypto/random/randomness_singleton.d.ts.map +1 -0
  85. package/dest/crypto/random/randomness_singleton.js +55 -0
  86. package/dest/crypto/schnorr/index.d.ts +30 -0
  87. package/dest/crypto/schnorr/index.d.ts.map +1 -0
  88. package/dest/crypto/schnorr/index.js +68 -0
  89. package/dest/crypto/schnorr/signature.d.ts +70 -0
  90. package/dest/crypto/schnorr/signature.d.ts.map +1 -0
  91. package/dest/crypto/schnorr/signature.js +93 -0
  92. package/dest/crypto/secp256k1/index.d.ts +32 -0
  93. package/dest/crypto/secp256k1/index.d.ts.map +1 -0
  94. package/dest/crypto/secp256k1/index.js +116 -0
  95. package/dest/crypto/secp256k1-signer/index.d.ts +3 -0
  96. package/dest/crypto/secp256k1-signer/index.d.ts.map +1 -0
  97. package/dest/crypto/secp256k1-signer/index.js +2 -0
  98. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts +24 -0
  99. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts.map +1 -0
  100. package/dest/crypto/secp256k1-signer/secp256k1_signer.js +30 -0
  101. package/dest/crypto/secp256k1-signer/utils.d.ts +40 -0
  102. package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -0
  103. package/dest/crypto/secp256k1-signer/utils.js +84 -0
  104. package/dest/crypto/serialize.d.ts +53 -0
  105. package/dest/crypto/serialize.d.ts.map +1 -0
  106. package/dest/crypto/serialize.js +68 -0
  107. package/dest/crypto/sha256/index.d.ts +20 -0
  108. package/dest/crypto/sha256/index.d.ts.map +1 -0
  109. package/dest/crypto/sha256/index.js +166 -0
  110. package/dest/crypto/sha512/index.d.ts +11 -0
  111. package/dest/crypto/sha512/index.d.ts.map +1 -0
  112. package/dest/crypto/sha512/index.js +12 -0
  113. package/dest/crypto/signature/index.d.ts +19 -0
  114. package/dest/crypto/signature/index.d.ts.map +1 -0
  115. package/dest/crypto/signature/index.js +3 -0
  116. package/dest/crypto/sync/index.d.ts +3 -0
  117. package/dest/crypto/sync/index.d.ts.map +1 -0
  118. package/dest/crypto/sync/index.js +4 -0
  119. package/dest/crypto/sync/pedersen/index.d.ts +21 -0
  120. package/dest/crypto/sync/pedersen/index.d.ts.map +1 -0
  121. package/dest/crypto/sync/pedersen/index.js +38 -0
  122. package/dest/crypto/sync/poseidon/index.d.ts +26 -0
  123. package/dest/crypto/sync/poseidon/index.d.ts.map +1 -0
  124. package/dest/crypto/sync/poseidon/index.js +53 -0
  125. package/dest/decorators/index.d.ts +2 -0
  126. package/dest/decorators/index.d.ts.map +1 -0
  127. package/dest/decorators/index.js +1 -0
  128. package/dest/decorators/memoize.d.ts +2 -0
  129. package/dest/decorators/memoize.d.ts.map +1 -0
  130. package/dest/decorators/memoize.js +11 -0
  131. package/dest/error/index.d.ts +21 -0
  132. package/dest/error/index.d.ts.map +1 -0
  133. package/dest/error/index.js +17 -0
  134. package/dest/eth-address/index.d.ts +134 -0
  135. package/dest/eth-address/index.d.ts.map +1 -0
  136. package/dest/eth-address/index.js +198 -0
  137. package/dest/eth-signature/eth_signature.d.ts +62 -0
  138. package/dest/eth-signature/eth_signature.d.ts.map +1 -0
  139. package/dest/eth-signature/eth_signature.js +91 -0
  140. package/dest/eth-signature/index.d.ts +2 -0
  141. package/dest/eth-signature/index.d.ts.map +1 -0
  142. package/dest/eth-signature/index.js +1 -0
  143. package/dest/fields/coordinate.d.ts +68 -0
  144. package/dest/fields/coordinate.d.ts.map +1 -0
  145. package/dest/fields/coordinate.js +96 -0
  146. package/dest/fields/fields.d.ts +176 -0
  147. package/dest/fields/fields.d.ts.map +1 -0
  148. package/dest/fields/fields.js +383 -0
  149. package/dest/fields/index.d.ts +4 -0
  150. package/dest/fields/index.d.ts.map +1 -0
  151. package/dest/fields/index.js +3 -0
  152. package/dest/fields/point.d.ts +175 -0
  153. package/dest/fields/point.d.ts.map +1 -0
  154. package/dest/fields/point.js +260 -0
  155. package/dest/fs/index.d.ts +2 -0
  156. package/dest/fs/index.d.ts.map +1 -0
  157. package/dest/fs/index.js +1 -0
  158. package/dest/fs/run_in_dir.d.ts +2 -0
  159. package/dest/fs/run_in_dir.d.ts.map +1 -0
  160. package/dest/fs/run_in_dir.js +31 -0
  161. package/dest/index.d.ts +31 -0
  162. package/dest/index.d.ts.map +1 -0
  163. package/dest/index.js +31 -0
  164. package/dest/iterable/all.d.ts +9 -0
  165. package/dest/iterable/all.d.ts.map +1 -0
  166. package/dest/iterable/all.js +18 -0
  167. package/dest/iterable/filter.d.ts +10 -0
  168. package/dest/iterable/filter.d.ts.map +1 -0
  169. package/dest/iterable/filter.js +48 -0
  170. package/dest/iterable/index.d.ts +8 -0
  171. package/dest/iterable/index.d.ts.map +1 -0
  172. package/dest/iterable/index.js +7 -0
  173. package/dest/iterable/isAsyncIt.d.ts +7 -0
  174. package/dest/iterable/isAsyncIt.d.ts.map +1 -0
  175. package/dest/iterable/isAsyncIt.js +7 -0
  176. package/dest/iterable/map.d.ts +12 -0
  177. package/dest/iterable/map.d.ts.map +1 -0
  178. package/dest/iterable/map.js +36 -0
  179. package/dest/iterable/peek.d.ts +19 -0
  180. package/dest/iterable/peek.d.ts.map +1 -0
  181. package/dest/iterable/peek.js +33 -0
  182. package/dest/iterable/sort.d.ts +14 -0
  183. package/dest/iterable/sort.d.ts.map +1 -0
  184. package/dest/iterable/sort.js +15 -0
  185. package/dest/iterable/take.d.ts +10 -0
  186. package/dest/iterable/take.d.ts.map +1 -0
  187. package/dest/iterable/take.js +32 -0
  188. package/dest/iterable/toArray.d.ts +2 -0
  189. package/dest/iterable/toArray.d.ts.map +1 -0
  190. package/dest/iterable/toArray.js +7 -0
  191. package/dest/jest/setup.js +7 -0
  192. package/dest/json-rpc/client/fetch.d.ts +32 -0
  193. package/dest/json-rpc/client/fetch.d.ts.map +1 -0
  194. package/dest/json-rpc/client/fetch.js +77 -0
  195. package/dest/json-rpc/client/index.d.ts +3 -0
  196. package/dest/json-rpc/client/index.d.ts.map +1 -0
  197. package/dest/json-rpc/client/index.js +2 -0
  198. package/dest/json-rpc/client/safe_json_rpc_client.d.ts +26 -0
  199. package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -0
  200. package/dest/json-rpc/client/safe_json_rpc_client.js +57 -0
  201. package/dest/json-rpc/client/undici.d.ts +5 -0
  202. package/dest/json-rpc/client/undici.d.ts.map +1 -0
  203. package/dest/json-rpc/client/undici.js +63 -0
  204. package/dest/json-rpc/convert.d.ts +27 -0
  205. package/dest/json-rpc/convert.d.ts.map +1 -0
  206. package/dest/json-rpc/convert.js +48 -0
  207. package/dest/json-rpc/fixtures/class_a.d.ts +11 -0
  208. package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -0
  209. package/dest/json-rpc/fixtures/class_a.js +20 -0
  210. package/dest/json-rpc/fixtures/class_b.d.ts +11 -0
  211. package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -0
  212. package/dest/json-rpc/fixtures/class_b.js +20 -0
  213. package/dest/json-rpc/fixtures/test_state.d.ts +89 -0
  214. package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -0
  215. package/dest/json-rpc/fixtures/test_state.js +131 -0
  216. package/dest/json-rpc/index.d.ts +2 -0
  217. package/dest/json-rpc/index.d.ts.map +1 -0
  218. package/dest/json-rpc/index.js +1 -0
  219. package/dest/json-rpc/js_utils.d.ts +13 -0
  220. package/dest/json-rpc/js_utils.d.ts.map +1 -0
  221. package/dest/json-rpc/js_utils.js +16 -0
  222. package/dest/json-rpc/server/index.d.ts +2 -0
  223. package/dest/json-rpc/server/index.d.ts.map +1 -0
  224. package/dest/json-rpc/server/index.js +1 -0
  225. package/dest/json-rpc/server/safe_json_rpc_server.d.ts +140 -0
  226. package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -0
  227. package/dest/json-rpc/server/safe_json_rpc_server.js +346 -0
  228. package/dest/json-rpc/server/telemetry.d.ts +2 -0
  229. package/dest/json-rpc/server/telemetry.d.ts.map +1 -0
  230. package/dest/json-rpc/server/telemetry.js +0 -0
  231. package/dest/json-rpc/test/index.d.ts +2 -0
  232. package/dest/json-rpc/test/index.d.ts.map +1 -0
  233. package/dest/json-rpc/test/index.js +1 -0
  234. package/dest/json-rpc/test/integration.d.ts +15 -0
  235. package/dest/json-rpc/test/integration.d.ts.map +1 -0
  236. package/dest/json-rpc/test/integration.js +21 -0
  237. package/dest/log/console.d.ts +11 -0
  238. package/dest/log/console.d.ts.map +1 -0
  239. package/dest/log/console.js +36 -0
  240. package/dest/log/debug.d.ts +56 -0
  241. package/dest/log/debug.d.ts.map +1 -0
  242. package/dest/log/debug.js +75 -0
  243. package/dest/log/gcloud-logger-config.d.ts +14 -0
  244. package/dest/log/gcloud-logger-config.d.ts.map +1 -0
  245. package/dest/log/gcloud-logger-config.js +66 -0
  246. package/dest/log/index.d.ts +7 -0
  247. package/dest/log/index.d.ts.map +1 -0
  248. package/dest/log/index.js +6 -0
  249. package/dest/log/libp2p_logger.d.ts +7 -0
  250. package/dest/log/libp2p_logger.d.ts.map +1 -0
  251. package/dest/log/libp2p_logger.js +55 -0
  252. package/dest/log/log-filters.d.ts +7 -0
  253. package/dest/log/log-filters.d.ts.map +1 -0
  254. package/dest/log/log-filters.js +59 -0
  255. package/dest/log/log-levels.d.ts +3 -0
  256. package/dest/log/log-levels.d.ts.map +1 -0
  257. package/dest/log/log-levels.js +10 -0
  258. package/dest/log/log_fn.d.ts +7 -0
  259. package/dest/log/log_fn.d.ts.map +1 -0
  260. package/dest/log/log_fn.js +1 -0
  261. package/dest/log/log_history.d.ts +31 -0
  262. package/dest/log/log_history.d.ts.map +1 -0
  263. package/dest/log/log_history.js +38 -0
  264. package/dest/log/pino-logger.d.ts +57 -0
  265. package/dest/log/pino-logger.d.ts.map +1 -0
  266. package/dest/log/pino-logger.js +207 -0
  267. package/dest/message/index.d.ts +32 -0
  268. package/dest/message/index.d.ts.map +1 -0
  269. package/dest/message/index.js +27 -0
  270. package/dest/mutex/index.d.ts +53 -0
  271. package/dest/mutex/index.d.ts.map +1 -0
  272. package/dest/mutex/index.js +78 -0
  273. package/dest/mutex/mutex_database.d.ts +10 -0
  274. package/dest/mutex/mutex_database.d.ts.map +1 -0
  275. package/dest/mutex/mutex_database.js +4 -0
  276. package/dest/noir/index.d.ts +2 -0
  277. package/dest/noir/index.d.ts.map +1 -0
  278. package/dest/noir/index.js +1 -0
  279. package/dest/noir/noir_package_config.d.ts +129 -0
  280. package/dest/noir/noir_package_config.d.ts.map +1 -0
  281. package/dest/noir/noir_package_config.js +36 -0
  282. package/dest/promise/index.d.ts +3 -0
  283. package/dest/promise/index.d.ts.map +1 -0
  284. package/dest/promise/index.js +2 -0
  285. package/dest/promise/running-promise.d.ts +47 -0
  286. package/dest/promise/running-promise.d.ts.map +1 -0
  287. package/dest/promise/running-promise.js +110 -0
  288. package/dest/promise/utils.d.ts +12 -0
  289. package/dest/promise/utils.d.ts.map +1 -0
  290. package/dest/promise/utils.js +20 -0
  291. package/dest/queue/base_memory_queue.d.ts +65 -0
  292. package/dest/queue/base_memory_queue.d.ts.map +1 -0
  293. package/dest/queue/base_memory_queue.js +116 -0
  294. package/dest/queue/batch_queue.d.ts +47 -0
  295. package/dest/queue/batch_queue.d.ts.map +1 -0
  296. package/dest/queue/batch_queue.js +105 -0
  297. package/dest/queue/bounded_serial_queue.d.ts +56 -0
  298. package/dest/queue/bounded_serial_queue.d.ts.map +1 -0
  299. package/dest/queue/bounded_serial_queue.js +84 -0
  300. package/dest/queue/fifo_memory_queue.d.ts +21 -0
  301. package/dest/queue/fifo_memory_queue.d.ts.map +1 -0
  302. package/dest/queue/fifo_memory_queue.js +29 -0
  303. package/dest/queue/index.d.ts +7 -0
  304. package/dest/queue/index.d.ts.map +1 -0
  305. package/dest/queue/index.js +6 -0
  306. package/dest/queue/priority_memory_queue.d.ts +13 -0
  307. package/dest/queue/priority_memory_queue.d.ts.map +1 -0
  308. package/dest/queue/priority_memory_queue.js +16 -0
  309. package/dest/queue/priority_queue.d.ts +14 -0
  310. package/dest/queue/priority_queue.d.ts.map +1 -0
  311. package/dest/queue/priority_queue.js +29 -0
  312. package/dest/queue/semaphore.d.ts +23 -0
  313. package/dest/queue/semaphore.d.ts.map +1 -0
  314. package/dest/queue/semaphore.js +26 -0
  315. package/dest/queue/serial_queue.d.ts +49 -0
  316. package/dest/queue/serial_queue.d.ts.map +1 -0
  317. package/dest/queue/serial_queue.js +72 -0
  318. package/dest/retry/index.d.ts +44 -0
  319. package/dest/retry/index.d.ts.map +1 -0
  320. package/dest/retry/index.js +93 -0
  321. package/dest/running-promise/index.d.ts +2 -0
  322. package/dest/running-promise/index.d.ts.map +1 -0
  323. package/dest/running-promise/index.js +1 -0
  324. package/dest/schemas/api.d.ts +21 -0
  325. package/dest/schemas/api.d.ts.map +1 -0
  326. package/dest/schemas/api.js +3 -0
  327. package/dest/schemas/index.d.ts +6 -0
  328. package/dest/schemas/index.d.ts.map +1 -0
  329. package/dest/schemas/index.js +5 -0
  330. package/dest/schemas/parse.d.ts +9 -0
  331. package/dest/schemas/parse.d.ts.map +1 -0
  332. package/dest/schemas/parse.js +22 -0
  333. package/dest/schemas/schemas.d.ts +45 -0
  334. package/dest/schemas/schemas.d.ts.map +1 -0
  335. package/dest/schemas/schemas.js +38 -0
  336. package/dest/schemas/types.d.ts +3 -0
  337. package/dest/schemas/types.d.ts.map +1 -0
  338. package/dest/schemas/types.js +1 -0
  339. package/dest/schemas/utils.d.ts +53 -0
  340. package/dest/schemas/utils.d.ts.map +1 -0
  341. package/dest/schemas/utils.js +60 -0
  342. package/dest/serialize/buffer_reader.d.ts +239 -0
  343. package/dest/serialize/buffer_reader.d.ts.map +1 -0
  344. package/dest/serialize/buffer_reader.js +290 -0
  345. package/dest/serialize/field_reader.d.ts +112 -0
  346. package/dest/serialize/field_reader.d.ts.map +1 -0
  347. package/dest/serialize/field_reader.js +147 -0
  348. package/dest/serialize/free_funcs.d.ts +105 -0
  349. package/dest/serialize/free_funcs.d.ts.map +1 -0
  350. package/dest/serialize/free_funcs.js +189 -0
  351. package/dest/serialize/index.d.ts +7 -0
  352. package/dest/serialize/index.d.ts.map +1 -0
  353. package/dest/serialize/index.js +6 -0
  354. package/dest/serialize/serialize.d.ts +182 -0
  355. package/dest/serialize/serialize.d.ts.map +1 -0
  356. package/dest/serialize/serialize.js +248 -0
  357. package/dest/serialize/type_registry.d.ts +23 -0
  358. package/dest/serialize/type_registry.d.ts.map +1 -0
  359. package/dest/serialize/type_registry.js +61 -0
  360. package/dest/serialize/types.d.ts +33 -0
  361. package/dest/serialize/types.d.ts.map +1 -0
  362. package/dest/serialize/types.js +21 -0
  363. package/dest/sleep/index.d.ts +51 -0
  364. package/dest/sleep/index.d.ts.map +1 -0
  365. package/dest/sleep/index.js +67 -0
  366. package/dest/string/index.d.ts +11 -0
  367. package/dest/string/index.d.ts.map +1 -0
  368. package/dest/string/index.js +24 -0
  369. package/dest/testing/files/index.d.ts +20 -0
  370. package/dest/testing/files/index.d.ts.map +1 -0
  371. package/dest/testing/files/index.js +58 -0
  372. package/dest/testing/index.d.ts +4 -0
  373. package/dest/testing/index.d.ts.map +1 -0
  374. package/dest/testing/index.js +3 -0
  375. package/dest/testing/port_allocator.d.ts +10 -0
  376. package/dest/testing/port_allocator.d.ts.map +1 -0
  377. package/dest/testing/port_allocator.js +29 -0
  378. package/dest/testing/snapshot_serializer.d.ts +5 -0
  379. package/dest/testing/snapshot_serializer.d.ts.map +1 -0
  380. package/dest/testing/snapshot_serializer.js +32 -0
  381. package/dest/testing/test_data.d.ts +7 -0
  382. package/dest/testing/test_data.d.ts.map +1 -0
  383. package/dest/testing/test_data.js +29 -0
  384. package/dest/timer/date.d.ts +13 -0
  385. package/dest/timer/date.d.ts.map +1 -0
  386. package/dest/timer/date.js +24 -0
  387. package/dest/timer/elapsed.d.ts +13 -0
  388. package/dest/timer/elapsed.d.ts.map +1 -0
  389. package/dest/timer/elapsed.js +25 -0
  390. package/dest/timer/index.d.ts +5 -0
  391. package/dest/timer/index.d.ts.map +1 -0
  392. package/dest/timer/index.js +4 -0
  393. package/dest/timer/timeout.d.ts +41 -0
  394. package/dest/timer/timeout.d.ts.map +1 -0
  395. package/dest/timer/timeout.js +66 -0
  396. package/dest/timer/timer.d.ts +37 -0
  397. package/dest/timer/timer.d.ts.map +1 -0
  398. package/dest/timer/timer.js +40 -0
  399. package/dest/transport/browser/index.d.ts +5 -0
  400. package/dest/transport/browser/index.d.ts.map +1 -0
  401. package/dest/transport/browser/index.js +4 -0
  402. package/dest/transport/browser/message_port_socket.d.ts +37 -0
  403. package/dest/transport/browser/message_port_socket.d.ts.map +1 -0
  404. package/dest/transport/browser/message_port_socket.js +42 -0
  405. package/dest/transport/browser/shared_worker_connector.d.ts +19 -0
  406. package/dest/transport/browser/shared_worker_connector.d.ts.map +1 -0
  407. package/dest/transport/browser/shared_worker_connector.js +19 -0
  408. package/dest/transport/browser/shared_worker_listener.d.ts +38 -0
  409. package/dest/transport/browser/shared_worker_listener.d.ts.map +1 -0
  410. package/dest/transport/browser/shared_worker_listener.js +33 -0
  411. package/dest/transport/browser/worker_connector.d.ts +26 -0
  412. package/dest/transport/browser/worker_connector.d.ts.map +1 -0
  413. package/dest/transport/browser/worker_connector.js +30 -0
  414. package/dest/transport/browser/worker_listener.d.ts +39 -0
  415. package/dest/transport/browser/worker_listener.d.ts.map +1 -0
  416. package/dest/transport/browser/worker_listener.js +35 -0
  417. package/dest/transport/dispatch/create_dispatch_fn.d.ts +25 -0
  418. package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +1 -0
  419. package/dest/transport/dispatch/create_dispatch_fn.js +17 -0
  420. package/dest/transport/dispatch/create_dispatch_proxy.d.ts +102 -0
  421. package/dest/transport/dispatch/create_dispatch_proxy.d.ts.map +1 -0
  422. package/dest/transport/dispatch/create_dispatch_proxy.js +59 -0
  423. package/dest/transport/dispatch/messages.d.ts +52 -0
  424. package/dest/transport/dispatch/messages.d.ts.map +1 -0
  425. package/dest/transport/dispatch/messages.js +13 -0
  426. package/dest/transport/index.d.ts +12 -0
  427. package/dest/transport/index.d.ts.map +1 -0
  428. package/dest/transport/index.js +11 -0
  429. package/dest/transport/interface/connector.d.ts +8 -0
  430. package/dest/transport/interface/connector.d.ts.map +1 -0
  431. package/dest/transport/interface/connector.js +3 -0
  432. package/dest/transport/interface/listener.d.ts +13 -0
  433. package/dest/transport/interface/listener.d.ts.map +1 -0
  434. package/dest/transport/interface/listener.js +4 -0
  435. package/dest/transport/interface/socket.d.ts +13 -0
  436. package/dest/transport/interface/socket.d.ts.map +1 -0
  437. package/dest/transport/interface/socket.js +7 -0
  438. package/dest/transport/interface/transferable.d.ts +68 -0
  439. package/dest/transport/interface/transferable.d.ts.map +1 -0
  440. package/dest/transport/interface/transferable.js +63 -0
  441. package/dest/transport/node/index.d.ts +3 -0
  442. package/dest/transport/node/index.d.ts.map +1 -0
  443. package/dest/transport/node/index.js +2 -0
  444. package/dest/transport/node/node_connector.d.ts +28 -0
  445. package/dest/transport/node/node_connector.d.ts.map +1 -0
  446. package/dest/transport/node/node_connector.js +26 -0
  447. package/dest/transport/node/node_connector_socket.d.ts +42 -0
  448. package/dest/transport/node/node_connector_socket.d.ts.map +1 -0
  449. package/dest/transport/node/node_connector_socket.js +44 -0
  450. package/dest/transport/node/node_listener.d.ts +26 -0
  451. package/dest/transport/node/node_listener.d.ts.map +1 -0
  452. package/dest/transport/node/node_listener.js +26 -0
  453. package/dest/transport/node/node_listener_socket.d.ts +37 -0
  454. package/dest/transport/node/node_listener_socket.d.ts.map +1 -0
  455. package/dest/transport/node/node_listener_socket.js +40 -0
  456. package/dest/transport/transport_client.d.ts +61 -0
  457. package/dest/transport/transport_client.d.ts.map +1 -0
  458. package/dest/transport/transport_client.js +96 -0
  459. package/dest/transport/transport_server.d.ts +56 -0
  460. package/dest/transport/transport_server.d.ts.map +1 -0
  461. package/dest/transport/transport_server.js +114 -0
  462. package/dest/trees/hasher.d.ts +39 -0
  463. package/dest/trees/hasher.d.ts.map +1 -0
  464. package/dest/trees/hasher.js +5 -0
  465. package/dest/trees/index.d.ts +11 -0
  466. package/dest/trees/index.d.ts.map +1 -0
  467. package/dest/trees/index.js +10 -0
  468. package/dest/trees/indexed_merkle_tree.d.ts +13 -0
  469. package/dest/trees/indexed_merkle_tree.d.ts.map +1 -0
  470. package/dest/trees/indexed_merkle_tree.js +27 -0
  471. package/dest/trees/indexed_merkle_tree_calculator.d.ts +23 -0
  472. package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -0
  473. package/dest/trees/indexed_merkle_tree_calculator.js +83 -0
  474. package/dest/trees/indexed_tree_leaf.d.ts +57 -0
  475. package/dest/trees/indexed_tree_leaf.d.ts.map +1 -0
  476. package/dest/trees/indexed_tree_leaf.js +5 -0
  477. package/dest/trees/membership_witness.d.ts +62 -0
  478. package/dest/trees/membership_witness.d.ts.map +1 -0
  479. package/dest/trees/membership_witness.js +70 -0
  480. package/dest/trees/merkle_tree.d.ts +18 -0
  481. package/dest/trees/merkle_tree.d.ts.map +1 -0
  482. package/dest/trees/merkle_tree.js +58 -0
  483. package/dest/trees/merkle_tree_calculator.d.ts +16 -0
  484. package/dest/trees/merkle_tree_calculator.d.ts.map +1 -0
  485. package/dest/trees/merkle_tree_calculator.js +61 -0
  486. package/dest/trees/sibling_path.d.ts +132 -0
  487. package/dest/trees/sibling_path.d.ts.map +1 -0
  488. package/dest/trees/sibling_path.js +144 -0
  489. package/dest/trees/unbalanced_merkle_tree.d.ts +17 -0
  490. package/dest/trees/unbalanced_merkle_tree.d.ts.map +1 -0
  491. package/dest/trees/unbalanced_merkle_tree.js +100 -0
  492. package/dest/trees/unbalanced_tree_store.d.ts +19 -0
  493. package/dest/trees/unbalanced_tree_store.d.ts.map +1 -0
  494. package/dest/trees/unbalanced_tree_store.js +94 -0
  495. package/dest/types/index.d.ts +19 -0
  496. package/dest/types/index.d.ts.map +1 -0
  497. package/dest/types/index.js +3 -0
  498. package/dest/url/index.d.ts +9 -0
  499. package/dest/url/index.d.ts.map +1 -0
  500. package/dest/url/index.js +62 -0
  501. package/dest/validation/index.d.ts +9 -0
  502. package/dest/validation/index.d.ts.map +1 -0
  503. package/dest/validation/index.js +15 -0
  504. package/dest/wasm/empty_wasi_sdk.d.ts +130 -0
  505. package/dest/wasm/empty_wasi_sdk.d.ts.map +1 -0
  506. package/dest/wasm/empty_wasi_sdk.js +148 -0
  507. package/dest/wasm/index.d.ts +2 -0
  508. package/dest/wasm/index.d.ts.map +1 -0
  509. package/dest/wasm/index.js +1 -0
  510. package/dest/wasm/wasm_module.d.ts +136 -0
  511. package/dest/wasm/wasm_module.d.ts.map +1 -0
  512. package/dest/wasm/wasm_module.js +196 -0
  513. package/dest/worker/browser/index.d.ts +3 -0
  514. package/dest/worker/browser/index.d.ts.map +1 -0
  515. package/dest/worker/browser/index.js +2 -0
  516. package/dest/worker/browser/start_web_module.d.ts +7 -0
  517. package/dest/worker/browser/start_web_module.d.ts.map +1 -0
  518. package/dest/worker/browser/start_web_module.js +27 -0
  519. package/dest/worker/browser/web_data_store.d.ts +24 -0
  520. package/dest/worker/browser/web_data_store.d.ts.map +1 -0
  521. package/dest/worker/browser/web_data_store.js +29 -0
  522. package/dest/worker/browser/web_worker.d.ts +10 -0
  523. package/dest/worker/browser/web_worker.d.ts.map +1 -0
  524. package/dest/worker/browser/web_worker.js +25 -0
  525. package/dest/worker/data_store.d.ts +21 -0
  526. package/dest/worker/data_store.d.ts.map +1 -0
  527. package/dest/worker/data_store.js +3 -0
  528. package/dest/worker/index.d.ts +3 -0
  529. package/dest/worker/index.d.ts.map +1 -0
  530. package/dest/worker/index.js +1 -0
  531. package/dest/worker/node/index.d.ts +3 -0
  532. package/dest/worker/node/index.d.ts.map +1 -0
  533. package/dest/worker/node/index.js +2 -0
  534. package/dest/worker/node/node_data_store.d.ts +13 -0
  535. package/dest/worker/node/node_data_store.d.ts.map +1 -0
  536. package/dest/worker/node/node_data_store.js +20 -0
  537. package/dest/worker/node/node_worker.d.ts +6 -0
  538. package/dest/worker/node/node_worker.d.ts.map +1 -0
  539. package/dest/worker/node/node_worker.js +22 -0
  540. package/dest/worker/node/start_node_module.d.ts +7 -0
  541. package/dest/worker/node/start_node_module.d.ts.map +1 -0
  542. package/dest/worker/node/start_node_module.js +31 -0
  543. package/dest/worker/wasm_worker.d.ts +9 -0
  544. package/dest/worker/wasm_worker.d.ts.map +1 -0
  545. package/dest/worker/wasm_worker.js +3 -0
  546. package/dest/worker/worker_pool.d.ts +40 -0
  547. package/dest/worker/worker_pool.d.ts.map +1 -0
  548. package/dest/worker/worker_pool.js +51 -0
  549. package/package.json +176 -0
  550. package/src/array/array.ts +150 -0
  551. package/src/array/index.ts +1 -0
  552. package/src/async-map/index.ts +18 -0
  553. package/src/async-pool/index.ts +50 -0
  554. package/src/bigint-buffer/index.ts +87 -0
  555. package/src/buffer/buffer32.ts +144 -0
  556. package/src/buffer/index.ts +1 -0
  557. package/src/collection/array.ts +203 -0
  558. package/src/collection/index.ts +2 -0
  559. package/src/collection/object.ts +52 -0
  560. package/src/committable/committable.ts +46 -0
  561. package/src/committable/index.ts +1 -0
  562. package/src/config/env_var.ts +207 -0
  563. package/src/config/index.ts +167 -0
  564. package/src/crypto/aes128/index.ts +59 -0
  565. package/src/crypto/ecdsa/index.ts +70 -0
  566. package/src/crypto/ecdsa/signature.ts +100 -0
  567. package/src/crypto/grumpkin/index.ts +97 -0
  568. package/src/crypto/index.ts +14 -0
  569. package/src/crypto/keccak/index.ts +283 -0
  570. package/src/crypto/keys/index.ts +10 -0
  571. package/src/crypto/pedersen/index.ts +1 -0
  572. package/src/crypto/pedersen/pedersen.elliptic.ts +584 -0
  573. package/src/crypto/pedersen/pedersen.noble.ts +573 -0
  574. package/src/crypto/pedersen/pedersen.wasm.ts +48 -0
  575. package/src/crypto/poseidon/index.ts +77 -0
  576. package/src/crypto/random/index.ts +85 -0
  577. package/src/crypto/random/randomness_singleton.ts +62 -0
  578. package/src/crypto/schnorr/index.ts +55 -0
  579. package/src/crypto/schnorr/signature.ts +116 -0
  580. package/src/crypto/secp256k1/index.ts +57 -0
  581. package/src/crypto/secp256k1-signer/index.ts +2 -0
  582. package/src/crypto/secp256k1-signer/secp256k1_signer.ts +38 -0
  583. package/src/crypto/secp256k1-signer/utils.ts +99 -0
  584. package/src/crypto/serialize.ts +85 -0
  585. package/src/crypto/sha256/index.ts +147 -0
  586. package/src/crypto/sha512/index.ts +16 -0
  587. package/src/crypto/signature/index.ts +17 -0
  588. package/src/crypto/sync/index.ts +6 -0
  589. package/src/crypto/sync/pedersen/index.ts +45 -0
  590. package/src/crypto/sync/poseidon/index.ts +76 -0
  591. package/src/decorators/index.ts +1 -0
  592. package/src/decorators/memoize.ts +11 -0
  593. package/src/error/index.ts +22 -0
  594. package/src/eth-address/index.ts +241 -0
  595. package/src/eth-signature/eth_signature.ts +128 -0
  596. package/src/eth-signature/index.ts +1 -0
  597. package/src/fields/coordinate.ts +104 -0
  598. package/src/fields/fields.ts +505 -0
  599. package/src/fields/index.ts +3 -0
  600. package/src/fields/point.ts +300 -0
  601. package/src/fs/index.ts +1 -0
  602. package/src/fs/run_in_dir.ts +33 -0
  603. package/src/index.ts +31 -0
  604. package/src/iterable/all.ts +32 -0
  605. package/src/iterable/filter.ts +77 -0
  606. package/src/iterable/index.ts +7 -0
  607. package/src/iterable/isAsyncIt.ts +8 -0
  608. package/src/iterable/map.ts +66 -0
  609. package/src/iterable/peek.ts +58 -0
  610. package/src/iterable/sort.ts +39 -0
  611. package/src/iterable/take.ts +54 -0
  612. package/src/iterable/toArray.ts +9 -0
  613. package/src/jest/setup.mjs +9 -0
  614. package/src/json-rpc/README.md +55 -0
  615. package/src/json-rpc/client/fetch.ts +103 -0
  616. package/src/json-rpc/client/index.ts +2 -0
  617. package/src/json-rpc/client/safe_json_rpc_client.ts +67 -0
  618. package/src/json-rpc/client/undici.ts +75 -0
  619. package/src/json-rpc/convert.ts +61 -0
  620. package/src/json-rpc/fixtures/class_a.ts +15 -0
  621. package/src/json-rpc/fixtures/class_b.ts +15 -0
  622. package/src/json-rpc/fixtures/test_state.ts +143 -0
  623. package/src/json-rpc/index.ts +1 -0
  624. package/src/json-rpc/js_utils.ts +21 -0
  625. package/src/json-rpc/server/index.ts +1 -0
  626. package/src/json-rpc/server/safe_json_rpc_server.ts +376 -0
  627. package/src/json-rpc/server/telemetry.ts +0 -0
  628. package/src/json-rpc/test/index.ts +1 -0
  629. package/src/json-rpc/test/integration.ts +35 -0
  630. package/src/log/console.ts +39 -0
  631. package/src/log/debug.ts +104 -0
  632. package/src/log/gcloud-logger-config.ts +71 -0
  633. package/src/log/index.ts +6 -0
  634. package/src/log/libp2p_logger.ts +67 -0
  635. package/src/log/log-filters.ts +63 -0
  636. package/src/log/log-levels.ts +3 -0
  637. package/src/log/log_fn.ts +5 -0
  638. package/src/log/log_history.ts +44 -0
  639. package/src/log/pino-logger.ts +243 -0
  640. package/src/message/index.ts +43 -0
  641. package/src/mutex/index.ts +84 -0
  642. package/src/mutex/mutex_database.ts +12 -0
  643. package/src/noir/index.ts +1 -0
  644. package/src/noir/noir_package_config.ts +54 -0
  645. package/src/promise/index.ts +2 -0
  646. package/src/promise/running-promise.ts +125 -0
  647. package/src/promise/utils.ts +29 -0
  648. package/src/queue/base_memory_queue.ts +138 -0
  649. package/src/queue/batch_queue.ts +120 -0
  650. package/src/queue/bounded_serial_queue.ts +100 -0
  651. package/src/queue/fifo_memory_queue.ts +39 -0
  652. package/src/queue/index.ts +6 -0
  653. package/src/queue/priority_memory_queue.ts +20 -0
  654. package/src/queue/priority_queue.ts +34 -0
  655. package/src/queue/semaphore.ts +33 -0
  656. package/src/queue/serial_queue.ts +86 -0
  657. package/src/retry/index.ts +100 -0
  658. package/src/running-promise/index.ts +1 -0
  659. package/src/schemas/api.ts +47 -0
  660. package/src/schemas/index.ts +5 -0
  661. package/src/schemas/parse.ts +29 -0
  662. package/src/schemas/schemas.ts +64 -0
  663. package/src/schemas/types.ts +3 -0
  664. package/src/schemas/utils.ts +112 -0
  665. package/src/serialize/buffer_reader.ts +383 -0
  666. package/src/serialize/field_reader.ts +184 -0
  667. package/src/serialize/free_funcs.ts +204 -0
  668. package/src/serialize/index.ts +6 -0
  669. package/src/serialize/serialize.ts +336 -0
  670. package/src/serialize/type_registry.ts +75 -0
  671. package/src/serialize/types.ts +40 -0
  672. package/src/sleep/index.ts +75 -0
  673. package/src/string/index.ts +31 -0
  674. package/src/testing/files/index.ts +69 -0
  675. package/src/testing/index.ts +3 -0
  676. package/src/testing/port_allocator.ts +31 -0
  677. package/src/testing/snapshot_serializer.ts +33 -0
  678. package/src/testing/test_data.ts +36 -0
  679. package/src/timer/date.ts +24 -0
  680. package/src/timer/elapsed.ts +23 -0
  681. package/src/timer/index.ts +4 -0
  682. package/src/timer/timeout.ts +70 -0
  683. package/src/timer/timer.ts +48 -0
  684. package/src/transport/browser/index.ts +4 -0
  685. package/src/transport/browser/message_port_socket.ts +48 -0
  686. package/src/transport/browser/shared_worker_connector.ts +21 -0
  687. package/src/transport/browser/shared_worker_listener.ts +53 -0
  688. package/src/transport/browser/worker_connector.ts +30 -0
  689. package/src/transport/browser/worker_listener.ts +54 -0
  690. package/src/transport/dispatch/create_dispatch_fn.ts +35 -0
  691. package/src/transport/dispatch/create_dispatch_proxy.ts +141 -0
  692. package/src/transport/dispatch/messages.ts +58 -0
  693. package/src/transport/index.ts +11 -0
  694. package/src/transport/interface/connector.ts +9 -0
  695. package/src/transport/interface/listener.ts +16 -0
  696. package/src/transport/interface/socket.ts +15 -0
  697. package/src/transport/interface/transferable.ts +125 -0
  698. package/src/transport/node/index.ts +2 -0
  699. package/src/transport/node/node_connector.ts +30 -0
  700. package/src/transport/node/node_connector_socket.ts +52 -0
  701. package/src/transport/node/node_listener.ts +34 -0
  702. package/src/transport/node/node_listener_socket.ts +48 -0
  703. package/src/transport/transport_client.ts +131 -0
  704. package/src/transport/transport_server.ts +108 -0
  705. package/src/trees/hasher.ts +39 -0
  706. package/src/trees/index.ts +10 -0
  707. package/src/trees/indexed_merkle_tree.ts +36 -0
  708. package/src/trees/indexed_merkle_tree_calculator.ts +94 -0
  709. package/src/trees/indexed_tree_leaf.ts +56 -0
  710. package/src/trees/membership_witness.ts +99 -0
  711. package/src/trees/merkle_tree.ts +72 -0
  712. package/src/trees/merkle_tree_calculator.ts +67 -0
  713. package/src/trees/sibling_path.ts +183 -0
  714. package/src/trees/unbalanced_merkle_tree.ts +103 -0
  715. package/src/trees/unbalanced_tree_store.ts +102 -0
  716. package/src/types/index.ts +25 -0
  717. package/src/url/index.ts +73 -0
  718. package/src/validation/index.ts +18 -0
  719. package/src/wasm/README.md +6 -0
  720. package/src/wasm/empty_wasi_sdk.ts +166 -0
  721. package/src/wasm/fixtures/gcd.wasm +0 -0
  722. package/src/wasm/fixtures/gcd.wat +27 -0
  723. package/src/wasm/index.ts +1 -0
  724. package/src/wasm/wasm_module.ts +260 -0
  725. package/src/worker/browser/index.ts +2 -0
  726. package/src/worker/browser/start_web_module.ts +24 -0
  727. package/src/worker/browser/web_data_store.ts +38 -0
  728. package/src/worker/browser/web_worker.ts +25 -0
  729. package/src/worker/data_store.ts +19 -0
  730. package/src/worker/index.ts +2 -0
  731. package/src/worker/node/index.ts +2 -0
  732. package/src/worker/node/node_data_store.ts +27 -0
  733. package/src/worker/node/node_worker.ts +23 -0
  734. package/src/worker/node/start_node_module.ts +30 -0
  735. package/src/worker/wasm_worker.ts +7 -0
  736. package/src/worker/worker_pool.ts +73 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data_store.d.ts","sourceRoot":"","sources":["../../src/worker/data_store.ts"],"names":[],"mappings":";;AAAA;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAE9C;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD"}
@@ -0,0 +1,3 @@
1
+ /**
2
+ * Simple read/write interface for wasm modules.
3
+ */ export { };
@@ -0,0 +1,3 @@
1
+ export { WorkerPool } from './worker_pool.js';
2
+ export type { WasmWorker } from './wasm_worker.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/worker/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1 @@
1
+ export { WorkerPool } from './worker_pool.js';
@@ -0,0 +1,3 @@
1
+ export * from './node_worker.js';
2
+ export * from './node_data_store.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/worker/node/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './node_worker.js';
2
+ export * from './node_data_store.js';
@@ -0,0 +1,13 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ /// <reference types="node" resolution-mode="require"/>
3
+ import type { DataStore } from '../data_store.js';
4
+ /**
5
+ * Cache for data used by wasm module.
6
+ */
7
+ export declare class NodeDataStore implements DataStore {
8
+ private db;
9
+ constructor(path?: string);
10
+ get(key: string): Promise<Buffer | undefined>;
11
+ set(key: string, value: Buffer): Promise<void>;
12
+ }
13
+ //# sourceMappingURL=node_data_store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node_data_store.d.ts","sourceRoot":"","sources":["../../../src/worker/node/node_data_store.ts"],"names":[],"mappings":";;AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD;;GAEG;AACH,qBAAa,aAAc,YAAW,SAAS;IAC7C,OAAO,CAAC,EAAE,CAAU;gBAGR,IAAI,CAAC,EAAE,MAAM;IAMnB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI7C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGrD"}
@@ -0,0 +1,20 @@
1
+ import leveldown from 'leveldown';
2
+ import levelup from 'levelup';
3
+ import memdown from 'memdown';
4
+ /**
5
+ * Cache for data used by wasm module.
6
+ */ export class NodeDataStore {
7
+ db;
8
+ // eslint-disable-next-line
9
+ constructor(path){
10
+ // Hack: Cast as any to work around packages "broken" with node16 resolution
11
+ // See https://github.com/microsoft/TypeScript/issues/49160
12
+ this.db = levelup(path ? leveldown(path) : memdown());
13
+ }
14
+ async get(key) {
15
+ return await this.db.get(key).catch(()=>{});
16
+ }
17
+ async set(key, value) {
18
+ await this.db.put(key, value);
19
+ }
20
+ }
@@ -0,0 +1,6 @@
1
+ import type { WasmWorker } from '../wasm_worker.js';
2
+ /**
3
+ * Creates a node worker.
4
+ */
5
+ export declare function createNodeWorker(filepath: string, initialMem?: number, maxMem?: number): Promise<WasmWorker>;
6
+ //# sourceMappingURL=node_worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node_worker.d.ts","sourceRoot":"","sources":["../../../src/worker/node/node_worker.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAalH"}
@@ -0,0 +1,22 @@
1
+ import { Worker } from 'worker_threads';
2
+ import { NodeConnector, TransportClient, createDispatchProxy } from '../../transport/index.js';
3
+ import { WasmModule } from '../../wasm/wasm_module.js';
4
+ /**
5
+ * Creates a node worker.
6
+ */ export async function createNodeWorker(filepath, initialMem, maxMem) {
7
+ const worker = new Worker(filepath);
8
+ const transportConnect = new NodeConnector(worker);
9
+ const transportClient = new TransportClient(transportConnect);
10
+ await transportClient.open();
11
+ const remoteModule = createDispatchProxy(WasmModule, transportClient);
12
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
13
+ remoteModule.destroyWorker = async ()=>{
14
+ await transportClient.request({
15
+ fn: '__destroyWorker__',
16
+ args: []
17
+ });
18
+ transportClient.close();
19
+ };
20
+ await remoteModule.init(initialMem, maxMem);
21
+ return remoteModule;
22
+ }
@@ -0,0 +1,7 @@
1
+ import type { WasmModule } from '../../wasm/wasm_module.js';
2
+ /**
3
+ * Start the transport server corresponding to this module.
4
+ * @param module - The WasmModule to host.
5
+ */
6
+ export declare function startNodeModule(module: WasmModule): void;
7
+ //# sourceMappingURL=start_node_module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start_node_module.d.ts","sourceRoot":"","sources":["../../../src/worker/node/start_node_module.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAM5D;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,QAgBjD"}
@@ -0,0 +1,31 @@
1
+ import { parentPort } from 'worker_threads';
2
+ import { NodeListener, TransportServer } from '../../transport/index.js';
3
+ if (!parentPort) {
4
+ throw new Error('InvalidWorker');
5
+ }
6
+ /**
7
+ * Start the transport server corresponding to this module.
8
+ * @param module - The WasmModule to host.
9
+ */ export function startNodeModule(module) {
10
+ const dispatch = async ({ fn, args })=>{
11
+ if (fn === '__destroyWorker__') {
12
+ transportServer.stop();
13
+ return;
14
+ }
15
+ if (!module[fn]) {
16
+ throw new Error(`dispatch error, function not found: ${fn}`);
17
+ }
18
+ return await module[fn](...args);
19
+ };
20
+ const transportListener = new NodeListener();
21
+ const transportServer = new TransportServer(transportListener, dispatch);
22
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
23
+ module.addLogger((...args)=>transportServer.broadcast({
24
+ fn: 'emit',
25
+ args: [
26
+ 'log',
27
+ ...args
28
+ ]
29
+ }));
30
+ transportServer.start();
31
+ }
@@ -0,0 +1,9 @@
1
+ import type { Proxify } from '../transport/index.js';
2
+ import type { WasmModule } from '../wasm/wasm_module.js';
3
+ /**
4
+ * Represents either a WASM web worker, or node.js worker.
5
+ */
6
+ export type WasmWorker = Proxify<WasmModule> & {
7
+ destroyWorker(): void;
8
+ };
9
+ //# sourceMappingURL=wasm_worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasm_worker.d.ts","sourceRoot":"","sources":["../../src/worker/wasm_worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG;IAAE,aAAa,IAAI,IAAI,CAAA;CAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ /**
2
+ * Represents either a WASM web worker, or node.js worker.
3
+ */ export { };
@@ -0,0 +1,40 @@
1
+ import type { WasmWorker } from './wasm_worker.js';
2
+ /**
3
+ * Type of a worker factory.
4
+ * Used to customize WorkerPool worker construction.
5
+ */
6
+ export type CreateWorker = (name: string, minMem: number, maxMem: number) => WasmWorker;
7
+ /**
8
+ * Allocates a pool of WasmWorker's.
9
+ * Worker 0 is allocated MAX_PAGES memory pages. This is because worker 0 will need to hold the proving key
10
+ * (i.e. Has state), whereas the others are pure compute (they hold a little crs state).
11
+ */
12
+ export declare class WorkerPool {
13
+ /**
14
+ * The maximum number of memory pages to be used by the webassembly.
15
+ */
16
+ static MAX_PAGES: number;
17
+ /**
18
+ * The workers in the pool.
19
+ */
20
+ private workers;
21
+ /**
22
+ * Create an instance and initialize the workers.
23
+ * @param createWorker - Worker factory.
24
+ * @param poolSize - Pool size.
25
+ * @returns An initialized WorkerPool.
26
+ */
27
+ static new(createWorker: CreateWorker, poolSize: number): Promise<WorkerPool>;
28
+ /**
29
+ * Initialize the workers.
30
+ * @param createWorker - Worker factory().
31
+ * @param poolSize - Pool size.
32
+ * @param maxMem - Max memory pages.
33
+ */
34
+ init(createWorker: CreateWorker, poolSize: number, maxMem?: number): Promise<void>;
35
+ /**
36
+ * Tell all workers in the pool to stop processing.
37
+ */
38
+ destroy(): Promise<void>;
39
+ }
40
+ //# sourceMappingURL=worker_pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker_pool.d.ts","sourceRoot":"","sources":["../../src/worker/worker_pool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,UAAU,CAAC;AACxF;;;;GAIG;AACH,qBAAa,UAAU;IAYrB;;OAEG;IACH,OAAc,SAAS,SAAQ;IAC/B;;OAEG;IACH,OAAO,CAAC,OAAO,CAAoB;IAEnC;;;;;OAKG;WACU,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM;IAM7D;;;;;OAKG;IACU,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAuB;IAY7F;;OAEG;IACU,OAAO;CAGrB"}
@@ -0,0 +1,51 @@
1
+ import { createLogger } from '../log/index.js';
2
+ const log = createLogger('foundation:worker_pool');
3
+ /**
4
+ * Allocates a pool of WasmWorker's.
5
+ * Worker 0 is allocated MAX_PAGES memory pages. This is because worker 0 will need to hold the proving key
6
+ * (i.e. Has state), whereas the others are pure compute (they hold a little crs state).
7
+ */ export class WorkerPool {
8
+ // TODO(AD): Revisit what this means in aztec 3 context
9
+ // --
10
+ // Introduction of low mem prover work (polynomial cache) may actually increase mem usage when the backing store isn't
11
+ // enabled. We were seeing intermittent failings related to memory in production for some users when limiting to
12
+ // 6660 (416MB). It would be nice to understand why this is (the non determinism and/or the increased mem usage).
13
+ // For now, increasing mem usage to 512MB. This maybe preferable to backing out the low mem work, but
14
+ // ironically may break the chance of us using it in mobile.
15
+ // We *could* enable the low memory backing store, but this needs a little bit of work to actually
16
+ // read/write from indexeddb, performance testing, and actual further memory load testing.
17
+ // At this point it's hard to know what our memory savings would be relative to just fully reverting the LMP.
18
+ // public static MAX_PAGES = 6660;
19
+ /**
20
+ * The maximum number of memory pages to be used by the webassembly.
21
+ */ static MAX_PAGES = 8192;
22
+ /**
23
+ * The workers in the pool.
24
+ */ workers = [];
25
+ /**
26
+ * Create an instance and initialize the workers.
27
+ * @param createWorker - Worker factory.
28
+ * @param poolSize - Pool size.
29
+ * @returns An initialized WorkerPool.
30
+ */ static async new(createWorker, poolSize) {
31
+ const pool = new WorkerPool();
32
+ await pool.init(createWorker, poolSize);
33
+ return pool;
34
+ }
35
+ /**
36
+ * Initialize the workers.
37
+ * @param createWorker - Worker factory().
38
+ * @param poolSize - Pool size.
39
+ * @param maxMem - Max memory pages.
40
+ */ async init(createWorker, poolSize, maxMem = WorkerPool.MAX_PAGES) {
41
+ log.debug(`creating ${poolSize} workers...`);
42
+ const start = new Date().getTime();
43
+ this.workers = await Promise.all(Array(poolSize).fill(0).map((_, i)=>createWorker(`${i}`, i === 0 ? Math.min(WorkerPool.MAX_PAGES, maxMem) : 768, maxMem)));
44
+ log.debug(`created workers: ${new Date().getTime() - start}ms`);
45
+ }
46
+ /**
47
+ * Tell all workers in the pool to stop processing.
48
+ */ async destroy() {
49
+ await Promise.all(this.workers.map((w)=>w.destroyWorker()));
50
+ }
51
+ }
package/package.json ADDED
@@ -0,0 +1,176 @@
1
+ {
2
+ "name": "@aztec/foundation",
3
+ "version": "0.0.0-test.0",
4
+ "type": "module",
5
+ "main": "./dest/index.js",
6
+ "types": "./dest/index.d.ts",
7
+ "exports": {
8
+ "./eslint": "./.eslintrc.cjs",
9
+ "./eslint.docs": "./.eslintrc.docs.cjs",
10
+ "./prettier": "./.prettierrc.json",
11
+ "./abi": "./dest/abi/index.js",
12
+ "./async-map": "./dest/async-map/index.js",
13
+ "./async-pool": "./dest/async-pool/index.js",
14
+ "./collection": "./dest/collection/index.js",
15
+ "./config": "./dest/config/index.js",
16
+ "./crypto": "./dest/crypto/index.js",
17
+ "./crypto/sync": "./dest/crypto/sync/index.js",
18
+ "./decorators": "./dest/decorators/index.js",
19
+ "./error": "./dest/error/index.js",
20
+ "./eth-address": "./dest/eth-address/index.js",
21
+ "./eth-signature": "./dest/eth-signature/index.js",
22
+ "./queue": "./dest/queue/index.js",
23
+ "./fs": "./dest/fs/index.js",
24
+ "./buffer": "./dest/buffer/index.js",
25
+ "./json-rpc": "./dest/json-rpc/index.js",
26
+ "./json-rpc/client": "./dest/json-rpc/client/index.js",
27
+ "./json-rpc/server": "./dest/json-rpc/server/index.js",
28
+ "./json-rpc/undici": "./dest/json-rpc/client/undici.js",
29
+ "./json-rpc/test": "./dest/json-rpc/test/index.js",
30
+ "./iterable": "./dest/iterable/index.js",
31
+ "./log": "./dest/log/index.js",
32
+ "./mutex": "./dest/mutex/index.js",
33
+ "./fields": "./dest/fields/index.js",
34
+ "./retry": "./dest/retry/index.js",
35
+ "./running-promise": "./dest/running-promise/index.js",
36
+ "./serialize": "./dest/serialize/index.js",
37
+ "./sleep": "./dest/sleep/index.js",
38
+ "./timer": "./dest/timer/index.js",
39
+ "./transport": "./dest/transport/index.js",
40
+ "./trees": "./dest/trees/index.js",
41
+ "./wasm": "./dest/wasm/index.js",
42
+ "./worker": "./dest/worker/index.js",
43
+ "./bigint-buffer": "./dest/bigint-buffer/index.js",
44
+ "./types": "./dest/types/index.js",
45
+ "./schemas": "./dest/schemas/index.js",
46
+ "./url": "./dest/url/index.js",
47
+ "./committable": "./dest/committable/index.js",
48
+ "./noir": "./dest/noir/index.js",
49
+ "./testing": "./dest/testing/index.js",
50
+ "./testing/files": "./dest/testing/files/index.js",
51
+ "./array": "./dest/array/index.js",
52
+ "./validation": "./dest/validation/index.js",
53
+ "./promise": "./dest/promise/index.js",
54
+ "./string": "./dest/string/index.js",
55
+ "./message": "./dest/message/index.js"
56
+ },
57
+ "scripts": {
58
+ "build": "yarn clean && tsc -b",
59
+ "build:dev": "tsc -b --watch",
60
+ "clean": "rm -rf ./dest .tsbuildinfo",
61
+ "generate": "true",
62
+ "formatting": "run -T prettier --check ./src && run -T eslint ./src",
63
+ "formatting:fix": "run -T eslint --fix ./src && run -T prettier -w ./src",
64
+ "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}"
65
+ },
66
+ "inherits": [
67
+ "../package.common.json"
68
+ ],
69
+ "jest": {
70
+ "transform": {
71
+ "^.+\\.tsx?$": [
72
+ "@swc/jest",
73
+ {
74
+ "jsc": {
75
+ "parser": {
76
+ "syntax": "typescript",
77
+ "decorators": true
78
+ },
79
+ "transform": {
80
+ "decoratorVersion": "2022-03"
81
+ }
82
+ }
83
+ }
84
+ ]
85
+ },
86
+ "moduleNameMapper": {
87
+ "^(\\.{1,2}/.*)\\.[cm]?js$": "$1"
88
+ },
89
+ "testRegex": "./src/.*\\.test\\.(js|mjs|ts)$",
90
+ "rootDir": "./src",
91
+ "extensionsToTreatAsEsm": [
92
+ ".ts"
93
+ ],
94
+ "reporters": [
95
+ "default"
96
+ ],
97
+ "testTimeout": 120000,
98
+ "setupFilesAfterEnv": [
99
+ "../../foundation/src/jest/setup.mjs"
100
+ ],
101
+ "setupFiles": [
102
+ "../../foundation/src/jest/setup.mjs"
103
+ ]
104
+ },
105
+ "dependencies": {
106
+ "@aztec/bb.js": "0.0.0-test.0",
107
+ "@koa/cors": "^5.0.0",
108
+ "@noble/curves": "^1.2.0",
109
+ "bn.js": "^5.2.1",
110
+ "c-kzg": "4.0.0-alpha.1",
111
+ "colorette": "^2.0.20",
112
+ "debug": "^4.3.4",
113
+ "detect-node": "^2.1.0",
114
+ "elliptic": "^6.5.4",
115
+ "hash.js": "^1.1.7",
116
+ "koa": "^2.14.2",
117
+ "koa-bodyparser": "^4.4.0",
118
+ "koa-compress": "^5.1.0",
119
+ "koa-router": "^12.0.0",
120
+ "leveldown": "^6.1.1",
121
+ "levelup": "^5.1.1",
122
+ "lodash.chunk": "^4.2.0",
123
+ "lodash.clonedeepwith": "^4.5.0",
124
+ "memdown": "^6.1.1",
125
+ "pako": "^2.1.0",
126
+ "pino": "^9.5.0",
127
+ "pino-pretty": "^13.0.0",
128
+ "sha3": "^2.1.4",
129
+ "undici": "^7.3.0",
130
+ "zod": "^3.23.8"
131
+ },
132
+ "devDependencies": {
133
+ "@jest/globals": "^29.5.0",
134
+ "@libp2p/interface": "1.3.1",
135
+ "@types/bn.js": "^5.1.3",
136
+ "@types/debug": "^4.1.7",
137
+ "@types/detect-node": "^2.0.0",
138
+ "@types/elliptic": "^6.4.16",
139
+ "@types/jest": "^29.5.0",
140
+ "@types/koa": "^2.13.5",
141
+ "@types/koa-bodyparser": "^4.3.10",
142
+ "@types/koa-compress": "^4.0.3",
143
+ "@types/koa-router": "^7.4.4",
144
+ "@types/koa__cors": "^4.0.0",
145
+ "@types/leveldown": "^4.0.3",
146
+ "@types/levelup": "^5.1.2",
147
+ "@types/lodash.chunk": "^4.2.9",
148
+ "@types/lodash.clonedeepwith": "^4.5.7",
149
+ "@types/memdown": "^3.0.1",
150
+ "@types/node": "^18.7.23",
151
+ "@types/pako": "^2.0.0",
152
+ "@types/supertest": "^2.0.12",
153
+ "@typescript-eslint/eslint-plugin": "^6.2.1",
154
+ "@typescript-eslint/parser": "^6.2.1",
155
+ "comlink": "^4.4.1",
156
+ "eslint": "^8.21.0",
157
+ "eslint-config-prettier": "^8.5.0",
158
+ "eslint-plugin-jsdoc": "^40.1.0",
159
+ "eslint-plugin-no-only-tests": "^3.1.0",
160
+ "eslint-plugin-tsdoc": "^0.2.17",
161
+ "jest": "^29.5.0",
162
+ "prettier": "^2.7.1",
163
+ "supertest": "^6.3.3",
164
+ "ts-node": "^10.9.1",
165
+ "typescript": "^5.0.4",
166
+ "viem": "2.22.8"
167
+ },
168
+ "files": [
169
+ "dest",
170
+ "src",
171
+ "!*.test.*"
172
+ ],
173
+ "engines": {
174
+ "node": ">=18"
175
+ }
176
+ }
@@ -0,0 +1,150 @@
1
+ import type { Tuple } from '../serialize/index.js';
2
+
3
+ export type { FieldsOf } from '../types/index.js';
4
+
5
+ /**
6
+ * Create an array over an integer range.
7
+ * @param n - The number of integers.
8
+ * @param offset - The starting number.
9
+ * @returns The array of numbers.
10
+ */
11
+ export function range(n: number, offset = 0) {
12
+ const ret: number[] = [];
13
+ for (let i = 0; i < n; i++) {
14
+ ret.push(offset + i);
15
+ }
16
+ return ret;
17
+ }
18
+
19
+ /**
20
+ * Create an array over an integer range, filled with a function 'fn'.
21
+ * This is used over e.g. lodash because it resolved to a tuple type, needed for our fixed array type safety.
22
+ * @param n - The number of integers.
23
+ * @param fn - The generator function.
24
+ * @returns The array of numbers.
25
+ */
26
+ export function makeTuple<T, N extends number>(length: N, fn: (i: number) => T, offset = 0) {
27
+ return Array.from({ length }, (_: any, i: number) => fn(i + offset)) as Tuple<T, N>;
28
+ }
29
+
30
+ /**
31
+ * Create an array over an integer range, filled with a function 'fn'.
32
+ * This is used over e.g. lodash because it resolved to a tuple type, needed for our fixed array type safety.
33
+ * @param n - The number of integers.
34
+ * @param fn - The generator function.
35
+ * @returns The array of numbers.
36
+ */
37
+ export async function makeTupleAsync<T, N extends number>(length: N, fn: (i: number) => Promise<T>, offset = 0) {
38
+ return (await Promise.all(
39
+ Array(length)
40
+ .fill(0)
41
+ .map(async (_: any, i: number) => await fn(i + offset)),
42
+ )) as Tuple<T, N>;
43
+ }
44
+
45
+ /**
46
+ * Create an array over an integer range, filled with a function 'fn'. However, the latter half of the array are set to zeros.
47
+ * see `makeTuple` above.
48
+ * @param n - The number of integers.
49
+ * @param fn - The generator function.
50
+ * @returns The array of numbers.
51
+ */
52
+ export function makeHalfFullTuple<T, N extends number>(
53
+ length: N,
54
+ fn: (i: number) => T,
55
+ offset = 0,
56
+ makeEmpty: () => T,
57
+ ) {
58
+ return Array.from({ length }, (_: any, i: number) => (i < length / 2 ? fn(i + offset) : makeEmpty())) as Tuple<T, N>;
59
+ }
60
+
61
+ /**
62
+ * Assert a member of an object is a certain length.
63
+ * @param obj - An object.
64
+ * @param member - A member string.
65
+ * @param length - The length.
66
+ */
67
+ export function assertMemberLength<
68
+ F extends string,
69
+ T extends {
70
+ [f in F]: {
71
+ /**
72
+ * A property which the tested member of the object T has to have.
73
+ */
74
+ length: number;
75
+ };
76
+ },
77
+ >(obj: T, member: F, length: number) {
78
+ if (obj[member].length !== length) {
79
+ throw new Error(`Expected ${member} to have length ${length} but was ${obj[member].length}`);
80
+ }
81
+ }
82
+
83
+ /**
84
+ * Assert all subarrays in a member of an object are a certain length.
85
+ * @param obj - An object.
86
+ * @param member - A member string.
87
+ * @param length - The expected length for each subarray.
88
+ */
89
+ export function assertItemsLength<
90
+ F extends string,
91
+ T extends {
92
+ [f in F]: {
93
+ /**
94
+ * A property which the tested member of the object T has to have.
95
+ */
96
+ length: number;
97
+ }[];
98
+ },
99
+ >(obj: T, member: F, length: number) {
100
+ const arrays = obj[member];
101
+ for (let i = 0; i < arrays.length; i++) {
102
+ if (arrays[i].length !== length) {
103
+ throw new Error(`Expected ${member}[${i}] to have length ${length} but was ${arrays[i].length}`);
104
+ }
105
+ }
106
+ }
107
+
108
+ /**
109
+ * Checks that the permutation is valid. Throws an error if it is not.
110
+ * @param original - The original array.
111
+ * @param permutation - The array which is allegedly a permutation of the original.
112
+ * @param indexes - The indices of the original array which the permutation should map to.
113
+ * @param isEqual - A function to compare the elements of the original and permutation arrays.
114
+ */
115
+ export function assertPermutation<T>(
116
+ original: T[],
117
+ permutation: T[],
118
+ indexes: number[],
119
+ isEqual: (a: T, b: T) => boolean,
120
+ ): void {
121
+ if (original.length !== permutation.length || original.length !== indexes.length) {
122
+ throw new Error(`Invalid lengths: ${original.length}, ${permutation.length}, ${indexes.length}`);
123
+ }
124
+
125
+ const seenValue = new Set<number>();
126
+ for (let i = 0; i < indexes.length; i++) {
127
+ const index = indexes[i];
128
+ const permutedValue = permutation[i];
129
+ const originalValueAtIndex = original[index];
130
+
131
+ if (!isEqual(permutedValue, originalValueAtIndex)) {
132
+ throw new Error(`Invalid permutation at index ${index}: ${permutedValue} !== ${originalValueAtIndex}`);
133
+ }
134
+ if (seenValue.has(index)) {
135
+ throw new Error(`Duplicate index in permutation: ${index}`);
136
+ }
137
+ seenValue.add(index);
138
+ }
139
+ }
140
+
141
+ export function assertRightPadded<T>(arr: T[], isEmpty: (item: T) => boolean) {
142
+ let seenEmpty = false;
143
+ for (let i = 0; i < arr.length; i++) {
144
+ if (isEmpty(arr[i])) {
145
+ seenEmpty = true;
146
+ } else if (seenEmpty) {
147
+ throw new Error(`Non-empty element at index [${i}] after empty element`);
148
+ }
149
+ }
150
+ }
@@ -0,0 +1 @@
1
+ export * from './array.js';
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Maps an array of elements by applying an asynchronous function to each element in sequence,
3
+ * and returns a new array with the results. The function receives each element of the array
4
+ * and its index as arguments, and should return a Promise that resolves to the desired value.
5
+ *
6
+ * @typeParam T - The original array element type.
7
+ * @typeParam U - The resulting array element type.
8
+ * @param arr - The array to map.
9
+ * @param fn - The async function to apply on each element of the array.
10
+ * @returns A Promise that resolves to a new array containing the mapped values.
11
+ */
12
+ export async function asyncMap<T, U>(arr: T[], fn: (e: T, i: number) => Promise<U>): Promise<U[]> {
13
+ const results: U[] = [];
14
+ for (let i = 0; i < arr.length; ++i) {
15
+ results.push(await fn(arr[i], i));
16
+ }
17
+ return results;
18
+ }