@aztec/foundation 0.87.7 → 0.87.9
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/config/env_var.d.ts +1 -1
- package/dest/config/env_var.d.ts.map +1 -1
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts +2 -0
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -1
- package/dest/json-rpc/client/safe_json_rpc_client.js +35 -6
- package/dest/queue/batch_queue.d.ts +1 -1
- package/dest/queue/batch_queue.js +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/package.json +2 -2
- package/src/config/env_var.ts +2 -0
- package/src/json-rpc/client/safe_json_rpc_client.ts +53 -7
- package/src/queue/batch_queue.ts +1 -1
- package/src/queue/serial_queue.ts +5 -5
package/dest/config/env_var.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export type EnvVar = 'ACVM_BINARY_PATH' | 'ACVM_WORKING_DIRECTORY' | 'GOVERNANCE_CONTRACT_ADDRESS' | 'API_KEY' | 'API_PREFIX' | 'ARCHIVER_MAX_LOGS' | 'ARCHIVER_POLLING_INTERVAL_MS' | 'ARCHIVER_URL' | 'ARCHIVER_VIEM_POLLING_INTERVAL_MS' | 'ARCHIVER_BATCH_SIZE' | 'ASSUME_PROVEN_THROUGH_BLOCK_NUMBER' | 'AZTEC_ADMIN_PORT' | 'AZTEC_NODE_ADMIN_URL' | 'AZTEC_NODE_URL' | 'AZTEC_PORT' | 'BB_BINARY_PATH' | 'BB_SKIP_CLEANUP' | 'BB_WORKING_DIRECTORY' | 'BOOTSTRAP_NODES' | 'BLOB_SINK_ARCHIVE_API_URL' | 'BLOB_SINK_PORT' | 'BLOB_SINK_URL' | 'BOT_DA_GAS_LIMIT' | 'BOT_FEE_PAYMENT_METHOD' | 'BOT_FLUSH_SETUP_TRANSACTIONS' | 'BOT_FOLLOW_CHAIN' | 'BOT_L2_GAS_LIMIT' | 'BOT_MAX_PENDING_TXS' | 'BOT_NO_START' | 'BOT_NO_WAIT_FOR_TRANSFERS' | 'BOT_L1_MNEMONIC' | 'BOT_L1_PRIVATE_KEY' | 'BOT_PRIVATE_KEY' | 'BOT_ACCOUNT_SALT' | 'BOT_PRIVATE_TRANSFERS_PER_TX' | 'BOT_PUBLIC_TRANSFERS_PER_TX' | 'BOT_PXE_URL' | 'BOT_RECIPIENT_ENCRYPTION_SECRET' | 'BOT_SKIP_PUBLIC_SIMULATION' | 'BOT_TOKEN_CONTRACT' | 'BOT_TOKEN_SALT' | 'BOT_TX_INTERVAL_SECONDS' | 'BOT_TX_MINED_WAIT_SECONDS' | 'BOT_MAX_CONSECUTIVE_ERRORS' | 'BOT_STOP_WHEN_UNHEALTHY' | 'BOT_AMM_TXS' | 'COINBASE' | 'DATA_DIRECTORY' | 'DATA_STORE_MAP_SIZE_KB' | 'ARCHIVER_STORE_MAP_SIZE_KB' | 'BLOB_SINK_MAP_SIZE_KB' | 'P2P_STORE_MAP_SIZE_KB' | 'PROVER_BROKER_STORE_MAP_SIZE_KB' | 'WS_DB_MAP_SIZE_KB' | 'ARCHIVE_TREE_MAP_SIZE_KB' | 'NULLIFIER_TREE_MAP_SIZE_KB' | 'NOTE_HASH_TREE_MAP_SIZE_KB' | 'MESSAGE_TREE_MAP_SIZE_KB' | 'PUBLIC_DATA_TREE_MAP_SIZE_KB' | 'DEBUG' | 'DEBUG_P2P_DISABLE_COLOCATION_PENALTY' | 'DEPLOY_AZTEC_CONTRACTS_SALT' | 'DEPLOY_AZTEC_CONTRACTS' | 'ENFORCE_FEES' | 'ETHEREUM_HOSTS' | 'FEE_JUICE_CONTRACT_ADDRESS' | 'FEE_JUICE_PORTAL_CONTRACT_ADDRESS' | 'FEE_RECIPIENT' | 'FORCE_COLOR' | 'GOVERNANCE_PROPOSER_CONTRACT_ADDRESS' | 'GOVERNANCE_PROPOSER_PAYLOAD_ADDRESS' | 'INBOX_CONTRACT_ADDRESS' | 'L1_CHAIN_ID' | 'L1_CONSENSUS_HOST_URLS' | 'L1_CONSENSUS_HOST_API_KEYS' | 'L1_CONSENSUS_HOST_API_KEY_HEADERS' | 'L1_PRIVATE_KEY' | 'LOG_JSON' | 'LOG_MULTILINE' | 'LOG_LEVEL' | 'MNEMONIC' | 'NETWORK_NAME' | 'NETWORK' | 'NO_PXE' | 'COIN_ISSUER_CONTRACT_ADDRESS' | 'USE_GCLOUD_LOGGING' | 'OTEL_EXPORTER_OTLP_METRICS_ENDPOINT' | 'OTEL_EXPORTER_OTLP_TRACES_ENDPOINT' | 'OTEL_EXPORTER_OTLP_LOGS_ENDPOINT' | 'OTEL_COLLECT_INTERVAL_MS' | 'OTEL_EXCLUDE_METRICS' | 'OTEL_EXPORT_TIMEOUT_MS' | 'OUTBOX_CONTRACT_ADDRESS' | 'P2P_BLOCK_CHECK_INTERVAL_MS' | 'P2P_BLOCK_REQUEST_BATCH_SIZE' | 'P2P_BOOTSTRAP_NODE_ENR_VERSION_CHECK' | 'P2P_BOOTSTRAP_NODES_AS_FULL_PEERS' | 'P2P_ENABLED' | 'P2P_GOSSIPSUB_D' | 'P2P_GOSSIPSUB_DHI' | 'P2P_GOSSIPSUB_DLO' | 'P2P_GOSSIPSUB_DLAZY' | 'P2P_GOSSIPSUB_FLOOD_PUBLISH' | 'P2P_GOSSIPSUB_INTERVAL_MS' | 'P2P_GOSSIPSUB_MCACHE_GOSSIP' | 'P2P_GOSSIPSUB_MCACHE_LENGTH' | 'P2P_GOSSIPSUB_SEEN_TTL' | 'P2P_GOSSIPSUB_TX_INVALID_MESSAGE_DELIVERIES_DECAY' | 'P2P_GOSSIPSUB_TX_INVALID_MESSAGE_DELIVERIES_WEIGHT' | 'P2P_GOSSIPSUB_TX_TOPIC_WEIGHT' | 'P2P_L2_QUEUE_SIZE' | 'P2P_MAX_PEERS' | 'P2P_PEER_CHECK_INTERVAL_MS' | 'P2P_PEER_PENALTY_VALUES' | 'P2P_QUERY_FOR_IP' | 'P2P_REQRESP_INDIVIDUAL_REQUEST_TIMEOUT_MS' | 'P2P_REQRESP_OVERALL_REQUEST_TIMEOUT_MS' | 'P2P_DOUBLE_SPEND_SEVERE_PEER_PENALTY_WINDOW' | 'P2P_LISTEN_ADDR' | 'P2P_PORT' | 'P2P_BROADCAST_PORT' | 'P2P_IP' | 'P2P_ARCHIVED_TX_LIMIT' | 'P2P_TRUSTED_PEERS' | 'P2P_PRIVATE_PEERS' | 'P2P_MAX_TX_POOL_SIZE' | 'P2P_TX_POOL_OVERFLOW_FACTOR' | 'P2P_SEEN_MSG_CACHE_SIZE' | 'PEER_ID_PRIVATE_KEY' | 'PEER_ID_PRIVATE_KEY_PATH' | 'PROVER_AGENT_COUNT' | 'PROVER_AGENT_PROOF_TYPES' | 'PROVER_AGENT_POLL_INTERVAL_MS' | 'PROVER_BROKER_HOST' | 'PROVER_BROKER_JOB_TIMEOUT_MS' | 'PROVER_BROKER_POLL_INTERVAL_MS' | 'PROVER_BROKER_JOB_MAX_RETRIES' | 'PROVER_BROKER_BATCH_INTERVAL_MS' | 'PROVER_BROKER_BATCH_SIZE' | 'PROVER_BROKER_MAX_EPOCHS_TO_KEEP_RESULTS_FOR' | 'PROVER_COORDINATION_NODE_URLS' | 'PROVER_FAILED_PROOF_STORE' | 'PROVER_NODE_FAILED_EPOCH_STORE' | 'PROVER_ID' | 'PROVER_NODE_POLLING_INTERVAL_MS' | 'PROVER_NODE_MAX_PENDING_JOBS' | 'PROVER_NODE_MAX_PARALLEL_BLOCKS_PER_EPOCH' | 'PROVER_NODE_TX_GATHERING_INTERVAL_MS' | 'PROVER_NODE_TX_GATHERING_BATCH_SIZE' | 'PROVER_NODE_TX_GATHERING_MAX_PARALLEL_REQUESTS_PER_NODE' | 'PROVER_PUBLISH_RETRY_INTERVAL_MS' | 'PROVER_PUBLISHER_PRIVATE_KEY' | 'PROVER_REAL_PROOFS' | 'PROVER_TEST_DELAY_FACTOR' | 'PROVER_TEST_DELAY_MS' | 'PROVER_TEST_DELAY_TYPE' | 'PXE_L2_BLOCK_BATCH_SIZE' | 'PXE_PROVER_ENABLED' | 'REGISTRY_CONTRACT_ADDRESS' | 'ROLLUP_CONTRACT_ADDRESS' | 'RPC_SIMULATE_PUBLIC_MAX_GAS_LIMIT' | 'SENTINEL_ENABLED' | 'SENTINEL_HISTORY_LENGTH_IN_EPOCHS' | 'SEQ_MAX_BLOCK_SIZE_IN_BYTES' | 'SEQ_MAX_TX_PER_BLOCK' | 'SEQ_MIN_TX_PER_BLOCK' | 'SEQ_PUBLISH_TXS_WITH_PROPOSALS' | 'SEQ_MAX_DA_BLOCK_GAS' | 'SEQ_MAX_L2_BLOCK_GAS' | 'SEQ_PUBLISH_RETRY_INTERVAL_MS' | 'SEQ_PUBLISHER_PRIVATE_KEY' | 'SEQ_TX_POLLING_INTERVAL_MS' | 'SEQ_ENFORCE_TIME_TABLE' | 'SEQ_MAX_L1_TX_INCLUSION_TIME_INTO_SLOT' | 'SLASH_FACTORY_CONTRACT_ADDRESS' | 'STAKING_ASSET_CONTRACT_ADDRESS' | 'STAKING_ASSET_HANDLER_CONTRACT_ADDRESS' | 'SYNC_MODE' | 'SYNC_SNAPSHOTS_URL' | 'REWARD_DISTRIBUTOR_CONTRACT_ADDRESS' | 'TELEMETRY' | 'TEST_ACCOUNTS' | 'SPONSORED_FPC' | 'TX_GOSSIP_VERSION' | 'TX_PUBLIC_SETUP_ALLOWLIST' | 'TXE_PORT' | 'VALIDATOR_ATTESTATIONS_POLLING_INTERVAL_MS' | 'VALIDATOR_DISABLED' | 'VALIDATOR_PRIVATE_KEY' | 'VALIDATOR_REEXECUTE' | 'ROLLUP_VERSION' | 'WS_BLOCK_CHECK_INTERVAL_MS' | 'WS_PROVEN_BLOCKS_ONLY' | 'WS_BLOCK_REQUEST_BATCH_SIZE' | 'VERIFIER_VIEM_POLLING_INTERVAL_MS' | 'L1_READER_VIEM_POLLING_INTERVAL_MS' | 'PROVER_VIEM_POLLING_INTERVAL_MS' | 'SEQ_VIEM_POLLING_INTERVAL_MS' | 'WS_DATA_DIRECTORY' | 'WS_NUM_HISTORIC_BLOCKS' | 'ETHEREUM_SLOT_DURATION' | 'AZTEC_SLOT_DURATION' | 'AZTEC_EPOCH_DURATION' | 'AZTEC_TARGET_COMMITTEE_SIZE' | 'AZTEC_PROOF_SUBMISSION_WINDOW' | 'AZTEC_MINIMUM_STAKE' | 'AZTEC_MANA_TARGET' | 'AZTEC_PROVING_COST_PER_MANA' | 'AZTEC_SLASHING_QUORUM' | 'AZTEC_SLASHING_ROUND_SIZE' | 'AZTEC_GOVERNANCE_PROPOSER_QUORUM' | 'AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE' | 'L1_GAS_LIMIT_BUFFER_PERCENTAGE' | 'L1_GAS_PRICE_MIN' | 'L1_GAS_PRICE_MAX' | 'L1_BLOB_FEE_PER_GAS_MAX' | 'L1_PRIORITY_FEE_BUMP_PERCENTAGE' | 'L1_PRIORITY_FEE_RETRY_BUMP_PERCENTAGE' | 'L1_FIXED_PRIORITY_FEE_PER_GAS' | 'L1_TX_MONITOR_MAX_ATTEMPTS' | 'L1_TX_MONITOR_CHECK_INTERVAL_MS' | 'L1_TX_MONITOR_STALL_TIME_MS' | 'L1_TX_MONITOR_TX_TIMEOUT_MS' | 'L1_TX_PROPAGATION_MAX_QUERY_ATTEMPTS' | 'FAUCET_MNEMONIC_ACCOUNT_INDEX' | 'FAUCET_ETH_AMOUNT' | 'FAUCET_INTERVAL_MS' | 'FAUCET_L1_ASSETS' | 'K8S_POD_NAME' | 'K8S_POD_UID' | 'K8S_NAMESPACE_NAME' | 'CUSTOM_FORWARDER_CONTRACT_ADDRESS' | 'FEE_ASSET_HANDLER_CONTRACT_ADDRESS' | 'AUTO_UPDATE' | 'AUTO_UPDATE_URL';
|
|
1
|
+
export type EnvVar = 'ACVM_BINARY_PATH' | 'ACVM_WORKING_DIRECTORY' | 'GOVERNANCE_CONTRACT_ADDRESS' | 'API_KEY' | 'API_PREFIX' | 'ARCHIVER_MAX_LOGS' | 'ARCHIVER_POLLING_INTERVAL_MS' | 'ARCHIVER_URL' | 'ARCHIVER_VIEM_POLLING_INTERVAL_MS' | 'ARCHIVER_BATCH_SIZE' | 'ASSUME_PROVEN_THROUGH_BLOCK_NUMBER' | 'AZTEC_ADMIN_PORT' | 'AZTEC_NODE_ADMIN_URL' | 'AZTEC_NODE_URL' | 'AZTEC_PORT' | 'BB_BINARY_PATH' | 'BB_SKIP_CLEANUP' | 'BB_WORKING_DIRECTORY' | 'BB_NUM_IVC_VERIFIERS' | 'BOOTSTRAP_NODES' | 'BLOB_SINK_ARCHIVE_API_URL' | 'BLOB_SINK_PORT' | 'BLOB_SINK_URL' | 'BOT_DA_GAS_LIMIT' | 'BOT_FEE_PAYMENT_METHOD' | 'BOT_FLUSH_SETUP_TRANSACTIONS' | 'BOT_FOLLOW_CHAIN' | 'BOT_L2_GAS_LIMIT' | 'BOT_MAX_PENDING_TXS' | 'BOT_NO_START' | 'BOT_NO_WAIT_FOR_TRANSFERS' | 'BOT_L1_MNEMONIC' | 'BOT_L1_PRIVATE_KEY' | 'BOT_L1_TO_L2_TIMEOUT_SECONDS' | 'BOT_PRIVATE_KEY' | 'BOT_ACCOUNT_SALT' | 'BOT_PRIVATE_TRANSFERS_PER_TX' | 'BOT_PUBLIC_TRANSFERS_PER_TX' | 'BOT_PXE_URL' | 'BOT_RECIPIENT_ENCRYPTION_SECRET' | 'BOT_SKIP_PUBLIC_SIMULATION' | 'BOT_TOKEN_CONTRACT' | 'BOT_TOKEN_SALT' | 'BOT_TX_INTERVAL_SECONDS' | 'BOT_TX_MINED_WAIT_SECONDS' | 'BOT_MAX_CONSECUTIVE_ERRORS' | 'BOT_STOP_WHEN_UNHEALTHY' | 'BOT_AMM_TXS' | 'COINBASE' | 'DATA_DIRECTORY' | 'DATA_STORE_MAP_SIZE_KB' | 'ARCHIVER_STORE_MAP_SIZE_KB' | 'BLOB_SINK_MAP_SIZE_KB' | 'P2P_STORE_MAP_SIZE_KB' | 'PROVER_BROKER_STORE_MAP_SIZE_KB' | 'WS_DB_MAP_SIZE_KB' | 'ARCHIVE_TREE_MAP_SIZE_KB' | 'NULLIFIER_TREE_MAP_SIZE_KB' | 'NOTE_HASH_TREE_MAP_SIZE_KB' | 'MESSAGE_TREE_MAP_SIZE_KB' | 'PUBLIC_DATA_TREE_MAP_SIZE_KB' | 'DEBUG' | 'DEBUG_P2P_DISABLE_COLOCATION_PENALTY' | 'DEPLOY_AZTEC_CONTRACTS_SALT' | 'DEPLOY_AZTEC_CONTRACTS' | 'ENFORCE_FEES' | 'ETHEREUM_HOSTS' | 'FEE_JUICE_CONTRACT_ADDRESS' | 'FEE_JUICE_PORTAL_CONTRACT_ADDRESS' | 'FEE_RECIPIENT' | 'FORCE_COLOR' | 'GOVERNANCE_PROPOSER_CONTRACT_ADDRESS' | 'GOVERNANCE_PROPOSER_PAYLOAD_ADDRESS' | 'INBOX_CONTRACT_ADDRESS' | 'L1_CHAIN_ID' | 'L1_CONSENSUS_HOST_URLS' | 'L1_CONSENSUS_HOST_API_KEYS' | 'L1_CONSENSUS_HOST_API_KEY_HEADERS' | 'L1_PRIVATE_KEY' | 'LOG_JSON' | 'LOG_MULTILINE' | 'LOG_LEVEL' | 'MNEMONIC' | 'NETWORK_NAME' | 'NETWORK' | 'NO_PXE' | 'COIN_ISSUER_CONTRACT_ADDRESS' | 'USE_GCLOUD_LOGGING' | 'OTEL_EXPORTER_OTLP_METRICS_ENDPOINT' | 'OTEL_EXPORTER_OTLP_TRACES_ENDPOINT' | 'OTEL_EXPORTER_OTLP_LOGS_ENDPOINT' | 'OTEL_COLLECT_INTERVAL_MS' | 'OTEL_EXCLUDE_METRICS' | 'OTEL_EXPORT_TIMEOUT_MS' | 'OUTBOX_CONTRACT_ADDRESS' | 'P2P_BLOCK_CHECK_INTERVAL_MS' | 'P2P_BLOCK_REQUEST_BATCH_SIZE' | 'P2P_BOOTSTRAP_NODE_ENR_VERSION_CHECK' | 'P2P_BOOTSTRAP_NODES_AS_FULL_PEERS' | 'P2P_ENABLED' | 'P2P_GOSSIPSUB_D' | 'P2P_GOSSIPSUB_DHI' | 'P2P_GOSSIPSUB_DLO' | 'P2P_GOSSIPSUB_DLAZY' | 'P2P_GOSSIPSUB_FLOOD_PUBLISH' | 'P2P_GOSSIPSUB_INTERVAL_MS' | 'P2P_GOSSIPSUB_MCACHE_GOSSIP' | 'P2P_GOSSIPSUB_MCACHE_LENGTH' | 'P2P_GOSSIPSUB_SEEN_TTL' | 'P2P_GOSSIPSUB_TX_INVALID_MESSAGE_DELIVERIES_DECAY' | 'P2P_GOSSIPSUB_TX_INVALID_MESSAGE_DELIVERIES_WEIGHT' | 'P2P_GOSSIPSUB_TX_TOPIC_WEIGHT' | 'P2P_L2_QUEUE_SIZE' | 'P2P_MAX_PEERS' | 'P2P_PEER_CHECK_INTERVAL_MS' | 'P2P_PEER_PENALTY_VALUES' | 'P2P_QUERY_FOR_IP' | 'P2P_REQRESP_INDIVIDUAL_REQUEST_TIMEOUT_MS' | 'P2P_REQRESP_OVERALL_REQUEST_TIMEOUT_MS' | 'P2P_DOUBLE_SPEND_SEVERE_PEER_PENALTY_WINDOW' | 'P2P_LISTEN_ADDR' | 'P2P_PORT' | 'P2P_BROADCAST_PORT' | 'P2P_IP' | 'P2P_ARCHIVED_TX_LIMIT' | 'P2P_TRUSTED_PEERS' | 'P2P_PRIVATE_PEERS' | 'P2P_MAX_TX_POOL_SIZE' | 'P2P_TX_POOL_OVERFLOW_FACTOR' | 'P2P_SEEN_MSG_CACHE_SIZE' | 'PEER_ID_PRIVATE_KEY' | 'PEER_ID_PRIVATE_KEY_PATH' | 'PROVER_AGENT_COUNT' | 'PROVER_AGENT_PROOF_TYPES' | 'PROVER_AGENT_POLL_INTERVAL_MS' | 'PROVER_BROKER_HOST' | 'PROVER_BROKER_JOB_TIMEOUT_MS' | 'PROVER_BROKER_POLL_INTERVAL_MS' | 'PROVER_BROKER_JOB_MAX_RETRIES' | 'PROVER_BROKER_BATCH_INTERVAL_MS' | 'PROVER_BROKER_BATCH_SIZE' | 'PROVER_BROKER_MAX_EPOCHS_TO_KEEP_RESULTS_FOR' | 'PROVER_COORDINATION_NODE_URLS' | 'PROVER_FAILED_PROOF_STORE' | 'PROVER_NODE_FAILED_EPOCH_STORE' | 'PROVER_ID' | 'PROVER_NODE_POLLING_INTERVAL_MS' | 'PROVER_NODE_MAX_PENDING_JOBS' | 'PROVER_NODE_MAX_PARALLEL_BLOCKS_PER_EPOCH' | 'PROVER_NODE_TX_GATHERING_INTERVAL_MS' | 'PROVER_NODE_TX_GATHERING_BATCH_SIZE' | 'PROVER_NODE_TX_GATHERING_MAX_PARALLEL_REQUESTS_PER_NODE' | 'PROVER_PUBLISH_RETRY_INTERVAL_MS' | 'PROVER_PUBLISHER_PRIVATE_KEY' | 'PROVER_REAL_PROOFS' | 'PROVER_TEST_DELAY_FACTOR' | 'PROVER_TEST_DELAY_MS' | 'PROVER_TEST_DELAY_TYPE' | 'PXE_L2_BLOCK_BATCH_SIZE' | 'PXE_PROVER_ENABLED' | 'REGISTRY_CONTRACT_ADDRESS' | 'ROLLUP_CONTRACT_ADDRESS' | 'RPC_SIMULATE_PUBLIC_MAX_GAS_LIMIT' | 'SENTINEL_ENABLED' | 'SENTINEL_HISTORY_LENGTH_IN_EPOCHS' | 'SEQ_MAX_BLOCK_SIZE_IN_BYTES' | 'SEQ_MAX_TX_PER_BLOCK' | 'SEQ_MIN_TX_PER_BLOCK' | 'SEQ_PUBLISH_TXS_WITH_PROPOSALS' | 'SEQ_MAX_DA_BLOCK_GAS' | 'SEQ_MAX_L2_BLOCK_GAS' | 'SEQ_PUBLISH_RETRY_INTERVAL_MS' | 'SEQ_PUBLISHER_PRIVATE_KEY' | 'SEQ_TX_POLLING_INTERVAL_MS' | 'SEQ_ENFORCE_TIME_TABLE' | 'SEQ_MAX_L1_TX_INCLUSION_TIME_INTO_SLOT' | 'SLASH_FACTORY_CONTRACT_ADDRESS' | 'STAKING_ASSET_CONTRACT_ADDRESS' | 'STAKING_ASSET_HANDLER_CONTRACT_ADDRESS' | 'SYNC_MODE' | 'SYNC_SNAPSHOTS_URL' | 'REWARD_DISTRIBUTOR_CONTRACT_ADDRESS' | 'TELEMETRY' | 'TEST_ACCOUNTS' | 'SPONSORED_FPC' | 'TX_GOSSIP_VERSION' | 'TX_PUBLIC_SETUP_ALLOWLIST' | 'TXE_PORT' | 'VALIDATOR_ATTESTATIONS_POLLING_INTERVAL_MS' | 'VALIDATOR_DISABLED' | 'VALIDATOR_PRIVATE_KEY' | 'VALIDATOR_REEXECUTE' | 'ROLLUP_VERSION' | 'WS_BLOCK_CHECK_INTERVAL_MS' | 'WS_PROVEN_BLOCKS_ONLY' | 'WS_BLOCK_REQUEST_BATCH_SIZE' | 'VERIFIER_VIEM_POLLING_INTERVAL_MS' | 'L1_READER_VIEM_POLLING_INTERVAL_MS' | 'PROVER_VIEM_POLLING_INTERVAL_MS' | 'SEQ_VIEM_POLLING_INTERVAL_MS' | 'WS_DATA_DIRECTORY' | 'WS_NUM_HISTORIC_BLOCKS' | 'ETHEREUM_SLOT_DURATION' | 'AZTEC_SLOT_DURATION' | 'AZTEC_EPOCH_DURATION' | 'AZTEC_TARGET_COMMITTEE_SIZE' | 'AZTEC_PROOF_SUBMISSION_WINDOW' | 'AZTEC_MINIMUM_STAKE' | 'AZTEC_MANA_TARGET' | 'AZTEC_PROVING_COST_PER_MANA' | 'AZTEC_SLASHING_QUORUM' | 'AZTEC_SLASHING_ROUND_SIZE' | 'AZTEC_GOVERNANCE_PROPOSER_QUORUM' | 'AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE' | 'L1_GAS_LIMIT_BUFFER_PERCENTAGE' | 'L1_GAS_PRICE_MIN' | 'L1_GAS_PRICE_MAX' | 'L1_BLOB_FEE_PER_GAS_MAX' | 'L1_PRIORITY_FEE_BUMP_PERCENTAGE' | 'L1_PRIORITY_FEE_RETRY_BUMP_PERCENTAGE' | 'L1_FIXED_PRIORITY_FEE_PER_GAS' | 'L1_TX_MONITOR_MAX_ATTEMPTS' | 'L1_TX_MONITOR_CHECK_INTERVAL_MS' | 'L1_TX_MONITOR_STALL_TIME_MS' | 'L1_TX_MONITOR_TX_TIMEOUT_MS' | 'L1_TX_PROPAGATION_MAX_QUERY_ATTEMPTS' | 'FAUCET_MNEMONIC_ACCOUNT_INDEX' | 'FAUCET_ETH_AMOUNT' | 'FAUCET_INTERVAL_MS' | 'FAUCET_L1_ASSETS' | 'K8S_POD_NAME' | 'K8S_POD_UID' | 'K8S_NAMESPACE_NAME' | 'CUSTOM_FORWARDER_CONTRACT_ADDRESS' | 'FEE_ASSET_HANDLER_CONTRACT_ADDRESS' | 'AUTO_UPDATE' | 'AUTO_UPDATE_URL';
|
|
2
2
|
//# sourceMappingURL=env_var.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env_var.d.ts","sourceRoot":"","sources":["../../src/config/env_var.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"env_var.d.ts","sourceRoot":"","sources":["../../src/config/env_var.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safe_json_rpc_client.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/client/safe_json_rpc_client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,0BAA0B,CAAC;AAErE,OAAO,EAAkB,KAAK,YAAY,EAAmB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"safe_json_rpc_client.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/client/safe_json_rpc_client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,0BAA0B,CAAC;AAErE,OAAO,EAAkB,KAAK,YAAY,EAAmB,MAAM,sBAAsB,CAAC;AAE1F,OAAO,EAAE,KAAK,YAAY,EAAgB,MAAM,YAAY,CAAC;AAa7D,MAAM,MAAM,wBAAwB,GAAG;IACrC,gBAAgB,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAClC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE;QACjB,QAAQ,EAAE,GAAG,CAAC;QACd,OAAO,EAAE;YAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;SAAE,CAAC;KACjE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACrB,CAAC;AA6BF;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,MAAM,EACtD,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EACvB,MAAM,GAAE,wBAA6B,GACpC,CAAC,CA0KH;AAED;;GAEG;AACH,wBAAsB,KAAK,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,EACtD,MAAM,EAAE,CAAC,GACR,OAAO,CAAC;IAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,CAuBtD"}
|
|
@@ -2,11 +2,16 @@ import { format } from 'util';
|
|
|
2
2
|
import { createLogger } from '../../log/pino-logger.js';
|
|
3
3
|
import { promiseWithResolvers } from '../../promise/utils.js';
|
|
4
4
|
import { schemaHasMethod } from '../../schemas/api.js';
|
|
5
|
+
import { jsonStringify } from '../convert.js';
|
|
5
6
|
import { defaultFetch } from './fetch.js';
|
|
6
7
|
// batch window of 0 would capture all requests in the current sync iteration of the event loop
|
|
7
8
|
// and send them all at once in a single batch
|
|
8
9
|
// minimal latency
|
|
9
10
|
const DEFAULT_BATCH_WINDOW_MS = 0;
|
|
11
|
+
// the maximum size of a batched request
|
|
12
|
+
const DEFAULT_MAX_BATCH_SIZE = 100;
|
|
13
|
+
// 10 mb
|
|
14
|
+
const DEFAULT_MAX_REQUESTY_BODY_SIZE = 10 * 1024 * 1024;
|
|
10
15
|
// expose helpful information on the RPC clients such that we can recognize them later
|
|
11
16
|
const SEND_BATCH = Symbol('JsonRpcClient.sendBatch');
|
|
12
17
|
const CLIENT_ID = Symbol('JsonRpcClient.clientId');
|
|
@@ -22,21 +27,40 @@ const clients = new Map();
|
|
|
22
27
|
*/ export function createSafeJsonRpcClient(host, schema, config = {}) {
|
|
23
28
|
const fetch = config.fetch ?? defaultFetch;
|
|
24
29
|
const log = config.log ?? createLogger('json-rpc:client');
|
|
25
|
-
const { namespaceMethods = false, batchWindowMS = DEFAULT_BATCH_WINDOW_MS } = config;
|
|
30
|
+
const { namespaceMethods = false, batchWindowMS = DEFAULT_BATCH_WINDOW_MS, maxBatchSize = DEFAULT_MAX_BATCH_SIZE, maxRequestBodySize = DEFAULT_MAX_REQUESTY_BODY_SIZE } = config;
|
|
26
31
|
let id = 0;
|
|
27
32
|
let sendBatchTimeoutHandle;
|
|
28
|
-
|
|
33
|
+
const queue = [];
|
|
29
34
|
const sendBatch = async ()=>{
|
|
30
35
|
if (sendBatchTimeoutHandle !== undefined) {
|
|
31
36
|
clearTimeout(sendBatchTimeoutHandle);
|
|
32
37
|
sendBatchTimeoutHandle = undefined;
|
|
33
38
|
}
|
|
34
|
-
const rpcCalls =
|
|
35
|
-
|
|
39
|
+
const rpcCalls = [];
|
|
40
|
+
let bodySize = 0;
|
|
41
|
+
while(queue.length > 0 && rpcCalls.length < maxBatchSize && bodySize < maxRequestBodySize){
|
|
42
|
+
const item = queue[0];
|
|
43
|
+
if (!item) {
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
const tmpBodySize = bodySize + item.encodedLength;
|
|
47
|
+
if (tmpBodySize >= maxRequestBodySize) {
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
bodySize = tmpBodySize;
|
|
51
|
+
queue.shift();
|
|
52
|
+
rpcCalls.push(item);
|
|
53
|
+
}
|
|
54
|
+
// no-op
|
|
36
55
|
if (rpcCalls.length === 0) {
|
|
37
56
|
return;
|
|
38
57
|
}
|
|
39
|
-
|
|
58
|
+
// schedule another call if there are more items to send
|
|
59
|
+
if (queue.length > 0) {
|
|
60
|
+
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
61
|
+
sendBatchTimeoutHandle = setTimeout(sendBatch, batchWindowMS);
|
|
62
|
+
}
|
|
63
|
+
log.debug(`Executing JSON-RPC batch of size: ${rpcCalls.length} body size: ${bodySize} bytes`, {
|
|
40
64
|
methods: rpcCalls.map(({ request })=>request.method)
|
|
41
65
|
});
|
|
42
66
|
try {
|
|
@@ -115,9 +139,14 @@ const clients = new Map();
|
|
|
115
139
|
params
|
|
116
140
|
};
|
|
117
141
|
const deferred = promiseWithResolvers();
|
|
142
|
+
const encodedLength = jsonStringify(body).length;
|
|
143
|
+
if (encodedLength >= maxRequestBodySize) {
|
|
144
|
+
throw new Error(`Request body too large: ${encodedLength}`);
|
|
145
|
+
}
|
|
118
146
|
queue.push({
|
|
119
147
|
request: body,
|
|
120
|
-
deferred
|
|
148
|
+
deferred,
|
|
149
|
+
encodedLength
|
|
121
150
|
});
|
|
122
151
|
if (sendBatchTimeoutHandle === undefined) {
|
|
123
152
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* A queue that groups items into batches based on a group key.
|
|
3
3
|
*
|
|
4
4
|
* The batching algorithm is greedy, meaning that as long as consecutive items have the same group key then they will
|
|
5
|
-
* be
|
|
5
|
+
* be batched together. As soon as an item with a different group key is encountered, the old batch is flushed to the
|
|
6
6
|
* queue and a new batch is started.
|
|
7
7
|
*
|
|
8
8
|
* A batch can also be flushed to the queue if:
|
|
@@ -5,7 +5,7 @@ import { FifoMemoryQueue } from './fifo_memory_queue.js';
|
|
|
5
5
|
* A queue that groups items into batches based on a group key.
|
|
6
6
|
*
|
|
7
7
|
* The batching algorithm is greedy, meaning that as long as consecutive items have the same group key then they will
|
|
8
|
-
* be
|
|
8
|
+
* be batched together. As soon as an item with a different group key is encountered, the old batch is flushed to the
|
|
9
9
|
* queue and a new batch is started.
|
|
10
10
|
*
|
|
11
11
|
* A batch can also be flushed to the queue if:
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export declare class SerialQueue {
|
|
5
5
|
private readonly queue;
|
|
6
|
-
private
|
|
6
|
+
private runningPromises;
|
|
7
7
|
private started;
|
|
8
8
|
/**
|
|
9
9
|
* Initializes the execution of enqueued functions in the serial queue.
|
|
@@ -11,7 +11,7 @@ export declare class SerialQueue {
|
|
|
11
11
|
* waiting for the completion of the previous one before starting its execution.
|
|
12
12
|
* This method should be called once to start processing the queue.
|
|
13
13
|
*/
|
|
14
|
-
start(): void;
|
|
14
|
+
start(numWorkers?: number): void;
|
|
15
15
|
/**
|
|
16
16
|
* Returns the current number of enqueued functions in the serial queue.
|
|
17
17
|
* This provides a way to check the size of the queue and monitor its progress.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serial_queue.d.ts","sourceRoot":"","sources":["../../src/queue/serial_queue.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8C;IACpE,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"serial_queue.d.ts","sourceRoot":"","sources":["../../src/queue/serial_queue.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8C;IACpE,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,OAAO,CAAS;IAExB;;;;;OAKG;IACI,KAAK,CAAC,UAAU,SAAI;IAQ3B;;;;;OAKG;IACI,MAAM;IAIb;;;;;;OAMG;IACI,MAAM;IAKb;;;;;OAKG;IACI,GAAG;IAKV;;;;;OAKG;IACI,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAgB5D;;OAEG;IACU,SAAS;CAGvB"}
|
|
@@ -3,18 +3,20 @@ import { FifoMemoryQueue } from './fifo_memory_queue.js';
|
|
|
3
3
|
* A more specialized fifo queue that enqueues functions to execute. Enqueued functions are executed in serial.
|
|
4
4
|
*/ export class SerialQueue {
|
|
5
5
|
queue = new FifoMemoryQueue();
|
|
6
|
-
|
|
6
|
+
runningPromises = [];
|
|
7
7
|
started = false;
|
|
8
8
|
/**
|
|
9
9
|
* Initializes the execution of enqueued functions in the serial queue.
|
|
10
10
|
* Functions are executed in the order they were added to the queue, with each function
|
|
11
11
|
* waiting for the completion of the previous one before starting its execution.
|
|
12
12
|
* This method should be called once to start processing the queue.
|
|
13
|
-
*/ start() {
|
|
13
|
+
*/ start(numWorkers = 1) {
|
|
14
14
|
if (this.started) {
|
|
15
15
|
return;
|
|
16
16
|
}
|
|
17
|
-
this.
|
|
17
|
+
this.runningPromises = Array.from({
|
|
18
|
+
length: numWorkers
|
|
19
|
+
}, ()=>this.queue.process((fn)=>fn()));
|
|
18
20
|
this.started = true;
|
|
19
21
|
}
|
|
20
22
|
/**
|
|
@@ -33,7 +35,7 @@ import { FifoMemoryQueue } from './fifo_memory_queue.js';
|
|
|
33
35
|
* @returns The running promise which resolves when the current executing function (if any) completes.
|
|
34
36
|
*/ cancel() {
|
|
35
37
|
this.queue.cancel();
|
|
36
|
-
return this.
|
|
38
|
+
return Promise.all(this.runningPromises).then(()=>{});
|
|
37
39
|
}
|
|
38
40
|
/**
|
|
39
41
|
* Signals the SerialQueue that it should finish processing its current task and stop accepting new tasks.
|
|
@@ -42,7 +44,7 @@ import { FifoMemoryQueue } from './fifo_memory_queue.js';
|
|
|
42
44
|
* @returns A Promise that resolves when the queue is completely emptied and no new tasks are allowed.
|
|
43
45
|
*/ end() {
|
|
44
46
|
this.queue.end();
|
|
45
|
-
return this.
|
|
47
|
+
return Promise.all(this.runningPromises).then(()=>{});
|
|
46
48
|
}
|
|
47
49
|
/**
|
|
48
50
|
* Enqueues fn for execution on the serial queue.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/foundation",
|
|
3
|
-
"version": "0.87.
|
|
3
|
+
"version": "0.87.9",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dest/index.js",
|
|
6
6
|
"types": "./dest/index.d.ts",
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
]
|
|
101
101
|
},
|
|
102
102
|
"dependencies": {
|
|
103
|
-
"@aztec/bb.js": "0.87.
|
|
103
|
+
"@aztec/bb.js": "0.87.9",
|
|
104
104
|
"@koa/cors": "^5.0.0",
|
|
105
105
|
"@noble/curves": "^1.2.0",
|
|
106
106
|
"c-kzg": "4.0.0-alpha.1",
|
package/src/config/env_var.ts
CHANGED
|
@@ -17,6 +17,7 @@ export type EnvVar =
|
|
|
17
17
|
| 'BB_BINARY_PATH'
|
|
18
18
|
| 'BB_SKIP_CLEANUP'
|
|
19
19
|
| 'BB_WORKING_DIRECTORY'
|
|
20
|
+
| 'BB_NUM_IVC_VERIFIERS'
|
|
20
21
|
| 'BOOTSTRAP_NODES'
|
|
21
22
|
| 'BLOB_SINK_ARCHIVE_API_URL'
|
|
22
23
|
| 'BLOB_SINK_PORT'
|
|
@@ -31,6 +32,7 @@ export type EnvVar =
|
|
|
31
32
|
| 'BOT_NO_WAIT_FOR_TRANSFERS'
|
|
32
33
|
| 'BOT_L1_MNEMONIC'
|
|
33
34
|
| 'BOT_L1_PRIVATE_KEY'
|
|
35
|
+
| 'BOT_L1_TO_L2_TIMEOUT_SECONDS'
|
|
34
36
|
| 'BOT_PRIVATE_KEY'
|
|
35
37
|
| 'BOT_ACCOUNT_SALT'
|
|
36
38
|
| 'BOT_PRIVATE_TRANSFERS_PER_TX'
|
|
@@ -3,6 +3,7 @@ import { format } from 'util';
|
|
|
3
3
|
import { type Logger, createLogger } from '../../log/pino-logger.js';
|
|
4
4
|
import { type PromiseWithResolvers, promiseWithResolvers } from '../../promise/utils.js';
|
|
5
5
|
import { type ApiSchema, type ApiSchemaFor, schemaHasMethod } from '../../schemas/api.js';
|
|
6
|
+
import { jsonStringify } from '../convert.js';
|
|
6
7
|
import { type JsonRpcFetch, defaultFetch } from './fetch.js';
|
|
7
8
|
|
|
8
9
|
// batch window of 0 would capture all requests in the current sync iteration of the event loop
|
|
@@ -10,11 +11,19 @@ import { type JsonRpcFetch, defaultFetch } from './fetch.js';
|
|
|
10
11
|
// minimal latency
|
|
11
12
|
const DEFAULT_BATCH_WINDOW_MS = 0;
|
|
12
13
|
|
|
14
|
+
// the maximum size of a batched request
|
|
15
|
+
const DEFAULT_MAX_BATCH_SIZE = 100;
|
|
16
|
+
|
|
17
|
+
// 10 mb
|
|
18
|
+
const DEFAULT_MAX_REQUESTY_BODY_SIZE = 10 * 1024 * 1024;
|
|
19
|
+
|
|
13
20
|
export type SafeJsonRpcClientOptions = {
|
|
14
21
|
namespaceMethods?: string | false;
|
|
15
22
|
fetch?: JsonRpcFetch;
|
|
16
23
|
log?: Logger;
|
|
17
24
|
batchWindowMS?: number;
|
|
25
|
+
maxBatchSize?: number;
|
|
26
|
+
maxRequestBodySize?: number;
|
|
18
27
|
onResponse?: (res: {
|
|
19
28
|
response: any;
|
|
20
29
|
headers: { get: (header: string) => string | null | undefined };
|
|
@@ -62,26 +71,58 @@ export function createSafeJsonRpcClient<T extends object>(
|
|
|
62
71
|
): T {
|
|
63
72
|
const fetch = config.fetch ?? defaultFetch;
|
|
64
73
|
const log = config.log ?? createLogger('json-rpc:client');
|
|
65
|
-
const {
|
|
74
|
+
const {
|
|
75
|
+
namespaceMethods = false,
|
|
76
|
+
batchWindowMS = DEFAULT_BATCH_WINDOW_MS,
|
|
77
|
+
maxBatchSize = DEFAULT_MAX_BATCH_SIZE,
|
|
78
|
+
maxRequestBodySize = DEFAULT_MAX_REQUESTY_BODY_SIZE,
|
|
79
|
+
} = config;
|
|
66
80
|
|
|
67
81
|
let id = 0;
|
|
68
82
|
let sendBatchTimeoutHandle: NodeJS.Timeout | undefined;
|
|
69
|
-
|
|
83
|
+
const queue: Array<{
|
|
84
|
+
request: JsonRpcRequest;
|
|
85
|
+
deferred: PromiseWithResolvers<JsonRpcResponse>;
|
|
86
|
+
encodedLength: number;
|
|
87
|
+
}> = [];
|
|
70
88
|
|
|
71
|
-
const sendBatch = async () => {
|
|
89
|
+
const sendBatch = async (): Promise<void> => {
|
|
72
90
|
if (sendBatchTimeoutHandle !== undefined) {
|
|
73
91
|
clearTimeout(sendBatchTimeoutHandle);
|
|
74
92
|
sendBatchTimeoutHandle = undefined;
|
|
75
93
|
}
|
|
76
94
|
|
|
77
|
-
const rpcCalls =
|
|
78
|
-
|
|
95
|
+
const rpcCalls: typeof queue = [];
|
|
96
|
+
let bodySize = 0;
|
|
97
|
+
|
|
98
|
+
while (queue.length > 0 && rpcCalls.length < maxBatchSize && bodySize < maxRequestBodySize) {
|
|
99
|
+
const item = queue[0];
|
|
100
|
+
if (!item) {
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const tmpBodySize = bodySize + item.encodedLength;
|
|
105
|
+
if (tmpBodySize >= maxRequestBodySize) {
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
bodySize = tmpBodySize;
|
|
110
|
+
queue.shift();
|
|
111
|
+
rpcCalls.push(item);
|
|
112
|
+
}
|
|
79
113
|
|
|
114
|
+
// no-op
|
|
80
115
|
if (rpcCalls.length === 0) {
|
|
81
116
|
return;
|
|
82
117
|
}
|
|
83
118
|
|
|
84
|
-
|
|
119
|
+
// schedule another call if there are more items to send
|
|
120
|
+
if (queue.length > 0) {
|
|
121
|
+
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
122
|
+
sendBatchTimeoutHandle = setTimeout(sendBatch, batchWindowMS);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
log.debug(`Executing JSON-RPC batch of size: ${rpcCalls.length} body size: ${bodySize} bytes`, {
|
|
85
126
|
methods: rpcCalls.map(({ request }) => request.method),
|
|
86
127
|
});
|
|
87
128
|
try {
|
|
@@ -161,7 +202,12 @@ export function createSafeJsonRpcClient<T extends object>(
|
|
|
161
202
|
const body: JsonRpcRequest = { jsonrpc: '2.0', id: id++, method, params };
|
|
162
203
|
|
|
163
204
|
const deferred = promiseWithResolvers<JsonRpcResponse>();
|
|
164
|
-
|
|
205
|
+
const encodedLength = jsonStringify(body).length;
|
|
206
|
+
if (encodedLength >= maxRequestBodySize) {
|
|
207
|
+
throw new Error(`Request body too large: ${encodedLength}`);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
queue.push({ request: body, deferred, encodedLength });
|
|
165
211
|
|
|
166
212
|
if (sendBatchTimeoutHandle === undefined) {
|
|
167
213
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
package/src/queue/batch_queue.ts
CHANGED
|
@@ -13,7 +13,7 @@ type Batch<T, K> = {
|
|
|
13
13
|
* A queue that groups items into batches based on a group key.
|
|
14
14
|
*
|
|
15
15
|
* The batching algorithm is greedy, meaning that as long as consecutive items have the same group key then they will
|
|
16
|
-
* be
|
|
16
|
+
* be batched together. As soon as an item with a different group key is encountered, the old batch is flushed to the
|
|
17
17
|
* queue and a new batch is started.
|
|
18
18
|
*
|
|
19
19
|
* A batch can also be flushed to the queue if:
|
|
@@ -5,7 +5,7 @@ import { FifoMemoryQueue } from './fifo_memory_queue.js';
|
|
|
5
5
|
*/
|
|
6
6
|
export class SerialQueue {
|
|
7
7
|
private readonly queue = new FifoMemoryQueue<() => Promise<void>>();
|
|
8
|
-
private
|
|
8
|
+
private runningPromises: Promise<void>[] = [];
|
|
9
9
|
private started = false;
|
|
10
10
|
|
|
11
11
|
/**
|
|
@@ -14,11 +14,11 @@ export class SerialQueue {
|
|
|
14
14
|
* waiting for the completion of the previous one before starting its execution.
|
|
15
15
|
* This method should be called once to start processing the queue.
|
|
16
16
|
*/
|
|
17
|
-
public start() {
|
|
17
|
+
public start(numWorkers = 1) {
|
|
18
18
|
if (this.started) {
|
|
19
19
|
return;
|
|
20
20
|
}
|
|
21
|
-
this.
|
|
21
|
+
this.runningPromises = Array.from({ length: numWorkers }, () => this.queue.process(fn => fn()));
|
|
22
22
|
this.started = true;
|
|
23
23
|
}
|
|
24
24
|
|
|
@@ -41,7 +41,7 @@ export class SerialQueue {
|
|
|
41
41
|
*/
|
|
42
42
|
public cancel() {
|
|
43
43
|
this.queue.cancel();
|
|
44
|
-
return this.
|
|
44
|
+
return Promise.all(this.runningPromises).then(() => {});
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
/**
|
|
@@ -52,7 +52,7 @@ export class SerialQueue {
|
|
|
52
52
|
*/
|
|
53
53
|
public end() {
|
|
54
54
|
this.queue.end();
|
|
55
|
-
return this.
|
|
55
|
+
return Promise.all(this.runningPromises).then(() => {});
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
/**
|