@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,32 @@
|
|
|
1
|
+
import { isAsyncIterable } from './isAsyncIt.js';
|
|
2
|
+
function take(source, limit) {
|
|
3
|
+
if (isAsyncIterable(source)) {
|
|
4
|
+
return async function*() {
|
|
5
|
+
let items = 0;
|
|
6
|
+
if (limit < 1) {
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
for await (const entry of source){
|
|
10
|
+
yield entry;
|
|
11
|
+
items++;
|
|
12
|
+
if (items === limit) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}();
|
|
17
|
+
}
|
|
18
|
+
return function*() {
|
|
19
|
+
let items = 0;
|
|
20
|
+
if (limit < 1) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
for (const entry of source){
|
|
24
|
+
yield entry;
|
|
25
|
+
items++;
|
|
26
|
+
if (items === limit) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}();
|
|
31
|
+
}
|
|
32
|
+
export { take };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare function toArray<T>(iterator: Iterable<T> | AsyncIterableIterator<T> | AsyncIterable<T> | IterableIterator<T>): Promise<T[]>;
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9BcnJheS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2l0ZXJhYmxlL3RvQXJyYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0JBQXNCLE9BQU8sQ0FBQyxDQUFDLEVBQzdCLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxHQUN4RixPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FNZCJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toArray.d.ts","sourceRoot":"","sources":["../../src/iterable/toArray.ts"],"names":[],"mappings":"AAAA,wBAAsB,OAAO,CAAC,CAAC,EAC7B,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,GACxF,OAAO,CAAC,CAAC,EAAE,CAAC,CAMd"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/** Wraps an async iterable iterator such that it filters values based on a predicate. */
|
|
2
|
+
export declare function filter<T>(iterator: AsyncIterableIterator<T>, predicate: (item: T) => boolean | Promise<boolean>): AsyncIterableIterator<T>;
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaXRlcmF0b3IvZmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlGQUF5RjtBQUN6Rix3QkFBdUIsTUFBTSxDQUFDLENBQUMsRUFDN0IsUUFBUSxFQUFFLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUNsQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQ2pELHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQU0xQiJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/iterator/filter.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,wBAAuB,MAAM,CAAC,CAAC,EAC7B,QAAQ,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAClC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GACjD,qBAAqB,CAAC,CAAC,CAAC,CAM1B"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { filter } from './filter.js';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pdGVyYXRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/iterator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { filter } from './filter.js';
|
package/dest/jest/env.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { TestEnvironment } from 'jest-environment-node';
|
|
2
|
+
// What errors should be ignored in after hooks
|
|
3
|
+
const IgnoredErrors = [
|
|
4
|
+
'HttpRequestError',
|
|
5
|
+
'CodeError'
|
|
6
|
+
];
|
|
7
|
+
/** Custom Jest environment that ignores any whitelisted unhandled rejections that occur during `after` hooks */ export default class CustomEnvironment extends TestEnvironment {
|
|
8
|
+
constructor(config, context){
|
|
9
|
+
super(config, context);
|
|
10
|
+
}
|
|
11
|
+
async handleTestEvent(event, state) {
|
|
12
|
+
if (event.name === 'setup') {
|
|
13
|
+
// Jest 29 reports both unhandledRejection and uncaughtException events as plain `error`, without any means to differentiate them
|
|
14
|
+
// (see https://github.com/jestjs/jest/issues/9210). Jest 30 fixes it as part of a larger change (see
|
|
15
|
+
// https://github.com/jestjs/jest/pull/14315/files#diff-9bdc1fdb60c8631b1e346eff6e4899c4e64ae3a44f4f12d0d7ac70c2aabd1d93R12-R29),
|
|
16
|
+
// but we cannot update to 30 as it is still in beta at the time of writing this code. So we remove jest's unhandledRejection listener,
|
|
17
|
+
// replace it with our own, and delegate to the original listener only if the error is not in the ignored list.
|
|
18
|
+
const parentProcess = event.parentProcess;
|
|
19
|
+
const [jestListener] = parentProcess.listeners('unhandledRejection');
|
|
20
|
+
parentProcess.removeAllListeners('unhandledRejection');
|
|
21
|
+
const patchedListener = (err, _promise)=>{
|
|
22
|
+
if (state.isInAfterHook && IgnoredErrors.some((error)=>err && err.name && err.name.includes(error))) {
|
|
23
|
+
// Ignore the error only if it was an unhandled async rejection (not sync exception), it's on the IgnoredErrors list, and we're in an after hook.
|
|
24
|
+
console.error('Ignoring unhandled rejection in after hook:', err);
|
|
25
|
+
} else if (state.isInAfterHook) {
|
|
26
|
+
// Log non-ignored unhandled rejection in an after hook, and pass the error to the original jest listener to fail the test.
|
|
27
|
+
console.error(`Unhandled rejection in after hook:`, err);
|
|
28
|
+
jestListener && jestListener(err);
|
|
29
|
+
} else {
|
|
30
|
+
// Otherwise, just delegate to the original jest listener, to emit the `error` event under the hood.
|
|
31
|
+
jestListener && jestListener(err);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
parentProcess.on('unhandledRejection', patchedListener);
|
|
35
|
+
state.patchedListener = patchedListener;
|
|
36
|
+
} else if (event.name === 'teardown') {
|
|
37
|
+
// Remove the patched handler we added in setup.
|
|
38
|
+
const parentProcess = state.parentProcess;
|
|
39
|
+
parentProcess.removeListener('unhandledRejection', state.patchedListener);
|
|
40
|
+
} else if (event.name === 'hook_start' && event.hook.type.startsWith('after')) {
|
|
41
|
+
// Track that we have entered an after hook.
|
|
42
|
+
state.isInAfterHook = true;
|
|
43
|
+
} else if ((event.name === 'hook_success' || event.name === 'hook_failure') && event.hook.type.startsWith('after')) {
|
|
44
|
+
// Reset the flag that we are in an after hook when we exit it.
|
|
45
|
+
state.isInAfterHook = false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { parseBooleanEnv } from '@aztec-labs/foundation/config';
|
|
2
|
+
import { overwriteLoggingStream, pinoPrettyOpts } from '@aztec-labs/foundation/log';
|
|
3
|
+
import pretty from 'pino-pretty';
|
|
4
|
+
// Overwrite logging stream with pino-pretty. We define this as a separate
|
|
5
|
+
// file so we don't mess up with dependencies in non-testing environments,
|
|
6
|
+
// since pino-pretty messes up with browser bundles.
|
|
7
|
+
// See also https://www.npmjs.com/package/pino-pretty?activeTab=readme#user-content-usage-with-jest
|
|
8
|
+
if (!parseBooleanEnv(process.env.LOG_JSON)) {
|
|
9
|
+
overwriteLoggingStream(pretty(pinoPrettyOpts));
|
|
10
|
+
}
|
|
11
|
+
// Prevent timers from keeping the process alive after tests complete.
|
|
12
|
+
// Libraries like viem create internal polling loops (via setTimeout) that
|
|
13
|
+
// reschedule themselves indefinitely. In test environments we never want a
|
|
14
|
+
// timer to be the reason the process can't exit. We also unref stdout/stderr
|
|
15
|
+
// which, when they are pipes (as in Jest workers), remain ref'd by default.
|
|
16
|
+
{
|
|
17
|
+
const origSetTimeout = globalThis.setTimeout;
|
|
18
|
+
const origSetInterval = globalThis.setInterval;
|
|
19
|
+
globalThis.setTimeout = function unrefSetTimeout(...args) {
|
|
20
|
+
const id = origSetTimeout.apply(this, args);
|
|
21
|
+
id?.unref?.();
|
|
22
|
+
return id;
|
|
23
|
+
};
|
|
24
|
+
// Preserve .unref, .__promisify__ etc. that may exist on the original
|
|
25
|
+
Object.setPrototypeOf(globalThis.setTimeout, origSetTimeout);
|
|
26
|
+
globalThis.setInterval = function unrefSetInterval(...args) {
|
|
27
|
+
const id = origSetInterval.apply(this, args);
|
|
28
|
+
id?.unref?.();
|
|
29
|
+
return id;
|
|
30
|
+
};
|
|
31
|
+
Object.setPrototypeOf(globalThis.setInterval, origSetInterval);
|
|
32
|
+
if (process.stdout?._handle?.unref) process.stdout._handle.unref();
|
|
33
|
+
if (process.stderr?._handle?.unref) process.stderr._handle.unref();
|
|
34
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type Logger } from '../../log/index.js';
|
|
2
|
+
export type JsonRpcFetch = (host: string, body: any, extraHeaders?: Record<string, string>, noRetry?: boolean) => Promise<{
|
|
3
|
+
response: any;
|
|
4
|
+
headers: {
|
|
5
|
+
get: (header: string) => string | null | undefined;
|
|
6
|
+
};
|
|
7
|
+
}>;
|
|
8
|
+
export type JsonRpcFetchConfig = {
|
|
9
|
+
credentials?: RequestCredentials;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* A normal fetch function that does not retry.
|
|
13
|
+
* Alternatives are a fetch function with retries, or a mocked fetch.
|
|
14
|
+
* @param host - The host URL.
|
|
15
|
+
* @param method - The RPC method name.
|
|
16
|
+
* @param body - The RPC payload.
|
|
17
|
+
* @param noRetry - Whether to throw a `NoRetryError` in case the response is a 5xx error and the body contains an error
|
|
18
|
+
* message (see `retry` function for more details).
|
|
19
|
+
* @param config - Fetch transport configuration.
|
|
20
|
+
* @returns The parsed JSON response, or throws an error.
|
|
21
|
+
*/
|
|
22
|
+
export declare function defaultFetch(host: string, body: unknown, extraHeaders?: Record<string, string>, noRetry?: boolean, config?: JsonRpcFetchConfig): Promise<{
|
|
23
|
+
response: any;
|
|
24
|
+
headers: {
|
|
25
|
+
get: (header: string) => string | null | undefined;
|
|
26
|
+
};
|
|
27
|
+
}>;
|
|
28
|
+
/**
|
|
29
|
+
* Makes a fetch function that retries based on the given attempts.
|
|
30
|
+
* @param retries - Sequence of intervals (in seconds) to retry.
|
|
31
|
+
* @param noRetry - Whether to stop retries on server errors.
|
|
32
|
+
* @param log - Optional logger for logging attempts.
|
|
33
|
+
* @param config - Fetch transport configuration.
|
|
34
|
+
* @returns A fetch function.
|
|
35
|
+
*/
|
|
36
|
+
export declare function makeFetch(retries: number[], defaultNoRetry: boolean, log?: Logger, config?: JsonRpcFetchConfig): JsonRpcFetch;
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2guZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9qc29uLXJwYy9jbGllbnQvZmV0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLG9CQUFvQixDQUFDO0FBTS9ELE1BQU0sTUFBTSxZQUFZLEdBQUcsQ0FDekIsSUFBSSxFQUFFLE1BQU0sRUFDWixJQUFJLEVBQUUsR0FBRyxFQUNULFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQ3JDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sS0FDZCxPQUFPLENBQUM7SUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDO0lBQUMsT0FBTyxFQUFFO1FBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLFNBQVMsQ0FBQTtLQUFFLENBQUE7Q0FBRSxDQUFDLENBQUM7QUFFakcsTUFBTSxNQUFNLGtCQUFrQixHQUFHO0lBQy9CLFdBQVcsQ0FBQyxFQUFFLGtCQUFrQixDQUFDO0NBQ2xDLENBQUM7QUFFRjs7Ozs7Ozs7OztHQVVHO0FBQ0gsd0JBQXNCLFlBQVksQ0FDaEMsSUFBSSxFQUFFLE1BQU0sRUFDWixJQUFJLEVBQUUsT0FBTyxFQUNiLFlBQVksR0FBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBTSxFQUN6QyxPQUFPLFVBQVEsRUFDZixNQUFNLEdBQUUsa0JBQXVCLEdBQzlCLE9BQU8sQ0FBQztJQUFFLFFBQVEsRUFBRSxHQUFHLENBQUM7SUFBQyxPQUFPLEVBQUU7UUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxLQUFLLE1BQU0sR0FBRyxJQUFJLEdBQUcsU0FBUyxDQUFBO0tBQUUsQ0FBQTtDQUFFLENBQUMsQ0FvQzdGO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILHdCQUFnQixTQUFTLENBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFDakIsY0FBYyxFQUFFLE9BQU8sRUFDdkIsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUNaLE1BQU0sR0FBRSxrQkFBdUIsR0FDOUIsWUFBWSxDQVVkIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/client/fetch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,oBAAoB,CAAC;AAM/D,MAAM,MAAM,YAAY,GAAG,CACzB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,GAAG,EACT,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACrC,OAAO,CAAC,EAAE,OAAO,KACd,OAAO,CAAC;IAAE,QAAQ,EAAE,GAAG,CAAC;IAAC,OAAO,EAAE;QAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;KAAE,CAAA;CAAE,CAAC,CAAC;AAEjG,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,YAAY,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACzC,OAAO,UAAQ,EACf,MAAM,GAAE,kBAAuB,GAC9B,OAAO,CAAC;IAAE,QAAQ,EAAE,GAAG,CAAC;IAAC,OAAO,EAAE;QAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;KAAE,CAAA;CAAE,CAAC,CAoC7F;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,MAAM,EAAE,EACjB,cAAc,EAAE,OAAO,EACvB,GAAG,CAAC,EAAE,MAAM,EACZ,MAAM,GAAE,kBAAuB,GAC9B,YAAY,CAUd"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { format, inspect } from 'util';
|
|
2
|
+
import { createLogger } from '../../log/index.js';
|
|
3
|
+
import { NoRetryError, makeBackoff, retry } from '../../retry/index.js';
|
|
4
|
+
import { jsonStringify } from '../convert.js';
|
|
5
|
+
const log = createLogger('json-rpc:json_rpc_client');
|
|
6
|
+
/**
|
|
7
|
+
* A normal fetch function that does not retry.
|
|
8
|
+
* Alternatives are a fetch function with retries, or a mocked fetch.
|
|
9
|
+
* @param host - The host URL.
|
|
10
|
+
* @param method - The RPC method name.
|
|
11
|
+
* @param body - The RPC payload.
|
|
12
|
+
* @param noRetry - Whether to throw a `NoRetryError` in case the response is a 5xx error and the body contains an error
|
|
13
|
+
* message (see `retry` function for more details).
|
|
14
|
+
* @param config - Fetch transport configuration.
|
|
15
|
+
* @returns The parsed JSON response, or throws an error.
|
|
16
|
+
*/ export async function defaultFetch(host, body, extraHeaders = {}, noRetry = false, config = {}) {
|
|
17
|
+
log.debug(format(`JsonRpcClient.fetch`, host, '->', body));
|
|
18
|
+
let resp;
|
|
19
|
+
try {
|
|
20
|
+
resp = await fetch(host, {
|
|
21
|
+
method: 'POST',
|
|
22
|
+
body: jsonStringify(body),
|
|
23
|
+
headers: {
|
|
24
|
+
'content-type': 'application/json',
|
|
25
|
+
...extraHeaders
|
|
26
|
+
},
|
|
27
|
+
credentials: config.credentials
|
|
28
|
+
});
|
|
29
|
+
} catch (err) {
|
|
30
|
+
const errorMessage = `Error fetching from host ${host}: ${inspect(err)}`;
|
|
31
|
+
throw new Error(errorMessage);
|
|
32
|
+
}
|
|
33
|
+
let responseJson;
|
|
34
|
+
const responseText = await resp.text();
|
|
35
|
+
try {
|
|
36
|
+
responseJson = JSON.parse(responseText);
|
|
37
|
+
} catch {
|
|
38
|
+
if (!resp.ok) {
|
|
39
|
+
throw new Error(resp.statusText);
|
|
40
|
+
}
|
|
41
|
+
throw new Error(`Failed to parse body as JSON: ${responseText}`);
|
|
42
|
+
}
|
|
43
|
+
if (!resp.ok) {
|
|
44
|
+
const errorMessage = `Error ${resp.status} from server ${host}: ${responseJson?.error?.message ?? JSON.stringify(responseJson)}`;
|
|
45
|
+
if (noRetry || resp.status >= 400 && resp.status < 500) {
|
|
46
|
+
throw new NoRetryError(errorMessage);
|
|
47
|
+
} else {
|
|
48
|
+
throw new Error(errorMessage);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
response: responseJson,
|
|
53
|
+
headers: resp.headers
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Makes a fetch function that retries based on the given attempts.
|
|
58
|
+
* @param retries - Sequence of intervals (in seconds) to retry.
|
|
59
|
+
* @param noRetry - Whether to stop retries on server errors.
|
|
60
|
+
* @param log - Optional logger for logging attempts.
|
|
61
|
+
* @param config - Fetch transport configuration.
|
|
62
|
+
* @returns A fetch function.
|
|
63
|
+
*/ export function makeFetch(retries, defaultNoRetry, log, config = {}) {
|
|
64
|
+
return async (host, body, extraHeaders = {}, noRetry)=>{
|
|
65
|
+
return await retry(()=>defaultFetch(host, body, extraHeaders, noRetry ?? defaultNoRetry, config), `JsonRpcClient request to ${host}`, makeBackoff(retries), log, false);
|
|
66
|
+
};
|
|
67
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './safe_json_rpc_client.js';
|
|
2
|
+
export * from './fetch.js';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9qc29uLXJwYy9jbGllbnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLFlBQVksQ0FBQyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/client/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type Logger } from '../../log/pino-logger.js';
|
|
2
|
+
import { type ApiSchemaFor } from '../../schemas/api.js';
|
|
3
|
+
import { type JsonRpcFetch } from './fetch.js';
|
|
4
|
+
export type SafeJsonRpcClientOptions = {
|
|
5
|
+
namespaceMethods?: string | false;
|
|
6
|
+
fetch?: JsonRpcFetch;
|
|
7
|
+
log?: Logger;
|
|
8
|
+
batchWindowMS?: number;
|
|
9
|
+
maxBatchSize?: number;
|
|
10
|
+
maxRequestBodySize?: number;
|
|
11
|
+
extraHeaders?: Record<string, string>;
|
|
12
|
+
onResponse?: (res: {
|
|
13
|
+
response: any;
|
|
14
|
+
headers: {
|
|
15
|
+
get: (header: string) => string | null | undefined;
|
|
16
|
+
};
|
|
17
|
+
}) => Promise<void>;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Creates a Proxy object that delegates over RPC and validates outputs against a given schema.
|
|
21
|
+
* The server is expected to be a JsonRpcServer.
|
|
22
|
+
* @param host - The host URL.
|
|
23
|
+
* @param schema - The api schema to validate returned data against.
|
|
24
|
+
* @param fetch - The fetch implementation to use.
|
|
25
|
+
*/
|
|
26
|
+
export declare function createSafeJsonRpcClient<T extends object>(host: string, schema: ApiSchemaFor<T>, config?: SafeJsonRpcClientOptions): T;
|
|
27
|
+
/**
|
|
28
|
+
* Triggers a batch to be sent immediately
|
|
29
|
+
*/
|
|
30
|
+
export declare function batch<T extends readonly unknown[]>(values: T): Promise<{
|
|
31
|
+
-readonly [P in keyof T]: Awaited<T[P]>;
|
|
32
|
+
}>;
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZV9qc29uX3JwY19jbGllbnQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9qc29uLXJwYy9jbGllbnQvc2FmZV9qc29uX3JwY19jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBRXJFLE9BQU8sRUFBa0IsS0FBSyxZQUFZLEVBQXdDLE1BQU0sc0JBQXNCLENBQUM7QUFFL0csT0FBTyxFQUFFLEtBQUssWUFBWSxFQUFnQixNQUFNLFlBQVksQ0FBQztBQWM3RCxNQUFNLE1BQU0sd0JBQXdCLEdBQUc7SUFDckMsZ0JBQWdCLENBQUMsRUFBRSxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ2xDLEtBQUssQ0FBQyxFQUFFLFlBQVksQ0FBQztJQUNyQixHQUFHLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDYixhQUFhLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDdkIsWUFBWSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3RCLGtCQUFrQixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQzVCLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdEMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUU7UUFDakIsUUFBUSxFQUFFLEdBQUcsQ0FBQztRQUNkLE9BQU8sRUFBRTtZQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLEtBQUssTUFBTSxHQUFHLElBQUksR0FBRyxTQUFTLENBQUE7U0FBRSxDQUFDO0tBQ2pFLEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0NBQ3JCLENBQUM7QUE2QkY7Ozs7OztHQU1HO0FBQ0gsd0JBQWdCLHVCQUF1QixDQUFDLENBQUMsU0FBUyxNQUFNLEVBQ3RELElBQUksRUFBRSxNQUFNLEVBQ1osTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFDdkIsTUFBTSxHQUFFLHdCQUE2QixHQUNwQyxDQUFDLENBb0xIO0FBRUQ7O0dBRUc7QUFDSCx3QkFBc0IsS0FBSyxDQUFDLENBQUMsU0FBUyxTQUFTLE9BQU8sRUFBRSxFQUN0RCxNQUFNLEVBQUUsQ0FBQyxHQUNSLE9BQU8sQ0FBQztJQUFFLENBQUMsVUFBVSxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUFFLENBQUMsQ0F1QnREIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safe_json_rpc_client.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/client/safe_json_rpc_client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,0BAA0B,CAAC;AAErE,OAAO,EAAkB,KAAK,YAAY,EAAwC,MAAM,sBAAsB,CAAC;AAE/G,OAAO,EAAE,KAAK,YAAY,EAAgB,MAAM,YAAY,CAAC;AAc7D,MAAM,MAAM,wBAAwB,GAAG;IACrC,gBAAgB,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAClC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE;QACjB,QAAQ,EAAE,GAAG,CAAC;QACd,OAAO,EAAE;YAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;SAAE,CAAC;KACjE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACrB,CAAC;AA6BF;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,MAAM,EACtD,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EACvB,MAAM,GAAE,wBAA6B,GACpC,CAAC,CAoLH;AAED;;GAEG;AACH,wBAAsB,KAAK,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,EACtD,MAAM,EAAE,CAAC,GACR,OAAO,CAAC;IAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,CAuBtD"}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { format } from 'util';
|
|
2
|
+
import { createLogger } from '../../log/pino-logger.js';
|
|
3
|
+
import { promiseWithResolvers } from '../../promise/utils.js';
|
|
4
|
+
import { getSchemaReturnType, schemaHasMethod } from '../../schemas/api.js';
|
|
5
|
+
import { jsonStringify } from '../convert.js';
|
|
6
|
+
import { defaultFetch } from './fetch.js';
|
|
7
|
+
// batch window of 0 would capture all requests in the current sync iteration of the event loop
|
|
8
|
+
// and send them all at once in a single batch
|
|
9
|
+
// minimal latency
|
|
10
|
+
const DEFAULT_BATCH_WINDOW_MS = 0;
|
|
11
|
+
// the maximum size of a batched request
|
|
12
|
+
const DEFAULT_MAX_BATCH_SIZE = 100;
|
|
13
|
+
// 1 mb, matching the JSON-RPC server's default maxBodySizeBytes so the client never assembles a batch the
|
|
14
|
+
// server rejects for exceeding the body limit
|
|
15
|
+
const DEFAULT_MAX_REQUESTY_BODY_SIZE = 1 * 1024 * 1024;
|
|
16
|
+
// expose helpful information on the RPC clients such that we can recognize them later
|
|
17
|
+
const SEND_BATCH = Symbol('JsonRpcClient.sendBatch');
|
|
18
|
+
const CLIENT_ID = Symbol('JsonRpcClient.clientId');
|
|
19
|
+
let nextClientId = 1;
|
|
20
|
+
// keep a reference to clients so that we can force send a batch
|
|
21
|
+
const clients = new Map();
|
|
22
|
+
/**
|
|
23
|
+
* Creates a Proxy object that delegates over RPC and validates outputs against a given schema.
|
|
24
|
+
* The server is expected to be a JsonRpcServer.
|
|
25
|
+
* @param host - The host URL.
|
|
26
|
+
* @param schema - The api schema to validate returned data against.
|
|
27
|
+
* @param fetch - The fetch implementation to use.
|
|
28
|
+
*/ export function createSafeJsonRpcClient(host, schema, config = {}) {
|
|
29
|
+
const fetch = config.fetch ?? defaultFetch;
|
|
30
|
+
const log = config.log ?? createLogger('json-rpc:client');
|
|
31
|
+
const { namespaceMethods = false, batchWindowMS = DEFAULT_BATCH_WINDOW_MS, maxBatchSize = DEFAULT_MAX_BATCH_SIZE, maxRequestBodySize = DEFAULT_MAX_REQUESTY_BODY_SIZE } = config;
|
|
32
|
+
let id = 0;
|
|
33
|
+
let sendBatchTimeoutHandle;
|
|
34
|
+
const queue = [];
|
|
35
|
+
const sendBatch = async ()=>{
|
|
36
|
+
if (sendBatchTimeoutHandle !== undefined) {
|
|
37
|
+
clearTimeout(sendBatchTimeoutHandle);
|
|
38
|
+
sendBatchTimeoutHandle = undefined;
|
|
39
|
+
}
|
|
40
|
+
const rpcCalls = [];
|
|
41
|
+
let bodySize = 0;
|
|
42
|
+
while(queue.length > 0 && rpcCalls.length < maxBatchSize && bodySize < maxRequestBodySize){
|
|
43
|
+
const item = queue[0];
|
|
44
|
+
if (!item) {
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
const tmpBodySize = bodySize + item.encodedLength;
|
|
48
|
+
if (tmpBodySize >= maxRequestBodySize) {
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
bodySize = tmpBodySize;
|
|
52
|
+
queue.shift();
|
|
53
|
+
rpcCalls.push(item);
|
|
54
|
+
}
|
|
55
|
+
// no-op
|
|
56
|
+
if (rpcCalls.length === 0) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
// schedule another call if there are more items to send
|
|
60
|
+
if (queue.length > 0) {
|
|
61
|
+
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
62
|
+
sendBatchTimeoutHandle = setTimeout(sendBatch, batchWindowMS);
|
|
63
|
+
}
|
|
64
|
+
log.debug(`Executing JSON-RPC batch of size: ${rpcCalls.length} body size: ${bodySize} bytes`, {
|
|
65
|
+
methods: rpcCalls.map(({ request })=>request.method)
|
|
66
|
+
});
|
|
67
|
+
try {
|
|
68
|
+
const { response, headers } = await fetch(host, rpcCalls.map(({ request })=>request), config.extraHeaders);
|
|
69
|
+
if (config.onResponse) {
|
|
70
|
+
await config.onResponse({
|
|
71
|
+
response,
|
|
72
|
+
headers
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
if (!Array.isArray(response) || response.length !== rpcCalls.length) {
|
|
76
|
+
log.warn(`Invalid response received from JSON-RPC server. Expected array of responses of length ${rpcCalls.length}`, {
|
|
77
|
+
response
|
|
78
|
+
});
|
|
79
|
+
for(let i = 0; i < rpcCalls.length; i++){
|
|
80
|
+
const { request, deferred } = rpcCalls[i];
|
|
81
|
+
deferred.resolve({
|
|
82
|
+
id: request.id,
|
|
83
|
+
jsonrpc: '2.0',
|
|
84
|
+
error: {
|
|
85
|
+
code: -32000,
|
|
86
|
+
data: response,
|
|
87
|
+
message: response.message ?? 'Failed request'
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
} else {
|
|
92
|
+
for(let i = 0; i < response.length; i++){
|
|
93
|
+
const resp = response[i];
|
|
94
|
+
const { request, deferred } = rpcCalls[i];
|
|
95
|
+
if (resp.id !== request.id) {
|
|
96
|
+
log.warn(`Invalid response received at index ${i} from JSON-RPC server: id mismatch`, {
|
|
97
|
+
requestMethod: request.method,
|
|
98
|
+
requestId: request.id,
|
|
99
|
+
responseId: resp.id
|
|
100
|
+
});
|
|
101
|
+
deferred.resolve({
|
|
102
|
+
id: request.id,
|
|
103
|
+
jsonrpc: '2.0',
|
|
104
|
+
error: {
|
|
105
|
+
code: -32001,
|
|
106
|
+
data: resp,
|
|
107
|
+
message: 'RPC id mismatch'
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
} else {
|
|
111
|
+
deferred.resolve(resp);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
} catch (err) {
|
|
116
|
+
// Re-throw ComponentsVersionsError immediately without converting to JSON-RPC error
|
|
117
|
+
// This ensures version mismatch errors are surfaced to the user instead of being hidden
|
|
118
|
+
if (err && typeof err === 'object' && 'name' in err && err.name === 'ComponentsVersionsError') {
|
|
119
|
+
// Reject all pending requests with the version error
|
|
120
|
+
for(let i = 0; i < rpcCalls.length; i++){
|
|
121
|
+
rpcCalls[i].deferred.reject(err);
|
|
122
|
+
}
|
|
123
|
+
return; // Return early, the promises are already rejected
|
|
124
|
+
}
|
|
125
|
+
log.warn(`Failed to fetch from the remote server`, err);
|
|
126
|
+
for(let i = 0; i < rpcCalls.length; i++){
|
|
127
|
+
const { request, deferred } = rpcCalls[i];
|
|
128
|
+
deferred.resolve({
|
|
129
|
+
id: request.id,
|
|
130
|
+
jsonrpc: '2.0',
|
|
131
|
+
error: {
|
|
132
|
+
code: -32000,
|
|
133
|
+
data: err,
|
|
134
|
+
message: err.message ?? 'Failed request'
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
const request = async (methodName, params)=>{
|
|
141
|
+
if (!schemaHasMethod(schema, methodName)) {
|
|
142
|
+
throw new Error(`Unspecified method ${methodName} in client schema`);
|
|
143
|
+
}
|
|
144
|
+
const method = namespaceMethods ? `${namespaceMethods}_${methodName}` : methodName;
|
|
145
|
+
const body = {
|
|
146
|
+
jsonrpc: '2.0',
|
|
147
|
+
id: id++,
|
|
148
|
+
method,
|
|
149
|
+
params
|
|
150
|
+
};
|
|
151
|
+
const deferred = promiseWithResolvers();
|
|
152
|
+
const encodedLength = jsonStringify(body).length;
|
|
153
|
+
if (encodedLength >= maxRequestBodySize) {
|
|
154
|
+
throw new Error(`Request body too large: ${encodedLength}`);
|
|
155
|
+
}
|
|
156
|
+
queue.push({
|
|
157
|
+
request: body,
|
|
158
|
+
deferred,
|
|
159
|
+
encodedLength
|
|
160
|
+
});
|
|
161
|
+
if (sendBatchTimeoutHandle === undefined) {
|
|
162
|
+
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
163
|
+
sendBatchTimeoutHandle = setTimeout(sendBatch, batchWindowMS);
|
|
164
|
+
}
|
|
165
|
+
log.debug(format(`request`, method, params));
|
|
166
|
+
const response = await deferred.promise;
|
|
167
|
+
log.debug(format(`result`, method, response));
|
|
168
|
+
if ('error' in response) {
|
|
169
|
+
throw new Error(response.error.message, {
|
|
170
|
+
cause: response.error
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
// TODO(palla/schemas): Find a better way to handle null responses (JSON.stringify(null) is string "null").
|
|
174
|
+
if ([
|
|
175
|
+
null,
|
|
176
|
+
undefined,
|
|
177
|
+
'null',
|
|
178
|
+
'undefined'
|
|
179
|
+
].includes(response.result)) {
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
return getSchemaReturnType(schema[methodName]).parseAsync(response.result);
|
|
183
|
+
};
|
|
184
|
+
const clientId = nextClientId++;
|
|
185
|
+
const proxy = {
|
|
186
|
+
[CLIENT_ID]: clientId,
|
|
187
|
+
[SEND_BATCH]: sendBatch
|
|
188
|
+
};
|
|
189
|
+
for (const method of Object.keys(schema)){
|
|
190
|
+
// attach the clientId to the promise so that if we want to trigger a batch immediately, we can do that
|
|
191
|
+
proxy[method] = (...params)=>Object.assign(request(method, params), {
|
|
192
|
+
[CLIENT_ID]: clientId
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
clients.set(clientId, new WeakRef(proxy));
|
|
196
|
+
return proxy;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Triggers a batch to be sent immediately
|
|
200
|
+
*/ export async function batch(values) {
|
|
201
|
+
const clientIdsSeen = new Set();
|
|
202
|
+
await Promise.allSettled(values.map((val)=>{
|
|
203
|
+
if (typeof val === 'object' && val && Object.hasOwn(val, CLIENT_ID)) {
|
|
204
|
+
const clientId = val[CLIENT_ID];
|
|
205
|
+
if (typeof clientId === 'number') {
|
|
206
|
+
if (clientIdsSeen.has(clientId)) {
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
clientIdsSeen.add(clientId);
|
|
210
|
+
const client = clients.get(clientId)?.deref();
|
|
211
|
+
if (client) {
|
|
212
|
+
return client[SEND_BATCH]();
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}));
|
|
217
|
+
return Promise.all(values);
|
|
218
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Agent, type Dispatcher } from 'undici';
|
|
2
|
+
import type { JsonRpcFetch } from './fetch.js';
|
|
3
|
+
export { Agent };
|
|
4
|
+
/** Asynchronous cookie storage. */
|
|
5
|
+
export interface CookieJar {
|
|
6
|
+
getCookieString(url: string): Promise<string>;
|
|
7
|
+
setCookie(cookie: string, url: string): Promise<unknown>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Creates an Undici JSON-RPC transport.
|
|
11
|
+
* @param client - Dispatcher used to make requests.
|
|
12
|
+
* @param cookieJar - Optional application-owned cookie storage. Cookies are ignored when omitted.
|
|
13
|
+
* @returns A JSON-RPC fetch implementation.
|
|
14
|
+
*/
|
|
15
|
+
export declare function makeUndiciFetch(client?: Dispatcher, cookieJar?: CookieJar): JsonRpcFetch;
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5kaWNpLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvanNvbi1ycGMvY2xpZW50L3VuZGljaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBS2hELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQVUvQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFFakIsbUNBQW1DO0FBQ25DLE1BQU0sV0FBVyxTQUFTO0lBQ3hCLGVBQWUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QyxTQUFTLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztDQUMxRDtBQUVEOzs7OztHQUtHO0FBQ0gsd0JBQWdCLGVBQWUsQ0FBQyxNQUFNLEdBQUUsVUFBd0IsRUFBRSxTQUFTLENBQUMsRUFBRSxTQUFTLEdBQUcsWUFBWSxDQWdHckcifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"undici.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/client/undici.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AAKhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAU/C,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,mCAAmC;AACnC,MAAM,WAAW,SAAS;IACxB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,GAAE,UAAwB,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,YAAY,CAgGrG"}
|