@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
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
import type { Branded } from './types.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* A branded type representing a slot number.
|
|
7
|
+
* Slots are the fundamental time unit in the Aztec protocol, with multiple slots comprising an epoch.
|
|
8
|
+
*
|
|
9
|
+
* This is a nominal type backed by a number, but TypeScript will treat it as
|
|
10
|
+
* incompatible with plain numbers and other branded numeric types (like EpochNumber, BlockNumber, etc.).
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* const slot = SlotNumber(5);
|
|
15
|
+
* const plainNumber: number = slot; // OK - SlotNumber is assignable to number
|
|
16
|
+
* const slotFromNumber: SlotNumber = 5; // ERROR - number is not assignable to SlotNumber
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export type SlotNumber = Branded<number, 'SlotNumber'>;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Creates a SlotNumber from a number.
|
|
23
|
+
* @param value - The slot number (must be a non-negative integer)
|
|
24
|
+
* @returns The branded SlotNumber value
|
|
25
|
+
* @throws If the value is negative or not an integer
|
|
26
|
+
*/
|
|
27
|
+
export function SlotNumber(value: number): SlotNumber {
|
|
28
|
+
if (!Number.isInteger(value)) {
|
|
29
|
+
throw new Error(`SlotNumber must be an integer, got ${value}`);
|
|
30
|
+
}
|
|
31
|
+
if (value < 0) {
|
|
32
|
+
throw new Error(`SlotNumber must be non-negative, got ${value}`);
|
|
33
|
+
}
|
|
34
|
+
return value as SlotNumber;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Creates a SlotNumber from a bigint.
|
|
39
|
+
* @param value - The slot number as bigint (must be a non-negative integer within safe integer range)
|
|
40
|
+
* @returns The branded SlotNumber value
|
|
41
|
+
* @throws If the value is negative or exceeds Number.MAX_SAFE_INTEGER
|
|
42
|
+
*/
|
|
43
|
+
SlotNumber.fromBigInt = function (value: bigint): SlotNumber {
|
|
44
|
+
if (value < 0n) {
|
|
45
|
+
throw new Error(`SlotNumber must be non-negative, got ${value}`);
|
|
46
|
+
}
|
|
47
|
+
if (value > BigInt(Number.MAX_SAFE_INTEGER)) {
|
|
48
|
+
throw new Error(`SlotNumber ${value} exceeds MAX_SAFE_INTEGER`);
|
|
49
|
+
}
|
|
50
|
+
return Number(value) as SlotNumber;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Creates a SlotNumber from a string.
|
|
55
|
+
* @param value - The slot number as a string
|
|
56
|
+
* @returns The branded SlotNumber value
|
|
57
|
+
* @throws If the string cannot be parsed as a valid slot
|
|
58
|
+
*/
|
|
59
|
+
SlotNumber.fromString = function (value: string): SlotNumber {
|
|
60
|
+
const parsed = parseInt(value, 10);
|
|
61
|
+
if (isNaN(parsed)) {
|
|
62
|
+
throw new Error(`Cannot parse SlotNumber from string: ${value}`);
|
|
63
|
+
}
|
|
64
|
+
return SlotNumber(parsed);
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Type guard to check if a value is a valid SlotNumber.
|
|
69
|
+
* Note: At runtime, a SlotNumber is just a number, so this checks if the value
|
|
70
|
+
* is a non-negative integer.
|
|
71
|
+
*/
|
|
72
|
+
SlotNumber.isValid = function (value: unknown): value is SlotNumber {
|
|
73
|
+
return typeof value === 'number' && Number.isInteger(value) && value >= 0;
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
/** Increments a SlotNumber by a given value. */
|
|
77
|
+
SlotNumber.add = function (sn: SlotNumber, increment: number): SlotNumber {
|
|
78
|
+
return SlotNumber(sn + increment);
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* The zero slot value.
|
|
83
|
+
*/
|
|
84
|
+
SlotNumber.ZERO = SlotNumber(0);
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Zod schema for parsing and validating SlotNumber values.
|
|
88
|
+
* Accepts numbers, bigints, or strings and coerces them to SlotNumber.
|
|
89
|
+
*/
|
|
90
|
+
export const SlotNumberSchema = z
|
|
91
|
+
.union([z.number(), z.bigint(), z.string()])
|
|
92
|
+
.pipe(z.coerce.number<string | number | bigint>().int().min(0))
|
|
93
|
+
.transform(value => SlotNumber(value));
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
2
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
|
+
import { BufferReader, deserializeBigInt, serializeBigInt } from '@aztec/foundation/serialize';
|
|
4
|
+
|
|
5
|
+
import { inspect } from 'util';
|
|
6
|
+
|
|
7
|
+
import { bufferToHex } from '../string/index.js';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* A class representing a 16 byte Buffer.
|
|
11
|
+
*/
|
|
12
|
+
export class Buffer16 {
|
|
13
|
+
/** Branding for nominal typing. */
|
|
14
|
+
declare private readonly _branding: 'Buffer16';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* The size of the hash in bytes.
|
|
18
|
+
*/
|
|
19
|
+
public static SIZE = 16;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Buffer16 with value zero.
|
|
23
|
+
*/
|
|
24
|
+
public static ZERO = new Buffer16(Buffer.alloc(Buffer16.SIZE));
|
|
25
|
+
|
|
26
|
+
constructor(
|
|
27
|
+
/**
|
|
28
|
+
* The buffer containing the hash.
|
|
29
|
+
*/
|
|
30
|
+
public buffer: Buffer,
|
|
31
|
+
) {
|
|
32
|
+
if (buffer.length !== Buffer16.SIZE) {
|
|
33
|
+
throw new Error(`Expected buffer to have length ${Buffer16.SIZE} but was ${buffer.length}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Returns the raw buffer of the hash.
|
|
39
|
+
* @returns The buffer containing the hash.
|
|
40
|
+
*/
|
|
41
|
+
public toBuffer() {
|
|
42
|
+
return this.buffer;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Creates a Buffer16 from a buffer.
|
|
47
|
+
* @param buffer - The buffer to create from.
|
|
48
|
+
* @returns A new Buffer16 object.
|
|
49
|
+
*/
|
|
50
|
+
public static fromBuffer(buffer: Buffer | BufferReader) {
|
|
51
|
+
const reader = BufferReader.asReader(buffer);
|
|
52
|
+
return new Buffer16(reader.readBytes(Buffer16.SIZE));
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Checks if this hash and another hash are equal.
|
|
57
|
+
* @param hash - A hash to compare with.
|
|
58
|
+
* @returns True if the hashes are equal, false otherwise.
|
|
59
|
+
*/
|
|
60
|
+
public equals(hash: Buffer16): boolean {
|
|
61
|
+
return this.buffer.equals(hash.buffer);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Returns true if this hash is zero.
|
|
66
|
+
* @returns True if this hash is zero.
|
|
67
|
+
*/
|
|
68
|
+
public isZero(): boolean {
|
|
69
|
+
return this.buffer.equals(Buffer.alloc(16, 0));
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Convert this hash to a hex string.
|
|
74
|
+
* @returns The hex string.
|
|
75
|
+
*/
|
|
76
|
+
public toString() {
|
|
77
|
+
return bufferToHex(this.buffer);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
[inspect.custom]() {
|
|
81
|
+
return `Buffer16<${this.toString()}>`;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
toJSON() {
|
|
85
|
+
return this.toString();
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Convert this hash to a big int.
|
|
90
|
+
* @returns The big int.
|
|
91
|
+
*/
|
|
92
|
+
public toBigInt() {
|
|
93
|
+
return deserializeBigInt(this.buffer, 0, Buffer16.SIZE).elem;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Creates a Buffer16 from a bigint.
|
|
98
|
+
*/
|
|
99
|
+
public static fromBigInt(hash: bigint) {
|
|
100
|
+
return new Buffer16(serializeBigInt(hash, Buffer16.SIZE));
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
public static fromField(hash: Fr) {
|
|
104
|
+
return new Buffer16(serializeBigInt(hash.toBigInt()));
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Converts a hex string into a Buffer16 object.
|
|
109
|
+
*/
|
|
110
|
+
public static fromString(str: string): Buffer16 {
|
|
111
|
+
if (str.startsWith('0x')) {
|
|
112
|
+
str = str.slice(2);
|
|
113
|
+
}
|
|
114
|
+
if (str.length !== this.SIZE * 2) {
|
|
115
|
+
throw new Error(`Expected string to be ${this.SIZE * 2} characters long, but was ${str.length}`);
|
|
116
|
+
}
|
|
117
|
+
return new Buffer16(Buffer.from(str, 'hex'));
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Converts a number into a Buffer16 object.
|
|
122
|
+
* @param num - The number to convert.
|
|
123
|
+
* @returns A new Buffer16 object.
|
|
124
|
+
*/
|
|
125
|
+
public static fromNumber(num: number): Buffer16 {
|
|
126
|
+
return new Buffer16(serializeBigInt(BigInt(num), Buffer16.SIZE));
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Generates a random Buffer16.
|
|
131
|
+
* @returns A new Buffer16 object.
|
|
132
|
+
*/
|
|
133
|
+
public static random(): Buffer16 {
|
|
134
|
+
return new Buffer16(Buffer.from(randomBytes(Buffer16.SIZE)));
|
|
135
|
+
}
|
|
136
|
+
}
|
package/src/buffer/buffer32.ts
CHANGED
|
@@ -1,93 +1,78 @@
|
|
|
1
|
-
import { randomBytes } from '@aztec/foundation/crypto';
|
|
2
|
-
import type { Fr } from '@aztec/foundation/
|
|
1
|
+
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
2
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import { BufferReader, deserializeBigInt, serializeBigInt } from '@aztec/foundation/serialize';
|
|
4
4
|
|
|
5
|
+
import { inspect } from 'util';
|
|
6
|
+
|
|
5
7
|
import { bufferToHex } from '../string/index.js';
|
|
6
8
|
|
|
7
9
|
/**
|
|
8
|
-
*
|
|
10
|
+
* Abstract unbranded base class for 32-byte buffers.
|
|
11
|
+
* Extend this instead of Buffer32 when defining a branded subtype
|
|
12
|
+
* to avoid inheriting Buffer32's `_branding`.
|
|
9
13
|
*/
|
|
10
|
-
export class
|
|
11
|
-
/**
|
|
12
|
-
* The size of the hash in bytes.
|
|
13
|
-
*/
|
|
14
|
+
export abstract class BaseBuffer32 {
|
|
15
|
+
/** The size of the buffer in bytes. */
|
|
14
16
|
public static SIZE = 32;
|
|
15
17
|
|
|
16
|
-
/**
|
|
17
|
-
* Buffer32 with value zero.
|
|
18
|
-
*/
|
|
19
|
-
public static ZERO = new Buffer32(Buffer.alloc(Buffer32.SIZE));
|
|
20
|
-
|
|
21
18
|
constructor(
|
|
22
|
-
/**
|
|
23
|
-
* The buffer containing the hash.
|
|
24
|
-
*/
|
|
19
|
+
/** The buffer containing the data. */
|
|
25
20
|
public buffer: Buffer,
|
|
26
21
|
) {
|
|
27
|
-
if (buffer.length !==
|
|
28
|
-
throw new Error(`Expected buffer to have length ${
|
|
22
|
+
if (buffer.length !== BaseBuffer32.SIZE) {
|
|
23
|
+
throw new Error(`Expected buffer to have length ${BaseBuffer32.SIZE} but was ${buffer.length}`);
|
|
29
24
|
}
|
|
30
25
|
}
|
|
31
26
|
|
|
32
|
-
/**
|
|
33
|
-
* Returns the raw buffer of the hash.
|
|
34
|
-
* @returns The buffer containing the hash.
|
|
35
|
-
*/
|
|
27
|
+
/** Returns the raw buffer. */
|
|
36
28
|
public toBuffer() {
|
|
37
29
|
return this.buffer;
|
|
38
30
|
}
|
|
39
31
|
|
|
40
|
-
/**
|
|
41
|
-
|
|
42
|
-
* @param buffer - The buffer to create from.
|
|
43
|
-
* @returns A new Buffer32 object.
|
|
44
|
-
*/
|
|
45
|
-
public static fromBuffer(buffer: Buffer | BufferReader) {
|
|
46
|
-
const reader = BufferReader.asReader(buffer);
|
|
47
|
-
return new Buffer32(reader.readBytes(Buffer32.SIZE));
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Checks if this hash and another hash are equal.
|
|
52
|
-
* @param hash - A hash to compare with.
|
|
53
|
-
* @returns True if the hashes are equal, false otherwise.
|
|
54
|
-
*/
|
|
55
|
-
public equals(hash: Buffer32): boolean {
|
|
32
|
+
/** Checks if this and another buffer are equal. */
|
|
33
|
+
public equals(hash: BaseBuffer32): boolean {
|
|
56
34
|
return this.buffer.equals(hash.buffer);
|
|
57
35
|
}
|
|
58
36
|
|
|
59
|
-
/**
|
|
60
|
-
* Returns true if this hash is zero.
|
|
61
|
-
* @returns True if this hash is zero.
|
|
62
|
-
*/
|
|
37
|
+
/** Returns true if all bytes are zero. */
|
|
63
38
|
public isZero(): boolean {
|
|
64
39
|
return this.buffer.equals(Buffer.alloc(32, 0));
|
|
65
40
|
}
|
|
66
41
|
|
|
67
|
-
/**
|
|
68
|
-
* Convert this hash to a hex string.
|
|
69
|
-
* @returns The hex string.
|
|
70
|
-
*/
|
|
42
|
+
/** Convert to a hex string. */
|
|
71
43
|
public toString() {
|
|
72
44
|
return bufferToHex(this.buffer);
|
|
73
45
|
}
|
|
74
46
|
|
|
47
|
+
[inspect.custom]() {
|
|
48
|
+
return `Buffer32<${this.toString()}>`;
|
|
49
|
+
}
|
|
50
|
+
|
|
75
51
|
toJSON() {
|
|
76
52
|
return this.toString();
|
|
77
53
|
}
|
|
78
54
|
|
|
79
|
-
/**
|
|
80
|
-
* Convert this hash to a big int.
|
|
81
|
-
* @returns The big int.
|
|
82
|
-
*/
|
|
55
|
+
/** Convert to a big int. */
|
|
83
56
|
public toBigInt() {
|
|
84
|
-
return deserializeBigInt(this.buffer, 0,
|
|
57
|
+
return deserializeBigInt(this.buffer, 0, BaseBuffer32.SIZE).elem;
|
|
85
58
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/** A branded 32-byte buffer. */
|
|
62
|
+
export class Buffer32 extends BaseBuffer32 {
|
|
63
|
+
/** Branding for nominal typing. */
|
|
64
|
+
declare private readonly _branding: 'Buffer32';
|
|
65
|
+
|
|
66
|
+
/** Buffer32 with value zero. */
|
|
67
|
+
public static ZERO = new Buffer32(Buffer.alloc(Buffer32.SIZE));
|
|
68
|
+
|
|
69
|
+
/** Creates a Buffer32 from a buffer. */
|
|
70
|
+
public static fromBuffer(buffer: Buffer | BufferReader) {
|
|
71
|
+
const reader = BufferReader.asReader(buffer);
|
|
72
|
+
return new Buffer32(reader.readBytes(Buffer32.SIZE));
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/** Creates a Buffer32 from a bigint. */
|
|
91
76
|
public static fromBigInt(hash: bigint) {
|
|
92
77
|
return new Buffer32(serializeBigInt(hash, Buffer32.SIZE));
|
|
93
78
|
}
|
|
@@ -97,8 +82,7 @@ export class Buffer32 {
|
|
|
97
82
|
}
|
|
98
83
|
|
|
99
84
|
/**
|
|
100
|
-
* Converts
|
|
101
|
-
* Verifies the input is 28 bytes.
|
|
85
|
+
* Converts from a buffer of 28 bytes.
|
|
102
86
|
* @param buffer - The 28 byte buffer to construct from.
|
|
103
87
|
* @returns A Buffer32 created from the input buffer with 4 bytes 0 padding at the front.
|
|
104
88
|
*/
|
|
@@ -106,38 +90,27 @@ export class Buffer32 {
|
|
|
106
90
|
if (buffer.length != 28) {
|
|
107
91
|
throw new Error(`Expected Buffer32 input buffer to be 28 bytes`);
|
|
108
92
|
}
|
|
109
|
-
const padded = Buffer.concat([Buffer.alloc(
|
|
93
|
+
const padded = Buffer.concat([Buffer.alloc(Buffer32.SIZE - 28), buffer]);
|
|
110
94
|
return new Buffer32(padded);
|
|
111
95
|
}
|
|
112
96
|
|
|
113
|
-
/**
|
|
114
|
-
* Converts a string into a Buffer32 object.
|
|
115
|
-
* @param str - The TX hash in string format.
|
|
116
|
-
* @returns A new Buffer32 object.
|
|
117
|
-
*/
|
|
97
|
+
/** Converts a string into a Buffer32 object. */
|
|
118
98
|
public static fromString(str: string): Buffer32 {
|
|
119
99
|
if (str.startsWith('0x')) {
|
|
120
100
|
str = str.slice(2);
|
|
121
101
|
}
|
|
122
|
-
if (str.length !==
|
|
123
|
-
throw new Error(`Expected string to be
|
|
102
|
+
if (str.length !== Buffer32.SIZE * 2) {
|
|
103
|
+
throw new Error(`Expected string to be ${Buffer32.SIZE * 2} characters long, but was ${str.length}`);
|
|
124
104
|
}
|
|
125
105
|
return new Buffer32(Buffer.from(str, 'hex'));
|
|
126
106
|
}
|
|
127
107
|
|
|
128
|
-
/**
|
|
129
|
-
* Converts a number into a Buffer32 object.
|
|
130
|
-
* @param num - The number to convert.
|
|
131
|
-
* @returns A new Buffer32 object.
|
|
132
|
-
*/
|
|
108
|
+
/** Converts a number into a Buffer32 object. */
|
|
133
109
|
public static fromNumber(num: number): Buffer32 {
|
|
134
110
|
return new Buffer32(serializeBigInt(BigInt(num), Buffer32.SIZE));
|
|
135
111
|
}
|
|
136
112
|
|
|
137
|
-
/**
|
|
138
|
-
* Generates a random Buffer32.
|
|
139
|
-
* @returns A new Buffer32 object.
|
|
140
|
-
*/
|
|
113
|
+
/** Generates a random Buffer32. */
|
|
141
114
|
public static random(): Buffer32 {
|
|
142
115
|
return new Buffer32(Buffer.from(randomBytes(Buffer32.SIZE)));
|
|
143
116
|
}
|
package/src/buffer/index.ts
CHANGED
package/src/collection/array.ts
CHANGED
|
@@ -89,6 +89,17 @@ export async function timesAsync<T>(n: number, fn: (i: number) => Promise<T>): P
|
|
|
89
89
|
return results;
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
+
/**
|
|
93
|
+
* Filters an array with an async predicate. Fires all predicate promises in parallel.
|
|
94
|
+
* @param arr - The array to filter.
|
|
95
|
+
* @param fn - The async function to determine if an item should be included.
|
|
96
|
+
* @returns A promise that resolves to the filtered array.
|
|
97
|
+
*/
|
|
98
|
+
export async function filterAsync<T>(arr: T[], fn: (item: T) => Promise<boolean>): Promise<T[]> {
|
|
99
|
+
const results = await Promise.all(arr.map(fn));
|
|
100
|
+
return arr.filter((_, i) => results[i]);
|
|
101
|
+
}
|
|
102
|
+
|
|
92
103
|
/**
|
|
93
104
|
* Executes the given async function n times in parallel and returns the results in an array.
|
|
94
105
|
* @param n - How many times to repeat.
|
|
@@ -127,6 +138,26 @@ export function unique<T>(arr: T[]): T[] {
|
|
|
127
138
|
return [...new Set(arr)];
|
|
128
139
|
}
|
|
129
140
|
|
|
141
|
+
/**
|
|
142
|
+
* Removes duplicates from the given array using a key function. The first occurrence of each key is kept.
|
|
143
|
+
* @param arr - The array.
|
|
144
|
+
* @param keyFn - A function that returns a primitive key for each element. Elements with the same key are
|
|
145
|
+
* considered duplicates.
|
|
146
|
+
* @returns A new array.
|
|
147
|
+
*/
|
|
148
|
+
export function uniqueBy<T, K extends string | number | bigint>(arr: T[], keyFn: (item: T) => K): T[] {
|
|
149
|
+
const seen = new Set<K>();
|
|
150
|
+
const result: T[] = [];
|
|
151
|
+
for (const item of arr) {
|
|
152
|
+
const key = keyFn(item);
|
|
153
|
+
if (!seen.has(key)) {
|
|
154
|
+
seen.add(key);
|
|
155
|
+
result.push(item);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return result;
|
|
159
|
+
}
|
|
160
|
+
|
|
130
161
|
/**
|
|
131
162
|
* Removes all undefined elements from the array.
|
|
132
163
|
* @param arr - The array.
|
|
@@ -157,7 +188,7 @@ export function areArraysEqual<T>(a: T[], b: T[], eq: (a: T, b: T) => boolean =
|
|
|
157
188
|
* @param arr - The array.
|
|
158
189
|
* @param fn - The function to get the value to compare.
|
|
159
190
|
*/
|
|
160
|
-
export function maxBy<T>(arr: T[], fn: (x: T) => number): T | undefined {
|
|
191
|
+
export function maxBy<T>(arr: T[], fn: (x: T) => number | bigint): T | undefined {
|
|
161
192
|
return arr.reduce((max, x) => (fn(x) > fn(max) ? x : max), arr[0]);
|
|
162
193
|
}
|
|
163
194
|
|
|
@@ -167,13 +198,25 @@ export function sum(arr: number[]): number {
|
|
|
167
198
|
}
|
|
168
199
|
|
|
169
200
|
/** Computes the median of a numeric array. Returns undefined if array is empty. */
|
|
170
|
-
export function median(arr: number[])
|
|
201
|
+
export function median(arr: number[]): number | undefined;
|
|
202
|
+
/** Computes the median of a bigint array. Returns undefined if array is empty. */
|
|
203
|
+
export function median(arr: bigint[]): bigint | undefined;
|
|
204
|
+
export function median(arr: number[] | bigint[]): number | bigint | undefined {
|
|
171
205
|
if (arr.length === 0) {
|
|
172
206
|
return undefined;
|
|
173
207
|
}
|
|
174
|
-
|
|
208
|
+
|
|
209
|
+
// Handle number array
|
|
210
|
+
if (typeof arr[0] === 'number') {
|
|
211
|
+
const sorted = [...(arr as number[])].sort((a, b) => a - b);
|
|
212
|
+
const mid = Math.floor(sorted.length / 2);
|
|
213
|
+
return sorted.length % 2 !== 0 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// Handle bigint array
|
|
217
|
+
const sorted = [...(arr as bigint[])].sort((a, b) => (a < b ? -1 : a > b ? 1 : 0));
|
|
175
218
|
const mid = Math.floor(sorted.length / 2);
|
|
176
|
-
return sorted.length % 2 !== 0 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) /
|
|
219
|
+
return sorted.length % 2 !== 0 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2n;
|
|
177
220
|
}
|
|
178
221
|
|
|
179
222
|
/** Computes the mean of a numeric array. Returns undefined if the array is empty. */
|
|
@@ -201,3 +244,108 @@ export function stdDev(values: number[]) {
|
|
|
201
244
|
}
|
|
202
245
|
return Math.sqrt(variance(values)!);
|
|
203
246
|
}
|
|
247
|
+
|
|
248
|
+
/** Counts how many items from the beginning of the array match the given predicate. */
|
|
249
|
+
export function countWhile<T>(collection: T[], predicate: (x: T) => boolean): number {
|
|
250
|
+
let count = 0;
|
|
251
|
+
for (const item of collection) {
|
|
252
|
+
if (predicate(item)) {
|
|
253
|
+
count++;
|
|
254
|
+
} else {
|
|
255
|
+
break;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return count;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/** Splits the given iterable into chunks of the given size. Last chunk may be of smaller than the requested size. */
|
|
262
|
+
export function chunk<T>(items: T[], chunkSize: number): T[][] {
|
|
263
|
+
if (chunkSize <= 0) {
|
|
264
|
+
throw new Error('Chunk size must be greater than 0');
|
|
265
|
+
}
|
|
266
|
+
const chunks: T[][] = [];
|
|
267
|
+
for (let i = 0; i < items.length; i += chunkSize) {
|
|
268
|
+
chunks.push(items.slice(i, i + chunkSize));
|
|
269
|
+
}
|
|
270
|
+
return chunks;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* Splits the given array into chunks of the given size, wrapping around to the beginning
|
|
275
|
+
* if the last chunk would be smaller than the requested size.
|
|
276
|
+
* Returns empty array for empty input. Returns single chunk with all items if chunkSize <= 0.
|
|
277
|
+
*/
|
|
278
|
+
export function chunkWrapAround<T>(items: T[], chunkSize: number): T[][] {
|
|
279
|
+
if (items.length === 0) {
|
|
280
|
+
return [];
|
|
281
|
+
}
|
|
282
|
+
if (chunkSize <= 0 || items.length <= chunkSize) {
|
|
283
|
+
return [items];
|
|
284
|
+
}
|
|
285
|
+
const remainder = items.length % chunkSize;
|
|
286
|
+
if (remainder === 0) {
|
|
287
|
+
return chunk(items, chunkSize);
|
|
288
|
+
}
|
|
289
|
+
const wrapAroundCount = chunkSize - remainder;
|
|
290
|
+
const wrappedItems = [...items, ...items.slice(0, wrapAroundCount)];
|
|
291
|
+
return chunk(wrappedItems, chunkSize);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
const UNINITIALIZED = Symbol('uninitialized');
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* Splits the given iterable into chunks based on the key returned by the given function.
|
|
298
|
+
* Items must be contiguous to be included in the same chunk.
|
|
299
|
+
*/
|
|
300
|
+
export function chunkBy<T, U>(items: T[], fn: (item: T) => U): T[][] {
|
|
301
|
+
const chunks: T[][] = [];
|
|
302
|
+
let currentChunk: T[] = [];
|
|
303
|
+
let currentKey: U | typeof UNINITIALIZED = UNINITIALIZED;
|
|
304
|
+
|
|
305
|
+
for (const item of items) {
|
|
306
|
+
const key = fn(item);
|
|
307
|
+
if (currentKey === UNINITIALIZED || key !== currentKey) {
|
|
308
|
+
if (currentChunk.length > 0) {
|
|
309
|
+
chunks.push(currentChunk);
|
|
310
|
+
}
|
|
311
|
+
currentChunk = [item];
|
|
312
|
+
currentKey = key;
|
|
313
|
+
} else {
|
|
314
|
+
currentChunk.push(item);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
if (currentChunk.length > 0) {
|
|
319
|
+
chunks.push(currentChunk);
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
return chunks;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
/** Partitions the given iterable into two arrays based on the predicate. */
|
|
326
|
+
export function partition<T>(items: T[], predicate: (item: T) => boolean): [T[], T[]] {
|
|
327
|
+
const pass: T[] = [];
|
|
328
|
+
const fail: T[] = [];
|
|
329
|
+
for (const item of items) {
|
|
330
|
+
if (predicate(item)) {
|
|
331
|
+
pass.push(item);
|
|
332
|
+
} else {
|
|
333
|
+
fail.push(item);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
return [pass, fail];
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
/** Partitions the given iterable into two arrays based on the predicate. */
|
|
340
|
+
export async function partitionAsync<T>(items: T[], predicate: (item: T) => Promise<boolean>): Promise<[T[], T[]]> {
|
|
341
|
+
const pass: T[] = [];
|
|
342
|
+
const fail: T[] = [];
|
|
343
|
+
for (const item of items) {
|
|
344
|
+
if (await predicate(item)) {
|
|
345
|
+
pass.push(item);
|
|
346
|
+
} else {
|
|
347
|
+
fail.push(item);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
return [pass, fail];
|
|
351
|
+
}
|
package/src/collection/index.ts
CHANGED