@aztec/foundation 0.0.1-commit.b655e406 → 0.0.1-commit.c7c42ec

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 (434) hide show
  1. package/dest/array/array.d.ts +1 -9
  2. package/dest/array/array.d.ts.map +1 -1
  3. package/dest/array/array.js +0 -11
  4. package/dest/array/index.d.ts +2 -1
  5. package/dest/array/index.d.ts.map +1 -1
  6. package/dest/array/index.js +1 -0
  7. package/dest/array/sorted_array.d.ts +10 -0
  8. package/dest/array/sorted_array.d.ts.map +1 -0
  9. package/dest/array/sorted_array.js +106 -0
  10. package/dest/async-map/index.d.ts +1 -1
  11. package/dest/async-pool/index.d.ts +1 -1
  12. package/dest/bigint/index.d.ts +1 -1
  13. package/dest/bigint-buffer/index.d.ts +1 -1
  14. package/dest/branded-types/block_number.d.ts +53 -0
  15. package/dest/branded-types/block_number.d.ts.map +1 -0
  16. package/dest/branded-types/block_number.js +75 -0
  17. package/dest/branded-types/checkpoint_number.d.ts +46 -0
  18. package/dest/branded-types/checkpoint_number.d.ts.map +1 -0
  19. package/dest/branded-types/checkpoint_number.js +68 -0
  20. package/dest/branded-types/epoch.d.ts +42 -0
  21. package/dest/branded-types/epoch.d.ts.map +1 -0
  22. package/dest/branded-types/epoch.js +59 -0
  23. package/dest/branded-types/index.d.ts +6 -0
  24. package/dest/branded-types/index.d.ts.map +1 -0
  25. package/dest/branded-types/index.js +4 -0
  26. package/dest/branded-types/slot.d.ts +42 -0
  27. package/dest/branded-types/slot.d.ts.map +1 -0
  28. package/dest/branded-types/slot.js +59 -0
  29. package/dest/branded-types/types.d.ts +5 -0
  30. package/dest/branded-types/types.d.ts.map +1 -0
  31. package/dest/branded-types/types.js +1 -0
  32. package/dest/buffer/buffer16.d.ts +2 -5
  33. package/dest/buffer/buffer16.d.ts.map +1 -1
  34. package/dest/buffer/buffer16.js +1 -1
  35. package/dest/buffer/buffer32.d.ts +2 -5
  36. package/dest/buffer/buffer32.d.ts.map +1 -1
  37. package/dest/buffer/buffer32.js +1 -1
  38. package/dest/buffer/index.d.ts +1 -1
  39. package/dest/collection/array.d.ts +1 -1
  40. package/dest/collection/index.d.ts +1 -1
  41. package/dest/collection/object.d.ts +1 -1
  42. package/dest/committable/committable.d.ts +1 -1
  43. package/dest/committable/committable.d.ts.map +1 -1
  44. package/dest/committable/index.d.ts +1 -1
  45. package/dest/config/env_var.d.ts +2 -2
  46. package/dest/config/env_var.d.ts.map +1 -1
  47. package/dest/config/index.d.ts +10 -2
  48. package/dest/config/index.d.ts.map +1 -1
  49. package/dest/config/index.js +16 -2
  50. package/dest/config/network_config.d.ts +13 -1
  51. package/dest/config/network_config.d.ts.map +1 -1
  52. package/dest/config/network_config.js +3 -1
  53. package/dest/config/network_name.d.ts +1 -1
  54. package/dest/config/secret_value.d.ts +1 -1
  55. package/dest/config/secret_value.d.ts.map +1 -1
  56. package/dest/crypto/aes128/index.d.ts +1 -1
  57. package/dest/crypto/aes128/index.d.ts.map +1 -1
  58. package/dest/crypto/aes128/index.js +2 -6
  59. package/dest/crypto/bls/bn254_keystore.d.ts +15 -15
  60. package/dest/crypto/bls/bn254_keystore.d.ts.map +1 -1
  61. package/dest/crypto/bls/bn254_keystore.js +1 -1
  62. package/dest/crypto/bls/index.d.ts +1 -1
  63. package/dest/crypto/bls/index.js +1 -1
  64. package/dest/crypto/bn254/index.d.ts +35 -51
  65. package/dest/crypto/bn254/index.d.ts.map +1 -1
  66. package/dest/crypto/bn254/index.js +51 -137
  67. package/dest/crypto/ecdsa/index.d.ts +1 -1
  68. package/dest/crypto/ecdsa/index.d.ts.map +1 -1
  69. package/dest/crypto/ecdsa/index.js +4 -12
  70. package/dest/crypto/ecdsa/signature.d.ts +2 -11
  71. package/dest/crypto/ecdsa/signature.d.ts.map +1 -1
  72. package/dest/crypto/ecdsa/signature.js +2 -2
  73. package/dest/crypto/grumpkin/index.d.ts +4 -2
  74. package/dest/crypto/grumpkin/index.d.ts.map +1 -1
  75. package/dest/crypto/grumpkin/index.js +7 -16
  76. package/dest/crypto/keccak/index.d.ts +1 -1
  77. package/dest/crypto/keys/index.d.ts +2 -2
  78. package/dest/crypto/keys/index.d.ts.map +1 -1
  79. package/dest/crypto/keys/index.js +2 -4
  80. package/dest/crypto/pedersen/index.d.ts +1 -1
  81. package/dest/crypto/pedersen/pedersen.noble.d.ts +1 -1
  82. package/dest/crypto/pedersen/pedersen.wasm.d.ts +2 -2
  83. package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -1
  84. package/dest/crypto/pedersen/pedersen.wasm.js +4 -10
  85. package/dest/crypto/poseidon/index.d.ts +2 -2
  86. package/dest/crypto/poseidon/index.d.ts.map +1 -1
  87. package/dest/crypto/poseidon/index.js +6 -16
  88. package/dest/crypto/random/index.d.ts +1 -1
  89. package/dest/crypto/random/index.d.ts.map +1 -1
  90. package/dest/crypto/random/randomness_singleton.d.ts +1 -1
  91. package/dest/crypto/random/randomness_singleton.d.ts.map +1 -1
  92. package/dest/crypto/schnorr/index.d.ts +3 -2
  93. package/dest/crypto/schnorr/index.d.ts.map +1 -1
  94. package/dest/crypto/schnorr/index.js +4 -10
  95. package/dest/crypto/schnorr/signature.d.ts +2 -2
  96. package/dest/crypto/schnorr/signature.d.ts.map +1 -1
  97. package/dest/crypto/schnorr/signature.js +2 -2
  98. package/dest/crypto/secp256k1/index.d.ts +1 -1
  99. package/dest/crypto/secp256k1/index.d.ts.map +1 -1
  100. package/dest/crypto/secp256k1/index.js +3 -9
  101. package/dest/crypto/secp256k1-signer/index.d.ts +1 -1
  102. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts +1 -1
  103. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts.map +1 -1
  104. package/dest/crypto/secp256k1-signer/utils.d.ts +1 -1
  105. package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -1
  106. package/dest/crypto/serialize.d.ts +1 -1
  107. package/dest/crypto/sha256/index.d.ts +2 -2
  108. package/dest/crypto/sha256/index.d.ts.map +1 -1
  109. package/dest/crypto/sha256/index.js +1 -1
  110. package/dest/crypto/sha512/index.d.ts +3 -3
  111. package/dest/crypto/sha512/index.d.ts.map +1 -1
  112. package/dest/crypto/sha512/index.js +1 -1
  113. package/dest/crypto/signature/index.d.ts +2 -2
  114. package/dest/crypto/signature/index.d.ts.map +1 -1
  115. package/dest/crypto/sync/index.d.ts +1 -1
  116. package/dest/crypto/sync/index.js +1 -3
  117. package/dest/crypto/sync/pedersen/index.d.ts +2 -2
  118. package/dest/crypto/sync/pedersen/index.d.ts.map +1 -1
  119. package/dest/crypto/sync/pedersen/index.js +1 -1
  120. package/dest/crypto/sync/poseidon/index.d.ts +2 -2
  121. package/dest/crypto/sync/poseidon/index.d.ts.map +1 -1
  122. package/dest/crypto/sync/poseidon/index.js +1 -1
  123. package/dest/{fields/bls12_fields.d.ts → curves/bls12/field.d.ts} +3 -3
  124. package/dest/curves/bls12/field.d.ts.map +1 -0
  125. package/dest/{fields/bls12_fields.js → curves/bls12/field.js} +6 -6
  126. package/dest/curves/bls12/index.d.ts +3 -0
  127. package/dest/curves/bls12/index.d.ts.map +1 -0
  128. package/dest/curves/bls12/index.js +2 -0
  129. package/dest/{fields/bls12_point.d.ts → curves/bls12/point.d.ts} +4 -13
  130. package/dest/curves/bls12/point.d.ts.map +1 -0
  131. package/dest/{fields/bls12_point.js → curves/bls12/point.js} +7 -7
  132. package/dest/{fields/fields.d.ts → curves/bn254/field.d.ts} +16 -15
  133. package/dest/curves/bn254/field.d.ts.map +1 -0
  134. package/dest/{fields/fields.js → curves/bn254/field.js} +44 -47
  135. package/dest/curves/bn254/index.d.ts +3 -0
  136. package/dest/curves/bn254/index.d.ts.map +1 -0
  137. package/dest/curves/bn254/index.js +2 -0
  138. package/dest/curves/bn254/point.d.ts +54 -0
  139. package/dest/curves/bn254/point.d.ts.map +1 -0
  140. package/dest/curves/bn254/point.js +143 -0
  141. package/dest/curves/grumpkin/index.d.ts +10 -0
  142. package/dest/curves/grumpkin/index.d.ts.map +1 -0
  143. package/dest/curves/grumpkin/index.js +3 -0
  144. package/dest/{fields → curves/grumpkin}/point.d.ts +13 -13
  145. package/dest/curves/grumpkin/point.d.ts.map +1 -0
  146. package/dest/{fields → curves/grumpkin}/point.js +24 -7
  147. package/dest/decorators/index.d.ts +1 -1
  148. package/dest/decorators/memoize.d.ts +1 -1
  149. package/dest/decorators/memoize.d.ts.map +1 -1
  150. package/dest/error/index.d.ts +4 -4
  151. package/dest/error/index.d.ts.map +1 -1
  152. package/dest/eth-address/index.d.ts +12 -2
  153. package/dest/eth-address/index.d.ts.map +1 -1
  154. package/dest/eth-address/index.js +23 -1
  155. package/dest/eth-signature/eth_signature.d.ts +1 -4
  156. package/dest/eth-signature/eth_signature.d.ts.map +1 -1
  157. package/dest/eth-signature/index.d.ts +1 -1
  158. package/dest/fs/index.d.ts +1 -1
  159. package/dest/fs/run_in_dir.d.ts +1 -1
  160. package/dest/fs/try_rm_dir.d.ts +1 -1
  161. package/dest/iterable/all.d.ts +1 -1
  162. package/dest/iterable/filter.d.ts +1 -1
  163. package/dest/iterable/index.d.ts +1 -1
  164. package/dest/iterable/isAsyncIt.d.ts +1 -1
  165. package/dest/iterable/map.d.ts +1 -1
  166. package/dest/iterable/peek.d.ts +1 -1
  167. package/dest/iterable/sort.d.ts +1 -1
  168. package/dest/iterable/take.d.ts +1 -1
  169. package/dest/iterable/toArray.d.ts +1 -1
  170. package/dest/iterator/filter.d.ts +3 -0
  171. package/dest/iterator/filter.d.ts.map +1 -0
  172. package/dest/iterator/filter.js +7 -0
  173. package/dest/iterator/index.d.ts +2 -0
  174. package/dest/iterator/index.d.ts.map +1 -0
  175. package/dest/iterator/index.js +1 -0
  176. package/dest/json-rpc/client/fetch.d.ts +1 -1
  177. package/dest/json-rpc/client/index.d.ts +1 -1
  178. package/dest/json-rpc/client/safe_json_rpc_client.d.ts +1 -1
  179. package/dest/json-rpc/client/undici.d.ts +1 -1
  180. package/dest/json-rpc/convert.d.ts +1 -1
  181. package/dest/json-rpc/errors.d.ts +1 -1
  182. package/dest/json-rpc/errors.d.ts.map +1 -1
  183. package/dest/json-rpc/fixtures/class_a.d.ts +3 -3
  184. package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -1
  185. package/dest/json-rpc/fixtures/class_b.d.ts +3 -3
  186. package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -1
  187. package/dest/json-rpc/fixtures/test_state.d.ts +1 -1
  188. package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -1
  189. package/dest/json-rpc/index.d.ts +1 -1
  190. package/dest/json-rpc/js_utils.d.ts +1 -1
  191. package/dest/json-rpc/js_utils.d.ts.map +1 -1
  192. package/dest/json-rpc/server/index.d.ts +1 -1
  193. package/dest/json-rpc/server/safe_json_rpc_server.d.ts +1 -1
  194. package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -1
  195. package/dest/json-rpc/server/telemetry.d.ts +1 -1
  196. package/dest/json-rpc/test/index.d.ts +1 -1
  197. package/dest/json-rpc/test/integration.d.ts +1 -1
  198. package/dest/log/console.d.ts +1 -1
  199. package/dest/log/gcloud-logger-config.d.ts +1 -1
  200. package/dest/log/gcloud-logger-config.d.ts.map +1 -1
  201. package/dest/log/index.d.ts +1 -1
  202. package/dest/log/libp2p_logger.d.ts +1 -1
  203. package/dest/log/log-filters.d.ts +1 -1
  204. package/dest/log/log-levels.d.ts +1 -1
  205. package/dest/log/log_fn.d.ts +1 -1
  206. package/dest/log/noir_debug_log_util.d.ts +1 -1
  207. package/dest/log/pino-logger.d.ts +2 -2
  208. package/dest/message/index.d.ts +1 -1
  209. package/dest/message/index.d.ts.map +1 -1
  210. package/dest/mutex/index.d.ts +1 -1
  211. package/dest/mutex/index.d.ts.map +1 -1
  212. package/dest/mutex/mutex_database.d.ts +1 -1
  213. package/dest/noir/index.d.ts +1 -1
  214. package/dest/noir/noir_package_config.d.ts +9 -9
  215. package/dest/number/index.d.ts +1 -1
  216. package/dest/profiler/index.d.ts +1 -1
  217. package/dest/profiler/profiler.d.ts +1 -1
  218. package/dest/promise/index.d.ts +1 -1
  219. package/dest/promise/running-promise.d.ts +1 -1
  220. package/dest/promise/running-promise.d.ts.map +1 -1
  221. package/dest/promise/utils.d.ts +1 -1
  222. package/dest/queue/base_memory_queue.d.ts +1 -1
  223. package/dest/queue/base_memory_queue.d.ts.map +1 -1
  224. package/dest/queue/batch_queue.d.ts +1 -1
  225. package/dest/queue/batch_queue.d.ts.map +1 -1
  226. package/dest/queue/bounded_serial_queue.d.ts +1 -1
  227. package/dest/queue/bounded_serial_queue.d.ts.map +1 -1
  228. package/dest/queue/fifo_memory_queue.d.ts +1 -1
  229. package/dest/queue/fifo_memory_queue.d.ts.map +1 -1
  230. package/dest/queue/index.d.ts +1 -1
  231. package/dest/queue/priority_memory_queue.d.ts +1 -1
  232. package/dest/queue/priority_memory_queue.d.ts.map +1 -1
  233. package/dest/queue/priority_queue.d.ts +1 -1
  234. package/dest/queue/priority_queue.d.ts.map +1 -1
  235. package/dest/queue/semaphore.d.ts +1 -1
  236. package/dest/queue/semaphore.d.ts.map +1 -1
  237. package/dest/queue/serial_queue.d.ts +1 -1
  238. package/dest/queue/serial_queue.d.ts.map +1 -1
  239. package/dest/retry/index.d.ts +1 -1
  240. package/dest/running-promise/index.d.ts +1 -1
  241. package/dest/schemas/api.d.ts +1 -1
  242. package/dest/schemas/index.d.ts +1 -1
  243. package/dest/schemas/parse.d.ts +1 -1
  244. package/dest/schemas/schemas.d.ts +15 -17
  245. package/dest/schemas/schemas.d.ts.map +1 -1
  246. package/dest/schemas/schemas.js +14 -10
  247. package/dest/schemas/types.d.ts +31 -1
  248. package/dest/schemas/types.d.ts.map +1 -1
  249. package/dest/schemas/types.js +25 -1
  250. package/dest/schemas/utils.d.ts +4 -4
  251. package/dest/schemas/utils.d.ts.map +1 -1
  252. package/dest/schemas/utils.js +15 -5
  253. package/dest/serialize/buffer_reader.d.ts +1 -1
  254. package/dest/serialize/buffer_reader.d.ts.map +1 -1
  255. package/dest/serialize/field_reader.d.ts +2 -2
  256. package/dest/serialize/field_reader.d.ts.map +1 -1
  257. package/dest/serialize/field_reader.js +1 -1
  258. package/dest/serialize/free_funcs.d.ts +2 -2
  259. package/dest/serialize/free_funcs.d.ts.map +1 -1
  260. package/dest/serialize/free_funcs.js +1 -1
  261. package/dest/serialize/index.d.ts +1 -1
  262. package/dest/serialize/serialize.d.ts +2 -2
  263. package/dest/serialize/serialize.d.ts.map +1 -1
  264. package/dest/serialize/serialize.js +1 -1
  265. package/dest/serialize/type_registry.d.ts +1 -1
  266. package/dest/serialize/type_registry.d.ts.map +1 -1
  267. package/dest/serialize/types.d.ts +1 -1
  268. package/dest/sleep/index.d.ts +3 -1
  269. package/dest/sleep/index.d.ts.map +1 -1
  270. package/dest/sleep/index.js +4 -0
  271. package/dest/string/index.d.ts +1 -1
  272. package/dest/testing/files/index.d.ts +2 -1
  273. package/dest/testing/files/index.d.ts.map +1 -1
  274. package/dest/testing/files/index.js +1 -1
  275. package/dest/testing/formatting.d.ts +1 -1
  276. package/dest/testing/index.d.ts +1 -1
  277. package/dest/testing/port_allocator.d.ts +1 -1
  278. package/dest/testing/snapshot_serializer.d.ts +1 -1
  279. package/dest/testing/test_data.d.ts +1 -1
  280. package/dest/timer/date.d.ts +2 -1
  281. package/dest/timer/date.d.ts.map +1 -1
  282. package/dest/timer/date.js +3 -0
  283. package/dest/timer/elapsed.d.ts +1 -1
  284. package/dest/timer/index.d.ts +1 -1
  285. package/dest/timer/timeout.d.ts +1 -1
  286. package/dest/timer/timeout.d.ts.map +1 -1
  287. package/dest/timer/timer.d.ts +1 -1
  288. package/dest/timer/timer.d.ts.map +1 -1
  289. package/dest/transport/dispatch/create_dispatch_fn.d.ts +1 -1
  290. package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +1 -1
  291. package/dest/transport/dispatch/create_dispatch_proxy.d.ts +1 -1
  292. package/dest/transport/dispatch/messages.d.ts +1 -1
  293. package/dest/transport/index.d.ts +1 -1
  294. package/dest/transport/interface/connector.d.ts +1 -1
  295. package/dest/transport/interface/listener.d.ts +1 -1
  296. package/dest/transport/interface/socket.d.ts +1 -1
  297. package/dest/transport/interface/transferable.d.ts +1 -1
  298. package/dest/transport/node/index.d.ts +1 -1
  299. package/dest/transport/node/node_connector.d.ts +1 -1
  300. package/dest/transport/node/node_connector.d.ts.map +1 -1
  301. package/dest/transport/node/node_connector_socket.d.ts +1 -1
  302. package/dest/transport/node/node_connector_socket.d.ts.map +1 -1
  303. package/dest/transport/node/node_listener.d.ts +1 -1
  304. package/dest/transport/node/node_listener.d.ts.map +1 -1
  305. package/dest/transport/node/node_listener_socket.d.ts +1 -1
  306. package/dest/transport/node/node_listener_socket.d.ts.map +1 -1
  307. package/dest/transport/transport_client.d.ts +1 -1
  308. package/dest/transport/transport_client.d.ts.map +1 -1
  309. package/dest/transport/transport_server.d.ts +1 -10
  310. package/dest/transport/transport_server.d.ts.map +1 -1
  311. package/dest/trees/balanced_merkle_tree.d.ts +22 -0
  312. package/dest/trees/balanced_merkle_tree.d.ts.map +1 -0
  313. package/dest/trees/balanced_merkle_tree.js +66 -0
  314. package/dest/trees/hasher.d.ts +1 -1
  315. package/dest/trees/index.d.ts +2 -1
  316. package/dest/trees/index.d.ts.map +1 -1
  317. package/dest/trees/index.js +1 -0
  318. package/dest/trees/indexed_merkle_tree.d.ts +1 -1
  319. package/dest/trees/indexed_merkle_tree.d.ts.map +1 -1
  320. package/dest/trees/indexed_merkle_tree.js +1 -1
  321. package/dest/trees/indexed_merkle_tree_calculator.d.ts +1 -1
  322. package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -1
  323. package/dest/trees/indexed_tree_leaf.d.ts +1 -1
  324. package/dest/trees/membership_witness.d.ts +3 -24
  325. package/dest/trees/membership_witness.d.ts.map +1 -1
  326. package/dest/trees/membership_witness.js +1 -1
  327. package/dest/trees/merkle_tree.d.ts +1 -1
  328. package/dest/trees/merkle_tree.d.ts.map +1 -1
  329. package/dest/trees/merkle_tree_calculator.d.ts +2 -12
  330. package/dest/trees/merkle_tree_calculator.d.ts.map +1 -1
  331. package/dest/trees/merkle_tree_calculator.js +1 -31
  332. package/dest/trees/sibling_path.d.ts +5 -39
  333. package/dest/trees/sibling_path.d.ts.map +1 -1
  334. package/dest/trees/sibling_path.js +2 -2
  335. package/dest/trees/unbalanced_merkle_tree.d.ts +5 -3
  336. package/dest/trees/unbalanced_merkle_tree.d.ts.map +1 -1
  337. package/dest/trees/unbalanced_merkle_tree.js +32 -9
  338. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts +6 -5
  339. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts.map +1 -1
  340. package/dest/trees/unbalanced_merkle_tree_calculator.js +36 -40
  341. package/dest/trees/unbalanced_tree_store.d.ts +1 -1
  342. package/dest/trees/unbalanced_tree_store.d.ts.map +1 -1
  343. package/dest/types/index.d.ts +3 -1
  344. package/dest/types/index.d.ts.map +1 -1
  345. package/dest/types/index.js +3 -0
  346. package/dest/url/index.d.ts +1 -1
  347. package/dest/validation/index.d.ts +1 -1
  348. package/package.json +28 -8
  349. package/src/array/array.ts +0 -16
  350. package/src/array/index.ts +1 -0
  351. package/src/array/sorted_array.ts +133 -0
  352. package/src/branded-types/block_number.ts +112 -0
  353. package/src/branded-types/checkpoint_number.ts +100 -0
  354. package/src/branded-types/epoch.ts +88 -0
  355. package/src/branded-types/index.ts +6 -0
  356. package/src/branded-types/slot.ts +88 -0
  357. package/src/branded-types/types.ts +2 -0
  358. package/src/buffer/buffer16.ts +2 -2
  359. package/src/buffer/buffer32.ts +2 -2
  360. package/src/config/env_var.ts +27 -7
  361. package/src/config/index.ts +20 -2
  362. package/src/config/network_config.ts +2 -0
  363. package/src/crypto/aes128/index.ts +2 -2
  364. package/src/crypto/bls/bn254_keystore.ts +1 -1
  365. package/src/crypto/bls/index.ts +1 -1
  366. package/src/crypto/bn254/index.ts +50 -156
  367. package/src/crypto/ecdsa/index.ts +4 -4
  368. package/src/crypto/ecdsa/signature.ts +2 -2
  369. package/src/crypto/grumpkin/index.ts +8 -6
  370. package/src/crypto/keys/index.ts +2 -2
  371. package/src/crypto/pedersen/pedersen.wasm.ts +4 -4
  372. package/src/crypto/poseidon/index.ts +6 -6
  373. package/src/crypto/schnorr/index.ts +5 -4
  374. package/src/crypto/schnorr/signature.ts +2 -2
  375. package/src/crypto/secp256k1/index.ts +3 -3
  376. package/src/crypto/sha256/index.ts +1 -1
  377. package/src/crypto/sha512/index.ts +1 -1
  378. package/src/crypto/signature/index.ts +1 -1
  379. package/src/crypto/sync/index.ts +1 -1
  380. package/src/crypto/sync/pedersen/index.ts +1 -1
  381. package/src/crypto/sync/poseidon/index.ts +1 -1
  382. package/src/{fields/bls12_fields.ts → curves/bls12/field.ts} +6 -6
  383. package/src/curves/bls12/index.ts +2 -0
  384. package/src/{fields/bls12_point.ts → curves/bls12/point.ts} +7 -7
  385. package/src/{fields/fields.ts → curves/bn254/field.ts} +49 -56
  386. package/src/curves/bn254/index.ts +2 -0
  387. package/src/curves/bn254/point.ts +170 -0
  388. package/src/curves/grumpkin/index.ts +11 -0
  389. package/src/{fields → curves/grumpkin}/point.ts +26 -7
  390. package/src/eth-address/index.ts +26 -1
  391. package/src/iterator/filter.ts +11 -0
  392. package/src/iterator/index.ts +1 -0
  393. package/src/schemas/schemas.ts +24 -13
  394. package/src/schemas/types.ts +33 -0
  395. package/src/schemas/utils.ts +21 -8
  396. package/src/serialize/field_reader.ts +1 -1
  397. package/src/serialize/free_funcs.ts +1 -1
  398. package/src/serialize/serialize.ts +1 -1
  399. package/src/sleep/index.ts +6 -0
  400. package/src/testing/files/index.ts +1 -1
  401. package/src/timer/date.ts +4 -0
  402. package/src/trees/balanced_merkle_tree.ts +84 -0
  403. package/src/trees/index.ts +1 -0
  404. package/src/trees/indexed_merkle_tree.ts +1 -1
  405. package/src/trees/membership_witness.ts +1 -1
  406. package/src/trees/merkle_tree_calculator.ts +1 -34
  407. package/src/trees/sibling_path.ts +2 -2
  408. package/src/trees/unbalanced_merkle_tree.ts +54 -6
  409. package/src/trees/unbalanced_merkle_tree_calculator.ts +34 -41
  410. package/src/types/index.ts +5 -0
  411. package/dest/crypto/bn254/bn254_utils.d.ts +0 -39
  412. package/dest/crypto/bn254/bn254_utils.d.ts.map +0 -1
  413. package/dest/crypto/bn254/bn254_utils.js +0 -56
  414. package/dest/crypto/index.d.ts +0 -17
  415. package/dest/crypto/index.d.ts.map +0 -1
  416. package/dest/crypto/index.js +0 -16
  417. package/dest/fields/bls12_fields.d.ts.map +0 -1
  418. package/dest/fields/bls12_point.d.ts.map +0 -1
  419. package/dest/fields/coordinate.d.ts +0 -66
  420. package/dest/fields/coordinate.d.ts.map +0 -1
  421. package/dest/fields/coordinate.js +0 -96
  422. package/dest/fields/fields.d.ts.map +0 -1
  423. package/dest/fields/index.d.ts +0 -6
  424. package/dest/fields/index.d.ts.map +0 -1
  425. package/dest/fields/index.js +0 -5
  426. package/dest/fields/point.d.ts.map +0 -1
  427. package/dest/index.d.ts +0 -30
  428. package/dest/index.d.ts.map +0 -1
  429. package/dest/index.js +0 -30
  430. package/src/crypto/bn254/bn254_utils.ts +0 -64
  431. package/src/crypto/index.ts +0 -16
  432. package/src/fields/coordinate.ts +0 -104
  433. package/src/fields/index.ts +0 -5
  434. package/src/index.ts +0 -30
