sol-trade-sdk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +390 -0
- package/dist/chunk-MMQAMIKR.mjs +3735 -0
- package/dist/chunk-NEZDFAYA.mjs +7744 -0
- package/dist/clients-VITWK7B6.mjs +1370 -0
- package/dist/index-1BK_FXsW.d.mts +2327 -0
- package/dist/index-1BK_FXsW.d.ts +2327 -0
- package/dist/index.d.mts +2659 -0
- package/dist/index.d.ts +2659 -0
- package/dist/index.js +13265 -0
- package/dist/index.mjs +562 -0
- package/dist/perf/index.d.mts +2 -0
- package/dist/perf/index.d.ts +2 -0
- package/dist/perf/index.js +3742 -0
- package/dist/perf/index.mjs +214 -0
- package/package.json +101 -0
- package/src/__tests__/complete_sdk.test.ts +354 -0
- package/src/__tests__/hotpath.test.ts +486 -0
- package/src/__tests__/nonce.test.ts +45 -0
- package/src/__tests__/sdk.test.ts +425 -0
- package/src/address-lookup/index.ts +197 -0
- package/src/cache/cache.ts +308 -0
- package/src/calc/index.ts +1058 -0
- package/src/calc/pumpfun.ts +124 -0
- package/src/common/bonding_curve.ts +272 -0
- package/src/common/compute-budget.ts +148 -0
- package/src/common/confirm-any-signature.ts +184 -0
- package/src/common/fast-timing.ts +481 -0
- package/src/common/fast_fn.ts +150 -0
- package/src/common/gas-fee-strategy.ts +253 -0
- package/src/common/map-pool.ts +23 -0
- package/src/common/nonce.ts +40 -0
- package/src/common/sdk-log.ts +460 -0
- package/src/common/seed.ts +381 -0
- package/src/common/spl-token.ts +578 -0
- package/src/common/subscription-handle.ts +644 -0
- package/src/common/trading-utils.ts +239 -0
- package/src/common/wsol-manager.ts +325 -0
- package/src/compute/compute_budget_manager.ts +187 -0
- package/src/compute/index.ts +21 -0
- package/src/constants/index.ts +96 -0
- package/src/execution/execution.ts +532 -0
- package/src/execution/index.ts +42 -0
- package/src/hotpath/executor.ts +464 -0
- package/src/hotpath/index.ts +64 -0
- package/src/hotpath/state.ts +435 -0
- package/src/index.ts +2117 -0
- package/src/instruction/bonk_builder.ts +730 -0
- package/src/instruction/index.ts +24 -0
- package/src/instruction/meteora_damm_v2_builder.ts +509 -0
- package/src/instruction/pumpfun_builder.ts +1183 -0
- package/src/instruction/pumpswap.ts +1123 -0
- package/src/instruction/raydium_amm_v4_builder.ts +692 -0
- package/src/instruction/raydium_cpmm_builder.ts +795 -0
- package/src/middleware/traits.ts +407 -0
- package/src/params/index.ts +483 -0
- package/src/perf/compiler-optimization.ts +529 -0
- package/src/perf/hardware.ts +631 -0
- package/src/perf/index.ts +9 -0
- package/src/perf/kernel-bypass.ts +656 -0
- package/src/perf/protocol.ts +682 -0
- package/src/perf/realtime.ts +592 -0
- package/src/perf/simd.ts +668 -0
- package/src/perf/syscall-bypass.ts +331 -0
- package/src/perf/ultra-low-latency.ts +505 -0
- package/src/perf/zero-copy.ts +589 -0
- package/src/pool/pool.ts +294 -0
- package/src/rpc/client.ts +345 -0
- package/src/sdk-errors.ts +13 -0
- package/src/security/index.ts +26 -0
- package/src/security/secure-key.ts +303 -0
- package/src/security/validators.ts +281 -0
- package/src/seed/pda.ts +262 -0
- package/src/serialization/index.ts +28 -0
- package/src/serialization/serialization.ts +288 -0
- package/src/swqos/clients.ts +1754 -0
- package/src/swqos/index.ts +50 -0
- package/src/swqos/providers.ts +1707 -0
- package/src/trading/core/async-executor.ts +702 -0
- package/src/trading/core/confirmation-monitor.ts +711 -0
- package/src/trading/core/index.ts +82 -0
- package/src/trading/core/retry-handler.ts +683 -0
- package/src/trading/core/transaction-pool.ts +780 -0
- package/src/trading/executor.ts +385 -0
- package/src/trading/factory.ts +282 -0
- package/src/trading/index.ts +30 -0
- package/src/types.ts +8 -0
- package/src/utils/index.ts +155 -0
|
@@ -0,0 +1,460 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDK Logging module for Sol Trade SDK
|
|
3
|
+
* Provides structured logging with multiple log levels and output formats.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
// ===== Log Level Enum =====
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Log level severity
|
|
10
|
+
*/
|
|
11
|
+
export enum LogLevel {
|
|
12
|
+
DEBUG = 0,
|
|
13
|
+
INFO = 1,
|
|
14
|
+
WARN = 2,
|
|
15
|
+
ERROR = 3,
|
|
16
|
+
FATAL = 4,
|
|
17
|
+
NONE = 5,
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Get log level name
|
|
22
|
+
*/
|
|
23
|
+
export function getLogLevelName(level: LogLevel): string {
|
|
24
|
+
switch (level) {
|
|
25
|
+
case LogLevel.DEBUG:
|
|
26
|
+
return 'DEBUG';
|
|
27
|
+
case LogLevel.INFO:
|
|
28
|
+
return 'INFO';
|
|
29
|
+
case LogLevel.WARN:
|
|
30
|
+
return 'WARN';
|
|
31
|
+
case LogLevel.ERROR:
|
|
32
|
+
return 'ERROR';
|
|
33
|
+
case LogLevel.FATAL:
|
|
34
|
+
return 'FATAL';
|
|
35
|
+
case LogLevel.NONE:
|
|
36
|
+
return 'NONE';
|
|
37
|
+
default:
|
|
38
|
+
return 'UNKNOWN';
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Parse log level from string
|
|
44
|
+
*/
|
|
45
|
+
export function parseLogLevel(level: string): LogLevel {
|
|
46
|
+
switch (level.toUpperCase()) {
|
|
47
|
+
case 'DEBUG':
|
|
48
|
+
return LogLevel.DEBUG;
|
|
49
|
+
case 'INFO':
|
|
50
|
+
return LogLevel.INFO;
|
|
51
|
+
case 'WARN':
|
|
52
|
+
case 'WARNING':
|
|
53
|
+
return LogLevel.WARN;
|
|
54
|
+
case 'ERROR':
|
|
55
|
+
return LogLevel.ERROR;
|
|
56
|
+
case 'FATAL':
|
|
57
|
+
return LogLevel.FATAL;
|
|
58
|
+
case 'NONE':
|
|
59
|
+
return LogLevel.NONE;
|
|
60
|
+
default:
|
|
61
|
+
return LogLevel.INFO;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// ===== Log Entry Types =====
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Log entry metadata
|
|
69
|
+
*/
|
|
70
|
+
export interface LogMetadata {
|
|
71
|
+
[key: string]: unknown;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Log entry structure
|
|
76
|
+
*/
|
|
77
|
+
export interface LogEntry {
|
|
78
|
+
timestamp: Date;
|
|
79
|
+
level: LogLevel;
|
|
80
|
+
levelName: string;
|
|
81
|
+
message: string;
|
|
82
|
+
context?: string;
|
|
83
|
+
metadata?: LogMetadata;
|
|
84
|
+
error?: Error;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Log formatter type
|
|
89
|
+
*/
|
|
90
|
+
export type LogFormatter = (entry: LogEntry) => string;
|
|
91
|
+
|
|
92
|
+
// ===== Default Formatters =====
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Simple text formatter
|
|
96
|
+
*/
|
|
97
|
+
export function simpleFormatter(entry: LogEntry): string {
|
|
98
|
+
const timestamp = entry.timestamp.toISOString();
|
|
99
|
+
const context = entry.context ? `[${entry.context}] ` : '';
|
|
100
|
+
return `${timestamp} [${entry.levelName}] ${context}${entry.message}`;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Colored formatter for terminal output
|
|
105
|
+
*/
|
|
106
|
+
export function coloredFormatter(entry: LogEntry): string {
|
|
107
|
+
const timestamp = entry.timestamp.toISOString();
|
|
108
|
+
const context = entry.context ? `[${entry.context}] ` : '';
|
|
109
|
+
|
|
110
|
+
const colors: Record<LogLevel, string> = {
|
|
111
|
+
[LogLevel.DEBUG]: '\x1b[36m', // Cyan
|
|
112
|
+
[LogLevel.INFO]: '\x1b[32m', // Green
|
|
113
|
+
[LogLevel.WARN]: '\x1b[33m', // Yellow
|
|
114
|
+
[LogLevel.ERROR]: '\x1b[31m', // Red
|
|
115
|
+
[LogLevel.FATAL]: '\x1b[35m', // Magenta
|
|
116
|
+
[LogLevel.NONE]: '\x1b[0m', // Reset
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
const reset = '\x1b[0m';
|
|
120
|
+
const color = colors[entry.level] || '';
|
|
121
|
+
|
|
122
|
+
return `${timestamp} ${color}[${entry.levelName}]${reset} ${context}${entry.message}`;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* JSON formatter for structured logging
|
|
127
|
+
*/
|
|
128
|
+
export function jsonFormatter(entry: LogEntry): string {
|
|
129
|
+
const logObj: Record<string, unknown> = {
|
|
130
|
+
timestamp: entry.timestamp.toISOString(),
|
|
131
|
+
level: entry.levelName,
|
|
132
|
+
message: entry.message,
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
if (entry.context) {
|
|
136
|
+
logObj.context = entry.context;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
if (entry.metadata) {
|
|
140
|
+
logObj.metadata = entry.metadata;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
if (entry.error) {
|
|
144
|
+
logObj.error = {
|
|
145
|
+
name: entry.error.name,
|
|
146
|
+
message: entry.error.message,
|
|
147
|
+
stack: entry.error.stack,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
return JSON.stringify(logObj);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// ===== Log Output Interface =====
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Log output destination
|
|
158
|
+
*/
|
|
159
|
+
export interface LogOutput {
|
|
160
|
+
write(entry: LogEntry, formatted: string): void;
|
|
161
|
+
flush?(): void;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Console log output
|
|
166
|
+
*/
|
|
167
|
+
export class ConsoleOutput implements LogOutput {
|
|
168
|
+
private useStderr: boolean;
|
|
169
|
+
|
|
170
|
+
constructor(useStderr: boolean = false) {
|
|
171
|
+
this.useStderr = useStderr;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
write(entry: LogEntry, formatted: string): void {
|
|
175
|
+
if (this.useStderr && entry.level >= LogLevel.ERROR) {
|
|
176
|
+
console.error(formatted);
|
|
177
|
+
} else {
|
|
178
|
+
console.log(formatted);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Memory buffer output (for testing)
|
|
185
|
+
*/
|
|
186
|
+
export class MemoryOutput implements LogOutput {
|
|
187
|
+
private entries: LogEntry[] = [];
|
|
188
|
+
|
|
189
|
+
write(entry: LogEntry): void {
|
|
190
|
+
this.entries.push(entry);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
getEntries(): LogEntry[] {
|
|
194
|
+
return [...this.entries];
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
clear(): void {
|
|
198
|
+
this.entries = [];
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Callback output for custom handling
|
|
204
|
+
*/
|
|
205
|
+
export class CallbackOutput implements LogOutput {
|
|
206
|
+
constructor(private callback: (entry: LogEntry) => void) {}
|
|
207
|
+
|
|
208
|
+
write(entry: LogEntry): void {
|
|
209
|
+
this.callback(entry);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// ===== SDK Logger =====
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* SDK Logger configuration
|
|
217
|
+
*/
|
|
218
|
+
export interface SDKLoggerConfig {
|
|
219
|
+
level: LogLevel;
|
|
220
|
+
formatter: LogFormatter;
|
|
221
|
+
outputs: LogOutput[];
|
|
222
|
+
context?: string;
|
|
223
|
+
includeTimestamp?: boolean;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* SDK Logger class
|
|
228
|
+
*/
|
|
229
|
+
export class SDKLogger {
|
|
230
|
+
private config: SDKLoggerConfig;
|
|
231
|
+
|
|
232
|
+
constructor(config: Partial<SDKLoggerConfig> = {}) {
|
|
233
|
+
this.config = {
|
|
234
|
+
level: LogLevel.INFO,
|
|
235
|
+
formatter: simpleFormatter,
|
|
236
|
+
outputs: [new ConsoleOutput()],
|
|
237
|
+
context: undefined,
|
|
238
|
+
includeTimestamp: true,
|
|
239
|
+
...config,
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Check if a log level is enabled
|
|
245
|
+
*/
|
|
246
|
+
isEnabled(level: LogLevel): boolean {
|
|
247
|
+
return level >= this.config.level;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* Log a message at the specified level
|
|
252
|
+
*/
|
|
253
|
+
log(level: LogLevel, message: string, metadata?: LogMetadata, error?: Error): void {
|
|
254
|
+
if (!this.isEnabled(level)) {
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
const entry: LogEntry = {
|
|
259
|
+
timestamp: new Date(),
|
|
260
|
+
level,
|
|
261
|
+
levelName: getLogLevelName(level),
|
|
262
|
+
message,
|
|
263
|
+
context: this.config.context,
|
|
264
|
+
metadata,
|
|
265
|
+
error,
|
|
266
|
+
};
|
|
267
|
+
|
|
268
|
+
const formatted = this.config.formatter(entry);
|
|
269
|
+
|
|
270
|
+
for (const output of this.config.outputs) {
|
|
271
|
+
output.write(entry, formatted);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Log debug message
|
|
277
|
+
*/
|
|
278
|
+
debug(message: string, metadata?: LogMetadata): void {
|
|
279
|
+
this.log(LogLevel.DEBUG, message, metadata);
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* Log info message
|
|
284
|
+
*/
|
|
285
|
+
info(message: string, metadata?: LogMetadata): void {
|
|
286
|
+
this.log(LogLevel.INFO, message, metadata);
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* Log warning message
|
|
291
|
+
*/
|
|
292
|
+
warn(message: string, metadata?: LogMetadata, error?: Error): void {
|
|
293
|
+
this.log(LogLevel.WARN, message, metadata, error);
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* Log error message
|
|
298
|
+
*/
|
|
299
|
+
error(message: string, metadata?: LogMetadata, error?: Error): void {
|
|
300
|
+
this.log(LogLevel.ERROR, message, metadata, error);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Log fatal message
|
|
305
|
+
*/
|
|
306
|
+
fatal(message: string, metadata?: LogMetadata, error?: Error): void {
|
|
307
|
+
this.log(LogLevel.FATAL, message, metadata, error);
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* Create a child logger with a specific context
|
|
312
|
+
*/
|
|
313
|
+
child(context: string): SDKLogger {
|
|
314
|
+
return new SDKLogger({
|
|
315
|
+
...this.config,
|
|
316
|
+
context: this.config.context ? `${this.config.context}.${context}` : context,
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Update logger configuration
|
|
322
|
+
*/
|
|
323
|
+
setConfig(config: Partial<SDKLoggerConfig>): void {
|
|
324
|
+
this.config = { ...this.config, ...config };
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* Set log level
|
|
329
|
+
*/
|
|
330
|
+
setLevel(level: LogLevel): void {
|
|
331
|
+
this.config.level = level;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* Get current log level
|
|
336
|
+
*/
|
|
337
|
+
getLevel(): LogLevel {
|
|
338
|
+
return this.config.level;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
/**
|
|
342
|
+
* Add an output destination
|
|
343
|
+
*/
|
|
344
|
+
addOutput(output: LogOutput): void {
|
|
345
|
+
this.config.outputs.push(output);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* Remove all outputs
|
|
350
|
+
*/
|
|
351
|
+
clearOutputs(): void {
|
|
352
|
+
this.config.outputs = [];
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
// ===== Global Logger Instance =====
|
|
357
|
+
|
|
358
|
+
let globalLogger: SDKLogger | null = null;
|
|
359
|
+
|
|
360
|
+
/**
|
|
361
|
+
* Get the global logger instance
|
|
362
|
+
*/
|
|
363
|
+
export function getLogger(): SDKLogger {
|
|
364
|
+
if (!globalLogger) {
|
|
365
|
+
globalLogger = new SDKLogger();
|
|
366
|
+
}
|
|
367
|
+
return globalLogger;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
/**
|
|
371
|
+
* Set the global logger instance
|
|
372
|
+
*/
|
|
373
|
+
export function setLogger(logger: SDKLogger): void {
|
|
374
|
+
globalLogger = logger;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
// ===== Setup Functions =====
|
|
378
|
+
|
|
379
|
+
/**
|
|
380
|
+
* Setup logging configuration
|
|
381
|
+
*/
|
|
382
|
+
export interface LoggingSetup {
|
|
383
|
+
level?: LogLevel | string;
|
|
384
|
+
format?: 'simple' | 'colored' | 'json';
|
|
385
|
+
outputs?: LogOutput[];
|
|
386
|
+
context?: string;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
/**
|
|
390
|
+
* Setup logging with the specified configuration
|
|
391
|
+
*/
|
|
392
|
+
export function setupLogging(setup: LoggingSetup = {}): SDKLogger {
|
|
393
|
+
const level = typeof setup.level === 'string' ? parseLogLevel(setup.level) : (setup.level ?? LogLevel.INFO);
|
|
394
|
+
|
|
395
|
+
let formatter: LogFormatter;
|
|
396
|
+
switch (setup.format) {
|
|
397
|
+
case 'json':
|
|
398
|
+
formatter = jsonFormatter;
|
|
399
|
+
break;
|
|
400
|
+
case 'colored':
|
|
401
|
+
formatter = coloredFormatter;
|
|
402
|
+
break;
|
|
403
|
+
case 'simple':
|
|
404
|
+
default:
|
|
405
|
+
formatter = simpleFormatter;
|
|
406
|
+
break;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
const logger = new SDKLogger({
|
|
410
|
+
level,
|
|
411
|
+
formatter,
|
|
412
|
+
outputs: setup.outputs ?? [new ConsoleOutput()],
|
|
413
|
+
context: setup.context,
|
|
414
|
+
});
|
|
415
|
+
|
|
416
|
+
setLogger(logger);
|
|
417
|
+
return logger;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
/**
|
|
421
|
+
* Setup development logging (colored, verbose)
|
|
422
|
+
*/
|
|
423
|
+
export function setupDevLogging(): SDKLogger {
|
|
424
|
+
return setupLogging({
|
|
425
|
+
level: LogLevel.DEBUG,
|
|
426
|
+
format: 'colored',
|
|
427
|
+
});
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
/**
|
|
431
|
+
* Setup production logging (JSON, info level)
|
|
432
|
+
*/
|
|
433
|
+
export function setupProdLogging(): SDKLogger {
|
|
434
|
+
return setupLogging({
|
|
435
|
+
level: LogLevel.INFO,
|
|
436
|
+
format: 'json',
|
|
437
|
+
});
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
/**
|
|
441
|
+
* Disable all logging
|
|
442
|
+
*/
|
|
443
|
+
export function disableLogging(): void {
|
|
444
|
+
setupLogging({
|
|
445
|
+
level: LogLevel.NONE,
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
// ===== Convenience Exports =====
|
|
450
|
+
|
|
451
|
+
/**
|
|
452
|
+
* Quick log functions using global logger
|
|
453
|
+
*/
|
|
454
|
+
export const log = {
|
|
455
|
+
debug: (message: string, metadata?: LogMetadata) => getLogger().debug(message, metadata),
|
|
456
|
+
info: (message: string, metadata?: LogMetadata) => getLogger().info(message, metadata),
|
|
457
|
+
warn: (message: string, metadata?: LogMetadata, error?: Error) => getLogger().warn(message, metadata, error),
|
|
458
|
+
error: (message: string, metadata?: LogMetadata, error?: Error) => getLogger().error(message, metadata, error),
|
|
459
|
+
fatal: (message: string, metadata?: LogMetadata, error?: Error) => getLogger().fatal(message, metadata, error),
|
|
460
|
+
};
|