@aztec/foundation 0.0.0-test.0
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/README.md +1 -0
- package/dest/array/array.d.ts +71 -0
- package/dest/array/array.d.ts.map +1 -0
- package/dest/array/array.js +100 -0
- package/dest/array/index.d.ts +2 -0
- package/dest/array/index.d.ts.map +1 -0
- package/dest/array/index.js +1 -0
- package/dest/async-map/index.d.ts +13 -0
- package/dest/async-map/index.d.ts.map +1 -0
- package/dest/async-map/index.js +17 -0
- package/dest/async-pool/index.d.ts +3 -0
- package/dest/async-pool/index.d.ts.map +1 -0
- package/dest/async-pool/index.js +47 -0
- package/dest/bigint-buffer/index.d.ts +42 -0
- package/dest/bigint-buffer/index.d.ts.map +1 -0
- package/dest/bigint-buffer/index.js +76 -0
- package/dest/buffer/buffer32.d.ts +91 -0
- package/dest/buffer/buffer32.d.ts.map +1 -0
- package/dest/buffer/buffer32.js +115 -0
- package/dest/buffer/index.d.ts +2 -0
- package/dest/buffer/index.d.ts.map +1 -0
- package/dest/buffer/index.js +1 -0
- package/dest/collection/array.d.ts +101 -0
- package/dest/collection/array.d.ts.map +1 -0
- package/dest/collection/array.js +164 -0
- package/dest/collection/index.d.ts +3 -0
- package/dest/collection/index.d.ts.map +1 -0
- package/dest/collection/index.js +2 -0
- package/dest/collection/object.d.ts +14 -0
- package/dest/collection/object.d.ts.map +1 -0
- package/dest/collection/object.js +32 -0
- package/dest/committable/committable.d.ts +28 -0
- package/dest/committable/committable.d.ts.map +1 -0
- package/dest/committable/committable.js +36 -0
- package/dest/committable/index.d.ts +2 -0
- package/dest/committable/index.d.ts.map +1 -0
- package/dest/committable/index.js +1 -0
- package/dest/config/env_var.d.ts +2 -0
- package/dest/config/env_var.d.ts.map +1 -0
- package/dest/config/env_var.js +1 -0
- package/dest/config/index.d.ts +66 -0
- package/dest/config/index.d.ts.map +1 -0
- package/dest/config/index.js +125 -0
- package/dest/crypto/aes128/index.d.ts +34 -0
- package/dest/crypto/aes128/index.d.ts.map +1 -0
- package/dest/crypto/aes128/index.js +49 -0
- package/dest/crypto/ecdsa/index.d.ts +39 -0
- package/dest/crypto/ecdsa/index.d.ts.map +1 -0
- package/dest/crypto/ecdsa/index.js +88 -0
- package/dest/crypto/ecdsa/signature.d.ts +71 -0
- package/dest/crypto/ecdsa/signature.d.ts.map +1 -0
- package/dest/crypto/ecdsa/signature.js +92 -0
- package/dest/crypto/grumpkin/index.d.ts +47 -0
- package/dest/crypto/grumpkin/index.d.ts.map +1 -0
- package/dest/crypto/grumpkin/index.js +154 -0
- package/dest/crypto/index.d.ts +15 -0
- package/dest/crypto/index.d.ts.map +1 -0
- package/dest/crypto/index.js +14 -0
- package/dest/crypto/keccak/index.d.ts +28 -0
- package/dest/crypto/keccak/index.d.ts.map +1 -0
- package/dest/crypto/keccak/index.js +248 -0
- package/dest/crypto/keys/index.d.ts +5 -0
- package/dest/crypto/keys/index.d.ts.map +1 -0
- package/dest/crypto/keys/index.js +7 -0
- package/dest/crypto/pedersen/index.d.ts +2 -0
- package/dest/crypto/pedersen/index.d.ts.map +1 -0
- package/dest/crypto/pedersen/index.js +1 -0
- package/dest/crypto/pedersen/pedersen.elliptic.d.ts +13 -0
- package/dest/crypto/pedersen/pedersen.elliptic.d.ts.map +1 -0
- package/dest/crypto/pedersen/pedersen.elliptic.js +582 -0
- package/dest/crypto/pedersen/pedersen.noble.d.ts +11 -0
- package/dest/crypto/pedersen/pedersen.noble.d.ts.map +1 -0
- package/dest/crypto/pedersen/pedersen.noble.js +558 -0
- package/dest/crypto/pedersen/pedersen.wasm.d.ts +21 -0
- package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -0
- package/dest/crypto/pedersen/pedersen.wasm.js +41 -0
- package/dest/crypto/poseidon/index.d.ts +26 -0
- package/dest/crypto/poseidon/index.d.ts.map +1 -0
- package/dest/crypto/poseidon/index.js +58 -0
- package/dest/crypto/random/index.d.ts +25 -0
- package/dest/crypto/random/index.d.ts.map +1 -0
- package/dest/crypto/random/index.js +70 -0
- package/dest/crypto/random/randomness_singleton.d.ts +25 -0
- package/dest/crypto/random/randomness_singleton.d.ts.map +1 -0
- package/dest/crypto/random/randomness_singleton.js +55 -0
- package/dest/crypto/schnorr/index.d.ts +30 -0
- package/dest/crypto/schnorr/index.d.ts.map +1 -0
- package/dest/crypto/schnorr/index.js +68 -0
- package/dest/crypto/schnorr/signature.d.ts +70 -0
- package/dest/crypto/schnorr/signature.d.ts.map +1 -0
- package/dest/crypto/schnorr/signature.js +93 -0
- package/dest/crypto/secp256k1/index.d.ts +32 -0
- package/dest/crypto/secp256k1/index.d.ts.map +1 -0
- package/dest/crypto/secp256k1/index.js +116 -0
- package/dest/crypto/secp256k1-signer/index.d.ts +3 -0
- package/dest/crypto/secp256k1-signer/index.d.ts.map +1 -0
- package/dest/crypto/secp256k1-signer/index.js +2 -0
- package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts +24 -0
- package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts.map +1 -0
- package/dest/crypto/secp256k1-signer/secp256k1_signer.js +30 -0
- package/dest/crypto/secp256k1-signer/utils.d.ts +40 -0
- package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -0
- package/dest/crypto/secp256k1-signer/utils.js +84 -0
- package/dest/crypto/serialize.d.ts +53 -0
- package/dest/crypto/serialize.d.ts.map +1 -0
- package/dest/crypto/serialize.js +68 -0
- package/dest/crypto/sha256/index.d.ts +20 -0
- package/dest/crypto/sha256/index.d.ts.map +1 -0
- package/dest/crypto/sha256/index.js +166 -0
- package/dest/crypto/sha512/index.d.ts +11 -0
- package/dest/crypto/sha512/index.d.ts.map +1 -0
- package/dest/crypto/sha512/index.js +12 -0
- package/dest/crypto/signature/index.d.ts +19 -0
- package/dest/crypto/signature/index.d.ts.map +1 -0
- package/dest/crypto/signature/index.js +3 -0
- package/dest/crypto/sync/index.d.ts +3 -0
- package/dest/crypto/sync/index.d.ts.map +1 -0
- package/dest/crypto/sync/index.js +4 -0
- package/dest/crypto/sync/pedersen/index.d.ts +21 -0
- package/dest/crypto/sync/pedersen/index.d.ts.map +1 -0
- package/dest/crypto/sync/pedersen/index.js +38 -0
- package/dest/crypto/sync/poseidon/index.d.ts +26 -0
- package/dest/crypto/sync/poseidon/index.d.ts.map +1 -0
- package/dest/crypto/sync/poseidon/index.js +53 -0
- package/dest/decorators/index.d.ts +2 -0
- package/dest/decorators/index.d.ts.map +1 -0
- package/dest/decorators/index.js +1 -0
- package/dest/decorators/memoize.d.ts +2 -0
- package/dest/decorators/memoize.d.ts.map +1 -0
- package/dest/decorators/memoize.js +11 -0
- package/dest/error/index.d.ts +21 -0
- package/dest/error/index.d.ts.map +1 -0
- package/dest/error/index.js +17 -0
- package/dest/eth-address/index.d.ts +134 -0
- package/dest/eth-address/index.d.ts.map +1 -0
- package/dest/eth-address/index.js +198 -0
- package/dest/eth-signature/eth_signature.d.ts +62 -0
- package/dest/eth-signature/eth_signature.d.ts.map +1 -0
- package/dest/eth-signature/eth_signature.js +91 -0
- package/dest/eth-signature/index.d.ts +2 -0
- package/dest/eth-signature/index.d.ts.map +1 -0
- package/dest/eth-signature/index.js +1 -0
- package/dest/fields/coordinate.d.ts +68 -0
- package/dest/fields/coordinate.d.ts.map +1 -0
- package/dest/fields/coordinate.js +96 -0
- package/dest/fields/fields.d.ts +176 -0
- package/dest/fields/fields.d.ts.map +1 -0
- package/dest/fields/fields.js +383 -0
- package/dest/fields/index.d.ts +4 -0
- package/dest/fields/index.d.ts.map +1 -0
- package/dest/fields/index.js +3 -0
- package/dest/fields/point.d.ts +175 -0
- package/dest/fields/point.d.ts.map +1 -0
- package/dest/fields/point.js +260 -0
- package/dest/fs/index.d.ts +2 -0
- package/dest/fs/index.d.ts.map +1 -0
- package/dest/fs/index.js +1 -0
- package/dest/fs/run_in_dir.d.ts +2 -0
- package/dest/fs/run_in_dir.d.ts.map +1 -0
- package/dest/fs/run_in_dir.js +31 -0
- package/dest/index.d.ts +31 -0
- package/dest/index.d.ts.map +1 -0
- package/dest/index.js +31 -0
- package/dest/iterable/all.d.ts +9 -0
- package/dest/iterable/all.d.ts.map +1 -0
- package/dest/iterable/all.js +18 -0
- package/dest/iterable/filter.d.ts +10 -0
- package/dest/iterable/filter.d.ts.map +1 -0
- package/dest/iterable/filter.js +48 -0
- package/dest/iterable/index.d.ts +8 -0
- package/dest/iterable/index.d.ts.map +1 -0
- package/dest/iterable/index.js +7 -0
- package/dest/iterable/isAsyncIt.d.ts +7 -0
- package/dest/iterable/isAsyncIt.d.ts.map +1 -0
- package/dest/iterable/isAsyncIt.js +7 -0
- package/dest/iterable/map.d.ts +12 -0
- package/dest/iterable/map.d.ts.map +1 -0
- package/dest/iterable/map.js +36 -0
- package/dest/iterable/peek.d.ts +19 -0
- package/dest/iterable/peek.d.ts.map +1 -0
- package/dest/iterable/peek.js +33 -0
- package/dest/iterable/sort.d.ts +14 -0
- package/dest/iterable/sort.d.ts.map +1 -0
- package/dest/iterable/sort.js +15 -0
- package/dest/iterable/take.d.ts +10 -0
- package/dest/iterable/take.d.ts.map +1 -0
- package/dest/iterable/take.js +32 -0
- package/dest/iterable/toArray.d.ts +2 -0
- package/dest/iterable/toArray.d.ts.map +1 -0
- package/dest/iterable/toArray.js +7 -0
- package/dest/jest/setup.js +7 -0
- package/dest/json-rpc/client/fetch.d.ts +32 -0
- package/dest/json-rpc/client/fetch.d.ts.map +1 -0
- package/dest/json-rpc/client/fetch.js +77 -0
- package/dest/json-rpc/client/index.d.ts +3 -0
- package/dest/json-rpc/client/index.d.ts.map +1 -0
- package/dest/json-rpc/client/index.js +2 -0
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts +26 -0
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -0
- package/dest/json-rpc/client/safe_json_rpc_client.js +57 -0
- package/dest/json-rpc/client/undici.d.ts +5 -0
- package/dest/json-rpc/client/undici.d.ts.map +1 -0
- package/dest/json-rpc/client/undici.js +63 -0
- package/dest/json-rpc/convert.d.ts +27 -0
- package/dest/json-rpc/convert.d.ts.map +1 -0
- package/dest/json-rpc/convert.js +48 -0
- package/dest/json-rpc/fixtures/class_a.d.ts +11 -0
- package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -0
- package/dest/json-rpc/fixtures/class_a.js +20 -0
- package/dest/json-rpc/fixtures/class_b.d.ts +11 -0
- package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -0
- package/dest/json-rpc/fixtures/class_b.js +20 -0
- package/dest/json-rpc/fixtures/test_state.d.ts +89 -0
- package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -0
- package/dest/json-rpc/fixtures/test_state.js +131 -0
- package/dest/json-rpc/index.d.ts +2 -0
- package/dest/json-rpc/index.d.ts.map +1 -0
- package/dest/json-rpc/index.js +1 -0
- package/dest/json-rpc/js_utils.d.ts +13 -0
- package/dest/json-rpc/js_utils.d.ts.map +1 -0
- package/dest/json-rpc/js_utils.js +16 -0
- package/dest/json-rpc/server/index.d.ts +2 -0
- package/dest/json-rpc/server/index.d.ts.map +1 -0
- package/dest/json-rpc/server/index.js +1 -0
- package/dest/json-rpc/server/safe_json_rpc_server.d.ts +140 -0
- package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -0
- package/dest/json-rpc/server/safe_json_rpc_server.js +346 -0
- package/dest/json-rpc/server/telemetry.d.ts +2 -0
- package/dest/json-rpc/server/telemetry.d.ts.map +1 -0
- package/dest/json-rpc/server/telemetry.js +0 -0
- package/dest/json-rpc/test/index.d.ts +2 -0
- package/dest/json-rpc/test/index.d.ts.map +1 -0
- package/dest/json-rpc/test/index.js +1 -0
- package/dest/json-rpc/test/integration.d.ts +15 -0
- package/dest/json-rpc/test/integration.d.ts.map +1 -0
- package/dest/json-rpc/test/integration.js +21 -0
- package/dest/log/console.d.ts +11 -0
- package/dest/log/console.d.ts.map +1 -0
- package/dest/log/console.js +36 -0
- package/dest/log/debug.d.ts +56 -0
- package/dest/log/debug.d.ts.map +1 -0
- package/dest/log/debug.js +75 -0
- package/dest/log/gcloud-logger-config.d.ts +14 -0
- package/dest/log/gcloud-logger-config.d.ts.map +1 -0
- package/dest/log/gcloud-logger-config.js +66 -0
- package/dest/log/index.d.ts +7 -0
- package/dest/log/index.d.ts.map +1 -0
- package/dest/log/index.js +6 -0
- package/dest/log/libp2p_logger.d.ts +7 -0
- package/dest/log/libp2p_logger.d.ts.map +1 -0
- package/dest/log/libp2p_logger.js +55 -0
- package/dest/log/log-filters.d.ts +7 -0
- package/dest/log/log-filters.d.ts.map +1 -0
- package/dest/log/log-filters.js +59 -0
- package/dest/log/log-levels.d.ts +3 -0
- package/dest/log/log-levels.d.ts.map +1 -0
- package/dest/log/log-levels.js +10 -0
- package/dest/log/log_fn.d.ts +7 -0
- package/dest/log/log_fn.d.ts.map +1 -0
- package/dest/log/log_fn.js +1 -0
- package/dest/log/log_history.d.ts +31 -0
- package/dest/log/log_history.d.ts.map +1 -0
- package/dest/log/log_history.js +38 -0
- package/dest/log/pino-logger.d.ts +57 -0
- package/dest/log/pino-logger.d.ts.map +1 -0
- package/dest/log/pino-logger.js +207 -0
- package/dest/message/index.d.ts +32 -0
- package/dest/message/index.d.ts.map +1 -0
- package/dest/message/index.js +27 -0
- package/dest/mutex/index.d.ts +53 -0
- package/dest/mutex/index.d.ts.map +1 -0
- package/dest/mutex/index.js +78 -0
- package/dest/mutex/mutex_database.d.ts +10 -0
- package/dest/mutex/mutex_database.d.ts.map +1 -0
- package/dest/mutex/mutex_database.js +4 -0
- package/dest/noir/index.d.ts +2 -0
- package/dest/noir/index.d.ts.map +1 -0
- package/dest/noir/index.js +1 -0
- package/dest/noir/noir_package_config.d.ts +129 -0
- package/dest/noir/noir_package_config.d.ts.map +1 -0
- package/dest/noir/noir_package_config.js +36 -0
- package/dest/promise/index.d.ts +3 -0
- package/dest/promise/index.d.ts.map +1 -0
- package/dest/promise/index.js +2 -0
- package/dest/promise/running-promise.d.ts +47 -0
- package/dest/promise/running-promise.d.ts.map +1 -0
- package/dest/promise/running-promise.js +110 -0
- package/dest/promise/utils.d.ts +12 -0
- package/dest/promise/utils.d.ts.map +1 -0
- package/dest/promise/utils.js +20 -0
- package/dest/queue/base_memory_queue.d.ts +65 -0
- package/dest/queue/base_memory_queue.d.ts.map +1 -0
- package/dest/queue/base_memory_queue.js +116 -0
- package/dest/queue/batch_queue.d.ts +47 -0
- package/dest/queue/batch_queue.d.ts.map +1 -0
- package/dest/queue/batch_queue.js +105 -0
- package/dest/queue/bounded_serial_queue.d.ts +56 -0
- package/dest/queue/bounded_serial_queue.d.ts.map +1 -0
- package/dest/queue/bounded_serial_queue.js +84 -0
- package/dest/queue/fifo_memory_queue.d.ts +21 -0
- package/dest/queue/fifo_memory_queue.d.ts.map +1 -0
- package/dest/queue/fifo_memory_queue.js +29 -0
- package/dest/queue/index.d.ts +7 -0
- package/dest/queue/index.d.ts.map +1 -0
- package/dest/queue/index.js +6 -0
- package/dest/queue/priority_memory_queue.d.ts +13 -0
- package/dest/queue/priority_memory_queue.d.ts.map +1 -0
- package/dest/queue/priority_memory_queue.js +16 -0
- package/dest/queue/priority_queue.d.ts +14 -0
- package/dest/queue/priority_queue.d.ts.map +1 -0
- package/dest/queue/priority_queue.js +29 -0
- package/dest/queue/semaphore.d.ts +23 -0
- package/dest/queue/semaphore.d.ts.map +1 -0
- package/dest/queue/semaphore.js +26 -0
- package/dest/queue/serial_queue.d.ts +49 -0
- package/dest/queue/serial_queue.d.ts.map +1 -0
- package/dest/queue/serial_queue.js +72 -0
- package/dest/retry/index.d.ts +44 -0
- package/dest/retry/index.d.ts.map +1 -0
- package/dest/retry/index.js +93 -0
- package/dest/running-promise/index.d.ts +2 -0
- package/dest/running-promise/index.d.ts.map +1 -0
- package/dest/running-promise/index.js +1 -0
- package/dest/schemas/api.d.ts +21 -0
- package/dest/schemas/api.d.ts.map +1 -0
- package/dest/schemas/api.js +3 -0
- package/dest/schemas/index.d.ts +6 -0
- package/dest/schemas/index.d.ts.map +1 -0
- package/dest/schemas/index.js +5 -0
- package/dest/schemas/parse.d.ts +9 -0
- package/dest/schemas/parse.d.ts.map +1 -0
- package/dest/schemas/parse.js +22 -0
- package/dest/schemas/schemas.d.ts +45 -0
- package/dest/schemas/schemas.d.ts.map +1 -0
- package/dest/schemas/schemas.js +38 -0
- package/dest/schemas/types.d.ts +3 -0
- package/dest/schemas/types.d.ts.map +1 -0
- package/dest/schemas/types.js +1 -0
- package/dest/schemas/utils.d.ts +53 -0
- package/dest/schemas/utils.d.ts.map +1 -0
- package/dest/schemas/utils.js +60 -0
- package/dest/serialize/buffer_reader.d.ts +239 -0
- package/dest/serialize/buffer_reader.d.ts.map +1 -0
- package/dest/serialize/buffer_reader.js +290 -0
- package/dest/serialize/field_reader.d.ts +112 -0
- package/dest/serialize/field_reader.d.ts.map +1 -0
- package/dest/serialize/field_reader.js +147 -0
- package/dest/serialize/free_funcs.d.ts +105 -0
- package/dest/serialize/free_funcs.d.ts.map +1 -0
- package/dest/serialize/free_funcs.js +189 -0
- package/dest/serialize/index.d.ts +7 -0
- package/dest/serialize/index.d.ts.map +1 -0
- package/dest/serialize/index.js +6 -0
- package/dest/serialize/serialize.d.ts +182 -0
- package/dest/serialize/serialize.d.ts.map +1 -0
- package/dest/serialize/serialize.js +248 -0
- package/dest/serialize/type_registry.d.ts +23 -0
- package/dest/serialize/type_registry.d.ts.map +1 -0
- package/dest/serialize/type_registry.js +61 -0
- package/dest/serialize/types.d.ts +33 -0
- package/dest/serialize/types.d.ts.map +1 -0
- package/dest/serialize/types.js +21 -0
- package/dest/sleep/index.d.ts +51 -0
- package/dest/sleep/index.d.ts.map +1 -0
- package/dest/sleep/index.js +67 -0
- package/dest/string/index.d.ts +11 -0
- package/dest/string/index.d.ts.map +1 -0
- package/dest/string/index.js +24 -0
- package/dest/testing/files/index.d.ts +20 -0
- package/dest/testing/files/index.d.ts.map +1 -0
- package/dest/testing/files/index.js +58 -0
- package/dest/testing/index.d.ts +4 -0
- package/dest/testing/index.d.ts.map +1 -0
- package/dest/testing/index.js +3 -0
- package/dest/testing/port_allocator.d.ts +10 -0
- package/dest/testing/port_allocator.d.ts.map +1 -0
- package/dest/testing/port_allocator.js +29 -0
- package/dest/testing/snapshot_serializer.d.ts +5 -0
- package/dest/testing/snapshot_serializer.d.ts.map +1 -0
- package/dest/testing/snapshot_serializer.js +32 -0
- package/dest/testing/test_data.d.ts +7 -0
- package/dest/testing/test_data.d.ts.map +1 -0
- package/dest/testing/test_data.js +29 -0
- package/dest/timer/date.d.ts +13 -0
- package/dest/timer/date.d.ts.map +1 -0
- package/dest/timer/date.js +24 -0
- package/dest/timer/elapsed.d.ts +13 -0
- package/dest/timer/elapsed.d.ts.map +1 -0
- package/dest/timer/elapsed.js +25 -0
- package/dest/timer/index.d.ts +5 -0
- package/dest/timer/index.d.ts.map +1 -0
- package/dest/timer/index.js +4 -0
- package/dest/timer/timeout.d.ts +41 -0
- package/dest/timer/timeout.d.ts.map +1 -0
- package/dest/timer/timeout.js +66 -0
- package/dest/timer/timer.d.ts +37 -0
- package/dest/timer/timer.d.ts.map +1 -0
- package/dest/timer/timer.js +40 -0
- package/dest/transport/browser/index.d.ts +5 -0
- package/dest/transport/browser/index.d.ts.map +1 -0
- package/dest/transport/browser/index.js +4 -0
- package/dest/transport/browser/message_port_socket.d.ts +37 -0
- package/dest/transport/browser/message_port_socket.d.ts.map +1 -0
- package/dest/transport/browser/message_port_socket.js +42 -0
- package/dest/transport/browser/shared_worker_connector.d.ts +19 -0
- package/dest/transport/browser/shared_worker_connector.d.ts.map +1 -0
- package/dest/transport/browser/shared_worker_connector.js +19 -0
- package/dest/transport/browser/shared_worker_listener.d.ts +38 -0
- package/dest/transport/browser/shared_worker_listener.d.ts.map +1 -0
- package/dest/transport/browser/shared_worker_listener.js +33 -0
- package/dest/transport/browser/worker_connector.d.ts +26 -0
- package/dest/transport/browser/worker_connector.d.ts.map +1 -0
- package/dest/transport/browser/worker_connector.js +30 -0
- package/dest/transport/browser/worker_listener.d.ts +39 -0
- package/dest/transport/browser/worker_listener.d.ts.map +1 -0
- package/dest/transport/browser/worker_listener.js +35 -0
- package/dest/transport/dispatch/create_dispatch_fn.d.ts +25 -0
- package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +1 -0
- package/dest/transport/dispatch/create_dispatch_fn.js +17 -0
- package/dest/transport/dispatch/create_dispatch_proxy.d.ts +102 -0
- package/dest/transport/dispatch/create_dispatch_proxy.d.ts.map +1 -0
- package/dest/transport/dispatch/create_dispatch_proxy.js +59 -0
- package/dest/transport/dispatch/messages.d.ts +52 -0
- package/dest/transport/dispatch/messages.d.ts.map +1 -0
- package/dest/transport/dispatch/messages.js +13 -0
- package/dest/transport/index.d.ts +12 -0
- package/dest/transport/index.d.ts.map +1 -0
- package/dest/transport/index.js +11 -0
- package/dest/transport/interface/connector.d.ts +8 -0
- package/dest/transport/interface/connector.d.ts.map +1 -0
- package/dest/transport/interface/connector.js +3 -0
- package/dest/transport/interface/listener.d.ts +13 -0
- package/dest/transport/interface/listener.d.ts.map +1 -0
- package/dest/transport/interface/listener.js +4 -0
- package/dest/transport/interface/socket.d.ts +13 -0
- package/dest/transport/interface/socket.d.ts.map +1 -0
- package/dest/transport/interface/socket.js +7 -0
- package/dest/transport/interface/transferable.d.ts +68 -0
- package/dest/transport/interface/transferable.d.ts.map +1 -0
- package/dest/transport/interface/transferable.js +63 -0
- package/dest/transport/node/index.d.ts +3 -0
- package/dest/transport/node/index.d.ts.map +1 -0
- package/dest/transport/node/index.js +2 -0
- package/dest/transport/node/node_connector.d.ts +28 -0
- package/dest/transport/node/node_connector.d.ts.map +1 -0
- package/dest/transport/node/node_connector.js +26 -0
- package/dest/transport/node/node_connector_socket.d.ts +42 -0
- package/dest/transport/node/node_connector_socket.d.ts.map +1 -0
- package/dest/transport/node/node_connector_socket.js +44 -0
- package/dest/transport/node/node_listener.d.ts +26 -0
- package/dest/transport/node/node_listener.d.ts.map +1 -0
- package/dest/transport/node/node_listener.js +26 -0
- package/dest/transport/node/node_listener_socket.d.ts +37 -0
- package/dest/transport/node/node_listener_socket.d.ts.map +1 -0
- package/dest/transport/node/node_listener_socket.js +40 -0
- package/dest/transport/transport_client.d.ts +61 -0
- package/dest/transport/transport_client.d.ts.map +1 -0
- package/dest/transport/transport_client.js +96 -0
- package/dest/transport/transport_server.d.ts +56 -0
- package/dest/transport/transport_server.d.ts.map +1 -0
- package/dest/transport/transport_server.js +114 -0
- package/dest/trees/hasher.d.ts +39 -0
- package/dest/trees/hasher.d.ts.map +1 -0
- package/dest/trees/hasher.js +5 -0
- package/dest/trees/index.d.ts +11 -0
- package/dest/trees/index.d.ts.map +1 -0
- package/dest/trees/index.js +10 -0
- package/dest/trees/indexed_merkle_tree.d.ts +13 -0
- package/dest/trees/indexed_merkle_tree.d.ts.map +1 -0
- package/dest/trees/indexed_merkle_tree.js +27 -0
- package/dest/trees/indexed_merkle_tree_calculator.d.ts +23 -0
- package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -0
- package/dest/trees/indexed_merkle_tree_calculator.js +83 -0
- package/dest/trees/indexed_tree_leaf.d.ts +57 -0
- package/dest/trees/indexed_tree_leaf.d.ts.map +1 -0
- package/dest/trees/indexed_tree_leaf.js +5 -0
- package/dest/trees/membership_witness.d.ts +62 -0
- package/dest/trees/membership_witness.d.ts.map +1 -0
- package/dest/trees/membership_witness.js +70 -0
- package/dest/trees/merkle_tree.d.ts +18 -0
- package/dest/trees/merkle_tree.d.ts.map +1 -0
- package/dest/trees/merkle_tree.js +58 -0
- package/dest/trees/merkle_tree_calculator.d.ts +16 -0
- package/dest/trees/merkle_tree_calculator.d.ts.map +1 -0
- package/dest/trees/merkle_tree_calculator.js +61 -0
- package/dest/trees/sibling_path.d.ts +132 -0
- package/dest/trees/sibling_path.d.ts.map +1 -0
- package/dest/trees/sibling_path.js +144 -0
- package/dest/trees/unbalanced_merkle_tree.d.ts +17 -0
- package/dest/trees/unbalanced_merkle_tree.d.ts.map +1 -0
- package/dest/trees/unbalanced_merkle_tree.js +100 -0
- package/dest/trees/unbalanced_tree_store.d.ts +19 -0
- package/dest/trees/unbalanced_tree_store.d.ts.map +1 -0
- package/dest/trees/unbalanced_tree_store.js +94 -0
- package/dest/types/index.d.ts +19 -0
- package/dest/types/index.d.ts.map +1 -0
- package/dest/types/index.js +3 -0
- package/dest/url/index.d.ts +9 -0
- package/dest/url/index.d.ts.map +1 -0
- package/dest/url/index.js +62 -0
- package/dest/validation/index.d.ts +9 -0
- package/dest/validation/index.d.ts.map +1 -0
- package/dest/validation/index.js +15 -0
- package/dest/wasm/empty_wasi_sdk.d.ts +130 -0
- package/dest/wasm/empty_wasi_sdk.d.ts.map +1 -0
- package/dest/wasm/empty_wasi_sdk.js +148 -0
- package/dest/wasm/index.d.ts +2 -0
- package/dest/wasm/index.d.ts.map +1 -0
- package/dest/wasm/index.js +1 -0
- package/dest/wasm/wasm_module.d.ts +136 -0
- package/dest/wasm/wasm_module.d.ts.map +1 -0
- package/dest/wasm/wasm_module.js +196 -0
- package/dest/worker/browser/index.d.ts +3 -0
- package/dest/worker/browser/index.d.ts.map +1 -0
- package/dest/worker/browser/index.js +2 -0
- package/dest/worker/browser/start_web_module.d.ts +7 -0
- package/dest/worker/browser/start_web_module.d.ts.map +1 -0
- package/dest/worker/browser/start_web_module.js +27 -0
- package/dest/worker/browser/web_data_store.d.ts +24 -0
- package/dest/worker/browser/web_data_store.d.ts.map +1 -0
- package/dest/worker/browser/web_data_store.js +29 -0
- package/dest/worker/browser/web_worker.d.ts +10 -0
- package/dest/worker/browser/web_worker.d.ts.map +1 -0
- package/dest/worker/browser/web_worker.js +25 -0
- package/dest/worker/data_store.d.ts +21 -0
- package/dest/worker/data_store.d.ts.map +1 -0
- package/dest/worker/data_store.js +3 -0
- package/dest/worker/index.d.ts +3 -0
- package/dest/worker/index.d.ts.map +1 -0
- package/dest/worker/index.js +1 -0
- package/dest/worker/node/index.d.ts +3 -0
- package/dest/worker/node/index.d.ts.map +1 -0
- package/dest/worker/node/index.js +2 -0
- package/dest/worker/node/node_data_store.d.ts +13 -0
- package/dest/worker/node/node_data_store.d.ts.map +1 -0
- package/dest/worker/node/node_data_store.js +20 -0
- package/dest/worker/node/node_worker.d.ts +6 -0
- package/dest/worker/node/node_worker.d.ts.map +1 -0
- package/dest/worker/node/node_worker.js +22 -0
- package/dest/worker/node/start_node_module.d.ts +7 -0
- package/dest/worker/node/start_node_module.d.ts.map +1 -0
- package/dest/worker/node/start_node_module.js +31 -0
- package/dest/worker/wasm_worker.d.ts +9 -0
- package/dest/worker/wasm_worker.d.ts.map +1 -0
- package/dest/worker/wasm_worker.js +3 -0
- package/dest/worker/worker_pool.d.ts +40 -0
- package/dest/worker/worker_pool.d.ts.map +1 -0
- package/dest/worker/worker_pool.js +51 -0
- package/package.json +176 -0
- package/src/array/array.ts +150 -0
- package/src/array/index.ts +1 -0
- package/src/async-map/index.ts +18 -0
- package/src/async-pool/index.ts +50 -0
- package/src/bigint-buffer/index.ts +87 -0
- package/src/buffer/buffer32.ts +144 -0
- package/src/buffer/index.ts +1 -0
- package/src/collection/array.ts +203 -0
- package/src/collection/index.ts +2 -0
- package/src/collection/object.ts +52 -0
- package/src/committable/committable.ts +46 -0
- package/src/committable/index.ts +1 -0
- package/src/config/env_var.ts +207 -0
- package/src/config/index.ts +167 -0
- package/src/crypto/aes128/index.ts +59 -0
- package/src/crypto/ecdsa/index.ts +70 -0
- package/src/crypto/ecdsa/signature.ts +100 -0
- package/src/crypto/grumpkin/index.ts +97 -0
- package/src/crypto/index.ts +14 -0
- package/src/crypto/keccak/index.ts +283 -0
- package/src/crypto/keys/index.ts +10 -0
- package/src/crypto/pedersen/index.ts +1 -0
- package/src/crypto/pedersen/pedersen.elliptic.ts +584 -0
- package/src/crypto/pedersen/pedersen.noble.ts +573 -0
- package/src/crypto/pedersen/pedersen.wasm.ts +48 -0
- package/src/crypto/poseidon/index.ts +77 -0
- package/src/crypto/random/index.ts +85 -0
- package/src/crypto/random/randomness_singleton.ts +62 -0
- package/src/crypto/schnorr/index.ts +55 -0
- package/src/crypto/schnorr/signature.ts +116 -0
- package/src/crypto/secp256k1/index.ts +57 -0
- package/src/crypto/secp256k1-signer/index.ts +2 -0
- package/src/crypto/secp256k1-signer/secp256k1_signer.ts +38 -0
- package/src/crypto/secp256k1-signer/utils.ts +99 -0
- package/src/crypto/serialize.ts +85 -0
- package/src/crypto/sha256/index.ts +147 -0
- package/src/crypto/sha512/index.ts +16 -0
- package/src/crypto/signature/index.ts +17 -0
- package/src/crypto/sync/index.ts +6 -0
- package/src/crypto/sync/pedersen/index.ts +45 -0
- package/src/crypto/sync/poseidon/index.ts +76 -0
- package/src/decorators/index.ts +1 -0
- package/src/decorators/memoize.ts +11 -0
- package/src/error/index.ts +22 -0
- package/src/eth-address/index.ts +241 -0
- package/src/eth-signature/eth_signature.ts +128 -0
- package/src/eth-signature/index.ts +1 -0
- package/src/fields/coordinate.ts +104 -0
- package/src/fields/fields.ts +505 -0
- package/src/fields/index.ts +3 -0
- package/src/fields/point.ts +300 -0
- package/src/fs/index.ts +1 -0
- package/src/fs/run_in_dir.ts +33 -0
- package/src/index.ts +31 -0
- package/src/iterable/all.ts +32 -0
- package/src/iterable/filter.ts +77 -0
- package/src/iterable/index.ts +7 -0
- package/src/iterable/isAsyncIt.ts +8 -0
- package/src/iterable/map.ts +66 -0
- package/src/iterable/peek.ts +58 -0
- package/src/iterable/sort.ts +39 -0
- package/src/iterable/take.ts +54 -0
- package/src/iterable/toArray.ts +9 -0
- package/src/jest/setup.mjs +9 -0
- package/src/json-rpc/README.md +55 -0
- package/src/json-rpc/client/fetch.ts +103 -0
- package/src/json-rpc/client/index.ts +2 -0
- package/src/json-rpc/client/safe_json_rpc_client.ts +67 -0
- package/src/json-rpc/client/undici.ts +75 -0
- package/src/json-rpc/convert.ts +61 -0
- package/src/json-rpc/fixtures/class_a.ts +15 -0
- package/src/json-rpc/fixtures/class_b.ts +15 -0
- package/src/json-rpc/fixtures/test_state.ts +143 -0
- package/src/json-rpc/index.ts +1 -0
- package/src/json-rpc/js_utils.ts +21 -0
- package/src/json-rpc/server/index.ts +1 -0
- package/src/json-rpc/server/safe_json_rpc_server.ts +376 -0
- package/src/json-rpc/server/telemetry.ts +0 -0
- package/src/json-rpc/test/index.ts +1 -0
- package/src/json-rpc/test/integration.ts +35 -0
- package/src/log/console.ts +39 -0
- package/src/log/debug.ts +104 -0
- package/src/log/gcloud-logger-config.ts +71 -0
- package/src/log/index.ts +6 -0
- package/src/log/libp2p_logger.ts +67 -0
- package/src/log/log-filters.ts +63 -0
- package/src/log/log-levels.ts +3 -0
- package/src/log/log_fn.ts +5 -0
- package/src/log/log_history.ts +44 -0
- package/src/log/pino-logger.ts +243 -0
- package/src/message/index.ts +43 -0
- package/src/mutex/index.ts +84 -0
- package/src/mutex/mutex_database.ts +12 -0
- package/src/noir/index.ts +1 -0
- package/src/noir/noir_package_config.ts +54 -0
- package/src/promise/index.ts +2 -0
- package/src/promise/running-promise.ts +125 -0
- package/src/promise/utils.ts +29 -0
- package/src/queue/base_memory_queue.ts +138 -0
- package/src/queue/batch_queue.ts +120 -0
- package/src/queue/bounded_serial_queue.ts +100 -0
- package/src/queue/fifo_memory_queue.ts +39 -0
- package/src/queue/index.ts +6 -0
- package/src/queue/priority_memory_queue.ts +20 -0
- package/src/queue/priority_queue.ts +34 -0
- package/src/queue/semaphore.ts +33 -0
- package/src/queue/serial_queue.ts +86 -0
- package/src/retry/index.ts +100 -0
- package/src/running-promise/index.ts +1 -0
- package/src/schemas/api.ts +47 -0
- package/src/schemas/index.ts +5 -0
- package/src/schemas/parse.ts +29 -0
- package/src/schemas/schemas.ts +64 -0
- package/src/schemas/types.ts +3 -0
- package/src/schemas/utils.ts +112 -0
- package/src/serialize/buffer_reader.ts +383 -0
- package/src/serialize/field_reader.ts +184 -0
- package/src/serialize/free_funcs.ts +204 -0
- package/src/serialize/index.ts +6 -0
- package/src/serialize/serialize.ts +336 -0
- package/src/serialize/type_registry.ts +75 -0
- package/src/serialize/types.ts +40 -0
- package/src/sleep/index.ts +75 -0
- package/src/string/index.ts +31 -0
- package/src/testing/files/index.ts +69 -0
- package/src/testing/index.ts +3 -0
- package/src/testing/port_allocator.ts +31 -0
- package/src/testing/snapshot_serializer.ts +33 -0
- package/src/testing/test_data.ts +36 -0
- package/src/timer/date.ts +24 -0
- package/src/timer/elapsed.ts +23 -0
- package/src/timer/index.ts +4 -0
- package/src/timer/timeout.ts +70 -0
- package/src/timer/timer.ts +48 -0
- package/src/transport/browser/index.ts +4 -0
- package/src/transport/browser/message_port_socket.ts +48 -0
- package/src/transport/browser/shared_worker_connector.ts +21 -0
- package/src/transport/browser/shared_worker_listener.ts +53 -0
- package/src/transport/browser/worker_connector.ts +30 -0
- package/src/transport/browser/worker_listener.ts +54 -0
- package/src/transport/dispatch/create_dispatch_fn.ts +35 -0
- package/src/transport/dispatch/create_dispatch_proxy.ts +141 -0
- package/src/transport/dispatch/messages.ts +58 -0
- package/src/transport/index.ts +11 -0
- package/src/transport/interface/connector.ts +9 -0
- package/src/transport/interface/listener.ts +16 -0
- package/src/transport/interface/socket.ts +15 -0
- package/src/transport/interface/transferable.ts +125 -0
- package/src/transport/node/index.ts +2 -0
- package/src/transport/node/node_connector.ts +30 -0
- package/src/transport/node/node_connector_socket.ts +52 -0
- package/src/transport/node/node_listener.ts +34 -0
- package/src/transport/node/node_listener_socket.ts +48 -0
- package/src/transport/transport_client.ts +131 -0
- package/src/transport/transport_server.ts +108 -0
- package/src/trees/hasher.ts +39 -0
- package/src/trees/index.ts +10 -0
- package/src/trees/indexed_merkle_tree.ts +36 -0
- package/src/trees/indexed_merkle_tree_calculator.ts +94 -0
- package/src/trees/indexed_tree_leaf.ts +56 -0
- package/src/trees/membership_witness.ts +99 -0
- package/src/trees/merkle_tree.ts +72 -0
- package/src/trees/merkle_tree_calculator.ts +67 -0
- package/src/trees/sibling_path.ts +183 -0
- package/src/trees/unbalanced_merkle_tree.ts +103 -0
- package/src/trees/unbalanced_tree_store.ts +102 -0
- package/src/types/index.ts +25 -0
- package/src/url/index.ts +73 -0
- package/src/validation/index.ts +18 -0
- package/src/wasm/README.md +6 -0
- package/src/wasm/empty_wasi_sdk.ts +166 -0
- package/src/wasm/fixtures/gcd.wasm +0 -0
- package/src/wasm/fixtures/gcd.wat +27 -0
- package/src/wasm/index.ts +1 -0
- package/src/wasm/wasm_module.ts +260 -0
- package/src/worker/browser/index.ts +2 -0
- package/src/worker/browser/start_web_module.ts +24 -0
- package/src/worker/browser/web_data_store.ts +38 -0
- package/src/worker/browser/web_worker.ts +25 -0
- package/src/worker/data_store.ts +19 -0
- package/src/worker/index.ts +2 -0
- package/src/worker/node/index.ts +2 -0
- package/src/worker/node/node_data_store.ts +27 -0
- package/src/worker/node/node_worker.ts +23 -0
- package/src/worker/node/start_node_module.ts +30 -0
- package/src/worker/wasm_worker.ts +7 -0
- package/src/worker/worker_pool.ts +73 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { ComponentLogger, Logger } from '@libp2p/interface';
|
|
2
|
+
|
|
3
|
+
import { getLogLevelFromFilters } from './log-filters.js';
|
|
4
|
+
import type { LogLevel } from './log-levels.js';
|
|
5
|
+
import { logFilters, logger } from './pino-logger.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Creates a libp2p compatible logger that wraps our pino logger.
|
|
9
|
+
* This adapter implements the ComponentLogger interface required by libp2p.
|
|
10
|
+
*/
|
|
11
|
+
export function createLibp2pComponentLogger(namespace: string): ComponentLogger {
|
|
12
|
+
return {
|
|
13
|
+
forComponent: (component: string) => createLibp2pLogger(`${namespace}:${component}`),
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// Lipp2p libraries use arbitrary string substitutions, so we need to replace them with %s, this is slow so avoid doing it unless trace debugging
|
|
18
|
+
function replaceFormatting(message: string) {
|
|
19
|
+
// Message can sometimes not be a string, e.g. an error object, just return it as is
|
|
20
|
+
if (!message?.replace) {
|
|
21
|
+
return message;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return message.replace(/(%p|%a)/g, '%s');
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function createLibp2pLogger(component: string): Logger {
|
|
28
|
+
// Create a direct pino logger instance for libp2p that supports string interpolation
|
|
29
|
+
const log = logger.child({ module: component }, { level: getLogLevelFromFilters(logFilters, component) });
|
|
30
|
+
|
|
31
|
+
const logIfEnabled = (level: LogLevel, message: string, ...args: unknown[]) => {
|
|
32
|
+
if (!log.isLevelEnabled(level)) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
log[level](replaceFormatting(message), ...args);
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
// Default log level is trace as this is super super noisy
|
|
40
|
+
const logFn = (message: string, ...args: unknown[]) => {
|
|
41
|
+
logIfEnabled('trace', message, ...args);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
return Object.assign(logFn, {
|
|
45
|
+
enabled: log.isLevelEnabled('debug'),
|
|
46
|
+
error(message: string, ...args: unknown[]) {
|
|
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, ...args);
|
|
49
|
+
},
|
|
50
|
+
|
|
51
|
+
debug(message: string, ...args: unknown[]) {
|
|
52
|
+
logIfEnabled('debug', message, ...args);
|
|
53
|
+
},
|
|
54
|
+
|
|
55
|
+
info(message: string, ...args: unknown[]) {
|
|
56
|
+
logIfEnabled('info', message, ...args);
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
warn(message: string, ...args: unknown[]) {
|
|
60
|
+
logIfEnabled('warn', message, ...args);
|
|
61
|
+
},
|
|
62
|
+
|
|
63
|
+
trace(message: string, ...args: unknown[]) {
|
|
64
|
+
logIfEnabled('trace', message, ...args);
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { type LogLevel, LogLevels } from './log-levels.js';
|
|
2
|
+
|
|
3
|
+
export type LogFilters = [string, LogLevel][];
|
|
4
|
+
|
|
5
|
+
export function getLogLevelFromFilters(filters: LogFilters, module: string): LogLevel | undefined {
|
|
6
|
+
for (const [filterModule, level] of filters) {
|
|
7
|
+
try {
|
|
8
|
+
const regex = new RegExp(filterModule);
|
|
9
|
+
if (regex.test(module)) {
|
|
10
|
+
return level as LogLevel;
|
|
11
|
+
}
|
|
12
|
+
} catch {
|
|
13
|
+
// If regex is invalid, fall back to startsWith check
|
|
14
|
+
if (module.startsWith(filterModule)) {
|
|
15
|
+
return level as LogLevel;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function assertLogLevel(level: string): asserts level is LogLevel {
|
|
23
|
+
if (!LogLevels.includes(level as LogLevel)) {
|
|
24
|
+
throw new Error(`Invalid log level: ${level}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function parseEnv(env: string | undefined, defaultLevel: LogLevel): [LogLevel, LogFilters] {
|
|
29
|
+
if (!env) {
|
|
30
|
+
return [defaultLevel, []];
|
|
31
|
+
}
|
|
32
|
+
const [level] = env.split(';', 1);
|
|
33
|
+
assertLogLevel(level);
|
|
34
|
+
return [level, parseFilters(env.slice(level.length + 1))];
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function parseFilters(definition: string | undefined): LogFilters {
|
|
38
|
+
if (!definition) {
|
|
39
|
+
return [];
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const statements = definition.split(';');
|
|
43
|
+
const filters: LogFilters = [];
|
|
44
|
+
for (const statement of statements) {
|
|
45
|
+
const [level] = statement.split(':', 1);
|
|
46
|
+
const modules = statement.slice(level.length + 1);
|
|
47
|
+
if (!modules || !level) {
|
|
48
|
+
throw new Error(`Invalid log filter statement: ${statement}`);
|
|
49
|
+
}
|
|
50
|
+
const sanitizedLevel = level.trim().toLowerCase();
|
|
51
|
+
assertLogLevel(sanitizedLevel);
|
|
52
|
+
for (const module of modules.split(',')) {
|
|
53
|
+
filters.push([
|
|
54
|
+
module
|
|
55
|
+
.trim()
|
|
56
|
+
.toLowerCase()
|
|
57
|
+
.replace(/^aztec:/, ''),
|
|
58
|
+
sanitizedLevel as LogLevel | 'silent',
|
|
59
|
+
]);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return filters.reverse();
|
|
63
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { setPreDebugLogHook } from './debug.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* LogHistory is a utility class that provides the ability to store and manage debug logs.
|
|
5
|
+
* It can be enabled to record logs along with their timestamps, retrieve a specified number
|
|
6
|
+
* of recent logs, or clear stored logs based on a given count. This can be useful for debugging
|
|
7
|
+
* purposes, monitoring application activities, and maintaining log history.
|
|
8
|
+
*/
|
|
9
|
+
export class LogHistory {
|
|
10
|
+
private logs: any[][] = [];
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Enables the logging of debug messages with timestamps.
|
|
14
|
+
* Hooks into the pre-debug log and stores each log entry along with its timestamp in the logs array.
|
|
15
|
+
*/
|
|
16
|
+
public enable() {
|
|
17
|
+
setPreDebugLogHook((...args: any[]) => {
|
|
18
|
+
this.logs.push([new Date().toISOString(), ...args]);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Retrieves a specified number of logs from the end of the log history or all logs if no argument is provided.
|
|
24
|
+
* The logs are ordered chronologically, with the oldest logs at the beginning of the array.
|
|
25
|
+
*
|
|
26
|
+
* @param last - Optional number representing the amount of recent logs to return. Defaults to 0, which returns all logs.
|
|
27
|
+
* @returns An array of log arrays, each containing a timestamp and log arguments.
|
|
28
|
+
*/
|
|
29
|
+
public getLogs(last = 0) {
|
|
30
|
+
return last ? this.logs.slice(-last) : this.logs;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Clear a specified number of logs from the beginning of the logs array.
|
|
35
|
+
* If no count is provided, it will clear all logs.
|
|
36
|
+
*
|
|
37
|
+
* @param count - The number of logs to be removed (default: total logs length).
|
|
38
|
+
*/
|
|
39
|
+
public clear(count = this.logs.length) {
|
|
40
|
+
this.logs = this.logs.slice(count);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export const logHistory = new LogHistory();
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import { createColors, isColorSupported } from 'colorette';
|
|
2
|
+
import isNode from 'detect-node';
|
|
3
|
+
import { pino, symbols } from 'pino';
|
|
4
|
+
import type { Writable } from 'stream';
|
|
5
|
+
import { inspect } from 'util';
|
|
6
|
+
|
|
7
|
+
import { compactArray } from '../collection/array.js';
|
|
8
|
+
import { type EnvVar, parseBooleanEnv } from '../config/index.js';
|
|
9
|
+
import { GoogleCloudLoggerConfig } from './gcloud-logger-config.js';
|
|
10
|
+
import { getLogLevelFromFilters, parseEnv } from './log-filters.js';
|
|
11
|
+
import type { LogLevel } from './log-levels.js';
|
|
12
|
+
import type { LogData, LogFn } from './log_fn.js';
|
|
13
|
+
|
|
14
|
+
export function createLogger(module: string): Logger {
|
|
15
|
+
module = logNameHandlers.reduce((moduleName, handler) => handler(moduleName), module.replace(/^aztec:/, ''));
|
|
16
|
+
const pinoLogger = logger.child({ module }, { level: getLogLevelFromFilters(logFilters, module) });
|
|
17
|
+
|
|
18
|
+
// We check manually for isLevelEnabled to avoid calling processLogData unnecessarily.
|
|
19
|
+
// Note that isLevelEnabled is missing from the browser version of pino.
|
|
20
|
+
const logFn = (level: LogLevel, msg: string, data?: unknown) =>
|
|
21
|
+
isLevelEnabled(pinoLogger, level) && pinoLogger[level](processLogData((data as LogData) ?? {}), msg);
|
|
22
|
+
|
|
23
|
+
return {
|
|
24
|
+
silent: () => {},
|
|
25
|
+
// TODO(palla/log): Should we move err to data instead of the text message?
|
|
26
|
+
/** Log as fatal. Use when an error has brought down the system. */
|
|
27
|
+
fatal: (msg: string, err?: unknown, data?: unknown) => logFn('fatal', formatErr(msg, err), data),
|
|
28
|
+
/** Log as error. Use for errors in general. */
|
|
29
|
+
error: (msg: string, err?: unknown, data?: unknown) => logFn('error', formatErr(msg, err), data),
|
|
30
|
+
/** Log as warn. Use for when we stray from the happy path. */
|
|
31
|
+
warn: (msg: string, data?: unknown) => logFn('warn', msg, data),
|
|
32
|
+
/** Log as info. Use for providing an operator with info on what the system is doing. */
|
|
33
|
+
info: (msg: string, data?: unknown) => logFn('info', msg, data),
|
|
34
|
+
/** Log as verbose. Use for when we need additional insight on what a subsystem is doing. */
|
|
35
|
+
verbose: (msg: string, data?: unknown) => logFn('verbose', msg, data),
|
|
36
|
+
/** Log as debug. Use for when we need debugging info to troubleshoot an issue on a specific component. */
|
|
37
|
+
debug: (msg: string, data?: unknown) => logFn('debug', msg, data),
|
|
38
|
+
/** Log as trace. Use for when we want to denial-of-service any recipient of the logs. */
|
|
39
|
+
trace: (msg: string, data?: unknown) => logFn('trace', msg, data),
|
|
40
|
+
level: pinoLogger.level as LogLevel,
|
|
41
|
+
/** Whether the given level is enabled for this logger. */
|
|
42
|
+
isLevelEnabled: (level: LogLevel) => isLevelEnabled(pinoLogger, level),
|
|
43
|
+
/** Module name for the logger. */
|
|
44
|
+
module,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Allow global hooks for processing log data.
|
|
49
|
+
// Used for injecting OTEL trace_id in telemetry client.
|
|
50
|
+
type LogDataHandler = (data: LogData) => LogData;
|
|
51
|
+
const logDataHandlers: LogDataHandler[] = [];
|
|
52
|
+
|
|
53
|
+
export function addLogDataHandler(handler: LogDataHandler): void {
|
|
54
|
+
logDataHandlers.push(handler);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function processLogData(data: LogData): LogData {
|
|
58
|
+
return logDataHandlers.reduce((accum, handler) => handler(accum), data);
|
|
59
|
+
}
|
|
60
|
+
|
|
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
|
+
// Patch isLevelEnabled missing from pino/browser.
|
|
87
|
+
function isLevelEnabled(logger: pino.Logger<'verbose', boolean>, level: LogLevel): boolean {
|
|
88
|
+
return typeof logger.isLevelEnabled === 'function'
|
|
89
|
+
? logger.isLevelEnabled(level)
|
|
90
|
+
: logger.levels.values[level] >= logger.levels.values[logger.level];
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// Load log levels from environment variables.
|
|
94
|
+
const defaultLogLevel = process.env.NODE_ENV === 'test' ? 'silent' : 'info';
|
|
95
|
+
export const [logLevel, logFilters] = parseEnv(process.env.LOG_LEVEL, defaultLogLevel);
|
|
96
|
+
|
|
97
|
+
// Define custom logging levels for pino.
|
|
98
|
+
const customLevels = { verbose: 25 };
|
|
99
|
+
|
|
100
|
+
// Global pino options, tweaked for google cloud if running there.
|
|
101
|
+
const useGcloudLogging = parseBooleanEnv(process.env['USE_GCLOUD_LOGGING' satisfies EnvVar]);
|
|
102
|
+
const pinoOpts: pino.LoggerOptions<keyof typeof customLevels> = {
|
|
103
|
+
customLevels,
|
|
104
|
+
messageKey: 'msg',
|
|
105
|
+
useOnlyCustomLevels: false,
|
|
106
|
+
level: logLevel,
|
|
107
|
+
...(useGcloudLogging ? GoogleCloudLoggerConfig : {}),
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
export const levels = {
|
|
111
|
+
labels: { ...pino.levels.labels, ...Object.fromEntries(Object.entries(customLevels).map(e => e.reverse())) },
|
|
112
|
+
values: { ...pino.levels.values, ...customLevels },
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
// Transport options for pretty logging to stderr via pino-pretty.
|
|
116
|
+
const colorEnv = process.env['FORCE_COLOR' satisfies EnvVar];
|
|
117
|
+
const useColor = colorEnv === undefined ? isColorSupported : parseBooleanEnv(colorEnv);
|
|
118
|
+
const { bold, reset } = createColors({ useColor });
|
|
119
|
+
export const pinoPrettyOpts = {
|
|
120
|
+
destination: 2,
|
|
121
|
+
sync: true,
|
|
122
|
+
colorize: useColor,
|
|
123
|
+
ignore: 'module,pid,hostname,trace_id,span_id,trace_flags,severity',
|
|
124
|
+
messageFormat: `${bold('{module}')} ${reset('{msg}')}`,
|
|
125
|
+
customLevels: 'fatal:60,error:50,warn:40,info:30,verbose:25,debug:20,trace:10',
|
|
126
|
+
customColors: 'fatal:bgRed,error:red,warn:yellow,info:green,verbose:magenta,debug:blue,trace:gray',
|
|
127
|
+
minimumLevel: 'trace' as const,
|
|
128
|
+
singleLine: !parseBooleanEnv(process.env['LOG_MULTILINE' satisfies EnvVar]),
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
const prettyTransport: pino.TransportTargetOptions = {
|
|
132
|
+
target: 'pino-pretty',
|
|
133
|
+
options: pinoPrettyOpts,
|
|
134
|
+
level: 'trace',
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
// Transport for vanilla stdio logging as JSON.
|
|
138
|
+
const stdioTransport: pino.TransportTargetOptions = {
|
|
139
|
+
target: 'pino/file',
|
|
140
|
+
options: { destination: 2 },
|
|
141
|
+
level: 'trace',
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
// Transport for OpenTelemetry logging. While defining this here is an abstraction leakage since this
|
|
145
|
+
// should live in the telemetry-client, it is necessary to ensure that the logger is initialized with
|
|
146
|
+
// the correct transport. Tweaking transports of a live pino instance is tricky, and creating a new instance
|
|
147
|
+
// would mean that all child loggers created before the telemetry-client is initialized would not have
|
|
148
|
+
// this transport configured. Note that the target is defined as the export in the telemetry-client,
|
|
149
|
+
// since pino will load this transport separately on a worker thread, to minimize disruption to the main loop.
|
|
150
|
+
const otlpEndpoint = process.env['OTEL_EXPORTER_OTLP_LOGS_ENDPOINT' satisfies EnvVar];
|
|
151
|
+
const otlpEnabled = !!otlpEndpoint && !useGcloudLogging;
|
|
152
|
+
const otelOpts = { levels };
|
|
153
|
+
const otelTransport: pino.TransportTargetOptions = {
|
|
154
|
+
target: '@aztec/telemetry-client/otel-pino-stream',
|
|
155
|
+
options: otelOpts,
|
|
156
|
+
level: 'trace',
|
|
157
|
+
};
|
|
158
|
+
function makeLogger() {
|
|
159
|
+
if (!isNode) {
|
|
160
|
+
// We are on the browser.
|
|
161
|
+
return pino({ ...pinoOpts, browser: { asObject: false } });
|
|
162
|
+
}
|
|
163
|
+
// If running in a child process then cancel this if statement section by uncommenting below
|
|
164
|
+
// else if (false) {
|
|
165
|
+
else if (process.env.JEST_WORKER_ID) {
|
|
166
|
+
// We are on jest, so we need sync logging and stream to stderr.
|
|
167
|
+
// We expect jest/setup.mjs to kick in later and replace set up a pretty logger,
|
|
168
|
+
// but if for some reason it doesn't, at least we're covered with a default logger.
|
|
169
|
+
return pino(pinoOpts, pino.destination(2));
|
|
170
|
+
} else {
|
|
171
|
+
// Regular nodejs with transports on worker thread, using pino-pretty for console logging if LOG_JSON
|
|
172
|
+
// is not set, and an optional OTLP transport if the OTLP endpoint is set.
|
|
173
|
+
const targets: pino.TransportSingleOptions[] = compactArray([
|
|
174
|
+
parseBooleanEnv(process.env.LOG_JSON) ? stdioTransport : prettyTransport,
|
|
175
|
+
otlpEnabled ? otelTransport : undefined,
|
|
176
|
+
]);
|
|
177
|
+
return pino(pinoOpts, pino.transport({ targets, levels: levels.values }));
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
export const logger = makeLogger();
|
|
182
|
+
|
|
183
|
+
// Log the logger configuration.
|
|
184
|
+
logger.verbose(
|
|
185
|
+
{
|
|
186
|
+
module: 'logger',
|
|
187
|
+
...logFilters.reduce((accum, [module, level]) => ({ ...accum, [`log.${module}`]: level }), {}),
|
|
188
|
+
},
|
|
189
|
+
isNode
|
|
190
|
+
? `Logger initialized with level ${logLevel}` + (otlpEnabled ? ` with OTLP exporter to ${otlpEndpoint}` : '')
|
|
191
|
+
: `Browser console logger initialized with level ${logLevel}`,
|
|
192
|
+
);
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Overwrites the logging stream with a different destination.
|
|
196
|
+
* Used by jest/setup.mjs to set up a pretty logger.
|
|
197
|
+
*/
|
|
198
|
+
export function overwriteLoggingStream(stream: Writable): void {
|
|
199
|
+
(logger as any)[symbols.streamSym] = stream;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Registers an additional destination to the pino logger.
|
|
204
|
+
* Use only when working with destinations, not worker transports.
|
|
205
|
+
*/
|
|
206
|
+
export function registerLoggingStream(stream: Writable): void {
|
|
207
|
+
logger.verbose({ module: 'logger' }, `Registering additional logging stream`);
|
|
208
|
+
const original = (logger as any)[symbols.streamSym];
|
|
209
|
+
const destination = original
|
|
210
|
+
? pino.multistream(
|
|
211
|
+
[
|
|
212
|
+
// Set streams to lowest logging level, and control actual logging from the parent logger
|
|
213
|
+
// otherwise streams default to info and refuse to log anything below that.
|
|
214
|
+
{ level: 'trace', stream: original },
|
|
215
|
+
{ level: 'trace', stream },
|
|
216
|
+
],
|
|
217
|
+
{ levels: levels.values },
|
|
218
|
+
)
|
|
219
|
+
: stream;
|
|
220
|
+
(logger as any)[symbols.streamSym] = destination;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/** Log function that accepts an exception object */
|
|
224
|
+
type ErrorLogFn = (msg: string, err?: Error | unknown, data?: LogData) => void;
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Logger that supports multiple severity levels.
|
|
228
|
+
*/
|
|
229
|
+
export type Logger = { [K in LogLevel]: LogFn } & { /** Error log function */ error: ErrorLogFn } & {
|
|
230
|
+
level: LogLevel;
|
|
231
|
+
isLevelEnabled: (level: LogLevel) => boolean;
|
|
232
|
+
module: string;
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Concatenates a log message and an exception.
|
|
237
|
+
* @param msg - Log message
|
|
238
|
+
* @param err - Error to log
|
|
239
|
+
* @returns A string with both the log message and the error message.
|
|
240
|
+
*/
|
|
241
|
+
function formatErr(msg: string, err?: Error | unknown): string {
|
|
242
|
+
return err ? `${msg}: ${inspect(err)}` : msg;
|
|
243
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export type MessageHeaderInit = {
|
|
2
|
+
/** The message ID. Optional, if not set defaults to 0 */
|
|
3
|
+
messageId?: number;
|
|
4
|
+
/** Identifies the original request. Optional */
|
|
5
|
+
requestId?: number;
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
export class MessageHeader {
|
|
9
|
+
/** An number to identify this message */
|
|
10
|
+
public readonly messageId: number;
|
|
11
|
+
/** If this message is a response to a request, the messageId of the request */
|
|
12
|
+
public readonly requestId: number;
|
|
13
|
+
|
|
14
|
+
constructor({ messageId, requestId }: MessageHeaderInit) {
|
|
15
|
+
this.messageId = messageId ?? 0;
|
|
16
|
+
this.requestId = requestId ?? 0;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
static fromMessagePack(data: object): MessageHeader {
|
|
20
|
+
return new MessageHeader(data as MessageHeaderInit);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
interface TypedMessageLike {
|
|
25
|
+
msgType: number;
|
|
26
|
+
header: {
|
|
27
|
+
messageId?: number;
|
|
28
|
+
requestId?: number;
|
|
29
|
+
};
|
|
30
|
+
value: any;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export class TypedMessage<T, B> {
|
|
34
|
+
public constructor(public readonly msgType: T, public readonly header: MessageHeader, public readonly value: B) {}
|
|
35
|
+
|
|
36
|
+
static fromMessagePack<T, B>(data: TypedMessageLike): TypedMessage<T, B> {
|
|
37
|
+
return new TypedMessage<T, B>(data['msgType'] as T, MessageHeader.fromMessagePack(data['header']), data['value']);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
static isTypedMessageLike(obj: any): obj is TypedMessageLike {
|
|
41
|
+
return typeof obj === 'object' && obj !== null && 'msgType' in obj && 'header' in obj && 'value' in obj;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { MutexDatabase } from './mutex_database.js';
|
|
2
|
+
|
|
3
|
+
export * from './mutex_database.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Mutex class provides a mutual exclusion mechanism for critical sections of code using a named lock.
|
|
7
|
+
* The lock is acquired and released via the `lock` and `unlock` methods. Locks can be optionally pinged
|
|
8
|
+
* to keep them alive when they are held for longer durations, avoiding unintended release due to timeouts.
|
|
9
|
+
*
|
|
10
|
+
* The underlying lock state is managed in a MutexDatabase instance which can be shared across multiple Mutex instances.
|
|
11
|
+
* This allows for synchronization between different parts of an application or even across different instances of an application.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* const mutex = new Mutex(mutexDatabase, 'myLock');
|
|
15
|
+
* await mutex.lock();
|
|
16
|
+
* // Critical section here
|
|
17
|
+
* await mutex.unlock();
|
|
18
|
+
*/
|
|
19
|
+
export class Mutex {
|
|
20
|
+
private id = 0;
|
|
21
|
+
private pingTimeout!: NodeJS.Timeout;
|
|
22
|
+
|
|
23
|
+
constructor(
|
|
24
|
+
private readonly db: MutexDatabase,
|
|
25
|
+
private readonly name: string,
|
|
26
|
+
private readonly timeout = 5000,
|
|
27
|
+
private readonly tryLockInterval = 2000,
|
|
28
|
+
private readonly pingInterval = 2000,
|
|
29
|
+
) {}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Acquire a lock on the mutex. If 'untilAcquired' is true, the method will keep trying to acquire the lock until it
|
|
33
|
+
* successfully acquires it. If 'untilAcquired' is false, the method will try to acquire the lock once and return
|
|
34
|
+
* immediately with a boolean indicating if the lock has been acquired or not.
|
|
35
|
+
*
|
|
36
|
+
* @param untilAcquired - Optional parameter, set to true by default. If true, the method will keep trying to acquire the lock until success. If false, the method will try only once and return a boolean value.
|
|
37
|
+
* @returns A Promise that resolves to true if the lock has been acquired, or false when 'untilAcquired' is false and the lock could not be immediately acquired.
|
|
38
|
+
*/
|
|
39
|
+
public async lock(untilAcquired = true) {
|
|
40
|
+
while (true) {
|
|
41
|
+
if (await this.db.acquireLock(this.name, this.timeout)) {
|
|
42
|
+
const id = this.id;
|
|
43
|
+
this.pingTimeout = setTimeout(() => this.ping(id), this.pingInterval);
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (!untilAcquired) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
await new Promise(resolve => setTimeout(resolve, this.tryLockInterval));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Unlocks the mutex, allowing other instances to acquire the lock.
|
|
56
|
+
* This method also clears the internal ping timeout and increments the internal ID
|
|
57
|
+
* to ensure stale pings do not extend the lock after it has been released.
|
|
58
|
+
*
|
|
59
|
+
* @returns A promise that resolves once the lock has been released in the database.
|
|
60
|
+
*/
|
|
61
|
+
public async unlock() {
|
|
62
|
+
clearTimeout(this.pingTimeout);
|
|
63
|
+
this.id++;
|
|
64
|
+
await this.db.releaseLock(this.name);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Periodically extends the lock's lifetime by updating the database record with a new expiration time.
|
|
69
|
+
* This method is called recursively using setTimeout. If the id passed to the ping method does not match
|
|
70
|
+
* the current lock instance's id, it means the lock has been released or acquired by another instance
|
|
71
|
+
* and the ping should not proceed further.
|
|
72
|
+
*
|
|
73
|
+
* @param id - The id of the current lock instance.
|
|
74
|
+
*/
|
|
75
|
+
private ping(id: number) {
|
|
76
|
+
if (id !== this.id) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
void (async () => {
|
|
80
|
+
await this.db.extendLock(this.name, this.timeout);
|
|
81
|
+
this.pingTimeout = setTimeout(() => this.ping(id), this.pingInterval);
|
|
82
|
+
})();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents a mutual exclusion (mutex) database interface.
|
|
3
|
+
* Provides functionality for acquiring, extending, and releasing locks on resources to ensure exclusive access and prevent conflicts in concurrent applications.
|
|
4
|
+
*/
|
|
5
|
+
export interface MutexDatabase {
|
|
6
|
+
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
7
|
+
acquireLock(name: string, timeout: number): Promise<boolean>;
|
|
8
|
+
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
9
|
+
extendLock(name: string, timeout: number): Promise<void>;
|
|
10
|
+
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
11
|
+
releaseLock(name: string): Promise<void>;
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './noir_package_config.js';
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
const noirGitDependencySchema = z.object({
|
|
4
|
+
git: z.string(),
|
|
5
|
+
tag: z.string(),
|
|
6
|
+
directory: z.string().optional(),
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
const noirLocalDependencySchema = z.object({
|
|
10
|
+
path: z.string(),
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
const noirPackageConfigSchema = z.object({
|
|
14
|
+
package: z.object({
|
|
15
|
+
name: z.string().default(''),
|
|
16
|
+
type: z.enum(['lib', 'contract', 'bin']).default('bin'),
|
|
17
|
+
entry: z.string().optional(),
|
|
18
|
+
description: z.string().optional(),
|
|
19
|
+
authors: z.array(z.string()).optional(),
|
|
20
|
+
// eslint-disable-next-line camelcase
|
|
21
|
+
compiler_version: z.string().optional(),
|
|
22
|
+
backend: z.string().optional(),
|
|
23
|
+
license: z.string().optional(),
|
|
24
|
+
}),
|
|
25
|
+
dependencies: z.record(z.union([noirGitDependencySchema, noirLocalDependencySchema])).default({}),
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Noir package configuration.
|
|
30
|
+
*/
|
|
31
|
+
export type NoirPackageConfig = z.infer<typeof noirPackageConfigSchema>;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* A remote package dependency.
|
|
35
|
+
*/
|
|
36
|
+
export type NoirGitDependencyConfig = z.infer<typeof noirGitDependencySchema>;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* A local package dependency.
|
|
40
|
+
*/
|
|
41
|
+
export type NoirLocalDependencyConfig = z.infer<typeof noirLocalDependencySchema>;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* A package dependency.
|
|
45
|
+
*/
|
|
46
|
+
export type NoirDependencyConfig = NoirGitDependencyConfig | NoirLocalDependencyConfig;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Checks that an object is a package configuration.
|
|
50
|
+
* @param config - Config to check
|
|
51
|
+
*/
|
|
52
|
+
export function parseNoirPackageConfig(config: any): NoirPackageConfig {
|
|
53
|
+
return noirPackageConfigSchema.parse(config);
|
|
54
|
+
}
|