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