@aztec/foundation 0.0.0-test.1 → 0.0.1-commit.b655e406
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/array/array.d.ts +5 -0
- package/dest/array/array.d.ts.map +1 -1
- package/dest/array/array.js +11 -0
- package/dest/async-pool/index.d.ts.map +1 -1
- package/dest/async-pool/index.js +1 -0
- package/dest/bigint/index.d.ts +7 -0
- package/dest/bigint/index.d.ts.map +1 -0
- package/dest/bigint/index.js +15 -0
- package/dest/bigint-buffer/index.d.ts +0 -2
- package/dest/bigint-buffer/index.d.ts.map +1 -1
- package/dest/buffer/buffer16.d.ts +80 -0
- package/dest/buffer/buffer16.d.ts.map +1 -0
- package/dest/buffer/buffer16.js +100 -0
- package/dest/buffer/buffer32.d.ts +3 -7
- package/dest/buffer/buffer32.d.ts.map +1 -1
- package/dest/buffer/buffer32.js +6 -6
- package/dest/buffer/index.d.ts +1 -0
- package/dest/buffer/index.d.ts.map +1 -1
- package/dest/buffer/index.js +1 -0
- package/dest/collection/array.d.ts +16 -3
- package/dest/collection/array.d.ts.map +1 -1
- package/dest/collection/array.js +57 -3
- package/dest/collection/object.d.ts +16 -0
- package/dest/collection/object.d.ts.map +1 -1
- package/dest/collection/object.js +25 -0
- package/dest/config/env_var.d.ts +1 -1
- package/dest/config/env_var.d.ts.map +1 -1
- package/dest/config/index.d.ts +48 -1
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +115 -7
- package/dest/config/network_config.d.ts +42 -0
- package/dest/config/network_config.d.ts.map +1 -0
- package/dest/config/network_config.js +9 -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/secret_value.d.ts +28 -0
- package/dest/config/secret_value.d.ts.map +1 -0
- package/dest/config/secret_value.js +34 -0
- package/dest/crypto/aes128/index.d.ts +2 -4
- package/dest/crypto/aes128/index.d.ts.map +1 -1
- package/dest/crypto/aes128/index.js +23 -6
- package/dest/crypto/bls/bn254_keystore.d.ts +296 -0
- package/dest/crypto/bls/bn254_keystore.d.ts.map +1 -0
- package/dest/crypto/bls/bn254_keystore.js +218 -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/bn254_utils.d.ts +39 -0
- package/dest/crypto/bn254/bn254_utils.d.ts.map +1 -0
- package/dest/crypto/bn254/bn254_utils.js +56 -0
- package/dest/crypto/bn254/index.d.ts +55 -0
- package/dest/crypto/bn254/index.d.ts.map +1 -0
- package/dest/crypto/bn254/index.js +142 -0
- package/dest/crypto/ecdsa/index.d.ts +2 -2
- package/dest/crypto/ecdsa/index.d.ts.map +1 -1
- package/dest/crypto/ecdsa/index.js +70 -48
- package/dest/crypto/ecdsa/signature.d.ts +1 -3
- package/dest/crypto/ecdsa/signature.d.ts.map +1 -1
- package/dest/crypto/grumpkin/index.d.ts +6 -13
- package/dest/crypto/grumpkin/index.d.ts.map +1 -1
- package/dest/crypto/grumpkin/index.js +69 -54
- package/dest/crypto/index.d.ts +2 -0
- package/dest/crypto/index.d.ts.map +1 -1
- package/dest/crypto/index.js +2 -0
- package/dest/crypto/keccak/index.d.ts +2 -4
- package/dest/crypto/keccak/index.d.ts.map +1 -1
- package/dest/crypto/keys/index.d.ts +0 -2
- package/dest/crypto/keys/index.d.ts.map +1 -1
- package/dest/crypto/keys/index.js +9 -4
- package/dest/crypto/pedersen/pedersen.noble.d.ts +2 -4
- package/dest/crypto/pedersen/pedersen.noble.d.ts.map +1 -1
- package/dest/crypto/pedersen/pedersen.wasm.d.ts +2 -4
- package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -1
- package/dest/crypto/pedersen/pedersen.wasm.js +29 -13
- package/dest/crypto/poseidon/index.d.ts +0 -2
- package/dest/crypto/poseidon/index.d.ts.map +1 -1
- package/dest/crypto/poseidon/index.js +42 -17
- package/dest/crypto/random/index.d.ts +1 -3
- package/dest/crypto/random/index.d.ts.map +1 -1
- package/dest/crypto/random/index.js +2 -34
- package/dest/crypto/random/randomness_singleton.d.ts +0 -2
- package/dest/crypto/random/randomness_singleton.d.ts.map +1 -1
- package/dest/crypto/schnorr/index.d.ts.map +1 -1
- package/dest/crypto/schnorr/index.js +35 -37
- package/dest/crypto/schnorr/signature.d.ts +3 -5
- package/dest/crypto/schnorr/signature.d.ts.map +1 -1
- package/dest/crypto/secp256k1/index.d.ts +4 -6
- package/dest/crypto/secp256k1/index.d.ts.map +1 -1
- package/dest/crypto/secp256k1/index.js +29 -18
- package/dest/crypto/secp256k1-signer/utils.d.ts +55 -4
- package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -1
- package/dest/crypto/secp256k1-signer/utils.js +92 -6
- package/dest/crypto/serialize.d.ts +4 -6
- package/dest/crypto/serialize.d.ts.map +1 -1
- package/dest/crypto/sha256/index.d.ts +21 -4
- package/dest/crypto/sha256/index.d.ts.map +1 -1
- package/dest/crypto/sha256/index.js +42 -0
- package/dest/crypto/sha512/index.d.ts +1 -3
- package/dest/crypto/sha512/index.d.ts.map +1 -1
- package/dest/crypto/signature/index.d.ts +0 -2
- package/dest/crypto/signature/index.d.ts.map +1 -1
- package/dest/crypto/sync/index.js +3 -1
- package/dest/crypto/sync/pedersen/index.d.ts +2 -4
- package/dest/crypto/sync/pedersen/index.d.ts.map +1 -1
- package/dest/crypto/sync/pedersen/index.js +17 -10
- package/dest/crypto/sync/poseidon/index.d.ts +0 -2
- package/dest/crypto/sync/poseidon/index.d.ts.map +1 -1
- package/dest/crypto/sync/poseidon/index.js +27 -12
- package/dest/decorators/memoize.d.ts.map +1 -1
- package/dest/eth-address/index.d.ts +6 -7
- package/dest/eth-address/index.d.ts.map +1 -1
- package/dest/eth-address/index.js +5 -0
- package/dest/eth-signature/eth_signature.d.ts +16 -14
- package/dest/eth-signature/eth_signature.d.ts.map +1 -1
- package/dest/eth-signature/eth_signature.js +31 -17
- package/dest/fields/bls12_fields.d.ts +148 -0
- package/dest/fields/bls12_fields.d.ts.map +1 -0
- package/dest/fields/bls12_fields.js +359 -0
- package/dest/fields/bls12_point.d.ts +229 -0
- package/dest/fields/bls12_point.d.ts.map +1 -0
- package/dest/fields/bls12_point.js +398 -0
- package/dest/fields/coordinate.d.ts +0 -2
- package/dest/fields/coordinate.d.ts.map +1 -1
- package/dest/fields/fields.d.ts +6 -3
- package/dest/fields/fields.d.ts.map +1 -1
- package/dest/fields/fields.js +43 -15
- package/dest/fields/index.d.ts +2 -0
- package/dest/fields/index.d.ts.map +1 -1
- package/dest/fields/index.js +2 -0
- package/dest/fields/point.d.ts +2 -4
- package/dest/fields/point.d.ts.map +1 -1
- package/dest/fields/point.js +3 -3
- package/dest/fs/index.d.ts +1 -0
- package/dest/fs/index.d.ts.map +1 -1
- package/dest/fs/index.js +1 -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/index.d.ts +1 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -2
- package/dest/iterable/filter.js +1 -1
- package/dest/iterable/map.js +1 -1
- package/dest/jest/env.js +48 -0
- package/dest/jest/setupAfterEnv.js +3 -0
- package/dest/json-rpc/client/fetch.d.ts +2 -2
- package/dest/json-rpc/client/fetch.d.ts.map +1 -1
- package/dest/json-rpc/client/fetch.js +16 -30
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts +9 -3
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -1
- package/dest/json-rpc/client/safe_json_rpc_client.js +173 -13
- package/dest/json-rpc/client/undici.d.ts.map +1 -1
- package/dest/json-rpc/client/undici.js +6 -7
- package/dest/json-rpc/convert.d.ts +2 -9
- package/dest/json-rpc/convert.d.ts.map +1 -1
- package/dest/json-rpc/convert.js +1 -9
- package/dest/json-rpc/errors.d.ts +4 -0
- package/dest/json-rpc/errors.d.ts.map +1 -0
- package/dest/json-rpc/errors.js +6 -0
- package/dest/json-rpc/fixtures/class_a.d.ts +5 -3
- package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -1
- package/dest/json-rpc/fixtures/class_b.d.ts +5 -3
- package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -1
- package/dest/json-rpc/index.d.ts +2 -1
- package/dest/json-rpc/index.d.ts.map +1 -1
- package/dest/json-rpc/index.js +2 -1
- package/dest/json-rpc/js_utils.d.ts.map +1 -1
- package/dest/json-rpc/server/safe_json_rpc_server.d.ts +21 -22
- package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -1
- package/dest/json-rpc/server/safe_json_rpc_server.js +161 -56
- package/dest/json-rpc/test/integration.d.ts +1 -2
- package/dest/json-rpc/test/integration.d.ts.map +1 -1
- package/dest/log/console.d.ts.map +1 -1
- package/dest/log/gcloud-logger-config.d.ts +0 -1
- package/dest/log/gcloud-logger-config.d.ts.map +1 -1
- package/dest/log/gcloud-logger-config.js +1 -9
- package/dest/log/index.d.ts +4 -4
- package/dest/log/index.d.ts.map +1 -1
- package/dest/log/index.js +4 -4
- package/dest/log/libp2p_logger.js +13 -2
- package/dest/log/log_fn.d.ts +1 -1
- package/dest/log/log_fn.d.ts.map +1 -1
- package/dest/log/noir_debug_log_util.d.ts +14 -0
- package/dest/log/noir_debug_log_util.d.ts.map +1 -0
- package/dest/log/noir_debug_log_util.js +14 -0
- package/dest/log/pino-logger.d.ts +2 -2
- package/dest/log/pino-logger.d.ts.map +1 -1
- package/dest/log/pino-logger.js +28 -2
- package/dest/message/index.d.ts.map +1 -1
- package/dest/mutex/mutex_database.d.ts.map +1 -1
- package/dest/noir/noir_package_config.d.ts +4 -4
- 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/running-promise.d.ts +1 -1
- package/dest/promise/running-promise.d.ts.map +1 -1
- package/dest/promise/running-promise.js +2 -2
- package/dest/queue/batch_queue.d.ts +1 -1
- package/dest/queue/batch_queue.js +1 -1
- package/dest/queue/bounded_serial_queue.d.ts.map +1 -1
- package/dest/queue/serial_queue.d.ts +2 -2
- package/dest/queue/serial_queue.d.ts.map +1 -1
- package/dest/queue/serial_queue.js +7 -5
- package/dest/retry/index.d.ts +3 -2
- package/dest/retry/index.d.ts.map +1 -1
- package/dest/retry/index.js +2 -2
- package/dest/schemas/api.d.ts.map +1 -1
- package/dest/schemas/parse.js +1 -1
- package/dest/schemas/schemas.d.ts +9 -6
- package/dest/schemas/schemas.d.ts.map +1 -1
- package/dest/schemas/schemas.js +15 -1
- package/dest/schemas/utils.d.ts +1 -3
- package/dest/schemas/utils.d.ts.map +1 -1
- package/dest/serialize/buffer_reader.d.ts +27 -2
- package/dest/serialize/buffer_reader.d.ts.map +1 -1
- package/dest/serialize/buffer_reader.js +44 -2
- package/dest/serialize/field_reader.d.ts +10 -1
- package/dest/serialize/field_reader.d.ts.map +1 -1
- package/dest/serialize/field_reader.js +18 -1
- package/dest/serialize/free_funcs.d.ts +23 -21
- package/dest/serialize/free_funcs.d.ts.map +1 -1
- package/dest/serialize/free_funcs.js +21 -27
- package/dest/serialize/serialize.d.ts +4 -5
- package/dest/serialize/serialize.d.ts.map +1 -1
- package/dest/string/index.d.ts +7 -2
- package/dest/string/index.d.ts.map +1 -1
- package/dest/string/index.js +27 -1
- package/dest/testing/files/index.d.ts +0 -2
- package/dest/testing/files/index.d.ts.map +1 -1
- package/dest/testing/files/index.js +2 -2
- 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 +1 -0
- package/dest/testing/index.d.ts.map +1 -1
- package/dest/testing/index.js +1 -0
- package/dest/timer/date.d.ts +2 -1
- package/dest/timer/date.d.ts.map +1 -1
- package/dest/timer/date.js +5 -3
- package/dest/timer/index.d.ts +1 -1
- package/dest/timer/index.d.ts.map +1 -1
- package/dest/timer/index.js +1 -1
- package/dest/timer/timeout.d.ts +18 -5
- package/dest/timer/timeout.d.ts.map +1 -1
- package/dest/timer/timeout.js +43 -22
- package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +1 -1
- package/dest/transport/index.d.ts +0 -1
- package/dest/transport/index.d.ts.map +1 -1
- package/dest/transport/index.js +0 -1
- package/dest/transport/interface/connector.d.ts.map +1 -1
- package/dest/transport/interface/listener.d.ts +0 -1
- package/dest/transport/interface/listener.d.ts.map +1 -1
- package/dest/transport/interface/socket.d.ts.map +1 -1
- package/dest/transport/node/node_connector.d.ts +0 -1
- package/dest/transport/node/node_connector.d.ts.map +1 -1
- package/dest/transport/node/node_connector_socket.d.ts +0 -1
- package/dest/transport/node/node_connector_socket.d.ts.map +1 -1
- package/dest/transport/node/node_listener.d.ts +0 -1
- package/dest/transport/node/node_listener.d.ts.map +1 -1
- package/dest/transport/node/node_listener_socket.d.ts +0 -1
- package/dest/transport/node/node_listener_socket.d.ts.map +1 -1
- package/dest/transport/transport_client.d.ts +0 -1
- package/dest/transport/transport_client.d.ts.map +1 -1
- package/dest/transport/transport_server.d.ts.map +1 -1
- package/dest/trees/hasher.d.ts +4 -6
- package/dest/trees/hasher.d.ts.map +1 -1
- package/dest/trees/index.d.ts +1 -0
- package/dest/trees/index.d.ts.map +1 -1
- package/dest/trees/index.js +1 -0
- package/dest/trees/indexed_merkle_tree.d.ts +0 -2
- package/dest/trees/indexed_merkle_tree.d.ts.map +1 -1
- package/dest/trees/indexed_merkle_tree_calculator.d.ts +1 -3
- package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -1
- package/dest/trees/indexed_tree_leaf.d.ts +0 -2
- package/dest/trees/indexed_tree_leaf.d.ts.map +1 -1
- package/dest/trees/membership_witness.d.ts +19 -3
- package/dest/trees/membership_witness.d.ts.map +1 -1
- package/dest/trees/membership_witness.js +13 -0
- package/dest/trees/merkle_tree.d.ts +0 -2
- package/dest/trees/merkle_tree.d.ts.map +1 -1
- package/dest/trees/merkle_tree_calculator.d.ts +11 -3
- package/dest/trees/merkle_tree_calculator.d.ts.map +1 -1
- package/dest/trees/merkle_tree_calculator.js +31 -1
- package/dest/trees/sibling_path.d.ts +6 -8
- package/dest/trees/sibling_path.d.ts.map +1 -1
- package/dest/trees/unbalanced_merkle_tree.d.ts +19 -8
- package/dest/trees/unbalanced_merkle_tree.d.ts.map +1 -1
- package/dest/trees/unbalanced_merkle_tree.js +49 -50
- 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 +162 -0
- package/dest/trees/unbalanced_tree_store.d.ts +1 -0
- package/dest/trees/unbalanced_tree_store.d.ts.map +1 -1
- package/dest/trees/unbalanced_tree_store.js +6 -0
- package/dest/types/index.d.ts +25 -2
- package/dest/types/index.d.ts.map +1 -1
- package/dest/url/index.d.ts.map +1 -1
- package/dest/url/index.js +1 -1
- package/package.json +35 -41
- package/src/array/array.ts +13 -0
- package/src/async-pool/index.ts +1 -0
- package/src/bigint/index.ts +20 -0
- package/src/buffer/buffer16.ts +133 -0
- package/src/buffer/buffer32.ts +8 -6
- package/src/buffer/index.ts +1 -0
- package/src/collection/array.ts +66 -4
- package/src/collection/object.ts +37 -0
- package/src/config/env_var.ts +142 -52
- package/src/config/index.ts +191 -8
- package/src/config/network_config.ts +16 -0
- package/src/config/network_name.ts +28 -0
- package/src/config/secret_value.ts +49 -0
- package/src/crypto/aes128/index.ts +19 -10
- package/src/crypto/bls/bn254_keystore.ts +287 -0
- package/src/crypto/bls/index.ts +77 -0
- package/src/crypto/bn254/bn254_utils.ts +64 -0
- package/src/crypto/bn254/index.ts +170 -0
- package/src/crypto/ecdsa/index.ts +41 -23
- package/src/crypto/grumpkin/index.ts +35 -45
- package/src/crypto/index.ts +2 -0
- package/src/crypto/keys/index.ts +5 -5
- package/src/crypto/pedersen/pedersen.wasm.ts +22 -18
- package/src/crypto/poseidon/index.ts +32 -24
- package/src/crypto/random/index.ts +2 -40
- package/src/crypto/schnorr/index.ts +20 -17
- package/src/crypto/secp256k1/index.ts +15 -11
- package/src/crypto/secp256k1-signer/utils.ts +120 -7
- package/src/crypto/sha256/index.ts +47 -0
- package/src/crypto/sync/index.ts +1 -1
- package/src/crypto/sync/pedersen/index.ts +16 -15
- package/src/crypto/sync/poseidon/index.ts +27 -22
- package/src/eth-address/index.ts +9 -2
- package/src/eth-signature/eth_signature.ts +44 -22
- package/src/fields/bls12_fields.ts +463 -0
- package/src/fields/bls12_point.ts +450 -0
- package/src/fields/fields.ts +37 -9
- package/src/fields/index.ts +2 -0
- package/src/fields/point.ts +1 -3
- package/src/fs/index.ts +1 -0
- package/src/fs/try_rm_dir.ts +15 -0
- package/src/index.ts +1 -2
- package/src/iterable/filter.ts +1 -1
- package/src/iterable/map.ts +1 -1
- package/src/jest/env.mjs +52 -0
- package/src/jest/setupAfterEnv.mjs +3 -0
- package/src/json-rpc/client/fetch.ts +14 -33
- package/src/json-rpc/client/safe_json_rpc_client.ts +226 -13
- package/src/json-rpc/client/undici.ts +8 -15
- package/src/json-rpc/convert.ts +3 -12
- package/src/json-rpc/errors.ts +6 -0
- package/src/json-rpc/fixtures/class_a.ts +4 -1
- package/src/json-rpc/fixtures/class_b.ts +4 -1
- package/src/json-rpc/index.ts +2 -1
- package/src/json-rpc/server/safe_json_rpc_server.ts +141 -48
- package/src/json-rpc/test/integration.ts +1 -1
- package/src/log/console.ts +4 -1
- package/src/log/gcloud-logger-config.ts +3 -7
- package/src/log/index.ts +4 -4
- package/src/log/libp2p_logger.ts +21 -2
- package/src/log/log_fn.ts +1 -1
- package/src/log/noir_debug_log_util.ts +21 -0
- package/src/log/pino-logger.ts +33 -2
- package/src/message/index.ts +5 -1
- package/src/mutex/mutex_database.ts +2 -3
- package/src/number/index.ts +14 -0
- package/src/profiler/index.ts +1 -0
- package/src/profiler/profiler.ts +125 -0
- package/src/promise/running-promise.ts +2 -2
- package/src/queue/batch_queue.ts +1 -1
- package/src/queue/bounded_serial_queue.ts +4 -1
- package/src/queue/serial_queue.ts +5 -5
- package/src/retry/index.ts +10 -5
- package/src/schemas/api.ts +4 -4
- package/src/schemas/parse.ts +1 -1
- package/src/schemas/schemas.ts +19 -1
- package/src/serialize/buffer_reader.ts +60 -3
- package/src/serialize/field_reader.ts +27 -3
- package/src/serialize/free_funcs.ts +25 -31
- package/src/serialize/serialize.ts +2 -0
- package/src/string/index.ts +36 -1
- package/src/testing/files/index.ts +6 -2
- package/src/testing/formatting.ts +3 -0
- package/src/testing/index.ts +1 -0
- package/src/timer/date.ts +9 -3
- package/src/timer/index.ts +1 -1
- package/src/timer/timeout.ts +54 -19
- package/src/transport/index.ts +0 -1
- package/src/transport/interface/connector.ts +0 -1
- package/src/transport/interface/listener.ts +2 -3
- package/src/transport/interface/socket.ts +2 -3
- package/src/transport/transport_client.ts +3 -4
- package/src/transport/transport_server.ts +4 -1
- package/src/trees/hasher.ts +4 -4
- package/src/trees/index.ts +1 -0
- package/src/trees/indexed_merkle_tree.ts +5 -1
- package/src/trees/indexed_merkle_tree_calculator.ts +2 -2
- package/src/trees/membership_witness.ts +13 -0
- package/src/trees/merkle_tree.ts +4 -1
- package/src/trees/merkle_tree_calculator.ts +43 -5
- package/src/trees/unbalanced_merkle_tree.ts +50 -42
- package/src/trees/unbalanced_merkle_tree_calculator.ts +194 -0
- package/src/trees/unbalanced_tree_store.ts +5 -1
- package/src/types/index.ts +25 -4
- package/src/url/index.ts +0 -1
- package/dest/crypto/pedersen/pedersen.elliptic.d.ts +0 -13
- package/dest/crypto/pedersen/pedersen.elliptic.d.ts.map +0 -1
- package/dest/crypto/pedersen/pedersen.elliptic.js +0 -582
- package/dest/log/debug.d.ts +0 -56
- package/dest/log/debug.d.ts.map +0 -1
- package/dest/log/debug.js +0 -75
- package/dest/log/log_history.d.ts +0 -31
- package/dest/log/log_history.d.ts.map +0 -1
- package/dest/log/log_history.js +0 -38
- package/dest/transport/browser/index.d.ts +0 -5
- package/dest/transport/browser/index.d.ts.map +0 -1
- package/dest/transport/browser/index.js +0 -4
- package/dest/transport/browser/message_port_socket.d.ts +0 -37
- package/dest/transport/browser/message_port_socket.d.ts.map +0 -1
- package/dest/transport/browser/message_port_socket.js +0 -42
- package/dest/transport/browser/shared_worker_connector.d.ts +0 -19
- package/dest/transport/browser/shared_worker_connector.d.ts.map +0 -1
- package/dest/transport/browser/shared_worker_connector.js +0 -19
- package/dest/transport/browser/shared_worker_listener.d.ts +0 -38
- package/dest/transport/browser/shared_worker_listener.d.ts.map +0 -1
- package/dest/transport/browser/shared_worker_listener.js +0 -33
- package/dest/transport/browser/worker_connector.d.ts +0 -26
- package/dest/transport/browser/worker_connector.d.ts.map +0 -1
- package/dest/transport/browser/worker_connector.js +0 -30
- package/dest/transport/browser/worker_listener.d.ts +0 -39
- package/dest/transport/browser/worker_listener.d.ts.map +0 -1
- package/dest/transport/browser/worker_listener.js +0 -35
- package/dest/wasm/empty_wasi_sdk.d.ts +0 -130
- package/dest/wasm/empty_wasi_sdk.d.ts.map +0 -1
- package/dest/wasm/empty_wasi_sdk.js +0 -148
- package/dest/wasm/index.d.ts +0 -2
- package/dest/wasm/index.d.ts.map +0 -1
- package/dest/wasm/index.js +0 -1
- package/dest/wasm/wasm_module.d.ts +0 -136
- package/dest/wasm/wasm_module.d.ts.map +0 -1
- package/dest/wasm/wasm_module.js +0 -196
- package/dest/worker/browser/index.d.ts +0 -3
- package/dest/worker/browser/index.d.ts.map +0 -1
- package/dest/worker/browser/index.js +0 -2
- package/dest/worker/browser/start_web_module.d.ts +0 -7
- package/dest/worker/browser/start_web_module.d.ts.map +0 -1
- package/dest/worker/browser/start_web_module.js +0 -27
- package/dest/worker/browser/web_data_store.d.ts +0 -24
- package/dest/worker/browser/web_data_store.d.ts.map +0 -1
- package/dest/worker/browser/web_data_store.js +0 -29
- package/dest/worker/browser/web_worker.d.ts +0 -10
- package/dest/worker/browser/web_worker.d.ts.map +0 -1
- package/dest/worker/browser/web_worker.js +0 -25
- package/dest/worker/data_store.d.ts +0 -21
- package/dest/worker/data_store.d.ts.map +0 -1
- package/dest/worker/data_store.js +0 -3
- package/dest/worker/index.d.ts +0 -3
- package/dest/worker/index.d.ts.map +0 -1
- package/dest/worker/index.js +0 -1
- package/dest/worker/node/index.d.ts +0 -3
- package/dest/worker/node/index.d.ts.map +0 -1
- package/dest/worker/node/index.js +0 -2
- package/dest/worker/node/node_data_store.d.ts +0 -13
- package/dest/worker/node/node_data_store.d.ts.map +0 -1
- package/dest/worker/node/node_data_store.js +0 -20
- package/dest/worker/node/node_worker.d.ts +0 -6
- package/dest/worker/node/node_worker.d.ts.map +0 -1
- package/dest/worker/node/node_worker.js +0 -22
- package/dest/worker/node/start_node_module.d.ts +0 -7
- package/dest/worker/node/start_node_module.d.ts.map +0 -1
- package/dest/worker/node/start_node_module.js +0 -31
- package/dest/worker/wasm_worker.d.ts +0 -9
- package/dest/worker/wasm_worker.d.ts.map +0 -1
- package/dest/worker/wasm_worker.js +0 -3
- package/dest/worker/worker_pool.d.ts +0 -40
- package/dest/worker/worker_pool.d.ts.map +0 -1
- package/dest/worker/worker_pool.js +0 -51
- package/src/crypto/pedersen/pedersen.elliptic.ts +0 -584
- package/src/log/debug.ts +0 -104
- package/src/log/log_history.ts +0 -44
- package/src/transport/browser/index.ts +0 -4
- package/src/transport/browser/message_port_socket.ts +0 -48
- package/src/transport/browser/shared_worker_connector.ts +0 -21
- package/src/transport/browser/shared_worker_listener.ts +0 -53
- package/src/transport/browser/worker_connector.ts +0 -30
- package/src/transport/browser/worker_listener.ts +0 -54
- package/src/wasm/README.md +0 -6
- package/src/wasm/empty_wasi_sdk.ts +0 -166
- package/src/wasm/fixtures/gcd.wasm +0 -0
- package/src/wasm/fixtures/gcd.wat +0 -27
- package/src/wasm/index.ts +0 -1
- package/src/wasm/wasm_module.ts +0 -260
- package/src/worker/browser/index.ts +0 -2
- package/src/worker/browser/start_web_module.ts +0 -24
- package/src/worker/browser/web_data_store.ts +0 -38
- package/src/worker/browser/web_worker.ts +0 -25
- package/src/worker/data_store.ts +0 -19
- package/src/worker/index.ts +0 -2
- package/src/worker/node/index.ts +0 -2
- package/src/worker/node/node_data_store.ts +0 -27
- package/src/worker/node/node_worker.ts +0 -23
- package/src/worker/node/start_node_module.ts +0 -30
- package/src/worker/wasm_worker.ts +0 -7
- package/src/worker/worker_pool.ts +0 -73
|
@@ -8,9 +8,7 @@ const log = createLogger('json-rpc:json_rpc_client');
|
|
|
8
8
|
|
|
9
9
|
export type JsonRpcFetch = (
|
|
10
10
|
host: string,
|
|
11
|
-
rpcMethod: string,
|
|
12
11
|
body: any,
|
|
13
|
-
useApiEndpoints: boolean,
|
|
14
12
|
extraHeaders?: Record<string, string>,
|
|
15
13
|
noRetry?: boolean,
|
|
16
14
|
) => Promise<{ response: any; headers: { get: (header: string) => string | null | undefined } }>;
|
|
@@ -27,45 +25,35 @@ export type JsonRpcFetch = (
|
|
|
27
25
|
*/
|
|
28
26
|
export async function defaultFetch(
|
|
29
27
|
host: string,
|
|
30
|
-
|
|
31
|
-
body: any,
|
|
32
|
-
useApiEndpoints: boolean,
|
|
28
|
+
body: unknown,
|
|
33
29
|
extraHeaders: Record<string, string> = {},
|
|
34
30
|
noRetry = false,
|
|
35
31
|
): Promise<{ response: any; headers: { get: (header: string) => string | null | undefined } }> {
|
|
36
|
-
log.debug(format(`JsonRpcClient.fetch`, host,
|
|
32
|
+
log.debug(format(`JsonRpcClient.fetch`, host, '->', body));
|
|
37
33
|
let resp: Response;
|
|
38
34
|
try {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
});
|
|
45
|
-
} else {
|
|
46
|
-
resp = await fetch(host, {
|
|
47
|
-
method: 'POST',
|
|
48
|
-
body: jsonStringify({ ...body, method: rpcMethod }),
|
|
49
|
-
headers: { 'content-type': 'application/json', ...extraHeaders },
|
|
50
|
-
});
|
|
51
|
-
}
|
|
35
|
+
resp = await fetch(host, {
|
|
36
|
+
method: 'POST',
|
|
37
|
+
body: jsonStringify(body),
|
|
38
|
+
headers: { 'content-type': 'application/json', ...extraHeaders },
|
|
39
|
+
});
|
|
52
40
|
} catch (err) {
|
|
53
|
-
const errorMessage = `Error fetching from host ${host}
|
|
41
|
+
const errorMessage = `Error fetching from host ${host}: ${inspect(err)}`;
|
|
54
42
|
throw new Error(errorMessage);
|
|
55
43
|
}
|
|
56
44
|
|
|
57
45
|
let responseJson;
|
|
58
46
|
try {
|
|
59
47
|
responseJson = await resp.json();
|
|
60
|
-
} catch
|
|
48
|
+
} catch {
|
|
61
49
|
if (!resp.ok) {
|
|
62
50
|
throw new Error(resp.statusText);
|
|
63
51
|
}
|
|
64
|
-
throw new Error(`Failed to parse body as JSON: ${resp.text()}`);
|
|
52
|
+
throw new Error(`Failed to parse body as JSON: ${await resp.text()}`);
|
|
65
53
|
}
|
|
66
54
|
|
|
67
55
|
if (!resp.ok) {
|
|
68
|
-
const errorMessage = `Error ${resp.status} from server ${host}
|
|
56
|
+
const errorMessage = `Error ${resp.status} from server ${host}: ${responseJson.error.message}`;
|
|
69
57
|
if (noRetry || (resp.status >= 400 && resp.status < 500)) {
|
|
70
58
|
throw new NoRetryError(errorMessage);
|
|
71
59
|
} else {
|
|
@@ -84,17 +72,10 @@ export async function defaultFetch(
|
|
|
84
72
|
* @returns A fetch function.
|
|
85
73
|
*/
|
|
86
74
|
export function makeFetch(retries: number[], defaultNoRetry: boolean, log?: Logger): typeof defaultFetch {
|
|
87
|
-
return async (
|
|
88
|
-
host: string,
|
|
89
|
-
rpcMethod: string,
|
|
90
|
-
body: any,
|
|
91
|
-
useApiEndpoints: boolean,
|
|
92
|
-
extraHeaders: Record<string, string> = {},
|
|
93
|
-
noRetry?: boolean,
|
|
94
|
-
) => {
|
|
75
|
+
return async (host: string, body: unknown, extraHeaders: Record<string, string> = {}, noRetry?: boolean) => {
|
|
95
76
|
return await retry(
|
|
96
|
-
() => defaultFetch(host,
|
|
97
|
-
`JsonRpcClient request
|
|
77
|
+
() => defaultFetch(host, body, extraHeaders, noRetry ?? defaultNoRetry),
|
|
78
|
+
`JsonRpcClient request to ${host}`,
|
|
98
79
|
makeBackoff(retries),
|
|
99
80
|
log,
|
|
100
81
|
false,
|
|
@@ -1,27 +1,67 @@
|
|
|
1
1
|
import { format } from 'util';
|
|
2
2
|
|
|
3
3
|
import { type Logger, createLogger } from '../../log/pino-logger.js';
|
|
4
|
+
import { type PromiseWithResolvers, promiseWithResolvers } from '../../promise/utils.js';
|
|
4
5
|
import { type ApiSchema, type ApiSchemaFor, schemaHasMethod } from '../../schemas/api.js';
|
|
6
|
+
import { jsonStringify } from '../convert.js';
|
|
5
7
|
import { type JsonRpcFetch, defaultFetch } from './fetch.js';
|
|
6
8
|
|
|
9
|
+
// batch window of 0 would capture all requests in the current sync iteration of the event loop
|
|
10
|
+
// and send them all at once in a single batch
|
|
11
|
+
// minimal latency
|
|
12
|
+
const DEFAULT_BATCH_WINDOW_MS = 0;
|
|
13
|
+
|
|
14
|
+
// the maximum size of a batched request
|
|
15
|
+
const DEFAULT_MAX_BATCH_SIZE = 100;
|
|
16
|
+
|
|
17
|
+
// 10 mb
|
|
18
|
+
const DEFAULT_MAX_REQUESTY_BODY_SIZE = 10 * 1024 * 1024;
|
|
19
|
+
|
|
7
20
|
export type SafeJsonRpcClientOptions = {
|
|
8
|
-
useApiEndpoints?: boolean;
|
|
9
21
|
namespaceMethods?: string | false;
|
|
10
22
|
fetch?: JsonRpcFetch;
|
|
11
23
|
log?: Logger;
|
|
24
|
+
batchWindowMS?: number;
|
|
25
|
+
maxBatchSize?: number;
|
|
26
|
+
maxRequestBodySize?: number;
|
|
12
27
|
onResponse?: (res: {
|
|
13
28
|
response: any;
|
|
14
29
|
headers: { get: (header: string) => string | null | undefined };
|
|
15
30
|
}) => Promise<void>;
|
|
16
31
|
};
|
|
17
32
|
|
|
33
|
+
type JsonRpcRequest = {
|
|
34
|
+
jsonrpc: '2.0';
|
|
35
|
+
id?: number;
|
|
36
|
+
method: string;
|
|
37
|
+
params?: Array<any>;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
type JsonRpcResponse =
|
|
41
|
+
| {
|
|
42
|
+
jsonrpc: '2.0';
|
|
43
|
+
id?: number;
|
|
44
|
+
result: any;
|
|
45
|
+
}
|
|
46
|
+
| {
|
|
47
|
+
jsonrpc: '2.0';
|
|
48
|
+
id?: number;
|
|
49
|
+
error: { code: number; data?: any; message: string };
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
// expose helpful information on the RPC clients such that we can recognize them later
|
|
53
|
+
const SEND_BATCH = Symbol('JsonRpcClient.sendBatch');
|
|
54
|
+
const CLIENT_ID = Symbol('JsonRpcClient.clientId');
|
|
55
|
+
|
|
56
|
+
let nextClientId = 1;
|
|
57
|
+
// keep a reference to clients so that we can force send a batch
|
|
58
|
+
const clients = new Map<number, WeakRef<{ [SEND_BATCH]: () => Promise<void> }>>();
|
|
59
|
+
|
|
18
60
|
/**
|
|
19
61
|
* Creates a Proxy object that delegates over RPC and validates outputs against a given schema.
|
|
20
62
|
* The server is expected to be a JsonRpcServer.
|
|
21
63
|
* @param host - The host URL.
|
|
22
64
|
* @param schema - The api schema to validate returned data against.
|
|
23
|
-
* @param useApiEndpoints - Whether to use the API endpoints or the default RPC endpoint.
|
|
24
|
-
* @param namespaceMethods - String value (or false/empty) to namespace all methods sent to the server. e.g. 'getInfo' -\> 'pxe_getInfo'
|
|
25
65
|
* @param fetch - The fetch implementation to use.
|
|
26
66
|
*/
|
|
27
67
|
export function createSafeJsonRpcClient<T extends object>(
|
|
@@ -31,25 +71,164 @@ export function createSafeJsonRpcClient<T extends object>(
|
|
|
31
71
|
): T {
|
|
32
72
|
const fetch = config.fetch ?? defaultFetch;
|
|
33
73
|
const log = config.log ?? createLogger('json-rpc:client');
|
|
34
|
-
const {
|
|
74
|
+
const {
|
|
75
|
+
namespaceMethods = false,
|
|
76
|
+
batchWindowMS = DEFAULT_BATCH_WINDOW_MS,
|
|
77
|
+
maxBatchSize = DEFAULT_MAX_BATCH_SIZE,
|
|
78
|
+
maxRequestBodySize = DEFAULT_MAX_REQUESTY_BODY_SIZE,
|
|
79
|
+
} = config;
|
|
35
80
|
|
|
36
81
|
let id = 0;
|
|
82
|
+
let sendBatchTimeoutHandle: NodeJS.Timeout | undefined;
|
|
83
|
+
const queue: Array<{
|
|
84
|
+
request: JsonRpcRequest;
|
|
85
|
+
deferred: PromiseWithResolvers<JsonRpcResponse>;
|
|
86
|
+
encodedLength: number;
|
|
87
|
+
}> = [];
|
|
88
|
+
|
|
89
|
+
const sendBatch = async (): Promise<void> => {
|
|
90
|
+
if (sendBatchTimeoutHandle !== undefined) {
|
|
91
|
+
clearTimeout(sendBatchTimeoutHandle);
|
|
92
|
+
sendBatchTimeoutHandle = undefined;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const rpcCalls: typeof queue = [];
|
|
96
|
+
let bodySize = 0;
|
|
97
|
+
|
|
98
|
+
while (queue.length > 0 && rpcCalls.length < maxBatchSize && bodySize < maxRequestBodySize) {
|
|
99
|
+
const item = queue[0];
|
|
100
|
+
if (!item) {
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const tmpBodySize = bodySize + item.encodedLength;
|
|
105
|
+
if (tmpBodySize >= maxRequestBodySize) {
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
bodySize = tmpBodySize;
|
|
110
|
+
queue.shift();
|
|
111
|
+
rpcCalls.push(item);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// no-op
|
|
115
|
+
if (rpcCalls.length === 0) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// schedule another call if there are more items to send
|
|
120
|
+
if (queue.length > 0) {
|
|
121
|
+
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
122
|
+
sendBatchTimeoutHandle = setTimeout(sendBatch, batchWindowMS);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
log.debug(`Executing JSON-RPC batch of size: ${rpcCalls.length} body size: ${bodySize} bytes`, {
|
|
126
|
+
methods: rpcCalls.map(({ request }) => request.method),
|
|
127
|
+
});
|
|
128
|
+
try {
|
|
129
|
+
const { response, headers } = await fetch(
|
|
130
|
+
host,
|
|
131
|
+
rpcCalls.map(({ request }) => request),
|
|
132
|
+
);
|
|
133
|
+
|
|
134
|
+
if (config.onResponse) {
|
|
135
|
+
await config.onResponse({ response, headers });
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
if (!Array.isArray(response) || response.length !== rpcCalls.length) {
|
|
139
|
+
log.warn(
|
|
140
|
+
`Invalid response received from JSON-RPC server. Expected array of responses of length ${rpcCalls.length}`,
|
|
141
|
+
{ response },
|
|
142
|
+
);
|
|
143
|
+
for (let i = 0; i < rpcCalls.length; i++) {
|
|
144
|
+
const { request, deferred } = rpcCalls[i];
|
|
145
|
+
deferred.resolve({
|
|
146
|
+
id: request.id,
|
|
147
|
+
jsonrpc: '2.0',
|
|
148
|
+
error: {
|
|
149
|
+
code: -32000,
|
|
150
|
+
data: response,
|
|
151
|
+
message: response.message ?? 'Failed request',
|
|
152
|
+
},
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
} else {
|
|
156
|
+
for (let i = 0; i < response.length; i++) {
|
|
157
|
+
const resp: JsonRpcResponse = response[i];
|
|
158
|
+
const { request, deferred } = rpcCalls[i];
|
|
159
|
+
|
|
160
|
+
if (resp.id !== request.id) {
|
|
161
|
+
log.warn(`Invalid response received at index ${i} from JSON-RPC server: id mismatch`, {
|
|
162
|
+
requestMethod: request.method,
|
|
163
|
+
requestId: request.id,
|
|
164
|
+
responseId: resp.id,
|
|
165
|
+
});
|
|
166
|
+
deferred.resolve({
|
|
167
|
+
id: request.id,
|
|
168
|
+
jsonrpc: '2.0',
|
|
169
|
+
error: {
|
|
170
|
+
code: -32001,
|
|
171
|
+
data: resp,
|
|
172
|
+
message: 'RPC id mismatch',
|
|
173
|
+
},
|
|
174
|
+
});
|
|
175
|
+
} else {
|
|
176
|
+
deferred.resolve(resp);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
} catch (err) {
|
|
181
|
+
// Re-throw ComponentsVersionsError immediately without converting to JSON-RPC error
|
|
182
|
+
// This ensures version mismatch errors are surfaced to the user instead of being hidden
|
|
183
|
+
if (err && typeof err === 'object' && 'name' in err && err.name === 'ComponentsVersionsError') {
|
|
184
|
+
// Reject all pending requests with the version error
|
|
185
|
+
for (let i = 0; i < rpcCalls.length; i++) {
|
|
186
|
+
rpcCalls[i].deferred.reject(err);
|
|
187
|
+
}
|
|
188
|
+
return; // Return early, the promises are already rejected
|
|
189
|
+
}
|
|
190
|
+
log.warn(`Failed to fetch from the remote server`, err);
|
|
191
|
+
for (let i = 0; i < rpcCalls.length; i++) {
|
|
192
|
+
const { request, deferred } = rpcCalls[i];
|
|
193
|
+
deferred.resolve({
|
|
194
|
+
id: request.id,
|
|
195
|
+
jsonrpc: '2.0',
|
|
196
|
+
error: {
|
|
197
|
+
code: -32000,
|
|
198
|
+
data: err,
|
|
199
|
+
message: (err as any).message ?? 'Failed request',
|
|
200
|
+
},
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
|
|
37
206
|
const request = async (methodName: string, params: any[]): Promise<any> => {
|
|
38
207
|
if (!schemaHasMethod(schema, methodName)) {
|
|
39
208
|
throw new Error(`Unspecified method ${methodName} in client schema`);
|
|
40
209
|
}
|
|
41
210
|
const method = namespaceMethods ? `${namespaceMethods}_${methodName}` : methodName;
|
|
42
|
-
const body = { jsonrpc: '2.0', id: id++, method, params };
|
|
211
|
+
const body: JsonRpcRequest = { jsonrpc: '2.0', id: id++, method, params };
|
|
212
|
+
|
|
213
|
+
const deferred = promiseWithResolvers<JsonRpcResponse>();
|
|
214
|
+
const encodedLength = jsonStringify(body).length;
|
|
215
|
+
if (encodedLength >= maxRequestBodySize) {
|
|
216
|
+
throw new Error(`Request body too large: ${encodedLength}`);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
queue.push({ request: body, deferred, encodedLength });
|
|
220
|
+
|
|
221
|
+
if (sendBatchTimeoutHandle === undefined) {
|
|
222
|
+
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
223
|
+
sendBatchTimeoutHandle = setTimeout(sendBatch, batchWindowMS);
|
|
224
|
+
}
|
|
43
225
|
|
|
44
226
|
log.debug(format(`request`, method, params));
|
|
45
|
-
const
|
|
227
|
+
const response = await deferred.promise;
|
|
46
228
|
log.debug(format(`result`, method, response));
|
|
47
229
|
|
|
48
|
-
if (
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
if (response.error) {
|
|
52
|
-
throw response.error;
|
|
230
|
+
if ('error' in response) {
|
|
231
|
+
throw new Error(response.error.message, { cause: response.error });
|
|
53
232
|
}
|
|
54
233
|
// TODO(palla/schemas): Find a better way to handle null responses (JSON.stringify(null) is string "null").
|
|
55
234
|
if ([null, undefined, 'null', 'undefined'].includes(response.result)) {
|
|
@@ -58,10 +237,44 @@ export function createSafeJsonRpcClient<T extends object>(
|
|
|
58
237
|
return (schema as ApiSchema)[methodName].returnType().parseAsync(response.result);
|
|
59
238
|
};
|
|
60
239
|
|
|
61
|
-
const
|
|
240
|
+
const clientId = nextClientId++;
|
|
241
|
+
const proxy: any = { [CLIENT_ID]: clientId, [SEND_BATCH]: sendBatch };
|
|
62
242
|
for (const method of Object.keys(schema)) {
|
|
63
|
-
|
|
243
|
+
// attach the clientId to the promise so that if we want to trigger a batch immediately, we can do that
|
|
244
|
+
proxy[method] = (...params: any[]) => Object.assign(request(method, params), { [CLIENT_ID]: clientId });
|
|
64
245
|
}
|
|
65
246
|
|
|
247
|
+
clients.set(clientId, new WeakRef(proxy));
|
|
248
|
+
|
|
66
249
|
return proxy as T;
|
|
67
250
|
}
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Triggers a batch to be sent immediately
|
|
254
|
+
*/
|
|
255
|
+
export async function batch<T extends readonly unknown[]>(
|
|
256
|
+
values: T,
|
|
257
|
+
): Promise<{ -readonly [P in keyof T]: Awaited<T[P]> }> {
|
|
258
|
+
const clientIdsSeen = new Set<number>();
|
|
259
|
+
|
|
260
|
+
await Promise.allSettled(
|
|
261
|
+
values.map(val => {
|
|
262
|
+
if (typeof val === 'object' && val && Object.hasOwn(val, CLIENT_ID)) {
|
|
263
|
+
const clientId = (val as { [CLIENT_ID]: any })[CLIENT_ID];
|
|
264
|
+
if (typeof clientId === 'number') {
|
|
265
|
+
if (clientIdsSeen.has(clientId)) {
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
clientIdsSeen.add(clientId);
|
|
270
|
+
const client = clients.get(clientId)?.deref();
|
|
271
|
+
if (client) {
|
|
272
|
+
return client[SEND_BATCH]();
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}),
|
|
277
|
+
);
|
|
278
|
+
|
|
279
|
+
return Promise.all(values);
|
|
280
|
+
}
|
|
@@ -10,21 +10,14 @@ const log = createLogger('json-rpc:json_rpc_client:undici');
|
|
|
10
10
|
export { Agent };
|
|
11
11
|
|
|
12
12
|
export function makeUndiciFetch(client = new Agent()): JsonRpcFetch {
|
|
13
|
-
return async (
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
body: any,
|
|
17
|
-
useApiEndpoints: boolean,
|
|
18
|
-
extraHeaders: Record<string, string> = {},
|
|
19
|
-
noRetry = false,
|
|
20
|
-
) => {
|
|
21
|
-
log.trace(`JsonRpcClient.fetch: ${host} ${rpcMethod}`, { host, rpcMethod, body });
|
|
22
|
-
let resp: Dispatcher.ResponseData<string>;
|
|
13
|
+
return async (host: string, body: unknown, extraHeaders: Record<string, string> = {}, noRetry = false) => {
|
|
14
|
+
log.trace(`JsonRpcClient.fetch: ${host}`, { host, body });
|
|
15
|
+
let resp: Dispatcher.ResponseData;
|
|
23
16
|
try {
|
|
24
|
-
resp = await client.request
|
|
17
|
+
resp = await client.request({
|
|
25
18
|
method: 'POST',
|
|
26
19
|
origin: new URL(host),
|
|
27
|
-
path:
|
|
20
|
+
path: '/',
|
|
28
21
|
body: jsonStringify(body),
|
|
29
22
|
headers: {
|
|
30
23
|
...extraHeaders,
|
|
@@ -32,7 +25,7 @@ export function makeUndiciFetch(client = new Agent()): JsonRpcFetch {
|
|
|
32
25
|
},
|
|
33
26
|
});
|
|
34
27
|
} catch (err) {
|
|
35
|
-
const errorMessage = `Error fetching from host ${host}
|
|
28
|
+
const errorMessage = `Error fetching from host ${host}: ${String(err)}`;
|
|
36
29
|
throw new Error(errorMessage);
|
|
37
30
|
}
|
|
38
31
|
|
|
@@ -40,7 +33,7 @@ export function makeUndiciFetch(client = new Agent()): JsonRpcFetch {
|
|
|
40
33
|
const responseOk = resp.statusCode >= 200 && resp.statusCode <= 299;
|
|
41
34
|
try {
|
|
42
35
|
responseJson = await resp.body.json();
|
|
43
|
-
} catch
|
|
36
|
+
} catch {
|
|
44
37
|
if (!responseOk) {
|
|
45
38
|
throw new Error('HTTP ' + resp.statusCode);
|
|
46
39
|
}
|
|
@@ -48,7 +41,7 @@ export function makeUndiciFetch(client = new Agent()): JsonRpcFetch {
|
|
|
48
41
|
}
|
|
49
42
|
|
|
50
43
|
if (!responseOk) {
|
|
51
|
-
const errorMessage = `Error ${resp.statusCode} response from server ${host}
|
|
44
|
+
const errorMessage = `Error ${resp.statusCode} response from server ${host}: ${responseJson}`;
|
|
52
45
|
if (noRetry || (resp.statusCode >= 400 && resp.statusCode < 500)) {
|
|
53
46
|
throw new NoRetryError(errorMessage);
|
|
54
47
|
} else {
|
package/src/json-rpc/convert.ts
CHANGED
|
@@ -8,16 +8,7 @@ import type { ZodFor } from '../schemas/types.js';
|
|
|
8
8
|
* @param schema - Zod schema.
|
|
9
9
|
* @returns Result of parsing json with schema.
|
|
10
10
|
*/
|
|
11
|
-
export function jsonParseWithSchema<T>(json: string, schema: ZodFor<T>):
|
|
12
|
-
return schema.parseAsync(JSON.parse(json));
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Parses a json string and then feeds it to a zod schema.
|
|
16
|
-
* @param json - JSON string.
|
|
17
|
-
* @param schema - Zod schema.
|
|
18
|
-
* @returns Result of parsing json with schema.
|
|
19
|
-
*/
|
|
20
|
-
export function jsonParseWithSchemaSync<T>(json: string, schema: ZodFor<T>): T {
|
|
11
|
+
export function jsonParseWithSchema<T>(json: string, schema: ZodFor<T>): T {
|
|
21
12
|
return schema.parse(JSON.parse(json));
|
|
22
13
|
}
|
|
23
14
|
|
|
@@ -26,7 +17,7 @@ export function jsonParseWithSchemaSync<T>(json: string, schema: ZodFor<T>): T {
|
|
|
26
17
|
* @param obj - The object to be stringified.
|
|
27
18
|
* @returns The resulting string.
|
|
28
19
|
*/
|
|
29
|
-
export function jsonStringify(obj:
|
|
20
|
+
export function jsonStringify(obj: unknown, prettify?: boolean): string {
|
|
30
21
|
return JSON.stringify(
|
|
31
22
|
obj,
|
|
32
23
|
(_key, value) => {
|
|
@@ -55,7 +46,7 @@ export function jsonStringify(obj: object, prettify?: boolean): string {
|
|
|
55
46
|
export function tryJsonStringify(obj: any, prettify?: boolean): string | undefined {
|
|
56
47
|
try {
|
|
57
48
|
return jsonStringify(obj, prettify);
|
|
58
|
-
} catch
|
|
49
|
+
} catch {
|
|
59
50
|
return undefined;
|
|
60
51
|
}
|
|
61
52
|
}
|
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
* Test class for testing string converter.
|
|
3
3
|
*/
|
|
4
4
|
export class ToStringClass {
|
|
5
|
-
constructor(
|
|
5
|
+
constructor(
|
|
6
|
+
/** A value */ public readonly x: string,
|
|
7
|
+
/** Another value */ public readonly y: string,
|
|
8
|
+
) {}
|
|
6
9
|
|
|
7
10
|
toString(): string {
|
|
8
11
|
return [this.x, this.y].join('-');
|
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
* Test class for testing string converter.
|
|
3
3
|
*/
|
|
4
4
|
export class ToStringClass {
|
|
5
|
-
constructor(
|
|
5
|
+
constructor(
|
|
6
|
+
/** A value */ public readonly x: string,
|
|
7
|
+
/** Another value */ public readonly y: string,
|
|
8
|
+
) {}
|
|
6
9
|
|
|
7
10
|
toString(): string {
|
|
8
11
|
return [this.x, this.y].join('-');
|
package/src/json-rpc/index.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export { jsonStringify, jsonParseWithSchema,
|
|
1
|
+
export { jsonStringify, jsonParseWithSchema, tryJsonStringify } from './convert.js';
|
|
2
|
+
export { BadRequestError } from './errors.js';
|