@aztec/foundation 0.70.0 → 0.72.1

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 (84) hide show
  1. package/dest/abi/decoder.d.ts +1 -1
  2. package/dest/abi/decoder.d.ts.map +1 -1
  3. package/dest/abi/decoder.js +11 -2
  4. package/dest/abi/encoder.d.ts.map +1 -1
  5. package/dest/abi/encoder.js +12 -2
  6. package/dest/abi/event_selector.d.ts +1 -2
  7. package/dest/abi/event_selector.d.ts.map +1 -1
  8. package/dest/abi/event_selector.js +2 -3
  9. package/dest/abi/function_selector.d.ts +1 -2
  10. package/dest/abi/function_selector.d.ts.map +1 -1
  11. package/dest/abi/function_selector.js +2 -3
  12. package/dest/abi/index.d.ts +1 -0
  13. package/dest/abi/index.d.ts.map +1 -1
  14. package/dest/abi/index.js +2 -1
  15. package/dest/abi/u128.d.ts +13 -0
  16. package/dest/abi/u128.d.ts.map +1 -0
  17. package/dest/abi/u128.js +58 -0
  18. package/dest/abi/utils.d.ts +5 -0
  19. package/dest/abi/utils.d.ts.map +1 -1
  20. package/dest/abi/utils.js +8 -1
  21. package/dest/array/array.d.ts +8 -0
  22. package/dest/array/array.d.ts.map +1 -1
  23. package/dest/array/array.js +13 -1
  24. package/dest/aztec-address/index.d.ts +3 -3
  25. package/dest/aztec-address/index.d.ts.map +1 -1
  26. package/dest/aztec-address/index.js +5 -5
  27. package/dest/collection/array.d.ts +7 -0
  28. package/dest/collection/array.d.ts.map +1 -1
  29. package/dest/collection/array.js +13 -1
  30. package/dest/config/env_var.d.ts +1 -1
  31. package/dest/config/env_var.d.ts.map +1 -1
  32. package/dest/config/index.d.ts +3 -1
  33. package/dest/config/index.d.ts.map +1 -1
  34. package/dest/config/index.js +6 -2
  35. package/dest/fields/fields.d.ts +10 -1
  36. package/dest/fields/fields.d.ts.map +1 -1
  37. package/dest/fields/fields.js +19 -10
  38. package/dest/fields/point.d.ts +4 -4
  39. package/dest/fields/point.d.ts.map +1 -1
  40. package/dest/fields/point.js +5 -5
  41. package/dest/json-rpc/client/fetch.d.ts +2 -2
  42. package/dest/json-rpc/client/fetch.d.ts.map +1 -1
  43. package/dest/json-rpc/client/fetch.js +7 -7
  44. package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -1
  45. package/dest/json-rpc/client/safe_json_rpc_client.js +1 -1
  46. package/dest/json-rpc/server/safe_json_rpc_server.d.ts +17 -5
  47. package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -1
  48. package/dest/json-rpc/server/safe_json_rpc_server.js +16 -9
  49. package/dest/json-rpc/server/telemetry.d.ts +2 -0
  50. package/dest/json-rpc/server/telemetry.d.ts.map +1 -0
  51. package/dest/json-rpc/server/telemetry.js +2 -0
  52. package/dest/log/gcloud-logger-config.d.ts +14 -0
  53. package/dest/log/gcloud-logger-config.d.ts.map +1 -0
  54. package/dest/log/gcloud-logger-config.js +64 -0
  55. package/dest/log/pino-logger.d.ts.map +1 -1
  56. package/dest/log/pino-logger.js +14 -40
  57. package/dest/noir/noir_package_config.d.ts +2 -2
  58. package/dest/testing/files/index.d.ts +1 -1
  59. package/dest/testing/files/index.d.ts.map +1 -1
  60. package/dest/testing/files/index.js +3 -3
  61. package/dest/timer/timeout.js +2 -2
  62. package/package.json +3 -3
  63. package/src/abi/decoder.ts +11 -2
  64. package/src/abi/encoder.ts +11 -1
  65. package/src/abi/event_selector.ts +1 -2
  66. package/src/abi/function_selector.ts +1 -2
  67. package/src/abi/index.ts +1 -0
  68. package/src/abi/u128.ts +71 -0
  69. package/src/abi/utils.ts +8 -0
  70. package/src/array/array.ts +15 -0
  71. package/src/aztec-address/index.ts +5 -5
  72. package/src/collection/array.ts +15 -0
  73. package/src/config/env_var.ts +3 -2
  74. package/src/config/index.ts +7 -2
  75. package/src/fields/fields.ts +19 -10
  76. package/src/fields/point.ts +6 -6
  77. package/src/json-rpc/client/fetch.ts +14 -6
  78. package/src/json-rpc/client/safe_json_rpc_client.ts +0 -1
  79. package/src/json-rpc/server/safe_json_rpc_server.ts +27 -11
  80. package/src/json-rpc/server/telemetry.ts +0 -0
  81. package/src/log/gcloud-logger-config.ts +71 -0
  82. package/src/log/pino-logger.ts +13 -42
  83. package/src/testing/files/index.ts +2 -2
  84. package/src/timer/timeout.ts +1 -1
