@aztec-labs/foundation 6.0.0-nightly.20260829
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dest/array/array.d.ts +68 -0
- package/dest/array/array.d.ts.map +1 -0
- package/dest/array/array.js +100 -0
- package/dest/array/index.d.ts +3 -0
- package/dest/array/index.d.ts.map +1 -0
- package/dest/array/index.js +2 -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 +13 -0
- package/dest/async-map/index.d.ts.map +1 -0
- package/dest/async-map/index.js +17 -0
- package/dest/async-pool/index.d.ts +3 -0
- package/dest/async-pool/index.d.ts.map +1 -0
- package/dest/async-pool/index.js +48 -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 +40 -0
- package/dest/bigint-buffer/index.d.ts.map +1 -0
- package/dest/bigint-buffer/index.js +81 -0
- 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 +54 -0
- package/dest/buffer/buffer32.d.ts.map +1 -0
- package/dest/buffer/buffer32.js +83 -0
- package/dest/buffer/index.d.ts +4 -0
- package/dest/buffer/index.d.ts.map +1 -0
- package/dest/buffer/index.js +3 -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 +135 -0
- package/dest/collection/array.d.ts.map +1 -0
- package/dest/collection/array.js +302 -0
- package/dest/collection/index.d.ts +5 -0
- package/dest/collection/index.d.ts.map +1 -0
- package/dest/collection/index.js +4 -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 +30 -0
- package/dest/collection/object.d.ts.map +1 -0
- package/dest/collection/object.js +57 -0
- package/dest/committable/committable.d.ts +28 -0
- package/dest/committable/committable.d.ts.map +1 -0
- package/dest/committable/committable.js +36 -0
- package/dest/committable/index.d.ts +2 -0
- package/dest/committable/index.d.ts.map +1 -0
- package/dest/committable/index.js +1 -0
- package/dest/config/env_var.d.ts +2 -0
- package/dest/config/env_var.d.ts.map +1 -0
- package/dest/config/env_var.js +1 -0
- package/dest/config/index.d.ts +154 -0
- package/dest/config/index.d.ts.map +1 -0
- package/dest/config/index.js +272 -0
- 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 +33 -0
- package/dest/crypto/aes128/index.d.ts.map +1 -0
- package/dest/crypto/aes128/index.js +71 -0
- 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 +206 -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 +39 -0
- package/dest/crypto/ecdsa/index.d.ts.map +1 -0
- package/dest/crypto/ecdsa/index.js +102 -0
- package/dest/crypto/ecdsa/signature.d.ts +69 -0
- package/dest/crypto/ecdsa/signature.d.ts.map +1 -0
- package/dest/crypto/ecdsa/signature.js +92 -0
- package/dest/crypto/grumpkin/index.d.ts +42 -0
- package/dest/crypto/grumpkin/index.d.ts.map +1 -0
- package/dest/crypto/grumpkin/index.js +160 -0
- package/dest/crypto/keccak/index.d.ts +26 -0
- package/dest/crypto/keccak/index.d.ts.map +1 -0
- package/dest/crypto/keccak/index.js +248 -0
- package/dest/crypto/keys/index.d.ts +4 -0
- package/dest/crypto/keys/index.d.ts.map +1 -0
- package/dest/crypto/keys/index.js +34 -0
- package/dest/crypto/pedersen/index.d.ts +2 -0
- package/dest/crypto/pedersen/index.d.ts.map +1 -0
- package/dest/crypto/pedersen/index.js +1 -0
- package/dest/crypto/pedersen/pedersen.noble.d.ts +9 -0
- package/dest/crypto/pedersen/pedersen.noble.d.ts.map +1 -0
- package/dest/crypto/pedersen/pedersen.noble.js +558 -0
- package/dest/crypto/pedersen/pedersen.wasm.d.ts +19 -0
- package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -0
- package/dest/crypto/pedersen/pedersen.wasm.js +51 -0
- package/dest/crypto/poseidon/index.d.ts +23 -0
- package/dest/crypto/poseidon/index.d.ts.map +1 -0
- package/dest/crypto/poseidon/index.js +71 -0
- package/dest/crypto/random/index.d.ts +23 -0
- package/dest/crypto/random/index.d.ts.map +1 -0
- package/dest/crypto/random/index.js +38 -0
- package/dest/crypto/random/randomness_singleton.d.ts +24 -0
- package/dest/crypto/random/randomness_singleton.d.ts.map +1 -0
- package/dest/crypto/random/randomness_singleton.js +55 -0
- package/dest/crypto/schnorr/index.d.ts +32 -0
- package/dest/crypto/schnorr/index.d.ts.map +1 -0
- package/dest/crypto/schnorr/index.js +60 -0
- package/dest/crypto/schnorr/signature.d.ts +48 -0
- package/dest/crypto/schnorr/signature.d.ts.map +1 -0
- package/dest/crypto/schnorr/signature.js +77 -0
- package/dest/crypto/secp256k1/index.d.ts +30 -0
- package/dest/crypto/secp256k1/index.d.ts.map +1 -0
- package/dest/crypto/secp256k1/index.js +121 -0
- package/dest/crypto/secp256k1-signer/index.d.ts +3 -0
- package/dest/crypto/secp256k1-signer/index.d.ts.map +1 -0
- package/dest/crypto/secp256k1-signer/index.js +2 -0
- package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts +24 -0
- package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts.map +1 -0
- package/dest/crypto/secp256k1-signer/secp256k1_signer.js +30 -0
- package/dest/crypto/secp256k1-signer/utils.d.ts +102 -0
- package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -0
- package/dest/crypto/secp256k1-signer/utils.js +196 -0
- package/dest/crypto/sha256/index.d.ts +37 -0
- package/dest/crypto/sha256/index.d.ts.map +1 -0
- package/dest/crypto/sha256/index.js +208 -0
- package/dest/crypto/sha512/index.d.ts +9 -0
- package/dest/crypto/sha512/index.d.ts.map +1 -0
- package/dest/crypto/sha512/index.js +12 -0
- package/dest/crypto/signature/index.d.ts +17 -0
- package/dest/crypto/signature/index.d.ts.map +1 -0
- package/dest/crypto/signature/index.js +3 -0
- package/dest/crypto/sync/index.d.ts +3 -0
- package/dest/crypto/sync/index.d.ts.map +1 -0
- package/dest/crypto/sync/index.js +4 -0
- package/dest/crypto/sync/pedersen/index.d.ts +19 -0
- package/dest/crypto/sync/pedersen/index.d.ts.map +1 -0
- package/dest/crypto/sync/pedersen/index.js +45 -0
- package/dest/crypto/sync/poseidon/index.d.ts +23 -0
- package/dest/crypto/sync/poseidon/index.d.ts.map +1 -0
- package/dest/crypto/sync/poseidon/index.js +60 -0
- 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/curves/bn254/field.js +420 -0
- 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/curves/grumpkin/point.d.ts +168 -0
- package/dest/curves/grumpkin/point.d.ts.map +1 -0
- package/dest/curves/grumpkin/point.js +263 -0
- package/dest/decorators/index.d.ts +2 -0
- package/dest/decorators/index.d.ts.map +1 -0
- package/dest/decorators/index.js +1 -0
- package/dest/decorators/memoize.d.ts +2 -0
- package/dest/decorators/memoize.d.ts.map +1 -0
- package/dest/decorators/memoize.js +11 -0
- package/dest/error/index.d.ts +21 -0
- package/dest/error/index.d.ts.map +1 -0
- package/dest/error/index.js +17 -0
- package/dest/eth-address/index.d.ts +143 -0
- package/dest/eth-address/index.d.ts.map +1 -0
- package/dest/eth-address/index.js +224 -0
- package/dest/eth-signature/eth_signature.d.ts +65 -0
- package/dest/eth-signature/eth_signature.d.ts.map +1 -0
- package/dest/eth-signature/eth_signature.js +110 -0
- package/dest/eth-signature/index.d.ts +2 -0
- package/dest/eth-signature/index.d.ts.map +1 -0
- package/dest/eth-signature/index.js +1 -0
- 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 +3 -0
- package/dest/fs/index.d.ts.map +1 -0
- package/dest/fs/index.js +2 -0
- package/dest/fs/run_in_dir.d.ts +2 -0
- package/dest/fs/run_in_dir.d.ts.map +1 -0
- package/dest/fs/run_in_dir.js +31 -0
- 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 +9 -0
- package/dest/iterable/all.d.ts.map +1 -0
- package/dest/iterable/all.js +18 -0
- package/dest/iterable/filter.d.ts +10 -0
- package/dest/iterable/filter.d.ts.map +1 -0
- package/dest/iterable/filter.js +48 -0
- package/dest/iterable/first.d.ts +8 -0
- package/dest/iterable/first.d.ts.map +1 -0
- package/dest/iterable/first.js +11 -0
- package/dest/iterable/index.d.ts +9 -0
- package/dest/iterable/index.d.ts.map +1 -0
- package/dest/iterable/index.js +8 -0
- package/dest/iterable/isAsyncIt.d.ts +7 -0
- package/dest/iterable/isAsyncIt.d.ts.map +1 -0
- package/dest/iterable/isAsyncIt.js +7 -0
- package/dest/iterable/map.d.ts +12 -0
- package/dest/iterable/map.d.ts.map +1 -0
- package/dest/iterable/map.js +36 -0
- package/dest/iterable/peek.d.ts +19 -0
- package/dest/iterable/peek.d.ts.map +1 -0
- package/dest/iterable/peek.js +33 -0
- package/dest/iterable/sort.d.ts +14 -0
- package/dest/iterable/sort.d.ts.map +1 -0
- package/dest/iterable/sort.js +15 -0
- package/dest/iterable/take.d.ts +10 -0
- package/dest/iterable/take.d.ts.map +1 -0
- package/dest/iterable/take.js +32 -0
- package/dest/iterable/toArray.d.ts +2 -0
- package/dest/iterable/toArray.d.ts.map +1 -0
- package/dest/iterable/toArray.js +7 -0
- 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 +34 -0
- package/dest/jest/setupAfterEnv.js +3 -0
- package/dest/json-rpc/client/fetch.d.ts +37 -0
- package/dest/json-rpc/client/fetch.d.ts.map +1 -0
- package/dest/json-rpc/client/fetch.js +67 -0
- package/dest/json-rpc/client/index.d.ts +3 -0
- package/dest/json-rpc/client/index.d.ts.map +1 -0
- package/dest/json-rpc/client/index.js +2 -0
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts +33 -0
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -0
- package/dest/json-rpc/client/safe_json_rpc_client.js +218 -0
- package/dest/json-rpc/client/undici.d.ts +16 -0
- package/dest/json-rpc/client/undici.d.ts.map +1 -0
- package/dest/json-rpc/client/undici.js +112 -0
- package/dest/json-rpc/convert.d.ts +20 -0
- package/dest/json-rpc/convert.d.ts.map +1 -0
- package/dest/json-rpc/convert.js +40 -0
- 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 +13 -0
- package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -0
- package/dest/json-rpc/fixtures/class_a.js +20 -0
- package/dest/json-rpc/fixtures/class_b.d.ts +13 -0
- package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -0
- package/dest/json-rpc/fixtures/class_b.js +20 -0
- package/dest/json-rpc/fixtures/test_state.d.ts +85 -0
- package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -0
- package/dest/json-rpc/fixtures/test_state.js +171 -0
- package/dest/json-rpc/index.d.ts +3 -0
- package/dest/json-rpc/index.d.ts.map +1 -0
- package/dest/json-rpc/index.js +2 -0
- package/dest/json-rpc/js_utils.d.ts +13 -0
- package/dest/json-rpc/js_utils.d.ts.map +1 -0
- package/dest/json-rpc/js_utils.js +16 -0
- 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 +3 -0
- package/dest/json-rpc/server/index.d.ts.map +1 -0
- package/dest/json-rpc/server/index.js +2 -0
- package/dest/json-rpc/server/safe_json_rpc_server.d.ts +177 -0
- package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -0
- package/dest/json-rpc/server/safe_json_rpc_server.js +570 -0
- package/dest/json-rpc/test/index.d.ts +2 -0
- package/dest/json-rpc/test/index.d.ts.map +1 -0
- package/dest/json-rpc/test/index.js +1 -0
- package/dest/json-rpc/test/integration.d.ts +14 -0
- package/dest/json-rpc/test/integration.d.ts.map +1 -0
- package/dest/json-rpc/test/integration.js +21 -0
- package/dest/log/aws-logger-config.d.ts +8 -0
- package/dest/log/aws-logger-config.d.ts.map +1 -0
- package/dest/log/aws-logger-config.js +55 -0
- 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 +11 -0
- package/dest/log/console.d.ts.map +1 -0
- package/dest/log/console.js +36 -0
- package/dest/log/gcloud-logger-config.d.ts +13 -0
- package/dest/log/gcloud-logger-config.d.ts.map +1 -0
- package/dest/log/gcloud-logger-config.js +61 -0
- package/dest/log/index.d.ts +7 -0
- package/dest/log/index.d.ts.map +1 -0
- package/dest/log/index.js +6 -0
- package/dest/log/libp2p_logger.d.ts +10 -0
- package/dest/log/libp2p_logger.d.ts.map +1 -0
- package/dest/log/libp2p_logger.js +76 -0
- package/dest/log/log-filters.d.ts +20 -0
- package/dest/log/log-filters.d.ts.map +1 -0
- package/dest/log/log-filters.js +73 -0
- package/dest/log/log-levels.d.ts +3 -0
- package/dest/log/log-levels.d.ts.map +1 -0
- package/dest/log/log-levels.js +10 -0
- package/dest/log/log_fn.d.ts +7 -0
- package/dest/log/log_fn.d.ts.map +1 -0
- package/dest/log/log_fn.js +1 -0
- 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 +86 -0
- package/dest/log/pino-logger.d.ts.map +1 -0
- package/dest/log/pino-logger.js +347 -0
- package/dest/message/index.d.ts +32 -0
- package/dest/message/index.d.ts.map +1 -0
- package/dest/message/index.js +27 -0
- package/dest/mutex/index.d.ts +53 -0
- package/dest/mutex/index.d.ts.map +1 -0
- package/dest/mutex/index.js +78 -0
- package/dest/mutex/mutex_database.d.ts +10 -0
- package/dest/mutex/mutex_database.d.ts.map +1 -0
- package/dest/mutex/mutex_database.js +4 -0
- package/dest/noir/index.d.ts +2 -0
- package/dest/noir/index.d.ts.map +1 -0
- package/dest/noir/index.js +1 -0
- package/dest/noir/noir_package_config.d.ts +44 -0
- package/dest/noir/noir_package_config.d.ts.map +1 -0
- package/dest/noir/noir_package_config.js +36 -0
- 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 +3 -0
- package/dest/promise/index.d.ts.map +1 -0
- package/dest/promise/index.js +2 -0
- package/dest/promise/running-promise.d.ts +53 -0
- package/dest/promise/running-promise.d.ts.map +1 -0
- package/dest/promise/running-promise.js +122 -0
- package/dest/promise/utils.d.ts +25 -0
- package/dest/promise/utils.d.ts.map +1 -0
- package/dest/promise/utils.js +40 -0
- package/dest/queue/base_memory_queue.d.ts +65 -0
- package/dest/queue/base_memory_queue.d.ts.map +1 -0
- package/dest/queue/base_memory_queue.js +116 -0
- package/dest/queue/batch_queue.d.ts +47 -0
- package/dest/queue/batch_queue.d.ts.map +1 -0
- package/dest/queue/batch_queue.js +106 -0
- package/dest/queue/bounded_serial_queue.d.ts +56 -0
- package/dest/queue/bounded_serial_queue.d.ts.map +1 -0
- package/dest/queue/bounded_serial_queue.js +84 -0
- package/dest/queue/fifo_memory_queue.d.ts +21 -0
- package/dest/queue/fifo_memory_queue.d.ts.map +1 -0
- package/dest/queue/fifo_memory_queue.js +29 -0
- package/dest/queue/index.d.ts +7 -0
- package/dest/queue/index.d.ts.map +1 -0
- package/dest/queue/index.js +6 -0
- package/dest/queue/priority_memory_queue.d.ts +13 -0
- package/dest/queue/priority_memory_queue.d.ts.map +1 -0
- package/dest/queue/priority_memory_queue.js +16 -0
- package/dest/queue/priority_queue.d.ts +14 -0
- package/dest/queue/priority_queue.d.ts.map +1 -0
- package/dest/queue/priority_queue.js +29 -0
- package/dest/queue/semaphore.d.ts +27 -0
- package/dest/queue/semaphore.d.ts.map +1 -0
- package/dest/queue/semaphore.js +26 -0
- package/dest/queue/serial_queue.d.ts +49 -0
- package/dest/queue/serial_queue.d.ts.map +1 -0
- package/dest/queue/serial_queue.js +74 -0
- package/dest/retry/index.d.ts +83 -0
- package/dest/retry/index.d.ts.map +1 -0
- package/dest/retry/index.js +146 -0
- package/dest/running-promise/index.d.ts +2 -0
- package/dest/running-promise/index.d.ts.map +1 -0
- package/dest/running-promise/index.js +1 -0
- package/dest/schemas/api.d.ts +23 -0
- package/dest/schemas/api.d.ts.map +1 -0
- package/dest/schemas/api.js +9 -0
- package/dest/schemas/index.d.ts +6 -0
- package/dest/schemas/index.d.ts.map +1 -0
- package/dest/schemas/index.js +5 -0
- package/dest/schemas/parse.d.ts +9 -0
- package/dest/schemas/parse.d.ts.map +1 -0
- package/dest/schemas/parse.js +23 -0
- package/dest/schemas/schemas.d.ts +46 -0
- package/dest/schemas/schemas.d.ts.map +1 -0
- package/dest/schemas/schemas.js +56 -0
- package/dest/schemas/types.d.ts +33 -0
- package/dest/schemas/types.d.ts.map +1 -0
- package/dest/schemas/types.js +25 -0
- package/dest/schemas/utils.d.ts +47 -0
- package/dest/schemas/utils.d.ts.map +1 -0
- package/dest/schemas/utils.js +54 -0
- package/dest/serialize/buffer_reader.d.ts +274 -0
- package/dest/serialize/buffer_reader.d.ts.map +1 -0
- package/dest/serialize/buffer_reader.js +359 -0
- 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 +121 -0
- package/dest/serialize/field_reader.d.ts.map +1 -0
- package/dest/serialize/field_reader.js +164 -0
- package/dest/serialize/free_funcs.d.ts +107 -0
- package/dest/serialize/free_funcs.d.ts.map +1 -0
- package/dest/serialize/free_funcs.js +183 -0
- package/dest/serialize/index.d.ts +8 -0
- package/dest/serialize/index.d.ts.map +1 -0
- package/dest/serialize/index.js +7 -0
- package/dest/serialize/serialize.d.ts +168 -0
- package/dest/serialize/serialize.d.ts.map +1 -0
- package/dest/serialize/serialize.js +258 -0
- package/dest/serialize/type_registry.d.ts +23 -0
- package/dest/serialize/type_registry.d.ts.map +1 -0
- package/dest/serialize/type_registry.js +61 -0
- package/dest/serialize/types.d.ts +33 -0
- package/dest/serialize/types.d.ts.map +1 -0
- package/dest/serialize/types.js +21 -0
- package/dest/sleep/index.d.ts +54 -0
- package/dest/sleep/index.d.ts.map +1 -0
- package/dest/sleep/index.js +80 -0
- package/dest/string/index.d.ts +18 -0
- package/dest/string/index.d.ts.map +1 -0
- package/dest/string/index.js +62 -0
- package/dest/testing/files/index.d.ts +20 -0
- package/dest/testing/files/index.d.ts.map +1 -0
- package/dest/testing/files/index.js +59 -0
- 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 +5 -0
- package/dest/testing/index.d.ts.map +1 -0
- package/dest/testing/index.js +4 -0
- package/dest/testing/port_allocator.d.ts +10 -0
- package/dest/testing/port_allocator.d.ts.map +1 -0
- package/dest/testing/port_allocator.js +29 -0
- package/dest/testing/snapshot_serializer.d.ts +5 -0
- package/dest/testing/snapshot_serializer.d.ts.map +1 -0
- package/dest/testing/snapshot_serializer.js +32 -0
- package/dest/testing/test_data.d.ts +7 -0
- package/dest/testing/test_data.d.ts.map +1 -0
- package/dest/testing/test_data.js +29 -0
- package/dest/timer/date.d.ts +39 -0
- package/dest/timer/date.d.ts.map +1 -0
- package/dest/timer/date.js +62 -0
- package/dest/timer/elapsed.d.ts +13 -0
- package/dest/timer/elapsed.d.ts.map +1 -0
- package/dest/timer/elapsed.js +25 -0
- package/dest/timer/index.d.ts +5 -0
- package/dest/timer/index.d.ts.map +1 -0
- package/dest/timer/index.js +4 -0
- package/dest/timer/timeout.d.ts +56 -0
- package/dest/timer/timeout.d.ts.map +1 -0
- package/dest/timer/timeout.js +113 -0
- package/dest/timer/timer.d.ts +37 -0
- package/dest/timer/timer.d.ts.map +1 -0
- package/dest/timer/timer.js +40 -0
- package/dest/transport/dispatch/create_dispatch_proxy.d.ts +111 -0
- package/dest/transport/dispatch/create_dispatch_proxy.d.ts.map +1 -0
- package/dest/transport/dispatch/create_dispatch_proxy.js +59 -0
- package/dest/transport/dispatch/messages.d.ts +52 -0
- package/dest/transport/dispatch/messages.d.ts.map +1 -0
- package/dest/transport/dispatch/messages.js +13 -0
- package/dest/transport/index.d.ts +10 -0
- package/dest/transport/index.d.ts.map +1 -0
- package/dest/transport/index.js +9 -0
- package/dest/transport/interface/connector.d.ts +8 -0
- package/dest/transport/interface/connector.d.ts.map +1 -0
- package/dest/transport/interface/connector.js +3 -0
- package/dest/transport/interface/listener.d.ts +12 -0
- package/dest/transport/interface/listener.d.ts.map +1 -0
- package/dest/transport/interface/listener.js +4 -0
- package/dest/transport/interface/socket.d.ts +13 -0
- package/dest/transport/interface/socket.d.ts.map +1 -0
- package/dest/transport/interface/socket.js +7 -0
- package/dest/transport/interface/transferable.d.ts +68 -0
- package/dest/transport/interface/transferable.d.ts.map +1 -0
- package/dest/transport/interface/transferable.js +63 -0
- package/dest/transport/node/index.d.ts +3 -0
- package/dest/transport/node/index.d.ts.map +1 -0
- package/dest/transport/node/index.js +2 -0
- package/dest/transport/node/node_connector.d.ts +27 -0
- package/dest/transport/node/node_connector.d.ts.map +1 -0
- package/dest/transport/node/node_connector.js +26 -0
- package/dest/transport/node/node_connector_socket.d.ts +41 -0
- package/dest/transport/node/node_connector_socket.d.ts.map +1 -0
- package/dest/transport/node/node_connector_socket.js +44 -0
- package/dest/transport/node/node_listener.d.ts +25 -0
- package/dest/transport/node/node_listener.d.ts.map +1 -0
- package/dest/transport/node/node_listener.js +26 -0
- package/dest/transport/node/node_listener_socket.d.ts +36 -0
- package/dest/transport/node/node_listener_socket.d.ts.map +1 -0
- package/dest/transport/node/node_listener_socket.js +40 -0
- package/dest/transport/transport_client.d.ts +60 -0
- package/dest/transport/transport_client.d.ts.map +1 -0
- package/dest/transport/transport_client.js +96 -0
- package/dest/transport/transport_server.d.ts +47 -0
- package/dest/transport/transport_server.d.ts.map +1 -0
- package/dest/transport/transport_server.js +114 -0
- 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 +40 -0
- package/dest/trees/hasher.d.ts.map +1 -0
- package/dest/trees/hasher.js +10 -0
- package/dest/trees/index.d.ts +13 -0
- package/dest/trees/index.d.ts.map +1 -0
- package/dest/trees/index.js +12 -0
- package/dest/trees/indexed_merkle_tree.d.ts +11 -0
- package/dest/trees/indexed_merkle_tree.d.ts.map +1 -0
- package/dest/trees/indexed_merkle_tree.js +27 -0
- package/dest/trees/indexed_merkle_tree_calculator.d.ts +21 -0
- package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -0
- package/dest/trees/indexed_merkle_tree_calculator.js +87 -0
- package/dest/trees/indexed_tree_leaf.d.ts +55 -0
- package/dest/trees/indexed_tree_leaf.d.ts.map +1 -0
- package/dest/trees/indexed_tree_leaf.js +5 -0
- package/dest/trees/membership_witness.d.ts +63 -0
- package/dest/trees/membership_witness.d.ts.map +1 -0
- package/dest/trees/membership_witness.js +83 -0
- package/dest/trees/merkle_tree.d.ts +16 -0
- package/dest/trees/merkle_tree.d.ts.map +1 -0
- package/dest/trees/merkle_tree.js +58 -0
- package/dest/trees/merkle_tree_calculator.d.ts +16 -0
- package/dest/trees/merkle_tree_calculator.d.ts.map +1 -0
- package/dest/trees/merkle_tree_calculator.js +57 -0
- package/dest/trees/sibling_path.d.ts +96 -0
- package/dest/trees/sibling_path.d.ts.map +1 -0
- package/dest/trees/sibling_path.js +139 -0
- 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 +24 -0
- package/dest/trees/unbalanced_tree_store.d.ts.map +1 -0
- package/dest/trees/unbalanced_tree_store.js +148 -0
- package/dest/types/index.d.ts +68 -0
- package/dest/types/index.d.ts.map +1 -0
- package/dest/types/index.js +24 -0
- package/dest/url/index.d.ts +9 -0
- package/dest/url/index.d.ts.map +1 -0
- package/dest/url/index.js +62 -0
- package/dest/validation/index.d.ts +9 -0
- package/dest/validation/index.d.ts.map +1 -0
- package/dest/validation/index.js +15 -0
- package/package.json +213 -0
- package/src/array/array.ts +147 -0
- package/src/array/index.ts +2 -0
- package/src/array/sorted_array.ts +138 -0
- package/src/async-map/index.ts +18 -0
- package/src/async-pool/index.ts +51 -0
- package/src/bigint/index.ts +20 -0
- package/src/bigint-buffer/index.ts +92 -0
- 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 +135 -0
- package/src/buffer/buffer32.ts +116 -0
- package/src/buffer/index.ts +3 -0
- package/src/buffer/utils.ts +8 -0
- package/src/collection/array.ts +351 -0
- package/src/collection/index.ts +4 -0
- package/src/collection/lru_map.ts +143 -0
- package/src/collection/lru_set.ts +115 -0
- package/src/collection/object.ts +89 -0
- package/src/committable/committable.ts +46 -0
- package/src/committable/index.ts +1 -0
- package/src/config/env_var.ts +412 -0
- package/src/config/index.ts +419 -0
- 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 +77 -0
- package/src/crypto/bls/bn254_keystore.ts +276 -0
- package/src/crypto/bls/index.ts +76 -0
- package/src/crypto/bn254/index.ts +64 -0
- package/src/crypto/ecdsa/index.ts +88 -0
- package/src/crypto/ecdsa/signature.ts +100 -0
- package/src/crypto/grumpkin/index.ts +90 -0
- package/src/crypto/keccak/index.ts +283 -0
- package/src/crypto/keys/index.ts +26 -0
- package/src/crypto/pedersen/index.ts +1 -0
- package/src/crypto/pedersen/pedersen.noble.ts +573 -0
- package/src/crypto/pedersen/pedersen.wasm.ts +52 -0
- package/src/crypto/poseidon/index.ts +83 -0
- package/src/crypto/random/index.ts +47 -0
- package/src/crypto/random/randomness_singleton.ts +64 -0
- package/src/crypto/schnorr/index.ts +61 -0
- package/src/crypto/schnorr/signature.ts +87 -0
- package/src/crypto/secp256k1/index.ts +61 -0
- package/src/crypto/secp256k1-signer/index.ts +2 -0
- package/src/crypto/secp256k1-signer/secp256k1_signer.ts +38 -0
- package/src/crypto/secp256k1-signer/utils.ts +244 -0
- package/src/crypto/sha256/index.ts +194 -0
- package/src/crypto/sha512/index.ts +16 -0
- package/src/crypto/signature/index.ts +17 -0
- package/src/crypto/sync/index.ts +6 -0
- package/src/crypto/sync/pedersen/index.ts +46 -0
- package/src/crypto/sync/poseidon/index.ts +72 -0
- 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/curves/bn254/field.ts +531 -0
- 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/curves/grumpkin/point.ts +300 -0
- package/src/decorators/index.ts +1 -0
- package/src/decorators/memoize.ts +11 -0
- package/src/error/index.ts +22 -0
- package/src/eth-address/index.ts +269 -0
- package/src/eth-signature/eth_signature.ts +155 -0
- package/src/eth-signature/index.ts +1 -0
- 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 +2 -0
- package/src/fs/run_in_dir.ts +33 -0
- package/src/fs/try_rm_dir.ts +15 -0
- package/src/iterable/all.ts +32 -0
- package/src/iterable/filter.ts +77 -0
- package/src/iterable/first.ts +14 -0
- package/src/iterable/index.ts +8 -0
- package/src/iterable/isAsyncIt.ts +8 -0
- package/src/iterable/map.ts +66 -0
- package/src/iterable/peek.ts +58 -0
- package/src/iterable/sort.ts +39 -0
- package/src/iterable/take.ts +54 -0
- package/src/iterable/toArray.ts +9 -0
- 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 +38 -0
- package/src/jest/setupAfterEnv.mjs +3 -0
- package/src/json-rpc/README.md +55 -0
- package/src/json-rpc/client/fetch.ts +98 -0
- package/src/json-rpc/client/index.ts +2 -0
- package/src/json-rpc/client/safe_json_rpc_client.ts +283 -0
- package/src/json-rpc/client/undici.ts +128 -0
- package/src/json-rpc/convert.ts +52 -0
- package/src/json-rpc/errors.ts +6 -0
- package/src/json-rpc/fixtures/class_a.ts +18 -0
- package/src/json-rpc/fixtures/class_b.ts +18 -0
- package/src/json-rpc/fixtures/test_state.ts +143 -0
- package/src/json-rpc/index.ts +2 -0
- package/src/json-rpc/js_utils.ts +21 -0
- package/src/json-rpc/server/api_key_auth.ts +63 -0
- package/src/json-rpc/server/index.ts +2 -0
- package/src/json-rpc/server/safe_json_rpc_server.ts +626 -0
- package/src/json-rpc/test/index.ts +1 -0
- package/src/json-rpc/test/integration.ts +35 -0
- package/src/log/aws-logger-config.ts +32 -0
- package/src/log/bigint-utils.ts +25 -0
- package/src/log/console.ts +42 -0
- package/src/log/gcloud-logger-config.ts +72 -0
- package/src/log/index.ts +6 -0
- package/src/log/libp2p_logger.ts +93 -0
- package/src/log/log-filters.ts +81 -0
- package/src/log/log-levels.ts +3 -0
- package/src/log/log_fn.ts +5 -0
- 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 +406 -0
- package/src/message/index.ts +47 -0
- package/src/mutex/index.ts +84 -0
- package/src/mutex/mutex_database.ts +11 -0
- package/src/noir/index.ts +1 -0
- package/src/noir/noir_package_config.ts +66 -0
- package/src/number/index.ts +14 -0
- package/src/profiler/index.ts +1 -0
- package/src/profiler/profiler.ts +125 -0
- package/src/promise/index.ts +2 -0
- package/src/promise/running-promise.ts +138 -0
- package/src/promise/utils.ts +60 -0
- package/src/queue/base_memory_queue.ts +138 -0
- package/src/queue/batch_queue.ts +121 -0
- package/src/queue/bounded_serial_queue.ts +103 -0
- package/src/queue/fifo_memory_queue.ts +39 -0
- package/src/queue/index.ts +6 -0
- package/src/queue/priority_memory_queue.ts +20 -0
- package/src/queue/priority_queue.ts +34 -0
- package/src/queue/semaphore.ts +38 -0
- package/src/queue/serial_queue.ts +86 -0
- package/src/retry/index.ts +185 -0
- package/src/running-promise/index.ts +1 -0
- package/src/schemas/api.ts +47 -0
- package/src/schemas/index.ts +5 -0
- package/src/schemas/parse.ts +32 -0
- package/src/schemas/schemas.ts +93 -0
- package/src/schemas/types.ts +36 -0
- package/src/schemas/utils.ts +91 -0
- package/src/serialize/buffer_reader.ts +472 -0
- package/src/serialize/buffer_sink.ts +350 -0
- package/src/serialize/field_reader.ts +208 -0
- package/src/serialize/free_funcs.ts +198 -0
- package/src/serialize/index.ts +7 -0
- package/src/serialize/serialize.ts +320 -0
- package/src/serialize/type_registry.ts +75 -0
- package/src/serialize/types.ts +40 -0
- package/src/sleep/index.ts +90 -0
- package/src/string/index.ts +80 -0
- package/src/testing/files/index.ts +74 -0
- package/src/testing/formatting.ts +3 -0
- package/src/testing/index.ts +4 -0
- package/src/testing/port_allocator.ts +31 -0
- package/src/testing/snapshot_serializer.ts +33 -0
- package/src/testing/test_data.ts +36 -0
- package/src/timer/date.ts +82 -0
- package/src/timer/elapsed.ts +23 -0
- package/src/timer/index.ts +4 -0
- package/src/timer/timeout.ts +136 -0
- package/src/timer/timer.ts +48 -0
- package/src/transport/dispatch/create_dispatch_proxy.ts +151 -0
- package/src/transport/dispatch/messages.ts +58 -0
- package/src/transport/index.ts +9 -0
- package/src/transport/interface/connector.ts +8 -0
- package/src/transport/interface/listener.ts +15 -0
- package/src/transport/interface/socket.ts +14 -0
- package/src/transport/interface/transferable.ts +125 -0
- package/src/transport/node/index.ts +2 -0
- package/src/transport/node/node_connector.ts +30 -0
- package/src/transport/node/node_connector_socket.ts +52 -0
- package/src/transport/node/node_listener.ts +34 -0
- package/src/transport/node/node_listener_socket.ts +48 -0
- package/src/transport/transport_client.ts +130 -0
- package/src/transport/transport_server.ts +111 -0
- package/src/trees/balanced_merkle_tree_root.ts +65 -0
- package/src/trees/hasher.ts +51 -0
- package/src/trees/index.ts +12 -0
- package/src/trees/indexed_merkle_tree.ts +40 -0
- package/src/trees/indexed_merkle_tree_calculator.ts +98 -0
- package/src/trees/indexed_tree_leaf.ts +56 -0
- package/src/trees/membership_witness.ts +112 -0
- package/src/trees/merkle_tree.ts +75 -0
- package/src/trees/merkle_tree_calculator.ts +66 -0
- package/src/trees/sibling_path.ts +177 -0
- 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 +161 -0
- package/src/types/index.ts +103 -0
- package/src/url/index.ts +72 -0
- package/src/validation/index.ts +18 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { type ZodObject, type ZodRawShape, type ZodType, type ZodTypeAny, z } from 'zod';
|
|
2
|
+
|
|
3
|
+
import { pick } from '../collection/object.js';
|
|
4
|
+
import { isHex, withoutHexPrefix } from '../string/index.js';
|
|
5
|
+
import type { ZodFor } from './types.js';
|
|
6
|
+
|
|
7
|
+
export const hexSchema = z.string().refine(isHex, 'Not a valid hex string').transform(withoutHexPrefix);
|
|
8
|
+
|
|
9
|
+
// Copied from zod internals, which was copied from https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript
|
|
10
|
+
const base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;
|
|
11
|
+
|
|
12
|
+
/** Schema for a buffer represented as a base64 string or a Buffer object. */
|
|
13
|
+
export const bufferSchema: ZodFor<Buffer> = z.union([
|
|
14
|
+
// Serialization from base64 string.
|
|
15
|
+
z
|
|
16
|
+
.string()
|
|
17
|
+
// We only test the str for base64 if it's shorter than 1024 bytes, otherwise we've run into maximum
|
|
18
|
+
// stack size exceeded errors when trying to validate excessively long strings (such as contract bytecode).
|
|
19
|
+
.refine(str => str.length > 1024 || base64Regex.test(str), 'Not a valid base64 string')
|
|
20
|
+
.transform(data => Buffer.from(data, 'base64')),
|
|
21
|
+
// Serialization from Buffer-annotated object.
|
|
22
|
+
z
|
|
23
|
+
.object({
|
|
24
|
+
type: z.literal('Buffer'),
|
|
25
|
+
data: z.array(z.number().int().min(0).max(255)),
|
|
26
|
+
})
|
|
27
|
+
.transform(({ data }) => Buffer.from(data)),
|
|
28
|
+
// Serialization from Buffer
|
|
29
|
+
z.instanceof(Buffer),
|
|
30
|
+
]);
|
|
31
|
+
|
|
32
|
+
export type ZodNullableOptional<T extends ZodTypeAny> = ZodType<z.output<T> | undefined, z.input<T> | null | undefined>;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Declares a parameter as optional. Use this over z.optional in order to accept nulls as undefineds.
|
|
36
|
+
* This is required as JSON does not have an undefined type, and null is used to represent it, so we
|
|
37
|
+
* need to convert nulls to undefineds as we parse.
|
|
38
|
+
*/
|
|
39
|
+
export function optional<T extends ZodTypeAny>(schema: T) {
|
|
40
|
+
return schema.nullish().transform(value => value ?? undefined);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
type ToJsonIs<T, TRet> = T extends { toJSON(): TRet } ? T : never;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Creates a schema that accepts a hex string and uses it to hydrate an instance.
|
|
47
|
+
* @param klazz - Class that implements either fromString or fromBuffer.
|
|
48
|
+
* @returns A schema for the class.
|
|
49
|
+
*/
|
|
50
|
+
export function hexSchemaFor<TClass extends { fromString(str: string): any } | { fromBuffer(buf: Buffer): any }>(
|
|
51
|
+
klazz: TClass,
|
|
52
|
+
refinement?: (input: string) => boolean,
|
|
53
|
+
): ZodType<
|
|
54
|
+
TClass extends { fromString(str: string): infer TInstance } | { fromBuffer(buf: Buffer): infer TInstance }
|
|
55
|
+
? ToJsonIs<TInstance, string>
|
|
56
|
+
: never,
|
|
57
|
+
string
|
|
58
|
+
> {
|
|
59
|
+
const stringSchema = refinement ? z.string().refine(refinement, `Not a valid instance`) : z.string();
|
|
60
|
+
const hexSchema = stringSchema.refine(isHex, 'Not a valid hex string');
|
|
61
|
+
return 'fromString' in klazz
|
|
62
|
+
? hexSchema.transform(klazz.fromString.bind(klazz))
|
|
63
|
+
: hexSchema.transform(str => Buffer.from(withoutHexPrefix(str), 'hex')).transform(klazz.fromBuffer.bind(klazz));
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Creates a schema that accepts a base64 string and uses it to hydrate an instance.
|
|
68
|
+
* @param klazz - Class that implements fromBuffer.
|
|
69
|
+
* @returns A schema for the class.
|
|
70
|
+
*/
|
|
71
|
+
export function bufferSchemaFor<TClass extends { fromBuffer(buf: Buffer): any }>(
|
|
72
|
+
klazz: TClass,
|
|
73
|
+
refinement?: (buf: Buffer) => boolean,
|
|
74
|
+
): ZodType<TClass extends { fromBuffer(buf: Buffer): infer TInstance } ? ToJsonIs<TInstance, Buffer> : never, string> {
|
|
75
|
+
return bufferSchema.refine(refinement ?? (() => true), 'Not a valid buffer').transform(klazz.fromBuffer.bind(klazz));
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/** Creates a schema for a js Map type that matches the serialization used in jsonStringify. */
|
|
79
|
+
export function mapSchema<TKey, TValue>(key: ZodFor<TKey>, value: ZodFor<TValue>): ZodFor<Map<TKey, TValue>> {
|
|
80
|
+
return z.array(z.tuple([key, value])).transform(entries => new Map(entries));
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/** Creates a schema for a js Set type that matches the serialization used in jsonStringify. */
|
|
84
|
+
export function setSchema<T>(value: ZodFor<T>): ZodFor<Set<T>> {
|
|
85
|
+
return z.array(value).transform(entries => new Set(entries));
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/** Given an already parsed and validated object, extracts the keys defined in the given schema. Does not validate again. */
|
|
89
|
+
export function pickFromSchema<T extends object, S extends ZodObject<ZodRawShape>>(obj: T, schema: S) {
|
|
90
|
+
return pick(obj, ...Object.keys(schema.shape));
|
|
91
|
+
}
|
|
@@ -0,0 +1,472 @@
|
|
|
1
|
+
import { toBigIntBE } from '../bigint-buffer/index.js';
|
|
2
|
+
import type { Tuple } from './types.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The BufferReader class provides a utility for reading various data types from a buffer.
|
|
6
|
+
* It supports reading numbers, booleans, byte arrays, Fr and Fq field elements,
|
|
7
|
+
* vectors, arrays, objects, strings, and maps. It maintains an internal index to
|
|
8
|
+
* keep track of the current reading position in the buffer.
|
|
9
|
+
*
|
|
10
|
+
* Usage:
|
|
11
|
+
* Create a new instance of BufferReader with a buffer and an optional offset.
|
|
12
|
+
* Use the provided methods to read desired data types from the buffer.
|
|
13
|
+
* The reading methods automatically advance the internal index.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* const reader = new BufferReader(someBuffer);
|
|
17
|
+
* const num = reader.readNumber();
|
|
18
|
+
* const bool = reader.readBoolean();
|
|
19
|
+
* const byteArray = reader.readBytes(4);
|
|
20
|
+
*/
|
|
21
|
+
export class BufferReader {
|
|
22
|
+
private index: number;
|
|
23
|
+
constructor(
|
|
24
|
+
private buffer: Buffer,
|
|
25
|
+
offset = 0,
|
|
26
|
+
) {
|
|
27
|
+
this.index = offset;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Creates a BufferReader instance from either a Buffer or an existing BufferReader.
|
|
32
|
+
* If the input is a Buffer, it creates a new BufferReader with the given buffer.
|
|
33
|
+
* If the input is already a BufferReader, it returns the input unchanged.
|
|
34
|
+
*
|
|
35
|
+
* @param bufferOrReader - A Buffer or BufferReader to initialize the BufferReader.
|
|
36
|
+
* @returns An instance of BufferReader.
|
|
37
|
+
*/
|
|
38
|
+
public static asReader(bufferOrReader: Uint8Array | Buffer | BufferReader): BufferReader {
|
|
39
|
+
if (bufferOrReader instanceof BufferReader) {
|
|
40
|
+
return bufferOrReader;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const buf = Buffer.isBuffer(bufferOrReader)
|
|
44
|
+
? bufferOrReader
|
|
45
|
+
: Buffer.from(bufferOrReader.buffer, bufferOrReader.byteOffset, bufferOrReader.byteLength);
|
|
46
|
+
|
|
47
|
+
return new BufferReader(buf);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/** Returns true if the underlying buffer has been consumed completely. */
|
|
51
|
+
public isEmpty(): boolean {
|
|
52
|
+
return this.index === this.buffer.length;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Reads a 32-bit unsigned integer from the buffer at the current index position.
|
|
57
|
+
* Updates the index position by 4 bytes after reading the number.
|
|
58
|
+
*
|
|
59
|
+
* @returns The read 32-bit unsigned integer value.
|
|
60
|
+
*/
|
|
61
|
+
public readNumber(): number {
|
|
62
|
+
this.#rangeCheck(4);
|
|
63
|
+
this.index += 4;
|
|
64
|
+
return this.buffer.readUint32BE(this.index - 4);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Reads `count` 32-bit unsigned integers from the buffer at the current index position.
|
|
69
|
+
* @param count - The number of 32-bit unsigned integers to read.
|
|
70
|
+
* @returns An array of 32-bit unsigned integers.
|
|
71
|
+
*/
|
|
72
|
+
public readNumbers<N extends number>(count: N): Tuple<number, N> {
|
|
73
|
+
const result = Array.from({ length: count }, () => this.readNumber());
|
|
74
|
+
return result as Tuple<number, N>;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Reads a 256-bit unsigned integer from the buffer at the current index position.
|
|
79
|
+
* Updates the index position by 32 bytes after reading the number.
|
|
80
|
+
*
|
|
81
|
+
* Assumes the number is stored in big-endian format.
|
|
82
|
+
*
|
|
83
|
+
* @returns The read 256 bit value as a bigint.
|
|
84
|
+
*/
|
|
85
|
+
public readUInt64(): bigint {
|
|
86
|
+
this.#rangeCheck(8);
|
|
87
|
+
|
|
88
|
+
const result = this.buffer.readBigUInt64BE(this.index);
|
|
89
|
+
|
|
90
|
+
this.index += 8;
|
|
91
|
+
return result;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Reads a 128-bit unsigned integer from the buffer at the current index position.
|
|
96
|
+
* Updates the index position by 16 bytes after reading the number.
|
|
97
|
+
*
|
|
98
|
+
* Assumes the number is stored in big-endian format.
|
|
99
|
+
*
|
|
100
|
+
* @returns The read 128 bit value as a bigint.
|
|
101
|
+
*/
|
|
102
|
+
public readUInt128(): bigint {
|
|
103
|
+
this.#rangeCheck(16);
|
|
104
|
+
|
|
105
|
+
let result = BigInt(0);
|
|
106
|
+
for (let i = 0; i < 2; i++) {
|
|
107
|
+
result = (result << BigInt(64)) | this.buffer.readBigUInt64BE(this.index + i * 8);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
this.index += 16;
|
|
111
|
+
return result;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Reads a 256-bit unsigned integer from the buffer at the current index position.
|
|
116
|
+
* Updates the index position by 32 bytes after reading the number.
|
|
117
|
+
*
|
|
118
|
+
* Assumes the number is stored in big-endian format.
|
|
119
|
+
*
|
|
120
|
+
* @returns The read 256 bit value as a bigint.
|
|
121
|
+
*/
|
|
122
|
+
public readUInt256(): bigint {
|
|
123
|
+
this.#rangeCheck(32);
|
|
124
|
+
|
|
125
|
+
let result = BigInt(0);
|
|
126
|
+
for (let i = 0; i < 4; i++) {
|
|
127
|
+
result = (result << BigInt(64)) | this.buffer.readBigUInt64BE(this.index + i * 8);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
this.index += 32;
|
|
131
|
+
return result;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Reads a 256-bit signed integer (two's complement) from the buffer at the current index position.
|
|
136
|
+
* Updates the index position by 32 bytes after reading the number.
|
|
137
|
+
*
|
|
138
|
+
* @returns The read 256 bit signed value as a bigint.
|
|
139
|
+
*/
|
|
140
|
+
public readInt256(): bigint {
|
|
141
|
+
this.#rangeCheck(32);
|
|
142
|
+
const unsigned = toBigIntBE(this.buffer.subarray(this.index, this.index + 32));
|
|
143
|
+
this.index += 32;
|
|
144
|
+
const signBit = 1n << 255n;
|
|
145
|
+
return unsigned >= signBit ? unsigned - (1n << 256n) : unsigned;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/** Alias for readUInt256 */
|
|
149
|
+
public readBigInt(): bigint {
|
|
150
|
+
return this.readUInt256();
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Reads a 16-bit unsigned integer from the buffer at the current index position.
|
|
155
|
+
* Updates the index position by 2 bytes after reading the number.
|
|
156
|
+
*
|
|
157
|
+
* @returns The read 16 bit value.
|
|
158
|
+
*/
|
|
159
|
+
public readUInt16(): number {
|
|
160
|
+
this.#rangeCheck(2);
|
|
161
|
+
this.index += 2;
|
|
162
|
+
return this.buffer.readUInt16BE(this.index - 2);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Reads a 8-bit unsigned integer from the buffer at the current index position.
|
|
167
|
+
* Updates the index position by 1 byte after reading the number.
|
|
168
|
+
*
|
|
169
|
+
* @returns The read 8 bit value.
|
|
170
|
+
*/
|
|
171
|
+
public readUInt8(): number {
|
|
172
|
+
this.#rangeCheck(1);
|
|
173
|
+
this.index += 1;
|
|
174
|
+
return this.buffer.readUInt8(this.index - 1);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Reads and returns the next boolean value from the buffer.
|
|
179
|
+
* Advances the internal index by 1, treating the byte at the current index as a boolean value.
|
|
180
|
+
* Returns true if the byte is non-zero, false otherwise.
|
|
181
|
+
*
|
|
182
|
+
* @returns A boolean value representing the byte at the current index.
|
|
183
|
+
*/
|
|
184
|
+
public readBoolean(): boolean {
|
|
185
|
+
this.#rangeCheck(1);
|
|
186
|
+
this.index += 1;
|
|
187
|
+
return Boolean(this.buffer.at(this.index - 1));
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Reads a specified number of bytes from the buffer and returns a new Buffer containing those bytes.
|
|
192
|
+
* Advances the reader's index by the number of bytes read. Throws an error if there are not enough
|
|
193
|
+
* bytes left in the buffer to satisfy the requested number of bytes.
|
|
194
|
+
*
|
|
195
|
+
* @param n - The number of bytes to read from the buffer.
|
|
196
|
+
* @returns A new Buffer containing the read bytes.
|
|
197
|
+
*/
|
|
198
|
+
public readBytes(n: number): Buffer {
|
|
199
|
+
this.#rangeCheck(n);
|
|
200
|
+
this.index += n;
|
|
201
|
+
return Buffer.from(this.buffer.subarray(this.index - n, this.index));
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/** Reads until the end of the buffer. */
|
|
205
|
+
public readToEnd(): Buffer {
|
|
206
|
+
const result = this.buffer.subarray(this.index);
|
|
207
|
+
this.index = this.buffer.length;
|
|
208
|
+
return result;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Reads a vector of numbers from the buffer and returns it as an array of numbers.
|
|
213
|
+
* The method utilizes the 'readVector' method, passing a deserializer that reads numbers.
|
|
214
|
+
*
|
|
215
|
+
* @returns An array of numbers representing the vector read from the buffer.
|
|
216
|
+
*/
|
|
217
|
+
public readNumberVector(): number[] {
|
|
218
|
+
return this.readVector({
|
|
219
|
+
fromBuffer: (reader: BufferReader) => reader.readNumber(),
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Reads a vector of 256-bit unsigned integers from the buffer and returns it as an array of bigints.
|
|
225
|
+
* The method utilizes the 'readVector' method, passing a deserializer that reads bigints.
|
|
226
|
+
*
|
|
227
|
+
* @returns An array of bigints representing the vector read from the buffer.
|
|
228
|
+
*/
|
|
229
|
+
public readUint256Vector(): bigint[] {
|
|
230
|
+
return this.readVector({
|
|
231
|
+
fromBuffer: (reader: BufferReader) => reader.readUInt256(),
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Reads a vector of fixed size from the buffer and deserializes its elements using the provided itemDeserializer object.
|
|
237
|
+
* The 'itemDeserializer' object should have a 'fromBuffer' method that takes a BufferReader instance and returns the deserialized element.
|
|
238
|
+
* The method first reads the size of the vector (a number) from the buffer, then iterates through its elements,
|
|
239
|
+
* deserializing each one using the 'fromBuffer' method of 'itemDeserializer'.
|
|
240
|
+
*
|
|
241
|
+
* @param itemDeserializer - Object with 'fromBuffer' method to deserialize vector elements.
|
|
242
|
+
* @param maxSize - Optional maximum allowed size for the vector. If the size exceeds this, an error is thrown.
|
|
243
|
+
* @returns An array of deserialized elements of type T.
|
|
244
|
+
*/
|
|
245
|
+
public readVector<T>(
|
|
246
|
+
itemDeserializer: {
|
|
247
|
+
/**
|
|
248
|
+
* A method to deserialize data from a buffer.
|
|
249
|
+
*/
|
|
250
|
+
fromBuffer: (reader: BufferReader) => T;
|
|
251
|
+
},
|
|
252
|
+
maxSize?: number,
|
|
253
|
+
): T[] {
|
|
254
|
+
const size = this.readNumber();
|
|
255
|
+
if (maxSize !== undefined && size > maxSize) {
|
|
256
|
+
throw new Error(`Vector size ${size} exceeds maximum allowed ${maxSize}`);
|
|
257
|
+
}
|
|
258
|
+
// Every element consumes at least one byte, so a size beyond the bytes left is unsatisfiable. Reject it
|
|
259
|
+
// up front rather than relying on each item deserializer to bounds-check as the loop runs out of input.
|
|
260
|
+
if (size > this.remainingBytes()) {
|
|
261
|
+
throw new Error(`Vector size ${size} exceeds remaining buffer length ${this.remainingBytes()}`);
|
|
262
|
+
}
|
|
263
|
+
const result = new Array<T>(size);
|
|
264
|
+
for (let i = 0; i < size; i++) {
|
|
265
|
+
result[i] = itemDeserializer.fromBuffer(this);
|
|
266
|
+
}
|
|
267
|
+
return result;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* Reads a vector of fixed size from the buffer and deserializes its elements using the provided itemDeserializer object.
|
|
272
|
+
* The 'itemDeserializer' object should have a 'fromBuffer' method that takes a BufferReader instance and returns the deserialized element.
|
|
273
|
+
* The method first reads the size of the vector (a number) from the buffer, then iterates through its elements,
|
|
274
|
+
* deserializing each one using the 'fromBuffer' method of 'itemDeserializer'.
|
|
275
|
+
*
|
|
276
|
+
* @param itemDeserializer - Object with 'fromBuffer' method to deserialize vector elements.
|
|
277
|
+
* @returns An array of deserialized elements of type T.
|
|
278
|
+
*/
|
|
279
|
+
public readVectorUint8Prefix<T>(itemDeserializer: {
|
|
280
|
+
/**
|
|
281
|
+
* A method to deserialize data from a buffer.
|
|
282
|
+
*/
|
|
283
|
+
fromBuffer: (reader: BufferReader) => T;
|
|
284
|
+
}): T[] {
|
|
285
|
+
const size = this.readUInt8();
|
|
286
|
+
const result = new Array<T>(size);
|
|
287
|
+
for (let i = 0; i < size; i++) {
|
|
288
|
+
result[i] = itemDeserializer.fromBuffer(this);
|
|
289
|
+
}
|
|
290
|
+
return result;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Read an array of a fixed size with elements of type T from the buffer.
|
|
295
|
+
* The 'itemDeserializer' object should have a 'fromBuffer' method that takes a BufferReader instance as input,
|
|
296
|
+
* and returns an instance of the desired deserialized data type T.
|
|
297
|
+
* This method will call the 'fromBuffer' method for each element in the array and return the resulting array.
|
|
298
|
+
*
|
|
299
|
+
* @param size - The fixed number of elements in the array.
|
|
300
|
+
* @param itemDeserializer - An object with a 'fromBuffer' method to deserialize individual elements of type T.
|
|
301
|
+
* @returns An array of instances of type T.
|
|
302
|
+
*/
|
|
303
|
+
public readArray<T, N extends number>(
|
|
304
|
+
size: N,
|
|
305
|
+
itemDeserializer: {
|
|
306
|
+
/**
|
|
307
|
+
* A function for deserializing data from a BufferReader instance.
|
|
308
|
+
*/
|
|
309
|
+
fromBuffer: (reader: BufferReader) => T;
|
|
310
|
+
},
|
|
311
|
+
): Tuple<T, N> {
|
|
312
|
+
const result = Array.from({ length: size }, () => itemDeserializer.fromBuffer(this));
|
|
313
|
+
return result as Tuple<T, N>;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* Read a variable sized Buffer array where elements are represented by length + data.
|
|
318
|
+
* The method consecutively looks for a number which is the size of the proceeding buffer,
|
|
319
|
+
* then reads the bytes until it reaches the end of the reader's internal buffer.
|
|
320
|
+
* NOTE: if `size` is not provided, this will run to the end of the reader's buffer.
|
|
321
|
+
* @param size - Size of the buffer array in bytes (full remaining buffer length if left empty).
|
|
322
|
+
* @returns An array of variable sized buffers.
|
|
323
|
+
*/
|
|
324
|
+
public readBufferArray(size = -1): Buffer[] {
|
|
325
|
+
const result: Buffer[] = [];
|
|
326
|
+
const end = size >= 0 ? this.index + size : this.buffer.length;
|
|
327
|
+
this.#rangeCheck(end - this.index);
|
|
328
|
+
while (this.index < end) {
|
|
329
|
+
const item = this.readBuffer();
|
|
330
|
+
result.push(item);
|
|
331
|
+
}
|
|
332
|
+
// Ensure that all bytes have been read.
|
|
333
|
+
if (this.index !== end) {
|
|
334
|
+
throw new Error(
|
|
335
|
+
`Reader buffer was not fully consumed. Consumed up to ${this.index} bytes. End of data: ${end} bytes.`,
|
|
336
|
+
);
|
|
337
|
+
}
|
|
338
|
+
return result;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
/**
|
|
342
|
+
* Reads a serialized object from a buffer and returns the deserialized object using the given deserializer.
|
|
343
|
+
*
|
|
344
|
+
* @typeparam T - The type of the deserialized object.
|
|
345
|
+
* @param deserializer - An object with a 'fromBuffer' method that takes a BufferReader instance and returns an instance of the deserialized object.
|
|
346
|
+
* @returns The deserialized object of type T.
|
|
347
|
+
*/
|
|
348
|
+
public readObject<T>(deserializer: {
|
|
349
|
+
/**
|
|
350
|
+
* A method that takes a BufferReader instance and returns an instance of the deserialized data type.
|
|
351
|
+
*/
|
|
352
|
+
fromBuffer: (reader: BufferReader) => T;
|
|
353
|
+
}): T {
|
|
354
|
+
return deserializer.fromBuffer(this);
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* Returns a Buffer containing the next n bytes from the current buffer without modifying the reader's index position.
|
|
359
|
+
* If n is not provided or exceeds the remaining length of the buffer, it returns all bytes from the current position till the end of the buffer.
|
|
360
|
+
*
|
|
361
|
+
* @param n - The number of bytes to peek from the current buffer. (Optional).
|
|
362
|
+
* @returns A Buffer with the next n bytes or the remaining bytes if n is not provided or exceeds the buffer length.
|
|
363
|
+
*/
|
|
364
|
+
public peekBytes(n?: number): Buffer {
|
|
365
|
+
this.#rangeCheck(n || 0);
|
|
366
|
+
return this.buffer.subarray(this.index, n ? this.index + n : undefined);
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
/**
|
|
370
|
+
* Reads a string from the buffer and returns it.
|
|
371
|
+
* The method first reads the size of the string, then reads the corresponding
|
|
372
|
+
* number of bytes from the buffer and converts them to a string.
|
|
373
|
+
*
|
|
374
|
+
* @param maxSize - Optional maximum allowed size for the string buffer. If the size exceeds this, an error is thrown.
|
|
375
|
+
* @returns The read string from the buffer.
|
|
376
|
+
*/
|
|
377
|
+
public readString(maxSize?: number): string {
|
|
378
|
+
return this.readBuffer(maxSize).toString();
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
/**
|
|
382
|
+
* Reads a buffer from the current position of the reader and advances the index.
|
|
383
|
+
* The method first reads the size (number) of bytes to be read, and then returns
|
|
384
|
+
* a Buffer with that size containing the bytes. Useful for reading variable-length
|
|
385
|
+
* binary data encoded as (size, data) format.
|
|
386
|
+
*
|
|
387
|
+
* @param maxSize - Optional maximum allowed size for the buffer. If the size exceeds this, an error is thrown.
|
|
388
|
+
* @returns A Buffer containing the read bytes.
|
|
389
|
+
*/
|
|
390
|
+
public readBuffer(maxSize?: number): Buffer {
|
|
391
|
+
const size = this.readNumber();
|
|
392
|
+
if (maxSize !== undefined && size > maxSize) {
|
|
393
|
+
throw new Error(`Buffer size ${size} exceeds maximum allowed ${maxSize}`);
|
|
394
|
+
}
|
|
395
|
+
this.#rangeCheck(size);
|
|
396
|
+
return this.readBytes(size);
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
/**
|
|
400
|
+
* Reads a buffer from the current position of the reader and advances the index.
|
|
401
|
+
* The method first reads the size (number) of bytes to be read, and then returns
|
|
402
|
+
* a Buffer with that size containing the bytes. Useful for reading variable-length
|
|
403
|
+
* binary data encoded as (size, data) format.
|
|
404
|
+
*
|
|
405
|
+
* @returns A Buffer containing the read bytes.
|
|
406
|
+
*/
|
|
407
|
+
public readUint8Array(): Uint8Array {
|
|
408
|
+
const size = this.readNumber();
|
|
409
|
+
this.#rangeCheck(size);
|
|
410
|
+
return this.readBytes(size);
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
/**
|
|
414
|
+
* Reads and constructs a map object from the current buffer using the provided deserializer.
|
|
415
|
+
* The method reads the number of entries in the map, followed by iterating through each key-value pair.
|
|
416
|
+
* The key is read as a string, while the value is obtained using the passed deserializer's `fromBuffer` method.
|
|
417
|
+
* The resulting map object is returned, containing all the key-value pairs read from the buffer.
|
|
418
|
+
*
|
|
419
|
+
* @param deserializer - An object with a `fromBuffer` method to deserialize the values in the map.
|
|
420
|
+
* @returns A map object with string keys and deserialized values based on the provided deserializer.
|
|
421
|
+
*/
|
|
422
|
+
public readMap<T>(deserializer: {
|
|
423
|
+
/**
|
|
424
|
+
* Deserializes an element of type T from a BufferReader instance.
|
|
425
|
+
*/
|
|
426
|
+
fromBuffer: (reader: BufferReader) => T;
|
|
427
|
+
}): { [key: string]: T } {
|
|
428
|
+
const numEntries = this.readNumber();
|
|
429
|
+
const map: { [key: string]: T } = {};
|
|
430
|
+
for (let i = 0; i < numEntries; i++) {
|
|
431
|
+
const key = this.readString();
|
|
432
|
+
const value = this.readObject<T>(deserializer);
|
|
433
|
+
map[key] = value;
|
|
434
|
+
}
|
|
435
|
+
return map;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
/**
|
|
439
|
+
* Get the length of the reader's buffer.
|
|
440
|
+
* @returns The length of the underlying reader's buffer.
|
|
441
|
+
*/
|
|
442
|
+
public getLength(): number {
|
|
443
|
+
return this.buffer.length;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
/**
|
|
447
|
+
* Gets bytes remaining to be read from the buffer.
|
|
448
|
+
* @returns Bytes remaining to be read from the buffer.
|
|
449
|
+
*/
|
|
450
|
+
public remainingBytes(): number {
|
|
451
|
+
return this.buffer.length - this.index;
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
#rangeCheck(numBytes: number) {
|
|
455
|
+
if (this.index + numBytes > this.buffer.length) {
|
|
456
|
+
throw new Error(
|
|
457
|
+
`Attempted to read beyond buffer length. Start index: ${this.index}, Num bytes to read: ${numBytes}, Buffer length: ${this.buffer.length}`,
|
|
458
|
+
);
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
/**
|
|
464
|
+
* A deserializer
|
|
465
|
+
*/
|
|
466
|
+
export interface FromBuffer<T> {
|
|
467
|
+
/**
|
|
468
|
+
* Deserializes an object from a buffer
|
|
469
|
+
* @param buffer - The buffer to deserialize.
|
|
470
|
+
*/
|
|
471
|
+
fromBuffer(buffer: Buffer): T;
|
|
472
|
+
}
|