@aztec/foundation 0.47.1 → 0.48.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.
Files changed (78) hide show
  1. package/dest/config/env_var.d.ts +2 -0
  2. package/dest/config/env_var.d.ts.map +1 -0
  3. package/dest/config/env_var.js +2 -0
  4. package/dest/config/index.d.ts +53 -0
  5. package/dest/config/index.d.ts.map +1 -0
  6. package/dest/config/index.js +99 -0
  7. package/dest/crypto/pedersen/pedersen.wasm.d.ts +1 -1
  8. package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -1
  9. package/dest/crypto/pedersen/pedersen.wasm.js +3 -3
  10. package/dest/crypto/poseidon/index.d.ts +7 -0
  11. package/dest/crypto/poseidon/index.d.ts.map +1 -1
  12. package/dest/crypto/poseidon/index.js +14 -1
  13. package/dest/fields/fields.js +2 -2
  14. package/dest/fields/point.d.ts +0 -6
  15. package/dest/fields/point.d.ts.map +1 -1
  16. package/dest/fields/point.js +1 -13
  17. package/dest/hash/index.d.ts +83 -0
  18. package/dest/hash/index.d.ts.map +1 -0
  19. package/dest/hash/index.js +110 -0
  20. package/dest/index.d.ts +3 -1
  21. package/dest/index.d.ts.map +1 -1
  22. package/dest/index.js +4 -2
  23. package/dest/noir/noir_package_config.d.ts +4 -4
  24. package/dest/promise/running-promise.d.ts +5 -0
  25. package/dest/promise/running-promise.d.ts.map +1 -1
  26. package/dest/promise/running-promise.js +8 -1
  27. package/dest/{fifo/memory_fifo.d.ts → queue/base_memory_queue.d.ts} +8 -8
  28. package/dest/queue/base_memory_queue.d.ts.map +1 -0
  29. package/dest/{fifo/memory_fifo.js → queue/base_memory_queue.js} +5 -11
  30. package/dest/queue/bounded_serial_queue.d.ts.map +1 -0
  31. package/dest/{fifo → queue}/bounded_serial_queue.js +1 -1
  32. package/dest/queue/fifo_memory_queue.d.ts +21 -0
  33. package/dest/queue/fifo_memory_queue.d.ts.map +1 -0
  34. package/dest/queue/fifo_memory_queue.js +33 -0
  35. package/dest/queue/index.d.ts +6 -0
  36. package/dest/queue/index.d.ts.map +1 -0
  37. package/dest/queue/index.js +6 -0
  38. package/dest/queue/priority_memory_queue.d.ts +13 -0
  39. package/dest/queue/priority_memory_queue.d.ts.map +1 -0
  40. package/dest/queue/priority_memory_queue.js +17 -0
  41. package/dest/queue/priority_queue.d.ts +14 -0
  42. package/dest/queue/priority_queue.d.ts.map +1 -0
  43. package/dest/queue/priority_queue.js +29 -0
  44. package/dest/queue/semaphore.d.ts.map +1 -0
  45. package/dest/{fifo → queue}/semaphore.js +3 -3
  46. package/dest/queue/serial_queue.d.ts.map +1 -0
  47. package/dest/{fifo → queue}/serial_queue.js +3 -3
  48. package/dest/wasm/wasm_module.d.ts.map +1 -1
  49. package/dest/wasm/wasm_module.js +3 -3
  50. package/package.json +5 -3
  51. package/src/config/env_var.ts +98 -0
  52. package/src/config/index.ts +132 -0
  53. package/src/crypto/pedersen/pedersen.wasm.ts +5 -2
  54. package/src/crypto/poseidon/index.ts +20 -0
  55. package/src/fields/fields.ts +1 -1
  56. package/src/fields/point.ts +0 -13
  57. package/src/hash/index.ts +123 -0
  58. package/src/index.ts +3 -1
  59. package/src/promise/running-promise.ts +8 -0
  60. package/src/{fifo/memory_fifo.ts → queue/base_memory_queue.ts} +11 -10
  61. package/src/queue/fifo_memory_queue.ts +39 -0
  62. package/src/{fifo → queue}/index.ts +2 -1
  63. package/src/queue/priority_memory_queue.ts +20 -0
  64. package/src/queue/priority_queue.ts +34 -0
  65. package/src/{fifo → queue}/semaphore.ts +2 -2
  66. package/src/{fifo → queue}/serial_queue.ts +2 -2
  67. package/src/wasm/wasm_module.ts +2 -2
  68. package/dest/fifo/bounded_serial_queue.d.ts.map +0 -1
  69. package/dest/fifo/index.d.ts +0 -5
  70. package/dest/fifo/index.d.ts.map +0 -1
  71. package/dest/fifo/index.js +0 -5
  72. package/dest/fifo/memory_fifo.d.ts.map +0 -1
  73. package/dest/fifo/semaphore.d.ts.map +0 -1
  74. package/dest/fifo/serial_queue.d.ts.map +0 -1
  75. /package/dest/{fifo → queue}/bounded_serial_queue.d.ts +0 -0
  76. /package/dest/{fifo → queue}/semaphore.d.ts +0 -0
  77. /package/dest/{fifo → queue}/serial_queue.d.ts +0 -0
  78. /package/src/{fifo → queue}/bounded_serial_queue.ts +0 -0