@@ -5,6 +5,8 @@ import { type Writable } from 'stream';
5
5
  import { inspect } from 'util';
6
6
 
7
7
  import { compactArray } from '../collection/array.js';
8
+ import { type EnvVar, parseBooleanEnv } from '../config/index.js';
9
+ import { GoogleCloudLoggerConfig } from './gcloud-logger-config.js';
8
10
  import { getLogLevelFromFilters, parseEnv } from './log-filters.js';
9
11
  import { type LogLevel } from './log-levels.js';
10
12
  import { type LogData, type LogFn } from './log_fn.js';
@@ -86,46 +88,14 @@ const [logLevel, logFilters] = parseEnv(process.env.LOG_LEVEL, defaultLogLevel);
86
88
  // Define custom logging levels for pino.
87
89
  const customLevels = { verbose: 25 };
88
90
 
89
- // inspired by https://github.com/pinojs/pino/issues/726#issuecomment-605814879
90
- const levelToSeverityFormatter = (label: string, level: number): object => {
91
- // Severity labels https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry#LogSeverity
92
- let severity: string;
93
-
94
- switch (label as pino.Level | keyof typeof customLevels) {
95
- case 'trace':
96
- case 'debug':
97
- severity = 'DEBUG';
98
- break;
99
- case 'verbose':
100
- case 'info':
101
- severity = 'INFO';
102
- break;
103
- case 'warn':
104
- severity = 'WARNING';
105
- break;
106
- case 'error':
107
- severity = 'ERROR';
108
- break;
109
- case 'fatal':
110
- severity = 'CRITICAL';
111
- break;
112
- default:
113
- severity = 'DEFAULT';
114
- break;
115
- }
116
-
117
- return { severity, level };
118
- };
119
-
120
- const useGcloudObservability = process.env.USE_GCLOUD_OBSERVABILITY === 'true';
91
+ // Global pino options, tweaked for google cloud if running there.
92
+ const useGcloudObservability = parseBooleanEnv(process.env['USE_GCLOUD_OBSERVABILITY' satisfies EnvVar]);
121
93
  const pinoOpts: pino.LoggerOptions<keyof typeof customLevels> = {
122
94
  customLevels,
123
- messageKey: useGcloudObservability ? 'message' : 'msg',
95
+ messageKey: 'msg',
124
96
  useOnlyCustomLevels: false,
125
97
  level: logLevel,
126
- formatters: {
127
- level: levelToSeverityFormatter,
128
- },
98
+ ...(useGcloudObservability ? GoogleCloudLoggerConfig : {}),
129
99
  };
130
100
 
