@aztec/foundation 0.0.1-commit.3fd054f6 → 0.0.1-commit.431c48d
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/bigint-buffer/index.d.ts +1 -1
- package/dest/bigint-buffer/index.d.ts.map +1 -1
- package/dest/bigint-buffer/index.js +6 -1
- package/dest/branded-types/block_number.d.ts +3 -3
- package/dest/branded-types/block_number.d.ts.map +1 -1
- package/dest/branded-types/block_number.js +15 -4
- package/dest/branded-types/buffer32_hash.d.ts +27 -0
- package/dest/branded-types/buffer32_hash.d.ts.map +1 -0
- package/dest/branded-types/buffer32_hash.js +12 -0
- package/dest/branded-types/checkpoint_number.d.ts +9 -3
- package/dest/branded-types/checkpoint_number.d.ts.map +1 -1
- package/dest/branded-types/checkpoint_number.js +11 -0
- package/dest/branded-types/epoch.d.ts +2 -2
- package/dest/branded-types/epoch.d.ts.map +1 -1
- package/dest/branded-types/index.d.ts +2 -1
- package/dest/branded-types/index.d.ts.map +1 -1
- package/dest/branded-types/index.js +1 -0
- package/dest/branded-types/index_within_checkpoint.d.ts +2 -2
- package/dest/branded-types/index_within_checkpoint.d.ts.map +1 -1
- package/dest/branded-types/slot.d.ts +2 -2
- package/dest/branded-types/slot.d.ts.map +1 -1
- package/dest/buffer/buffer16.d.ts +3 -1
- package/dest/buffer/buffer16.d.ts.map +1 -1
- package/dest/buffer/buffer32.d.ts +28 -61
- package/dest/buffer/buffer32.d.ts.map +1 -1
- package/dest/buffer/buffer32.js +29 -63
- package/dest/collection/array.d.ts +11 -1
- package/dest/collection/array.d.ts.map +1 -1
- package/dest/collection/array.js +33 -0
- package/dest/collection/index.d.ts +3 -1
- package/dest/collection/index.d.ts.map +1 -1
- package/dest/collection/index.js +2 -0
- package/dest/collection/lru_map.d.ts +41 -0
- package/dest/collection/lru_map.d.ts.map +1 -0
- package/dest/collection/lru_map.js +119 -0
- package/dest/collection/lru_set.d.ts +35 -0
- package/dest/collection/lru_set.d.ts.map +1 -0
- package/dest/collection/lru_set.js +95 -0
- package/dest/committable/committable.js +1 -1
- package/dest/config/env_var.d.ts +2 -2
- package/dest/config/env_var.d.ts.map +1 -1
- package/dest/config/index.d.ts +67 -37
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +72 -71
- package/dest/config/network_config.d.ts +11 -55
- package/dest/config/network_config.d.ts.map +1 -1
- package/dest/config/network_name.d.ts +2 -2
- package/dest/config/network_name.d.ts.map +1 -1
- package/dest/config/network_name.js +1 -3
- package/dest/config/secret_value.d.ts +2 -2
- package/dest/config/secret_value.d.ts.map +1 -1
- package/dest/crypto/aes128/index.d.ts +2 -1
- package/dest/crypto/aes128/index.d.ts.map +1 -1
- package/dest/crypto/aes128/index.js +11 -2
- package/dest/crypto/bls/bn254_keystore.d.ts +10 -177
- package/dest/crypto/bls/bn254_keystore.d.ts.map +1 -1
- package/dest/crypto/bls/bn254_keystore.js +22 -34
- package/dest/crypto/poseidon/index.d.ts +1 -1
- package/dest/crypto/poseidon/index.d.ts.map +1 -1
- package/dest/crypto/poseidon/index.js +40 -33
- package/dest/crypto/schnorr/index.d.ts +8 -7
- package/dest/crypto/schnorr/index.d.ts.map +1 -1
- package/dest/crypto/schnorr/index.js +6 -6
- package/dest/crypto/schnorr/signature.d.ts +9 -29
- package/dest/crypto/schnorr/signature.d.ts.map +1 -1
- package/dest/crypto/schnorr/signature.js +20 -36
- package/dest/curves/bls12/field.d.ts +3 -3
- package/dest/curves/bls12/field.d.ts.map +1 -1
- package/dest/curves/bls12/field.js +0 -5
- package/dest/curves/bls12/point.d.ts +2 -2
- package/dest/curves/bls12/point.d.ts.map +1 -1
- package/dest/curves/bn254/field.d.ts +23 -19
- package/dest/curves/bn254/field.d.ts.map +1 -1
- package/dest/curves/bn254/field.js +23 -17
- package/dest/curves/grumpkin/point.d.ts +14 -28
- package/dest/curves/grumpkin/point.d.ts.map +1 -1
- package/dest/curves/grumpkin/point.js +29 -43
- package/dest/eth-address/index.d.ts +2 -2
- package/dest/eth-address/index.d.ts.map +1 -1
- package/dest/eth-address/index.js +0 -3
- package/dest/eth-signature/eth_signature.d.ts +2 -2
- package/dest/eth-signature/eth_signature.d.ts.map +1 -1
- package/dest/fifo_set/fifo_set.d.ts +15 -0
- package/dest/fifo_set/fifo_set.d.ts.map +1 -0
- package/dest/fifo_set/fifo_set.js +39 -0
- package/dest/fifo_set/index.d.ts +2 -0
- package/dest/fifo_set/index.d.ts.map +1 -0
- package/dest/fifo_set/index.js +1 -0
- package/dest/iterable/first.d.ts +8 -0
- package/dest/iterable/first.d.ts.map +1 -0
- package/dest/iterable/first.js +11 -0
- package/dest/iterable/index.d.ts +2 -1
- package/dest/iterable/index.d.ts.map +1 -1
- package/dest/iterable/index.js +1 -0
- package/dest/json-rpc/client/fetch.d.ts +8 -3
- package/dest/json-rpc/client/fetch.d.ts.map +1 -1
- package/dest/json-rpc/client/fetch.js +11 -7
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts +1 -1
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -1
- package/dest/json-rpc/client/safe_json_rpc_client.js +2 -2
- package/dest/json-rpc/client/undici.d.ts +14 -3
- package/dest/json-rpc/client/undici.d.ts.map +1 -1
- package/dest/json-rpc/client/undici.js +47 -14
- package/dest/json-rpc/fixtures/test_state.d.ts +4 -8
- package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -1
- package/dest/json-rpc/fixtures/test_state.js +57 -17
- package/dest/json-rpc/server/safe_json_rpc_server.d.ts +49 -11
- package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -1
- package/dest/json-rpc/server/safe_json_rpc_server.js +159 -40
- package/dest/log/aws-logger-config.d.ts +8 -0
- package/dest/log/aws-logger-config.d.ts.map +1 -0
- package/dest/log/aws-logger-config.js +55 -0
- package/dest/log/pino-logger.d.ts +1 -1
- package/dest/log/pino-logger.d.ts.map +1 -1
- package/dest/log/pino-logger.js +29 -8
- package/dest/noir/noir_package_config.d.ts +19 -104
- package/dest/noir/noir_package_config.d.ts.map +1 -1
- package/dest/noir/noir_package_config.js +1 -1
- package/dest/promise/running-promise.d.ts +8 -2
- package/dest/promise/running-promise.d.ts.map +1 -1
- package/dest/promise/running-promise.js +17 -5
- package/dest/promise/utils.d.ts +14 -1
- package/dest/promise/utils.d.ts.map +1 -1
- package/dest/promise/utils.js +20 -0
- package/dest/queue/batch_queue.d.ts +1 -1
- package/dest/queue/batch_queue.d.ts.map +1 -1
- package/dest/queue/batch_queue.js +1 -0
- package/dest/retry/index.d.ts +31 -3
- package/dest/retry/index.d.ts.map +1 -1
- package/dest/retry/index.js +44 -2
- package/dest/schemas/api.d.ts +12 -10
- package/dest/schemas/api.d.ts.map +1 -1
- package/dest/schemas/api.js +7 -1
- package/dest/schemas/parse.d.ts +4 -4
- package/dest/schemas/parse.d.ts.map +1 -1
- package/dest/schemas/parse.js +6 -5
- package/dest/schemas/schemas.d.ts +15 -15
- package/dest/schemas/types.d.ts +3 -3
- package/dest/schemas/types.d.ts.map +1 -1
- package/dest/schemas/utils.d.ts +7 -11
- package/dest/schemas/utils.d.ts.map +1 -1
- package/dest/schemas/utils.js +2 -18
- package/dest/serialize/buffer_reader.d.ts +1 -1
- package/dest/serialize/buffer_reader.d.ts.map +1 -1
- package/dest/serialize/buffer_reader.js +5 -0
- package/dest/serialize/buffer_sink.d.ts +134 -0
- package/dest/serialize/buffer_sink.d.ts.map +1 -0
- package/dest/serialize/buffer_sink.js +297 -0
- package/dest/serialize/index.d.ts +2 -1
- package/dest/serialize/index.d.ts.map +1 -1
- package/dest/serialize/index.js +1 -0
- package/dest/serialize/serialize.d.ts +1 -32
- package/dest/serialize/serialize.d.ts.map +1 -1
- package/dest/serialize/serialize.js +0 -21
- package/dest/string/index.js +1 -1
- package/dest/testing/files/index.d.ts +2 -3
- package/dest/testing/files/index.d.ts.map +1 -1
- package/dest/testing/files/index.js +1 -2
- package/dest/timer/index.d.ts +2 -2
- package/dest/timer/index.d.ts.map +1 -1
- package/dest/timer/index.js +1 -1
- package/dest/timer/timeout.d.ts +3 -1
- package/dest/timer/timeout.d.ts.map +1 -1
- package/dest/timer/timeout.js +26 -0
- package/dest/transport/dispatch/create_dispatch_proxy.d.ts +11 -2
- package/dest/transport/dispatch/create_dispatch_proxy.d.ts.map +1 -1
- package/dest/transport/index.d.ts +1 -2
- package/dest/transport/index.d.ts.map +1 -1
- package/dest/transport/index.js +0 -1
- package/dest/trees/balanced_merkle_tree_root.d.ts +2 -3
- package/dest/trees/balanced_merkle_tree_root.d.ts.map +1 -1
- package/dest/trees/balanced_merkle_tree_root.js +2 -3
- package/dest/trees/hasher.d.ts +3 -2
- package/dest/trees/hasher.d.ts.map +1 -1
- package/dest/trees/hasher.js +5 -5
- package/dest/trees/indexed_merkle_tree_calculator.d.ts +1 -1
- package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -1
- package/dest/trees/indexed_merkle_tree_calculator.js +5 -1
- package/dest/trees/membership_witness.d.ts +2 -6
- package/dest/trees/membership_witness.d.ts.map +1 -1
- package/dest/trees/membership_witness.js +0 -9
- package/dest/trees/merkle_tree_calculator.d.ts +4 -2
- package/dest/trees/merkle_tree_calculator.d.ts.map +1 -1
- package/dest/trees/merkle_tree_calculator.js +1 -5
- package/dest/trees/sibling_path.d.ts +13 -14
- package/dest/trees/sibling_path.d.ts.map +1 -1
- package/dest/trees/sibling_path.js +23 -28
- package/dest/trees/unbalanced_merkle_tree_root.d.ts +2 -3
- package/dest/trees/unbalanced_merkle_tree_root.d.ts.map +1 -1
- package/dest/trees/unbalanced_merkle_tree_root.js +2 -3
- package/dest/types/index.d.ts +23 -1
- package/dest/types/index.d.ts.map +1 -1
- package/dest/types/index.js +15 -0
- package/package.json +5 -4
- package/src/bigint-buffer/index.ts +6 -1
- package/src/branded-types/block_number.ts +20 -2
- package/src/branded-types/buffer32_hash.ts +38 -0
- package/src/branded-types/checkpoint_number.ts +16 -1
- package/src/branded-types/epoch.ts +1 -1
- package/src/branded-types/index.ts +1 -0
- package/src/branded-types/index_within_checkpoint.ts +1 -1
- package/src/branded-types/slot.ts +1 -1
- package/src/buffer/buffer16.ts +3 -0
- package/src/buffer/buffer32.ts +39 -68
- package/src/collection/array.ts +34 -0
- package/src/collection/index.ts +2 -0
- package/src/collection/lru_map.ts +143 -0
- package/src/collection/lru_set.ts +115 -0
- package/src/committable/committable.ts +1 -1
- package/src/config/env_var.ts +52 -24
- package/src/config/index.ts +143 -122
- package/src/config/network_name.ts +2 -5
- package/src/config/secret_value.ts +1 -1
- package/src/crypto/aes128/index.ts +11 -2
- package/src/crypto/bls/bn254_keystore.ts +33 -43
- package/src/crypto/poseidon/index.ts +42 -34
- package/src/crypto/schnorr/index.ts +9 -8
- package/src/crypto/schnorr/signature.ts +17 -46
- package/src/curves/bls12/field.ts +0 -7
- package/src/curves/bn254/field.ts +35 -34
- package/src/curves/grumpkin/point.ts +23 -40
- package/src/eth-address/index.ts +0 -4
- package/src/fifo_set/fifo_set.ts +52 -0
- package/src/fifo_set/index.ts +1 -0
- package/src/iterable/first.ts +14 -0
- package/src/iterable/index.ts +1 -0
- package/src/json-rpc/client/fetch.ts +19 -5
- package/src/json-rpc/client/safe_json_rpc_client.ts +2 -2
- package/src/json-rpc/client/undici.ts +54 -12
- package/src/json-rpc/fixtures/test_state.ts +10 -10
- package/src/json-rpc/server/safe_json_rpc_server.ts +204 -47
- package/src/log/aws-logger-config.ts +32 -0
- package/src/log/pino-logger.ts +33 -6
- package/src/noir/noir_package_config.ts +32 -20
- package/src/promise/running-promise.ts +20 -7
- package/src/promise/utils.ts +31 -0
- package/src/queue/batch_queue.ts +1 -0
- package/src/retry/index.ts +66 -4
- package/src/schemas/api.ts +25 -25
- package/src/schemas/parse.ts +9 -6
- package/src/schemas/schemas.ts +4 -4
- package/src/schemas/types.ts +2 -2
- package/src/schemas/utils.ts +4 -38
- package/src/serialize/buffer_reader.ts +5 -0
- package/src/serialize/buffer_sink.ts +350 -0
- package/src/serialize/index.ts +1 -0
- package/src/serialize/serialize.ts +0 -50
- package/src/string/index.ts +1 -1
- package/src/testing/files/index.ts +1 -2
- package/src/timer/index.ts +1 -1
- package/src/timer/timeout.ts +31 -0
- package/src/transport/dispatch/create_dispatch_proxy.ts +11 -1
- package/src/transport/index.ts +0 -1
- package/src/trees/balanced_merkle_tree_root.ts +2 -5
- package/src/trees/hasher.ts +6 -3
- package/src/trees/indexed_merkle_tree_calculator.ts +5 -1
- package/src/trees/membership_witness.ts +0 -8
- package/src/trees/merkle_tree_calculator.ts +4 -10
- package/src/trees/sibling_path.ts +24 -30
- package/src/trees/unbalanced_merkle_tree_root.ts +2 -5
- package/src/types/index.ts +47 -0
- package/dest/crypto/serialize.d.ts +0 -51
- package/dest/crypto/serialize.d.ts.map +0 -1
- package/dest/crypto/serialize.js +0 -68
- package/dest/transport/dispatch/create_dispatch_fn.d.ts +0 -25
- package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +0 -1
- package/dest/transport/dispatch/create_dispatch_fn.js +0 -17
- package/src/crypto/serialize.ts +0 -85
- package/src/transport/dispatch/create_dispatch_fn.ts +0 -35
package/src/config/env_var.ts
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
export type EnvVar =
|
|
2
2
|
| 'REGISTRY_CONTRACT_ADDRESS'
|
|
3
3
|
| 'FEE_ASSET_HANDLER_CONTRACT_ADDRESS'
|
|
4
|
-
| 'SLASH_FACTORY_CONTRACT_ADDRESS'
|
|
5
4
|
| 'ACVM_BINARY_PATH'
|
|
6
5
|
| 'ACVM_WORKING_DIRECTORY'
|
|
7
6
|
| 'API_KEY'
|
|
8
7
|
| 'API_PREFIX'
|
|
9
|
-
| 'ARCHIVER_MAX_LOGS'
|
|
10
8
|
| 'ARCHIVER_POLLING_INTERVAL_MS'
|
|
9
|
+
| 'ARCHIVER_SKIP_HISTORICAL_LOGS_CHECK'
|
|
11
10
|
| 'ARCHIVER_URL'
|
|
12
11
|
| 'ARCHIVER_VIEM_POLLING_INTERVAL_MS'
|
|
13
12
|
| 'ARCHIVER_BATCH_SIZE'
|
|
13
|
+
| 'ARCHIVER_ORPHAN_PRUNE_NO_PROPOSAL_TOLERANCE'
|
|
14
|
+
| 'ARCHIVER_SKIP_ORPHAN_PROPOSED_BLOCK_PRUNING'
|
|
14
15
|
| 'AZTEC_ADMIN_PORT'
|
|
16
|
+
| 'AZTEC_NODE_DEBUG'
|
|
15
17
|
| 'AZTEC_ADMIN_API_KEY_HASH'
|
|
16
18
|
| 'AZTEC_DISABLE_ADMIN_API_KEY'
|
|
17
19
|
| 'AZTEC_RESET_ADMIN_API_KEY'
|
|
@@ -25,6 +27,7 @@ export type EnvVar =
|
|
|
25
27
|
| 'BB_IVC_CONCURRENCY'
|
|
26
28
|
| 'BB_CHONK_VERIFY_MAX_BATCH'
|
|
27
29
|
| 'BB_CHONK_VERIFY_BATCH_CONCURRENCY'
|
|
30
|
+
| 'BB_DEBUG_OUTPUT_DIR'
|
|
28
31
|
| 'BOOTSTRAP_NODES'
|
|
29
32
|
| 'BLOB_ARCHIVE_API_URL'
|
|
30
33
|
| 'BLOB_FILE_STORE_URLS'
|
|
@@ -74,11 +77,14 @@ export type EnvVar =
|
|
|
74
77
|
| 'DEBUG'
|
|
75
78
|
| 'DEBUG_P2P_DISABLE_COLOCATION_PENALTY'
|
|
76
79
|
| 'ENABLE_PROVER_NODE'
|
|
80
|
+
| 'USE_AUTOMINE_SEQUENCER'
|
|
81
|
+
| 'AUTOMINE_ENABLE_PROVE_EPOCH'
|
|
77
82
|
| 'ETHEREUM_HOSTS'
|
|
78
83
|
| 'ETHEREUM_DEBUG_HOSTS'
|
|
79
84
|
| 'ETHEREUM_ALLOW_NO_DEBUG_HOSTS'
|
|
80
85
|
| 'FEE_RECIPIENT'
|
|
81
86
|
| 'FORCE_COLOR'
|
|
87
|
+
| 'GOVERNANCE_PROPOSER_FORCE_PAYLOAD_VOTE'
|
|
82
88
|
| 'GOVERNANCE_PROPOSER_PAYLOAD_ADDRESS'
|
|
83
89
|
| 'KEY_STORE_DIRECTORY'
|
|
84
90
|
| 'L1_CHAIN_ID'
|
|
@@ -94,14 +100,17 @@ export type EnvVar =
|
|
|
94
100
|
| 'MNEMONIC'
|
|
95
101
|
| 'NETWORK'
|
|
96
102
|
| 'NETWORK_CONFIG_LOCATION'
|
|
97
|
-
| '
|
|
103
|
+
| 'ALLOW_OVERRIDING_NETWORK_CONFIG'
|
|
104
|
+
| 'USE_AWS_LOGGING'
|
|
98
105
|
| 'USE_GCLOUD_LOGGING'
|
|
99
106
|
| 'OTEL_EXPORTER_OTLP_METRICS_ENDPOINT'
|
|
100
107
|
| 'OTEL_EXPORTER_OTLP_TRACES_ENDPOINT'
|
|
101
108
|
| 'OTEL_EXPORTER_OTLP_LOGS_ENDPOINT'
|
|
102
109
|
| 'OTEL_COLLECT_INTERVAL_MS'
|
|
110
|
+
| 'OTEL_BSP_MAX_QUEUE_SIZE'
|
|
103
111
|
| 'OTEL_EXCLUDE_METRICS'
|
|
104
112
|
| 'OTEL_INCLUDE_METRICS'
|
|
113
|
+
| 'OTEL_MIN_TRACE_DURATION_MS'
|
|
105
114
|
| 'OTEL_EXPORT_TIMEOUT_MS'
|
|
106
115
|
| 'PUBLIC_OTEL_EXPORTER_OTLP_METRICS_ENDPOINT'
|
|
107
116
|
| 'PUBLIC_OTEL_INCLUDE_METRICS'
|
|
@@ -112,7 +121,6 @@ export type EnvVar =
|
|
|
112
121
|
| 'P2P_BATCH_TX_REQUESTER_TX_BATCH_SIZE'
|
|
113
122
|
| 'P2P_BATCH_TX_REQUESTER_BAD_PEER_THRESHOLD'
|
|
114
123
|
| 'P2P_BLOCK_CHECK_INTERVAL_MS'
|
|
115
|
-
| 'P2P_SLOT_CHECK_INTERVAL_MS'
|
|
116
124
|
| 'P2P_BLOCK_REQUEST_BATCH_SIZE'
|
|
117
125
|
| 'P2P_BOOTSTRAP_NODE_ENR_VERSION_CHECK'
|
|
118
126
|
| 'P2P_BOOTSTRAP_NODES_AS_FULL_PEERS'
|
|
@@ -130,12 +138,16 @@ export type EnvVar =
|
|
|
130
138
|
| 'P2P_GOSSIPSUB_TX_INVALID_MESSAGE_DELIVERIES_DECAY'
|
|
131
139
|
| 'P2P_GOSSIPSUB_TX_INVALID_MESSAGE_DELIVERIES_WEIGHT'
|
|
132
140
|
| 'P2P_GOSSIPSUB_TX_TOPIC_WEIGHT'
|
|
141
|
+
| 'P2P_HEALTH_MIN_PEERS'
|
|
133
142
|
| 'P2P_L2_QUEUE_SIZE'
|
|
143
|
+
| 'P2P_MAX_GOSSIP_CLOCK_DISPARITY_MS'
|
|
134
144
|
| 'P2P_MAX_PEERS'
|
|
145
|
+
| 'P2P_PEER_BAN_DURATION_SECONDS'
|
|
135
146
|
| 'P2P_PEER_CHECK_INTERVAL_MS'
|
|
136
147
|
| 'P2P_PEER_FAILED_BAN_TIME_MS'
|
|
137
148
|
| 'P2P_PEER_PENALTY_VALUES'
|
|
138
149
|
| 'P2P_QUERY_FOR_IP'
|
|
150
|
+
| 'P2P_PUBLIC_IP_SERVICES'
|
|
139
151
|
| 'P2P_REQRESP_INDIVIDUAL_REQUEST_TIMEOUT_MS'
|
|
140
152
|
| 'P2P_REQRESP_DIAL_TIMEOUT_MS'
|
|
141
153
|
| 'P2P_REQRESP_OVERALL_REQUEST_TIMEOUT_MS'
|
|
@@ -157,7 +169,10 @@ export type EnvVar =
|
|
|
157
169
|
| 'P2P_DROP_TX_CHANCE'
|
|
158
170
|
| 'P2P_TX_POOL_DELETE_TXS_AFTER_REORG'
|
|
159
171
|
| 'P2P_MIN_TX_POOL_AGE_MS'
|
|
172
|
+
| 'P2P_MISSING_TX_COLLECTION_DEADLINE_SLOTS'
|
|
160
173
|
| 'P2P_RPC_PRICE_BUMP_PERCENTAGE'
|
|
174
|
+
| 'P2P_KEEP_FINALIZED_TXS_FOR_SLOTS'
|
|
175
|
+
| 'P2P_TX_VALIDATION_CACHE_SIZE'
|
|
161
176
|
| 'DEBUG_P2P_INSTRUMENT_MESSAGES'
|
|
162
177
|
| 'PEER_ID_PRIVATE_KEY'
|
|
163
178
|
| 'PEER_ID_PRIVATE_KEY_PATH'
|
|
@@ -179,6 +194,7 @@ export type EnvVar =
|
|
|
179
194
|
| 'PROVER_FAILED_PROOF_STORE'
|
|
180
195
|
| 'PROVER_NODE_FAILED_EPOCH_STORE'
|
|
181
196
|
| 'PROVER_NODE_DISABLE_PROOF_PUBLISH'
|
|
197
|
+
| 'PROVER_NODE_PROOF_SUBMISSION_TARGET_ADDRESS'
|
|
182
198
|
| 'PROVER_ID'
|
|
183
199
|
| 'PROVER_NODE_POLLING_INTERVAL_MS'
|
|
184
200
|
| 'PROVER_NODE_MAX_PENDING_JOBS'
|
|
@@ -197,17 +213,27 @@ export type EnvVar =
|
|
|
197
213
|
| 'PROVER_TEST_DELAY_MS'
|
|
198
214
|
| 'PROVER_TEST_DELAY_TYPE'
|
|
199
215
|
| 'PROVER_TEST_VERIFICATION_DELAY_MS'
|
|
216
|
+
| 'PXE_AUTO_SYNC'
|
|
217
|
+
| 'PXE_CONCURRENT_CONTRACT_SYNC_ENABLED'
|
|
200
218
|
| 'PXE_L2_BLOCK_BATCH_SIZE'
|
|
201
219
|
| 'PXE_PROVER_ENABLED'
|
|
202
220
|
| 'PXE_SYNC_CHAIN_TIP'
|
|
203
221
|
| 'RPC_MAX_BATCH_SIZE'
|
|
204
222
|
| 'RPC_MAX_BODY_SIZE'
|
|
223
|
+
| 'RPC_HTTP_HEADERS_TIMEOUT_MS'
|
|
224
|
+
| 'RPC_HTTP_KEEP_ALIVE_TIMEOUT_MS'
|
|
225
|
+
| 'RPC_CORS_ALLOW_ANY_ORIGIN'
|
|
226
|
+
| 'RPC_CORS_ALLOWED_HEADERS'
|
|
227
|
+
| 'RPC_CORS_ALLOWED_ORIGINS'
|
|
205
228
|
| 'RPC_SIMULATE_PUBLIC_MAX_GAS_LIMIT'
|
|
206
229
|
| 'RPC_SIMULATE_PUBLIC_MAX_DEBUG_LOG_MEMORY_READS'
|
|
230
|
+
| 'RPC_UNSEEN_BLOCK_BY_NUMBER_WAIT_MS'
|
|
231
|
+
| 'RPC_UNSEEN_BLOCK_BY_HASH_WAIT_MS'
|
|
232
|
+
| 'OFFENSE_COLLECTION_ENABLED'
|
|
207
233
|
| 'SENTINEL_ENABLED'
|
|
208
234
|
| 'SENTINEL_HISTORY_LENGTH_IN_EPOCHS'
|
|
209
|
-
| '
|
|
210
|
-
| '
|
|
235
|
+
| 'SENTINEL_HISTORIC_EPOCH_PERFORMANCE_LENGTH_IN_EPOCHS'
|
|
236
|
+
| 'SENTINEL_EPOCH_END_BUFFER_SLOTS'
|
|
211
237
|
| 'SEQ_MAX_TX_PER_BLOCK'
|
|
212
238
|
| 'SEQ_MAX_TX_PER_CHECKPOINT'
|
|
213
239
|
| 'SEQ_MIN_TX_PER_BLOCK'
|
|
@@ -215,39 +241,46 @@ export type EnvVar =
|
|
|
215
241
|
| 'SEQ_MAX_DA_BLOCK_GAS'
|
|
216
242
|
| 'SEQ_MAX_L2_BLOCK_GAS'
|
|
217
243
|
| 'SEQ_PER_BLOCK_ALLOCATION_MULTIPLIER'
|
|
244
|
+
| 'SEQ_PER_BLOCK_DA_ALLOCATION_MULTIPLIER'
|
|
218
245
|
| 'SEQ_REDISTRIBUTE_CHECKPOINT_BUDGET'
|
|
219
246
|
| 'SEQ_PUBLISHER_PRIVATE_KEY'
|
|
220
247
|
| 'SEQ_PUBLISHER_PRIVATE_KEYS'
|
|
221
248
|
| 'SEQ_PUBLISHER_ADDRESSES'
|
|
222
249
|
| 'SEQ_PUBLISHER_ALLOW_INVALID_STATES'
|
|
223
250
|
| 'SEQ_PUBLISHER_FORWARDER_ADDRESS'
|
|
251
|
+
| 'SEQ_PUBLISHER_PREVIOUS_L1_BLOCK_WAIT_TIMEOUT_MS'
|
|
252
|
+
| 'SEQ_PUBLISHER_PREVIOUS_L1_BLOCK_WAIT_POLL_INTERVAL_MS'
|
|
224
253
|
| 'PUBLISHER_FUNDING_THRESHOLD'
|
|
225
254
|
| 'PUBLISHER_FUNDING_AMOUNT'
|
|
226
255
|
| 'SEQ_POLLING_INTERVAL_MS'
|
|
227
|
-
| 'SEQ_ENFORCE_TIME_TABLE'
|
|
228
256
|
| 'SEQ_L1_PUBLISHING_TIME_ALLOWANCE_IN_SLOT'
|
|
229
257
|
| 'SEQ_ATTESTATION_PROPAGATION_TIME'
|
|
258
|
+
| 'SEQ_CHECKPOINT_PROPOSAL_PREPARE_TIME'
|
|
259
|
+
| 'CHECKPOINT_PROPOSAL_SYNC_GRACE_SECONDS'
|
|
260
|
+
| 'SEQ_MIN_BLOCK_DURATION'
|
|
230
261
|
| 'SEQ_BLOCK_DURATION_MS'
|
|
262
|
+
| 'SEQ_LAST_BLOCK_DURATION_MS'
|
|
231
263
|
| 'SEQ_EXPECTED_BLOCK_PROPOSALS_PER_SLOT'
|
|
232
264
|
| 'SEQ_BUILD_CHECKPOINT_IF_EMPTY'
|
|
233
265
|
| 'SEQ_SECONDS_BEFORE_INVALIDATING_BLOCK_AS_COMMITTEE_MEMBER'
|
|
234
266
|
| 'SEQ_SECONDS_BEFORE_INVALIDATING_BLOCK_AS_NON_COMMITTEE_MEMBER'
|
|
235
267
|
| 'SEQ_SKIP_CHECKPOINT_PUBLISH_PERCENT'
|
|
236
|
-
| '
|
|
237
|
-
| 'SLASH_MAX_PENALTY_PERCENTAGE'
|
|
268
|
+
| 'SEQ_MIN_PEERS_TO_PROPOSE'
|
|
238
269
|
| 'SLASH_VALIDATORS_ALWAYS'
|
|
239
270
|
| 'SLASH_VALIDATORS_NEVER'
|
|
240
|
-
| 'SLASH_PRUNE_PENALTY'
|
|
241
271
|
| 'SLASH_DATA_WITHHOLDING_PENALTY'
|
|
272
|
+
| 'SLASH_DATA_WITHHOLDING_TOLERANCE_SLOTS'
|
|
242
273
|
| 'SLASH_INACTIVITY_PENALTY'
|
|
243
274
|
| 'SLASH_INACTIVITY_TARGET_PERCENTAGE'
|
|
244
275
|
| 'SLASH_INACTIVITY_CONSECUTIVE_EPOCH_THRESHOLD'
|
|
245
276
|
| 'SLASH_INVALID_BLOCK_PENALTY'
|
|
277
|
+
| 'SLASH_INVALID_CHECKPOINT_PROPOSAL_PENALTY'
|
|
246
278
|
| 'SLASH_DUPLICATE_PROPOSAL_PENALTY'
|
|
247
279
|
| 'SLASH_DUPLICATE_ATTESTATION_PENALTY'
|
|
248
280
|
| 'SLASH_OVERRIDE_PAYLOAD'
|
|
249
281
|
| 'SLASH_PROPOSE_INVALID_ATTESTATIONS_PENALTY'
|
|
250
|
-
| '
|
|
282
|
+
| 'SLASH_PROPOSE_DESCENDANT_OF_CHECKPOINT_WITH_INVALID_ATTESTATIONS_PENALTY'
|
|
283
|
+
| 'SLASH_ATTEST_INVALID_CHECKPOINT_PROPOSAL_PENALTY'
|
|
251
284
|
| 'SLASH_UNKNOWN_PENALTY'
|
|
252
285
|
| 'SLASH_GRACE_PERIOD_L2_SLOTS'
|
|
253
286
|
| 'SLASH_OFFENSE_EXPIRATION_ROUNDS'
|
|
@@ -258,28 +291,20 @@ export type EnvVar =
|
|
|
258
291
|
| 'SYNC_SNAPSHOTS_URL'
|
|
259
292
|
| 'TELEMETRY'
|
|
260
293
|
| 'TEST_ACCOUNTS'
|
|
294
|
+
| 'TEST_PRELOAD_STANDARD_CONTRACTS'
|
|
261
295
|
| 'SPONSORED_FPC'
|
|
262
296
|
| 'PREFUND_ADDRESSES'
|
|
263
297
|
| 'TX_COLLECTION_FAST_NODES_TIMEOUT_BEFORE_REQ_RESP_MS'
|
|
264
|
-
| 'TX_COLLECTION_SLOW_NODES_INTERVAL_MS'
|
|
265
|
-
| 'TX_COLLECTION_SLOW_REQ_RESP_INTERVAL_MS'
|
|
266
|
-
| 'TX_COLLECTION_SLOW_REQ_RESP_TIMEOUT_MS'
|
|
267
|
-
| 'TX_COLLECTION_RECONCILE_INTERVAL_MS'
|
|
268
|
-
| 'TX_COLLECTION_DISABLE_SLOW_DURING_FAST_REQUESTS'
|
|
269
298
|
| 'TX_COLLECTION_FAST_NODE_INTERVAL_MS'
|
|
270
299
|
| 'TX_COLLECTION_FAST_MAX_PARALLEL_REQUESTS_PER_NODE'
|
|
271
300
|
| 'TX_COLLECTION_NODE_RPC_MAX_BATCH_SIZE'
|
|
272
301
|
| 'TX_COLLECTION_NODE_RPC_URLS'
|
|
273
302
|
| 'TX_COLLECTION_MISSING_TXS_COLLECTOR_TYPE'
|
|
274
303
|
| 'TX_COLLECTION_FILE_STORE_URLS'
|
|
275
|
-
| 'TX_COLLECTION_FILE_STORE_SLOW_DELAY_MS'
|
|
276
304
|
| 'TX_COLLECTION_FILE_STORE_FAST_DELAY_MS'
|
|
277
305
|
| 'TX_COLLECTION_FILE_STORE_FAST_WORKER_COUNT'
|
|
278
|
-
| 'TX_COLLECTION_FILE_STORE_SLOW_WORKER_COUNT'
|
|
279
306
|
| 'TX_COLLECTION_FILE_STORE_FAST_BACKOFF_BASE_MS'
|
|
280
|
-
| 'TX_COLLECTION_FILE_STORE_SLOW_BACKOFF_BASE_MS'
|
|
281
307
|
| 'TX_COLLECTION_FILE_STORE_FAST_BACKOFF_MAX_MS'
|
|
282
|
-
| 'TX_COLLECTION_FILE_STORE_SLOW_BACKOFF_MAX_MS'
|
|
283
308
|
| 'TX_FILE_STORE_URL'
|
|
284
309
|
| 'TX_FILE_STORE_UPLOAD_CONCURRENCY'
|
|
285
310
|
| 'TX_FILE_STORE_MAX_QUEUE_SIZE'
|
|
@@ -295,7 +320,6 @@ export type EnvVar =
|
|
|
295
320
|
| 'VALIDATOR_MAX_TX_PER_CHECKPOINT'
|
|
296
321
|
| 'VALIDATOR_PRIVATE_KEYS'
|
|
297
322
|
| 'VALIDATOR_PRIVATE_KEY'
|
|
298
|
-
| 'VALIDATOR_REEXECUTE'
|
|
299
323
|
| 'VALIDATOR_ADDRESSES'
|
|
300
324
|
| 'ROLLUP_VERSION'
|
|
301
325
|
| 'WS_BLOCK_CHECK_INTERVAL_MS'
|
|
@@ -328,7 +352,7 @@ export type EnvVar =
|
|
|
328
352
|
| 'AZTEC_SLASH_AMOUNT_SMALL'
|
|
329
353
|
| 'AZTEC_SLASH_AMOUNT_MEDIUM'
|
|
330
354
|
| 'AZTEC_SLASH_AMOUNT_LARGE'
|
|
331
|
-
| '
|
|
355
|
+
| 'AZTEC_SLASHER_ENABLED'
|
|
332
356
|
| 'AZTEC_GOVERNANCE_PROPOSER_QUORUM'
|
|
333
357
|
| 'AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE'
|
|
334
358
|
| 'AZTEC_GOVERNANCE_VOTING_DURATION'
|
|
@@ -357,19 +381,23 @@ export type EnvVar =
|
|
|
357
381
|
| 'K8S_POD_NAME'
|
|
358
382
|
| 'K8S_POD_UID'
|
|
359
383
|
| 'K8S_NAMESPACE_NAME'
|
|
360
|
-
| '
|
|
361
|
-
| 'VALIDATOR_REEXECUTE_DEADLINE_MS'
|
|
384
|
+
| 'ENABLE_AUTO_SHUTDOWN'
|
|
362
385
|
| 'WEB3_SIGNER_URL'
|
|
363
386
|
| 'SKIP_ARCHIVER_INITIAL_SYNC'
|
|
364
387
|
| 'BLOB_ALLOW_EMPTY_SOURCES'
|
|
388
|
+
| 'BLOB_PREFER_FILESTORES'
|
|
389
|
+
| 'BLOB_FILE_STORE_TIMEOUT_MS'
|
|
365
390
|
| 'FISHERMAN_MODE'
|
|
366
391
|
| 'MAX_ALLOWED_ETH_CLIENT_DRIFT_SECONDS'
|
|
392
|
+
| 'MAX_BLOCKS_PER_CHECKPOINT'
|
|
367
393
|
| 'LEGACY_BLS_CLI'
|
|
368
394
|
| 'DEBUG_FORCE_TX_PROOF_VERIFICATION'
|
|
395
|
+
| 'VALIDATOR_ALLOW_EPHEMERAL_SIGNING_PROTECTION'
|
|
369
396
|
| 'VALIDATOR_HA_SIGNING_ENABLED'
|
|
370
397
|
| 'VALIDATOR_HA_NODE_ID'
|
|
371
398
|
| 'VALIDATOR_HA_POLLING_INTERVAL_MS'
|
|
372
399
|
| 'VALIDATOR_HA_SIGNING_TIMEOUT_MS'
|
|
400
|
+
| 'VALIDATOR_SIGNER_CALL_TIMEOUT_MS'
|
|
373
401
|
| 'VALIDATOR_HA_MAX_STUCK_DUTIES_AGE_MS'
|
|
374
402
|
| 'VALIDATOR_HA_OLD_DUTIES_MAX_AGE_H'
|
|
375
403
|
| 'VALIDATOR_HA_DATABASE_URL'
|
package/src/config/index.ts
CHANGED
|
@@ -10,14 +10,14 @@ export type { EnvVar, NetworkNames };
|
|
|
10
10
|
export type { NetworkConfig, NetworkConfigMap } from './network_config.js';
|
|
11
11
|
export { NetworkConfigMapSchema, NetworkConfigSchema } from './network_config.js';
|
|
12
12
|
|
|
13
|
-
export interface ConfigMapping {
|
|
13
|
+
export interface ConfigMapping<T> {
|
|
14
14
|
env?: EnvVar;
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
/** Parse an env-var string into `T`. Throws on invalid input. */
|
|
16
|
+
parseEnv?: (val: string) => T;
|
|
17
|
+
defaultValue?: T;
|
|
17
18
|
printDefault?: (val: any) => string;
|
|
18
19
|
description: string;
|
|
19
20
|
isBoolean?: boolean;
|
|
20
|
-
nested?: Record<string, ConfigMapping>;
|
|
21
21
|
fallback?: EnvVar[];
|
|
22
22
|
/**
|
|
23
23
|
* List of deprecated env vars that are still supported but will log a warning.
|
|
@@ -30,7 +30,9 @@ export function isBooleanConfigValue<T>(obj: T, key: keyof T): boolean {
|
|
|
30
30
|
return typeof obj[key] === 'boolean';
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
export type ConfigMappingsType<T> =
|
|
33
|
+
export type ConfigMappingsType<T> = {
|
|
34
|
+
[K in keyof T]-?: ConfigMapping<Required<T>[K]>;
|
|
35
|
+
};
|
|
34
36
|
|
|
35
37
|
/**
|
|
36
38
|
* Shared utility function to get a value from environment variables with fallback support.
|
|
@@ -66,8 +68,8 @@ export function getValueFromEnvWithFallback<T>(
|
|
|
66
68
|
}
|
|
67
69
|
}
|
|
68
70
|
|
|
69
|
-
// Parse the value if needed
|
|
70
|
-
if (value !== undefined) {
|
|
71
|
+
// Parse the value if needed. Empty strings are treated as "not set".
|
|
72
|
+
if (value !== undefined && value !== '') {
|
|
71
73
|
return parseFunc ? parseFunc(value) : (value as unknown as T);
|
|
72
74
|
}
|
|
73
75
|
|
|
@@ -79,22 +81,20 @@ export function getConfigFromMappings<T>(configMappings: ConfigMappingsType<T>):
|
|
|
79
81
|
const config = {} as T;
|
|
80
82
|
|
|
81
83
|
for (const key in configMappings) {
|
|
82
|
-
const { env, parseEnv, defaultValue,
|
|
83
|
-
|
|
84
|
-
(config as any)[key] = getConfigFromMappings(nested);
|
|
85
|
-
} else {
|
|
86
|
-
// Use the shared utility function
|
|
84
|
+
const { env, parseEnv, defaultValue, fallback, deprecatedFallback } = configMappings[key];
|
|
85
|
+
try {
|
|
87
86
|
(config as any)[key] = getValueFromEnvWithFallback(env, parseEnv, defaultValue, fallback);
|
|
87
|
+
} catch (e: any) {
|
|
88
|
+
throw new Error(`Failed to parse config '${key}' (env: ${env ?? 'none'}): ${e.message}`);
|
|
89
|
+
}
|
|
88
90
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
userLog(warningMessage, { deprecatedEnvVar: deprecatedEnv, newEnvVar: env });
|
|
97
|
-
}
|
|
91
|
+
if (deprecatedFallback?.length) {
|
|
92
|
+
const userLog = createConsoleLogger('[DEPRECATED]');
|
|
93
|
+
for (const { env: deprecatedEnv, message } of deprecatedFallback) {
|
|
94
|
+
if (process.env[deprecatedEnv]) {
|
|
95
|
+
const warningMessage =
|
|
96
|
+
message ?? `Environment variable ${deprecatedEnv} is deprecated. Please use ${env} instead.`;
|
|
97
|
+
userLog(warningMessage, { deprecatedEnvVar: deprecatedEnv, newEnvVar: env });
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
}
|
|
@@ -119,29 +119,37 @@ export function omitConfigMappings<T, K extends keyof T>(
|
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
/**
|
|
122
|
-
* Generates parseEnv and default values for
|
|
123
|
-
*
|
|
124
|
-
*
|
|
122
|
+
* Generates parseEnv and default values for an integer config value.
|
|
123
|
+
*
|
|
124
|
+
* The default is used only when the environment variable is unset or empty. A set-but-invalid
|
|
125
|
+
* value (non-numeric, fractional, or outside the safe-integer range) throws rather than silently
|
|
126
|
+
* falling back to the default.
|
|
127
|
+
* @param defaultVal - The default value to use when the environment variable is unset
|
|
128
|
+
* @returns Object with parseEnv and default values for an integer config value
|
|
125
129
|
*/
|
|
126
|
-
export function numberConfigHelper(defaultVal: number): Pick<ConfigMapping
|
|
130
|
+
export function numberConfigHelper(defaultVal: number): Pick<ConfigMapping<number>, 'parseEnv' | 'defaultValue'> {
|
|
127
131
|
return {
|
|
128
|
-
parseEnv: (val: string) =>
|
|
132
|
+
parseEnv: (val: string) => parseSafeInteger(val),
|
|
129
133
|
defaultValue: defaultVal,
|
|
130
134
|
};
|
|
131
135
|
}
|
|
132
136
|
|
|
133
137
|
/**
|
|
134
|
-
* Generates parseEnv and default values for a
|
|
135
|
-
*
|
|
136
|
-
*
|
|
138
|
+
* Generates parseEnv and default values for a floating-point config value.
|
|
139
|
+
*
|
|
140
|
+
* The default is used only when the environment variable is unset or empty. A set-but-invalid
|
|
141
|
+
* value (not a finite number) throws rather than silently falling back to the default.
|
|
142
|
+
* @param defaultVal - The default value to use when the environment variable is unset
|
|
143
|
+
* @param validationFn - Optional extra validation applied to the parsed value; should throw on invalid input
|
|
144
|
+
* @returns Object with parseEnv and default values for a floating-point config value
|
|
137
145
|
*/
|
|
138
146
|
export function floatConfigHelper(
|
|
139
147
|
defaultVal: number,
|
|
140
148
|
validationFn?: (val: number) => void,
|
|
141
|
-
): Pick<ConfigMapping
|
|
149
|
+
): Pick<ConfigMapping<number>, 'parseEnv' | 'defaultValue'> {
|
|
142
150
|
return {
|
|
143
151
|
parseEnv: (val: string): number => {
|
|
144
|
-
const parsed =
|
|
152
|
+
const parsed = parseFiniteNumber(val);
|
|
145
153
|
validationFn?.(parsed);
|
|
146
154
|
return parsed;
|
|
147
155
|
},
|
|
@@ -150,12 +158,17 @@ export function floatConfigHelper(
|
|
|
150
158
|
}
|
|
151
159
|
|
|
152
160
|
/**
|
|
153
|
-
*
|
|
161
|
+
* Generates parseEnv and default values for a 0-1 percentage config value.
|
|
162
|
+
*
|
|
163
|
+
* The default is used only when the environment variable is unset or empty. A set-but-invalid
|
|
164
|
+
* value (not a finite number, or outside the 0-1 range) throws rather than silently falling back
|
|
165
|
+
* to the default.
|
|
166
|
+
* @param defaultVal - The default value to use when the environment variable is unset
|
|
154
167
|
*/
|
|
155
|
-
export function percentageConfigHelper(defaultVal: number): Pick<ConfigMapping
|
|
168
|
+
export function percentageConfigHelper(defaultVal: number): Pick<ConfigMapping<number>, 'parseEnv' | 'defaultValue'> {
|
|
156
169
|
return {
|
|
157
170
|
parseEnv: (val: string): number => {
|
|
158
|
-
const parsed =
|
|
171
|
+
const parsed = parseFiniteNumber(val);
|
|
159
172
|
if (parsed < 0 || parsed > 1) {
|
|
160
173
|
throw new TypeError(`Invalid percentage value: ${parsed} should be between 0 and 1`);
|
|
161
174
|
}
|
|
@@ -171,12 +184,13 @@ export function percentageConfigHelper(defaultVal: number): Pick<ConfigMapping,
|
|
|
171
184
|
* @param defaultVal - The default numerical value to use if the environment variable is not set or is invalid
|
|
172
185
|
* @returns Object with parseEnv and default values for a numerical config value
|
|
173
186
|
*/
|
|
174
|
-
export function bigintConfigHelper(defaultVal
|
|
187
|
+
export function bigintConfigHelper(defaultVal: bigint): Pick<ConfigMapping<bigint>, 'parseEnv' | 'defaultValue'>;
|
|
188
|
+
export function bigintConfigHelper(): Pick<ConfigMapping<bigint | undefined>, 'parseEnv' | 'defaultValue'>;
|
|
189
|
+
export function bigintConfigHelper(
|
|
190
|
+
defaultVal?: bigint,
|
|
191
|
+
): Pick<ConfigMapping<bigint | undefined>, 'parseEnv' | 'defaultValue'> {
|
|
175
192
|
return {
|
|
176
193
|
parseEnv: (val: string) => {
|
|
177
|
-
if (val === '') {
|
|
178
|
-
return defaultVal;
|
|
179
|
-
}
|
|
180
194
|
// Handle scientific notation (e.g. "1e+23", "2E23") which BigInt() doesn't accept directly.
|
|
181
195
|
// We parse it losslessly using bigint arithmetic instead of going through float64.
|
|
182
196
|
if (/[eE]/.test(val)) {
|
|
@@ -200,32 +214,31 @@ export function bigintConfigHelper(defaultVal?: bigint): Pick<ConfigMapping, 'pa
|
|
|
200
214
|
|
|
201
215
|
/**
|
|
202
216
|
* Generates parseEnv for an optional numerical config value.
|
|
217
|
+
* Empty strings are already handled by getValueFromEnvWithFallback.
|
|
203
218
|
*/
|
|
204
|
-
export function optionalNumberConfigHelper(): Pick<ConfigMapping
|
|
219
|
+
export function optionalNumberConfigHelper(): Pick<ConfigMapping<number>, 'parseEnv'> {
|
|
205
220
|
return {
|
|
206
|
-
parseEnv: (val: string
|
|
207
|
-
if (val !== undefined && val.length > 0) {
|
|
208
|
-
const parsedValue = parseInt(val);
|
|
209
|
-
return Number.isSafeInteger(parsedValue) ? parsedValue : undefined;
|
|
210
|
-
}
|
|
211
|
-
return undefined;
|
|
212
|
-
},
|
|
221
|
+
parseEnv: (val: string) => parseSafeInteger(val),
|
|
213
222
|
};
|
|
214
223
|
}
|
|
215
224
|
|
|
216
225
|
/** Generates parseEnv for an enum-like config value. */
|
|
226
|
+
export function enumConfigHelper<T extends string>(
|
|
227
|
+
values: T[],
|
|
228
|
+
defaultValue: NoInfer<T>,
|
|
229
|
+
): Pick<ConfigMapping<T>, 'parseEnv' | 'defaultValue'>;
|
|
230
|
+
export function enumConfigHelper<T extends string>(
|
|
231
|
+
values: T[],
|
|
232
|
+
): Pick<ConfigMapping<T | undefined>, 'parseEnv' | 'defaultValue'>;
|
|
217
233
|
export function enumConfigHelper<T extends string>(
|
|
218
234
|
values: T[],
|
|
219
235
|
defaultValue?: NoInfer<T>,
|
|
220
|
-
): Pick<ConfigMapping
|
|
236
|
+
): Pick<ConfigMapping<T | undefined>, 'parseEnv' | 'defaultValue'> {
|
|
221
237
|
return {
|
|
222
238
|
parseEnv: (val: string) => {
|
|
223
|
-
const sanitizedVal =
|
|
224
|
-
if (values.
|
|
225
|
-
return
|
|
226
|
-
}
|
|
227
|
-
if (!val && defaultValue) {
|
|
228
|
-
return defaultValue;
|
|
239
|
+
const sanitizedVal = val.trim().toLowerCase();
|
|
240
|
+
if (values.some(v => v.toLowerCase() === sanitizedVal)) {
|
|
241
|
+
return values.find(v => v.toLowerCase() === sanitizedVal)!;
|
|
229
242
|
}
|
|
230
243
|
throw new Error(`Invalid config value '${val}' (must be one of ${values.join(', ')})`);
|
|
231
244
|
},
|
|
@@ -240,7 +253,9 @@ export function enumConfigHelper<T extends string>(
|
|
|
240
253
|
*/
|
|
241
254
|
export function booleanConfigHelper(
|
|
242
255
|
defaultVal = false,
|
|
243
|
-
): Required<
|
|
256
|
+
): Required<
|
|
257
|
+
Pick<ConfigMapping<boolean>, 'parseEnv' | 'defaultValue' | 'isBoolean'> & { parseVal: (val: string) => boolean }
|
|
258
|
+
> {
|
|
244
259
|
const parse = (val: string | boolean) => (typeof val === 'boolean' ? val : parseBooleanEnv(val));
|
|
245
260
|
return {
|
|
246
261
|
parseEnv: parse,
|
|
@@ -250,116 +265,122 @@ export function booleanConfigHelper(
|
|
|
250
265
|
};
|
|
251
266
|
}
|
|
252
267
|
|
|
253
|
-
export function secretValueConfigHelper<T>(parse: (val: string | undefined) => T):
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
268
|
+
export function secretValueConfigHelper<T>(parse: (val: string | undefined) => T): Pick<
|
|
269
|
+
ConfigMapping<SecretValue<T>>,
|
|
270
|
+
'parseEnv' | 'defaultValue'
|
|
271
|
+
> & {
|
|
272
|
+
parseVal: (val: string) => SecretValue<T>;
|
|
273
|
+
} {
|
|
258
274
|
const wrap = (val: string) => new SecretValue(parse(val));
|
|
259
275
|
return {
|
|
260
276
|
parseEnv: wrap,
|
|
261
277
|
parseVal: wrap,
|
|
262
278
|
defaultValue: new SecretValue(parse(undefined)),
|
|
263
|
-
isBoolean: true,
|
|
264
279
|
};
|
|
265
280
|
}
|
|
266
281
|
|
|
267
282
|
export { parseBooleanEnv } from './parse-env.js';
|
|
268
283
|
|
|
269
|
-
export function secretStringConfigHelper():
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
export function secretStringConfigHelper(defaultValue: string):
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
export function secretStringConfigHelper(defaultValue?: string):
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
+
export function secretStringConfigHelper(): {
|
|
285
|
+
parseEnv: (val: string) => SecretValue<string>;
|
|
286
|
+
parseVal: (val: string) => SecretValue<string>;
|
|
287
|
+
defaultValue: undefined;
|
|
288
|
+
};
|
|
289
|
+
export function secretStringConfigHelper(defaultValue: string): {
|
|
290
|
+
parseEnv: (val: string) => SecretValue<string>;
|
|
291
|
+
parseVal: (val: string) => SecretValue<string>;
|
|
292
|
+
defaultValue: SecretValue<string>;
|
|
293
|
+
};
|
|
294
|
+
export function secretStringConfigHelper(defaultValue?: string): {
|
|
295
|
+
parseEnv: (val: string) => SecretValue<string>;
|
|
296
|
+
parseVal: (val: string) => SecretValue<string>;
|
|
297
|
+
defaultValue: SecretValue<string> | undefined;
|
|
298
|
+
} {
|
|
284
299
|
const parse = (val: string) => new SecretValue(val);
|
|
285
300
|
return {
|
|
286
301
|
parseEnv: parse,
|
|
287
302
|
parseVal: parse,
|
|
288
303
|
defaultValue: defaultValue !== undefined ? new SecretValue(defaultValue) : undefined,
|
|
289
|
-
isBoolean: true,
|
|
290
304
|
};
|
|
291
305
|
}
|
|
292
306
|
|
|
293
|
-
export function secretFrConfigHelper():
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
export function secretFrConfigHelper(defaultValue: Fr):
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
export function secretFrConfigHelper(defaultValue?: Fr):
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
307
|
+
export function secretFrConfigHelper(): {
|
|
308
|
+
parseEnv: (val: string) => SecretValue<Fr>;
|
|
309
|
+
parseVal: (val: string) => SecretValue<Fr>;
|
|
310
|
+
defaultValue: undefined;
|
|
311
|
+
};
|
|
312
|
+
export function secretFrConfigHelper(defaultValue: Fr): {
|
|
313
|
+
parseEnv: (val: string) => SecretValue<Fr>;
|
|
314
|
+
parseVal: (val: string) => SecretValue<Fr>;
|
|
315
|
+
defaultValue: SecretValue<Fr>;
|
|
316
|
+
};
|
|
317
|
+
export function secretFrConfigHelper(defaultValue?: Fr): {
|
|
318
|
+
parseEnv: (val: string) => SecretValue<Fr>;
|
|
319
|
+
parseVal: (val: string) => SecretValue<Fr>;
|
|
320
|
+
defaultValue: SecretValue<Fr> | undefined;
|
|
321
|
+
} {
|
|
308
322
|
const parse = (val: string) => new SecretValue(Fr.fromHexString(val));
|
|
309
323
|
return {
|
|
310
324
|
parseEnv: parse,
|
|
311
325
|
parseVal: parse,
|
|
312
326
|
defaultValue: defaultValue !== undefined ? new SecretValue(defaultValue) : undefined,
|
|
313
|
-
isBoolean: true,
|
|
314
327
|
};
|
|
315
328
|
}
|
|
316
329
|
|
|
317
|
-
export function secretFqConfigHelper(
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
export function secretFqConfigHelper():
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
export function secretFqConfigHelper(defaultValue?: Fq):
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
330
|
+
export function secretFqConfigHelper(): {
|
|
331
|
+
parseEnv: (val: string) => SecretValue<Fq>;
|
|
332
|
+
parseVal: (val: string) => SecretValue<Fq>;
|
|
333
|
+
defaultValue: undefined;
|
|
334
|
+
};
|
|
335
|
+
export function secretFqConfigHelper(defaultValue: Fq): {
|
|
336
|
+
parseEnv: (val: string) => SecretValue<Fq>;
|
|
337
|
+
parseVal: (val: string) => SecretValue<Fq>;
|
|
338
|
+
defaultValue: SecretValue<Fq>;
|
|
339
|
+
};
|
|
340
|
+
export function secretFqConfigHelper(defaultValue?: Fq): {
|
|
341
|
+
parseEnv: (val: string) => SecretValue<Fq>;
|
|
342
|
+
parseVal: (val: string) => SecretValue<Fq>;
|
|
343
|
+
defaultValue: SecretValue<Fq> | undefined;
|
|
344
|
+
} {
|
|
332
345
|
const parse = (val: string) => new SecretValue(Fq.fromHexString(val));
|
|
333
346
|
return {
|
|
334
347
|
parseEnv: parse,
|
|
335
348
|
parseVal: parse,
|
|
336
|
-
defaultValue:
|
|
337
|
-
isBoolean: true,
|
|
349
|
+
defaultValue: defaultValue !== undefined ? new SecretValue(defaultValue) : undefined,
|
|
338
350
|
};
|
|
339
351
|
}
|
|
340
352
|
|
|
341
353
|
/**
|
|
342
|
-
*
|
|
343
|
-
*
|
|
354
|
+
* Parses a string into a safe integer, throwing if the value is numeric but not an integer.
|
|
355
|
+
*
|
|
356
|
+
* Unlike `parseInt`, this does not silently truncate decimals: `'0.8'` throws rather than
|
|
357
|
+
* becoming `0`. A fractional value indicates the caller intended a non-integer where only
|
|
358
|
+
* integers are supported (use `floatConfigHelper`/`percentageConfigHelper` for those).
|
|
344
359
|
* @param value - The string value to parse
|
|
345
|
-
* @
|
|
346
|
-
* @returns Either parsed value or default value
|
|
360
|
+
* @returns The parsed integer value
|
|
347
361
|
*/
|
|
348
|
-
function
|
|
349
|
-
const parsedValue =
|
|
350
|
-
|
|
362
|
+
function parseSafeInteger(value: string): number {
|
|
363
|
+
const parsedValue = parseFloat(value);
|
|
364
|
+
if (!Number.isSafeInteger(parsedValue)) {
|
|
365
|
+
throw new Error(`Invalid integer config value '${value}'; expected a whole number`);
|
|
366
|
+
}
|
|
367
|
+
return parsedValue;
|
|
351
368
|
}
|
|
352
369
|
|
|
353
370
|
/**
|
|
354
|
-
*
|
|
355
|
-
*
|
|
371
|
+
* Parses a string into a finite floating-point number, throwing if the value is not a finite number.
|
|
372
|
+
*
|
|
373
|
+
* Invalid input (e.g. `'abc'`, or an overflow to `Infinity`) throws rather than being silently
|
|
374
|
+
* swallowed, so a misconfigured value fails loudly instead of falling back to the config default.
|
|
356
375
|
* @param value - The string value to parse
|
|
357
|
-
* @
|
|
358
|
-
* @returns Either parsed value or default value
|
|
376
|
+
* @returns The parsed number
|
|
359
377
|
*/
|
|
360
|
-
function
|
|
378
|
+
function parseFiniteNumber(value: string): number {
|
|
361
379
|
const parsedValue = parseFloat(value);
|
|
362
|
-
|
|
380
|
+
if (!Number.isFinite(parsedValue)) {
|
|
381
|
+
throw new Error(`Invalid number config value '${value}'`);
|
|
382
|
+
}
|
|
383
|
+
return parsedValue;
|
|
363
384
|
}
|
|
364
385
|
|
|
365
386
|
/**
|