@aztec/foundation 0.0.0-test.1 → 0.0.1-commit.1142ef1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/array/array.d.ts +6 -9
- package/dest/array/array.d.ts.map +1 -1
- package/dest/array/array.js +11 -11
- package/dest/array/index.d.ts +2 -1
- package/dest/array/index.d.ts.map +1 -1
- package/dest/array/index.js +1 -0
- package/dest/array/sorted_array.d.ts +10 -0
- package/dest/array/sorted_array.d.ts.map +1 -0
- package/dest/array/sorted_array.js +106 -0
- package/dest/async-map/index.d.ts +1 -1
- package/dest/async-pool/index.d.ts +1 -1
- package/dest/async-pool/index.d.ts.map +1 -1
- package/dest/async-pool/index.js +1 -0
- package/dest/bigint/index.d.ts +7 -0
- package/dest/bigint/index.d.ts.map +1 -0
- package/dest/bigint/index.js +15 -0
- package/dest/bigint-buffer/index.d.ts +1 -3
- package/dest/bigint-buffer/index.d.ts.map +1 -1
- package/dest/branded-types/block_number.d.ts +53 -0
- package/dest/branded-types/block_number.d.ts.map +1 -0
- package/dest/branded-types/block_number.js +75 -0
- package/dest/branded-types/checkpoint_number.d.ts +54 -0
- package/dest/branded-types/checkpoint_number.d.ts.map +1 -0
- package/dest/branded-types/checkpoint_number.js +77 -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 +6 -0
- package/dest/branded-types/index.d.ts.map +1 -0
- package/dest/branded-types/index.js +4 -0
- package/dest/branded-types/slot.d.ts +42 -0
- package/dest/branded-types/slot.d.ts.map +1 -0
- package/dest/branded-types/slot.js +59 -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 +77 -0
- package/dest/buffer/buffer16.d.ts.map +1 -0
- package/dest/buffer/buffer16.js +102 -0
- package/dest/buffer/buffer32.d.ts +5 -12
- package/dest/buffer/buffer32.d.ts.map +1 -1
- package/dest/buffer/buffer32.js +9 -7
- package/dest/buffer/index.d.ts +2 -1
- package/dest/buffer/index.d.ts.map +1 -1
- package/dest/buffer/index.js +1 -0
- package/dest/collection/array.d.ts +17 -4
- package/dest/collection/array.d.ts.map +1 -1
- package/dest/collection/array.js +57 -3
- package/dest/collection/index.d.ts +1 -1
- package/dest/collection/object.d.ts +17 -1
- package/dest/collection/object.d.ts.map +1 -1
- package/dest/collection/object.js +25 -0
- package/dest/committable/committable.d.ts +1 -1
- package/dest/committable/committable.d.ts.map +1 -1
- package/dest/committable/index.d.ts +1 -1
- package/dest/config/env_var.d.ts +2 -2
- package/dest/config/env_var.d.ts.map +1 -1
- package/dest/config/index.d.ts +58 -4
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +129 -12
- package/dest/config/network_config.d.ts +54 -0
- package/dest/config/network_config.d.ts.map +1 -0
- package/dest/config/network_config.js +11 -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 +3 -5
- package/dest/crypto/aes128/index.d.ts.map +1 -1
- package/dest/crypto/aes128/index.js +19 -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/index.d.ts +39 -0
- package/dest/crypto/bn254/index.d.ts.map +1 -0
- package/dest/crypto/bn254/index.js +56 -0
- package/dest/crypto/ecdsa/index.d.ts +3 -3
- package/dest/crypto/ecdsa/index.d.ts.map +1 -1
- package/dest/crypto/ecdsa/index.js +62 -48
- package/dest/crypto/ecdsa/signature.d.ts +3 -14
- package/dest/crypto/ecdsa/signature.d.ts.map +1 -1
- package/dest/crypto/ecdsa/signature.js +2 -2
- package/dest/crypto/grumpkin/index.d.ts +10 -15
- package/dest/crypto/grumpkin/index.d.ts.map +1 -1
- package/dest/crypto/grumpkin/index.js +61 -55
- package/dest/crypto/keccak/index.d.ts +3 -5
- package/dest/crypto/keccak/index.d.ts.map +1 -1
- package/dest/crypto/keys/index.d.ts +2 -4
- package/dest/crypto/keys/index.d.ts.map +1 -1
- package/dest/crypto/keys/index.js +8 -5
- package/dest/crypto/pedersen/index.d.ts +1 -1
- package/dest/crypto/pedersen/pedersen.noble.d.ts +3 -5
- package/dest/crypto/pedersen/pedersen.noble.d.ts.map +1 -1
- package/dest/crypto/pedersen/pedersen.wasm.d.ts +4 -6
- package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -1
- package/dest/crypto/pedersen/pedersen.wasm.js +24 -14
- package/dest/crypto/poseidon/index.d.ts +2 -4
- package/dest/crypto/poseidon/index.d.ts.map +1 -1
- package/dest/crypto/poseidon/index.js +33 -18
- package/dest/crypto/random/index.d.ts +2 -4
- package/dest/crypto/random/index.d.ts.map +1 -1
- package/dest/crypto/random/index.js +2 -34
- package/dest/crypto/random/randomness_singleton.d.ts +2 -4
- package/dest/crypto/random/randomness_singleton.d.ts.map +1 -1
- package/dest/crypto/random/randomness_singleton.js +3 -3
- package/dest/crypto/schnorr/index.d.ts +3 -2
- package/dest/crypto/schnorr/index.d.ts.map +1 -1
- package/dest/crypto/schnorr/index.js +30 -38
- package/dest/crypto/schnorr/signature.d.ts +5 -7
- package/dest/crypto/schnorr/signature.d.ts.map +1 -1
- package/dest/crypto/schnorr/signature.js +2 -2
- package/dest/crypto/secp256k1/index.d.ts +5 -7
- package/dest/crypto/secp256k1/index.d.ts.map +1 -1
- package/dest/crypto/secp256k1/index.js +23 -18
- package/dest/crypto/secp256k1-signer/index.d.ts +1 -1
- package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts +1 -1
- package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts.map +1 -1
- package/dest/crypto/secp256k1-signer/utils.d.ts +56 -5
- 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 +5 -7
- package/dest/crypto/serialize.d.ts.map +1 -1
- package/dest/crypto/sha256/index.d.ts +23 -6
- package/dest/crypto/sha256/index.d.ts.map +1 -1
- package/dest/crypto/sha256/index.js +43 -1
- package/dest/crypto/sha512/index.d.ts +3 -5
- package/dest/crypto/sha512/index.d.ts.map +1 -1
- package/dest/crypto/sha512/index.js +1 -1
- package/dest/crypto/signature/index.d.ts +2 -4
- package/dest/crypto/signature/index.d.ts.map +1 -1
- package/dest/crypto/sync/index.d.ts +1 -1
- package/dest/crypto/sync/index.js +1 -1
- package/dest/crypto/sync/pedersen/index.d.ts +4 -6
- package/dest/crypto/sync/pedersen/index.d.ts.map +1 -1
- package/dest/crypto/sync/pedersen/index.js +18 -11
- package/dest/crypto/sync/poseidon/index.d.ts +2 -4
- package/dest/crypto/sync/poseidon/index.d.ts.map +1 -1
- package/dest/crypto/sync/poseidon/index.js +28 -13
- 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 +362 -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 +220 -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 +180 -0
- package/dest/curves/bn254/field.d.ts.map +1 -0
- package/dest/{fields/fields.js → curves/bn254/field.js} +90 -62
- package/dest/curves/bn254/index.d.ts +3 -0
- package/dest/curves/bn254/index.d.ts.map +1 -0
- package/dest/curves/bn254/index.js +2 -0
- package/dest/curves/bn254/point.d.ts +54 -0
- package/dest/curves/bn254/point.d.ts.map +1 -0
- package/dest/curves/bn254/point.js +143 -0
- package/dest/curves/grumpkin/index.d.ts +10 -0
- package/dest/curves/grumpkin/index.d.ts.map +1 -0
- package/dest/curves/grumpkin/index.js +3 -0
- package/dest/{fields → curves/grumpkin}/point.d.ts +15 -17
- package/dest/curves/grumpkin/point.d.ts.map +1 -0
- package/dest/{fields → curves/grumpkin}/point.js +27 -10
- package/dest/decorators/index.d.ts +1 -1
- package/dest/decorators/memoize.d.ts +1 -1
- package/dest/decorators/memoize.d.ts.map +1 -1
- package/dest/error/index.d.ts +4 -4
- package/dest/error/index.d.ts.map +1 -1
- package/dest/eth-address/index.d.ts +18 -9
- package/dest/eth-address/index.d.ts.map +1 -1
- package/dest/eth-address/index.js +31 -2
- package/dest/eth-signature/eth_signature.d.ts +17 -18
- package/dest/eth-signature/eth_signature.d.ts.map +1 -1
- package/dest/eth-signature/eth_signature.js +31 -17
- package/dest/eth-signature/index.d.ts +1 -1
- package/dest/fs/index.d.ts +2 -1
- package/dest/fs/index.d.ts.map +1 -1
- package/dest/fs/index.js +1 -0
- package/dest/fs/run_in_dir.d.ts +1 -1
- package/dest/fs/try_rm_dir.d.ts +3 -0
- package/dest/fs/try_rm_dir.d.ts.map +1 -0
- package/dest/fs/try_rm_dir.js +16 -0
- package/dest/iterable/all.d.ts +1 -1
- package/dest/iterable/filter.d.ts +1 -1
- package/dest/iterable/filter.js +1 -1
- package/dest/iterable/index.d.ts +1 -1
- package/dest/iterable/isAsyncIt.d.ts +1 -1
- package/dest/iterable/map.d.ts +1 -1
- package/dest/iterable/map.js +1 -1
- package/dest/iterable/peek.d.ts +1 -1
- package/dest/iterable/sort.d.ts +1 -1
- package/dest/iterable/take.d.ts +1 -1
- package/dest/iterable/toArray.d.ts +1 -1
- package/dest/iterator/filter.d.ts +3 -0
- package/dest/iterator/filter.d.ts.map +1 -0
- package/dest/iterator/filter.js +7 -0
- package/dest/iterator/index.d.ts +2 -0
- package/dest/iterator/index.d.ts.map +1 -0
- package/dest/iterator/index.js +1 -0
- package/dest/jest/env.js +48 -0
- package/dest/jest/setupAfterEnv.js +3 -0
- package/dest/json-rpc/client/fetch.d.ts +3 -3
- package/dest/json-rpc/client/fetch.d.ts.map +1 -1
- package/dest/json-rpc/client/fetch.js +16 -30
- package/dest/json-rpc/client/index.d.ts +1 -1
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts +10 -4
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -1
- package/dest/json-rpc/client/safe_json_rpc_client.js +173 -13
- package/dest/json-rpc/client/undici.d.ts +1 -1
- package/dest/json-rpc/client/undici.d.ts.map +1 -1
- package/dest/json-rpc/client/undici.js +6 -7
- package/dest/json-rpc/convert.d.ts +3 -10
- package/dest/json-rpc/convert.d.ts.map +1 -1
- package/dest/json-rpc/convert.js +1 -9
- package/dest/json-rpc/errors.d.ts +4 -0
- package/dest/json-rpc/errors.d.ts.map +1 -0
- package/dest/json-rpc/errors.js +6 -0
- package/dest/json-rpc/fixtures/class_a.d.ts +4 -2
- package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -1
- package/dest/json-rpc/fixtures/class_b.d.ts +4 -2
- package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -1
- package/dest/json-rpc/fixtures/test_state.d.ts +1 -1
- package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -1
- package/dest/json-rpc/index.d.ts +3 -2
- package/dest/json-rpc/index.d.ts.map +1 -1
- package/dest/json-rpc/index.js +2 -1
- package/dest/json-rpc/js_utils.d.ts +1 -1
- package/dest/json-rpc/js_utils.d.ts.map +1 -1
- package/dest/json-rpc/server/index.d.ts +1 -1
- package/dest/json-rpc/server/safe_json_rpc_server.d.ts +22 -23
- 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/index.d.ts +1 -1
- package/dest/json-rpc/test/integration.d.ts +2 -3
- package/dest/json-rpc/test/integration.d.ts.map +1 -1
- package/dest/log/console.d.ts +1 -1
- package/dest/log/console.d.ts.map +1 -1
- package/dest/log/gcloud-logger-config.d.ts +1 -2
- package/dest/log/gcloud-logger-config.d.ts.map +1 -1
- package/dest/log/gcloud-logger-config.js +1 -9
- package/dest/log/index.d.ts +5 -5
- package/dest/log/index.d.ts.map +1 -1
- package/dest/log/index.js +4 -4
- package/dest/log/libp2p_logger.d.ts +1 -1
- package/dest/log/libp2p_logger.js +13 -2
- package/dest/log/log-filters.d.ts +1 -1
- package/dest/log/log-levels.d.ts +1 -1
- package/dest/log/log_fn.d.ts +2 -2
- package/dest/log/log_fn.d.ts.map +1 -1
- package/dest/log/noir_debug_log_util.d.ts +14 -0
- package/dest/log/noir_debug_log_util.d.ts.map +1 -0
- package/dest/log/noir_debug_log_util.js +14 -0
- package/dest/log/pino-logger.d.ts +4 -4
- package/dest/log/pino-logger.d.ts.map +1 -1
- package/dest/log/pino-logger.js +29 -3
- package/dest/message/index.d.ts +1 -1
- package/dest/message/index.d.ts.map +1 -1
- package/dest/mutex/index.d.ts +1 -1
- package/dest/mutex/index.d.ts.map +1 -1
- package/dest/mutex/mutex_database.d.ts +1 -1
- package/dest/mutex/mutex_database.d.ts.map +1 -1
- package/dest/noir/index.d.ts +1 -1
- package/dest/noir/noir_package_config.d.ts +9 -9
- package/dest/number/index.d.ts +3 -0
- package/dest/number/index.d.ts.map +1 -0
- package/dest/number/index.js +12 -0
- package/dest/profiler/index.d.ts +2 -0
- package/dest/profiler/index.d.ts.map +1 -0
- package/dest/profiler/index.js +1 -0
- package/dest/profiler/profiler.d.ts +8 -0
- package/dest/profiler/profiler.d.ts.map +1 -0
- package/dest/profiler/profiler.js +97 -0
- package/dest/promise/index.d.ts +1 -1
- package/dest/promise/running-promise.d.ts +2 -2
- package/dest/promise/running-promise.d.ts.map +1 -1
- package/dest/promise/running-promise.js +2 -2
- package/dest/promise/utils.d.ts +1 -1
- package/dest/queue/base_memory_queue.d.ts +1 -1
- package/dest/queue/base_memory_queue.d.ts.map +1 -1
- package/dest/queue/batch_queue.d.ts +2 -2
- package/dest/queue/batch_queue.d.ts.map +1 -1
- package/dest/queue/batch_queue.js +1 -1
- package/dest/queue/bounded_serial_queue.d.ts +1 -1
- package/dest/queue/bounded_serial_queue.d.ts.map +1 -1
- package/dest/queue/fifo_memory_queue.d.ts +1 -1
- package/dest/queue/fifo_memory_queue.d.ts.map +1 -1
- package/dest/queue/index.d.ts +1 -1
- package/dest/queue/priority_memory_queue.d.ts +1 -1
- package/dest/queue/priority_memory_queue.d.ts.map +1 -1
- package/dest/queue/priority_queue.d.ts +1 -1
- package/dest/queue/priority_queue.d.ts.map +1 -1
- package/dest/queue/semaphore.d.ts +1 -1
- package/dest/queue/semaphore.d.ts.map +1 -1
- package/dest/queue/serial_queue.d.ts +3 -3
- package/dest/queue/serial_queue.d.ts.map +1 -1
- package/dest/queue/serial_queue.js +7 -5
- package/dest/retry/index.d.ts +4 -3
- package/dest/retry/index.d.ts.map +1 -1
- package/dest/retry/index.js +2 -2
- package/dest/running-promise/index.d.ts +1 -1
- package/dest/schemas/api.d.ts +1 -1
- package/dest/schemas/api.d.ts.map +1 -1
- package/dest/schemas/index.d.ts +1 -1
- package/dest/schemas/parse.d.ts +1 -1
- package/dest/schemas/parse.js +1 -1
- package/dest/schemas/schemas.d.ts +21 -20
- package/dest/schemas/schemas.d.ts.map +1 -1
- package/dest/schemas/schemas.js +29 -11
- package/dest/schemas/types.d.ts +31 -1
- package/dest/schemas/types.d.ts.map +1 -1
- package/dest/schemas/types.js +25 -1
- package/dest/schemas/utils.d.ts +4 -6
- package/dest/schemas/utils.d.ts.map +1 -1
- package/dest/schemas/utils.js +15 -5
- package/dest/serialize/buffer_reader.d.ts +28 -3
- 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 +12 -3
- package/dest/serialize/field_reader.d.ts.map +1 -1
- package/dest/serialize/field_reader.js +19 -2
- package/dest/serialize/free_funcs.d.ts +25 -23
- package/dest/serialize/free_funcs.d.ts.map +1 -1
- package/dest/serialize/free_funcs.js +22 -28
- package/dest/serialize/index.d.ts +1 -1
- package/dest/serialize/serialize.d.ts +6 -7
- package/dest/serialize/serialize.d.ts.map +1 -1
- package/dest/serialize/serialize.js +1 -1
- package/dest/serialize/type_registry.d.ts +1 -1
- package/dest/serialize/type_registry.d.ts.map +1 -1
- package/dest/serialize/types.d.ts +1 -1
- package/dest/sleep/index.d.ts +3 -1
- package/dest/sleep/index.d.ts.map +1 -1
- package/dest/sleep/index.js +4 -0
- package/dest/string/index.d.ts +8 -3
- package/dest/string/index.d.ts.map +1 -1
- package/dest/string/index.js +27 -1
- package/dest/testing/files/index.d.ts +2 -3
- package/dest/testing/files/index.d.ts.map +1 -1
- package/dest/testing/files/index.js +3 -3
- package/dest/testing/formatting.d.ts +4 -0
- package/dest/testing/formatting.d.ts.map +1 -0
- package/dest/testing/formatting.js +3 -0
- package/dest/testing/index.d.ts +2 -1
- package/dest/testing/index.d.ts.map +1 -1
- package/dest/testing/index.js +1 -0
- package/dest/testing/port_allocator.d.ts +1 -1
- package/dest/testing/snapshot_serializer.d.ts +1 -1
- package/dest/testing/test_data.d.ts +1 -1
- package/dest/timer/date.d.ts +4 -2
- package/dest/timer/date.d.ts.map +1 -1
- package/dest/timer/date.js +8 -3
- package/dest/timer/elapsed.d.ts +1 -1
- package/dest/timer/index.d.ts +2 -2
- package/dest/timer/index.d.ts.map +1 -1
- package/dest/timer/index.js +1 -1
- package/dest/timer/timeout.d.ts +19 -6
- package/dest/timer/timeout.d.ts.map +1 -1
- package/dest/timer/timeout.js +43 -22
- package/dest/timer/timer.d.ts +1 -1
- package/dest/timer/timer.d.ts.map +1 -1
- package/dest/transport/dispatch/create_dispatch_fn.d.ts +1 -1
- package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +1 -1
- package/dest/transport/dispatch/create_dispatch_proxy.d.ts +1 -1
- package/dest/transport/dispatch/messages.d.ts +1 -1
- package/dest/transport/index.d.ts +1 -2
- package/dest/transport/index.d.ts.map +1 -1
- package/dest/transport/index.js +0 -1
- package/dest/transport/interface/connector.d.ts +1 -1
- package/dest/transport/interface/connector.d.ts.map +1 -1
- package/dest/transport/interface/listener.d.ts +1 -2
- package/dest/transport/interface/listener.d.ts.map +1 -1
- package/dest/transport/interface/socket.d.ts +1 -1
- package/dest/transport/interface/socket.d.ts.map +1 -1
- package/dest/transport/interface/transferable.d.ts +1 -1
- package/dest/transport/node/index.d.ts +1 -1
- package/dest/transport/node/node_connector.d.ts +1 -2
- package/dest/transport/node/node_connector.d.ts.map +1 -1
- package/dest/transport/node/node_connector_socket.d.ts +1 -2
- package/dest/transport/node/node_connector_socket.d.ts.map +1 -1
- package/dest/transport/node/node_listener.d.ts +1 -2
- package/dest/transport/node/node_listener.d.ts.map +1 -1
- package/dest/transport/node/node_listener_socket.d.ts +1 -2
- package/dest/transport/node/node_listener_socket.d.ts.map +1 -1
- package/dest/transport/transport_client.d.ts +1 -2
- package/dest/transport/transport_client.d.ts.map +1 -1
- package/dest/transport/transport_server.d.ts +1 -10
- package/dest/transport/transport_server.d.ts.map +1 -1
- package/dest/trees/balanced_merkle_tree.d.ts +22 -0
- package/dest/trees/balanced_merkle_tree.d.ts.map +1 -0
- package/dest/trees/balanced_merkle_tree.js +66 -0
- package/dest/trees/hasher.d.ts +5 -7
- package/dest/trees/hasher.d.ts.map +1 -1
- package/dest/trees/index.d.ts +3 -1
- package/dest/trees/index.d.ts.map +1 -1
- package/dest/trees/index.js +2 -0
- package/dest/trees/indexed_merkle_tree.d.ts +1 -3
- package/dest/trees/indexed_merkle_tree.d.ts.map +1 -1
- package/dest/trees/indexed_merkle_tree.js +1 -1
- package/dest/trees/indexed_merkle_tree_calculator.d.ts +2 -4
- package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -1
- package/dest/trees/indexed_tree_leaf.d.ts +1 -3
- package/dest/trees/indexed_tree_leaf.d.ts.map +1 -1
- package/dest/trees/membership_witness.d.ts +6 -11
- package/dest/trees/membership_witness.d.ts.map +1 -1
- package/dest/trees/membership_witness.js +14 -1
- package/dest/trees/merkle_tree.d.ts +1 -3
- package/dest/trees/merkle_tree.d.ts.map +1 -1
- package/dest/trees/merkle_tree_calculator.d.ts +2 -4
- package/dest/trees/merkle_tree_calculator.d.ts.map +1 -1
- package/dest/trees/merkle_tree_calculator.js +1 -1
- package/dest/trees/sibling_path.d.ts +6 -42
- package/dest/trees/sibling_path.d.ts.map +1 -1
- package/dest/trees/sibling_path.js +2 -2
- package/dest/trees/unbalanced_merkle_tree.d.ts +25 -10
- package/dest/trees/unbalanced_merkle_tree.d.ts.map +1 -1
- package/dest/trees/unbalanced_merkle_tree.js +78 -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 +154 -0
- package/dest/trees/unbalanced_tree_store.d.ts +2 -1
- 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 +28 -3
- package/dest/types/index.d.ts.map +1 -1
- package/dest/types/index.js +3 -0
- package/dest/url/index.d.ts +1 -1
- package/dest/url/index.d.ts.map +1 -1
- package/dest/url/index.js +1 -1
- package/dest/validation/index.d.ts +1 -1
- package/package.json +59 -45
- package/src/array/array.ts +13 -16
- package/src/array/index.ts +1 -0
- package/src/array/sorted_array.ts +133 -0
- package/src/async-pool/index.ts +1 -0
- package/src/bigint/index.ts +20 -0
- package/src/branded-types/block_number.ts +112 -0
- package/src/branded-types/checkpoint_number.ts +115 -0
- package/src/branded-types/epoch.ts +88 -0
- package/src/branded-types/index.ts +6 -0
- package/src/branded-types/slot.ts +88 -0
- package/src/branded-types/types.ts +2 -0
- package/src/buffer/buffer16.ts +133 -0
- package/src/buffer/buffer32.ts +10 -8
- 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 +177 -58
- package/src/config/index.ts +209 -10
- package/src/config/network_config.ts +18 -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 +19 -10
- package/src/crypto/bls/bn254_keystore.ts +287 -0
- package/src/crypto/bls/index.ts +77 -0
- package/src/crypto/bn254/index.ts +64 -0
- package/src/crypto/ecdsa/index.ts +41 -23
- package/src/crypto/ecdsa/signature.ts +2 -2
- package/src/crypto/grumpkin/index.ts +38 -46
- package/src/crypto/keys/index.ts +6 -6
- package/src/crypto/pedersen/pedersen.wasm.ts +23 -19
- package/src/crypto/poseidon/index.ts +33 -25
- package/src/crypto/random/index.ts +2 -40
- package/src/crypto/random/randomness_singleton.ts +2 -4
- package/src/crypto/schnorr/index.ts +22 -18
- package/src/crypto/schnorr/signature.ts +2 -2
- package/src/crypto/secp256k1/index.ts +15 -11
- package/src/crypto/secp256k1-signer/utils.ts +120 -7
- package/src/crypto/sha256/index.ts +48 -1
- package/src/crypto/sha512/index.ts +1 -1
- package/src/crypto/signature/index.ts +1 -1
- package/src/crypto/sync/index.ts +1 -1
- package/src/crypto/sync/pedersen/index.ts +17 -16
- package/src/crypto/sync/poseidon/index.ts +28 -23
- package/src/curves/bls12/field.ts +463 -0
- package/src/curves/bls12/index.ts +2 -0
- package/src/curves/bls12/point.ts +450 -0
- package/src/{fields/fields.ts → curves/bn254/field.ts} +84 -63
- package/src/curves/bn254/index.ts +2 -0
- package/src/curves/bn254/point.ts +170 -0
- package/src/curves/grumpkin/index.ts +11 -0
- package/src/{fields → curves/grumpkin}/point.ts +27 -10
- package/src/eth-address/index.ts +35 -3
- package/src/eth-signature/eth_signature.ts +44 -22
- package/src/fs/index.ts +1 -0
- package/src/fs/try_rm_dir.ts +15 -0
- package/src/iterable/filter.ts +1 -1
- package/src/iterable/map.ts +1 -1
- package/src/iterator/filter.ts +11 -0
- package/src/iterator/index.ts +1 -0
- package/src/jest/env.mjs +52 -0
- package/src/jest/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 +35 -3
- 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 +42 -13
- package/src/schemas/types.ts +33 -0
- package/src/schemas/utils.ts +21 -8
- package/src/serialize/buffer_reader.ts +60 -3
- package/src/serialize/field_reader.ts +28 -4
- package/src/serialize/free_funcs.ts +26 -32
- package/src/serialize/serialize.ts +3 -1
- package/src/sleep/index.ts +6 -0
- package/src/string/index.ts +36 -1
- package/src/testing/files/index.ts +7 -3
- package/src/testing/formatting.ts +3 -0
- package/src/testing/index.ts +1 -0
- package/src/timer/date.ts +13 -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/balanced_merkle_tree.ts +84 -0
- package/src/trees/hasher.ts +4 -4
- package/src/trees/index.ts +2 -0
- package/src/trees/indexed_merkle_tree.ts +6 -2
- package/src/trees/indexed_merkle_tree_calculator.ts +2 -2
- package/src/trees/membership_witness.ts +14 -1
- package/src/trees/merkle_tree.ts +4 -1
- package/src/trees/merkle_tree_calculator.ts +10 -5
- package/src/trees/sibling_path.ts +2 -2
- package/src/trees/unbalanced_merkle_tree.ts +112 -42
- package/src/trees/unbalanced_merkle_tree_calculator.ts +177 -0
- package/src/trees/unbalanced_tree_store.ts +5 -1
- package/src/types/index.ts +30 -4
- package/src/url/index.ts +0 -1
- package/dest/crypto/index.d.ts +0 -15
- package/dest/crypto/index.d.ts.map +0 -1
- package/dest/crypto/index.js +0 -14
- package/dest/crypto/pedersen/pedersen.elliptic.d.ts +0 -13
- package/dest/crypto/pedersen/pedersen.elliptic.d.ts.map +0 -1
- package/dest/crypto/pedersen/pedersen.elliptic.js +0 -582
- package/dest/fields/coordinate.d.ts +0 -68
- package/dest/fields/coordinate.d.ts.map +0 -1
- package/dest/fields/coordinate.js +0 -96
- package/dest/fields/fields.d.ts +0 -176
- package/dest/fields/fields.d.ts.map +0 -1
- package/dest/fields/index.d.ts +0 -4
- package/dest/fields/index.d.ts.map +0 -1
- package/dest/fields/index.js +0 -3
- package/dest/fields/point.d.ts.map +0 -1
- package/dest/index.d.ts +0 -31
- package/dest/index.d.ts.map +0 -1
- package/dest/index.js +0 -31
- package/dest/json-rpc/server/telemetry.d.ts +0 -2
- package/dest/json-rpc/server/telemetry.d.ts.map +0 -1
- package/dest/json-rpc/server/telemetry.js +0 -0
- package/dest/log/debug.d.ts +0 -56
- package/dest/log/debug.d.ts.map +0 -1
- package/dest/log/debug.js +0 -75
- package/dest/log/log_history.d.ts +0 -31
- package/dest/log/log_history.d.ts.map +0 -1
- package/dest/log/log_history.js +0 -38
- package/dest/transport/browser/index.d.ts +0 -5
- package/dest/transport/browser/index.d.ts.map +0 -1
- package/dest/transport/browser/index.js +0 -4
- package/dest/transport/browser/message_port_socket.d.ts +0 -37
- package/dest/transport/browser/message_port_socket.d.ts.map +0 -1
- package/dest/transport/browser/message_port_socket.js +0 -42
- package/dest/transport/browser/shared_worker_connector.d.ts +0 -19
- package/dest/transport/browser/shared_worker_connector.d.ts.map +0 -1
- package/dest/transport/browser/shared_worker_connector.js +0 -19
- package/dest/transport/browser/shared_worker_listener.d.ts +0 -38
- package/dest/transport/browser/shared_worker_listener.d.ts.map +0 -1
- package/dest/transport/browser/shared_worker_listener.js +0 -33
- package/dest/transport/browser/worker_connector.d.ts +0 -26
- package/dest/transport/browser/worker_connector.d.ts.map +0 -1
- package/dest/transport/browser/worker_connector.js +0 -30
- package/dest/transport/browser/worker_listener.d.ts +0 -39
- package/dest/transport/browser/worker_listener.d.ts.map +0 -1
- package/dest/transport/browser/worker_listener.js +0 -35
- package/dest/wasm/empty_wasi_sdk.d.ts +0 -130
- package/dest/wasm/empty_wasi_sdk.d.ts.map +0 -1
- package/dest/wasm/empty_wasi_sdk.js +0 -148
- package/dest/wasm/index.d.ts +0 -2
- package/dest/wasm/index.d.ts.map +0 -1
- package/dest/wasm/index.js +0 -1
- package/dest/wasm/wasm_module.d.ts +0 -136
- package/dest/wasm/wasm_module.d.ts.map +0 -1
- package/dest/wasm/wasm_module.js +0 -196
- package/dest/worker/browser/index.d.ts +0 -3
- package/dest/worker/browser/index.d.ts.map +0 -1
- package/dest/worker/browser/index.js +0 -2
- package/dest/worker/browser/start_web_module.d.ts +0 -7
- package/dest/worker/browser/start_web_module.d.ts.map +0 -1
- package/dest/worker/browser/start_web_module.js +0 -27
- package/dest/worker/browser/web_data_store.d.ts +0 -24
- package/dest/worker/browser/web_data_store.d.ts.map +0 -1
- package/dest/worker/browser/web_data_store.js +0 -29
- package/dest/worker/browser/web_worker.d.ts +0 -10
- package/dest/worker/browser/web_worker.d.ts.map +0 -1
- package/dest/worker/browser/web_worker.js +0 -25
- package/dest/worker/data_store.d.ts +0 -21
- package/dest/worker/data_store.d.ts.map +0 -1
- package/dest/worker/data_store.js +0 -3
- package/dest/worker/index.d.ts +0 -3
- package/dest/worker/index.d.ts.map +0 -1
- package/dest/worker/index.js +0 -1
- package/dest/worker/node/index.d.ts +0 -3
- package/dest/worker/node/index.d.ts.map +0 -1
- package/dest/worker/node/index.js +0 -2
- package/dest/worker/node/node_data_store.d.ts +0 -13
- package/dest/worker/node/node_data_store.d.ts.map +0 -1
- package/dest/worker/node/node_data_store.js +0 -20
- package/dest/worker/node/node_worker.d.ts +0 -6
- package/dest/worker/node/node_worker.d.ts.map +0 -1
- package/dest/worker/node/node_worker.js +0 -22
- package/dest/worker/node/start_node_module.d.ts +0 -7
- package/dest/worker/node/start_node_module.d.ts.map +0 -1
- package/dest/worker/node/start_node_module.js +0 -31
- package/dest/worker/wasm_worker.d.ts +0 -9
- package/dest/worker/wasm_worker.d.ts.map +0 -1
- package/dest/worker/wasm_worker.js +0 -3
- package/dest/worker/worker_pool.d.ts +0 -40
- package/dest/worker/worker_pool.d.ts.map +0 -1
- package/dest/worker/worker_pool.js +0 -51
- package/src/crypto/index.ts +0 -14
- package/src/crypto/pedersen/pedersen.elliptic.ts +0 -584
- package/src/fields/coordinate.ts +0 -104
- package/src/fields/index.ts +0 -3
- package/src/index.ts +0 -31
- package/src/json-rpc/server/telemetry.ts +0 -0
- package/src/log/debug.ts +0 -104
- package/src/log/log_history.ts +0 -44
- package/src/transport/browser/index.ts +0 -4
- package/src/transport/browser/message_port_socket.ts +0 -48
- package/src/transport/browser/shared_worker_connector.ts +0 -21
- package/src/transport/browser/shared_worker_listener.ts +0 -53
- package/src/transport/browser/worker_connector.ts +0 -30
- package/src/transport/browser/worker_listener.ts +0 -54
- package/src/wasm/README.md +0 -6
- package/src/wasm/empty_wasi_sdk.ts +0 -166
- package/src/wasm/fixtures/gcd.wasm +0 -0
- package/src/wasm/fixtures/gcd.wat +0 -27
- package/src/wasm/index.ts +0 -1
- package/src/wasm/wasm_module.ts +0 -260
- package/src/worker/browser/index.ts +0 -2
- package/src/worker/browser/start_web_module.ts +0 -24
- package/src/worker/browser/web_data_store.ts +0 -38
- package/src/worker/browser/web_worker.ts +0 -25
- package/src/worker/data_store.ts +0 -19
- package/src/worker/index.ts +0 -2
- package/src/worker/node/index.ts +0 -2
- package/src/worker/node/node_data_store.ts +0 -27
- package/src/worker/node/node_worker.ts +0 -23
- package/src/worker/node/start_node_module.ts +0 -30
- package/src/worker/wasm_worker.ts +0 -7
- package/src/worker/worker_pool.ts +0 -73
package/src/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';
|
|
@@ -23,6 +23,21 @@ export type DiagnosticsData = {
|
|
|
23
23
|
|
|
24
24
|
export type DiagnosticsMiddleware = (ctx: DiagnosticsData, next: () => Promise<void>) => Promise<void>;
|
|
25
25
|
|
|
26
|
+
export type SafeJsonRpcServerConfig = {
|
|
27
|
+
/** Maximum batch size for batched rpc requests */
|
|
28
|
+
maxBatchSize: number;
|
|
29
|
+
/** Return an HTTP 200 status code on errors, but include an error object as per the JSON RPC spec */
|
|
30
|
+
http200OnError: boolean;
|
|
31
|
+
/** The maximum body size the server will accept */
|
|
32
|
+
maxBodySizeBytes: string;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
const defaultServerConfig: SafeJsonRpcServerConfig = {
|
|
36
|
+
http200OnError: false,
|
|
37
|
+
maxBatchSize: 100,
|
|
38
|
+
maxBodySizeBytes: '50mb',
|
|
39
|
+
};
|
|
40
|
+
|
|
26
41
|
export class SafeJsonRpcServer {
|
|
27
42
|
/**
|
|
28
43
|
* The HTTP server accepting remote requests.
|
|
@@ -30,21 +45,26 @@ export class SafeJsonRpcServer {
|
|
|
30
45
|
*/
|
|
31
46
|
private httpServer?: http.Server;
|
|
32
47
|
|
|
48
|
+
private config: SafeJsonRpcServerConfig;
|
|
49
|
+
|
|
33
50
|
constructor(
|
|
34
|
-
/** The proxy object to delegate requests to
|
|
51
|
+
/** The proxy object to delegate requests to */
|
|
35
52
|
private readonly proxy: Proxy,
|
|
36
|
-
|
|
37
|
-
* Return an HTTP 200 status code on errors, but include an error object
|
|
38
|
-
* as per the JSON RPC spec
|
|
39
|
-
*/
|
|
40
|
-
private http200OnError = false,
|
|
53
|
+
config: Partial<SafeJsonRpcServerConfig> = {},
|
|
41
54
|
/** Health check function */
|
|
42
55
|
private readonly healthCheck: StatusCheckFn = () => true,
|
|
43
56
|
/** Additional middlewares */
|
|
44
57
|
private extraMiddlewares: Application.Middleware[] = [],
|
|
45
58
|
/** Logger */
|
|
46
59
|
private log = createLogger('json-rpc:server'),
|
|
47
|
-
) {
|
|
60
|
+
) {
|
|
61
|
+
this.config = { ...defaultServerConfig, ...config };
|
|
62
|
+
|
|
63
|
+
// handle empty string
|
|
64
|
+
if (!this.config.maxBodySizeBytes) {
|
|
65
|
+
this.config.maxBodySizeBytes = defaultServerConfig.maxBodySizeBytes;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
48
68
|
|
|
49
69
|
public isHealthy(): boolean | Promise<boolean> {
|
|
50
70
|
return this.healthCheck();
|
|
@@ -63,20 +83,13 @@ export class SafeJsonRpcServer {
|
|
|
63
83
|
await next();
|
|
64
84
|
} catch (err: any) {
|
|
65
85
|
const method = (ctx.request.body as any)?.method ?? 'unknown';
|
|
66
|
-
this.log.warn(`
|
|
67
|
-
if (err
|
|
86
|
+
this.log.warn(`Uncaught error in JSON RPC server call ${method}: ${inspect(err)}`);
|
|
87
|
+
if (err && 'name' in err && err.name === 'BadRequestError') {
|
|
68
88
|
ctx.status = 400;
|
|
69
|
-
ctx.body = { jsonrpc: '2.0', id: null, error: { code: -
|
|
70
|
-
} else if (err instanceof
|
|
71
|
-
const message = err.issues.map(e => `${e.message} (${e.path.join('.')})`).join('. ') || 'Validation error';
|
|
89
|
+
ctx.body = { jsonrpc: '2.0', id: null, error: { code: -32000, message: `Bad request: ${err.message}` } };
|
|
90
|
+
} else if (err && err instanceof SyntaxError) {
|
|
72
91
|
ctx.status = 400;
|
|
73
|
-
ctx.body = { jsonrpc: '2.0', id: null, error: { code: -
|
|
74
|
-
} else if (this.http200OnError) {
|
|
75
|
-
ctx.body = {
|
|
76
|
-
jsonrpc: '2.0',
|
|
77
|
-
id: null,
|
|
78
|
-
error: { code: err.code || -32600, data: err.data, message: err.message },
|
|
79
|
-
};
|
|
92
|
+
ctx.body = { jsonrpc: '2.0', id: null, error: { code: -32700, message: `Parse error: ${err.message}` } };
|
|
80
93
|
} else {
|
|
81
94
|
ctx.status = 500;
|
|
82
95
|
ctx.body = { jsonrpc: '2.0', id: null, error: { code: -32600, message: err.message ?? 'Internal error' } };
|
|
@@ -107,7 +120,12 @@ export class SafeJsonRpcServer {
|
|
|
107
120
|
app.use(middleware);
|
|
108
121
|
}
|
|
109
122
|
app.use(exceptionHandler);
|
|
110
|
-
app.use(
|
|
123
|
+
app.use(
|
|
124
|
+
bodyParser({
|
|
125
|
+
jsonLimit: this.config.maxBodySizeBytes,
|
|
126
|
+
enableTypes: ['json'],
|
|
127
|
+
}),
|
|
128
|
+
);
|
|
111
129
|
app.use(cors());
|
|
112
130
|
app.use(router.routes());
|
|
113
131
|
app.use(router.allowedMethods());
|
|
@@ -124,23 +142,93 @@ export class SafeJsonRpcServer {
|
|
|
124
142
|
const router = new Router({ prefix });
|
|
125
143
|
// "JSON RPC mode" where a single endpoint is used and the method is given in the request body
|
|
126
144
|
router.post('/', async (ctx: Koa.Context) => {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
145
|
+
if (Array.isArray(ctx.request.body)) {
|
|
146
|
+
if (ctx.request.body.length > this.config.maxBatchSize) {
|
|
147
|
+
ctx.status = this.config.http200OnError ? 200 : 400;
|
|
148
|
+
ctx.body = {
|
|
149
|
+
jsonrpc: '2.0',
|
|
150
|
+
error: {
|
|
151
|
+
code: -32600,
|
|
152
|
+
message: `Batch request exceeds maximum allowed size of ${this.config.maxBatchSize}`,
|
|
153
|
+
},
|
|
154
|
+
id: null,
|
|
155
|
+
};
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
const resp = await this.processBatch(ctx.request.body);
|
|
159
|
+
if (Array.isArray(resp)) {
|
|
160
|
+
ctx.status = 200;
|
|
161
|
+
ctx.body = resp;
|
|
162
|
+
} else {
|
|
163
|
+
ctx.status = this.config.http200OnError ? 200 : 400;
|
|
164
|
+
ctx.body = resp;
|
|
165
|
+
}
|
|
134
166
|
} else {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
167
|
+
const resp = await this.processRequest(ctx.request.body);
|
|
168
|
+
if ('error' in resp) {
|
|
169
|
+
ctx.status = this.config.http200OnError ? 200 : 400;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
ctx.body = resp;
|
|
138
173
|
}
|
|
139
174
|
});
|
|
140
175
|
|
|
141
176
|
return router;
|
|
142
177
|
}
|
|
143
178
|
|
|
179
|
+
private async processBatch(requests: any[]) {
|
|
180
|
+
if (requests.length === 0) {
|
|
181
|
+
return { jsonrpc: '2.0', error: { code: -32600, message: 'Invalid Request' }, id: null };
|
|
182
|
+
}
|
|
183
|
+
const results = await Promise.allSettled(requests.map(req => this.processRequest(req)));
|
|
184
|
+
return results.map(res => {
|
|
185
|
+
if (res.status === 'fulfilled') {
|
|
186
|
+
return res.value;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
this.log.warn(`Uncaught error executing request in batch: ${res.reason}.`);
|
|
190
|
+
return { jsonrpc: '2.0', error: { code: -32600, message: 'Invalid Request' }, id: null };
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
private async processRequest(request: any) {
|
|
195
|
+
if (!request || typeof request !== 'object') {
|
|
196
|
+
return { jsonrpc: '2.0', error: { code: -32600, message: 'Invalid Request' }, id: null };
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
const { params = [], jsonrpc = '2.0', id, method } = request;
|
|
200
|
+
if (typeof method !== 'string' || !method) {
|
|
201
|
+
return { jsonrpc: '2.0', id, error: { code: -32600, message: `Invalid request` } };
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
// Fail if not a registered function in the proxy
|
|
205
|
+
if (typeof method !== 'string' || method === 'constructor' || !this.proxy.hasMethod(method)) {
|
|
206
|
+
return { jsonrpc, id, error: { code: -32601, message: `Method not found: ${method}` } };
|
|
207
|
+
} else {
|
|
208
|
+
try {
|
|
209
|
+
const result = await this.proxy.call(method, params);
|
|
210
|
+
return { jsonrpc, id, result };
|
|
211
|
+
} catch (err: any) {
|
|
212
|
+
if (err && err instanceof ZodError) {
|
|
213
|
+
const message = err.issues.map(e => `${e.message} (${e.path.join('.')})`).join('. ') || 'Validation error';
|
|
214
|
+
return { jsonrpc: '2.0', id, error: { code: -32701, message } };
|
|
215
|
+
} else if (err) {
|
|
216
|
+
return {
|
|
217
|
+
jsonrpc,
|
|
218
|
+
id,
|
|
219
|
+
error: { code: -32702, data: err.data, message: err.message },
|
|
220
|
+
};
|
|
221
|
+
} else {
|
|
222
|
+
return {
|
|
223
|
+
jsonrpc,
|
|
224
|
+
id,
|
|
225
|
+
error: { code: -32702, message: 'Error executing request' },
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
144
232
|
/**
|
|
145
233
|
* Start this server with koa.
|
|
146
234
|
* @param port - Port number.
|
|
@@ -201,7 +289,10 @@ export class SafeJsonProxy<T extends object = any> implements Proxy {
|
|
|
201
289
|
private log = createLogger('json-rpc:proxy');
|
|
202
290
|
private schema: ApiSchema;
|
|
203
291
|
|
|
204
|
-
constructor(
|
|
292
|
+
constructor(
|
|
293
|
+
private handler: T,
|
|
294
|
+
schema: ApiSchemaFor<T>,
|
|
295
|
+
) {
|
|
205
296
|
this.schema = schema;
|
|
206
297
|
}
|
|
207
298
|
|
|
@@ -265,7 +356,10 @@ function makeAggregateHealthcheck(namedHandlers: NamespacedApiHandlers, log?: Lo
|
|
|
265
356
|
return async () => {
|
|
266
357
|
try {
|
|
267
358
|
const results = await Promise.all(
|
|
268
|
-
Object.entries(namedHandlers).map(([name, [, , healthCheck]]) => [
|
|
359
|
+
Object.entries(namedHandlers).map(async ([name, [, , healthCheck]]) => [
|
|
360
|
+
name,
|
|
361
|
+
healthCheck ? await healthCheck() : true,
|
|
362
|
+
]),
|
|
269
363
|
);
|
|
270
364
|
const failed = results.filter(([_, result]) => !result);
|
|
271
365
|
if (failed.length > 0) {
|
|
@@ -280,12 +374,13 @@ function makeAggregateHealthcheck(namedHandlers: NamespacedApiHandlers, log?: Lo
|
|
|
280
374
|
};
|
|
281
375
|
}
|
|
282
376
|
|
|
283
|
-
export type SafeJsonRpcServerOptions =
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
}
|
|
377
|
+
export type SafeJsonRpcServerOptions = Partial<
|
|
378
|
+
SafeJsonRpcServerConfig & {
|
|
379
|
+
healthCheck: StatusCheckFn;
|
|
380
|
+
log: Logger;
|
|
381
|
+
middlewares: Application.Middleware[];
|
|
382
|
+
}
|
|
383
|
+
>;
|
|
289
384
|
|
|
290
385
|
/**
|
|
291
386
|
* Creates a single SafeJsonRpcServer from multiple handlers.
|
|
@@ -294,24 +389,22 @@ export type SafeJsonRpcServerOptions = {
|
|
|
294
389
|
*/
|
|
295
390
|
export function createNamespacedSafeJsonRpcServer(
|
|
296
391
|
handlers: NamespacedApiHandlers,
|
|
297
|
-
options:
|
|
298
|
-
log: createLogger('json-rpc:server'),
|
|
299
|
-
},
|
|
392
|
+
options: Omit<SafeJsonRpcServerOptions, 'healthcheck'> = {},
|
|
300
393
|
): SafeJsonRpcServer {
|
|
301
|
-
const { middlewares,
|
|
394
|
+
const { middlewares, log } = options;
|
|
302
395
|
const proxy = new NamespacedSafeJsonProxy(handlers);
|
|
303
396
|
const healthCheck = makeAggregateHealthcheck(handlers, log);
|
|
304
|
-
return new SafeJsonRpcServer(proxy,
|
|
397
|
+
return new SafeJsonRpcServer(proxy, options, healthCheck, middlewares, log);
|
|
305
398
|
}
|
|
306
399
|
|
|
307
400
|
export function createSafeJsonRpcServer<T extends object = any>(
|
|
308
401
|
handler: T,
|
|
309
402
|
schema: ApiSchemaFor<T>,
|
|
310
|
-
options:
|
|
403
|
+
options: SafeJsonRpcServerOptions = {},
|
|
311
404
|
) {
|
|
312
|
-
const {
|
|
405
|
+
const { log, healthCheck, middlewares: extraMiddlewares } = options;
|
|
313
406
|
const proxy = new SafeJsonProxy(handler, schema);
|
|
314
|
-
return new SafeJsonRpcServer(proxy,
|
|
407
|
+
return new SafeJsonRpcServer(proxy, options, healthCheck, extraMiddlewares, log);
|
|
315
408
|
}
|
|
316
409
|
|
|
317
410
|
/**
|
|
@@ -326,7 +419,7 @@ export function createStatusRouter(getCurrentStatus: StatusCheckFn, apiPrefix =
|
|
|
326
419
|
let ok: boolean;
|
|
327
420
|
try {
|
|
328
421
|
ok = (await getCurrentStatus()) === true;
|
|
329
|
-
} catch
|
|
422
|
+
} catch {
|
|
330
423
|
ok = false;
|
|
331
424
|
}
|
|
332
425
|
|
|
@@ -364,7 +457,7 @@ export async function startHttpRpcServer(
|
|
|
364
457
|
|
|
365
458
|
const { promise, resolve } = promiseWithResolvers<void>();
|
|
366
459
|
const listenPort = options.port ? (typeof options.port === 'string' ? parseInt(options.port) : options.port) : 0;
|
|
367
|
-
httpServer.listen(
|
|
460
|
+
httpServer.listen({ host: options.host, port: listenPort, reuseAddress: true }, () => resolve());
|
|
368
461
|
|
|
369
462
|
// Wait until listen callback is called
|
|
370
463
|
if (!options.noWait) {
|
|
@@ -20,7 +20,7 @@ export type JsonRpcTestContext<T extends object> = {
|
|
|
20
20
|
export async function createJsonRpcTestSetup<T extends object>(
|
|
21
21
|
handler: T,
|
|
22
22
|
schema: ApiSchemaFor<T>,
|
|
23
|
-
serverOptions:
|
|
23
|
+
serverOptions: SafeJsonRpcServerOptions = {},
|
|
24
24
|
clientOptions: SafeJsonRpcClientOptions = {},
|
|
25
25
|
): Promise<JsonRpcTestContext<T>> {
|
|
26
26
|
const server = createSafeJsonRpcServer<T>(handler, schema, serverOptions);
|
package/src/log/console.ts
CHANGED
|
@@ -7,7 +7,10 @@ import type { LogFn } from './log_fn.js';
|
|
|
7
7
|
* which can be useful for controlling the format of the output or redirecting logs to a different destination.
|
|
8
8
|
*/
|
|
9
9
|
class ConsoleLogger {
|
|
10
|
-
constructor(
|
|
10
|
+
constructor(
|
|
11
|
+
private prefix: string,
|
|
12
|
+
private logger: (...args: any[]) => void = console.log,
|
|
13
|
+
) {}
|
|
11
14
|
|
|
12
15
|
/**
|
|
13
16
|
* Log messages with the specified prefix using the provided logger.
|
|
@@ -13,10 +13,6 @@ const GOOGLE_CLOUD_TRACE_SAMPLED = 'logging.googleapis.com/trace_sampled';
|
|
|
13
13
|
*/
|
|
14
14
|
export const GoogleCloudLoggerConfig = {
|
|
15
15
|
messageKey: 'message',
|
|
16
|
-
// Same as pino.stdTimeFunctions.isoTime but uses "timestamp" key instead of "time"
|
|
17
|
-
timestamp(): string {
|
|
18
|
-
return `,"timestamp":"${new Date(Date.now()).toISOString()}"`;
|
|
19
|
-
},
|
|
20
16
|
formatters: {
|
|
21
17
|
log(object: Record<string, unknown>): Record<string, unknown> {
|
|
22
18
|
// Add trace context attributes following Cloud Logging structured log format described
|
|
@@ -39,12 +35,12 @@ export const GoogleCloudLoggerConfig = {
|
|
|
39
35
|
// Severity labels https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry#LogSeverity
|
|
40
36
|
let severity: string;
|
|
41
37
|
|
|
42
|
-
switch (label as pino.Level | keyof
|
|
38
|
+
switch (label as pino.Level | keyof CustomLevels) {
|
|
43
39
|
case 'trace':
|
|
44
40
|
case 'debug':
|
|
41
|
+
case 'verbose':
|
|
45
42
|
severity = 'DEBUG';
|
|
46
43
|
break;
|
|
47
|
-
case 'verbose':
|
|
48
44
|
case 'info':
|
|
49
45
|
severity = 'INFO';
|
|
50
46
|
break;
|
|
@@ -68,4 +64,4 @@ export const GoogleCloudLoggerConfig = {
|
|
|
68
64
|
} satisfies pino.LoggerOptions;
|
|
69
65
|
|
|
70
66
|
// Define custom logging levels for pino. Duplicate from pino-logger.ts.
|
|
71
|
-
|
|
67
|
+
type CustomLevels = { verbose: 25 };
|
package/src/log/index.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export * from './console.js';
|
|
2
|
-
export * from './debug.js';
|
|
3
|
-
export * from './pino-logger.js';
|
|
4
|
-
export * from './log_history.js';
|
|
5
|
-
export * from './log_fn.js';
|
|
6
2
|
export * from './libp2p_logger.js';
|
|
3
|
+
export * from './log_fn.js';
|
|
4
|
+
export * from './noir_debug_log_util.js';
|
|
5
|
+
export * from './pino-logger.js';
|
|
6
|
+
export * from './log-levels.js';
|
package/src/log/libp2p_logger.ts
CHANGED
|
@@ -33,7 +33,7 @@ function createLibp2pLogger(component: string): Logger {
|
|
|
33
33
|
return;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
log[level](replaceFormatting(message), ...args);
|
|
36
|
+
log[level](replaceFormatting(message), ...formatArgs(message, args));
|
|
37
37
|
};
|
|
38
38
|
|
|
39
39
|
// Default log level is trace as this is super super noisy
|
|
@@ -45,7 +45,7 @@ function createLibp2pLogger(component: string): Logger {
|
|
|
45
45
|
enabled: log.isLevelEnabled('debug'),
|
|
46
46
|
error(message: string, ...args: unknown[]) {
|
|
47
47
|
// We write error outputs as debug as they are often expected, e.g. connection errors can happen in happy paths
|
|
48
|
-
logIfEnabled('debug', message
|
|
48
|
+
logIfEnabled('debug', `error: ${message}`, ...args);
|
|
49
49
|
},
|
|
50
50
|
|
|
51
51
|
debug(message: string, ...args: unknown[]) {
|
|
@@ -65,3 +65,22 @@ function createLibp2pLogger(component: string): Logger {
|
|
|
65
65
|
},
|
|
66
66
|
});
|
|
67
67
|
}
|
|
68
|
+
|
|
69
|
+
function formatArgs(message: string, args: unknown[]) {
|
|
70
|
+
if (!args) {
|
|
71
|
+
return args;
|
|
72
|
+
}
|
|
73
|
+
return args.map(arg => {
|
|
74
|
+
if (
|
|
75
|
+
typeof arg === 'object' &&
|
|
76
|
+
arg &&
|
|
77
|
+
'err' in arg &&
|
|
78
|
+
arg.err instanceof Error &&
|
|
79
|
+
'type' in arg.err &&
|
|
80
|
+
arg.err.type === 'AbortError'
|
|
81
|
+
) {
|
|
82
|
+
delete arg.err; // Remove the AbortError from the logs
|
|
83
|
+
}
|
|
84
|
+
return arg;
|
|
85
|
+
});
|
|
86
|
+
}
|
package/src/log/log_fn.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Structured log data to include with the message. */
|
|
2
|
-
export type LogData = Record<string, string | number | bigint | boolean | { toString(): string } | undefined>;
|
|
2
|
+
export type LogData = Record<string, string | number | bigint | boolean | { toString(): string } | undefined | null>;
|
|
3
3
|
|
|
4
4
|
/** A callable logger instance. */
|
|
5
5
|
export type LogFn = (msg: string, data?: unknown) => void;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
interface Printable {
|
|
2
|
+
toString(): string;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Format a debug string filling in `'{0}'` entries with their
|
|
7
|
+
* corresponding values from the args array, amd `'{}'` with the whole array.
|
|
8
|
+
*
|
|
9
|
+
* @param formatStr - str of form `'this is a string with some entries like {0} and {1}'`
|
|
10
|
+
* @param args - array of fields to fill in the string format entries with
|
|
11
|
+
* @returns formatted string
|
|
12
|
+
*/
|
|
13
|
+
export function applyStringFormatting(formatStr: string, args: Printable[]): string {
|
|
14
|
+
return formatStr
|
|
15
|
+
.replace(/{(\d+)}/g, (match, index) => {
|
|
16
|
+
return typeof args[index] === 'undefined' ? match : args[index].toString();
|
|
17
|
+
})
|
|
18
|
+
.replace(/{}/g, (_match, _index) => {
|
|
19
|
+
return args.toString();
|
|
20
|
+
});
|
|
21
|
+
}
|
package/src/log/pino-logger.ts
CHANGED
|
@@ -5,7 +5,8 @@ import type { Writable } from 'stream';
|
|
|
5
5
|
import { inspect } from 'util';
|
|
6
6
|
|
|
7
7
|
import { compactArray } from '../collection/array.js';
|
|
8
|
-
import {
|
|
8
|
+
import type { EnvVar } from '../config/index.js';
|
|
9
|
+
import { parseBooleanEnv } from '../config/parse-env.js';
|
|
9
10
|
import { GoogleCloudLoggerConfig } from './gcloud-logger-config.js';
|
|
10
11
|
import { getLogLevelFromFilters, parseEnv } from './log-filters.js';
|
|
11
12
|
import type { LogLevel } from './log-levels.js';
|
|
@@ -37,11 +38,14 @@ export function createLogger(module: string): Logger {
|
|
|
37
38
|
debug: (msg: string, data?: unknown) => logFn('debug', msg, data),
|
|
38
39
|
/** Log as trace. Use for when we want to denial-of-service any recipient of the logs. */
|
|
39
40
|
trace: (msg: string, data?: unknown) => logFn('trace', msg, data),
|
|
41
|
+
/** Level of the logger */
|
|
40
42
|
level: pinoLogger.level as LogLevel,
|
|
41
43
|
/** Whether the given level is enabled for this logger. */
|
|
42
44
|
isLevelEnabled: (level: LogLevel) => isLevelEnabled(pinoLogger, level),
|
|
43
45
|
/** Module name for the logger. */
|
|
44
46
|
module,
|
|
47
|
+
/** Creates another logger by extending this logger module name. */
|
|
48
|
+
createChild: (childModule: string) => createLogger(`${module}:${childModule}`),
|
|
45
49
|
};
|
|
46
50
|
}
|
|
47
51
|
|
|
@@ -99,11 +103,38 @@ const customLevels = { verbose: 25 };
|
|
|
99
103
|
|
|
100
104
|
// Global pino options, tweaked for google cloud if running there.
|
|
101
105
|
const useGcloudLogging = parseBooleanEnv(process.env['USE_GCLOUD_LOGGING' satisfies EnvVar]);
|
|
106
|
+
|
|
107
|
+
const redactedPaths = [
|
|
108
|
+
'validatorPrivateKeys',
|
|
109
|
+
// for both the validator and the prover
|
|
110
|
+
'publisherPrivateKeys',
|
|
111
|
+
'peerIdPrivateKey',
|
|
112
|
+
// bot keys
|
|
113
|
+
'l1PrivateKey',
|
|
114
|
+
'senderPrivateKey',
|
|
115
|
+
// blob sink
|
|
116
|
+
'l1ConsensusHostApiKeys',
|
|
117
|
+
// sensitive options used in the CLI
|
|
118
|
+
'privateKey',
|
|
119
|
+
'mnemonic',
|
|
120
|
+
'l1Mnemonic',
|
|
121
|
+
'l1PrivateKey',
|
|
122
|
+
];
|
|
123
|
+
|
|
102
124
|
const pinoOpts: pino.LoggerOptions<keyof typeof customLevels> = {
|
|
103
125
|
customLevels,
|
|
104
126
|
messageKey: 'msg',
|
|
105
127
|
useOnlyCustomLevels: false,
|
|
106
128
|
level: logLevel,
|
|
129
|
+
redact: {
|
|
130
|
+
paths: [
|
|
131
|
+
...redactedPaths,
|
|
132
|
+
...redactedPaths.map(p => `config.${p}`),
|
|
133
|
+
...redactedPaths.map(p => `cfg.${p}`),
|
|
134
|
+
...redactedPaths.map(p => `options.${p}`),
|
|
135
|
+
...redactedPaths.map(p => `opts.${p}`),
|
|
136
|
+
],
|
|
137
|
+
},
|
|
107
138
|
...(useGcloudLogging ? GoogleCloudLoggerConfig : {}),
|
|
108
139
|
};
|
|
109
140
|
|
|
@@ -221,7 +252,7 @@ export function registerLoggingStream(stream: Writable): void {
|
|
|
221
252
|
}
|
|
222
253
|
|
|
223
254
|
/** Log function that accepts an exception object */
|
|
224
|
-
type ErrorLogFn = (msg: string, err?:
|
|
255
|
+
type ErrorLogFn = (msg: string, err?: unknown, data?: LogData) => void;
|
|
225
256
|
|
|
226
257
|
/**
|
|
227
258
|
* Logger that supports multiple severity levels.
|
|
@@ -230,6 +261,7 @@ export type Logger = { [K in LogLevel]: LogFn } & { /** Error log function */ er
|
|
|
230
261
|
level: LogLevel;
|
|
231
262
|
isLevelEnabled: (level: LogLevel) => boolean;
|
|
232
263
|
module: string;
|
|
264
|
+
createChild: (childModule: string) => Logger;
|
|
233
265
|
};
|
|
234
266
|
|
|
235
267
|
/**
|
|
@@ -238,6 +270,6 @@ export type Logger = { [K in LogLevel]: LogFn } & { /** Error log function */ er
|
|
|
238
270
|
* @param err - Error to log
|
|
239
271
|
* @returns A string with both the log message and the error message.
|
|
240
272
|
*/
|
|
241
|
-
function formatErr(msg: string, err?:
|
|
273
|
+
function formatErr(msg: string, err?: unknown): string {
|
|
242
274
|
return err ? `${msg}: ${inspect(err)}` : msg;
|
|
243
275
|
}
|
package/src/message/index.ts
CHANGED
|
@@ -31,7 +31,11 @@ interface TypedMessageLike {
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
export class TypedMessage<T, B> {
|
|
34
|
-
public constructor(
|
|
34
|
+
public constructor(
|
|
35
|
+
public readonly msgType: T,
|
|
36
|
+
public readonly header: MessageHeader,
|
|
37
|
+
public readonly value: B,
|
|
38
|
+
) {}
|
|
35
39
|
|
|
36
40
|
static fromMessagePack<T, B>(data: TypedMessageLike): TypedMessage<T, B> {
|
|
37
41
|
return new TypedMessage<T, B>(data['msgType'] as T, MessageHeader.fromMessagePack(data['header']), data['value']);
|
|
@@ -3,10 +3,9 @@
|
|
|
3
3
|
* Provides functionality for acquiring, extending, and releasing locks on resources to ensure exclusive access and prevent conflicts in concurrent applications.
|
|
4
4
|
*/
|
|
5
5
|
export interface MutexDatabase {
|
|
6
|
-
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
7
6
|
acquireLock(name: string, timeout: number): Promise<boolean>;
|
|
8
|
-
|
|
7
|
+
|
|
9
8
|
extendLock(name: string, timeout: number): Promise<void>;
|
|
10
|
-
|
|
9
|
+
|
|
11
10
|
releaseLock(name: string): Promise<void>;
|
|
12
11
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Bounds the given value between the min and max provided (both inclusive) */
|
|
2
|
+
export function boundInclusive(value: number, min: number, max: number): number {
|
|
3
|
+
if (min > max) {
|
|
4
|
+
throw new Error('Minimum bound cannot be greater than maximum bound');
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
if (value < min) {
|
|
8
|
+
return min;
|
|
9
|
+
} else if (value > max) {
|
|
10
|
+
return max;
|
|
11
|
+
} else {
|
|
12
|
+
return value;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './profiler.js';
|