@aztec/foundation 0.0.0-test.0 → 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
package/src/log/pino-logger.ts
CHANGED
|
@@ -1,19 +1,62 @@
|
|
|
1
|
-
import { createColors, isColorSupported } from 'colorette';
|
|
1
|
+
import { type Color, createColors, isColorSupported } from 'colorette';
|
|
2
2
|
import isNode from 'detect-node';
|
|
3
3
|
import { pino, symbols } from 'pino';
|
|
4
4
|
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';
|
|
12
13
|
import type { LogData, LogFn } from './log_fn.js';
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
/** Optional bindings to pass to createLogger for additional context. */
|
|
16
|
+
export type LoggerBindings = {
|
|
17
|
+
/** Actor label shown in logs (e.g., 'MAIN', 'prover-node'). */
|
|
18
|
+
actor?: string;
|
|
19
|
+
/** Instance identifier for distinguishing multiple instances of the same component. */
|
|
20
|
+
instanceId?: string;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
// Allow global hooks for providing default bindings.
|
|
24
|
+
// Used by withLoggerBindings in pino-logger-server to propagate bindings via AsyncLocalStorage.
|
|
25
|
+
type LogBindingsHandler = () => LoggerBindings | undefined;
|
|
26
|
+
const logBindingsHandlers: LogBindingsHandler[] = [];
|
|
27
|
+
|
|
28
|
+
export function addLogBindingsHandler(handler: LogBindingsHandler): void {
|
|
29
|
+
logBindingsHandlers.push(handler);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export function removeLogBindingsHandler(handler: LogBindingsHandler) {
|
|
33
|
+
const index = logBindingsHandlers.indexOf(handler);
|
|
34
|
+
if (index !== -1) {
|
|
35
|
+
logBindingsHandlers.splice(index, 1);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function getBindingsFromHandlers(): LoggerBindings | undefined {
|
|
40
|
+
for (const handler of logBindingsHandlers) {
|
|
41
|
+
const bindings = handler();
|
|
42
|
+
if (bindings) {
|
|
43
|
+
return bindings;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function createLogger(module: string, bindings?: LoggerBindings): Logger {
|
|
50
|
+
module = module.replace(/^aztec:/, '');
|
|
51
|
+
|
|
52
|
+
const resolvedBindings = { ...getBindingsFromHandlers(), ...bindings };
|
|
53
|
+
const actor = resolvedBindings?.actor;
|
|
54
|
+
const instanceId = resolvedBindings?.instanceId;
|
|
55
|
+
|
|
56
|
+
const pinoLogger = logger.child(
|
|
57
|
+
{ module, ...(actor && { actor }), ...(instanceId && { instanceId }) },
|
|
58
|
+
{ level: getLogLevelFromFilters(logFilters, module) },
|
|
59
|
+
);
|
|
17
60
|
|
|
18
61
|
// We check manually for isLevelEnabled to avoid calling processLogData unnecessarily.
|
|
19
62
|
// Note that isLevelEnabled is missing from the browser version of pino.
|
|
@@ -37,14 +80,30 @@ export function createLogger(module: string): Logger {
|
|
|
37
80
|
debug: (msg: string, data?: unknown) => logFn('debug', msg, data),
|
|
38
81
|
/** Log as trace. Use for when we want to denial-of-service any recipient of the logs. */
|
|
39
82
|
trace: (msg: string, data?: unknown) => logFn('trace', msg, data),
|
|
83
|
+
/** Level of the logger */
|
|
40
84
|
level: pinoLogger.level as LogLevel,
|
|
41
85
|
/** Whether the given level is enabled for this logger. */
|
|
42
86
|
isLevelEnabled: (level: LogLevel) => isLevelEnabled(pinoLogger, level),
|
|
43
87
|
/** Module name for the logger. */
|
|
44
88
|
module,
|
|
89
|
+
/** Creates another logger by extending this logger module name and preserving bindings. */
|
|
90
|
+
createChild: (childModule: string) => createLogger(`${module}:${childModule}`, { actor, instanceId }),
|
|
91
|
+
/** Returns the bindings (actor, instanceId) for this logger. */
|
|
92
|
+
getBindings: () => ({ actor, instanceId }),
|
|
45
93
|
};
|
|
46
94
|
}
|
|
47
95
|
|
|
96
|
+
/**
|
|
97
|
+
* Returns a logger for the given module. If loggerOrBindings is already a Logger, returns it directly.
|
|
98
|
+
* Otherwise, creates a new logger with the given module name and bindings.
|
|
99
|
+
*/
|
|
100
|
+
export function resolveLogger(module: string, loggerOrBindings?: Logger | LoggerBindings): Logger {
|
|
101
|
+
if (loggerOrBindings && 'info' in loggerOrBindings) {
|
|
102
|
+
return loggerOrBindings as Logger;
|
|
103
|
+
}
|
|
104
|
+
return createLogger(module, loggerOrBindings);
|
|
105
|
+
}
|
|
106
|
+
|
|
48
107
|
// Allow global hooks for processing log data.
|
|
49
108
|
// Used for injecting OTEL trace_id in telemetry client.
|
|
50
109
|
type LogDataHandler = (data: LogData) => LogData;
|
|
@@ -58,31 +117,6 @@ function processLogData(data: LogData): LogData {
|
|
|
58
117
|
return logDataHandlers.reduce((accum, handler) => handler(accum), data);
|
|
59
118
|
}
|
|
60
119
|
|
|
61
|
-
// Allow global hooks for tweaking module names.
|
|
62
|
-
// Used in tests to add a uid to modules, so we can differentiate multiple nodes in the same process.
|
|
63
|
-
type LogNameHandler = (module: string) => string;
|
|
64
|
-
const logNameHandlers: LogNameHandler[] = [];
|
|
65
|
-
|
|
66
|
-
export function addLogNameHandler(handler: LogNameHandler): void {
|
|
67
|
-
logNameHandlers.push(handler);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
export function removeLogNameHandler(handler: LogNameHandler) {
|
|
71
|
-
const index = logNameHandlers.indexOf(handler);
|
|
72
|
-
if (index !== -1) {
|
|
73
|
-
logNameHandlers.splice(index, 1);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/** Creates all loggers within the given callback with the suffix appended to the module name. */
|
|
78
|
-
export async function withLogNameSuffix<T>(suffix: string, callback: () => Promise<T>): Promise<T> {
|
|
79
|
-
const logNameHandler = (module: string) => `${module}:${suffix}`;
|
|
80
|
-
addLogNameHandler(logNameHandler);
|
|
81
|
-
const result = await callback();
|
|
82
|
-
removeLogNameHandler(logNameHandler);
|
|
83
|
-
return result;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
120
|
// Patch isLevelEnabled missing from pino/browser.
|
|
87
121
|
function isLevelEnabled(logger: pino.Logger<'verbose', boolean>, level: LogLevel): boolean {
|
|
88
122
|
return typeof logger.isLevelEnabled === 'function'
|
|
@@ -99,11 +133,38 @@ const customLevels = { verbose: 25 };
|
|
|
99
133
|
|
|
100
134
|
// Global pino options, tweaked for google cloud if running there.
|
|
101
135
|
const useGcloudLogging = parseBooleanEnv(process.env['USE_GCLOUD_LOGGING' satisfies EnvVar]);
|
|
136
|
+
|
|
137
|
+
const redactedPaths = [
|
|
138
|
+
'validatorPrivateKeys',
|
|
139
|
+
// for both the validator and the prover
|
|
140
|
+
'publisherPrivateKeys',
|
|
141
|
+
'peerIdPrivateKey',
|
|
142
|
+
// bot keys
|
|
143
|
+
'l1PrivateKey',
|
|
144
|
+
'senderPrivateKey',
|
|
145
|
+
// blob sink
|
|
146
|
+
'l1ConsensusHostApiKeys',
|
|
147
|
+
// sensitive options used in the CLI
|
|
148
|
+
'privateKey',
|
|
149
|
+
'mnemonic',
|
|
150
|
+
'l1Mnemonic',
|
|
151
|
+
'l1PrivateKey',
|
|
152
|
+
];
|
|
153
|
+
|
|
102
154
|
const pinoOpts: pino.LoggerOptions<keyof typeof customLevels> = {
|
|
103
155
|
customLevels,
|
|
104
156
|
messageKey: 'msg',
|
|
105
157
|
useOnlyCustomLevels: false,
|
|
106
158
|
level: logLevel,
|
|
159
|
+
redact: {
|
|
160
|
+
paths: [
|
|
161
|
+
...redactedPaths,
|
|
162
|
+
...redactedPaths.map(p => `config.${p}`),
|
|
163
|
+
...redactedPaths.map(p => `cfg.${p}`),
|
|
164
|
+
...redactedPaths.map(p => `options.${p}`),
|
|
165
|
+
...redactedPaths.map(p => `opts.${p}`),
|
|
166
|
+
],
|
|
167
|
+
},
|
|
107
168
|
...(useGcloudLogging ? GoogleCloudLoggerConfig : {}),
|
|
108
169
|
};
|
|
109
170
|
|
|
@@ -115,22 +176,90 @@ export const levels = {
|
|
|
115
176
|
// Transport options for pretty logging to stderr via pino-pretty.
|
|
116
177
|
const colorEnv = process.env['FORCE_COLOR' satisfies EnvVar];
|
|
117
178
|
const useColor = colorEnv === undefined ? isColorSupported : parseBooleanEnv(colorEnv);
|
|
118
|
-
const { bold, reset
|
|
119
|
-
|
|
179
|
+
const { bold, reset, cyan, magenta, yellow, blue, green, magentaBright, yellowBright, blueBright, greenBright } =
|
|
180
|
+
createColors({ useColor });
|
|
181
|
+
|
|
182
|
+
// Per-actor coloring: each unique actor gets a different color for easier visual distinction.
|
|
183
|
+
// Disabled when LOG_NO_COLOR_PER_ACTOR is set to a truthy value.
|
|
184
|
+
const useColorPerActor = useColor && !parseBooleanEnv(process.env['LOG_NO_COLOR_PER_ACTOR' satisfies EnvVar]);
|
|
185
|
+
const actorColors: Color[] = [yellow, magenta, blue, green, magentaBright, yellowBright, blueBright, greenBright];
|
|
186
|
+
const actorColorMap = new Map<string, Color>();
|
|
187
|
+
let nextColorIndex = 0;
|
|
188
|
+
|
|
189
|
+
/** Returns the color function assigned to a given actor, assigning a new one if needed. */
|
|
190
|
+
export function getActorColor(actor: string): Color {
|
|
191
|
+
let color = actorColorMap.get(actor);
|
|
192
|
+
if (!color) {
|
|
193
|
+
color = actorColors[nextColorIndex % actorColors.length];
|
|
194
|
+
actorColorMap.set(actor, color);
|
|
195
|
+
nextColorIndex++;
|
|
196
|
+
}
|
|
197
|
+
return color;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/** Resets the actor-to-color mapping. Useful for testing. */
|
|
201
|
+
export function resetActorColors(): void {
|
|
202
|
+
actorColorMap.clear();
|
|
203
|
+
nextColorIndex = 0;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// String template for messageFormat (used in worker threads and when per-actor coloring is disabled).
|
|
207
|
+
const messageFormatString = `${bold('{module}')}{if actor} ${cyan('{actor}')}{end}{if instanceId} ${reset(cyan('{instanceId}'))}{end} ${reset('{msg}')}`;
|
|
208
|
+
|
|
209
|
+
// Function for messageFormat when per-actor coloring is enabled (can only be used in-process, not worker threads).
|
|
210
|
+
type LogObject = { actor?: string; module?: string; instanceId?: string; msg?: string };
|
|
211
|
+
|
|
212
|
+
/** Formats a log message with per-actor coloring. Actor, module, and instanceId share the same color. */
|
|
213
|
+
export function formatLogMessage(log: LogObject, messageKey: string): string {
|
|
214
|
+
const actor = log.actor;
|
|
215
|
+
const module = log.module ?? '';
|
|
216
|
+
const instanceId = log.instanceId;
|
|
217
|
+
const msg = log[messageKey as keyof LogObject] ?? '';
|
|
218
|
+
|
|
219
|
+
// Use actor color for actor, module, and instanceId when actor is present
|
|
220
|
+
const color = actor ? getActorColor(actor) : cyan;
|
|
221
|
+
|
|
222
|
+
let result = bold(color(module));
|
|
223
|
+
if (actor) {
|
|
224
|
+
result += ' ' + color(actor);
|
|
225
|
+
}
|
|
226
|
+
if (instanceId) {
|
|
227
|
+
result += ' ' + reset(color(instanceId));
|
|
228
|
+
}
|
|
229
|
+
result += ' ' + reset(String(msg));
|
|
230
|
+
return result;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
// Base options for pino-pretty (shared between transport and direct use).
|
|
234
|
+
const pinoPrettyBaseOpts = {
|
|
120
235
|
destination: 2,
|
|
121
236
|
sync: true,
|
|
122
237
|
colorize: useColor,
|
|
123
|
-
ignore: 'module,pid,hostname,trace_id,span_id,trace_flags,severity',
|
|
124
|
-
messageFormat: `${bold('{module}')} ${reset('{msg}')}`,
|
|
238
|
+
ignore: 'module,actor,instanceId,pid,hostname,trace_id,span_id,trace_flags,severity',
|
|
125
239
|
customLevels: 'fatal:60,error:50,warn:40,info:30,verbose:25,debug:20,trace:10',
|
|
126
240
|
customColors: 'fatal:bgRed,error:red,warn:yellow,info:green,verbose:magenta,debug:blue,trace:gray',
|
|
127
241
|
minimumLevel: 'trace' as const,
|
|
128
242
|
singleLine: !parseBooleanEnv(process.env['LOG_MULTILINE' satisfies EnvVar]),
|
|
129
243
|
};
|
|
130
244
|
|
|
245
|
+
/**
|
|
246
|
+
* Pino-pretty options for direct use (e.g., jest/setup.mjs).
|
|
247
|
+
* Includes function-based messageFormat for per-actor coloring when enabled.
|
|
248
|
+
*/
|
|
249
|
+
export const pinoPrettyOpts = {
|
|
250
|
+
...pinoPrettyBaseOpts,
|
|
251
|
+
messageFormat: useColorPerActor ? formatLogMessage : messageFormatString,
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
// Transport options use string template only (functions can't be serialized to worker threads).
|
|
255
|
+
const prettyTransportOpts = {
|
|
256
|
+
...pinoPrettyBaseOpts,
|
|
257
|
+
messageFormat: messageFormatString,
|
|
258
|
+
};
|
|
259
|
+
|
|
131
260
|
const prettyTransport: pino.TransportTargetOptions = {
|
|
132
261
|
target: 'pino-pretty',
|
|
133
|
-
options:
|
|
262
|
+
options: prettyTransportOpts,
|
|
134
263
|
level: 'trace',
|
|
135
264
|
};
|
|
136
265
|
|
|
@@ -221,7 +350,7 @@ export function registerLoggingStream(stream: Writable): void {
|
|
|
221
350
|
}
|
|
222
351
|
|
|
223
352
|
/** Log function that accepts an exception object */
|
|
224
|
-
type ErrorLogFn = (msg: string, err?:
|
|
353
|
+
type ErrorLogFn = (msg: string, err?: unknown, data?: LogData) => void;
|
|
225
354
|
|
|
226
355
|
/**
|
|
227
356
|
* Logger that supports multiple severity levels.
|
|
@@ -230,6 +359,9 @@ export type Logger = { [K in LogLevel]: LogFn } & { /** Error log function */ er
|
|
|
230
359
|
level: LogLevel;
|
|
231
360
|
isLevelEnabled: (level: LogLevel) => boolean;
|
|
232
361
|
module: string;
|
|
362
|
+
createChild: (childModule: string) => Logger;
|
|
363
|
+
/** Returns the bindings (actor, instanceId) for this logger. */
|
|
364
|
+
getBindings: () => LoggerBindings;
|
|
233
365
|
};
|
|
234
366
|
|
|
235
367
|
/**
|
|
@@ -238,6 +370,6 @@ export type Logger = { [K in LogLevel]: LogFn } & { /** Error log function */ er
|
|
|
238
370
|
* @param err - Error to log
|
|
239
371
|
* @returns A string with both the log message and the error message.
|
|
240
372
|
*/
|
|
241
|
-
function formatErr(msg: string, err?:
|
|
373
|
+
function formatErr(msg: string, err?: unknown): string {
|
|
242
374
|
return err ? `${msg}: ${inspect(err)}` : msg;
|
|
243
375
|
}
|
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';
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
+
import * as fs from 'node:fs';
|
|
3
|
+
import * as path from 'node:path';
|
|
4
|
+
import { performance } from 'node:perf_hooks';
|
|
5
|
+
|
|
6
|
+
interface Span {
|
|
7
|
+
label: string;
|
|
8
|
+
start: number;
|
|
9
|
+
dur: number;
|
|
10
|
+
count: number;
|
|
11
|
+
children: Span[];
|
|
12
|
+
parent: Span | undefined;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
interface ProfileData {
|
|
16
|
+
spans: SerializedSpan[];
|
|
17
|
+
timestamp: string;
|
|
18
|
+
totalTime: number;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
interface SerializedSpan {
|
|
22
|
+
label: string;
|
|
23
|
+
dur: number;
|
|
24
|
+
count: number;
|
|
25
|
+
children: SerializedSpan[];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const als = new AsyncLocalStorage<Span>();
|
|
29
|
+
const roots: Span[] = [];
|
|
30
|
+
|
|
31
|
+
function reset(): void {
|
|
32
|
+
roots.length = 0;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Strip out circular references (parent) and unused fields (start) for JSON serialization
|
|
36
|
+
function serializeSpans(spans: Span[]): SerializedSpan[] {
|
|
37
|
+
return spans.map(span => ({
|
|
38
|
+
label: span.label,
|
|
39
|
+
dur: span.dur,
|
|
40
|
+
count: span.count,
|
|
41
|
+
children: serializeSpans(span.children),
|
|
42
|
+
}));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
let i = 0;
|
|
46
|
+
function save(): void {
|
|
47
|
+
if (roots.length === 0) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Find max single execution time across all spans (dur/count since dur is accumulated)
|
|
52
|
+
const findMaxSingleDuration = (spans: Span[]): number => {
|
|
53
|
+
let max = 0;
|
|
54
|
+
for (const span of spans) {
|
|
55
|
+
const singleDur = span.dur / span.count;
|
|
56
|
+
max = Math.max(max, singleDur);
|
|
57
|
+
if (span.children.length > 0) {
|
|
58
|
+
max = Math.max(max, findMaxSingleDuration(span.children));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return max;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const profileData: ProfileData = {
|
|
65
|
+
spans: serializeSpans(roots),
|
|
66
|
+
timestamp: new Date().toISOString(),
|
|
67
|
+
totalTime: findMaxSingleDuration(roots),
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
const profilePath = path.join(process.cwd(), `profile-${i++}.json`);
|
|
71
|
+
process.stdout.write(`Writing profile data to ${profilePath}\n`);
|
|
72
|
+
fs.writeFileSync(profilePath, JSON.stringify(profileData, null, 2));
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Hook into Jest to save after each test
|
|
76
|
+
if (typeof afterEach === 'function') {
|
|
77
|
+
afterEach(() => {
|
|
78
|
+
save();
|
|
79
|
+
reset();
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Also save on process exit for non-Jest environments
|
|
84
|
+
process.on('exit', () => {
|
|
85
|
+
save();
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
// Wrapper for async functions to maintain context properly
|
|
89
|
+
async function runAsync<ReturnType>(label: string, fn: () => Promise<ReturnType>): Promise<ReturnType> {
|
|
90
|
+
const parent = als.getStore();
|
|
91
|
+
|
|
92
|
+
// Check if we already have a span with this label in the current context
|
|
93
|
+
let existingSpan: Span | undefined;
|
|
94
|
+
if (parent) {
|
|
95
|
+
existingSpan = parent.children.find(c => c.label === label);
|
|
96
|
+
} else {
|
|
97
|
+
existingSpan = roots.find(r => r.label === label);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
let span: Span;
|
|
101
|
+
if (existingSpan) {
|
|
102
|
+
// Reuse existing span and increment count
|
|
103
|
+
span = existingSpan;
|
|
104
|
+
span.count++;
|
|
105
|
+
} else {
|
|
106
|
+
// Create new span
|
|
107
|
+
span = { label, start: performance.now(), dur: 0, count: 1, children: [], parent };
|
|
108
|
+
if (parent) {
|
|
109
|
+
parent.children.push(span);
|
|
110
|
+
} else {
|
|
111
|
+
roots.push(span);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
const startTime = performance.now();
|
|
116
|
+
const result: ReturnType = await als.run(span, fn);
|
|
117
|
+
const elapsed = performance.now() - startTime;
|
|
118
|
+
|
|
119
|
+
// Add to total duration (for averaging)
|
|
120
|
+
span.dur += elapsed;
|
|
121
|
+
|
|
122
|
+
return result;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export const profiler = { reset, runAsync };
|
|
@@ -43,7 +43,7 @@ export class RunningPromise {
|
|
|
43
43
|
public start() {
|
|
44
44
|
if (this.running) {
|
|
45
45
|
this.logger.warn(`Attempted to start running promise that was already started`);
|
|
46
|
-
return;
|
|
46
|
+
return this;
|
|
47
47
|
}
|
|
48
48
|
this.running = true;
|
|
49
49
|
|
|
@@ -73,6 +73,7 @@ export class RunningPromise {
|
|
|
73
73
|
}
|
|
74
74
|
};
|
|
75
75
|
this.runningPromise = poll();
|
|
76
|
+
return this;
|
|
76
77
|
}
|
|
77
78
|
|
|
78
79
|
/**
|
|
@@ -81,7 +82,6 @@ export class RunningPromise {
|
|
|
81
82
|
*/
|
|
82
83
|
async stop(): Promise<void> {
|
|
83
84
|
if (!this.running) {
|
|
84
|
-
this.logger.warn(`Running promise was not started`);
|
|
85
85
|
return;
|
|
86
86
|
}
|
|
87
87
|
this.running = false;
|
package/src/queue/batch_queue.ts
CHANGED
|
@@ -13,7 +13,7 @@ type Batch<T, K> = {
|
|
|
13
13
|
* A queue that groups items into batches based on a group key.
|
|
14
14
|
*
|
|
15
15
|
* The batching algorithm is greedy, meaning that as long as consecutive items have the same group key then they will
|
|
16
|
-
* be
|
|
16
|
+
* be batched together. As soon as an item with a different group key is encountered, the old batch is flushed to the
|
|
17
17
|
* queue and a new batch is started.
|
|
18
18
|
*
|
|
19
19
|
* A batch can also be flushed to the queue if:
|
|
@@ -10,7 +10,10 @@ export class BoundedSerialQueue {
|
|
|
10
10
|
private readonly queue = new SerialQueue();
|
|
11
11
|
private semaphore: Semaphore;
|
|
12
12
|
|
|
13
|
-
constructor(
|
|
13
|
+
constructor(
|
|
14
|
+
maxQueueSize: number,
|
|
15
|
+
private log = createLogger('foundation:bounded_serial_queue'),
|
|
16
|
+
) {
|
|
14
17
|
this.semaphore = new Semaphore(maxQueueSize);
|
|
15
18
|
}
|
|
16
19
|
|
package/src/queue/semaphore.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { FifoMemoryQueue } from './fifo_memory_queue.js';
|
|
2
2
|
|
|
3
|
+
export interface ISemaphore {
|
|
4
|
+
acquire(): Promise<void>;
|
|
5
|
+
release(): void;
|
|
6
|
+
}
|
|
7
|
+
|
|
3
8
|
/**
|
|
4
9
|
* Allows the acquiring of up to `size` tokens before calls to acquire block, waiting for a call to release().
|
|
5
10
|
*/
|
|
@@ -5,7 +5,7 @@ import { FifoMemoryQueue } from './fifo_memory_queue.js';
|
|
|
5
5
|
*/
|
|
6
6
|
export class SerialQueue {
|
|
7
7
|
private readonly queue = new FifoMemoryQueue<() => Promise<void>>();
|
|
8
|
-
private
|
|
8
|
+
private runningPromises: Promise<void>[] = [];
|
|
9
9
|
private started = false;
|
|
10
10
|
|
|
11
11
|
/**
|
|
@@ -14,11 +14,11 @@ export class SerialQueue {
|
|
|
14
14
|
* waiting for the completion of the previous one before starting its execution.
|
|
15
15
|
* This method should be called once to start processing the queue.
|
|
16
16
|
*/
|
|
17
|
-
public start() {
|
|
17
|
+
public start(numWorkers = 1) {
|
|
18
18
|
if (this.started) {
|
|
19
19
|
return;
|
|
20
20
|
}
|
|
21
|
-
this.
|
|
21
|
+
this.runningPromises = Array.from({ length: numWorkers }, () => this.queue.process(fn => fn()));
|
|
22
22
|
this.started = true;
|
|
23
23
|
}
|
|
24
24
|
|
|
@@ -41,7 +41,7 @@ export class SerialQueue {
|
|
|
41
41
|
*/
|
|
42
42
|
public cancel() {
|
|
43
43
|
this.queue.cancel();
|
|
44
|
-
return this.
|
|
44
|
+
return Promise.all(this.runningPromises).then(() => {});
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
/**
|
|
@@ -52,7 +52,7 @@ export class SerialQueue {
|
|
|
52
52
|
*/
|
|
53
53
|
public end() {
|
|
54
54
|
this.queue.end();
|
|
55
|
-
return this.
|
|
55
|
+
return Promise.all(this.runningPromises).then(() => {});
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
/**
|
package/src/retry/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TimeoutError } from '../error/index.js';
|
|
2
|
-
import { createLogger } from '../log/index.js';
|
|
2
|
+
import { type Logger, createLogger } from '../log/index.js';
|
|
3
3
|
import { sleep } from '../sleep/index.js';
|
|
4
4
|
import { Timer } from '../timer/index.js';
|
|
5
5
|
|
|
@@ -49,7 +49,7 @@ export async function retry<Result>(
|
|
|
49
49
|
fn: () => Promise<Result>,
|
|
50
50
|
name = 'Operation',
|
|
51
51
|
backoff = backoffGenerator(),
|
|
52
|
-
log = createLogger('foundation:retry'),
|
|
52
|
+
log: Logger = createLogger('foundation:retry'),
|
|
53
53
|
failSilently = false,
|
|
54
54
|
) {
|
|
55
55
|
while (true) {
|
|
@@ -64,8 +64,8 @@ export async function retry<Result>(
|
|
|
64
64
|
if (s === undefined) {
|
|
65
65
|
throw err;
|
|
66
66
|
}
|
|
67
|
-
log
|
|
68
|
-
!failSilently && log
|
|
67
|
+
log?.debug(`${name} failed. Will retry in ${s}s...`);
|
|
68
|
+
!failSilently && log?.error(`Error while retrying ${name}`, err);
|
|
69
69
|
await sleep(s * 1000);
|
|
70
70
|
continue;
|
|
71
71
|
}
|
|
@@ -83,7 +83,12 @@ export async function retry<Result>(
|
|
|
83
83
|
* @param interval - The optional interval, in seconds, between retry attempts. Defaults to 1 second.
|
|
84
84
|
* @returns A Promise that resolves with the successful (truthy) result of the provided function, or rejects if timeout is exceeded.
|
|
85
85
|
*/
|
|
86
|
-
export async function retryUntil<T>(
|
|
86
|
+
export async function retryUntil<T>(
|
|
87
|
+
fn: () => (T | undefined) | Promise<T | undefined>,
|
|
88
|
+
name = '',
|
|
89
|
+
timeout = 0,
|
|
90
|
+
interval = 1,
|
|
91
|
+
) {
|
|
87
92
|
const timer = new Timer();
|
|
88
93
|
while (true) {
|
|
89
94
|
const result = await fn();
|
|
@@ -98,3 +103,21 @@ export async function retryUntil<T>(fn: () => Promise<T | undefined>, name = '',
|
|
|
98
103
|
}
|
|
99
104
|
}
|
|
100
105
|
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Convenience wrapper around retryUntil with fast polling for tests.
|
|
109
|
+
* Uses 10s timeout and 100ms polling interval by default.
|
|
110
|
+
*
|
|
111
|
+
* @param fn - The function to retry until it returns a truthy value.
|
|
112
|
+
* @param name - Description of what we're waiting for (for error messages).
|
|
113
|
+
* @param timeout - Optional timeout in seconds. Defaults to 10s.
|
|
114
|
+
* @param interval - Optional interval in seconds. Defaults to 0.1s (100ms).
|
|
115
|
+
*/
|
|
116
|
+
export function retryFastUntil<T>(
|
|
117
|
+
fn: () => (T | undefined) | Promise<T | undefined>,
|
|
118
|
+
name = '',
|
|
119
|
+
timeout = 10,
|
|
120
|
+
interval = 0.1,
|
|
121
|
+
) {
|
|
122
|
+
return retryUntil(fn, name, timeout, interval);
|
|
123
|
+
}
|
package/src/schemas/api.ts
CHANGED
|
@@ -19,10 +19,10 @@ type ZodReturnTypeFor<T> = z.ZodType<T, z.ZodTypeDef, any>;
|
|
|
19
19
|
type ZodMapParameterTypes<T> = T extends []
|
|
20
20
|
? []
|
|
21
21
|
: T extends [item: infer Head, ...infer Rest]
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
? [ZodParameterTypeFor<Head>, ...{ [K in keyof Rest]: ZodParameterTypeFor<Rest[K]> }]
|
|
23
|
+
: T extends [item?: infer Head, ...infer Rest]
|
|
24
|
+
? [ZodNullableOptional<ZodParameterTypeFor<Head>>, ...{ [K in keyof Rest]: ZodParameterTypeFor<Rest[K]> }]
|
|
25
|
+
: never;
|
|
26
26
|
|
|
27
27
|
/** Maps all functions in an interface to their schema representation. */
|
|
28
28
|
export type ApiSchemaFor<T> = {
|
package/src/schemas/parse.ts
CHANGED
|
@@ -22,7 +22,7 @@ export function parseWithOptionals<T extends z.AnyZodTuple>(args: any[], schema:
|
|
|
22
22
|
function isOptional(schema: z.ZodTypeAny) {
|
|
23
23
|
try {
|
|
24
24
|
return schema.isOptional();
|
|
25
|
-
} catch
|
|
25
|
+
} catch {
|
|
26
26
|
// See https://github.com/colinhacks/zod/issues/1911
|
|
27
27
|
return schema._def.typeName === 'ZodOptional';
|
|
28
28
|
}
|