@aztec/foundation 0.0.0-test.1 → 0.0.1-commit.017a351
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/array/array.d.ts +6 -9
- package/dest/array/array.d.ts.map +1 -1
- package/dest/array/array.js +11 -11
- package/dest/array/index.d.ts +2 -1
- package/dest/array/index.d.ts.map +1 -1
- package/dest/array/index.js +1 -0
- package/dest/array/sorted_array.d.ts +15 -0
- package/dest/array/sorted_array.d.ts.map +1 -0
- package/dest/array/sorted_array.js +109 -0
- package/dest/async-map/index.d.ts +1 -1
- package/dest/async-pool/index.d.ts +1 -1
- package/dest/async-pool/index.d.ts.map +1 -1
- package/dest/async-pool/index.js +1 -0
- package/dest/bigint/index.d.ts +7 -0
- package/dest/bigint/index.d.ts.map +1 -0
- package/dest/bigint/index.js +15 -0
- package/dest/bigint-buffer/index.d.ts +1 -3
- package/dest/bigint-buffer/index.d.ts.map +1 -1
- package/dest/bigint-buffer/index.js +6 -1
- package/dest/branded-types/block_number.d.ts +56 -0
- package/dest/branded-types/block_number.d.ts.map +1 -0
- package/dest/branded-types/block_number.js +89 -0
- package/dest/branded-types/buffer32_hash.d.ts +27 -0
- package/dest/branded-types/buffer32_hash.d.ts.map +1 -0
- package/dest/branded-types/buffer32_hash.js +12 -0
- package/dest/branded-types/checkpoint_number.d.ts +60 -0
- package/dest/branded-types/checkpoint_number.d.ts.map +1 -0
- package/dest/branded-types/checkpoint_number.js +88 -0
- package/dest/branded-types/epoch.d.ts +42 -0
- package/dest/branded-types/epoch.d.ts.map +1 -0
- package/dest/branded-types/epoch.js +59 -0
- package/dest/branded-types/index.d.ts +8 -0
- package/dest/branded-types/index.d.ts.map +1 -0
- package/dest/branded-types/index.js +6 -0
- package/dest/branded-types/index_within_checkpoint.d.ts +42 -0
- package/dest/branded-types/index_within_checkpoint.d.ts.map +1 -0
- package/dest/branded-types/index_within_checkpoint.js +59 -0
- package/dest/branded-types/slot.d.ts +45 -0
- package/dest/branded-types/slot.d.ts.map +1 -0
- package/dest/branded-types/slot.js +62 -0
- package/dest/branded-types/types.d.ts +5 -0
- package/dest/branded-types/types.d.ts.map +1 -0
- package/dest/branded-types/types.js +1 -0
- package/dest/buffer/buffer16.d.ts +82 -0
- package/dest/buffer/buffer16.d.ts.map +1 -0
- package/dest/buffer/buffer16.js +102 -0
- package/dest/buffer/buffer32.d.ts +32 -69
- package/dest/buffer/buffer32.d.ts.map +1 -1
- package/dest/buffer/buffer32.js +36 -68
- package/dest/buffer/index.d.ts +3 -1
- package/dest/buffer/index.d.ts.map +1 -1
- package/dest/buffer/index.js +2 -0
- package/dest/buffer/utils.d.ts +3 -0
- package/dest/buffer/utils.d.ts.map +1 -0
- package/dest/buffer/utils.js +7 -0
- package/dest/collection/array.d.ts +38 -4
- package/dest/collection/array.d.ts.map +1 -1
- package/dest/collection/array.js +141 -3
- package/dest/collection/index.d.ts +3 -1
- package/dest/collection/index.d.ts.map +1 -1
- package/dest/collection/index.js +2 -0
- package/dest/collection/lru_map.d.ts +41 -0
- package/dest/collection/lru_map.d.ts.map +1 -0
- package/dest/collection/lru_map.js +119 -0
- package/dest/collection/lru_set.d.ts +35 -0
- package/dest/collection/lru_set.d.ts.map +1 -0
- package/dest/collection/lru_set.js +95 -0
- package/dest/collection/object.d.ts +17 -1
- package/dest/collection/object.d.ts.map +1 -1
- package/dest/collection/object.js +25 -0
- package/dest/committable/committable.d.ts +1 -1
- package/dest/committable/committable.d.ts.map +1 -1
- package/dest/committable/committable.js +1 -1
- package/dest/committable/index.d.ts +1 -1
- package/dest/config/env_var.d.ts +2 -2
- package/dest/config/env_var.d.ts.map +1 -1
- package/dest/config/index.d.ts +88 -13
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +153 -22
- package/dest/config/network_config.d.ts +28 -0
- package/dest/config/network_config.d.ts.map +1 -0
- package/dest/config/network_config.js +14 -0
- package/dest/config/network_name.d.ts +3 -0
- package/dest/config/network_name.d.ts.map +1 -0
- package/dest/config/network_name.js +19 -0
- package/dest/config/parse-env.d.ts +3 -0
- package/dest/config/parse-env.d.ts.map +1 -0
- package/dest/config/parse-env.js +7 -0
- package/dest/config/secret_value.d.ts +28 -0
- package/dest/config/secret_value.d.ts.map +1 -0
- package/dest/config/secret_value.js +36 -0
- package/dest/crypto/aes128/index.d.ts +4 -5
- package/dest/crypto/aes128/index.d.ts.map +1 -1
- package/dest/crypto/aes128/index.js +30 -8
- package/dest/crypto/bls/bn254_keystore.d.ts +129 -0
- package/dest/crypto/bls/bn254_keystore.d.ts.map +1 -0
- package/dest/crypto/bls/bn254_keystore.js +201 -0
- package/dest/crypto/bls/index.d.ts +13 -0
- package/dest/crypto/bls/index.d.ts.map +1 -0
- package/dest/crypto/bls/index.js +87 -0
- package/dest/crypto/bn254/index.d.ts +39 -0
- package/dest/crypto/bn254/index.d.ts.map +1 -0
- package/dest/crypto/bn254/index.js +56 -0
- package/dest/crypto/ecdsa/index.d.ts +3 -3
- package/dest/crypto/ecdsa/index.d.ts.map +1 -1
- package/dest/crypto/ecdsa/index.js +62 -48
- package/dest/crypto/ecdsa/signature.d.ts +3 -5
- package/dest/crypto/ecdsa/signature.d.ts.map +1 -1
- package/dest/crypto/ecdsa/signature.js +2 -2
- package/dest/crypto/grumpkin/index.d.ts +10 -15
- package/dest/crypto/grumpkin/index.d.ts.map +1 -1
- package/dest/crypto/grumpkin/index.js +61 -55
- package/dest/crypto/keccak/index.d.ts +3 -5
- package/dest/crypto/keccak/index.d.ts.map +1 -1
- package/dest/crypto/keys/index.d.ts +2 -4
- package/dest/crypto/keys/index.d.ts.map +1 -1
- package/dest/crypto/keys/index.js +8 -5
- package/dest/crypto/pedersen/index.d.ts +1 -1
- package/dest/crypto/pedersen/pedersen.noble.d.ts +3 -5
- package/dest/crypto/pedersen/pedersen.noble.d.ts.map +1 -1
- package/dest/crypto/pedersen/pedersen.wasm.d.ts +4 -6
- package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -1
- package/dest/crypto/pedersen/pedersen.wasm.js +24 -14
- package/dest/crypto/poseidon/index.d.ts +2 -5
- package/dest/crypto/poseidon/index.d.ts.map +1 -1
- package/dest/crypto/poseidon/index.js +41 -28
- package/dest/crypto/random/index.d.ts +2 -4
- package/dest/crypto/random/index.d.ts.map +1 -1
- package/dest/crypto/random/index.js +2 -34
- package/dest/crypto/random/randomness_singleton.d.ts +4 -5
- package/dest/crypto/random/randomness_singleton.d.ts.map +1 -1
- package/dest/crypto/random/randomness_singleton.js +5 -5
- package/dest/crypto/schnorr/index.d.ts +10 -8
- package/dest/crypto/schnorr/index.d.ts.map +1 -1
- package/dest/crypto/schnorr/index.js +34 -42
- package/dest/crypto/schnorr/signature.d.ts +13 -35
- package/dest/crypto/schnorr/signature.d.ts.map +1 -1
- package/dest/crypto/schnorr/signature.js +21 -37
- package/dest/crypto/secp256k1/index.d.ts +5 -7
- package/dest/crypto/secp256k1/index.d.ts.map +1 -1
- package/dest/crypto/secp256k1/index.js +23 -18
- package/dest/crypto/secp256k1-signer/index.d.ts +1 -1
- package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts +1 -1
- package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts.map +1 -1
- package/dest/crypto/secp256k1-signer/utils.d.ts +67 -5
- package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -1
- package/dest/crypto/secp256k1-signer/utils.js +118 -6
- package/dest/crypto/sha256/index.d.ts +23 -6
- package/dest/crypto/sha256/index.d.ts.map +1 -1
- package/dest/crypto/sha256/index.js +43 -1
- package/dest/crypto/sha512/index.d.ts +3 -5
- package/dest/crypto/sha512/index.d.ts.map +1 -1
- package/dest/crypto/sha512/index.js +1 -1
- package/dest/crypto/signature/index.d.ts +2 -4
- package/dest/crypto/signature/index.d.ts.map +1 -1
- package/dest/crypto/sync/index.d.ts +1 -1
- package/dest/crypto/sync/index.js +1 -1
- package/dest/crypto/sync/pedersen/index.d.ts +4 -6
- package/dest/crypto/sync/pedersen/index.d.ts.map +1 -1
- package/dest/crypto/sync/pedersen/index.js +18 -11
- package/dest/crypto/sync/poseidon/index.d.ts +2 -5
- package/dest/crypto/sync/poseidon/index.d.ts.map +1 -1
- package/dest/crypto/sync/poseidon/index.js +23 -16
- package/dest/curves/bls12/field.d.ts +148 -0
- package/dest/curves/bls12/field.d.ts.map +1 -0
- package/dest/curves/bls12/field.js +357 -0
- package/dest/curves/bls12/index.d.ts +3 -0
- package/dest/curves/bls12/index.d.ts.map +1 -0
- package/dest/curves/bls12/index.js +2 -0
- package/dest/curves/bls12/point.d.ts +229 -0
- package/dest/curves/bls12/point.d.ts.map +1 -0
- package/dest/curves/bls12/point.js +400 -0
- package/dest/curves/bn254/field.d.ts +185 -0
- package/dest/curves/bn254/field.d.ts.map +1 -0
- package/dest/{fields/fields.js → curves/bn254/field.js} +111 -74
- package/dest/curves/bn254/index.d.ts +3 -0
- package/dest/curves/bn254/index.d.ts.map +1 -0
- package/dest/curves/bn254/index.js +2 -0
- package/dest/curves/bn254/point.d.ts +54 -0
- package/dest/curves/bn254/point.d.ts.map +1 -0
- package/dest/curves/bn254/point.js +143 -0
- package/dest/curves/grumpkin/index.d.ts +10 -0
- package/dest/curves/grumpkin/index.d.ts.map +1 -0
- package/dest/curves/grumpkin/index.js +3 -0
- package/dest/{fields → curves/grumpkin}/point.d.ts +26 -33
- package/dest/curves/grumpkin/point.d.ts.map +1 -0
- package/dest/{fields → curves/grumpkin}/point.js +53 -50
- package/dest/decorators/index.d.ts +1 -1
- package/dest/decorators/memoize.d.ts +1 -1
- package/dest/decorators/memoize.d.ts.map +1 -1
- package/dest/error/index.d.ts +1 -1
- package/dest/eth-address/index.d.ts +19 -10
- package/dest/eth-address/index.d.ts.map +1 -1
- package/dest/eth-address/index.js +31 -5
- package/dest/eth-signature/eth_signature.d.ts +19 -16
- package/dest/eth-signature/eth_signature.d.ts.map +1 -1
- package/dest/eth-signature/eth_signature.js +37 -18
- package/dest/eth-signature/index.d.ts +1 -1
- package/dest/fifo/fifo_frame_reader.d.ts +41 -0
- package/dest/fifo/fifo_frame_reader.d.ts.map +1 -0
- package/dest/fifo/fifo_frame_reader.js +91 -0
- package/dest/fifo/index.d.ts +2 -0
- package/dest/fifo/index.d.ts.map +1 -0
- package/dest/fifo/index.js +1 -0
- package/dest/fifo_set/fifo_set.d.ts +15 -0
- package/dest/fifo_set/fifo_set.d.ts.map +1 -0
- package/dest/fifo_set/fifo_set.js +39 -0
- package/dest/fifo_set/index.d.ts +2 -0
- package/dest/fifo_set/index.d.ts.map +1 -0
- package/dest/fifo_set/index.js +1 -0
- package/dest/fs/index.d.ts +2 -1
- package/dest/fs/index.d.ts.map +1 -1
- package/dest/fs/index.js +1 -0
- package/dest/fs/run_in_dir.d.ts +1 -1
- package/dest/fs/try_rm_dir.d.ts +3 -0
- package/dest/fs/try_rm_dir.d.ts.map +1 -0
- package/dest/fs/try_rm_dir.js +16 -0
- package/dest/iterable/all.d.ts +1 -1
- package/dest/iterable/filter.d.ts +1 -1
- package/dest/iterable/filter.js +1 -1
- package/dest/iterable/index.d.ts +1 -1
- package/dest/iterable/isAsyncIt.d.ts +1 -1
- package/dest/iterable/map.d.ts +1 -1
- package/dest/iterable/map.js +1 -1
- package/dest/iterable/peek.d.ts +1 -1
- package/dest/iterable/sort.d.ts +1 -1
- package/dest/iterable/take.d.ts +1 -1
- package/dest/iterable/toArray.d.ts +1 -1
- package/dest/iterator/filter.d.ts +3 -0
- package/dest/iterator/filter.d.ts.map +1 -0
- package/dest/iterator/filter.js +7 -0
- package/dest/iterator/index.d.ts +2 -0
- package/dest/iterator/index.d.ts.map +1 -0
- package/dest/iterator/index.js +1 -0
- package/dest/jest/env.js +48 -0
- package/dest/jest/setup.js +28 -1
- package/dest/jest/setupAfterEnv.js +3 -0
- package/dest/json-rpc/client/fetch.d.ts +3 -3
- package/dest/json-rpc/client/fetch.d.ts.map +1 -1
- package/dest/json-rpc/client/fetch.js +18 -31
- package/dest/json-rpc/client/index.d.ts +1 -1
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts +11 -4
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -1
- package/dest/json-rpc/client/safe_json_rpc_client.js +175 -15
- package/dest/json-rpc/client/undici.d.ts +1 -1
- package/dest/json-rpc/client/undici.d.ts.map +1 -1
- package/dest/json-rpc/client/undici.js +29 -11
- package/dest/json-rpc/convert.d.ts +3 -10
- package/dest/json-rpc/convert.d.ts.map +1 -1
- package/dest/json-rpc/convert.js +1 -9
- package/dest/json-rpc/errors.d.ts +4 -0
- package/dest/json-rpc/errors.d.ts.map +1 -0
- package/dest/json-rpc/errors.js +6 -0
- package/dest/json-rpc/fixtures/class_a.d.ts +6 -4
- package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -1
- package/dest/json-rpc/fixtures/class_b.d.ts +6 -4
- package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -1
- package/dest/json-rpc/fixtures/test_state.d.ts +4 -8
- package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -1
- package/dest/json-rpc/fixtures/test_state.js +57 -17
- package/dest/json-rpc/index.d.ts +3 -2
- package/dest/json-rpc/index.d.ts.map +1 -1
- package/dest/json-rpc/index.js +2 -1
- package/dest/json-rpc/js_utils.d.ts +1 -1
- package/dest/json-rpc/js_utils.d.ts.map +1 -1
- package/dest/json-rpc/server/api_key_auth.d.ts +19 -0
- package/dest/json-rpc/server/api_key_auth.d.ts.map +1 -0
- package/dest/json-rpc/server/api_key_auth.js +57 -0
- package/dest/json-rpc/server/index.d.ts +2 -1
- package/dest/json-rpc/server/index.d.ts.map +1 -1
- package/dest/json-rpc/server/index.js +1 -0
- package/dest/json-rpc/server/safe_json_rpc_server.d.ts +29 -25
- package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -1
- package/dest/json-rpc/server/safe_json_rpc_server.js +178 -59
- package/dest/json-rpc/test/index.d.ts +1 -1
- package/dest/json-rpc/test/integration.d.ts +2 -3
- package/dest/json-rpc/test/integration.d.ts.map +1 -1
- package/dest/log/bigint-utils.d.ts +5 -0
- package/dest/log/bigint-utils.d.ts.map +1 -0
- package/dest/log/bigint-utils.js +21 -0
- package/dest/log/console.d.ts +1 -1
- package/dest/log/console.d.ts.map +1 -1
- package/dest/log/gcloud-logger-config.d.ts +1 -2
- package/dest/log/gcloud-logger-config.d.ts.map +1 -1
- package/dest/log/gcloud-logger-config.js +4 -9
- package/dest/log/index.d.ts +5 -5
- package/dest/log/index.d.ts.map +1 -1
- package/dest/log/index.js +4 -4
- package/dest/log/libp2p_logger.d.ts +5 -2
- package/dest/log/libp2p_logger.d.ts.map +1 -1
- package/dest/log/libp2p_logger.js +27 -6
- package/dest/log/log-filters.d.ts +17 -4
- package/dest/log/log-filters.d.ts.map +1 -1
- package/dest/log/log-filters.js +26 -12
- package/dest/log/log-levels.d.ts +1 -1
- package/dest/log/log_fn.d.ts +2 -2
- package/dest/log/log_fn.d.ts.map +1 -1
- package/dest/log/noir_debug_log_util.d.ts +14 -0
- package/dest/log/noir_debug_log_util.d.ts.map +1 -0
- package/dest/log/noir_debug_log_util.js +14 -0
- package/dest/log/pino-logger-server.d.ts +9 -0
- package/dest/log/pino-logger-server.d.ts.map +1 -0
- package/dest/log/pino-logger-server.js +18 -0
- package/dest/log/pino-logger.d.ts +40 -11
- package/dest/log/pino-logger.d.ts.map +1 -1
- package/dest/log/pino-logger.js +165 -31
- package/dest/message/index.d.ts +1 -1
- package/dest/message/index.d.ts.map +1 -1
- package/dest/mutex/index.d.ts +1 -1
- package/dest/mutex/index.d.ts.map +1 -1
- package/dest/mutex/mutex_database.d.ts +1 -1
- package/dest/mutex/mutex_database.d.ts.map +1 -1
- package/dest/noir/index.d.ts +1 -1
- package/dest/noir/noir_package_config.d.ts +19 -104
- package/dest/noir/noir_package_config.d.ts.map +1 -1
- package/dest/noir/noir_package_config.js +1 -1
- package/dest/number/index.d.ts +3 -0
- package/dest/number/index.d.ts.map +1 -0
- package/dest/number/index.js +12 -0
- package/dest/profiler/index.d.ts +2 -0
- package/dest/profiler/index.d.ts.map +1 -0
- package/dest/profiler/index.js +1 -0
- package/dest/profiler/profiler.d.ts +8 -0
- package/dest/profiler/profiler.d.ts.map +1 -0
- package/dest/profiler/profiler.js +97 -0
- package/dest/promise/index.d.ts +1 -1
- package/dest/promise/running-promise.d.ts +2 -2
- package/dest/promise/running-promise.d.ts.map +1 -1
- package/dest/promise/running-promise.js +2 -2
- package/dest/promise/utils.d.ts +1 -1
- package/dest/queue/base_memory_queue.d.ts +2 -2
- package/dest/queue/base_memory_queue.d.ts.map +1 -1
- package/dest/queue/batch_queue.d.ts +2 -2
- package/dest/queue/batch_queue.d.ts.map +1 -1
- package/dest/queue/batch_queue.js +2 -1
- package/dest/queue/bounded_serial_queue.d.ts +1 -1
- package/dest/queue/bounded_serial_queue.d.ts.map +1 -1
- package/dest/queue/fifo_memory_queue.d.ts +1 -1
- package/dest/queue/fifo_memory_queue.d.ts.map +1 -1
- package/dest/queue/index.d.ts +1 -1
- package/dest/queue/priority_memory_queue.d.ts +1 -1
- package/dest/queue/priority_memory_queue.d.ts.map +1 -1
- package/dest/queue/priority_queue.d.ts +1 -1
- package/dest/queue/priority_queue.d.ts.map +1 -1
- package/dest/queue/semaphore.d.ts +5 -1
- package/dest/queue/semaphore.d.ts.map +1 -1
- package/dest/queue/serial_queue.d.ts +3 -3
- package/dest/queue/serial_queue.d.ts.map +1 -1
- package/dest/queue/serial_queue.js +7 -5
- package/dest/retry/index.d.ts +25 -3
- package/dest/retry/index.d.ts.map +1 -1
- package/dest/retry/index.js +34 -2
- package/dest/running-promise/index.d.ts +1 -1
- package/dest/schemas/api.d.ts +12 -10
- package/dest/schemas/api.d.ts.map +1 -1
- package/dest/schemas/api.js +7 -1
- package/dest/schemas/index.d.ts +1 -1
- package/dest/schemas/parse.d.ts +4 -4
- package/dest/schemas/parse.d.ts.map +1 -1
- package/dest/schemas/parse.js +7 -6
- package/dest/schemas/schemas.d.ts +30 -29
- package/dest/schemas/schemas.d.ts.map +1 -1
- package/dest/schemas/schemas.js +29 -11
- package/dest/schemas/types.d.ts +32 -2
- package/dest/schemas/types.d.ts.map +1 -1
- package/dest/schemas/types.js +25 -1
- package/dest/schemas/utils.d.ts +10 -16
- package/dest/schemas/utils.d.ts.map +1 -1
- package/dest/schemas/utils.js +17 -23
- package/dest/serialize/buffer_reader.d.ts +41 -6
- package/dest/serialize/buffer_reader.d.ts.map +1 -1
- package/dest/serialize/buffer_reader.js +70 -6
- package/dest/serialize/buffer_sink.d.ts +134 -0
- package/dest/serialize/buffer_sink.d.ts.map +1 -0
- package/dest/serialize/buffer_sink.js +297 -0
- package/dest/serialize/field_reader.d.ts +12 -3
- package/dest/serialize/field_reader.d.ts.map +1 -1
- package/dest/serialize/field_reader.js +19 -2
- package/dest/serialize/free_funcs.d.ts +25 -23
- package/dest/serialize/free_funcs.d.ts.map +1 -1
- package/dest/serialize/free_funcs.js +22 -28
- package/dest/serialize/index.d.ts +2 -1
- package/dest/serialize/index.d.ts.map +1 -1
- package/dest/serialize/index.js +1 -0
- package/dest/serialize/serialize.d.ts +24 -7
- package/dest/serialize/serialize.d.ts.map +1 -1
- package/dest/serialize/serialize.js +32 -1
- package/dest/serialize/type_registry.d.ts +1 -1
- package/dest/serialize/type_registry.d.ts.map +1 -1
- package/dest/serialize/types.d.ts +1 -1
- package/dest/sleep/index.d.ts +4 -1
- package/dest/sleep/index.d.ts.map +1 -1
- package/dest/sleep/index.js +14 -1
- package/dest/string/index.d.ts +8 -3
- package/dest/string/index.d.ts.map +1 -1
- package/dest/string/index.js +27 -1
- package/dest/testing/files/index.d.ts +2 -3
- package/dest/testing/files/index.d.ts.map +1 -1
- package/dest/testing/files/index.js +3 -3
- package/dest/testing/formatting.d.ts +4 -0
- package/dest/testing/formatting.d.ts.map +1 -0
- package/dest/testing/formatting.js +3 -0
- package/dest/testing/index.d.ts +2 -1
- package/dest/testing/index.d.ts.map +1 -1
- package/dest/testing/index.js +1 -0
- package/dest/testing/port_allocator.d.ts +1 -1
- package/dest/testing/snapshot_serializer.d.ts +1 -1
- package/dest/testing/test_data.d.ts +1 -1
- package/dest/timer/date.d.ts +28 -2
- package/dest/timer/date.d.ts.map +1 -1
- package/dest/timer/date.js +41 -3
- package/dest/timer/elapsed.d.ts +1 -1
- package/dest/timer/index.d.ts +2 -2
- package/dest/timer/index.d.ts.map +1 -1
- package/dest/timer/index.js +1 -1
- package/dest/timer/timeout.d.ts +21 -6
- package/dest/timer/timeout.d.ts.map +1 -1
- package/dest/timer/timeout.js +69 -22
- package/dest/timer/timer.d.ts +1 -1
- package/dest/timer/timer.d.ts.map +1 -1
- package/dest/transport/dispatch/create_dispatch_proxy.d.ts +11 -2
- package/dest/transport/dispatch/create_dispatch_proxy.d.ts.map +1 -1
- package/dest/transport/dispatch/messages.d.ts +1 -1
- package/dest/transport/index.d.ts +1 -3
- package/dest/transport/index.d.ts.map +1 -1
- package/dest/transport/index.js +0 -2
- package/dest/transport/interface/connector.d.ts +1 -1
- package/dest/transport/interface/connector.d.ts.map +1 -1
- package/dest/transport/interface/listener.d.ts +1 -2
- package/dest/transport/interface/listener.d.ts.map +1 -1
- package/dest/transport/interface/socket.d.ts +1 -1
- package/dest/transport/interface/socket.d.ts.map +1 -1
- package/dest/transport/interface/transferable.d.ts +1 -1
- package/dest/transport/node/index.d.ts +1 -1
- package/dest/transport/node/node_connector.d.ts +1 -2
- package/dest/transport/node/node_connector.d.ts.map +1 -1
- package/dest/transport/node/node_connector_socket.d.ts +1 -2
- package/dest/transport/node/node_connector_socket.d.ts.map +1 -1
- package/dest/transport/node/node_listener.d.ts +1 -2
- package/dest/transport/node/node_listener.d.ts.map +1 -1
- package/dest/transport/node/node_listener_socket.d.ts +1 -2
- package/dest/transport/node/node_listener_socket.d.ts.map +1 -1
- package/dest/transport/transport_client.d.ts +1 -2
- package/dest/transport/transport_client.d.ts.map +1 -1
- package/dest/transport/transport_client.js +2 -2
- package/dest/transport/transport_server.d.ts +1 -10
- package/dest/transport/transport_server.d.ts.map +1 -1
- package/dest/trees/balanced_merkle_tree_root.d.ts +16 -0
- package/dest/trees/balanced_merkle_tree_root.d.ts.map +1 -0
- package/dest/trees/balanced_merkle_tree_root.js +50 -0
- package/dest/trees/hasher.d.ts +8 -7
- package/dest/trees/hasher.d.ts.map +1 -1
- package/dest/trees/hasher.js +10 -5
- package/dest/trees/index.d.ts +5 -3
- package/dest/trees/index.d.ts.map +1 -1
- package/dest/trees/index.js +4 -2
- package/dest/trees/indexed_merkle_tree.d.ts +1 -3
- package/dest/trees/indexed_merkle_tree.d.ts.map +1 -1
- package/dest/trees/indexed_merkle_tree.js +1 -1
- package/dest/trees/indexed_merkle_tree_calculator.d.ts +2 -4
- package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -1
- package/dest/trees/indexed_merkle_tree_calculator.js +5 -1
- package/dest/trees/indexed_tree_leaf.d.ts +1 -3
- package/dest/trees/indexed_tree_leaf.d.ts.map +1 -1
- package/dest/trees/membership_witness.d.ts +10 -5
- package/dest/trees/membership_witness.d.ts.map +1 -1
- package/dest/trees/membership_witness.js +23 -1
- package/dest/trees/merkle_tree.d.ts +1 -3
- package/dest/trees/merkle_tree.d.ts.map +1 -1
- package/dest/trees/merkle_tree_calculator.d.ts +4 -4
- package/dest/trees/merkle_tree_calculator.d.ts.map +1 -1
- package/dest/trees/merkle_tree_calculator.js +1 -5
- package/dest/trees/sibling_path.d.ts +7 -41
- package/dest/trees/sibling_path.d.ts.map +1 -1
- package/dest/trees/sibling_path.js +11 -9
- package/dest/trees/unbalanced_merkle_tree_calculator.d.ts +48 -0
- package/dest/trees/unbalanced_merkle_tree_calculator.d.ts.map +1 -0
- package/dest/trees/unbalanced_merkle_tree_calculator.js +154 -0
- package/dest/trees/unbalanced_merkle_tree_root.d.ts +27 -0
- package/dest/trees/unbalanced_merkle_tree_root.d.ts.map +1 -0
- package/dest/trees/unbalanced_merkle_tree_root.js +83 -0
- package/dest/trees/unbalanced_tree_store.d.ts +6 -1
- package/dest/trees/unbalanced_tree_store.d.ts.map +1 -1
- package/dest/trees/unbalanced_tree_store.js +55 -1
- package/dest/types/index.d.ts +52 -3
- package/dest/types/index.d.ts.map +1 -1
- package/dest/types/index.js +21 -0
- package/dest/url/index.d.ts +1 -1
- package/dest/url/index.d.ts.map +1 -1
- package/dest/url/index.js +1 -1
- package/dest/validation/index.d.ts +1 -1
- package/package.json +84 -47
- package/src/array/array.ts +13 -16
- package/src/array/index.ts +1 -0
- package/src/array/sorted_array.ts +138 -0
- package/src/async-pool/index.ts +1 -0
- package/src/bigint/index.ts +20 -0
- package/src/bigint-buffer/index.ts +6 -1
- package/src/branded-types/block_number.ts +135 -0
- package/src/branded-types/buffer32_hash.ts +38 -0
- package/src/branded-types/checkpoint_number.ts +130 -0
- package/src/branded-types/epoch.ts +88 -0
- package/src/branded-types/index.ts +8 -0
- package/src/branded-types/index_within_checkpoint.ts +88 -0
- package/src/branded-types/slot.ts +93 -0
- package/src/branded-types/types.ts +2 -0
- package/src/buffer/buffer16.ts +136 -0
- package/src/buffer/buffer32.ts +47 -74
- package/src/buffer/index.ts +2 -0
- package/src/buffer/utils.ts +8 -0
- package/src/collection/array.ts +152 -4
- package/src/collection/index.ts +2 -0
- package/src/collection/lru_map.ts +143 -0
- package/src/collection/lru_set.ts +115 -0
- package/src/collection/object.ts +37 -0
- package/src/committable/committable.ts +1 -1
- package/src/config/env_var.ts +237 -63
- package/src/config/index.ts +265 -29
- package/src/config/network_config.ts +21 -0
- package/src/config/network_name.ts +28 -0
- package/src/config/parse-env.ts +4 -0
- package/src/config/secret_value.ts +49 -0
- package/src/crypto/aes128/index.ts +30 -12
- package/src/crypto/bls/bn254_keystore.ts +264 -0
- package/src/crypto/bls/index.ts +77 -0
- package/src/crypto/bn254/index.ts +64 -0
- package/src/crypto/ecdsa/index.ts +41 -23
- package/src/crypto/ecdsa/signature.ts +2 -2
- package/src/crypto/grumpkin/index.ts +38 -46
- package/src/crypto/keys/index.ts +6 -6
- package/src/crypto/pedersen/pedersen.wasm.ts +23 -19
- package/src/crypto/poseidon/index.ts +43 -37
- package/src/crypto/random/index.ts +2 -40
- package/src/crypto/random/randomness_singleton.ts +6 -4
- package/src/crypto/schnorr/index.ts +29 -24
- package/src/crypto/schnorr/signature.ts +18 -47
- package/src/crypto/secp256k1/index.ts +15 -11
- package/src/crypto/secp256k1-signer/utils.ts +152 -7
- package/src/crypto/sha256/index.ts +48 -1
- package/src/crypto/sha512/index.ts +1 -1
- package/src/crypto/signature/index.ts +1 -1
- package/src/crypto/sync/index.ts +1 -1
- package/src/crypto/sync/pedersen/index.ts +17 -16
- package/src/crypto/sync/poseidon/index.ts +23 -27
- package/src/curves/bls12/field.ts +456 -0
- package/src/curves/bls12/index.ts +2 -0
- package/src/curves/bls12/point.ts +450 -0
- package/src/{fields/fields.ts → curves/bn254/field.ts} +117 -91
- package/src/curves/bn254/index.ts +2 -0
- package/src/curves/bn254/point.ts +170 -0
- package/src/curves/grumpkin/index.ts +11 -0
- package/src/{fields → curves/grumpkin}/point.ts +47 -47
- package/src/eth-address/index.ts +35 -7
- package/src/eth-signature/eth_signature.ts +50 -22
- package/src/fifo/fifo_frame_reader.ts +113 -0
- package/src/fifo/index.ts +1 -0
- package/src/fifo_set/fifo_set.ts +52 -0
- package/src/fifo_set/index.ts +1 -0
- package/src/fs/index.ts +1 -0
- package/src/fs/try_rm_dir.ts +15 -0
- package/src/iterable/filter.ts +1 -1
- package/src/iterable/map.ts +1 -1
- package/src/iterator/filter.ts +11 -0
- package/src/iterator/index.ts +1 -0
- package/src/jest/env.mjs +52 -0
- package/src/jest/setup.mjs +31 -1
- package/src/jest/setupAfterEnv.mjs +3 -0
- package/src/json-rpc/client/fetch.ts +16 -34
- package/src/json-rpc/client/safe_json_rpc_client.ts +230 -15
- package/src/json-rpc/client/undici.ts +31 -18
- package/src/json-rpc/convert.ts +3 -12
- package/src/json-rpc/errors.ts +6 -0
- package/src/json-rpc/fixtures/class_a.ts +4 -1
- package/src/json-rpc/fixtures/class_b.ts +4 -1
- package/src/json-rpc/fixtures/test_state.ts +10 -10
- package/src/json-rpc/index.ts +2 -1
- package/src/json-rpc/server/api_key_auth.ts +63 -0
- package/src/json-rpc/server/index.ts +1 -0
- package/src/json-rpc/server/safe_json_rpc_server.ts +162 -51
- package/src/json-rpc/test/integration.ts +1 -1
- package/src/log/bigint-utils.ts +25 -0
- package/src/log/console.ts +4 -1
- package/src/log/gcloud-logger-config.ts +8 -7
- package/src/log/index.ts +4 -4
- package/src/log/libp2p_logger.ts +33 -7
- package/src/log/log-filters.ts +29 -11
- package/src/log/log_fn.ts +1 -1
- package/src/log/noir_debug_log_util.ts +21 -0
- package/src/log/pino-logger-server.ts +25 -0
- package/src/log/pino-logger.ts +193 -40
- package/src/message/index.ts +5 -1
- package/src/mutex/mutex_database.ts +2 -3
- package/src/noir/noir_package_config.ts +32 -20
- package/src/number/index.ts +14 -0
- package/src/profiler/index.ts +1 -0
- package/src/profiler/profiler.ts +125 -0
- package/src/promise/running-promise.ts +2 -2
- package/src/queue/base_memory_queue.ts +1 -1
- package/src/queue/batch_queue.ts +2 -1
- package/src/queue/bounded_serial_queue.ts +4 -1
- package/src/queue/semaphore.ts +5 -0
- package/src/queue/serial_queue.ts +5 -5
- package/src/retry/index.ts +58 -5
- package/src/schemas/api.ts +25 -25
- package/src/schemas/parse.ts +10 -7
- package/src/schemas/schemas.ts +45 -16
- package/src/schemas/types.ts +34 -1
- package/src/schemas/utils.ts +25 -46
- package/src/serialize/buffer_reader.ts +96 -12
- package/src/serialize/buffer_sink.ts +350 -0
- package/src/serialize/field_reader.ts +28 -4
- package/src/serialize/free_funcs.ts +26 -32
- package/src/serialize/index.ts +1 -0
- package/src/serialize/serialize.ts +35 -1
- package/src/sleep/index.ts +16 -1
- package/src/string/index.ts +36 -1
- package/src/testing/files/index.ts +7 -3
- package/src/testing/formatting.ts +3 -0
- package/src/testing/index.ts +1 -0
- package/src/timer/date.ts +61 -3
- package/src/timer/index.ts +1 -1
- package/src/timer/timeout.ts +85 -19
- package/src/transport/dispatch/create_dispatch_proxy.ts +11 -1
- package/src/transport/index.ts +0 -2
- package/src/transport/interface/connector.ts +0 -1
- package/src/transport/interface/listener.ts +2 -3
- package/src/transport/interface/socket.ts +2 -3
- package/src/transport/transport_client.ts +5 -6
- package/src/transport/transport_server.ts +4 -1
- package/src/trees/balanced_merkle_tree_root.ts +65 -0
- package/src/trees/hasher.ts +16 -4
- package/src/trees/index.ts +4 -2
- package/src/trees/indexed_merkle_tree.ts +6 -2
- package/src/trees/indexed_merkle_tree_calculator.ts +7 -3
- package/src/trees/membership_witness.ts +22 -1
- package/src/trees/merkle_tree.ts +4 -1
- package/src/trees/merkle_tree_calculator.ts +9 -10
- package/src/trees/sibling_path.ts +12 -7
- package/src/trees/unbalanced_merkle_tree_calculator.ts +176 -0
- package/src/trees/unbalanced_merkle_tree_root.ts +112 -0
- package/src/trees/unbalanced_tree_store.ts +62 -3
- package/src/types/index.ts +82 -4
- package/src/url/index.ts +0 -1
- package/dest/crypto/index.d.ts +0 -15
- package/dest/crypto/index.d.ts.map +0 -1
- package/dest/crypto/index.js +0 -14
- package/dest/crypto/pedersen/pedersen.elliptic.d.ts +0 -13
- package/dest/crypto/pedersen/pedersen.elliptic.d.ts.map +0 -1
- package/dest/crypto/pedersen/pedersen.elliptic.js +0 -582
- package/dest/crypto/serialize.d.ts +0 -53
- package/dest/crypto/serialize.d.ts.map +0 -1
- package/dest/crypto/serialize.js +0 -68
- package/dest/fields/coordinate.d.ts +0 -68
- package/dest/fields/coordinate.d.ts.map +0 -1
- package/dest/fields/coordinate.js +0 -96
- package/dest/fields/fields.d.ts +0 -176
- package/dest/fields/fields.d.ts.map +0 -1
- package/dest/fields/index.d.ts +0 -4
- package/dest/fields/index.d.ts.map +0 -1
- package/dest/fields/index.js +0 -3
- package/dest/fields/point.d.ts.map +0 -1
- package/dest/index.d.ts +0 -31
- package/dest/index.d.ts.map +0 -1
- package/dest/index.js +0 -31
- package/dest/json-rpc/server/telemetry.d.ts +0 -2
- package/dest/json-rpc/server/telemetry.d.ts.map +0 -1
- package/dest/json-rpc/server/telemetry.js +0 -0
- package/dest/log/debug.d.ts +0 -56
- package/dest/log/debug.d.ts.map +0 -1
- package/dest/log/debug.js +0 -75
- package/dest/log/log_history.d.ts +0 -31
- package/dest/log/log_history.d.ts.map +0 -1
- package/dest/log/log_history.js +0 -38
- package/dest/transport/browser/index.d.ts +0 -5
- package/dest/transport/browser/index.d.ts.map +0 -1
- package/dest/transport/browser/index.js +0 -4
- package/dest/transport/browser/message_port_socket.d.ts +0 -37
- package/dest/transport/browser/message_port_socket.d.ts.map +0 -1
- package/dest/transport/browser/message_port_socket.js +0 -42
- package/dest/transport/browser/shared_worker_connector.d.ts +0 -19
- package/dest/transport/browser/shared_worker_connector.d.ts.map +0 -1
- package/dest/transport/browser/shared_worker_connector.js +0 -19
- package/dest/transport/browser/shared_worker_listener.d.ts +0 -38
- package/dest/transport/browser/shared_worker_listener.d.ts.map +0 -1
- package/dest/transport/browser/shared_worker_listener.js +0 -33
- package/dest/transport/browser/worker_connector.d.ts +0 -26
- package/dest/transport/browser/worker_connector.d.ts.map +0 -1
- package/dest/transport/browser/worker_connector.js +0 -30
- package/dest/transport/browser/worker_listener.d.ts +0 -39
- package/dest/transport/browser/worker_listener.d.ts.map +0 -1
- package/dest/transport/browser/worker_listener.js +0 -35
- package/dest/transport/dispatch/create_dispatch_fn.d.ts +0 -25
- package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +0 -1
- package/dest/transport/dispatch/create_dispatch_fn.js +0 -17
- package/dest/trees/unbalanced_merkle_tree.d.ts +0 -17
- package/dest/trees/unbalanced_merkle_tree.d.ts.map +0 -1
- package/dest/trees/unbalanced_merkle_tree.js +0 -100
- package/dest/wasm/empty_wasi_sdk.d.ts +0 -130
- package/dest/wasm/empty_wasi_sdk.d.ts.map +0 -1
- package/dest/wasm/empty_wasi_sdk.js +0 -148
- package/dest/wasm/index.d.ts +0 -2
- package/dest/wasm/index.d.ts.map +0 -1
- package/dest/wasm/index.js +0 -1
- package/dest/wasm/wasm_module.d.ts +0 -136
- package/dest/wasm/wasm_module.d.ts.map +0 -1
- package/dest/wasm/wasm_module.js +0 -196
- package/dest/worker/browser/index.d.ts +0 -3
- package/dest/worker/browser/index.d.ts.map +0 -1
- package/dest/worker/browser/index.js +0 -2
- package/dest/worker/browser/start_web_module.d.ts +0 -7
- package/dest/worker/browser/start_web_module.d.ts.map +0 -1
- package/dest/worker/browser/start_web_module.js +0 -27
- package/dest/worker/browser/web_data_store.d.ts +0 -24
- package/dest/worker/browser/web_data_store.d.ts.map +0 -1
- package/dest/worker/browser/web_data_store.js +0 -29
- package/dest/worker/browser/web_worker.d.ts +0 -10
- package/dest/worker/browser/web_worker.d.ts.map +0 -1
- package/dest/worker/browser/web_worker.js +0 -25
- package/dest/worker/data_store.d.ts +0 -21
- package/dest/worker/data_store.d.ts.map +0 -1
- package/dest/worker/data_store.js +0 -3
- package/dest/worker/index.d.ts +0 -3
- package/dest/worker/index.d.ts.map +0 -1
- package/dest/worker/index.js +0 -1
- package/dest/worker/node/index.d.ts +0 -3
- package/dest/worker/node/index.d.ts.map +0 -1
- package/dest/worker/node/index.js +0 -2
- package/dest/worker/node/node_data_store.d.ts +0 -13
- package/dest/worker/node/node_data_store.d.ts.map +0 -1
- package/dest/worker/node/node_data_store.js +0 -20
- package/dest/worker/node/node_worker.d.ts +0 -6
- package/dest/worker/node/node_worker.d.ts.map +0 -1
- package/dest/worker/node/node_worker.js +0 -22
- package/dest/worker/node/start_node_module.d.ts +0 -7
- package/dest/worker/node/start_node_module.d.ts.map +0 -1
- package/dest/worker/node/start_node_module.js +0 -31
- package/dest/worker/wasm_worker.d.ts +0 -9
- package/dest/worker/wasm_worker.d.ts.map +0 -1
- package/dest/worker/wasm_worker.js +0 -3
- package/dest/worker/worker_pool.d.ts +0 -40
- package/dest/worker/worker_pool.d.ts.map +0 -1
- package/dest/worker/worker_pool.js +0 -51
- package/src/crypto/index.ts +0 -14
- package/src/crypto/pedersen/pedersen.elliptic.ts +0 -584
- package/src/crypto/serialize.ts +0 -85
- package/src/fields/coordinate.ts +0 -104
- package/src/fields/index.ts +0 -3
- package/src/index.ts +0 -31
- package/src/json-rpc/server/telemetry.ts +0 -0
- package/src/log/debug.ts +0 -104
- package/src/log/log_history.ts +0 -44
- package/src/transport/browser/index.ts +0 -4
- package/src/transport/browser/message_port_socket.ts +0 -48
- package/src/transport/browser/shared_worker_connector.ts +0 -21
- package/src/transport/browser/shared_worker_listener.ts +0 -53
- package/src/transport/browser/worker_connector.ts +0 -30
- package/src/transport/browser/worker_listener.ts +0 -54
- package/src/transport/dispatch/create_dispatch_fn.ts +0 -35
- package/src/trees/unbalanced_merkle_tree.ts +0 -103
- package/src/wasm/README.md +0 -6
- package/src/wasm/empty_wasi_sdk.ts +0 -166
- package/src/wasm/fixtures/gcd.wasm +0 -0
- package/src/wasm/fixtures/gcd.wat +0 -27
- package/src/wasm/index.ts +0 -1
- package/src/wasm/wasm_module.ts +0 -260
- package/src/worker/browser/index.ts +0 -2
- package/src/worker/browser/start_web_module.ts +0 -24
- package/src/worker/browser/web_data_store.ts +0 -38
- package/src/worker/browser/web_worker.ts +0 -25
- package/src/worker/data_store.ts +0 -19
- package/src/worker/index.ts +0 -2
- package/src/worker/node/index.ts +0 -2
- package/src/worker/node/node_data_store.ts +0 -27
- package/src/worker/node/node_worker.ts +0 -23
- package/src/worker/node/start_node_module.ts +0 -30
- package/src/worker/wasm_worker.ts +0 -7
- package/src/worker/worker_pool.ts +0 -73
package/src/timer/date.ts
CHANGED
|
@@ -5,15 +5,25 @@ export class DateProvider {
|
|
|
5
5
|
public now(): number {
|
|
6
6
|
return Date.now();
|
|
7
7
|
}
|
|
8
|
+
|
|
9
|
+
public nowInSeconds(): number {
|
|
10
|
+
return Math.floor(this.now() / 1000);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
public nowAsDate(): Date {
|
|
14
|
+
return new Date(this.now());
|
|
15
|
+
}
|
|
8
16
|
}
|
|
9
17
|
|
|
10
18
|
/** Returns current datetime and allows to override it. */
|
|
11
|
-
export class TestDateProvider
|
|
19
|
+
export class TestDateProvider extends DateProvider {
|
|
12
20
|
private offset = 0;
|
|
13
21
|
|
|
14
|
-
constructor(private readonly logger = createLogger('foundation:test-date-provider')) {
|
|
22
|
+
constructor(private readonly logger = createLogger('foundation:test-date-provider')) {
|
|
23
|
+
super();
|
|
24
|
+
}
|
|
15
25
|
|
|
16
|
-
public now(): number {
|
|
26
|
+
public override now(): number {
|
|
17
27
|
return Date.now() + this.offset;
|
|
18
28
|
}
|
|
19
29
|
|
|
@@ -21,4 +31,52 @@ export class TestDateProvider implements DateProvider {
|
|
|
21
31
|
this.offset = timeMs - Date.now();
|
|
22
32
|
this.logger.warn(`Time set to ${new Date(timeMs).toISOString()}`, { offset: this.offset, timeMs });
|
|
23
33
|
}
|
|
34
|
+
|
|
35
|
+
/** Resets the time back to real time (offset = 0). */
|
|
36
|
+
public reset() {
|
|
37
|
+
this.offset = 0;
|
|
38
|
+
this.logger.warn('Time reset to real time');
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** Advances the time by the given number of seconds. */
|
|
42
|
+
public advanceTime(seconds: number) {
|
|
43
|
+
this.offset += seconds * 1000;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* A date provider for tests that only advances time via explicit advanceTime() calls.
|
|
49
|
+
* Unlike TestDateProvider, this does NOT track real time progression - time is completely
|
|
50
|
+
* frozen until explicitly advanced. This eliminates flakiness from tests taking
|
|
51
|
+
* varying amounts of real time to execute.
|
|
52
|
+
*/
|
|
53
|
+
export class ManualDateProvider extends DateProvider {
|
|
54
|
+
private currentTimeMs: number;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* @param initialTimeMs - Initial time in milliseconds. Defaults to a round timestamp for easy visualization.
|
|
58
|
+
*/
|
|
59
|
+
constructor(initialTimeMs: number = Date.UTC(2025, 0, 1, 0, 0, 0)) {
|
|
60
|
+
super();
|
|
61
|
+
this.currentTimeMs = initialTimeMs;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
public override now(): number {
|
|
65
|
+
return this.currentTimeMs;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/** Sets the current time to the given timestamp in milliseconds. */
|
|
69
|
+
public setTime(timeMs: number) {
|
|
70
|
+
this.currentTimeMs = timeMs;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/** Advances the time by the given number of seconds. */
|
|
74
|
+
public advanceTime(seconds: number) {
|
|
75
|
+
this.currentTimeMs += seconds * 1000;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/** Advances the time by the given number of milliseconds. */
|
|
79
|
+
public advanceTimeMs(ms: number) {
|
|
80
|
+
this.currentTimeMs += ms;
|
|
81
|
+
}
|
|
24
82
|
}
|
package/src/timer/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export * from './date.js';
|
|
2
2
|
export { elapsed, elapsedSync } from './elapsed.js';
|
|
3
|
-
export { TimeoutTask, executeTimeout } from './timeout.js';
|
|
3
|
+
export { TimeoutTask, execWithSignal, executeTimeout, timeoutPromise } from './timeout.js';
|
|
4
4
|
export { Timer } from './timer.js';
|
package/src/timer/timeout.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TimeoutError } from '../error/index.js';
|
|
2
|
+
import { promiseWithResolvers } from '../promise/utils.js';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* TimeoutTask class creates an instance for managing and executing a given asynchronous function with a specified timeout duration.
|
|
@@ -8,15 +9,15 @@ import { TimeoutError } from '../error/index.js';
|
|
|
8
9
|
* @typeparam T - The return type of the asynchronous function to be executed.
|
|
9
10
|
*/
|
|
10
11
|
export class TimeoutTask<T> {
|
|
11
|
-
private interruptPromise!: Promise<any>;
|
|
12
|
-
private interrupt = () => {};
|
|
13
12
|
private totalTime = 0;
|
|
13
|
+
private timeoutPromise: Promise<never> | undefined;
|
|
14
14
|
|
|
15
|
-
constructor(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
constructor(
|
|
16
|
+
private fn: (signal: AbortSignal) => Promise<T>,
|
|
17
|
+
private timeout: number,
|
|
18
|
+
private errorFn: () => Error,
|
|
19
|
+
private onAbort?: () => void,
|
|
20
|
+
) {}
|
|
20
21
|
|
|
21
22
|
/**
|
|
22
23
|
* Executes the given function with a specified timeout.
|
|
@@ -27,15 +28,22 @@ export class TimeoutTask<T> {
|
|
|
27
28
|
* @throws An error with a message indicating the function was interrupted due to exceeding the specified timeout.
|
|
28
29
|
*/
|
|
29
30
|
public async exec() {
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
31
|
+
const signal = AbortSignal.timeout(this.timeout);
|
|
32
|
+
this.timeoutPromise = new Promise<never>((_, reject) => {
|
|
33
|
+
signal!.addEventListener(
|
|
34
|
+
'abort',
|
|
35
|
+
() => {
|
|
36
|
+
this.onAbort?.();
|
|
37
|
+
reject(this.errorFn());
|
|
38
|
+
},
|
|
39
|
+
{ once: true },
|
|
40
|
+
);
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
const start = Date.now();
|
|
44
|
+
const result = await Promise.race<T>([this.fn(signal), this.timeoutPromise]);
|
|
45
|
+
this.totalTime = Date.now() - start;
|
|
46
|
+
return result;
|
|
39
47
|
}
|
|
40
48
|
|
|
41
49
|
/**
|
|
@@ -46,7 +54,7 @@ export class TimeoutTask<T> {
|
|
|
46
54
|
* @returns The interrupt promise associated with the task.
|
|
47
55
|
*/
|
|
48
56
|
public getInterruptPromise() {
|
|
49
|
-
return this.
|
|
57
|
+
return this.timeoutPromise;
|
|
50
58
|
}
|
|
51
59
|
|
|
52
60
|
/**
|
|
@@ -60,11 +68,69 @@ export class TimeoutTask<T> {
|
|
|
60
68
|
}
|
|
61
69
|
}
|
|
62
70
|
|
|
63
|
-
|
|
71
|
+
/**
|
|
72
|
+
* Executes a function with a timeout.
|
|
73
|
+
* @param fn - The function to execute, accepts AbortSignal and returns a Promise.
|
|
74
|
+
* @param timeout - The maximum time in milliseconds to allow the function to run.
|
|
75
|
+
* @param errorOrFnName - Optional function name or a function that returns an Error to throw if the timeout is reached.
|
|
76
|
+
* @param onAbort - Optional callback to execute when the task is aborted.
|
|
77
|
+
*
|
|
78
|
+
* @returns A Promise that resolves with the result of the function fn if it completes within the timeout
|
|
79
|
+
*
|
|
80
|
+
* */
|
|
81
|
+
export async function executeTimeout<T>(
|
|
82
|
+
fn: (signal: AbortSignal) => Promise<T>,
|
|
83
|
+
timeout: number,
|
|
84
|
+
errorOrFnName?: string | (() => Error),
|
|
85
|
+
onAbort?: () => void,
|
|
86
|
+
) {
|
|
64
87
|
const errorFn =
|
|
65
88
|
typeof errorOrFnName === 'function'
|
|
66
89
|
? errorOrFnName
|
|
67
90
|
: () => new TimeoutError(`Timeout running ${errorOrFnName ?? 'function'} after ${timeout}ms.`);
|
|
68
|
-
const task = new TimeoutTask(fn, timeout, errorFn);
|
|
91
|
+
const task = new TimeoutTask(fn, timeout, errorFn, onAbort);
|
|
69
92
|
return await task.exec();
|
|
70
93
|
}
|
|
94
|
+
|
|
95
|
+
function defaultSignalError(signal: AbortSignal) {
|
|
96
|
+
if (signal.reason instanceof Error) {
|
|
97
|
+
return signal.reason;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return new Error(signal.reason ? String(signal.reason) : 'Operation aborted');
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/** Executes a function until it completes or the given signal aborts. */
|
|
104
|
+
export async function execWithSignal<T>(
|
|
105
|
+
fn: (signal: AbortSignal) => Promise<T>,
|
|
106
|
+
signal: AbortSignal,
|
|
107
|
+
errorFn: (signal: AbortSignal) => Error = defaultSignalError,
|
|
108
|
+
) {
|
|
109
|
+
if (signal.aborted) {
|
|
110
|
+
throw errorFn(signal);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
const abortPromise = promiseWithResolvers<never>();
|
|
114
|
+
const abortListener = () => abortPromise.reject(errorFn(signal));
|
|
115
|
+
signal.addEventListener('abort', abortListener, { once: true });
|
|
116
|
+
|
|
117
|
+
try {
|
|
118
|
+
return await Promise.race<T>([fn(signal), abortPromise.promise]);
|
|
119
|
+
} finally {
|
|
120
|
+
if (abortListener) {
|
|
121
|
+
signal.removeEventListener('abort', abortListener);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/** Returns a promise that rejects after the given timeout */
|
|
127
|
+
export function timeoutPromise(timeoutMs: number, errorMessage?: string) {
|
|
128
|
+
const promise = promiseWithResolvers<never>();
|
|
129
|
+
|
|
130
|
+
const timer = setTimeout(() => {
|
|
131
|
+
promise.reject(new TimeoutError(errorMessage ?? `Operation timed out after ${timeoutMs}ms`));
|
|
132
|
+
}, timeoutMs);
|
|
133
|
+
|
|
134
|
+
const cleanup = () => clearTimeout(timer);
|
|
135
|
+
return promise.promise.finally(cleanup);
|
|
136
|
+
}
|
|
@@ -2,7 +2,17 @@ import { EventEmitter } from 'events';
|
|
|
2
2
|
|
|
3
3
|
import { type TransferDescriptor, isTransferDescriptor } from '../interface/transferable.js';
|
|
4
4
|
import type { TransportClient } from '../transport_client.js';
|
|
5
|
-
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Represents a message object for dispatching function calls.
|
|
8
|
+
* Contains the function name ('fn') and an array of arguments ('args') required to call the target method.
|
|
9
|
+
*/
|
|
10
|
+
export interface DispatchMsg {
|
|
11
|
+
/** Name of the target method to be called. */
|
|
12
|
+
fn: string;
|
|
13
|
+
/** An array of arguments to be passed to the target method. */
|
|
14
|
+
args: any[];
|
|
15
|
+
}
|
|
6
16
|
|
|
7
17
|
/**
|
|
8
18
|
* FilterOutAttributes type filters out all non-method properties of an object, leaving only the attributes
|
package/src/transport/index.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export * from './dispatch/create_dispatch_fn.js';
|
|
2
1
|
export * from './dispatch/create_dispatch_proxy.js';
|
|
3
2
|
export * from './dispatch/messages.js';
|
|
4
3
|
export * from './interface/connector.js';
|
|
@@ -7,5 +6,4 @@ export * from './interface/socket.js';
|
|
|
7
6
|
export * from './interface/transferable.js';
|
|
8
7
|
export * from './transport_client.js';
|
|
9
8
|
export * from './transport_server.js';
|
|
10
|
-
export * from './browser/index.js';
|
|
11
9
|
export * from './node/index.js';
|
|
@@ -7,10 +7,9 @@ import type { Socket } from './socket.js';
|
|
|
7
7
|
* Possible implementations could include MessageChannels or WebSockets.
|
|
8
8
|
*/
|
|
9
9
|
export interface Listener extends EventEmitter {
|
|
10
|
-
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
11
10
|
open(): void;
|
|
12
|
-
|
|
11
|
+
|
|
13
12
|
close(): void;
|
|
14
|
-
|
|
13
|
+
|
|
15
14
|
on(name: 'new_socket', cb: (client: Socket) => void): this;
|
|
16
15
|
}
|
|
@@ -6,10 +6,9 @@
|
|
|
6
6
|
* If `registerHandler` callback receives `undefined` that signals the other end closed.
|
|
7
7
|
*/
|
|
8
8
|
export interface Socket {
|
|
9
|
-
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
10
9
|
send(msg: any, transfer?: Transferable[]): Promise<void>;
|
|
11
|
-
|
|
10
|
+
|
|
12
11
|
registerHandler(cb: (msg: any) => any): void;
|
|
13
|
-
|
|
12
|
+
|
|
14
13
|
close(): void;
|
|
15
14
|
}
|
|
@@ -18,9 +18,9 @@ interface PendingRequest {
|
|
|
18
18
|
* The unique message identifier used for tracking and matching request/response pairs.
|
|
19
19
|
*/
|
|
20
20
|
msgId: number;
|
|
21
|
-
|
|
21
|
+
|
|
22
22
|
resolve(data: any): void;
|
|
23
|
-
|
|
23
|
+
|
|
24
24
|
reject(error: Error): void;
|
|
25
25
|
}
|
|
26
26
|
|
|
@@ -30,9 +30,8 @@ interface PendingRequest {
|
|
|
30
30
|
* for efficient and concurrent communication with a corresponding TransportServer.
|
|
31
31
|
*/
|
|
32
32
|
export interface ITransportClient<Payload> extends EventEmitter {
|
|
33
|
-
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
34
33
|
on(name: 'event_msg', handler: (payload: Payload) => void): this;
|
|
35
|
-
|
|
34
|
+
|
|
36
35
|
emit(name: 'event_msg', payload: Payload): boolean;
|
|
37
36
|
}
|
|
38
37
|
|
|
@@ -92,7 +91,7 @@ export class TransportClient<Payload> extends EventEmitter {
|
|
|
92
91
|
}
|
|
93
92
|
const msgId = this.msgId++;
|
|
94
93
|
const msg = { msgId, payload };
|
|
95
|
-
log.
|
|
94
|
+
log.trace(format(`->`, msg));
|
|
96
95
|
return new Promise<any>((resolve, reject) => {
|
|
97
96
|
this.pendingRequests.push({ resolve, reject, msgId });
|
|
98
97
|
this.socket!.send(msg, transfer).catch(reject);
|
|
@@ -112,7 +111,7 @@ export class TransportClient<Payload> extends EventEmitter {
|
|
|
112
111
|
this.close();
|
|
113
112
|
return;
|
|
114
113
|
}
|
|
115
|
-
log.
|
|
114
|
+
log.trace(format(`<-`, msg));
|
|
116
115
|
if (isEventMessage(msg)) {
|
|
117
116
|
this.emit('event_msg', msg.payload);
|
|
118
117
|
return;
|
|
@@ -9,7 +9,10 @@ import { isTransferDescriptor } from './interface/transferable.js';
|
|
|
9
9
|
export class TransportServer<Payload> {
|
|
10
10
|
private sockets: Socket[] = [];
|
|
11
11
|
|
|
12
|
-
constructor(
|
|
12
|
+
constructor(
|
|
13
|
+
private listener: Listener,
|
|
14
|
+
private msgHandlerFn: (msg: Payload) => Promise<any>,
|
|
15
|
+
) {}
|
|
13
16
|
|
|
14
17
|
/**
|
|
15
18
|
* Starts the TransportServer, allowing it to accept new connections and handle incoming messages.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { shaMerkleHash } from './hasher.js';
|
|
2
|
+
|
|
3
|
+
export const computeBalancedShaRoot = (leaves: Buffer[]) => computeBalancedMerkleTreeRoot(leaves);
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Computes the Merkle root with the provided leaves **synchronously**.
|
|
7
|
+
* This method uses a synchronous hash function (defaults to `sha256Trunc`).
|
|
8
|
+
*
|
|
9
|
+
* @throws If the number of leaves is not a power of two.
|
|
10
|
+
*/
|
|
11
|
+
export function computeBalancedMerkleTreeRoot(leaves: Buffer[], hasher = shaMerkleHash): Buffer {
|
|
12
|
+
const height = getTreeHeight(leaves);
|
|
13
|
+
let nodes = leaves.slice();
|
|
14
|
+
|
|
15
|
+
for (let i = 0; i < height; ++i) {
|
|
16
|
+
let j = 0;
|
|
17
|
+
for (; j < nodes.length / 2; ++j) {
|
|
18
|
+
const l = nodes[j * 2];
|
|
19
|
+
const r = nodes[j * 2 + 1];
|
|
20
|
+
nodes[j] = hasher(l, r);
|
|
21
|
+
}
|
|
22
|
+
nodes = nodes.slice(0, j);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return nodes[0];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Computes the Merkle root with the provided leaves **asynchronously**.
|
|
30
|
+
* This method uses an asynchronous hash function (defaults to `poseidon2Hash`).
|
|
31
|
+
*
|
|
32
|
+
* @throws If the number of leaves is not a power of two.
|
|
33
|
+
*/
|
|
34
|
+
export async function computeBalancedMerkleTreeRootAsync(
|
|
35
|
+
leaves: Buffer[],
|
|
36
|
+
hasher: (left: Buffer, right: Buffer) => Promise<Buffer<ArrayBuffer>>,
|
|
37
|
+
): Promise<Buffer> {
|
|
38
|
+
const height = getTreeHeight(leaves);
|
|
39
|
+
let nodes = leaves.slice();
|
|
40
|
+
|
|
41
|
+
for (let i = 0; i < height; ++i) {
|
|
42
|
+
let j = 0;
|
|
43
|
+
for (; j < nodes.length / 2; ++j) {
|
|
44
|
+
const l = nodes[j * 2];
|
|
45
|
+
const r = nodes[j * 2 + 1];
|
|
46
|
+
nodes[j] = await hasher(l, r);
|
|
47
|
+
}
|
|
48
|
+
nodes = nodes.slice(0, j);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return nodes[0];
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function getTreeHeight(leaves: Buffer[]) {
|
|
55
|
+
if (leaves.length === 0) {
|
|
56
|
+
throw new Error('Cannot compute a Merkle root with no leaves');
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const height = Math.log2(leaves.length);
|
|
60
|
+
if (!Number.isInteger(height)) {
|
|
61
|
+
throw new Error('Cannot compute a Merkle root with a non-power-of-two number of leaves');
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return height;
|
|
65
|
+
}
|
package/src/trees/hasher.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { poseidon2HashWithSeparator } from '../crypto/poseidon/index.js';
|
|
2
|
+
import { sha256Trunc } from '../crypto/sha256/index.js';
|
|
3
|
+
|
|
1
4
|
/**
|
|
2
5
|
* Defines hasher interface used by Merkle trees.
|
|
3
6
|
*/
|
|
@@ -8,14 +11,14 @@ export interface Hasher {
|
|
|
8
11
|
* @param rhs - The second array.
|
|
9
12
|
* @returns The new 32-byte hash.
|
|
10
13
|
*/
|
|
11
|
-
hash(lhs: Uint8Array, rhs: Uint8Array): Buffer
|
|
14
|
+
hash(lhs: Uint8Array, rhs: Uint8Array): Buffer<ArrayBuffer>;
|
|
12
15
|
|
|
13
16
|
/**
|
|
14
17
|
* Hashes an array of buffers.
|
|
15
18
|
* @param inputs - The array of buffers to hash.
|
|
16
19
|
* @returns The resulting 32-byte hash.
|
|
17
20
|
*/
|
|
18
|
-
hashInputs(inputs: Buffer[]): Buffer
|
|
21
|
+
hashInputs(inputs: Buffer[]): Buffer<ArrayBuffer>;
|
|
19
22
|
}
|
|
20
23
|
|
|
21
24
|
/**
|
|
@@ -28,12 +31,21 @@ export interface AsyncHasher {
|
|
|
28
31
|
* @param rhs - The second array.
|
|
29
32
|
* @returns The new 32-byte hash.
|
|
30
33
|
*/
|
|
31
|
-
hash(lhs: Uint8Array, rhs: Uint8Array): Promise<Buffer
|
|
34
|
+
hash(lhs: Uint8Array, rhs: Uint8Array): Promise<Buffer<ArrayBuffer>>;
|
|
32
35
|
|
|
33
36
|
/**
|
|
34
37
|
* Hashes an array of buffers.
|
|
35
38
|
* @param inputs - The array of buffers to hash.
|
|
36
39
|
* @returns The resulting 32-byte hash.
|
|
37
40
|
*/
|
|
38
|
-
hashInputs(inputs: Buffer[]): Promise<Buffer
|
|
41
|
+
hashInputs(inputs: Buffer[]): Promise<Buffer<ArrayBuffer>>;
|
|
39
42
|
}
|
|
43
|
+
|
|
44
|
+
export const shaMerkleHash: Hasher['hash'] = (left: Buffer, right: Buffer) =>
|
|
45
|
+
sha256Trunc(Buffer.concat([left, right])) as Buffer<ArrayBuffer>;
|
|
46
|
+
|
|
47
|
+
/** Creates a poseidon2 merkle hasher with the given domain separator. */
|
|
48
|
+
export const makePoseidonMerkleHash =
|
|
49
|
+
(separator: number): AsyncHasher['hash'] =>
|
|
50
|
+
async (left: Buffer, right: Buffer) =>
|
|
51
|
+
(await poseidon2HashWithSeparator([left, right], separator)).toBuffer() as Buffer<ArrayBuffer>;
|
package/src/trees/index.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
export * from './
|
|
2
|
-
export * from './unbalanced_tree_store.js';
|
|
1
|
+
export * from './balanced_merkle_tree_root.js';
|
|
3
2
|
export * from './merkle_tree_calculator.js';
|
|
4
3
|
export * from './merkle_tree.js';
|
|
5
4
|
export * from './indexed_merkle_tree_calculator.js';
|
|
@@ -8,3 +7,6 @@ export * from './sibling_path.js';
|
|
|
8
7
|
export * from './membership_witness.js';
|
|
9
8
|
export * from './hasher.js';
|
|
10
9
|
export * from './indexed_tree_leaf.js';
|
|
10
|
+
export * from './unbalanced_merkle_tree_calculator.js';
|
|
11
|
+
export * from './unbalanced_merkle_tree_root.js';
|
|
12
|
+
export * from './unbalanced_tree_store.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Fr } from '../
|
|
1
|
+
import { Fr } from '../curves/bn254/index.js';
|
|
2
2
|
import { assertLength } from '../serialize/index.js';
|
|
3
3
|
import type { IndexedTreeLeafPreimage } from './indexed_tree_leaf.js';
|
|
4
4
|
import { MembershipWitness } from './membership_witness.js';
|
|
@@ -6,7 +6,11 @@ import { MerkleTree } from './merkle_tree.js';
|
|
|
6
6
|
|
|
7
7
|
/** A simple immutable indexed merkle tree container. Use a IndexedMerkleTreeCalculator to create a new instance from a set of leaves. */
|
|
8
8
|
export class IndexedMerkleTree<T extends IndexedTreeLeafPreimage, N extends number> extends MerkleTree {
|
|
9
|
-
constructor(
|
|
9
|
+
constructor(
|
|
10
|
+
height: N,
|
|
11
|
+
nodes: Buffer[],
|
|
12
|
+
public readonly leafPreimages: T[],
|
|
13
|
+
) {
|
|
10
14
|
super(height, nodes);
|
|
11
15
|
}
|
|
12
16
|
|
|
@@ -28,7 +28,7 @@ export class IndexedMerkleTreeCalculator<T extends IndexedTreeLeafPreimage, N ex
|
|
|
28
28
|
) {
|
|
29
29
|
const zeroHashes = [zeroLeaf];
|
|
30
30
|
for (let i = 0; i < height; i++) {
|
|
31
|
-
zeroHashes.push(await hasher.hash(zeroHashes[i], zeroHashes[i]));
|
|
31
|
+
zeroHashes.push((await hasher.hash(zeroHashes[i], zeroHashes[i])) as Buffer<ArrayBuffer>);
|
|
32
32
|
}
|
|
33
33
|
return new IndexedMerkleTreeCalculator(height, zeroHashes, hasher, factory);
|
|
34
34
|
}
|
|
@@ -40,7 +40,11 @@ export class IndexedMerkleTreeCalculator<T extends IndexedTreeLeafPreimage, N ex
|
|
|
40
40
|
}
|
|
41
41
|
const sorted = values
|
|
42
42
|
.map((v, i) => ({ value: v, index: i }))
|
|
43
|
-
.sort((a, b)
|
|
43
|
+
.sort((a, b): -1 | 0 | 1 => {
|
|
44
|
+
const aBigInt = toBigIntBE(a.value);
|
|
45
|
+
const bBigInt = toBigIntBE(b.value);
|
|
46
|
+
return aBigInt < bBigInt ? 1 : aBigInt > bBigInt ? -1 : 0;
|
|
47
|
+
});
|
|
44
48
|
const indexedLeaves = sorted.map((item, i) => ({
|
|
45
49
|
leaf: this.factory.fromBuffer(
|
|
46
50
|
Buffer.concat([
|
|
@@ -59,7 +63,7 @@ export class IndexedMerkleTreeCalculator<T extends IndexedTreeLeafPreimage, N ex
|
|
|
59
63
|
|
|
60
64
|
for (let i = 0; i < this.height; ++i) {
|
|
61
65
|
const numLeaves = 2 ** (this.height - i);
|
|
62
|
-
const newLeaves: Buffer[] = [];
|
|
66
|
+
const newLeaves: Buffer<ArrayBuffer>[] = [];
|
|
63
67
|
for (let j = 0; j < leaves.length / 2; ++j) {
|
|
64
68
|
const l = leaves[j * 2];
|
|
65
69
|
const r = leaves[j * 2 + 1] || this.zeroHashes[i];
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { assertMemberLength } from '../array/array.js';
|
|
2
2
|
import { toBigIntBE, toBufferBE } from '../bigint-buffer/index.js';
|
|
3
|
-
import { Fr } from '../
|
|
3
|
+
import { Fr } from '../curves/bn254/field.js';
|
|
4
|
+
import { schemas } from '../schemas/schemas.js';
|
|
4
5
|
import { BufferReader, type Tuple, serializeToBuffer } from '../serialize/index.js';
|
|
5
6
|
import type { SiblingPath } from './sibling_path.js';
|
|
6
7
|
|
|
@@ -29,6 +30,26 @@ export class MembershipWitness<N extends number> {
|
|
|
29
30
|
return serializeToBuffer(toBufferBE(this.leafIndex, 32), ...this.siblingPath);
|
|
30
31
|
}
|
|
31
32
|
|
|
33
|
+
toJSON() {
|
|
34
|
+
return this.toBuffer();
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
toFields(): Fr[] {
|
|
38
|
+
return [new Fr(this.leafIndex), ...this.siblingPath];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Returns a representation of the membership witness as expected by intrinsic Noir deserialization.
|
|
43
|
+
*/
|
|
44
|
+
public toNoirRepresentation(): (string | string[])[] {
|
|
45
|
+
// TODO(#12874): remove the stupid as string conversion by modifying ForeignCallOutput type in acvm.js
|
|
46
|
+
return [new Fr(this.leafIndex).toString() as string, this.siblingPath.map(fr => fr.toString()) as string[]];
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
static schemaFor<N extends number>(size: N) {
|
|
50
|
+
return schemas.Buffer.transform(b => MembershipWitness.fromBuffer(b, size));
|
|
51
|
+
}
|
|
52
|
+
|
|
32
53
|
/**
|
|
33
54
|
* Creates a random membership witness. Used for testing purposes.
|
|
34
55
|
* @param pathSize - Number of fields in the sibling path.
|
package/src/trees/merkle_tree.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
/** A simple immutable Merkle tree container. Use a MerkleTreeCalculator to create a new instance from a set of leaves. */
|
|
2
2
|
export class MerkleTree {
|
|
3
|
-
constructor(
|
|
3
|
+
constructor(
|
|
4
|
+
public readonly height: number,
|
|
5
|
+
public readonly nodes: Buffer[],
|
|
6
|
+
) {
|
|
4
7
|
const expectedNodeCount = 2 ** (height + 1) - 1;
|
|
5
8
|
if (nodes.length !== expectedNodeCount) {
|
|
6
9
|
throw new Error(`Invalid node count for Merkle tree: got ${nodes.length} but expected ${expectedNodeCount}`);
|
|
@@ -1,24 +1,23 @@
|
|
|
1
|
-
import { pedersenHash } from '@aztec/foundation/crypto';
|
|
2
|
-
|
|
3
|
-
import type { AsyncHasher } from './hasher.js';
|
|
4
1
|
import { MerkleTree } from './merkle_tree.js';
|
|
5
2
|
|
|
3
|
+
type MerkleHashFn = (left: Buffer, right: Buffer) => Promise<Buffer<ArrayBuffer>>;
|
|
4
|
+
|
|
6
5
|
/**
|
|
7
6
|
* Merkle tree calculator.
|
|
8
7
|
*/
|
|
9
8
|
export class MerkleTreeCalculator {
|
|
10
|
-
private constructor(
|
|
9
|
+
private constructor(
|
|
10
|
+
private height: number,
|
|
11
|
+
private zeroHashes: Buffer[],
|
|
12
|
+
private hasher: MerkleHashFn,
|
|
13
|
+
) {
|
|
11
14
|
this.hasher = hasher;
|
|
12
15
|
}
|
|
13
16
|
|
|
14
|
-
static async create(
|
|
15
|
-
height: number,
|
|
16
|
-
zeroLeaf = Buffer.alloc(32),
|
|
17
|
-
hasher = async (left: Buffer, right: Buffer) => (await pedersenHash([left, right])).toBuffer(),
|
|
18
|
-
) {
|
|
17
|
+
static async create(height: number, zeroLeaf: Buffer = Buffer.alloc(32), hasher: MerkleHashFn) {
|
|
19
18
|
const zeroHashes = [zeroLeaf];
|
|
20
19
|
for (let i = 0; i < height; i++) {
|
|
21
|
-
zeroHashes.push(await hasher(zeroHashes[i], zeroHashes[i]));
|
|
20
|
+
zeroHashes.push((await hasher(zeroHashes[i], zeroHashes[i])) as Buffer<ArrayBuffer>);
|
|
22
21
|
}
|
|
23
22
|
return new MerkleTreeCalculator(height, zeroHashes, hasher);
|
|
24
23
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
1
3
|
import { makeTuple } from '../array/array.js';
|
|
2
|
-
import {
|
|
3
|
-
import { Fr } from '../fields/index.js';
|
|
4
|
+
import { Fr } from '../curves/bn254/index.js';
|
|
4
5
|
import { schemas } from '../schemas/index.js';
|
|
5
6
|
import {
|
|
6
7
|
type Tuple,
|
|
@@ -43,10 +44,14 @@ export class SiblingPath<N extends number> {
|
|
|
43
44
|
}
|
|
44
45
|
|
|
45
46
|
static schemaFor<N extends number>(size: N) {
|
|
46
|
-
return schemas.Buffer.transform(b => SiblingPath.fromBuffer(b) as SiblingPath<N>).
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
return schemas.Buffer.transform(b => SiblingPath.fromBuffer(b) as SiblingPath<N>).superRefine((path, ctx) => {
|
|
48
|
+
if (path.pathSize !== size) {
|
|
49
|
+
ctx.addIssue({
|
|
50
|
+
code: z.ZodIssueCode.custom,
|
|
51
|
+
message: `Expected sibling path size ${size} but got ${path.pathSize}`,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
});
|
|
50
55
|
}
|
|
51
56
|
|
|
52
57
|
toJSON() {
|
|
@@ -172,7 +177,7 @@ export async function computeRootFromSiblingPath(
|
|
|
172
177
|
leaf: Buffer,
|
|
173
178
|
siblingPath: Buffer[],
|
|
174
179
|
index: number,
|
|
175
|
-
hasher
|
|
180
|
+
hasher: (left: Buffer, right: Buffer) => Promise<Buffer>,
|
|
176
181
|
) {
|
|
177
182
|
let result = leaf;
|
|
178
183
|
for (const sibling of siblingPath) {
|