@@ -1,7 +1,7 @@
1
1
  import { Buffer } from 'buffer';
2
2
  import { randomBytes } from '../crypto/index.js';
3
- import { MemoryFifo } from '../fifo/index.js';
4
3
  import { createDebugOnlyLogger } from '../log/index.js';
4
+ import { FifoMemoryQueue } from '../queue/index.js';
5
5
  import { getEmptyWasiSdk } from './empty_wasi_sdk.js';
6
6
  /**
7
7
  * WasmModule:
@@ -21,7 +21,7 @@ export class WasmModule {
21
21
  constructor(module, importFn, loggerName = 'aztec:wasm') {
22
22
  this.module = module;
23
23
  this.importFn = importFn;
24
- this.mutexQ = new MemoryFifo();
24
+ this.mutexQ = new FifoMemoryQueue();
25
25
  this.debug = createDebugOnlyLogger(loggerName);
26
26
  this.mutexQ.put(true);
27
27
  }
@@ -203,4 +203,4 @@ export class WasmModule {
203
203
  this.mutexQ.put(true);
204
204
  }
205
205
  }
206
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FzbV9tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2FzbS93YXNtX21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWhDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFjLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBZ0N0RDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxPQUFPLFVBQVU7SUFPckI7Ozs7O09BS0c7SUFDSCxZQUNVLE1BQW1DLEVBQ25DLFFBQXFDLEVBQzdDLFVBQVUsR0FBRyxZQUFZO1FBRmpCLFdBQU0sR0FBTixNQUFNLENBQTZCO1FBQ25DLGFBQVEsR0FBUixRQUFRLENBQTZCO1FBWHZDLFdBQU0sR0FBRyxJQUFJLFVBQVUsRUFBVyxDQUFDO1FBY3pDLElBQUksQ0FBQyxLQUFLLEdBQUcscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNEOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsRUFBRSxPQUFPLEdBQUcsSUFBSSxFQUFFLGFBQTRCLGFBQWE7UUFDdkYsSUFBSSxDQUFDLEtBQUssQ0FDUixnQkFBZ0IsT0FBTyxXQUFXLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENB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
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FzbV9tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2FzbS93YXNtX21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWhDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQWMscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBZ0N0RDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxPQUFPLFVBQVU7SUFPckI7Ozs7O09BS0c7SUFDSCxZQUNVLE1BQW1DLEVBQ25DLFFBQXFDLEVBQzdDLFVBQVUsR0FBRyxZQUFZO1FBRmpCLFdBQU0sR0FBTixNQUFNLENBQTZCO1FBQ25DLGFBQVEsR0FBUixRQUFRLENBQTZCO1FBWHZDLFdBQU0sR0FBRyxJQUFJLGVBQWUsRUFBVyxDQUFDO1FBYzlDLElBQUksQ0FBQyxLQUFLLEdBQUcscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNEOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsRUFBRSxPQUFPLEdBQUcsSUFBSSxFQUFFLGFBQTRCLGFBQWE7UUFDdkYsSUFBSSxDQUFDLEtBQUssQ0FDUixnQkFBZ0IsT0FBTyxXQUFXLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/foundation",
3
- "version": "0.47.1",
3
+ "version": "0.48.0",
4
4
  "packageManager": "yarn@3.4.1",
5
5
  "type": "module",
6
6
  "main": "./dest/index.js",
@@ -13,11 +13,13 @@
13
13
  "./async-map": "./dest/async-map/index.js",
14
14
  "./aztec-address": "./dest/aztec-address/index.js",
15
15
  "./collection": "./dest/collection/index.js",
16
+ "./config": "./dest/config/index.js",
16
17
  "./crypto": "./dest/crypto/index.js",
17
18
  "./error": "./dest/error/index.js",
18
19
  "./eth-address": "./dest/eth-address/index.js",
19
- "./fifo": "./dest/fifo/index.js",
20
+ "./queue": "./dest/queue/index.js",
20
21
  "./fs": "./dest/fs/index.js",
22
+ "./hash": "./dest/hash/index.js",
21
23
  "./json-rpc": "./dest/json-rpc/index.js",
22
24
  "./json-rpc/server": "./dest/json-rpc/server/index.js",
23
25
  "./json-rpc/client": "./dest/json-rpc/client/index.js",
@@ -88,7 +90,7 @@
88
90
  ]
89
91
  },
90
92
  "dependencies": {
91
- "@aztec/bb.js": "0.47.1",
93
+ "@aztec/bb.js": "0.48.0",
92
94
  "@koa/cors": "^5.0.0",
93
95
  "@noble/curves": "^1.2.0",
94
96
  "bn.js": "^5.2.1",
@@ -0,0 +1,98 @@
1
+ export type EnvVar =
2
+ | 'TEST_ACCOUNTS'
3
+ | 'ENABLE_GAS'
4
+ | 'API_PREFIX'
5
+ | 'ETHEREUM_HOST'
6
+ | 'L1_CHAIN_ID'
7
+ | 'MNEMONIC'
8
+ | 'ROLLUP_CONTRACT_ADDRESS'
9
+ | 'REGISTRY_CONTRACT_ADDRESS'
10
+ | 'INBOX_CONTRACT_ADDRESS'
11
+ | 'OUTBOX_CONTRACT_ADDRESS'
12
+ | 'AVAILABILITY_ORACLE_CONTRACT_ADDRESS'
13
+ | 'FEE_JUICE_CONTRACT_ADDRESS'
14
+ | 'FEE_JUICE_PORTAL_CONTRACT_ADDRESS'
15
+ | 'ARCHIVER_URL'
16
+ | 'DEPLOY_AZTEC_CONTRACTS'
17
+ | 'L1_PRIVATE_KEY'
18
+ | 'L2_QUEUE_SIZE'
19
+ | 'WS_BLOCK_CHECK_INTERVAL_MS'
20
+ | 'P2P_ENABLED'
21
+ | 'P2P_BLOCK_CHECK_INTERVAL_MS'
22
+ | 'P2P_PEER_CHECK_INTERVAL_MS'
23
+ | 'P2P_L2_QUEUE_SIZE'
24
+ | 'TCP_LISTEN_ADDR'
25
+ | 'UDP_LISTEN_ADDR'
26
+ | 'P2P_TCP_ANNOUNCE_ADDR'
27
+ | 'P2P_UDP_ANNOUNCE_ADDR'
28
+ | 'PEER_ID_PRIVATE_KEY'
29
+ | 'BOOTSTRAP_NODES'
30
+ | 'P2P_TX_PROTOCOL'
31
+ | 'P2P_MIN_PEERS'
32
+ | 'P2P_MAX_PEERS'
33
+ | 'DATA_DIRECTORY'
34
+ | 'TX_GOSSIP_VERSION'
35
+ | 'P2P_QUERY_FOR_IP'
36
+ | 'P2P_TX_POOL_KEEP_PROVEN_FOR'
37
+ | 'TELEMETRY'
38
+ | 'OTEL_EXPORTER_OTLP_ENDPOINT'
39
+ | 'OTEL_SERVICE_NAME'
40
+ | 'NETWORK_NAME'
41
+ | 'NETWORK'
42
+ | 'API_KEY'
43
+ | 'AZTEC_NODE_URL'
44
+ | 'ARCHIVER_POLLING_INTERVAL_MS'
45
+ | 'ARCHIVER_VIEM_POLLING_INTERVAL_MS'
46
+ | 'ARCHIVER_MAX_LOGS'
47
+ | 'SEQ_TX_POLLING_INTERVAL_MS'
48
+ | 'SEQ_MAX_TX_PER_BLOCK'
49
+ | 'SEQ_MIN_TX_PER_BLOCK'
50
+ | 'SEQ_MIN_SECONDS_BETWEEN_BLOCKS'
51
+ | 'SEQ_MAX_SECONDS_BETWEEN_BLOCKS'
52
+ | 'COINBASE'
53
+ | 'FEE_RECIPIENT'
54
+ | 'ACVM_WORKING_DIRECTORY'
55
+ | 'ACVM_BINARY_PATH'
56
+ | 'SEQ_ALLOWED_SETUP_FN'
57
+ | 'SEQ_ALLOWED_TEARDOWN_FN'
58
+ | 'SEQ_MAX_BLOCK_SIZE_IN_BYTES'
59
+ | 'ENFORCE_FEES'
60
+ | 'SEQ_SKIP_SUBMIT_PROOFS'
61
+ | 'SEQ_PUBLISHER_PRIVATE_KEY'
62
+ | 'SEQ_REQUIRED_CONFIRMATIONS'
63
+ | 'SEQ_PUBLISH_RETRY_INTERVAL_MS'
64
+ | 'VERSION'
65
+ | 'SEQ_DISABLED'
66
+ | 'PROVER_DISABLED'
67
+ | 'PROVER_REAL_PROOFS'
68
+ | 'PROVER_AGENT_ENABLED'
69
+ | 'PROVER_AGENT_POLL_INTERVAL_MS'
70
+ | 'PROVER_AGENT_CONCURRENCY'
71
+ | 'PROVER_JOB_TIMEOUT_MS'
72
+ | 'PROVER_JOB_POLL_INTERVAL_MS'
73
+ | 'PROVER_ID'
74
+ | 'WS_L2_BLOCK_QUEUE_SIZE'
75
+ | 'WS_PROVEN_BLOCKS_ONLY'
76
+ | 'PROVER_PUBLISH_RETRY_INTERVAL_MS'
77
+ | 'PROVER_PUBLISHER_PRIVATE_KEY'
78
+ | 'PROVER_REQUIRED_CONFIRMATIONS'
79
+ | 'PROVER_TEST_DELAY_MS'
80
+ | 'TX_PROVIDER_NODE_URL'
81
+ | 'TXE_PORT'
82
+ | 'BOT_PXE_URL'
83
+ | 'BOT_PRIVATE_KEY'
84
+ | 'BOT_RECIPIENT_ENCRYPTION_SECRET'
85
+ | 'BOT_TOKEN_SALT'
86
+ | 'BOT_TX_INTERVAL_SECONDS'
87
+ | 'BOT_PRIVATE_TRANSFERS_PER_TX'
88
+ | 'BOT_PUBLIC_TRANSFERS_PER_TX'
89
+ | 'BOT_FEE_PAYMENT_METHOD'
90
+ | 'BOT_NO_START'
91
+ | 'BOT_TX_MINED_WAIT_SECONDS'
92
+ | 'BOT_NO_WAIT_FOR_TRANSFERS'
93
+ | 'PXE_BLOCK_POLLING_INTERVAL_MS'
94
+ | 'PXE_L2_STARTING_BLOCK'
95
+ | 'PXE_DATA_DIRECTORY'
96
+ | 'BB_BINARY_PATH'
97
+ | 'BB_WORKING_DIRECTORY'
98
+ | 'PXE_PROVER_ENABLED';
@@ -0,0 +1,132 @@
1
+ import { type EnvVar } from './env_var.js';
2
+
3
+ export { EnvVar } from './env_var.js';
4
+
5
+ export interface ConfigMapping {
6
+ env?: EnvVar;
7
+ parseEnv?: (val: string) => any;
8
+ defaultValue?: any;
9
+ printDefault?: (val: any) => string;
10
+ description: string;
11
+ isBoolean?: boolean;
12
+ }
13
+
14
+ export function isBooleanConfigValue<T>(obj: T, key: keyof T): boolean {
15
+ return typeof obj[key] === 'boolean';
16
+ }
17
+
18
+ export type ConfigMappingsType<T> = Record<keyof T, ConfigMapping>;
19
+
20
+ export function getConfigFromMappings<T>(configMappings: ConfigMappingsType<T>): T {
21
+ const config = {} as T;
22
+
23
+ for (const key in configMappings) {
24
+ if (configMappings[key]) {
25
+ const { env, parseEnv, defaultValue: def } = configMappings[key];
26
+ // Special case for L1 contract addresses which is an object of config values
27
+ if (key === 'l1Contracts' && def) {
28
+ (config as any)[key] = getConfigFromMappings(def);
29
+ } else {
30
+ const val = env ? process.env[env] : undefined;
31
+ if (val !== undefined) {
32
+ (config as any)[key] = parseEnv ? parseEnv(val) : val;
33
+ } else if (def !== undefined) {
34
+ (config as any)[key] = def;
35
+ }
36
+ }
37
+ }
38
+ }
39
+
40
+ return config;
41
+ }
42
+
43
+ /**
44
+ * Filters out a service's config mappings to exclude certain keys.
45
+ * @param configMappings - The service's config mappings
46
+ * @param keysToFilter - The keys to filter out
47
+ * @returns The filtered config mappings
48
+ */
49
+ export function filterConfigMappings<T, K extends keyof T>(
50
+ configMappings: ConfigMappingsType<T>,
51
+ keysToFilter: K[],
52
+ ): ConfigMappingsType<Omit<T, K>> {
53
+ return Object.fromEntries(
54
+ Object.entries(configMappings).filter(([key]) => !keysToFilter.includes(key as K)),
55
+ ) as ConfigMappingsType<Omit<T, K>>;
56
+ }
57
+
58
+ /**
59
+ * Generates parseEnv and default values for a numerical config value.
60
+ * @param defaultVal - The default numerical value to use if the environment variable is not set or is invalid
61
+ * @returns Object with parseEnv and default values for a numerical config value
62
+ */
63
+ export function numberConfigHelper(defaultVal: number): Pick<ConfigMapping, 'parseEnv' | 'defaultValue'> {
64
+ return {
65
+ parseEnv: (val: string) => safeParseNumber(val, defaultVal),
66
+ defaultValue: defaultVal,
67
+ };
68
+ }
69
+
70
+ /**
71
+ * Generates parseEnv and default values for a boolean config value.
72
+ * @param defaultVal - The default value to use if the environment variable is not set or is invalid
73
+ * @returns Object with parseEnv and default values for a boolean config value
74
+ */
75
+ export function booleanConfigHelper(
76
+ defaultVal = false,
77
+ ): Required<Pick<ConfigMapping, 'parseEnv' | 'defaultValue' | 'isBoolean'> & { parseVal: (val: string) => boolean }> {
78
+ const parse = (val: string | boolean) => (typeof val === 'boolean' ? val : ['1', 'true', 'TRUE'].includes(val));
79
+ return {
80
+ parseEnv: parse,
81
+ parseVal: parse,
82
+ defaultValue: defaultVal,
83
+ isBoolean: true,
84
+ };
85
+ }
86
+
87
+ /**
88
+ * Safely parses a number from a string.
89
+ * If the value is not a number or is not a safe integer, the default value is returned.
90
+ * @param value - The string value to parse
91
+ * @param defaultValue - The default value to return
92
+ * @returns Either parsed value or default value
93
+ */
94
+ function safeParseNumber(value: string, defaultValue: number): number {
95
+ const parsedValue = parseInt(value, 10);
96
+ return Number.isSafeInteger(parsedValue) ? parsedValue : defaultValue;
97
+ }
98
+
99
+ /**
100
+ * Picks specific keys from the given configuration mappings.
101
+ *
102
+ * @template T - The type of the full configuration object.
103
+ * @template K - The keys to pick from the configuration object.
104
+ * @param {ConfigMappingsType<T>} configMappings - The full configuration mappings object.
105
+ * @param {K[]} keys - The keys to pick from the configuration mappings.
106
+ * @returns {ConfigMappingsType<Pick<T, K>>} - A new configuration mappings object containing only the specified keys.
107
+ */
108
+ export function pickConfigMappings<T, K extends keyof T>(
109
+ configMappings: ConfigMappingsType<T>,
110
+ keys: K[],
111
+ ): ConfigMappingsType<Pick<T, K>> {
112
+ return Object.fromEntries(keys.map(key => [key, configMappings[key]])) as ConfigMappingsType<Pick<T, K>>;
113
+ }
114
+
115
+ /**
116
+ * Extracts the default configuration values from the given configuration mappings.
117
+ *
118
+ * @template T - The type of the configuration object.
119
+ * @param {ConfigMappingsType<T>} configMappings - The configuration mappings object.
120
+ * @returns {T} - The configuration object with default values.
121
+ */
122
+ export function getDefaultConfig<T>(configMappings: ConfigMappingsType<T>): T {
123
+ const defaultConfig = {} as T;
124
+
125
+ for (const key in configMappings) {
126
+ if (configMappings[key] && configMappings[key].defaultValue !== undefined) {
127
+ (defaultConfig as any)[key] = configMappings[key].defaultValue;
128
+ }
129
+ }
130
+
131
+ return defaultConfig;
132
+ }
@@ -7,12 +7,15 @@ import { type Fieldable, serializeToFields } from '../../serialize/serialize.js'
7
7
  * Create a pedersen commitment (point) from an array of input fields.
