@aztec/foundation 0.0.0-test.1 → 0.0.1-commit.023c3e5
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 +56 -0
- package/dest/branded-types/block_number.d.ts.map +1 -0
- package/dest/branded-types/block_number.js +78 -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 +7 -0
- package/dest/branded-types/index.d.ts.map +1 -0
- package/dest/branded-types/index.js +5 -0
- package/dest/branded-types/index_within_checkpoint.d.ts +42 -0
- package/dest/branded-types/index_within_checkpoint.d.ts.map +1 -0
- package/dest/branded-types/index_within_checkpoint.js +59 -0
- package/dest/branded-types/slot.d.ts +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 +80 -0
- package/dest/buffer/buffer16.d.ts.map +1 -0
- package/dest/buffer/buffer16.js +102 -0
- package/dest/buffer/buffer32.d.ts +5 -9
- 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 +28 -4
- package/dest/collection/array.d.ts.map +1 -1
- package/dest/collection/array.js +108 -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 +62 -4
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +143 -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 -5
- package/dest/crypto/ecdsa/signature.d.ts.map +1 -1
- package/dest/crypto/ecdsa/signature.js +2 -2
- package/dest/crypto/grumpkin/index.d.ts +10 -15
- package/dest/crypto/grumpkin/index.d.ts.map +1 -1
- package/dest/crypto/grumpkin/index.js +61 -55
- package/dest/crypto/keccak/index.d.ts +3 -5
- package/dest/crypto/keccak/index.d.ts.map +1 -1
- package/dest/crypto/keys/index.d.ts +2 -4
- package/dest/crypto/keys/index.d.ts.map +1 -1
- package/dest/crypto/keys/index.js +8 -5
- package/dest/crypto/pedersen/index.d.ts +1 -1
- package/dest/crypto/pedersen/pedersen.noble.d.ts +3 -5
- package/dest/crypto/pedersen/pedersen.noble.d.ts.map +1 -1
- package/dest/crypto/pedersen/pedersen.wasm.d.ts +4 -6
- package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -1
- package/dest/crypto/pedersen/pedersen.wasm.js +24 -14
- package/dest/crypto/poseidon/index.d.ts +2 -5
- package/dest/crypto/poseidon/index.d.ts.map +1 -1
- package/dest/crypto/poseidon/index.js +27 -21
- package/dest/crypto/random/index.d.ts +2 -4
- package/dest/crypto/random/index.d.ts.map +1 -1
- package/dest/crypto/random/index.js +2 -34
- package/dest/crypto/random/randomness_singleton.d.ts +4 -5
- package/dest/crypto/random/randomness_singleton.d.ts.map +1 -1
- package/dest/crypto/random/randomness_singleton.js +5 -5
- package/dest/crypto/schnorr/index.d.ts +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 -5
- package/dest/crypto/sync/poseidon/index.d.ts.map +1 -1
- package/dest/crypto/sync/poseidon/index.js +23 -16
- package/dest/curves/bls12/field.d.ts +148 -0
- package/dest/curves/bls12/field.d.ts.map +1 -0
- package/dest/curves/bls12/field.js +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 +229 -0
- package/dest/curves/bls12/point.d.ts.map +1 -0
- package/dest/curves/bls12/point.js +400 -0
- package/dest/curves/bn254/field.d.ts +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 +14 -7
- 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 +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 -15
- 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/setup.js +4 -1
- package/dest/jest/setupAfterEnv.js +3 -0
- package/dest/json-rpc/client/fetch.d.ts +3 -3
- package/dest/json-rpc/client/fetch.d.ts.map +1 -1
- package/dest/json-rpc/client/fetch.js +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 +27 -11
- package/dest/json-rpc/convert.d.ts +3 -10
- package/dest/json-rpc/convert.d.ts.map +1 -1
- package/dest/json-rpc/convert.js +1 -9
- package/dest/json-rpc/errors.d.ts +4 -0
- package/dest/json-rpc/errors.d.ts.map +1 -0
- package/dest/json-rpc/errors.js +6 -0
- package/dest/json-rpc/fixtures/class_a.d.ts +6 -4
- package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -1
- package/dest/json-rpc/fixtures/class_b.d.ts +6 -4
- package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -1
- package/dest/json-rpc/fixtures/test_state.d.ts +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 +5 -2
- package/dest/log/libp2p_logger.d.ts.map +1 -1
- package/dest/log/libp2p_logger.js +27 -6
- package/dest/log/log-filters.d.ts +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-server.d.ts +9 -0
- package/dest/log/pino-logger-server.d.ts.map +1 -0
- package/dest/log/pino-logger-server.js +18 -0
- package/dest/log/pino-logger.d.ts +40 -11
- package/dest/log/pino-logger.d.ts.map +1 -1
- package/dest/log/pino-logger.js +143 -28
- 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 +5 -1
- package/dest/queue/semaphore.d.ts.map +1 -1
- package/dest/queue/serial_queue.d.ts +3 -3
- package/dest/queue/serial_queue.d.ts.map +1 -1
- package/dest/queue/serial_queue.js +7 -5
- package/dest/retry/index.d.ts +14 -3
- package/dest/retry/index.d.ts.map +1 -1
- package/dest/retry/index.js +13 -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 +34 -6
- package/dest/serialize/buffer_reader.d.ts.map +1 -1
- package/dest/serialize/buffer_reader.js +57 -6
- 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_root.d.ts +17 -0
- package/dest/trees/balanced_merkle_tree_root.d.ts.map +1 -0
- package/dest/trees/balanced_merkle_tree_root.js +51 -0
- package/dest/trees/hasher.d.ts +7 -7
- package/dest/trees/hasher.d.ts.map +1 -1
- package/dest/trees/hasher.js +10 -5
- package/dest/trees/index.d.ts +5 -3
- package/dest/trees/index.d.ts.map +1 -1
- package/dest/trees/index.js +4 -2
- package/dest/trees/indexed_merkle_tree.d.ts +1 -3
- package/dest/trees/indexed_merkle_tree.d.ts.map +1 -1
- package/dest/trees/indexed_merkle_tree.js +1 -1
- package/dest/trees/indexed_merkle_tree_calculator.d.ts +2 -4
- package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -1
- package/dest/trees/indexed_tree_leaf.d.ts +1 -3
- package/dest/trees/indexed_tree_leaf.d.ts.map +1 -1
- package/dest/trees/membership_witness.d.ts +10 -5
- package/dest/trees/membership_witness.d.ts.map +1 -1
- package/dest/trees/membership_witness.js +23 -1
- package/dest/trees/merkle_tree.d.ts +1 -3
- package/dest/trees/merkle_tree.d.ts.map +1 -1
- package/dest/trees/merkle_tree_calculator.d.ts +2 -4
- package/dest/trees/merkle_tree_calculator.d.ts.map +1 -1
- package/dest/trees/merkle_tree_calculator.js +2 -2
- package/dest/trees/sibling_path.d.ts +6 -41
- package/dest/trees/sibling_path.d.ts.map +1 -1
- package/dest/trees/sibling_path.js +3 -3
- package/dest/trees/unbalanced_merkle_tree_calculator.d.ts +48 -0
- package/dest/trees/unbalanced_merkle_tree_calculator.d.ts.map +1 -0
- package/dest/trees/unbalanced_merkle_tree_calculator.js +154 -0
- package/dest/trees/unbalanced_merkle_tree_root.d.ts +28 -0
- package/dest/trees/unbalanced_merkle_tree_root.d.ts.map +1 -0
- package/dest/trees/unbalanced_merkle_tree_root.js +84 -0
- package/dest/trees/unbalanced_tree_store.d.ts +6 -1
- package/dest/trees/unbalanced_tree_store.d.ts.map +1 -1
- package/dest/trees/unbalanced_tree_store.js +55 -1
- package/dest/types/index.d.ts +30 -3
- package/dest/types/index.d.ts.map +1 -1
- package/dest/types/index.js +6 -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 +60 -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 +117 -0
- package/src/branded-types/checkpoint_number.ts +115 -0
- package/src/branded-types/epoch.ts +88 -0
- package/src/branded-types/index.ts +7 -0
- package/src/branded-types/index_within_checkpoint.ts +88 -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 +118 -4
- package/src/collection/object.ts +37 -0
- package/src/config/env_var.ts +186 -59
- package/src/config/index.ts +226 -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 +27 -29
- package/src/crypto/random/index.ts +2 -40
- package/src/crypto/random/randomness_singleton.ts +6 -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 +23 -27
- 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/setup.mjs +4 -1
- 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 +29 -18
- package/src/json-rpc/convert.ts +3 -12
- package/src/json-rpc/errors.ts +6 -0
- package/src/json-rpc/fixtures/class_a.ts +4 -1
- package/src/json-rpc/fixtures/class_b.ts +4 -1
- package/src/json-rpc/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 +33 -7
- package/src/log/log_fn.ts +1 -1
- package/src/log/noir_debug_log_util.ts +21 -0
- package/src/log/pino-logger-server.ts +25 -0
- package/src/log/pino-logger.ts +169 -37
- 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/semaphore.ts +5 -0
- package/src/queue/serial_queue.ts +5 -5
- package/src/retry/index.ts +28 -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 +81 -12
- 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_root.ts +68 -0
- package/src/trees/hasher.ts +13 -4
- package/src/trees/index.ts +4 -2
- package/src/trees/indexed_merkle_tree.ts +6 -2
- package/src/trees/indexed_merkle_tree_calculator.ts +2 -2
- package/src/trees/membership_witness.ts +22 -1
- package/src/trees/merkle_tree.ts +4 -1
- package/src/trees/merkle_tree_calculator.ts +10 -5
- package/src/trees/sibling_path.ts +3 -3
- package/src/trees/unbalanced_merkle_tree_calculator.ts +176 -0
- package/src/trees/unbalanced_merkle_tree_root.ts +115 -0
- package/src/trees/unbalanced_tree_store.ts +62 -3
- package/src/types/index.ts +35 -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/trees/unbalanced_merkle_tree.d.ts +0 -17
- package/dest/trees/unbalanced_merkle_tree.d.ts.map +0 -1
- package/dest/trees/unbalanced_merkle_tree.js +0 -100
- package/dest/wasm/empty_wasi_sdk.d.ts +0 -130
- package/dest/wasm/empty_wasi_sdk.d.ts.map +0 -1
- package/dest/wasm/empty_wasi_sdk.js +0 -148
- package/dest/wasm/index.d.ts +0 -2
- package/dest/wasm/index.d.ts.map +0 -1
- package/dest/wasm/index.js +0 -1
- package/dest/wasm/wasm_module.d.ts +0 -136
- package/dest/wasm/wasm_module.d.ts.map +0 -1
- package/dest/wasm/wasm_module.js +0 -196
- package/dest/worker/browser/index.d.ts +0 -3
- package/dest/worker/browser/index.d.ts.map +0 -1
- package/dest/worker/browser/index.js +0 -2
- package/dest/worker/browser/start_web_module.d.ts +0 -7
- package/dest/worker/browser/start_web_module.d.ts.map +0 -1
- package/dest/worker/browser/start_web_module.js +0 -27
- package/dest/worker/browser/web_data_store.d.ts +0 -24
- package/dest/worker/browser/web_data_store.d.ts.map +0 -1
- package/dest/worker/browser/web_data_store.js +0 -29
- package/dest/worker/browser/web_worker.d.ts +0 -10
- package/dest/worker/browser/web_worker.d.ts.map +0 -1
- package/dest/worker/browser/web_worker.js +0 -25
- package/dest/worker/data_store.d.ts +0 -21
- package/dest/worker/data_store.d.ts.map +0 -1
- package/dest/worker/data_store.js +0 -3
- package/dest/worker/index.d.ts +0 -3
- package/dest/worker/index.d.ts.map +0 -1
- package/dest/worker/index.js +0 -1
- package/dest/worker/node/index.d.ts +0 -3
- package/dest/worker/node/index.d.ts.map +0 -1
- package/dest/worker/node/index.js +0 -2
- package/dest/worker/node/node_data_store.d.ts +0 -13
- package/dest/worker/node/node_data_store.d.ts.map +0 -1
- package/dest/worker/node/node_data_store.js +0 -20
- package/dest/worker/node/node_worker.d.ts +0 -6
- package/dest/worker/node/node_worker.d.ts.map +0 -1
- package/dest/worker/node/node_worker.js +0 -22
- package/dest/worker/node/start_node_module.d.ts +0 -7
- package/dest/worker/node/start_node_module.d.ts.map +0 -1
- package/dest/worker/node/start_node_module.js +0 -31
- package/dest/worker/wasm_worker.d.ts +0 -9
- package/dest/worker/wasm_worker.d.ts.map +0 -1
- package/dest/worker/wasm_worker.js +0 -3
- package/dest/worker/worker_pool.d.ts +0 -40
- package/dest/worker/worker_pool.d.ts.map +0 -1
- package/dest/worker/worker_pool.js +0 -51
- package/src/crypto/index.ts +0 -14
- package/src/crypto/pedersen/pedersen.elliptic.ts +0 -584
- package/src/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/trees/unbalanced_merkle_tree.ts +0 -103
- package/src/wasm/README.md +0 -6
- package/src/wasm/empty_wasi_sdk.ts +0 -166
- package/src/wasm/fixtures/gcd.wasm +0 -0
- package/src/wasm/fixtures/gcd.wat +0 -27
- package/src/wasm/index.ts +0 -1
- package/src/wasm/wasm_module.ts +0 -260
- package/src/worker/browser/index.ts +0 -2
- package/src/worker/browser/start_web_module.ts +0 -24
- package/src/worker/browser/web_data_store.ts +0 -38
- package/src/worker/browser/web_worker.ts +0 -25
- package/src/worker/data_store.ts +0 -19
- package/src/worker/index.ts +0 -2
- package/src/worker/node/index.ts +0 -2
- package/src/worker/node/node_data_store.ts +0 -27
- package/src/worker/node/node_worker.ts +0 -23
- package/src/worker/node/start_node_module.ts +0 -30
- package/src/worker/wasm_worker.ts +0 -7
- package/src/worker/worker_pool.ts +0 -73
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { promisify } from 'node:util';
|
|
2
|
+
import { gunzip as gunzipCb, gzip as gzipCb } from 'node:zlib';
|
|
1
3
|
import { Agent, type Dispatcher } from 'undici';
|
|
2
4
|
|
|
3
5
|
import { createLogger } from '../../log/pino-logger.js';
|
|
@@ -5,50 +7,59 @@ import { NoRetryError } from '../../retry/index.js';
|
|
|
5
7
|
import { jsonStringify } from '../convert.js';
|
|
6
8
|
import type { JsonRpcFetch } from './fetch.js';
|
|
7
9
|
|
|
10
|
+
const gzip = promisify(gzipCb);
|
|
11
|
+
const gunzip = promisify(gunzipCb);
|
|
12
|
+
|
|
8
13
|
const log = createLogger('json-rpc:json_rpc_client:undici');
|
|
9
14
|
|
|
15
|
+
/** Minimum request size in bytes to trigger compression. */
|
|
16
|
+
const COMPRESSION_THRESHOLD = 1024;
|
|
17
|
+
|
|
10
18
|
export { Agent };
|
|
11
19
|
|
|
12
20
|
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>;
|
|
21
|
+
return async (host: string, body: unknown, extraHeaders: Record<string, string> = {}, noRetry = false) => {
|
|
22
|
+
log.trace(`JsonRpcClient.fetch: ${host}`, { host, body });
|
|
23
|
+
let resp: Dispatcher.ResponseData;
|
|
23
24
|
try {
|
|
24
|
-
|
|
25
|
+
const jsonBody = Buffer.from(jsonStringify(body));
|
|
26
|
+
const shouldCompress = jsonBody.length >= COMPRESSION_THRESHOLD;
|
|
27
|
+
resp = await client.request({
|
|
25
28
|
method: 'POST',
|
|
26
29
|
origin: new URL(host),
|
|
27
|
-
path:
|
|
28
|
-
body:
|
|
30
|
+
path: '/',
|
|
31
|
+
body: shouldCompress ? await gzip(jsonBody) : jsonBody,
|
|
29
32
|
headers: {
|
|
30
33
|
...extraHeaders,
|
|
31
34
|
'content-type': 'application/json',
|
|
35
|
+
...(shouldCompress && { 'content-encoding': 'gzip' }),
|
|
36
|
+
'accept-encoding': 'gzip',
|
|
32
37
|
},
|
|
33
38
|
});
|
|
34
39
|
} catch (err) {
|
|
35
|
-
const errorMessage = `Error fetching from host ${host}
|
|
40
|
+
const errorMessage = `Error fetching from host ${host}: ${String(err)}`;
|
|
36
41
|
throw new Error(errorMessage);
|
|
37
42
|
}
|
|
38
43
|
|
|
39
44
|
let responseJson: any;
|
|
40
45
|
const responseOk = resp.statusCode >= 200 && resp.statusCode <= 299;
|
|
46
|
+
const contentEncoding = resp.headers['content-encoding'];
|
|
41
47
|
try {
|
|
42
|
-
|
|
43
|
-
|
|
48
|
+
if (contentEncoding === 'gzip') {
|
|
49
|
+
const jsonBuffer = await gunzip(await resp.body.arrayBuffer());
|
|
50
|
+
responseJson = JSON.parse(jsonBuffer.toString('utf-8'));
|
|
51
|
+
} else {
|
|
52
|
+
responseJson = await resp.body.json();
|
|
53
|
+
}
|
|
54
|
+
} catch {
|
|
44
55
|
if (!responseOk) {
|
|
45
56
|
throw new Error('HTTP ' + resp.statusCode);
|
|
46
57
|
}
|
|
47
|
-
throw new Error(`Failed to parse body as JSON: ${await resp.body.text()}`);
|
|
58
|
+
throw new Error(`Failed to parse body as JSON. encoding: ${contentEncoding}, body: ${await resp.body.text()}`);
|
|
48
59
|
}
|
|
49
60
|
|
|
50
61
|
if (!responseOk) {
|
|
51
|
-
const errorMessage = `Error ${resp.statusCode} response from server ${host}
|
|
62
|
+
const errorMessage = `Error ${resp.statusCode} response from server ${host}: ${responseJson}`;
|
|
52
63
|
if (noRetry || (resp.statusCode >= 400 && resp.statusCode < 500)) {
|
|
53
64
|
throw new NoRetryError(errorMessage);
|
|
54
65
|
} 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';
|
|
@@ -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: '1mb',
|
|
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
|
@@ -2,15 +2,17 @@ import type { ComponentLogger, Logger } from '@libp2p/interface';
|
|
|
2
2
|
|
|
3
3
|
import { getLogLevelFromFilters } from './log-filters.js';
|
|
4
4
|
import type { LogLevel } from './log-levels.js';
|
|
5
|
-
import { logFilters, logger } from './pino-logger.js';
|
|
5
|
+
import { type LoggerBindings, logFilters, logger } from './pino-logger.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Creates a libp2p compatible logger that wraps our pino logger.
|
|
9
9
|
* This adapter implements the ComponentLogger interface required by libp2p.
|
|
10
|
+
* @param namespace - Base namespace for the logger
|
|
11
|
+
* @param bindings - Optional bindings to pass to the logger (actor, instanceId)
|
|
10
12
|
*/
|
|
11
|
-
export function createLibp2pComponentLogger(namespace: string): ComponentLogger {
|
|
13
|
+
export function createLibp2pComponentLogger(namespace: string, bindings?: LoggerBindings): ComponentLogger {
|
|
12
14
|
return {
|
|
13
|
-
forComponent: (component: string) => createLibp2pLogger(`${namespace}:${component}
|
|
15
|
+
forComponent: (component: string) => createLibp2pLogger(`${namespace}:${component}`, bindings),
|
|
14
16
|
};
|
|
15
17
|
}
|
|
16
18
|
|
|
@@ -24,16 +26,21 @@ function replaceFormatting(message: string) {
|
|
|
24
26
|
return message.replace(/(%p|%a)/g, '%s');
|
|
25
27
|
}
|
|
26
28
|
|
|
27
|
-
function createLibp2pLogger(component: string): Logger {
|
|
29
|
+
function createLibp2pLogger(component: string, bindings?: LoggerBindings): Logger {
|
|
28
30
|
// Create a direct pino logger instance for libp2p that supports string interpolation
|
|
29
|
-
const
|
|
31
|
+
const actor = bindings?.actor;
|
|
32
|
+
const instanceId = bindings?.instanceId;
|
|
33
|
+
const log = logger.child(
|
|
34
|
+
{ module: component, ...(actor && { actor }), ...(instanceId && { instanceId }) },
|
|
35
|
+
{ level: getLogLevelFromFilters(logFilters, component) },
|
|
36
|
+
);
|
|
30
37
|
|
|
31
38
|
const logIfEnabled = (level: LogLevel, message: string, ...args: unknown[]) => {
|
|
32
39
|
if (!log.isLevelEnabled(level)) {
|
|
33
40
|
return;
|
|
34
41
|
}
|
|
35
42
|
|
|
36
|
-
log[level](replaceFormatting(message), ...args);
|
|
43
|
+
log[level](replaceFormatting(message), ...formatArgs(message, args));
|
|
37
44
|
};
|
|
38
45
|
|
|
39
46
|
// Default log level is trace as this is super super noisy
|
|
@@ -45,7 +52,7 @@ function createLibp2pLogger(component: string): Logger {
|
|
|
45
52
|
enabled: log.isLevelEnabled('debug'),
|
|
46
53
|
error(message: string, ...args: unknown[]) {
|
|
47
54
|
// We write error outputs as debug as they are often expected, e.g. connection errors can happen in happy paths
|
|
48
|
-
logIfEnabled('debug', message
|
|
55
|
+
logIfEnabled('debug', `error: ${message}`, ...args);
|
|
49
56
|
},
|
|
50
57
|
|
|
51
58
|
debug(message: string, ...args: unknown[]) {
|
|
@@ -65,3 +72,22 @@ function createLibp2pLogger(component: string): Logger {
|
|
|
65
72
|
},
|
|
66
73
|
});
|
|
67
74
|
}
|
|
75
|
+
|
|
76
|
+
function formatArgs(message: string, args: unknown[]) {
|
|
77
|
+
if (!args) {
|
|
78
|
+
return args;
|
|
79
|
+
}
|
|
80
|
+
return args.map(arg => {
|
|
81
|
+
if (
|
|
82
|
+
typeof arg === 'object' &&
|
|
83
|
+
arg &&
|
|
84
|
+
'err' in arg &&
|
|
85
|
+
arg.err instanceof Error &&
|
|
86
|
+
'type' in arg.err &&
|
|
87
|
+
arg.err.type === 'AbortError'
|
|
88
|
+
) {
|
|
89
|
+
delete arg.err; // Remove the AbortError from the logs
|
|
90
|
+
}
|
|
91
|
+
return arg;
|
|
92
|
+
});
|
|
93
|
+
}
|
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
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
+
|
|
3
|
+
import { type LoggerBindings, addLogBindingsHandler, removeLogBindingsHandler } from './pino-logger.js';
|
|
4
|
+
|
|
5
|
+
/** AsyncLocalStorage for logger bindings context propagation (Node.js only). */
|
|
6
|
+
const bindingsStorage = new AsyncLocalStorage<LoggerBindings>();
|
|
7
|
+
|
|
8
|
+
/** Returns the current bindings from AsyncLocalStorage, if any. */
|
|
9
|
+
export function getBindings(): LoggerBindings | undefined {
|
|
10
|
+
return bindingsStorage.getStore();
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Runs a callback within a bindings context. All loggers created within the callback
|
|
15
|
+
* will automatically inherit the bindings (actor, instanceId) via the log bindings handler.
|
|
16
|
+
*/
|
|
17
|
+
export async function withLoggerBindings<T>(bindings: LoggerBindings, callback: () => Promise<T>): Promise<T> {
|
|
18
|
+
const handler = () => bindingsStorage.getStore();
|
|
19
|
+
addLogBindingsHandler(handler);
|
|
20
|
+
try {
|
|
21
|
+
return await bindingsStorage.run(bindings, callback);
|
|
22
|
+
} finally {
|
|
23
|
+
removeLogBindingsHandler(handler);
|
|
24
|
+
}
|
|
25
|
+
}
|