@@ -1,5 +1,6 @@
1
- import { sha256Trunc } from '../crypto/sha256/index.js';
2
- import { MerkleTreeCalculator } from './merkle_tree_calculator.js';
1
+ import { computeBalancedMerkleTreeRoot, computeBalancedMerkleTreeRootAsync, poseidonMerkleHash, shaMerkleHash } from './balanced_merkle_tree.js';
2
+ export const computeUnbalancedShaRoot = (leaves)=>computeUnbalancedMerkleTreeRoot(leaves, shaMerkleHash);
3
+ export const computeUnbalancedPoseidonRoot = async (leaves)=>await computeUnbalancedMerkleTreeRootAsync(leaves, poseidonMerkleHash);
3
4
  /**
4
5
  * Computes the Merkle root of an unbalanced tree.
5
6
  *
@@ -20,9 +21,9 @@ import { MerkleTreeCalculator } from './merkle_tree_calculator.js';
20
21
  *
21
22
  * But if we instead combine the size-4 and size-8 subtrees first (depth 4), and then merge with the size-2 subtree
22
23
  * (depth 1), the final tree has a depth of 5.
23
- */ export function computeUnbalancedMerkleTreeRoot(leaves, hasher = sha256Trunc) {
24
+ */ export function computeUnbalancedMerkleTreeRoot(leaves, hasher = shaMerkleHash, emptyRoot = Buffer.alloc(32)) {
24
25
  if (!leaves.length) {
25
- throw new Error('Cannot compute a Merkle root with no leaves');
26
+ return emptyRoot;
26
27
  }
27
28
  if (leaves.length === 1) {
28
29
  return leaves[0];
@@ -33,14 +34,36 @@ import { MerkleTreeCalculator } from './merkle_tree_calculator.js';
33
34
  while(numRemainingLeaves > 1){
34
35
  if ((numRemainingLeaves & subtreeSize) !== 0) {
35
36
  const subtreeLeaves = leaves.slice(numRemainingLeaves - subtreeSize, numRemainingLeaves);
36
- const subtreeRoot = MerkleTreeCalculator.computeTreeRootSync(subtreeLeaves, hasher);
37
+ const subtreeRoot = computeBalancedMerkleTreeRoot(subtreeLeaves, hasher);
37
38
  if (!root) {
38
39
  root = subtreeRoot;
39
40
  } else {
40
- root = hasher(Buffer.concat([
41
- subtreeRoot,
42
- root
43
- ]));
41
+ root = hasher(subtreeRoot, root);
42
+ }
43
+ numRemainingLeaves -= subtreeSize;
44
+ }
45
+ subtreeSize *= 2;
46
+ }
47
+ return root;
48
+ }
49
+ export async function computeUnbalancedMerkleTreeRootAsync(leaves, hasher = poseidonMerkleHash, emptyRoot = Buffer.alloc(32)) {
50
+ if (!leaves.length) {
51
+ return emptyRoot;
52
+ }
53
+ if (leaves.length === 1) {
54
+ return leaves[0];
55
+ }
56
+ let numRemainingLeaves = leaves.length;
57
+ let subtreeSize = 1;
58
+ let root;
59
+ while(numRemainingLeaves > 1){
60
+ if ((numRemainingLeaves & subtreeSize) !== 0) {
61
+ const subtreeLeaves = leaves.slice(numRemainingLeaves - subtreeSize, numRemainingLeaves);
62
+ const subtreeRoot = await computeBalancedMerkleTreeRootAsync(subtreeLeaves, hasher);
63
+ if (!root) {
64
+ root = subtreeRoot;
65
+ } else {
66
+ root = await hasher(subtreeRoot, root);
44
67
  }
45
68
  numRemainingLeaves -= subtreeSize;
46
69
  }
@@ -1,7 +1,7 @@
1
1
  import type { Hasher } from './hasher.js';
2
2
  import { SiblingPath } from './sibling_path.js';
3
3
  import { type TreeNodeLocation } from './unbalanced_tree_store.js';
4
- export declare function computeCompressedUnbalancedMerkleTreeRoot(leaves: Buffer[], valueToCompress?: Buffer<ArrayBuffer>, hasher?: Hasher['hash']): Buffer;
4
+ export declare function computeCompressedUnbalancedMerkleTreeRoot(leaves: Buffer[], valueToCompress?: Buffer<ArrayBuffer>, emptyRoot?: Buffer<ArrayBuffer>, hasher?: Hasher['hash']): Buffer;
5
5
  /**
6
6
  * An ephemeral unbalanced Merkle tree implementation.
7
7
  * Follows the rollup implementation which greedily hashes pairs of nodes up the tree.
@@ -13,11 +13,12 @@ export declare function computeCompressedUnbalancedMerkleTreeRoot(leaves: Buffer
13
13
  export declare class UnbalancedMerkleTreeCalculator {
14
14
  private readonly leaves;
15
15
  private readonly valueToCompress;
16
+ private readonly emptyRoot;
16
17
  private readonly hasher;
17
18
  private store;
18
19
  private leafLocations;
19
- constructor(leaves: Buffer[], valueToCompress: Buffer, hasher: Hasher['hash']);
20
- static create(leaves: Buffer[], valueToCompress?: Buffer<ArrayBuffer>, hasher?: (left: Buffer, right: Buffer) => Buffer<ArrayBuffer>): UnbalancedMerkleTreeCalculator;
20
+ constructor(leaves: Buffer[], valueToCompress: Buffer, emptyRoot: Buffer, hasher: Hasher['hash']);
21
+ static create(leaves: Buffer[], valueToCompress?: Buffer<ArrayBuffer>, emptyRoot?: Buffer<ArrayBuffer>, hasher?: (lhs: Uint8Array<ArrayBufferLike>, rhs: Uint8Array<ArrayBufferLike>) => Buffer<ArrayBuffer>): UnbalancedMerkleTreeCalculator;
21
22
  /**
22
23
  * Returns the root of the tree.
23
24
  * @returns The root of the tree.
@@ -43,6 +44,6 @@ export declare class UnbalancedMerkleTreeCalculator {
43
44
  */
44
45
  private buildTree;
45
46
  private shiftNodeUp;
46
- private shiftChildrenUp;
47
+ private collectNodesToShift;
47
48
  }
48
- //# sourceMappingURL=unbalanced_merkle_tree_calculator.d.ts.map
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5iYWxhbmNlZF9tZXJrbGVfdHJlZV9jYWxjdWxhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJlZXMvdW5iYWxhbmNlZF9tZXJrbGVfdHJlZV9jYWxjdWxhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxFQUFFLEtBQUssZ0JBQWdCLEVBQXVCLE1BQU0sNEJBQTRCLENBQUM7QUFFeEYsd0JBQWdCLHlDQUF5QyxDQUN2RCxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQ2hCLGVBQWUsc0JBQW1CLEVBQ2xDLFNBQVMsc0JBQW1CLEVBQzVCLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FDdEIsTUFBTSxDQUdSO0FBT0Q7Ozs7Ozs7R0FPRztBQUNILHFCQUFhLDhCQUE4QjtJQUt2QyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU07SUFDdkIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxlQUFlO0lBQ2hDLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUztJQUMxQixPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU07SUFQekIsT0FBTyxDQUFDLEtBQUssQ0FBZ0M7SUFDN0MsT0FBTyxDQUFDLGFBQWEsQ0FBMEI7SUFFL0MsWUFDbUIsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUNoQixlQUFlLEVBQUUsTUFBTSxFQUN2QixTQUFTLEVBQUUsTUFBTSxFQUNqQixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUl4QztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQ1gsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUNoQixlQUFlLHNCQUFrQixFQUNqQyxTQUFTLHNCQUFtQixFQUM1QixNQUFNLDhGQUFnQixrQ0FHdkI7SUFFRDs7O09BR0c7SUFDSSxPQUFPLElBQUksTUFBTSxDQUV2QjtJQUVEOzs7OztPQUtHO0lBQ0ksY0FBYyxDQUFDLENBQUMsU0FBUyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBT3JFO0lBRUQ7Ozs7T0FJRztJQUNJLHlCQUF5QixDQUFDLENBQUMsU0FBUyxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBbUJwRjtJQUVNLGVBQWUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxvQkFFdkM7SUFFRDs7O09BR0c7SUFDSCxPQUFPLENBQUMsU0FBUztJQStDakIsT0FBTyxDQUFDLFdBQVc7SUFZbkIsT0FBTyxDQUFDLG1CQUFtQjtDQW1CNUIifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"unbalanced_merkle_tree_calculator.d.ts","sourceRoot":"","sources":["../../src/trees/unbalanced_merkle_tree_calculator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,KAAK,gBAAgB,EAAuB,MAAM,4BAA4B,CAAC;AAExF,wBAAgB,yCAAyC,CACvD,MAAM,EAAE,MAAM,EAAE,EAChB,eAAe,sBAAmB,EAClC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,GACtB,MAAM,CAGR;AAOD;;;;;;;GAOG;AACH,qBAAa,8BAA8B;IAKvC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM;IANzB,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,aAAa,CAA0B;gBAG5B,MAAM,EAAE,MAAM,EAAE,EAChB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;IAUzC,MAAM,CAAC,MAAM,CACX,MAAM,EAAE,MAAM,EAAE,EAChB,eAAe,sBAAkB,EACjC,MAAM,IAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAkD,MAAM,CAAC,WAAW,CAAC;IAK5G;;;OAGG;IACI,OAAO,IAAI,MAAM;IAIxB;;;;;OAKG;IACI,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAStE;;;;OAIG;IACI,yBAAyB,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAqB9E,eAAe,CAAC,SAAS,EAAE,MAAM;IAIxC;;;OAGG;IACH,OAAO,CAAC,SAAS;IAkDjB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,eAAe;CAoBxB"}
1
+ {"version":3,"file":"unbalanced_merkle_tree_calculator.d.ts","sourceRoot":"","sources":["../../src/trees/unbalanced_merkle_tree_calculator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,KAAK,gBAAgB,EAAuB,MAAM,4BAA4B,CAAC;AAExF,wBAAgB,yCAAyC,CACvD,MAAM,EAAE,MAAM,EAAE,EAChB,eAAe,sBAAmB,EAClC,SAAS,sBAAmB,EAC5B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,GACtB,MAAM,CAGR;AAOD;;;;;;;GAOG;AACH,qBAAa,8BAA8B;IAKvC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPzB,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,aAAa,CAA0B;IAE/C,YACmB,MAAM,EAAE,MAAM,EAAE,EAChB,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAIxC;IAED,MAAM,CAAC,MAAM,CACX,MAAM,EAAE,MAAM,EAAE,EAChB,eAAe,sBAAkB,EACjC,SAAS,sBAAmB,EAC5B,MAAM,8FAAgB,kCAGvB;IAED;;;OAGG;IACI,OAAO,IAAI,MAAM,CAEvB;IAED;;;;;OAKG;IACI,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAOrE;IAED;;;;OAIG;IACI,yBAAyB,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAmBpF;IAEM,eAAe,CAAC,SAAS,EAAE,MAAM,oBAEvC;IAED;;;OAGG;IACH,OAAO,CAAC,SAAS;IA+CjB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,mBAAmB;CAmB5B"}
@@ -1,8 +1,8 @@
1
- import { sha256Trunc } from '../crypto/index.js';
1
+ import { shaMerkleHash } from './balanced_merkle_tree.js';
2
2
  import { SiblingPath } from './sibling_path.js';
3
3
  import { UnbalancedTreeStore } from './unbalanced_tree_store.js';
4
- export function computeCompressedUnbalancedMerkleTreeRoot(leaves, valueToCompress = Buffer.alloc(32), hasher) {
5
- const calculator = UnbalancedMerkleTreeCalculator.create(leaves, valueToCompress, hasher);
4
+ export function computeCompressedUnbalancedMerkleTreeRoot(leaves, valueToCompress = Buffer.alloc(32), emptyRoot = Buffer.alloc(32), hasher) {
5
+ const calculator = UnbalancedMerkleTreeCalculator.create(leaves, valueToCompress, emptyRoot, hasher);
6
6
  return calculator.getRoot();
7
7
  }
8
8
  /**
@@ -15,25 +15,21 @@ export function computeCompressedUnbalancedMerkleTreeRoot(leaves, valueToCompres
15
15
  */ export class UnbalancedMerkleTreeCalculator {
16
16
  leaves;
17
17
  valueToCompress;
18
+ emptyRoot;
18
19
  hasher;
19
20
  store;
20
21
  leafLocations;
21
- constructor(leaves, valueToCompress, hasher){
22
+ constructor(leaves, valueToCompress, emptyRoot, hasher){
22
23
  this.leaves = leaves;
23
24
  this.valueToCompress = valueToCompress;
25
+ this.emptyRoot = emptyRoot;
24
26
  this.hasher = hasher;
25
27
  this.leafLocations = [];
26
- if (leaves.length === 0) {
27
- throw Error('Cannot create a compressed unbalanced tree with 0 leaves.');
28
- }
29
28
  this.store = new UnbalancedTreeStore(leaves.length);
30
29
  this.buildTree();
31
30
  }
32
- static create(leaves, valueToCompress = Buffer.alloc(0), hasher = (left, right)=>sha256Trunc(Buffer.concat([
33
- left,
34
- right
35
- ]))) {
36
- return new UnbalancedMerkleTreeCalculator(leaves, valueToCompress, hasher);
31
+ static create(leaves, valueToCompress = Buffer.alloc(0), emptyRoot = Buffer.alloc(32), hasher = shaMerkleHash) {
32
+ return new UnbalancedMerkleTreeCalculator(leaves, valueToCompress, emptyRoot, hasher);
37
33
  }
38
34
  /**
39
35
  * Returns the root of the tree.
@@ -88,12 +84,12 @@ export function computeCompressedUnbalancedMerkleTreeRoot(leaves, valueToCompres
88
84
  // Start with the leaves that are not compressed.
89
85
  let toProcess = this.leafLocations.filter((_, i)=>!this.leaves[i].equals(this.valueToCompress));
90
86
  if (!toProcess.length) {
91
- // All leaves are compressed. Set 0 to the root.
87
+ // All leaves are compressed. Set empty root to the root.
92
88
  this.store.setNode({
93
89
  level: 0,
94
90
  index: 0
95
91
  }, {
96
- value: Buffer.alloc(32)
92
+ value: this.emptyRoot
97
93
  });
98
94
  return;
99
95
  }
@@ -114,10 +110,7 @@ export function computeCompressedUnbalancedMerkleTreeRoot(leaves, valueToCompres
114
110
  const shouldShiftUp = !sibling || sibling.value.equals(this.valueToCompress);
115
111
  if (shouldShiftUp) {
116
112
  // The node becomes the parent if the sibling is a compressed leaf.
117
- const isLeaf = this.shiftNodeUp(location, parentLocation);
118
- if (!isLeaf) {
119
- this.shiftChildrenUp(location);
120
- }
113
+ this.shiftNodeUp(location, parentLocation);
121
114
  } else {
122
115
  // Hash the value with the (right) sibling and update the parent node.
123
116
  const node = this.store.getNode(location);
@@ -132,31 +125,34 @@ export function computeCompressedUnbalancedMerkleTreeRoot(leaves, valueToCompres
132
125
  toProcess = toProcessNext;
133
126
  }
134
127
  }
135
- shiftNodeUp(fromLocation, toLocation) {
136
- const node = this.store.getNode(fromLocation);
137
- this.store.setNode(toLocation, node);
138
- const isLeaf = node.leafIndex !== undefined;
139
- if (isLeaf) {
140
- // Update the location if the node is a leaf.
141
- this.leafLocations[node.leafIndex] = toLocation;
128
+ shiftNodeUp(from, to) {
129
+ // Collect all nodes that need to shift.
130
+ const nodesToShift = this.collectNodesToShift(from, to);
131
+ // Move all nodes to their new locations.
132
+ for (const { node, newLocation } of nodesToShift){
133
+ this.store.setNode(newLocation, node);
134
+ if (node.leafIndex !== undefined) {
135
+ this.leafLocations[node.leafIndex] = newLocation;
136
+ }
142
137
  }
143
- return isLeaf;
144
138
  }
145
- shiftChildrenUp(parent) {
146
- const [left, right] = this.store.getChildLocations(parent);
147
- const level = parent.level;
148
- const groupSize = 2 ** level;
149
- const computeNewLocation = (index)=>({
150
- level,
151
- index: Math.floor(index / (groupSize * 2)) * groupSize + index % groupSize
152
- });
153
- const isLeftLeaf = this.shiftNodeUp(left, computeNewLocation(left.index));
154
- const isRightLeaf = this.shiftNodeUp(right, computeNewLocation(right.index));
155
- if (!isLeftLeaf) {
156
- this.shiftChildrenUp(left);
139
+ collectNodesToShift(from, to) {
140
+ const node = this.store.getNode(from);
141
+ if (!node) {
142
+ return [];
157
143
  }
158
- if (!isRightLeaf) {
159
- this.shiftChildrenUp(right);
144
+ let result = [
145
+ {
146
+ node,
147
+ newLocation: to
148
+ }
149
+ ];
150
+ // If not a leaf, collect its children.
151
+ if (node.leafIndex === undefined) {
152
+ const [leftChild, rightChild] = this.store.getChildLocations(from);
153
+ const [leftChildNew, rightChildNew] = this.store.getChildLocations(to);
154
+ result = result.concat(this.collectNodesToShift(leftChild, leftChildNew)).concat(this.collectNodesToShift(rightChild, rightChildNew));
160
155
  }
156
+ return result;
161
157
  }
162
158
  }
@@ -17,4 +17,4 @@ export declare class UnbalancedTreeStore<T> {
17
17
  getSibling(location: TreeNodeLocation): T | undefined;
18
18
  getChildren(location: TreeNodeLocation): [T | undefined, T | undefined];
19
19
  }
20
- //# sourceMappingURL=unbalanced_tree_store.d.ts.map
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5iYWxhbmNlZF90cmVlX3N0b3JlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJlZXMvdW5iYWxhbmNlZF90cmVlX3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sV0FBVyxnQkFBZ0I7SUFDL0IsS0FBSyxFQUFFLE1BQU0sQ0FBQztJQUNkLEtBQUssRUFBRSxNQUFNLENBQUM7Q0FDZjtBQU9ELHFCQUFhLG1CQUFtQixDQUFDLENBQUM7O0lBSWhDLFlBQVksU0FBUyxFQUFFLE1BQU0sRUFFNUI7SUFFRCxPQUFPLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLGdCQUFnQixDQWVyRDtJQUVELE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxRQVNuRDtJQUVELGlCQUFpQixDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLGdCQUFnQixHQUFHLGdCQUFnQixDQU10RTtJQUVELGtCQUFrQixDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLGdCQUFnQixHQUFHLGdCQUFnQixDQU12RTtJQUVELGlCQUFpQixDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLGdCQUFnQixHQUFHLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsQ0FJMUY7SUFFRCxPQUFPLENBQUMsU0FBUyxFQUFFLE1BQU0sR0FBRyxDQUFDLEdBQUcsU0FBUyxDQU94QztJQUVELE9BQU8sQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FFakQ7SUFFRCxPQUFPLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FFdkI7SUFFRCxTQUFTLENBQUMsUUFBUSxFQUFFLGdCQUFnQixHQUFHLENBQUMsR0FBRyxTQUFTLENBR25EO0lBRUQsVUFBVSxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUdwRDtJQUVELFdBQVcsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FHdEU7Q0FLRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"unbalanced_tree_store.d.ts","sourceRoot":"","sources":["../../src/trees/unbalanced_tree_store.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAOD,qBAAa,mBAAmB,CAAC,CAAC;;gBAIpB,SAAS,EAAE,MAAM;IAI7B,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,gBAAgB;IAiBtD,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC;IAWpD,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB,GAAG,gBAAgB;IAQvE,kBAAkB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB,GAAG,gBAAgB;IAQxE,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAM3F,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IASzC,OAAO,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,GAAG,SAAS;IAIlD,OAAO,IAAI,CAAC,GAAG,SAAS;IAIxB,SAAS,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,GAAG,SAAS;IAKpD,UAAU,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,GAAG,SAAS;IAKrD,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC;CAQxE"}
1
+ {"version":3,"file":"unbalanced_tree_store.d.ts","sourceRoot":"","sources":["../../src/trees/unbalanced_tree_store.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAOD,qBAAa,mBAAmB,CAAC,CAAC;;IAIhC,YAAY,SAAS,EAAE,MAAM,EAE5B;IAED,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,gBAAgB,CAerD;IAED,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,QASnD;IAED,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB,GAAG,gBAAgB,CAMtE;IAED,kBAAkB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB,GAAG,gBAAgB,CAMvE;IAED,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAI1F;IAED,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAOxC;IAED,OAAO,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,GAAG,SAAS,CAEjD;IAED,OAAO,IAAI,CAAC,GAAG,SAAS,CAEvB;IAED,SAAS,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,GAAG,SAAS,CAGnD;IAED,UAAU,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,GAAG,SAAS,CAGpD;IAED,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,CAGtE;CAKF"}
@@ -14,6 +14,8 @@ export type Writeable<T> = {
14
14
  };
15
15
  /** Removes readonly modifiers for an object. */
16
16
  export declare function unfreeze<T>(obj: T): Writeable<T>;
17
+ /** Is defined type guard */
18
+ export declare function isDefined<T>(value: T | undefined): value is T;
17
19
  /** Resolves a record-like type. Lifted from viem. */
18
20
  export type Prettify<T> = {
19
21
  [K in keyof T]: T[K];
@@ -39,4 +41,4 @@ export interface TypedEventEmitter<TEventMap extends {
39
41
  removeListener<K extends keyof TEventMap>(event: K, listener: TEventMap[K]): this;
40
42
  removeAllListeners<K extends keyof TEventMap>(event: K): this;
41
43
  }
42
- //# sourceMappingURL=index.d.ts.map
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQ0FBZ0M7QUFDaEMsTUFBTSxNQUFNLFFBQVEsQ0FBQyxDQUFDLElBQUk7S0FDdkIsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxRQUFRLEdBQUcsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzFELENBQUM7QUFFRixrQ0FBa0M7QUFDbEMsTUFBTSxNQUFNLFdBQVcsQ0FBQyxDQUFDLElBQUk7S0FDMUIsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxRQUFRLEdBQUcsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzFELENBQUM7QUFFRix1REFBdUQ7QUFDdkQsTUFBTSxNQUFNLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUUvRSw2Q0FBNkM7QUFDN0MsTUFBTSxNQUFNLFNBQVMsQ0FBQyxDQUFDLElBQUk7SUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FBRSxDQUFDO0FBRTlELGdEQUFnRDtBQUNoRCx3QkFBZ0IsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FFaEQ7QUFFRCw0QkFBNEI7QUFDNUIsd0JBQWdCLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxTQUFTLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FFN0Q7QUFFRCxxREFBcUQ7QUFDckQsTUFBTSxNQUFNLFFBQVEsQ0FBQyxDQUFDLElBQUk7S0FDdkIsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDckIsR0FBRyxFQUFFLENBQUM7QUFFUDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxXQUFXLGlCQUFpQixDQUFDLFNBQVMsU0FBUztLQUFHLEdBQUcsSUFBSSxNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLElBQUk7Q0FBRTtJQUN6RyxJQUFJLENBQUMsQ0FBQyxTQUFTLE1BQU0sU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDeEUsRUFBRSxDQUFDLENBQUMsU0FBUyxNQUFNLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ3RFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsTUFBTSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUN2RSxJQUFJLENBQUMsQ0FBQyxTQUFTLE1BQU0sU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQztJQUN0RixjQUFjLENBQUMsQ0FBQyxTQUFTLE1BQU0sU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDbEYsa0JBQWtCLENBQUMsQ0FBQyxTQUFTLE1BQU0sU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO0NBRS9EIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KACvB,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF,kCAAkC;AAClC,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF,uDAAuD;AACvD,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE/E,6CAA6C;AAC7C,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;IAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AAE9D,gDAAgD;AAChD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAEhD;AAED,qDAAqD;AACrD,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KACvB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACrB,GAAG,EAAE,CAAC;AAEP;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB,CAAC,SAAS,SAAS;KAAG,GAAG,IAAI,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI;CAAE;IACzG,IAAI,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACxE,EAAE,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACtE,GAAG,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACvE,IAAI,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IACtF,cAAc,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAClF,kBAAkB,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;CAE/D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KACvB,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF,kCAAkC;AAClC,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF,uDAAuD;AACvD,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE/E,6CAA6C;AAC7C,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;IAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AAE9D,gDAAgD;AAChD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAEhD;AAED,4BAA4B;AAC5B,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,KAAK,IAAI,CAAC,CAE7D;AAED,qDAAqD;AACrD,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KACvB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACrB,GAAG,EAAE,CAAC;AAEP;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB,CAAC,SAAS,SAAS;KAAG,GAAG,IAAI,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI;CAAE;IACzG,IAAI,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACxE,EAAE,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACtE,GAAG,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACvE,IAAI,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IACtF,cAAc,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAClF,kBAAkB,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;CAE/D"}
@@ -1,3 +1,6 @@
1
1
  /** Strips methods of a type. */ /** Removes readonly modifiers for an object. */ export function unfreeze(obj) {
2
2
  return obj;
3
3
  }
4
+ /** Is defined type guard */ export function isDefined(value) {
5
+ return value !== undefined;
6
+ }
@@ -6,4 +6,4 @@
6
6
  * @api public
7
7
  */
8
8
  export declare function fileURLToPath(uri: string): string;
9
- //# sourceMappingURL=index.d.ts.map
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cmwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbUJBOzs7Ozs7R0FNRztBQUVILHdCQUFnQixhQUFhLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBNENqRCJ9
@@ -6,4 +6,4 @@ export declare function required<T>(value: T | undefined, errMsg?: string): T;
6
6
  * @param err - Error message to throw if x isn't met.
7
7
  */
8
8
  export declare function assert(x: any, err: string): asserts x;
9
- //# sourceMappingURL=index.d.ts.map
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWxpZGF0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlFQUF5RTtBQUN6RSx3QkFBZ0IsUUFBUSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUtwRTtBQUVEOzs7O0dBSUc7QUFDSCx3QkFBZ0IsTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUlyRCJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/foundation",
3
- "version": "0.0.1-commit.b655e406",
3
+ "version": "0.0.1-commit.c7c42ec",
4
4
  "type": "module",
5
5
  "main": "./dest/index.js",
6
6
  "types": "./dest/index.d.ts",
@@ -12,11 +12,30 @@
12
12
  "./async-map": "./dest/async-map/index.js",
13
13
  "./async-pool": "./dest/async-pool/index.js",
14
14
  "./bigint": "./dest/bigint/index.js",
15
+ "./branded-types": "./dest/branded-types/index.js",
15
16
  "./collection": "./dest/collection/index.js",
16
17
  "./config": "./dest/config/index.js",
17
- "./crypto": "./dest/crypto/index.js",
18
- "./crypto/sync": "./dest/crypto/sync/index.js",
18
+ "./crypto/aes128": "./dest/crypto/aes128/index.js",
19
+ "./crypto/bls": "./dest/crypto/bls/index.js",
19
20
  "./crypto/bls/bn254_keystore": "./dest/crypto/bls/bn254_keystore.js",
21
+ "./crypto/bn254": "./dest/crypto/bn254/index.js",
22
+ "./crypto/ecdsa": "./dest/crypto/ecdsa/index.js",
23
+ "./crypto/grumpkin": "./dest/crypto/grumpkin/index.js",
24
+ "./crypto/keccak": "./dest/crypto/keccak/index.js",
25
+ "./crypto/keys": "./dest/crypto/keys/index.js",
26
+ "./crypto/pedersen": "./dest/crypto/pedersen/index.js",
27
+ "./crypto/poseidon": "./dest/crypto/poseidon/index.js",
28
+ "./crypto/random": "./dest/crypto/random/index.js",
29
+ "./crypto/schnorr": "./dest/crypto/schnorr/index.js",
30
+ "./crypto/secp256k1": "./dest/crypto/secp256k1/index.js",
31
+ "./crypto/secp256k1-signer": "./dest/crypto/secp256k1-signer/index.js",
32
+ "./crypto/sha256": "./dest/crypto/sha256/index.js",
33
+ "./crypto/sha512": "./dest/crypto/sha512/index.js",
34
+ "./crypto/signature": "./dest/crypto/signature/index.js",
35
+ "./crypto/sync": "./dest/crypto/sync/index.js",
36
+ "./curves/bn254": "./dest/curves/bn254/index.js",
37
+ "./curves/grumpkin": "./dest/curves/grumpkin/index.js",
38
+ "./curves/bls12": "./dest/curves/bls12/index.js",
20
39
  "./decorators": "./dest/decorators/index.js",
21
40
  "./error": "./dest/error/index.js",
22
41
  "./eth-address": "./dest/eth-address/index.js",
@@ -30,9 +49,9 @@
30
49
  "./json-rpc/undici": "./dest/json-rpc/client/undici.js",
31
50
  "./json-rpc/test": "./dest/json-rpc/test/index.js",
32
51
  "./iterable": "./dest/iterable/index.js",
52
+ "./iterator": "./dest/iterator/index.js",
33
53
  "./log": "./dest/log/index.js",
34
54
  "./mutex": "./dest/mutex/index.js",
35
- "./fields": "./dest/fields/index.js",
36
55
  "./retry": "./dest/retry/index.js",
37
56
  "./running-promise": "./dest/running-promise/index.js",
38
57
  "./serialize": "./dest/serialize/index.js",
@@ -57,8 +76,8 @@
57
76
  "./number": "./dest/number/index.js"
58
77
  },
59
78
  "scripts": {
60
- "build": "yarn clean && tsc -b",
61
- "build:dev": "tsc -b --watch",
79
+ "build": "yarn clean && ../scripts/tsc.sh",
80
+ "build:dev": "../scripts/tsc.sh --watch",
62
81
  "clean": "rm -rf ./dest .tsbuildinfo",
63
82
  "generate": "true",
64
83
  "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}"
@@ -104,7 +123,7 @@
104
123
  "testEnvironment": "../../foundation/src/jest/env.mjs"
105
124
  },
106
125
  "dependencies": {
107
- "@aztec/bb.js": "0.0.1-commit.b655e406",
126
+ "@aztec/bb.js": "0.0.1-commit.c7c42ec",
108
127
  "@koa/cors": "^5.0.0",
109
128
  "@noble/curves": "=1.7.0",
110
129
  "@noble/hashes": "^1.6.1",
@@ -143,6 +162,7 @@
143
162
  "@types/node": "^22.15.17",
144
163
  "@types/pako": "^2.0.0",
145
164
  "@types/supertest": "^2.0.12",
165
+ "@typescript/native-preview": "7.0.0-dev.20251126.1",
146
166
  "comlink": "^4.4.1",
147
167
  "eslint": "^9.26.0",
148
168
  "eslint-config-prettier": "^10.1.5",
@@ -157,7 +177,7 @@
157
177
  "ts-node": "^10.9.1",
158
178
  "typescript": "^5.3.3",
159
179
  "typescript-eslint": "^8.32.1",
160
- "viem": "npm:@spalladino/viem@2.38.2-eip7594.0"
180
+ "viem": "npm:@aztec/viem@2.38.2"
161
181
  },
162
182
  "files": [
163
183
  "dest",
@@ -42,22 +42,6 @@ export async function makeTupleAsync<T, N extends number>(length: N, fn: (i: num
42
42
  )) as Tuple<T, N>;
43
43
  }
44
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
45
  /**
62
46
  * Assert a member of an object is a certain length.
63
47
  * @param obj - An object.
@@ -1 +1,2 @@
1
1
  export * from './array.js';
2
+ export * from './sorted_array.js';
@@ -0,0 +1,133 @@
1
+ type Cmp<T> = (a: T, b: T) => -1 | 0 | 1;
2
+
3
+ export function dedupeSortedArray<T>(arr: T[], cmp: Cmp<T>): void {
4
+ for (let i = 0; i < arr.length; i++) {
5
+ let j = i + 1;
6
+ for (; j < arr.length; j++) {
7
+ const res = cmp(arr[i], arr[j]);
8
+ if (res === 0) {
9
+ continue;
10
+ } else if (res < 0) {
11
+ break;
12
+ } else {
13
+ throw new Error('Array not sorted');
14
+ }
15
+ }
16
+
17
+ if (j - i > 1) {
18
+ arr.splice(i + 1, j - i - 1);
19
+ }
20
+ }
21
+ }
22
+
23
+ export function insertIntoSortedArray<T>(arr: T[], item: T, cmp: Cmp<T>, allowDuplicates = true): boolean {
24
+ let start = 0;
25
+ let end = arr.length;
26
+
27
+ while (start < end) {
28
+ const mid = start + (((end - start) / 2) | 0);
29
+ const comparison = cmp(arr[mid], item);
30
+
31
+ if (comparison < 0) {
32
+ start = mid + 1;
33
+ } else {
34
+ end = mid;
35
+ }
36
+ }
37
+
38
+ if (!allowDuplicates) {
39
+ // Check element at insertion point
40
+ if (start < arr.length && cmp(arr[start], item) === 0) {
41
+ return false;
42
+ }
43
+
44
+ // Check element before insertion point (in case we landed after duplicates)
45
+ if (start > 0 && cmp(arr[start - 1], item) === 0) {
46
+ return false;
47
+ }
48
+ }
49
+
50
+ arr.splice(start, 0, item);
51
+ return true;
52
+ }
53
+
54
+ export function findIndexInSortedArray<T, N>(values: T[], needle: N, cmp: (a: T, b: N) => number): number {
55
+ let start = 0;
56
+ let end = values.length - 1;
57
+
58
+ while (start <= end) {
59
+ const mid = start + (((end - start) / 2) | 0);
60
+ const comparison = cmp(values[mid], needle);
61
+
62
+ if (comparison === 0) {
63
+ return mid;
64
+ }
65
+
66
+ if (comparison > 0) {
67
+ end = mid - 1;
68
+ } else {
69
+ start = mid + 1;
70
+ }
71
+ }
72
+
73
+ return -1;
74
+ }
75
+
76
+ export function findInSortedArray<T, N>(values: T[], needle: N, cmp: (a: T, b: N) => number): T | undefined {
77
+ const idx = findIndexInSortedArray(values, needle, cmp);
78
+ return idx > -1 ? values[idx] : undefined;
79
+ }
80
+
81
+ export function removeAnyOf<T, N>(arr: T[], vals: N[], cmp: (a: T, b: N) => -1 | 0 | 1): void {
82
+ let writeIdx = 0;
83
+ let readIdx = 0;
84
+ let valIdx = 0;
85
+
86
+ while (readIdx < arr.length && valIdx < vals.length) {
87
+ const comparison = cmp(arr[readIdx], vals[valIdx]);
88
+
89
+ if (comparison < 0) {
90
+ arr[writeIdx++] = arr[readIdx++];
91
+ } else if (comparison > 0) {
92
+ valIdx++;
93
+ } else {
94
+ readIdx++;
95
+ }
96
+ }
97
+
98
+ while (readIdx < arr.length) {
99
+ arr[writeIdx++] = arr[readIdx++];
100
+ }
101
+
102
+ arr.length = writeIdx;
103
+ }
104
+
105
+ export function removeFromSortedArray<T, N>(arr: T[], val: N, cmp: (a: T, b: N) => -1 | 0 | 1) {
106
+ const idx = findIndexInSortedArray(arr, val, cmp);
107
+ if (idx > -1) {
108
+ arr.splice(idx, 1);
109
+ }
110
+ }
111
+
112
+ export function merge<T>(arr: T[], toInsert: T[], cmp: (a: T, b: T) => -1 | 0 | 1): void {
113
+ const result = new Array<T>(arr.length + toInsert.length);
114
+ let i = 0,
115
+ j = 0,
116
+ k = 0;
117
+
118
+ while (i < arr.length && j < toInsert.length) {
119
+ result[k++] = cmp(arr[i], toInsert[j]) <= 0 ? arr[i++] : toInsert[j++];
120
+ }
121
+
122
+ while (i < arr.length) {
123
+ result[k++] = arr[i++];
124
+ }
125
+ while (j < toInsert.length) {
126
+ result[k++] = toInsert[j++];
127
+ }
128
+
129
+ for (i = 0; i < result.length; i++) {
130
+ arr[i] = result[i];
131
+ }
132
+ arr.length = result.length;
133
+ }