131
101
  export const levels = {
@@ -145,7 +115,7 @@ export const pinoPrettyOpts = {
145
115
  customLevels: 'fatal:60,error:50,warn:40,info:30,verbose:25,debug:20,trace:10',
146
116
  customColors: 'fatal:bgRed,error:red,warn:yellow,info:green,verbose:magenta,debug:blue,trace:gray',
147
117
  minimumLevel: 'trace' as const,
148
- singleLine: !['1', 'true'].includes(process.env.LOG_MULTILINE ?? ''),
118
+ singleLine: !parseBooleanEnv(process.env['LOG_MULTILINE' satisfies EnvVar]),
149
119
  };
150
120
 
151
121
  const prettyTransport: pino.TransportTargetOptions = {
@@ -167,7 +137,8 @@ const stdioTransport: pino.TransportTargetOptions = {
167
137
  // would mean that all child loggers created before the telemetry-client is initialized would not have
168
138
  // this transport configured. Note that the target is defined as the export in the telemetry-client,
169
139
  // since pino will load this transport separately on a worker thread, to minimize disruption to the main loop.
170
- const otlpEndpoint = process.env.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT;
140
+ const otlpEndpoint = process.env['OTEL_EXPORTER_OTLP_LOGS_ENDPOINT' satisfies EnvVar];
141
+ const otlpEnabled = !!otlpEndpoint && !useGcloudObservability;
171
142
  const otelOpts = { levels };
172
143
  const otelTransport: pino.TransportTargetOptions = {
173
144
  target: '@aztec/telemetry-client/otel-pino-stream',
@@ -185,10 +156,10 @@ function makeLogger() {
185
156
  return pino(pinoOpts, pino.destination(2));
186
157
  } else {
187
158
  // Regular nodejs with transports on worker thread, using pino-pretty for console logging if LOG_JSON
188
- // is not set, and an optional OTLP transport if the OTLP endpoint is provided.
159
+ // is not set, and an optional OTLP transport if the OTLP endpoint is set.
189
160
  const targets: pino.TransportSingleOptions[] = compactArray([
190
- ['1', 'true', 'TRUE'].includes(process.env.LOG_JSON ?? '') ? stdioTransport : prettyTransport,
191
- otlpEndpoint ? otelTransport : undefined,
161
+ parseBooleanEnv(process.env.LOG_JSON) ? stdioTransport : prettyTransport,
162
+ otlpEnabled ? otelTransport : undefined,
192
163
  ]);
193
164
  return pino(pinoOpts, pino.transport({ targets, levels: levels.values }));
194
165
  }
@@ -203,7 +174,7 @@ logger.verbose(
203
174
  ...logFilters.reduce((accum, [module, level]) => ({ ...accum, [`log.${module}`]: level }), {}),
204
175
  },
205
176
  isNode
206
- ? `Logger initialized with level ${logLevel}` + (otlpEndpoint ? ` with OTLP exporter to ${otlpEndpoint}` : '')
177
+ ? `Logger initialized with level ${logLevel}` + (otlpEnabled ? ` with OTLP exporter to ${otlpEndpoint}` : '')
207
178
  : `Browser console logger initialized with level ${logLevel}`,
208
179
  );
209
180
 
@@ -6,12 +6,12 @@ import { fileURLToPath } from '../../url/index.js';
6
6
  import { isGenerateTestDataEnabled } from '../test_data.js';
7
7
 
8
8
  /** Writes the contents specified to the target file if test data generation is enabled. */
9
- export function writeTestData(targetFileFromRepoRoot: string, contents: string | Buffer) {
9
+ export function writeTestData(targetFileFromRepoRoot: string, contents: string | Buffer, raw: boolean = false) {
10
10
  if (!isGenerateTestDataEnabled()) {
11
11
  return;
12
12
  }
13
13
  const targetFile = getPathToFile(targetFileFromRepoRoot);
14
- const toWrite = typeof contents === 'string' ? contents : contents.toString('hex');
14
+ const toWrite = raw ? contents : typeof contents === 'string' ? contents : contents.toString('hex');
15
15
  writeFileSync(targetFile, toWrite);
16
16
  const logger = createConsoleLogger('aztec:testing:test_data');
17
17
  logger(`Wrote test data to ${targetFile}`);
@@ -27,7 +27,7 @@ export class TimeoutTask<T> {
27
27
  * @throws An error with a message indicating the function was interrupted due to exceeding the specified timeout.
28
28
  */
29
29
  public async exec() {
30
- const interruptTimeout = !this.timeout ? 0 : setTimeout(this.interrupt, this.timeout);
30
+ const interruptTimeout = setTimeout(this.interrupt, this.timeout);
31
31
  try {
32
32
  const start = Date.now();
33
33
  const result = await Promise.race<T>([this.fn(), this.interruptPromise]);