8
8
  * Left pads any inputs less than 32 bytes.
9
9
  */
10
- export function pedersenCommit(input: Buffer[]) {
10
+ export function pedersenCommit(input: Buffer[], offset = 0) {
11
11
  if (!input.every(i => i.length <= 32)) {
12
12
  throw new Error('All Pedersen Commit input buffers must be <= 32 bytes.');
13
13
  }
14
14
  input = input.map(i => (i.length < 32 ? Buffer.concat([Buffer.alloc(32 - i.length, 0), i]) : i));
15
- const point = BarretenbergSync.getSingleton().pedersenCommit(input.map(i => new FrBarretenberg(i)));
15
+ const point = BarretenbergSync.getSingleton().pedersenCommit(
16
+ input.map(i => new FrBarretenberg(i)),
17
+ offset,
18
+ );
16
19
  // toBuffer returns Uint8Arrays (browser/worker-boundary friendly).
17
20
  // TODO: rename toTypedArray()?
18
21
  return [Buffer.from(point.x.toBuffer()), Buffer.from(point.y.toBuffer())];
@@ -21,6 +21,26 @@ export function poseidon2Hash(input: Fieldable[]): Fr {
21
21
  );
22
22
  }
23
23
 
24
+ /**
25
+ * Create a poseidon hash (field) from an array of input fields and a domain separator.
26
+ * @param input - The input fields to hash.
27
+ * @param separator - The domain separator.
28
+ * @returns The poseidon hash.
29
+ */
30
+ export function poseidon2HashWithSeparator(input: Fieldable[], separator: number): Fr {
31
+ const inputFields = serializeToFields(input);
32
+ inputFields.unshift(new Fr(separator));
33
+ return Fr.fromBuffer(
34
+ Buffer.from(
35
+ BarretenbergSync.getSingleton()
36
+ .poseidon2Hash(
37
+ inputFields.map(i => new FrBarretenberg(i.toBuffer())), // TODO(#4189): remove this stupid conversion
38
+ )
39
+ .toBuffer(),
40
+ ),
41
+ );
42
+ }
43
+
24
44
  /**
25
45
  * Runs a Poseidon2 permutation.
26
46
  * @param input the input state. Expected to be of size 4.
@@ -433,7 +433,7 @@ export function reduceFn<TInput, TField extends BaseField>(fn: (input: TInput) =
433
433
  }
434
434
 
435
435
  /** If we are in test mode, we register a special equality for fields. */
436
- if (process.env.NODE_ENV === 'test') {
436
+ if (process.env.NODE_ENV === 'test' && typeof expect !== 'undefined') {
437
437
  const areFieldsEqual = (a: unknown, b: unknown): boolean | undefined => {
438
438
  const isAField = a instanceof BaseField;
439
439
  const isBField = b instanceof BaseField;
@@ -267,19 +267,6 @@ export class Point {
267
267
  }
268
268
  }
269
269
 
270
- /**
271
- * Does this object look like a point?
272
- * @param obj - Object to test if it is a point.
273
- * @returns Whether it looks like a point.
274
- */
275
- export function isPoint(obj: object): obj is Point {
276
- if (!obj) {
277
- return false;
278
- }
279
- const point = obj as Point;
280
- return point.kind === 'point' && point.x !== undefined && point.y !== undefined;
281
- }
282
-
283
270
  export class NotOnCurveError extends Error {
284
271
  constructor(x: Fr) {
285
272
  super('The given x-coordinate is not on the Grumpkin curve: ' + x.toString());
@@ -0,0 +1,123 @@
1
+ import { randomBytes } from '@aztec/foundation/crypto';
2
+ import { BufferReader, deserializeBigInt, serializeBigInt } from '@aztec/foundation/serialize';
3
+
4
+ import { type Fr } from '../fields/fields.js';
5
+
6
+ /**
7
+ * A class representing a hash.
8
+ */
9
+ export class BaseHashType {
10
+ /**
11
+ * The size of the hash in bytes.
12
+ */
13
+ public static SIZE = 32;
14
+
15
+ /**
16
+ * HashType with value zero.
17
+ */
18
+ public static ZERO = new BaseHashType(Buffer.alloc(BaseHashType.SIZE));
19
+
20
+ constructor(
21
+ /**
22
+ * The buffer containing the hash.
23
+ */
24
+ public buffer: Buffer,
25
+ ) {
26
+ if (buffer.length !== BaseHashType.SIZE) {
27
+ throw new Error(`Expected buffer to have length ${BaseHashType.SIZE} but was ${buffer.length}`);
28
+ }
29
+ }
30
+
31
+ /**
32
+ * Returns the raw buffer of the hash.
33
+ * @returns The buffer containing the hash.
34
+ */
35
+ public toBuffer() {
36
+ return this.buffer;
37
+ }
38
+
39
+ /**
40
+ * Creates a HashType from a buffer.
41
+ * @param buffer - The buffer to create from.
42
+ * @returns A new HashType object.
43
+ */
44
+ public static fromBuffer(buffer: Buffer | BufferReader) {
45
+ const reader = BufferReader.asReader(buffer);
46
+ return new BaseHashType(reader.readBytes(BaseHashType.SIZE));
47
+ }
48
+
49
+ /**
50
+ * Checks if this hash and another hash are equal.
51
+ * @param hash - A hash to compare with.
52
+ * @returns True if the hashes are equal, false otherwise.
53
+ */
54
+ public equals(hash: BaseHashType): boolean {
55
+ return this.buffer.equals(hash.buffer);
56
+ }
57
+
58
+ /**
59
+ * Returns true if this hash is zero.
60
+ * @returns True if this hash is zero.
61
+ */
62
+ public isZero(): boolean {
63
+ return this.buffer.equals(Buffer.alloc(32, 0));
64
+ }
65
+
66
+ /**
67
+ * Convert this hash to a hex string.
68
+ * @returns The hex string.
69
+ */
70
+ public toString() {
71
+ return this.buffer.toString('hex');
72
+ }
73
+
74
+ /**
75
+ * Convert this hash to a big int.
76
+ * @returns The big int.
77
+ */
78
+ public toBigInt() {
79
+ return deserializeBigInt(this.buffer, 0, BaseHashType.SIZE).elem;
80
+ }
81
+ /**
82
+ * Creates a tx hash from a bigint.
83
+ * @param hash - The tx hash as a big int.
84
+ * @returns The HashType.
85
+ */
86
+ public static fromBigInt(hash: bigint) {
87
+ return new BaseHashType(serializeBigInt(hash, BaseHashType.SIZE));
88
+ }
89
+ public static fromField(hash: Fr) {
90
+ return new BaseHashType(serializeBigInt(hash.toBigInt()));
91
+ }
92
+
93
+ /**
94
+ * Converts this hash from a buffer of 28 bytes.
95
+ * Verifies the input is 28 bytes.
96
+ * @param buffer - The 28 byte buffer to construct from.
97
+ * @returns A HashType created from the input buffer with 4 bytes 0 padding at the front.
98
+ */
99
+ public static fromBuffer28(buffer: Buffer) {
100
+ if (buffer.length != 28) {
101
+ throw new Error(`Expected HashType input buffer to be 28 bytes`);
102
+ }
103
+ const padded = Buffer.concat([Buffer.alloc(this.SIZE - 28), buffer]);
104
+ return new BaseHashType(padded);
105
+ }
106
+
107
+ /**
108
+ * Converts a string into a HashType object.
109
+ * @param str - The TX hash in string format.
110
+ * @returns A new HashType object.
111
+ */
112
+ public static fromString(str: string): BaseHashType {
113
+ return new BaseHashType(Buffer.from(str, 'hex'));
114
+ }
115
+
116
+ /**
117
+ * Generates a random HashType.
118
+ * @returns A new HashType object.
119
+ */
120
+ public static random(): BaseHashType {
121
+ return new BaseHashType(Buffer.from(randomBytes(BaseHashType.SIZE)));
122
+ }
123
+ }
package/src/index.ts CHANGED
@@ -9,7 +9,7 @@ export * as crypto from './crypto/index.js';
9
9
  export * as errors from './error/index.js';
10
10
  export * as ethAddress from './eth-address/index.js';
11
11
  export * as fields from './fields/index.js';
12
- export * as fifo from './fifo/index.js';
12
+ export * as fifo from './queue/index.js';
13
13
  export * as fs from './fs/index.js';
14
14
  export * as jsonRpc from './json-rpc/index.js';
15
15
  export * as jsonRpcClient from './json-rpc/client/index.js';
@@ -28,3 +28,5 @@ export * as url from './url/index.js';
28
28
  export * as wasm from './wasm/index.js';
29
29
  export * as worker from './worker/index.js';
30
30
  export * as testing from './testing/index.js';
31
+ export * as config from './config/index.js';
32
+ export * as hash from './hash/index.js';
@@ -44,4 +44,12 @@ export class RunningPromise {
44
44
  public isRunning() {
45
45
  return this.running;
46
46
  }
47
+
48
+ /**
49
+ * Updates the polling interval. The new interval will take effect after the next poll.
50
+ * @param pollingIntervalMS The polling interval in milliseconds.
51
+ */
52
+ setPollingIntervalMS(pollingIntervalMS: number) {
53
+ this.pollingIntervalMS = pollingIntervalMS;
54
+ }
47
55
  }
@@ -1,18 +1,19 @@
1
1
  import { TimeoutError } from '../error/index.js';
2
2
  import { createDebugLogger } from '../log/index.js';
3
3
 
4
- /**
5
- * A simple fifo queue. It can grow unbounded. It can have multiple producers and consumers.
6
- * Putting an item onto the queue always succeeds, unless either end() or cancel() has been called in which case
7
- * the item being pushed is simply discarded.
8
- */
9
- export class MemoryFifo<T> {
4
+ export abstract class BaseMemoryQueue<T> {
10
5
  private waiting: ((item: T | null) => void)[] = [];
11
- private items: T[] = [];
12
6
  private flushing = false;
13
7
 
14
8
  constructor(private log = createDebugLogger('aztec:foundation:memory_fifo')) {}
15
9
 
10
+ protected abstract get items(): {
11
+ length: number;
12
+ get(): T | undefined;
13
+ put(item: T): void;
14
+ clear: () => void;
15
+ };
16
+
16
17
  /**
17
18
  * Returns the current number of items in the queue.
18
19
  * The length represents the size of the queue at the time of invocation and may change as new items are added or consumed.
@@ -36,7 +37,7 @@ export class MemoryFifo<T> {
36
37
  */
37
38
  public get(timeoutSec?: number): Promise<T | null> {
38
39
  if (this.items.length) {
39
- return Promise.resolve(this.items.shift()!);
40
+ return Promise.resolve(this.items.get()!);
40
41
  }
41
42
 
42
43
  if (this.items.length === 0 && this.flushing) {
@@ -78,7 +79,7 @@ export class MemoryFifo<T> {
78
79
  this.waiting.shift()!(item);
79
80
  return true;
80
81
  } else {
81
- this.items.push(item);
82
+ this.items.put(item);
82
83
  return true;
83
84
  }
84
85
  }
@@ -100,7 +101,7 @@ export class MemoryFifo<T> {
100
101
  */
101
102
  public cancel() {
102
103
  this.flushing = true;
103
- this.items = [];
104
+ this.items.clear();
104
105
  this.waiting.forEach(resolve => resolve(null));
105
106
  }
106
107
 
@@ -0,0 +1,39 @@
1
+ import { type DebugLogger } from '../log/logger.js';
2
+ import { BaseMemoryQueue } from './base_memory_queue.js';
3
+
4
+ /**
5
+ * A simple fifo queue. It can grow unbounded. It can have multiple producers and consumers.
6
+ * Putting an item onto the queue always succeeds, unless either end() or cancel() has been called in which case
7
+ * the item being pushed is simply discarded.
8
+ */
9
+ export class FifoMemoryQueue<T> extends BaseMemoryQueue<T> {
10
+ private container = new FifoQueue<T>();
11
+
12
+ constructor(log?: DebugLogger) {
13
+ super(log);
14
+ }
15
+
16
+ protected override get items() {
17
+ return this.container;
18
+ }
19
+ }
20
+
21
+ class FifoQueue<T> {
22
+ private items: T[] = [];
23
+
24
+ public put(item: T): void {
25
+ this.items.push(item);
26
+ }
27
+
28
+ public get(): T | undefined {
29
+ return this.items.shift();
30
+ }
31
+
32
+ public get length(): number {
33
+ return this.items.length;
34
+ }
35
+
36
+ public clear() {
37
+ this.items = [];
38
+ }
39
+ }
@@ -1,4 +1,5 @@
1
- export * from './memory_fifo.js';
1
+ export * from './fifo_memory_queue.js';
2
+ export * from './priority_memory_queue.js';
2
3
  export * from './serial_queue.js';
3
4
  export * from './bounded_serial_queue.js';
4
5
  export * from './semaphore.js';
@@ -0,0 +1,20 @@
1
+ import { BaseMemoryQueue } from './base_memory_queue.js';
2
+ import { PriorityQueue } from './priority_queue.js';
3
+
4
+ /**
5
+ * A priority queue. It can grow unbounded. It can have multiple producers and consumers.
6
+ * Putting an item onto the queue always succeeds, unless either end() or cancel() has been called in which case
7
+ * the item being pushed is simply discarded.
8
+ */
9
+ export class PriorityMemoryQueue<T> extends BaseMemoryQueue<T> {
10
+ private container: PriorityQueue<T>;
11
+
12
+ constructor(comparator: (a: T, b: T) => number) {
13
+ super();
14
+ this.container = new PriorityQueue(comparator);
15
+ }
16
+
17
+ protected override get items() {
18
+ return this.container;
19
+ }
20
+ }