@digilogiclabs/platform-core 1.0.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 +545 -0
- package/dist/ConsoleEmail-XeUBAnwc.d.mts +2786 -0
- package/dist/ConsoleEmail-XeUBAnwc.d.ts +2786 -0
- package/dist/index-C_2W7Byw.d.mts +379 -0
- package/dist/index-C_2W7Byw.d.ts +379 -0
- package/dist/index.d.mts +2045 -0
- package/dist/index.d.ts +2045 -0
- package/dist/index.js +6690 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +6550 -0
- package/dist/index.mjs.map +1 -0
- package/dist/migrate.js +1101 -0
- package/dist/migrate.js.map +1 -0
- package/dist/migrations/index.d.mts +1 -0
- package/dist/migrations/index.d.ts +1 -0
- package/dist/migrations/index.js +508 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/migrations/index.mjs +468 -0
- package/dist/migrations/index.mjs.map +1 -0
- package/dist/testing.d.mts +97 -0
- package/dist/testing.d.ts +97 -0
- package/dist/testing.js +1789 -0
- package/dist/testing.js.map +1 -0
- package/dist/testing.mjs +1743 -0
- package/dist/testing.mjs.map +1 -0
- package/package.json +152 -0
|
@@ -0,0 +1,2786 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Database abstraction interface
|
|
5
|
+
* Provides a vendor-agnostic way to interact with SQL databases
|
|
6
|
+
*/
|
|
7
|
+
interface QueryResult<T = unknown> {
|
|
8
|
+
data: T[];
|
|
9
|
+
count?: number;
|
|
10
|
+
error?: Error;
|
|
11
|
+
}
|
|
12
|
+
interface IDatabase {
|
|
13
|
+
/**
|
|
14
|
+
* Query data from a table
|
|
15
|
+
*/
|
|
16
|
+
from<T = unknown>(table: string): IQueryBuilder<T>;
|
|
17
|
+
/**
|
|
18
|
+
* Execute a raw SQL query
|
|
19
|
+
*/
|
|
20
|
+
raw<T = unknown>(sql: string, params?: unknown[]): Promise<QueryResult<T>>;
|
|
21
|
+
/**
|
|
22
|
+
* Begin a transaction
|
|
23
|
+
*/
|
|
24
|
+
transaction<T>(fn: (tx: IDatabase) => Promise<T>): Promise<T>;
|
|
25
|
+
/**
|
|
26
|
+
* Check database connectivity
|
|
27
|
+
*/
|
|
28
|
+
healthCheck(): Promise<boolean>;
|
|
29
|
+
/**
|
|
30
|
+
* Close database connection
|
|
31
|
+
*/
|
|
32
|
+
close(): Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
interface IQueryBuilder<T = unknown> {
|
|
35
|
+
select(columns?: string | string[]): IQueryBuilder<T>;
|
|
36
|
+
insert(data: Partial<T> | Partial<T>[]): IQueryBuilder<T>;
|
|
37
|
+
update(data: Partial<T>): IQueryBuilder<T>;
|
|
38
|
+
delete(): IQueryBuilder<T>;
|
|
39
|
+
where(column: string, operator: string, value: unknown): IQueryBuilder<T>;
|
|
40
|
+
whereIn(column: string, values: unknown[]): IQueryBuilder<T>;
|
|
41
|
+
orderBy(column: string, direction?: 'asc' | 'desc'): IQueryBuilder<T>;
|
|
42
|
+
limit(count: number): IQueryBuilder<T>;
|
|
43
|
+
offset(count: number): IQueryBuilder<T>;
|
|
44
|
+
single(): Promise<{
|
|
45
|
+
data: T | null;
|
|
46
|
+
error?: Error;
|
|
47
|
+
}>;
|
|
48
|
+
execute(): Promise<QueryResult<T>>;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Cache abstraction interface
|
|
53
|
+
* Provides a vendor-agnostic way to interact with key-value caches
|
|
54
|
+
*/
|
|
55
|
+
interface ICacheOptions {
|
|
56
|
+
/** Time to live in seconds */
|
|
57
|
+
ttl?: number;
|
|
58
|
+
/** Cache key prefix */
|
|
59
|
+
prefix?: string;
|
|
60
|
+
}
|
|
61
|
+
interface ICache {
|
|
62
|
+
/**
|
|
63
|
+
* Get a value from cache
|
|
64
|
+
*/
|
|
65
|
+
get<T = unknown>(key: string): Promise<T | null>;
|
|
66
|
+
/**
|
|
67
|
+
* Set a value in cache
|
|
68
|
+
*/
|
|
69
|
+
set<T = unknown>(key: string, value: T, ttl?: number): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Delete a value from cache
|
|
72
|
+
*/
|
|
73
|
+
delete(key: string): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* Check if key exists
|
|
76
|
+
*/
|
|
77
|
+
exists(key: string): Promise<boolean>;
|
|
78
|
+
/**
|
|
79
|
+
* Delete all keys matching pattern
|
|
80
|
+
*/
|
|
81
|
+
deletePattern(pattern: string): Promise<number>;
|
|
82
|
+
/**
|
|
83
|
+
* Get multiple values
|
|
84
|
+
*/
|
|
85
|
+
mget<T = unknown>(keys: string[]): Promise<(T | null)[]>;
|
|
86
|
+
/**
|
|
87
|
+
* Set multiple values
|
|
88
|
+
*/
|
|
89
|
+
mset<T = unknown>(entries: Array<{
|
|
90
|
+
key: string;
|
|
91
|
+
value: T;
|
|
92
|
+
ttl?: number;
|
|
93
|
+
}>): Promise<void>;
|
|
94
|
+
/**
|
|
95
|
+
* Increment a numeric value
|
|
96
|
+
*/
|
|
97
|
+
incr(key: string, by?: number): Promise<number>;
|
|
98
|
+
/**
|
|
99
|
+
* Publish a message to a channel
|
|
100
|
+
*/
|
|
101
|
+
publish(channel: string, message: string): Promise<void>;
|
|
102
|
+
/**
|
|
103
|
+
* Subscribe to a channel
|
|
104
|
+
*/
|
|
105
|
+
subscribe(channel: string, callback: (message: string) => void): Promise<() => void>;
|
|
106
|
+
/**
|
|
107
|
+
* Check cache connectivity
|
|
108
|
+
*/
|
|
109
|
+
healthCheck(): Promise<boolean>;
|
|
110
|
+
/**
|
|
111
|
+
* Close cache connection
|
|
112
|
+
*/
|
|
113
|
+
close(): Promise<void>;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Storage abstraction interface
|
|
118
|
+
* Provides a vendor-agnostic way to interact with file/blob storage
|
|
119
|
+
*/
|
|
120
|
+
interface StorageFile {
|
|
121
|
+
key: string;
|
|
122
|
+
size: number;
|
|
123
|
+
contentType?: string;
|
|
124
|
+
lastModified?: Date;
|
|
125
|
+
etag?: string;
|
|
126
|
+
}
|
|
127
|
+
interface UploadOptions {
|
|
128
|
+
contentType?: string;
|
|
129
|
+
metadata?: Record<string, string>;
|
|
130
|
+
public?: boolean;
|
|
131
|
+
}
|
|
132
|
+
interface IStorage {
|
|
133
|
+
/**
|
|
134
|
+
* Upload a file
|
|
135
|
+
*/
|
|
136
|
+
upload(key: string, data: Buffer | Blob | ReadableStream, options?: UploadOptions): Promise<{
|
|
137
|
+
url: string;
|
|
138
|
+
}>;
|
|
139
|
+
/**
|
|
140
|
+
* Download a file
|
|
141
|
+
*/
|
|
142
|
+
download(key: string): Promise<Buffer>;
|
|
143
|
+
/**
|
|
144
|
+
* Get a signed URL for download
|
|
145
|
+
*/
|
|
146
|
+
getSignedUrl(key: string, expiresIn?: number): Promise<string>;
|
|
147
|
+
/**
|
|
148
|
+
* Delete a file
|
|
149
|
+
*/
|
|
150
|
+
delete(key: string): Promise<void>;
|
|
151
|
+
/**
|
|
152
|
+
* Delete multiple files
|
|
153
|
+
*/
|
|
154
|
+
deleteMany(keys: string[]): Promise<void>;
|
|
155
|
+
/**
|
|
156
|
+
* List files in a path
|
|
157
|
+
*/
|
|
158
|
+
list(prefix?: string): Promise<StorageFile[]>;
|
|
159
|
+
/**
|
|
160
|
+
* Check if file exists
|
|
161
|
+
*/
|
|
162
|
+
exists(key: string): Promise<boolean>;
|
|
163
|
+
/**
|
|
164
|
+
* Get file metadata
|
|
165
|
+
*/
|
|
166
|
+
getMetadata(key: string): Promise<StorageFile | null>;
|
|
167
|
+
/**
|
|
168
|
+
* Check storage connectivity
|
|
169
|
+
*/
|
|
170
|
+
healthCheck(): Promise<boolean>;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Email abstraction interface
|
|
175
|
+
* Provides a vendor-agnostic way to send emails
|
|
176
|
+
*/
|
|
177
|
+
interface EmailAddress {
|
|
178
|
+
email: string;
|
|
179
|
+
name?: string;
|
|
180
|
+
}
|
|
181
|
+
interface EmailAttachment {
|
|
182
|
+
filename: string;
|
|
183
|
+
content: Buffer | string;
|
|
184
|
+
contentType?: string;
|
|
185
|
+
}
|
|
186
|
+
interface EmailMessage {
|
|
187
|
+
to: EmailAddress | EmailAddress[];
|
|
188
|
+
from?: EmailAddress;
|
|
189
|
+
replyTo?: EmailAddress;
|
|
190
|
+
subject: string;
|
|
191
|
+
text?: string;
|
|
192
|
+
html?: string;
|
|
193
|
+
attachments?: EmailAttachment[];
|
|
194
|
+
headers?: Record<string, string>;
|
|
195
|
+
tags?: string[];
|
|
196
|
+
}
|
|
197
|
+
interface EmailResult {
|
|
198
|
+
id: string;
|
|
199
|
+
success: boolean;
|
|
200
|
+
error?: Error;
|
|
201
|
+
}
|
|
202
|
+
interface IEmail {
|
|
203
|
+
/**
|
|
204
|
+
* Send an email
|
|
205
|
+
*/
|
|
206
|
+
send(message: EmailMessage): Promise<EmailResult>;
|
|
207
|
+
/**
|
|
208
|
+
* Send multiple emails (batch)
|
|
209
|
+
*/
|
|
210
|
+
sendBatch(messages: EmailMessage[]): Promise<EmailResult[]>;
|
|
211
|
+
/**
|
|
212
|
+
* Check email service connectivity
|
|
213
|
+
*/
|
|
214
|
+
healthCheck(): Promise<boolean>;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Queue abstraction interface
|
|
219
|
+
* Provides a vendor-agnostic way to work with job queues
|
|
220
|
+
*/
|
|
221
|
+
interface JobOptions {
|
|
222
|
+
/** Delay before job is processed (ms) */
|
|
223
|
+
delay?: number;
|
|
224
|
+
/** Number of retry attempts */
|
|
225
|
+
attempts?: number;
|
|
226
|
+
/** Backoff strategy */
|
|
227
|
+
backoff?: {
|
|
228
|
+
type: 'fixed' | 'exponential';
|
|
229
|
+
delay: number;
|
|
230
|
+
};
|
|
231
|
+
/** Job priority (higher = more priority) */
|
|
232
|
+
priority?: number;
|
|
233
|
+
/** Remove job after completion */
|
|
234
|
+
removeOnComplete?: boolean | number;
|
|
235
|
+
/** Remove job after failure */
|
|
236
|
+
removeOnFail?: boolean | number;
|
|
237
|
+
}
|
|
238
|
+
interface Job<T = unknown> {
|
|
239
|
+
id: string;
|
|
240
|
+
name: string;
|
|
241
|
+
data: T;
|
|
242
|
+
attemptsMade: number;
|
|
243
|
+
progress: number;
|
|
244
|
+
timestamp: number;
|
|
245
|
+
}
|
|
246
|
+
interface JobResult<T = unknown> {
|
|
247
|
+
jobId: string;
|
|
248
|
+
result?: T;
|
|
249
|
+
error?: Error;
|
|
250
|
+
}
|
|
251
|
+
interface IQueue<T = unknown> {
|
|
252
|
+
/**
|
|
253
|
+
* Add a job to the queue
|
|
254
|
+
*/
|
|
255
|
+
add(name: string, data: T, options?: JobOptions): Promise<Job<T>>;
|
|
256
|
+
/**
|
|
257
|
+
* Add multiple jobs
|
|
258
|
+
*/
|
|
259
|
+
addBulk(jobs: Array<{
|
|
260
|
+
name: string;
|
|
261
|
+
data: T;
|
|
262
|
+
options?: JobOptions;
|
|
263
|
+
}>): Promise<Job<T>[]>;
|
|
264
|
+
/**
|
|
265
|
+
* Process jobs
|
|
266
|
+
*/
|
|
267
|
+
process(handler: (job: Job<T>) => Promise<unknown>): void;
|
|
268
|
+
/**
|
|
269
|
+
* Get a job by ID
|
|
270
|
+
*/
|
|
271
|
+
getJob(id: string): Promise<Job<T> | null>;
|
|
272
|
+
/**
|
|
273
|
+
* Remove a job
|
|
274
|
+
*/
|
|
275
|
+
removeJob(id: string): Promise<void>;
|
|
276
|
+
/**
|
|
277
|
+
* Pause the queue
|
|
278
|
+
*/
|
|
279
|
+
pause(): Promise<void>;
|
|
280
|
+
/**
|
|
281
|
+
* Resume the queue
|
|
282
|
+
*/
|
|
283
|
+
resume(): Promise<void>;
|
|
284
|
+
/**
|
|
285
|
+
* Get queue statistics
|
|
286
|
+
*/
|
|
287
|
+
getStats(): Promise<{
|
|
288
|
+
waiting: number;
|
|
289
|
+
active: number;
|
|
290
|
+
completed: number;
|
|
291
|
+
failed: number;
|
|
292
|
+
delayed: number;
|
|
293
|
+
}>;
|
|
294
|
+
/**
|
|
295
|
+
* Check queue connectivity
|
|
296
|
+
*/
|
|
297
|
+
healthCheck(): Promise<boolean>;
|
|
298
|
+
/**
|
|
299
|
+
* Close queue connection
|
|
300
|
+
*/
|
|
301
|
+
close(): Promise<void>;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* Logger Interface
|
|
306
|
+
* Standardizes logging across the platform
|
|
307
|
+
*/
|
|
308
|
+
/**
|
|
309
|
+
* Log levels in order of severity
|
|
310
|
+
*/
|
|
311
|
+
type LogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
312
|
+
/**
|
|
313
|
+
* Metadata that can be attached to log entries
|
|
314
|
+
*/
|
|
315
|
+
interface LogMeta {
|
|
316
|
+
/** Error object if logging an error */
|
|
317
|
+
error?: Error;
|
|
318
|
+
/** Duration in milliseconds (for timing operations) */
|
|
319
|
+
duration?: number;
|
|
320
|
+
/** Request ID for tracing */
|
|
321
|
+
requestId?: string;
|
|
322
|
+
/** User ID if applicable */
|
|
323
|
+
userId?: string;
|
|
324
|
+
/** Any additional key-value pairs */
|
|
325
|
+
[key: string]: unknown;
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* A structured log entry
|
|
329
|
+
*/
|
|
330
|
+
interface LogEntry {
|
|
331
|
+
/** Log level */
|
|
332
|
+
level: LogLevel;
|
|
333
|
+
/** Log message */
|
|
334
|
+
message: string;
|
|
335
|
+
/** When the log was created */
|
|
336
|
+
timestamp: Date;
|
|
337
|
+
/** Optional metadata */
|
|
338
|
+
meta?: LogMeta;
|
|
339
|
+
/** Logger context (e.g., service name) */
|
|
340
|
+
context?: Record<string, unknown>;
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Logger interface for structured logging
|
|
344
|
+
*/
|
|
345
|
+
interface ILogger {
|
|
346
|
+
/**
|
|
347
|
+
* Log a debug message (for development/troubleshooting)
|
|
348
|
+
*/
|
|
349
|
+
debug(message: string, meta?: LogMeta): void;
|
|
350
|
+
/**
|
|
351
|
+
* Log an informational message
|
|
352
|
+
*/
|
|
353
|
+
info(message: string, meta?: LogMeta): void;
|
|
354
|
+
/**
|
|
355
|
+
* Log a warning message
|
|
356
|
+
*/
|
|
357
|
+
warn(message: string, meta?: LogMeta): void;
|
|
358
|
+
/**
|
|
359
|
+
* Log an error message
|
|
360
|
+
*/
|
|
361
|
+
error(message: string, meta?: LogMeta): void;
|
|
362
|
+
/**
|
|
363
|
+
* Create a child logger with additional context
|
|
364
|
+
* @param context Additional context to include in all logs from this child
|
|
365
|
+
*/
|
|
366
|
+
child(context: Record<string, unknown>): ILogger;
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Configuration options for loggers
|
|
370
|
+
*/
|
|
371
|
+
interface LoggerConfig {
|
|
372
|
+
/** Minimum level to log */
|
|
373
|
+
level?: LogLevel;
|
|
374
|
+
/** Whether to pretty print (for development) */
|
|
375
|
+
pretty?: boolean;
|
|
376
|
+
/** Service name to include in logs */
|
|
377
|
+
service?: string;
|
|
378
|
+
/** Environment name */
|
|
379
|
+
environment?: string;
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Console logger implementation (for development)
|
|
383
|
+
*/
|
|
384
|
+
declare class ConsoleLogger implements ILogger {
|
|
385
|
+
private context;
|
|
386
|
+
private level;
|
|
387
|
+
private static levelPriority;
|
|
388
|
+
constructor(config?: LoggerConfig);
|
|
389
|
+
private shouldLog;
|
|
390
|
+
private log;
|
|
391
|
+
debug(message: string, meta?: LogMeta): void;
|
|
392
|
+
info(message: string, meta?: LogMeta): void;
|
|
393
|
+
warn(message: string, meta?: LogMeta): void;
|
|
394
|
+
error(message: string, meta?: LogMeta): void;
|
|
395
|
+
child(context: Record<string, unknown>): ILogger;
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* No-op logger for testing or when logging is disabled
|
|
399
|
+
*/
|
|
400
|
+
declare class NoopLogger implements ILogger {
|
|
401
|
+
debug(): void;
|
|
402
|
+
info(): void;
|
|
403
|
+
warn(): void;
|
|
404
|
+
error(): void;
|
|
405
|
+
child(): ILogger;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
/**
|
|
409
|
+
* Metrics Interface
|
|
410
|
+
*
|
|
411
|
+
* Provides observability through counters, gauges, histograms, and timers.
|
|
412
|
+
*/
|
|
413
|
+
/**
|
|
414
|
+
* Tags for metrics (key-value pairs for dimensions)
|
|
415
|
+
*/
|
|
416
|
+
type MetricTags = Record<string, string | number | boolean>;
|
|
417
|
+
/**
|
|
418
|
+
* Metrics interface for observability
|
|
419
|
+
*/
|
|
420
|
+
interface IMetrics {
|
|
421
|
+
/**
|
|
422
|
+
* Increment a counter by a value (default 1)
|
|
423
|
+
*
|
|
424
|
+
* @example
|
|
425
|
+
* metrics.increment('api.requests', 1, { method: 'GET', path: '/users' })
|
|
426
|
+
*/
|
|
427
|
+
increment(name: string, value?: number, tags?: MetricTags): void;
|
|
428
|
+
/**
|
|
429
|
+
* Decrement a counter by a value (default 1)
|
|
430
|
+
*
|
|
431
|
+
* @example
|
|
432
|
+
* metrics.decrement('active.connections', 1, { server: 'api-1' })
|
|
433
|
+
*/
|
|
434
|
+
decrement(name: string, value?: number, tags?: MetricTags): void;
|
|
435
|
+
/**
|
|
436
|
+
* Set a gauge to a specific value
|
|
437
|
+
*
|
|
438
|
+
* @example
|
|
439
|
+
* metrics.gauge('queue.size', 42, { queue: 'emails' })
|
|
440
|
+
*/
|
|
441
|
+
gauge(name: string, value: number, tags?: MetricTags): void;
|
|
442
|
+
/**
|
|
443
|
+
* Record a value in a histogram (for distributions)
|
|
444
|
+
*
|
|
445
|
+
* @example
|
|
446
|
+
* metrics.histogram('response.size', 1024, { endpoint: '/api/users' })
|
|
447
|
+
*/
|
|
448
|
+
histogram(name: string, value: number, tags?: MetricTags): void;
|
|
449
|
+
/**
|
|
450
|
+
* Record a timing value in milliseconds
|
|
451
|
+
*
|
|
452
|
+
* @example
|
|
453
|
+
* metrics.timing('db.query.duration', 42, { table: 'users' })
|
|
454
|
+
*/
|
|
455
|
+
timing(name: string, value: number, tags?: MetricTags): void;
|
|
456
|
+
/**
|
|
457
|
+
* Start a timer and return a function to stop it
|
|
458
|
+
*
|
|
459
|
+
* @example
|
|
460
|
+
* const stop = metrics.startTimer('api.request.duration', { method: 'GET' })
|
|
461
|
+
* // ... do work ...
|
|
462
|
+
* stop() // Records the duration
|
|
463
|
+
*/
|
|
464
|
+
startTimer(name: string, tags?: MetricTags): () => void;
|
|
465
|
+
/**
|
|
466
|
+
* Record a distribution value (similar to histogram but for Datadog)
|
|
467
|
+
*
|
|
468
|
+
* @example
|
|
469
|
+
* metrics.distribution('payment.amount', 99.99, { currency: 'USD' })
|
|
470
|
+
*/
|
|
471
|
+
distribution?(name: string, value: number, tags?: MetricTags): void;
|
|
472
|
+
/**
|
|
473
|
+
* Record a set value (count unique elements)
|
|
474
|
+
*
|
|
475
|
+
* @example
|
|
476
|
+
* metrics.set('unique.users', 'user-123')
|
|
477
|
+
*/
|
|
478
|
+
set?(name: string, value: string | number, tags?: MetricTags): void;
|
|
479
|
+
/**
|
|
480
|
+
* Flush all pending metrics to the backend
|
|
481
|
+
*/
|
|
482
|
+
flush(): Promise<void>;
|
|
483
|
+
/**
|
|
484
|
+
* Close the metrics client
|
|
485
|
+
*/
|
|
486
|
+
close(): Promise<void>;
|
|
487
|
+
}
|
|
488
|
+
/**
|
|
489
|
+
* Memory-based metrics implementation for testing
|
|
490
|
+
*/
|
|
491
|
+
declare class MemoryMetrics implements IMetrics {
|
|
492
|
+
private counters;
|
|
493
|
+
private gauges;
|
|
494
|
+
private histograms;
|
|
495
|
+
private timings;
|
|
496
|
+
private sets;
|
|
497
|
+
increment(name: string, value?: number, tags?: MetricTags): void;
|
|
498
|
+
decrement(name: string, value?: number, tags?: MetricTags): void;
|
|
499
|
+
gauge(name: string, value: number, tags?: MetricTags): void;
|
|
500
|
+
histogram(name: string, value: number, tags?: MetricTags): void;
|
|
501
|
+
timing(name: string, value: number, tags?: MetricTags): void;
|
|
502
|
+
startTimer(name: string, tags?: MetricTags): () => void;
|
|
503
|
+
distribution(name: string, value: number, tags?: MetricTags): void;
|
|
504
|
+
set(name: string, value: string | number, tags?: MetricTags): void;
|
|
505
|
+
flush(): Promise<void>;
|
|
506
|
+
close(): Promise<void>;
|
|
507
|
+
/**
|
|
508
|
+
* Get counter value
|
|
509
|
+
*/
|
|
510
|
+
getCounter(name: string, tags?: MetricTags): number;
|
|
511
|
+
/**
|
|
512
|
+
* Get gauge value
|
|
513
|
+
*/
|
|
514
|
+
getGauge(name: string, tags?: MetricTags): number | undefined;
|
|
515
|
+
/**
|
|
516
|
+
* Get histogram values
|
|
517
|
+
*/
|
|
518
|
+
getHistogram(name: string, tags?: MetricTags): number[];
|
|
519
|
+
/**
|
|
520
|
+
* Get timing values
|
|
521
|
+
*/
|
|
522
|
+
getTiming(name: string, tags?: MetricTags): number[];
|
|
523
|
+
/**
|
|
524
|
+
* Get set size
|
|
525
|
+
*/
|
|
526
|
+
getSetSize(name: string, tags?: MetricTags): number;
|
|
527
|
+
/**
|
|
528
|
+
* Get all metrics as a summary
|
|
529
|
+
*/
|
|
530
|
+
getSummary(): MetricsSummary;
|
|
531
|
+
/**
|
|
532
|
+
* Reset all metrics
|
|
533
|
+
*/
|
|
534
|
+
reset(): void;
|
|
535
|
+
private createKey;
|
|
536
|
+
private percentile;
|
|
537
|
+
}
|
|
538
|
+
/**
|
|
539
|
+
* No-op metrics implementation
|
|
540
|
+
*/
|
|
541
|
+
declare class NoopMetrics implements IMetrics {
|
|
542
|
+
increment(): void;
|
|
543
|
+
decrement(): void;
|
|
544
|
+
gauge(): void;
|
|
545
|
+
histogram(): void;
|
|
546
|
+
timing(): void;
|
|
547
|
+
startTimer(): () => void;
|
|
548
|
+
distribution(): void;
|
|
549
|
+
set(): void;
|
|
550
|
+
flush(): Promise<void>;
|
|
551
|
+
close(): Promise<void>;
|
|
552
|
+
}
|
|
553
|
+
/**
|
|
554
|
+
* Summary of all metrics
|
|
555
|
+
*/
|
|
556
|
+
interface MetricsSummary {
|
|
557
|
+
counters: Record<string, number>;
|
|
558
|
+
gauges: Record<string, number>;
|
|
559
|
+
histograms: Record<string, HistogramStats>;
|
|
560
|
+
timings: Record<string, TimingStats>;
|
|
561
|
+
sets: Record<string, number>;
|
|
562
|
+
}
|
|
563
|
+
/**
|
|
564
|
+
* Histogram statistics
|
|
565
|
+
*/
|
|
566
|
+
interface HistogramStats {
|
|
567
|
+
count: number;
|
|
568
|
+
sum: number;
|
|
569
|
+
min: number;
|
|
570
|
+
max: number;
|
|
571
|
+
avg: number;
|
|
572
|
+
}
|
|
573
|
+
/**
|
|
574
|
+
* Timing statistics
|
|
575
|
+
*/
|
|
576
|
+
interface TimingStats extends HistogramStats {
|
|
577
|
+
p50: number;
|
|
578
|
+
p95: number;
|
|
579
|
+
p99: number;
|
|
580
|
+
}
|
|
581
|
+
/**
|
|
582
|
+
* Create a scoped metrics instance with a prefix
|
|
583
|
+
*/
|
|
584
|
+
declare function createScopedMetrics(metrics: IMetrics, prefix: string, defaultTags?: MetricTags): IMetrics;
|
|
585
|
+
|
|
586
|
+
/**
|
|
587
|
+
* Distributed Tracing Interface
|
|
588
|
+
*
|
|
589
|
+
* Provides vendor-agnostic distributed tracing for observability.
|
|
590
|
+
* Supports OpenTelemetry, Jaeger, Zipkin, and custom implementations.
|
|
591
|
+
*/
|
|
592
|
+
type SpanKind = 'internal' | 'server' | 'client' | 'producer' | 'consumer';
|
|
593
|
+
type SpanStatusCode = 'unset' | 'ok' | 'error';
|
|
594
|
+
interface SpanStatus {
|
|
595
|
+
code: SpanStatusCode;
|
|
596
|
+
message?: string;
|
|
597
|
+
}
|
|
598
|
+
interface SpanContext {
|
|
599
|
+
traceId: string;
|
|
600
|
+
spanId: string;
|
|
601
|
+
traceFlags: number;
|
|
602
|
+
traceState?: string;
|
|
603
|
+
}
|
|
604
|
+
interface SpanOptions {
|
|
605
|
+
/** Type of span */
|
|
606
|
+
kind?: SpanKind;
|
|
607
|
+
/** Initial attributes */
|
|
608
|
+
attributes?: Record<string, string | number | boolean>;
|
|
609
|
+
/** Parent span (for manual context propagation) */
|
|
610
|
+
parent?: ISpan;
|
|
611
|
+
/** Links to other spans */
|
|
612
|
+
links?: SpanContext[];
|
|
613
|
+
/** Start time (defaults to now) */
|
|
614
|
+
startTime?: number;
|
|
615
|
+
}
|
|
616
|
+
interface SpanEvent {
|
|
617
|
+
name: string;
|
|
618
|
+
timestamp: number;
|
|
619
|
+
attributes?: Record<string, string | number | boolean>;
|
|
620
|
+
}
|
|
621
|
+
interface ISpan {
|
|
622
|
+
/** Span name */
|
|
623
|
+
readonly name: string;
|
|
624
|
+
/** Span context (trace ID, span ID) */
|
|
625
|
+
readonly context: SpanContext;
|
|
626
|
+
/** Whether the span is recording */
|
|
627
|
+
readonly isRecording: boolean;
|
|
628
|
+
/**
|
|
629
|
+
* Set a single attribute
|
|
630
|
+
*/
|
|
631
|
+
setAttribute(key: string, value: string | number | boolean): this;
|
|
632
|
+
/**
|
|
633
|
+
* Set multiple attributes
|
|
634
|
+
*/
|
|
635
|
+
setAttributes(attributes: Record<string, string | number | boolean>): this;
|
|
636
|
+
/**
|
|
637
|
+
* Add an event to the span
|
|
638
|
+
*/
|
|
639
|
+
addEvent(name: string, attributes?: Record<string, string | number | boolean>): this;
|
|
640
|
+
/**
|
|
641
|
+
* Set the span status
|
|
642
|
+
*/
|
|
643
|
+
setStatus(status: SpanStatus): this;
|
|
644
|
+
/**
|
|
645
|
+
* Record an exception
|
|
646
|
+
*/
|
|
647
|
+
recordException(exception: Error, attributes?: Record<string, string | number | boolean>): this;
|
|
648
|
+
/**
|
|
649
|
+
* Update the span name
|
|
650
|
+
*/
|
|
651
|
+
updateName(name: string): this;
|
|
652
|
+
/**
|
|
653
|
+
* End the span (required to export)
|
|
654
|
+
*/
|
|
655
|
+
end(endTime?: number): void;
|
|
656
|
+
}
|
|
657
|
+
interface ITracing {
|
|
658
|
+
/**
|
|
659
|
+
* Create and start a new span
|
|
660
|
+
*/
|
|
661
|
+
startSpan(name: string, options?: SpanOptions): ISpan;
|
|
662
|
+
/**
|
|
663
|
+
* Get the currently active span
|
|
664
|
+
*/
|
|
665
|
+
getCurrentSpan(): ISpan | undefined;
|
|
666
|
+
/**
|
|
667
|
+
* Execute a function within a span context
|
|
668
|
+
*/
|
|
669
|
+
withSpan<T>(name: string, fn: (span: ISpan) => T, options?: SpanOptions): T;
|
|
670
|
+
/**
|
|
671
|
+
* Execute an async function within a span context
|
|
672
|
+
*/
|
|
673
|
+
withSpanAsync<T>(name: string, fn: (span: ISpan) => Promise<T>, options?: SpanOptions): Promise<T>;
|
|
674
|
+
/**
|
|
675
|
+
* Instrument a function with automatic span creation
|
|
676
|
+
*/
|
|
677
|
+
instrument<TArgs extends unknown[], TReturn>(name: string, fn: (...args: TArgs) => TReturn, options?: SpanOptions): (...args: TArgs) => TReturn;
|
|
678
|
+
/**
|
|
679
|
+
* Instrument an async function with automatic span creation
|
|
680
|
+
*/
|
|
681
|
+
instrumentAsync<TArgs extends unknown[], TReturn>(name: string, fn: (...args: TArgs) => Promise<TReturn>, options?: SpanOptions): (...args: TArgs) => Promise<TReturn>;
|
|
682
|
+
/**
|
|
683
|
+
* Extract trace context from headers (for incoming requests)
|
|
684
|
+
*/
|
|
685
|
+
extractContext(headers: Record<string, string | string[] | undefined>): SpanContext | undefined;
|
|
686
|
+
/**
|
|
687
|
+
* Inject trace context into headers (for outgoing requests)
|
|
688
|
+
*/
|
|
689
|
+
injectContext(headers: Record<string, string>): void;
|
|
690
|
+
/**
|
|
691
|
+
* Check if tracing is enabled and healthy
|
|
692
|
+
*/
|
|
693
|
+
healthCheck(): Promise<boolean>;
|
|
694
|
+
/**
|
|
695
|
+
* Flush pending spans to the exporter
|
|
696
|
+
*/
|
|
697
|
+
flush(): Promise<void>;
|
|
698
|
+
/**
|
|
699
|
+
* Shutdown the tracer
|
|
700
|
+
*/
|
|
701
|
+
close(): Promise<void>;
|
|
702
|
+
}
|
|
703
|
+
interface TracingConfig {
|
|
704
|
+
/** Enable tracing */
|
|
705
|
+
enabled: boolean;
|
|
706
|
+
/** Service name for traces */
|
|
707
|
+
serviceName: string;
|
|
708
|
+
/** Service version */
|
|
709
|
+
serviceVersion?: string;
|
|
710
|
+
/** Environment (dev, staging, production) */
|
|
711
|
+
environment?: string;
|
|
712
|
+
/** Sampling rate (0.0 to 1.0) */
|
|
713
|
+
sampleRate?: number;
|
|
714
|
+
/** Exporter type */
|
|
715
|
+
exporter?: 'console' | 'otlp' | 'jaeger' | 'zipkin' | 'none';
|
|
716
|
+
/** Exporter endpoint */
|
|
717
|
+
endpoint?: string;
|
|
718
|
+
/** Additional resource attributes */
|
|
719
|
+
resourceAttributes?: Record<string, string>;
|
|
720
|
+
/** Propagation format */
|
|
721
|
+
propagation?: 'w3c' | 'b3' | 'jaeger';
|
|
722
|
+
}
|
|
723
|
+
declare class MemorySpan implements ISpan {
|
|
724
|
+
readonly name: string;
|
|
725
|
+
readonly context: SpanContext;
|
|
726
|
+
readonly isRecording: boolean;
|
|
727
|
+
private _attributes;
|
|
728
|
+
private _events;
|
|
729
|
+
private _status;
|
|
730
|
+
private _endTime?;
|
|
731
|
+
private _startTime;
|
|
732
|
+
constructor(name: string, traceId: string, parentSpanId?: string);
|
|
733
|
+
private generateSpanId;
|
|
734
|
+
setAttribute(key: string, value: string | number | boolean): this;
|
|
735
|
+
setAttributes(attributes: Record<string, string | number | boolean>): this;
|
|
736
|
+
addEvent(name: string, attributes?: Record<string, string | number | boolean>): this;
|
|
737
|
+
setStatus(status: SpanStatus): this;
|
|
738
|
+
recordException(exception: Error, attributes?: Record<string, string | number | boolean>): this;
|
|
739
|
+
updateName(name: string): this;
|
|
740
|
+
end(endTime?: number): void;
|
|
741
|
+
getAttributes(): Record<string, string | number | boolean>;
|
|
742
|
+
getEvents(): SpanEvent[];
|
|
743
|
+
getStatus(): SpanStatus;
|
|
744
|
+
getDuration(): number | undefined;
|
|
745
|
+
isEnded(): boolean;
|
|
746
|
+
}
|
|
747
|
+
declare class MemoryTracing implements ITracing {
|
|
748
|
+
private spans;
|
|
749
|
+
private currentSpan;
|
|
750
|
+
private traceId;
|
|
751
|
+
constructor();
|
|
752
|
+
private generateTraceId;
|
|
753
|
+
startSpan(name: string, options?: SpanOptions): ISpan;
|
|
754
|
+
getCurrentSpan(): ISpan | undefined;
|
|
755
|
+
withSpan<T>(name: string, fn: (span: ISpan) => T, options?: SpanOptions): T;
|
|
756
|
+
withSpanAsync<T>(name: string, fn: (span: ISpan) => Promise<T>, options?: SpanOptions): Promise<T>;
|
|
757
|
+
instrument<TArgs extends unknown[], TReturn>(name: string, fn: (...args: TArgs) => TReturn, options?: SpanOptions): (...args: TArgs) => TReturn;
|
|
758
|
+
instrumentAsync<TArgs extends unknown[], TReturn>(name: string, fn: (...args: TArgs) => Promise<TReturn>, options?: SpanOptions): (...args: TArgs) => Promise<TReturn>;
|
|
759
|
+
extractContext(headers: Record<string, string | string[] | undefined>): SpanContext | undefined;
|
|
760
|
+
injectContext(headers: Record<string, string>): void;
|
|
761
|
+
healthCheck(): Promise<boolean>;
|
|
762
|
+
flush(): Promise<void>;
|
|
763
|
+
close(): Promise<void>;
|
|
764
|
+
getSpans(): MemorySpan[];
|
|
765
|
+
getCompletedSpans(): MemorySpan[];
|
|
766
|
+
clear(): void;
|
|
767
|
+
}
|
|
768
|
+
declare class NoopTracing implements ITracing {
|
|
769
|
+
private noopSpan;
|
|
770
|
+
startSpan(): ISpan;
|
|
771
|
+
getCurrentSpan(): ISpan | undefined;
|
|
772
|
+
withSpan<T>(_name: string, fn: (span: ISpan) => T): T;
|
|
773
|
+
withSpanAsync<T>(_name: string, fn: (span: ISpan) => Promise<T>): Promise<T>;
|
|
774
|
+
instrument<TArgs extends unknown[], TReturn>(_name: string, fn: (...args: TArgs) => TReturn): (...args: TArgs) => TReturn;
|
|
775
|
+
instrumentAsync<TArgs extends unknown[], TReturn>(_name: string, fn: (...args: TArgs) => Promise<TReturn>): (...args: TArgs) => Promise<TReturn>;
|
|
776
|
+
extractContext(): SpanContext | undefined;
|
|
777
|
+
injectContext(): void;
|
|
778
|
+
healthCheck(): Promise<boolean>;
|
|
779
|
+
flush(): Promise<void>;
|
|
780
|
+
close(): Promise<void>;
|
|
781
|
+
}
|
|
782
|
+
|
|
783
|
+
/**
|
|
784
|
+
* Main Platform interface
|
|
785
|
+
* Combines all infrastructure services into a single entry point
|
|
786
|
+
*/
|
|
787
|
+
|
|
788
|
+
interface PlatformHealthStatus {
|
|
789
|
+
healthy: boolean;
|
|
790
|
+
services: {
|
|
791
|
+
database: boolean;
|
|
792
|
+
cache: boolean;
|
|
793
|
+
storage: boolean;
|
|
794
|
+
email: boolean;
|
|
795
|
+
queue: boolean;
|
|
796
|
+
tracing?: boolean;
|
|
797
|
+
};
|
|
798
|
+
timestamp: number;
|
|
799
|
+
}
|
|
800
|
+
interface IPlatform {
|
|
801
|
+
/** Database service */
|
|
802
|
+
readonly db: IDatabase;
|
|
803
|
+
/** Cache service */
|
|
804
|
+
readonly cache: ICache;
|
|
805
|
+
/** Storage service */
|
|
806
|
+
readonly storage: IStorage;
|
|
807
|
+
/** Email service */
|
|
808
|
+
readonly email: IEmail;
|
|
809
|
+
/** Queue service */
|
|
810
|
+
readonly queue: IQueue;
|
|
811
|
+
/** Logger service (optional) */
|
|
812
|
+
readonly logger?: ILogger;
|
|
813
|
+
/** Metrics service (optional) */
|
|
814
|
+
readonly metrics?: IMetrics;
|
|
815
|
+
/** Tracing service (optional) */
|
|
816
|
+
readonly tracing?: ITracing;
|
|
817
|
+
/**
|
|
818
|
+
* Check health of all services
|
|
819
|
+
*/
|
|
820
|
+
healthCheck(): Promise<PlatformHealthStatus>;
|
|
821
|
+
/**
|
|
822
|
+
* Close all connections
|
|
823
|
+
*/
|
|
824
|
+
close(): Promise<void>;
|
|
825
|
+
}
|
|
826
|
+
|
|
827
|
+
/**
|
|
828
|
+
* Secrets Management Interface
|
|
829
|
+
*
|
|
830
|
+
* Provides a vendor-agnostic abstraction for secrets management.
|
|
831
|
+
* Supports various backends: Environment variables, HashiCorp Vault,
|
|
832
|
+
* AWS Secrets Manager, Azure Key Vault, GCP Secret Manager, etc.
|
|
833
|
+
*/
|
|
834
|
+
/**
|
|
835
|
+
* Secret metadata
|
|
836
|
+
*/
|
|
837
|
+
interface SecretMetadata {
|
|
838
|
+
/** Secret version or ETag */
|
|
839
|
+
version?: string;
|
|
840
|
+
/** Creation timestamp */
|
|
841
|
+
createdAt?: Date;
|
|
842
|
+
/** Last updated timestamp */
|
|
843
|
+
updatedAt?: Date;
|
|
844
|
+
/** Expiration timestamp */
|
|
845
|
+
expiresAt?: Date;
|
|
846
|
+
/** Custom tags/labels */
|
|
847
|
+
tags?: Record<string, string>;
|
|
848
|
+
}
|
|
849
|
+
/**
|
|
850
|
+
* Secret with metadata
|
|
851
|
+
*/
|
|
852
|
+
interface Secret<T = string> {
|
|
853
|
+
/** Secret key/name */
|
|
854
|
+
key: string;
|
|
855
|
+
/** Secret value */
|
|
856
|
+
value: T;
|
|
857
|
+
/** Secret metadata */
|
|
858
|
+
metadata?: SecretMetadata;
|
|
859
|
+
}
|
|
860
|
+
/**
|
|
861
|
+
* Options for getting secrets
|
|
862
|
+
*/
|
|
863
|
+
interface GetSecretOptions {
|
|
864
|
+
/** Specific version to retrieve */
|
|
865
|
+
version?: string;
|
|
866
|
+
/** Include metadata in response */
|
|
867
|
+
includeMetadata?: boolean;
|
|
868
|
+
/** Cache TTL in seconds (0 = no cache) */
|
|
869
|
+
cacheTtl?: number;
|
|
870
|
+
}
|
|
871
|
+
/**
|
|
872
|
+
* Options for setting secrets
|
|
873
|
+
*/
|
|
874
|
+
interface SetSecretOptions {
|
|
875
|
+
/** Expiration timestamp */
|
|
876
|
+
expiresAt?: Date;
|
|
877
|
+
/** Custom tags/labels */
|
|
878
|
+
tags?: Record<string, string>;
|
|
879
|
+
/** Description */
|
|
880
|
+
description?: string;
|
|
881
|
+
}
|
|
882
|
+
/**
|
|
883
|
+
* Options for rotating secrets
|
|
884
|
+
*/
|
|
885
|
+
interface RotateSecretOptions {
|
|
886
|
+
/** Custom rotation function */
|
|
887
|
+
rotationFn?: () => Promise<string>;
|
|
888
|
+
/** Rotation period in days */
|
|
889
|
+
rotationPeriodDays?: number;
|
|
890
|
+
/** Keep previous version count */
|
|
891
|
+
keepPreviousVersions?: number;
|
|
892
|
+
}
|
|
893
|
+
/**
|
|
894
|
+
* Result of a rotation operation
|
|
895
|
+
*/
|
|
896
|
+
interface RotationResult {
|
|
897
|
+
/** New secret value */
|
|
898
|
+
newValue: string;
|
|
899
|
+
/** Previous secret value (for rollback) */
|
|
900
|
+
previousValue?: string;
|
|
901
|
+
/** New version identifier */
|
|
902
|
+
newVersion: string;
|
|
903
|
+
/** Previous version identifier */
|
|
904
|
+
previousVersion?: string;
|
|
905
|
+
}
|
|
906
|
+
/**
|
|
907
|
+
* Secrets Management Interface
|
|
908
|
+
*/
|
|
909
|
+
interface ISecrets {
|
|
910
|
+
/**
|
|
911
|
+
* Get a secret value by key
|
|
912
|
+
*/
|
|
913
|
+
get(key: string, options?: GetSecretOptions): Promise<string | null>;
|
|
914
|
+
/**
|
|
915
|
+
* Get a secret with metadata
|
|
916
|
+
*/
|
|
917
|
+
getWithMetadata(key: string, options?: GetSecretOptions): Promise<Secret | null>;
|
|
918
|
+
/**
|
|
919
|
+
* Get multiple secrets at once
|
|
920
|
+
*/
|
|
921
|
+
mget(keys: string[]): Promise<Map<string, string | null>>;
|
|
922
|
+
/**
|
|
923
|
+
* Set a secret value
|
|
924
|
+
*/
|
|
925
|
+
set(key: string, value: string, options?: SetSecretOptions): Promise<void>;
|
|
926
|
+
/**
|
|
927
|
+
* Delete a secret
|
|
928
|
+
*/
|
|
929
|
+
delete(key: string): Promise<void>;
|
|
930
|
+
/**
|
|
931
|
+
* Check if a secret exists
|
|
932
|
+
*/
|
|
933
|
+
exists(key: string): Promise<boolean>;
|
|
934
|
+
/**
|
|
935
|
+
* List all secret keys (optionally filtered by prefix)
|
|
936
|
+
*/
|
|
937
|
+
list(prefix?: string): Promise<string[]>;
|
|
938
|
+
/**
|
|
939
|
+
* Rotate a secret (generate new value)
|
|
940
|
+
*/
|
|
941
|
+
rotate(key: string, options?: RotateSecretOptions): Promise<RotationResult>;
|
|
942
|
+
/**
|
|
943
|
+
* Get all versions of a secret
|
|
944
|
+
*/
|
|
945
|
+
getVersions(key: string): Promise<SecretMetadata[]>;
|
|
946
|
+
/**
|
|
947
|
+
* Health check
|
|
948
|
+
*/
|
|
949
|
+
healthCheck(): Promise<boolean>;
|
|
950
|
+
}
|
|
951
|
+
/**
|
|
952
|
+
* Environment Variables Secrets Adapter
|
|
953
|
+
* Simple implementation using process.env - suitable for development
|
|
954
|
+
* and containerized deployments with injected secrets
|
|
955
|
+
*/
|
|
956
|
+
declare class EnvSecrets implements ISecrets {
|
|
957
|
+
private prefix;
|
|
958
|
+
private cache;
|
|
959
|
+
constructor(options?: {
|
|
960
|
+
prefix?: string;
|
|
961
|
+
});
|
|
962
|
+
private getEnvKey;
|
|
963
|
+
get(key: string, options?: GetSecretOptions): Promise<string | null>;
|
|
964
|
+
getWithMetadata(key: string, options?: GetSecretOptions): Promise<Secret | null>;
|
|
965
|
+
mget(keys: string[]): Promise<Map<string, string | null>>;
|
|
966
|
+
set(key: string, value: string, _options?: SetSecretOptions): Promise<void>;
|
|
967
|
+
delete(key: string): Promise<void>;
|
|
968
|
+
exists(key: string): Promise<boolean>;
|
|
969
|
+
list(prefix?: string): Promise<string[]>;
|
|
970
|
+
rotate(key: string, options?: RotateSecretOptions): Promise<RotationResult>;
|
|
971
|
+
getVersions(_key: string): Promise<SecretMetadata[]>;
|
|
972
|
+
healthCheck(): Promise<boolean>;
|
|
973
|
+
private generateSecureValue;
|
|
974
|
+
/**
|
|
975
|
+
* Clear the internal cache
|
|
976
|
+
*/
|
|
977
|
+
clearCache(): void;
|
|
978
|
+
}
|
|
979
|
+
/**
|
|
980
|
+
* Memory-based Secrets Adapter
|
|
981
|
+
* For testing purposes only - stores secrets in memory
|
|
982
|
+
*/
|
|
983
|
+
declare class MemorySecrets implements ISecrets {
|
|
984
|
+
private secrets;
|
|
985
|
+
private versions;
|
|
986
|
+
get(key: string, _options?: GetSecretOptions): Promise<string | null>;
|
|
987
|
+
getWithMetadata(key: string, options?: GetSecretOptions): Promise<Secret | null>;
|
|
988
|
+
mget(keys: string[]): Promise<Map<string, string | null>>;
|
|
989
|
+
set(key: string, value: string, options?: SetSecretOptions): Promise<void>;
|
|
990
|
+
delete(key: string): Promise<void>;
|
|
991
|
+
exists(key: string): Promise<boolean>;
|
|
992
|
+
list(prefix?: string): Promise<string[]>;
|
|
993
|
+
rotate(key: string, options?: RotateSecretOptions): Promise<RotationResult>;
|
|
994
|
+
getVersions(key: string): Promise<SecretMetadata[]>;
|
|
995
|
+
healthCheck(): Promise<boolean>;
|
|
996
|
+
private generateSecureValue;
|
|
997
|
+
/**
|
|
998
|
+
* Clear all secrets (for testing)
|
|
999
|
+
*/
|
|
1000
|
+
clear(): void;
|
|
1001
|
+
/**
|
|
1002
|
+
* Get count of secrets (for testing)
|
|
1003
|
+
*/
|
|
1004
|
+
get size(): number;
|
|
1005
|
+
}
|
|
1006
|
+
|
|
1007
|
+
/**
|
|
1008
|
+
* Platform Configuration
|
|
1009
|
+
* Comprehensive Zod schema for all platform options with validation
|
|
1010
|
+
*/
|
|
1011
|
+
|
|
1012
|
+
declare const DatabaseProviderSchema: z.ZodEnum<["memory", "postgres", "supabase"]>;
|
|
1013
|
+
declare const CacheProviderSchema: z.ZodEnum<["memory", "redis", "upstash"]>;
|
|
1014
|
+
declare const StorageProviderSchema: z.ZodEnum<["memory", "s3", "minio", "r2", "supabase"]>;
|
|
1015
|
+
declare const EmailProviderSchema: z.ZodEnum<["memory", "console", "smtp", "resend"]>;
|
|
1016
|
+
declare const QueueProviderSchema: z.ZodEnum<["memory", "bullmq"]>;
|
|
1017
|
+
declare const TracingProviderSchema: z.ZodEnum<["noop", "memory", "otlp"]>;
|
|
1018
|
+
declare const LogLevelSchema: z.ZodEnum<["debug", "info", "warn", "error"]>;
|
|
1019
|
+
declare const DatabaseConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
1020
|
+
provider: z.ZodDefault<z.ZodEnum<["memory", "postgres", "supabase"]>>;
|
|
1021
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1022
|
+
connectionString: z.ZodOptional<z.ZodString>;
|
|
1023
|
+
supabaseUrl: z.ZodOptional<z.ZodString>;
|
|
1024
|
+
supabaseAnonKey: z.ZodOptional<z.ZodString>;
|
|
1025
|
+
supabaseServiceRoleKey: z.ZodOptional<z.ZodString>;
|
|
1026
|
+
poolSize: z.ZodDefault<z.ZodNumber>;
|
|
1027
|
+
connectionTimeout: z.ZodDefault<z.ZodNumber>;
|
|
1028
|
+
ssl: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodObject<{
|
|
1029
|
+
rejectUnauthorized: z.ZodOptional<z.ZodBoolean>;
|
|
1030
|
+
}, "strip", z.ZodTypeAny, {
|
|
1031
|
+
rejectUnauthorized?: boolean | undefined;
|
|
1032
|
+
}, {
|
|
1033
|
+
rejectUnauthorized?: boolean | undefined;
|
|
1034
|
+
}>]>>;
|
|
1035
|
+
}, "strip", z.ZodTypeAny, {
|
|
1036
|
+
provider: "memory" | "postgres" | "supabase";
|
|
1037
|
+
poolSize: number;
|
|
1038
|
+
connectionTimeout: number;
|
|
1039
|
+
url?: string | undefined;
|
|
1040
|
+
connectionString?: string | undefined;
|
|
1041
|
+
supabaseUrl?: string | undefined;
|
|
1042
|
+
supabaseAnonKey?: string | undefined;
|
|
1043
|
+
supabaseServiceRoleKey?: string | undefined;
|
|
1044
|
+
ssl?: boolean | {
|
|
1045
|
+
rejectUnauthorized?: boolean | undefined;
|
|
1046
|
+
} | undefined;
|
|
1047
|
+
}, {
|
|
1048
|
+
provider?: "memory" | "postgres" | "supabase" | undefined;
|
|
1049
|
+
url?: string | undefined;
|
|
1050
|
+
connectionString?: string | undefined;
|
|
1051
|
+
supabaseUrl?: string | undefined;
|
|
1052
|
+
supabaseAnonKey?: string | undefined;
|
|
1053
|
+
supabaseServiceRoleKey?: string | undefined;
|
|
1054
|
+
poolSize?: number | undefined;
|
|
1055
|
+
connectionTimeout?: number | undefined;
|
|
1056
|
+
ssl?: boolean | {
|
|
1057
|
+
rejectUnauthorized?: boolean | undefined;
|
|
1058
|
+
} | undefined;
|
|
1059
|
+
}>, {
|
|
1060
|
+
provider: "memory" | "postgres" | "supabase";
|
|
1061
|
+
poolSize: number;
|
|
1062
|
+
connectionTimeout: number;
|
|
1063
|
+
url?: string | undefined;
|
|
1064
|
+
connectionString?: string | undefined;
|
|
1065
|
+
supabaseUrl?: string | undefined;
|
|
1066
|
+
supabaseAnonKey?: string | undefined;
|
|
1067
|
+
supabaseServiceRoleKey?: string | undefined;
|
|
1068
|
+
ssl?: boolean | {
|
|
1069
|
+
rejectUnauthorized?: boolean | undefined;
|
|
1070
|
+
} | undefined;
|
|
1071
|
+
}, {
|
|
1072
|
+
provider?: "memory" | "postgres" | "supabase" | undefined;
|
|
1073
|
+
url?: string | undefined;
|
|
1074
|
+
connectionString?: string | undefined;
|
|
1075
|
+
supabaseUrl?: string | undefined;
|
|
1076
|
+
supabaseAnonKey?: string | undefined;
|
|
1077
|
+
supabaseServiceRoleKey?: string | undefined;
|
|
1078
|
+
poolSize?: number | undefined;
|
|
1079
|
+
connectionTimeout?: number | undefined;
|
|
1080
|
+
ssl?: boolean | {
|
|
1081
|
+
rejectUnauthorized?: boolean | undefined;
|
|
1082
|
+
} | undefined;
|
|
1083
|
+
}>;
|
|
1084
|
+
declare const CacheConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
1085
|
+
provider: z.ZodDefault<z.ZodEnum<["memory", "redis", "upstash"]>>;
|
|
1086
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1087
|
+
upstashUrl: z.ZodOptional<z.ZodString>;
|
|
1088
|
+
upstashToken: z.ZodOptional<z.ZodString>;
|
|
1089
|
+
defaultTTL: z.ZodDefault<z.ZodNumber>;
|
|
1090
|
+
keyPrefix: z.ZodDefault<z.ZodString>;
|
|
1091
|
+
maxRetries: z.ZodDefault<z.ZodNumber>;
|
|
1092
|
+
}, "strip", z.ZodTypeAny, {
|
|
1093
|
+
provider: "memory" | "redis" | "upstash";
|
|
1094
|
+
defaultTTL: number;
|
|
1095
|
+
keyPrefix: string;
|
|
1096
|
+
maxRetries: number;
|
|
1097
|
+
url?: string | undefined;
|
|
1098
|
+
upstashUrl?: string | undefined;
|
|
1099
|
+
upstashToken?: string | undefined;
|
|
1100
|
+
}, {
|
|
1101
|
+
provider?: "memory" | "redis" | "upstash" | undefined;
|
|
1102
|
+
url?: string | undefined;
|
|
1103
|
+
upstashUrl?: string | undefined;
|
|
1104
|
+
upstashToken?: string | undefined;
|
|
1105
|
+
defaultTTL?: number | undefined;
|
|
1106
|
+
keyPrefix?: string | undefined;
|
|
1107
|
+
maxRetries?: number | undefined;
|
|
1108
|
+
}>, {
|
|
1109
|
+
provider: "memory" | "redis" | "upstash";
|
|
1110
|
+
defaultTTL: number;
|
|
1111
|
+
keyPrefix: string;
|
|
1112
|
+
maxRetries: number;
|
|
1113
|
+
url?: string | undefined;
|
|
1114
|
+
upstashUrl?: string | undefined;
|
|
1115
|
+
upstashToken?: string | undefined;
|
|
1116
|
+
}, {
|
|
1117
|
+
provider?: "memory" | "redis" | "upstash" | undefined;
|
|
1118
|
+
url?: string | undefined;
|
|
1119
|
+
upstashUrl?: string | undefined;
|
|
1120
|
+
upstashToken?: string | undefined;
|
|
1121
|
+
defaultTTL?: number | undefined;
|
|
1122
|
+
keyPrefix?: string | undefined;
|
|
1123
|
+
maxRetries?: number | undefined;
|
|
1124
|
+
}>;
|
|
1125
|
+
declare const StorageConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
1126
|
+
provider: z.ZodDefault<z.ZodEnum<["memory", "s3", "minio", "r2", "supabase"]>>;
|
|
1127
|
+
endpoint: z.ZodOptional<z.ZodString>;
|
|
1128
|
+
region: z.ZodDefault<z.ZodString>;
|
|
1129
|
+
accessKey: z.ZodOptional<z.ZodString>;
|
|
1130
|
+
secretKey: z.ZodOptional<z.ZodString>;
|
|
1131
|
+
bucket: z.ZodOptional<z.ZodString>;
|
|
1132
|
+
publicUrl: z.ZodOptional<z.ZodString>;
|
|
1133
|
+
forcePathStyle: z.ZodDefault<z.ZodBoolean>;
|
|
1134
|
+
signedUrlExpiry: z.ZodDefault<z.ZodNumber>;
|
|
1135
|
+
}, "strip", z.ZodTypeAny, {
|
|
1136
|
+
provider: "memory" | "supabase" | "s3" | "minio" | "r2";
|
|
1137
|
+
region: string;
|
|
1138
|
+
forcePathStyle: boolean;
|
|
1139
|
+
signedUrlExpiry: number;
|
|
1140
|
+
endpoint?: string | undefined;
|
|
1141
|
+
accessKey?: string | undefined;
|
|
1142
|
+
secretKey?: string | undefined;
|
|
1143
|
+
bucket?: string | undefined;
|
|
1144
|
+
publicUrl?: string | undefined;
|
|
1145
|
+
}, {
|
|
1146
|
+
provider?: "memory" | "supabase" | "s3" | "minio" | "r2" | undefined;
|
|
1147
|
+
endpoint?: string | undefined;
|
|
1148
|
+
region?: string | undefined;
|
|
1149
|
+
accessKey?: string | undefined;
|
|
1150
|
+
secretKey?: string | undefined;
|
|
1151
|
+
bucket?: string | undefined;
|
|
1152
|
+
publicUrl?: string | undefined;
|
|
1153
|
+
forcePathStyle?: boolean | undefined;
|
|
1154
|
+
signedUrlExpiry?: number | undefined;
|
|
1155
|
+
}>, {
|
|
1156
|
+
provider: "memory" | "supabase" | "s3" | "minio" | "r2";
|
|
1157
|
+
region: string;
|
|
1158
|
+
forcePathStyle: boolean;
|
|
1159
|
+
signedUrlExpiry: number;
|
|
1160
|
+
endpoint?: string | undefined;
|
|
1161
|
+
accessKey?: string | undefined;
|
|
1162
|
+
secretKey?: string | undefined;
|
|
1163
|
+
bucket?: string | undefined;
|
|
1164
|
+
publicUrl?: string | undefined;
|
|
1165
|
+
}, {
|
|
1166
|
+
provider?: "memory" | "supabase" | "s3" | "minio" | "r2" | undefined;
|
|
1167
|
+
endpoint?: string | undefined;
|
|
1168
|
+
region?: string | undefined;
|
|
1169
|
+
accessKey?: string | undefined;
|
|
1170
|
+
secretKey?: string | undefined;
|
|
1171
|
+
bucket?: string | undefined;
|
|
1172
|
+
publicUrl?: string | undefined;
|
|
1173
|
+
forcePathStyle?: boolean | undefined;
|
|
1174
|
+
signedUrlExpiry?: number | undefined;
|
|
1175
|
+
}>;
|
|
1176
|
+
declare const EmailConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
1177
|
+
provider: z.ZodDefault<z.ZodEnum<["memory", "console", "smtp", "resend"]>>;
|
|
1178
|
+
host: z.ZodOptional<z.ZodString>;
|
|
1179
|
+
port: z.ZodOptional<z.ZodNumber>;
|
|
1180
|
+
secure: z.ZodDefault<z.ZodBoolean>;
|
|
1181
|
+
username: z.ZodOptional<z.ZodString>;
|
|
1182
|
+
password: z.ZodOptional<z.ZodString>;
|
|
1183
|
+
apiKey: z.ZodOptional<z.ZodString>;
|
|
1184
|
+
from: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodString]>>;
|
|
1185
|
+
replyTo: z.ZodOptional<z.ZodString>;
|
|
1186
|
+
rateLimitPerSecond: z.ZodDefault<z.ZodNumber>;
|
|
1187
|
+
}, "strip", z.ZodTypeAny, {
|
|
1188
|
+
provider: "console" | "memory" | "smtp" | "resend";
|
|
1189
|
+
secure: boolean;
|
|
1190
|
+
rateLimitPerSecond: number;
|
|
1191
|
+
host?: string | undefined;
|
|
1192
|
+
port?: number | undefined;
|
|
1193
|
+
username?: string | undefined;
|
|
1194
|
+
password?: string | undefined;
|
|
1195
|
+
apiKey?: string | undefined;
|
|
1196
|
+
from?: string | undefined;
|
|
1197
|
+
replyTo?: string | undefined;
|
|
1198
|
+
}, {
|
|
1199
|
+
provider?: "console" | "memory" | "smtp" | "resend" | undefined;
|
|
1200
|
+
host?: string | undefined;
|
|
1201
|
+
port?: number | undefined;
|
|
1202
|
+
secure?: boolean | undefined;
|
|
1203
|
+
username?: string | undefined;
|
|
1204
|
+
password?: string | undefined;
|
|
1205
|
+
apiKey?: string | undefined;
|
|
1206
|
+
from?: string | undefined;
|
|
1207
|
+
replyTo?: string | undefined;
|
|
1208
|
+
rateLimitPerSecond?: number | undefined;
|
|
1209
|
+
}>, {
|
|
1210
|
+
provider: "console" | "memory" | "smtp" | "resend";
|
|
1211
|
+
secure: boolean;
|
|
1212
|
+
rateLimitPerSecond: number;
|
|
1213
|
+
host?: string | undefined;
|
|
1214
|
+
port?: number | undefined;
|
|
1215
|
+
username?: string | undefined;
|
|
1216
|
+
password?: string | undefined;
|
|
1217
|
+
apiKey?: string | undefined;
|
|
1218
|
+
from?: string | undefined;
|
|
1219
|
+
replyTo?: string | undefined;
|
|
1220
|
+
}, {
|
|
1221
|
+
provider?: "console" | "memory" | "smtp" | "resend" | undefined;
|
|
1222
|
+
host?: string | undefined;
|
|
1223
|
+
port?: number | undefined;
|
|
1224
|
+
secure?: boolean | undefined;
|
|
1225
|
+
username?: string | undefined;
|
|
1226
|
+
password?: string | undefined;
|
|
1227
|
+
apiKey?: string | undefined;
|
|
1228
|
+
from?: string | undefined;
|
|
1229
|
+
replyTo?: string | undefined;
|
|
1230
|
+
rateLimitPerSecond?: number | undefined;
|
|
1231
|
+
}>;
|
|
1232
|
+
declare const QueueConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
1233
|
+
provider: z.ZodDefault<z.ZodEnum<["memory", "bullmq"]>>;
|
|
1234
|
+
redisUrl: z.ZodOptional<z.ZodString>;
|
|
1235
|
+
queueName: z.ZodDefault<z.ZodString>;
|
|
1236
|
+
concurrency: z.ZodDefault<z.ZodNumber>;
|
|
1237
|
+
maxRetries: z.ZodDefault<z.ZodNumber>;
|
|
1238
|
+
retryDelay: z.ZodDefault<z.ZodNumber>;
|
|
1239
|
+
removeOnComplete: z.ZodDefault<z.ZodBoolean>;
|
|
1240
|
+
removeOnFail: z.ZodDefault<z.ZodBoolean>;
|
|
1241
|
+
}, "strip", z.ZodTypeAny, {
|
|
1242
|
+
provider: "memory" | "bullmq";
|
|
1243
|
+
maxRetries: number;
|
|
1244
|
+
queueName: string;
|
|
1245
|
+
concurrency: number;
|
|
1246
|
+
retryDelay: number;
|
|
1247
|
+
removeOnComplete: boolean;
|
|
1248
|
+
removeOnFail: boolean;
|
|
1249
|
+
redisUrl?: string | undefined;
|
|
1250
|
+
}, {
|
|
1251
|
+
provider?: "memory" | "bullmq" | undefined;
|
|
1252
|
+
maxRetries?: number | undefined;
|
|
1253
|
+
redisUrl?: string | undefined;
|
|
1254
|
+
queueName?: string | undefined;
|
|
1255
|
+
concurrency?: number | undefined;
|
|
1256
|
+
retryDelay?: number | undefined;
|
|
1257
|
+
removeOnComplete?: boolean | undefined;
|
|
1258
|
+
removeOnFail?: boolean | undefined;
|
|
1259
|
+
}>, {
|
|
1260
|
+
provider: "memory" | "bullmq";
|
|
1261
|
+
maxRetries: number;
|
|
1262
|
+
queueName: string;
|
|
1263
|
+
concurrency: number;
|
|
1264
|
+
retryDelay: number;
|
|
1265
|
+
removeOnComplete: boolean;
|
|
1266
|
+
removeOnFail: boolean;
|
|
1267
|
+
redisUrl?: string | undefined;
|
|
1268
|
+
}, {
|
|
1269
|
+
provider?: "memory" | "bullmq" | undefined;
|
|
1270
|
+
maxRetries?: number | undefined;
|
|
1271
|
+
redisUrl?: string | undefined;
|
|
1272
|
+
queueName?: string | undefined;
|
|
1273
|
+
concurrency?: number | undefined;
|
|
1274
|
+
retryDelay?: number | undefined;
|
|
1275
|
+
removeOnComplete?: boolean | undefined;
|
|
1276
|
+
removeOnFail?: boolean | undefined;
|
|
1277
|
+
}>;
|
|
1278
|
+
declare const RetryConfigSchema: z.ZodObject<{
|
|
1279
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
1280
|
+
maxAttempts: z.ZodDefault<z.ZodNumber>;
|
|
1281
|
+
baseDelay: z.ZodDefault<z.ZodNumber>;
|
|
1282
|
+
maxDelay: z.ZodDefault<z.ZodNumber>;
|
|
1283
|
+
backoffMultiplier: z.ZodDefault<z.ZodNumber>;
|
|
1284
|
+
jitter: z.ZodDefault<z.ZodBoolean>;
|
|
1285
|
+
}, "strip", z.ZodTypeAny, {
|
|
1286
|
+
enabled: boolean;
|
|
1287
|
+
maxAttempts: number;
|
|
1288
|
+
baseDelay: number;
|
|
1289
|
+
maxDelay: number;
|
|
1290
|
+
backoffMultiplier: number;
|
|
1291
|
+
jitter: boolean;
|
|
1292
|
+
}, {
|
|
1293
|
+
enabled?: boolean | undefined;
|
|
1294
|
+
maxAttempts?: number | undefined;
|
|
1295
|
+
baseDelay?: number | undefined;
|
|
1296
|
+
maxDelay?: number | undefined;
|
|
1297
|
+
backoffMultiplier?: number | undefined;
|
|
1298
|
+
jitter?: boolean | undefined;
|
|
1299
|
+
}>;
|
|
1300
|
+
declare const CircuitBreakerConfigSchema: z.ZodObject<{
|
|
1301
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
1302
|
+
failureThreshold: z.ZodDefault<z.ZodNumber>;
|
|
1303
|
+
resetTimeout: z.ZodDefault<z.ZodNumber>;
|
|
1304
|
+
halfOpenRequests: z.ZodDefault<z.ZodNumber>;
|
|
1305
|
+
monitorInterval: z.ZodDefault<z.ZodNumber>;
|
|
1306
|
+
}, "strip", z.ZodTypeAny, {
|
|
1307
|
+
enabled: boolean;
|
|
1308
|
+
failureThreshold: number;
|
|
1309
|
+
resetTimeout: number;
|
|
1310
|
+
halfOpenRequests: number;
|
|
1311
|
+
monitorInterval: number;
|
|
1312
|
+
}, {
|
|
1313
|
+
enabled?: boolean | undefined;
|
|
1314
|
+
failureThreshold?: number | undefined;
|
|
1315
|
+
resetTimeout?: number | undefined;
|
|
1316
|
+
halfOpenRequests?: number | undefined;
|
|
1317
|
+
monitorInterval?: number | undefined;
|
|
1318
|
+
}>;
|
|
1319
|
+
declare const TimeoutConfigSchema: z.ZodObject<{
|
|
1320
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
1321
|
+
default: z.ZodDefault<z.ZodNumber>;
|
|
1322
|
+
database: z.ZodDefault<z.ZodNumber>;
|
|
1323
|
+
cache: z.ZodDefault<z.ZodNumber>;
|
|
1324
|
+
storage: z.ZodDefault<z.ZodNumber>;
|
|
1325
|
+
email: z.ZodDefault<z.ZodNumber>;
|
|
1326
|
+
queue: z.ZodDefault<z.ZodNumber>;
|
|
1327
|
+
}, "strip", z.ZodTypeAny, {
|
|
1328
|
+
enabled: boolean;
|
|
1329
|
+
default: number;
|
|
1330
|
+
database: number;
|
|
1331
|
+
cache: number;
|
|
1332
|
+
storage: number;
|
|
1333
|
+
email: number;
|
|
1334
|
+
queue: number;
|
|
1335
|
+
}, {
|
|
1336
|
+
enabled?: boolean | undefined;
|
|
1337
|
+
default?: number | undefined;
|
|
1338
|
+
database?: number | undefined;
|
|
1339
|
+
cache?: number | undefined;
|
|
1340
|
+
storage?: number | undefined;
|
|
1341
|
+
email?: number | undefined;
|
|
1342
|
+
queue?: number | undefined;
|
|
1343
|
+
}>;
|
|
1344
|
+
declare const BulkheadConfigSchema: z.ZodObject<{
|
|
1345
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
1346
|
+
maxConcurrent: z.ZodDefault<z.ZodNumber>;
|
|
1347
|
+
maxQueued: z.ZodDefault<z.ZodNumber>;
|
|
1348
|
+
timeout: z.ZodDefault<z.ZodNumber>;
|
|
1349
|
+
}, "strip", z.ZodTypeAny, {
|
|
1350
|
+
enabled: boolean;
|
|
1351
|
+
maxConcurrent: number;
|
|
1352
|
+
maxQueued: number;
|
|
1353
|
+
timeout: number;
|
|
1354
|
+
}, {
|
|
1355
|
+
enabled?: boolean | undefined;
|
|
1356
|
+
maxConcurrent?: number | undefined;
|
|
1357
|
+
maxQueued?: number | undefined;
|
|
1358
|
+
timeout?: number | undefined;
|
|
1359
|
+
}>;
|
|
1360
|
+
declare const ResilienceConfigSchema: z.ZodObject<{
|
|
1361
|
+
retry: z.ZodDefault<z.ZodObject<{
|
|
1362
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
1363
|
+
maxAttempts: z.ZodDefault<z.ZodNumber>;
|
|
1364
|
+
baseDelay: z.ZodDefault<z.ZodNumber>;
|
|
1365
|
+
maxDelay: z.ZodDefault<z.ZodNumber>;
|
|
1366
|
+
backoffMultiplier: z.ZodDefault<z.ZodNumber>;
|
|
1367
|
+
jitter: z.ZodDefault<z.ZodBoolean>;
|
|
1368
|
+
}, "strip", z.ZodTypeAny, {
|
|
1369
|
+
enabled: boolean;
|
|
1370
|
+
maxAttempts: number;
|
|
1371
|
+
baseDelay: number;
|
|
1372
|
+
maxDelay: number;
|
|
1373
|
+
backoffMultiplier: number;
|
|
1374
|
+
jitter: boolean;
|
|
1375
|
+
}, {
|
|
1376
|
+
enabled?: boolean | undefined;
|
|
1377
|
+
maxAttempts?: number | undefined;
|
|
1378
|
+
baseDelay?: number | undefined;
|
|
1379
|
+
maxDelay?: number | undefined;
|
|
1380
|
+
backoffMultiplier?: number | undefined;
|
|
1381
|
+
jitter?: boolean | undefined;
|
|
1382
|
+
}>>;
|
|
1383
|
+
circuitBreaker: z.ZodDefault<z.ZodObject<{
|
|
1384
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
1385
|
+
failureThreshold: z.ZodDefault<z.ZodNumber>;
|
|
1386
|
+
resetTimeout: z.ZodDefault<z.ZodNumber>;
|
|
1387
|
+
halfOpenRequests: z.ZodDefault<z.ZodNumber>;
|
|
1388
|
+
monitorInterval: z.ZodDefault<z.ZodNumber>;
|
|
1389
|
+
}, "strip", z.ZodTypeAny, {
|
|
1390
|
+
enabled: boolean;
|
|
1391
|
+
failureThreshold: number;
|
|
1392
|
+
resetTimeout: number;
|
|
1393
|
+
halfOpenRequests: number;
|
|
1394
|
+
monitorInterval: number;
|
|
1395
|
+
}, {
|
|
1396
|
+
enabled?: boolean | undefined;
|
|
1397
|
+
failureThreshold?: number | undefined;
|
|
1398
|
+
resetTimeout?: number | undefined;
|
|
1399
|
+
halfOpenRequests?: number | undefined;
|
|
1400
|
+
monitorInterval?: number | undefined;
|
|
1401
|
+
}>>;
|
|
1402
|
+
timeout: z.ZodDefault<z.ZodObject<{
|
|
1403
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
1404
|
+
default: z.ZodDefault<z.ZodNumber>;
|
|
1405
|
+
database: z.ZodDefault<z.ZodNumber>;
|
|
1406
|
+
cache: z.ZodDefault<z.ZodNumber>;
|
|
1407
|
+
storage: z.ZodDefault<z.ZodNumber>;
|
|
1408
|
+
email: z.ZodDefault<z.ZodNumber>;
|
|
1409
|
+
queue: z.ZodDefault<z.ZodNumber>;
|
|
1410
|
+
}, "strip", z.ZodTypeAny, {
|
|
1411
|
+
enabled: boolean;
|
|
1412
|
+
default: number;
|
|
1413
|
+
database: number;
|
|
1414
|
+
cache: number;
|
|
1415
|
+
storage: number;
|
|
1416
|
+
email: number;
|
|
1417
|
+
queue: number;
|
|
1418
|
+
}, {
|
|
1419
|
+
enabled?: boolean | undefined;
|
|
1420
|
+
default?: number | undefined;
|
|
1421
|
+
database?: number | undefined;
|
|
1422
|
+
cache?: number | undefined;
|
|
1423
|
+
storage?: number | undefined;
|
|
1424
|
+
email?: number | undefined;
|
|
1425
|
+
queue?: number | undefined;
|
|
1426
|
+
}>>;
|
|
1427
|
+
bulkhead: z.ZodDefault<z.ZodObject<{
|
|
1428
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
1429
|
+
maxConcurrent: z.ZodDefault<z.ZodNumber>;
|
|
1430
|
+
maxQueued: z.ZodDefault<z.ZodNumber>;
|
|
1431
|
+
timeout: z.ZodDefault<z.ZodNumber>;
|
|
1432
|
+
}, "strip", z.ZodTypeAny, {
|
|
1433
|
+
enabled: boolean;
|
|
1434
|
+
maxConcurrent: number;
|
|
1435
|
+
maxQueued: number;
|
|
1436
|
+
timeout: number;
|
|
1437
|
+
}, {
|
|
1438
|
+
enabled?: boolean | undefined;
|
|
1439
|
+
maxConcurrent?: number | undefined;
|
|
1440
|
+
maxQueued?: number | undefined;
|
|
1441
|
+
timeout?: number | undefined;
|
|
1442
|
+
}>>;
|
|
1443
|
+
}, "strip", z.ZodTypeAny, {
|
|
1444
|
+
timeout: {
|
|
1445
|
+
enabled: boolean;
|
|
1446
|
+
default: number;
|
|
1447
|
+
database: number;
|
|
1448
|
+
cache: number;
|
|
1449
|
+
storage: number;
|
|
1450
|
+
email: number;
|
|
1451
|
+
queue: number;
|
|
1452
|
+
};
|
|
1453
|
+
retry: {
|
|
1454
|
+
enabled: boolean;
|
|
1455
|
+
maxAttempts: number;
|
|
1456
|
+
baseDelay: number;
|
|
1457
|
+
maxDelay: number;
|
|
1458
|
+
backoffMultiplier: number;
|
|
1459
|
+
jitter: boolean;
|
|
1460
|
+
};
|
|
1461
|
+
circuitBreaker: {
|
|
1462
|
+
enabled: boolean;
|
|
1463
|
+
failureThreshold: number;
|
|
1464
|
+
resetTimeout: number;
|
|
1465
|
+
halfOpenRequests: number;
|
|
1466
|
+
monitorInterval: number;
|
|
1467
|
+
};
|
|
1468
|
+
bulkhead: {
|
|
1469
|
+
enabled: boolean;
|
|
1470
|
+
maxConcurrent: number;
|
|
1471
|
+
maxQueued: number;
|
|
1472
|
+
timeout: number;
|
|
1473
|
+
};
|
|
1474
|
+
}, {
|
|
1475
|
+
timeout?: {
|
|
1476
|
+
enabled?: boolean | undefined;
|
|
1477
|
+
default?: number | undefined;
|
|
1478
|
+
database?: number | undefined;
|
|
1479
|
+
cache?: number | undefined;
|
|
1480
|
+
storage?: number | undefined;
|
|
1481
|
+
email?: number | undefined;
|
|
1482
|
+
queue?: number | undefined;
|
|
1483
|
+
} | undefined;
|
|
1484
|
+
retry?: {
|
|
1485
|
+
enabled?: boolean | undefined;
|
|
1486
|
+
maxAttempts?: number | undefined;
|
|
1487
|
+
baseDelay?: number | undefined;
|
|
1488
|
+
maxDelay?: number | undefined;
|
|
1489
|
+
backoffMultiplier?: number | undefined;
|
|
1490
|
+
jitter?: boolean | undefined;
|
|
1491
|
+
} | undefined;
|
|
1492
|
+
circuitBreaker?: {
|
|
1493
|
+
enabled?: boolean | undefined;
|
|
1494
|
+
failureThreshold?: number | undefined;
|
|
1495
|
+
resetTimeout?: number | undefined;
|
|
1496
|
+
halfOpenRequests?: number | undefined;
|
|
1497
|
+
monitorInterval?: number | undefined;
|
|
1498
|
+
} | undefined;
|
|
1499
|
+
bulkhead?: {
|
|
1500
|
+
enabled?: boolean | undefined;
|
|
1501
|
+
maxConcurrent?: number | undefined;
|
|
1502
|
+
maxQueued?: number | undefined;
|
|
1503
|
+
timeout?: number | undefined;
|
|
1504
|
+
} | undefined;
|
|
1505
|
+
}>;
|
|
1506
|
+
declare const LoggingConfigSchema: z.ZodObject<{
|
|
1507
|
+
level: z.ZodDefault<z.ZodEnum<["debug", "info", "warn", "error"]>>;
|
|
1508
|
+
format: z.ZodDefault<z.ZodEnum<["json", "pretty"]>>;
|
|
1509
|
+
includeTimestamp: z.ZodDefault<z.ZodBoolean>;
|
|
1510
|
+
includeCorrelationId: z.ZodDefault<z.ZodBoolean>;
|
|
1511
|
+
redactKeys: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
1512
|
+
}, "strip", z.ZodTypeAny, {
|
|
1513
|
+
level: "debug" | "info" | "warn" | "error";
|
|
1514
|
+
format: "json" | "pretty";
|
|
1515
|
+
includeTimestamp: boolean;
|
|
1516
|
+
includeCorrelationId: boolean;
|
|
1517
|
+
redactKeys: string[];
|
|
1518
|
+
}, {
|
|
1519
|
+
level?: "debug" | "info" | "warn" | "error" | undefined;
|
|
1520
|
+
format?: "json" | "pretty" | undefined;
|
|
1521
|
+
includeTimestamp?: boolean | undefined;
|
|
1522
|
+
includeCorrelationId?: boolean | undefined;
|
|
1523
|
+
redactKeys?: string[] | undefined;
|
|
1524
|
+
}>;
|
|
1525
|
+
declare const MetricsConfigSchema: z.ZodObject<{
|
|
1526
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
1527
|
+
prefix: z.ZodDefault<z.ZodString>;
|
|
1528
|
+
defaultTags: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
1529
|
+
flushInterval: z.ZodDefault<z.ZodNumber>;
|
|
1530
|
+
histogramBuckets: z.ZodDefault<z.ZodArray<z.ZodNumber, "many">>;
|
|
1531
|
+
}, "strip", z.ZodTypeAny, {
|
|
1532
|
+
enabled: boolean;
|
|
1533
|
+
prefix: string;
|
|
1534
|
+
defaultTags: Record<string, string>;
|
|
1535
|
+
flushInterval: number;
|
|
1536
|
+
histogramBuckets: number[];
|
|
1537
|
+
}, {
|
|
1538
|
+
enabled?: boolean | undefined;
|
|
1539
|
+
prefix?: string | undefined;
|
|
1540
|
+
defaultTags?: Record<string, string> | undefined;
|
|
1541
|
+
flushInterval?: number | undefined;
|
|
1542
|
+
histogramBuckets?: number[] | undefined;
|
|
1543
|
+
}>;
|
|
1544
|
+
declare const TracingConfigSchema: z.ZodObject<{
|
|
1545
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
1546
|
+
provider: z.ZodDefault<z.ZodEnum<["noop", "memory", "otlp"]>>;
|
|
1547
|
+
serviceName: z.ZodOptional<z.ZodString>;
|
|
1548
|
+
serviceVersion: z.ZodOptional<z.ZodString>;
|
|
1549
|
+
environment: z.ZodOptional<z.ZodString>;
|
|
1550
|
+
sampleRate: z.ZodDefault<z.ZodNumber>;
|
|
1551
|
+
propagateContext: z.ZodDefault<z.ZodBoolean>;
|
|
1552
|
+
endpoint: z.ZodOptional<z.ZodString>;
|
|
1553
|
+
exporterType: z.ZodDefault<z.ZodEnum<["otlp-http", "otlp-grpc", "console"]>>;
|
|
1554
|
+
}, "strip", z.ZodTypeAny, {
|
|
1555
|
+
provider: "otlp" | "memory" | "noop";
|
|
1556
|
+
enabled: boolean;
|
|
1557
|
+
sampleRate: number;
|
|
1558
|
+
propagateContext: boolean;
|
|
1559
|
+
exporterType: "console" | "otlp-http" | "otlp-grpc";
|
|
1560
|
+
environment?: string | undefined;
|
|
1561
|
+
endpoint?: string | undefined;
|
|
1562
|
+
serviceName?: string | undefined;
|
|
1563
|
+
serviceVersion?: string | undefined;
|
|
1564
|
+
}, {
|
|
1565
|
+
environment?: string | undefined;
|
|
1566
|
+
provider?: "otlp" | "memory" | "noop" | undefined;
|
|
1567
|
+
endpoint?: string | undefined;
|
|
1568
|
+
enabled?: boolean | undefined;
|
|
1569
|
+
serviceName?: string | undefined;
|
|
1570
|
+
serviceVersion?: string | undefined;
|
|
1571
|
+
sampleRate?: number | undefined;
|
|
1572
|
+
propagateContext?: boolean | undefined;
|
|
1573
|
+
exporterType?: "console" | "otlp-http" | "otlp-grpc" | undefined;
|
|
1574
|
+
}>;
|
|
1575
|
+
declare const ObservabilityConfigSchema: z.ZodObject<{
|
|
1576
|
+
logging: z.ZodDefault<z.ZodObject<{
|
|
1577
|
+
level: z.ZodDefault<z.ZodEnum<["debug", "info", "warn", "error"]>>;
|
|
1578
|
+
format: z.ZodDefault<z.ZodEnum<["json", "pretty"]>>;
|
|
1579
|
+
includeTimestamp: z.ZodDefault<z.ZodBoolean>;
|
|
1580
|
+
includeCorrelationId: z.ZodDefault<z.ZodBoolean>;
|
|
1581
|
+
redactKeys: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
1582
|
+
}, "strip", z.ZodTypeAny, {
|
|
1583
|
+
level: "debug" | "info" | "warn" | "error";
|
|
1584
|
+
format: "json" | "pretty";
|
|
1585
|
+
includeTimestamp: boolean;
|
|
1586
|
+
includeCorrelationId: boolean;
|
|
1587
|
+
redactKeys: string[];
|
|
1588
|
+
}, {
|
|
1589
|
+
level?: "debug" | "info" | "warn" | "error" | undefined;
|
|
1590
|
+
format?: "json" | "pretty" | undefined;
|
|
1591
|
+
includeTimestamp?: boolean | undefined;
|
|
1592
|
+
includeCorrelationId?: boolean | undefined;
|
|
1593
|
+
redactKeys?: string[] | undefined;
|
|
1594
|
+
}>>;
|
|
1595
|
+
metrics: z.ZodDefault<z.ZodObject<{
|
|
1596
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
1597
|
+
prefix: z.ZodDefault<z.ZodString>;
|
|
1598
|
+
defaultTags: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
1599
|
+
flushInterval: z.ZodDefault<z.ZodNumber>;
|
|
1600
|
+
histogramBuckets: z.ZodDefault<z.ZodArray<z.ZodNumber, "many">>;
|
|
1601
|
+
}, "strip", z.ZodTypeAny, {
|
|
1602
|
+
enabled: boolean;
|
|
1603
|
+
prefix: string;
|
|
1604
|
+
defaultTags: Record<string, string>;
|
|
1605
|
+
flushInterval: number;
|
|
1606
|
+
histogramBuckets: number[];
|
|
1607
|
+
}, {
|
|
1608
|
+
enabled?: boolean | undefined;
|
|
1609
|
+
prefix?: string | undefined;
|
|
1610
|
+
defaultTags?: Record<string, string> | undefined;
|
|
1611
|
+
flushInterval?: number | undefined;
|
|
1612
|
+
histogramBuckets?: number[] | undefined;
|
|
1613
|
+
}>>;
|
|
1614
|
+
tracing: z.ZodDefault<z.ZodObject<{
|
|
1615
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
1616
|
+
provider: z.ZodDefault<z.ZodEnum<["noop", "memory", "otlp"]>>;
|
|
1617
|
+
serviceName: z.ZodOptional<z.ZodString>;
|
|
1618
|
+
serviceVersion: z.ZodOptional<z.ZodString>;
|
|
1619
|
+
environment: z.ZodOptional<z.ZodString>;
|
|
1620
|
+
sampleRate: z.ZodDefault<z.ZodNumber>;
|
|
1621
|
+
propagateContext: z.ZodDefault<z.ZodBoolean>;
|
|
1622
|
+
endpoint: z.ZodOptional<z.ZodString>;
|
|
1623
|
+
exporterType: z.ZodDefault<z.ZodEnum<["otlp-http", "otlp-grpc", "console"]>>;
|
|
1624
|
+
}, "strip", z.ZodTypeAny, {
|
|
1625
|
+
provider: "otlp" | "memory" | "noop";
|
|
1626
|
+
enabled: boolean;
|
|
1627
|
+
sampleRate: number;
|
|
1628
|
+
propagateContext: boolean;
|
|
1629
|
+
exporterType: "console" | "otlp-http" | "otlp-grpc";
|
|
1630
|
+
environment?: string | undefined;
|
|
1631
|
+
endpoint?: string | undefined;
|
|
1632
|
+
serviceName?: string | undefined;
|
|
1633
|
+
serviceVersion?: string | undefined;
|
|
1634
|
+
}, {
|
|
1635
|
+
environment?: string | undefined;
|
|
1636
|
+
provider?: "otlp" | "memory" | "noop" | undefined;
|
|
1637
|
+
endpoint?: string | undefined;
|
|
1638
|
+
enabled?: boolean | undefined;
|
|
1639
|
+
serviceName?: string | undefined;
|
|
1640
|
+
serviceVersion?: string | undefined;
|
|
1641
|
+
sampleRate?: number | undefined;
|
|
1642
|
+
propagateContext?: boolean | undefined;
|
|
1643
|
+
exporterType?: "console" | "otlp-http" | "otlp-grpc" | undefined;
|
|
1644
|
+
}>>;
|
|
1645
|
+
}, "strip", z.ZodTypeAny, {
|
|
1646
|
+
logging: {
|
|
1647
|
+
level: "debug" | "info" | "warn" | "error";
|
|
1648
|
+
format: "json" | "pretty";
|
|
1649
|
+
includeTimestamp: boolean;
|
|
1650
|
+
includeCorrelationId: boolean;
|
|
1651
|
+
redactKeys: string[];
|
|
1652
|
+
};
|
|
1653
|
+
metrics: {
|
|
1654
|
+
enabled: boolean;
|
|
1655
|
+
prefix: string;
|
|
1656
|
+
defaultTags: Record<string, string>;
|
|
1657
|
+
flushInterval: number;
|
|
1658
|
+
histogramBuckets: number[];
|
|
1659
|
+
};
|
|
1660
|
+
tracing: {
|
|
1661
|
+
provider: "otlp" | "memory" | "noop";
|
|
1662
|
+
enabled: boolean;
|
|
1663
|
+
sampleRate: number;
|
|
1664
|
+
propagateContext: boolean;
|
|
1665
|
+
exporterType: "console" | "otlp-http" | "otlp-grpc";
|
|
1666
|
+
environment?: string | undefined;
|
|
1667
|
+
endpoint?: string | undefined;
|
|
1668
|
+
serviceName?: string | undefined;
|
|
1669
|
+
serviceVersion?: string | undefined;
|
|
1670
|
+
};
|
|
1671
|
+
}, {
|
|
1672
|
+
logging?: {
|
|
1673
|
+
level?: "debug" | "info" | "warn" | "error" | undefined;
|
|
1674
|
+
format?: "json" | "pretty" | undefined;
|
|
1675
|
+
includeTimestamp?: boolean | undefined;
|
|
1676
|
+
includeCorrelationId?: boolean | undefined;
|
|
1677
|
+
redactKeys?: string[] | undefined;
|
|
1678
|
+
} | undefined;
|
|
1679
|
+
metrics?: {
|
|
1680
|
+
enabled?: boolean | undefined;
|
|
1681
|
+
prefix?: string | undefined;
|
|
1682
|
+
defaultTags?: Record<string, string> | undefined;
|
|
1683
|
+
flushInterval?: number | undefined;
|
|
1684
|
+
histogramBuckets?: number[] | undefined;
|
|
1685
|
+
} | undefined;
|
|
1686
|
+
tracing?: {
|
|
1687
|
+
environment?: string | undefined;
|
|
1688
|
+
provider?: "otlp" | "memory" | "noop" | undefined;
|
|
1689
|
+
endpoint?: string | undefined;
|
|
1690
|
+
enabled?: boolean | undefined;
|
|
1691
|
+
serviceName?: string | undefined;
|
|
1692
|
+
serviceVersion?: string | undefined;
|
|
1693
|
+
sampleRate?: number | undefined;
|
|
1694
|
+
propagateContext?: boolean | undefined;
|
|
1695
|
+
exporterType?: "console" | "otlp-http" | "otlp-grpc" | undefined;
|
|
1696
|
+
} | undefined;
|
|
1697
|
+
}>;
|
|
1698
|
+
declare const MiddlewareConfigSchema: z.ZodObject<{
|
|
1699
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
1700
|
+
logging: z.ZodDefault<z.ZodBoolean>;
|
|
1701
|
+
metrics: z.ZodDefault<z.ZodBoolean>;
|
|
1702
|
+
slowQuery: z.ZodDefault<z.ZodObject<{
|
|
1703
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
1704
|
+
thresholdMs: z.ZodDefault<z.ZodNumber>;
|
|
1705
|
+
}, "strip", z.ZodTypeAny, {
|
|
1706
|
+
enabled: boolean;
|
|
1707
|
+
thresholdMs: number;
|
|
1708
|
+
}, {
|
|
1709
|
+
enabled?: boolean | undefined;
|
|
1710
|
+
thresholdMs?: number | undefined;
|
|
1711
|
+
}>>;
|
|
1712
|
+
cache: z.ZodDefault<z.ZodObject<{
|
|
1713
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
1714
|
+
defaultTTL: z.ZodDefault<z.ZodNumber>;
|
|
1715
|
+
}, "strip", z.ZodTypeAny, {
|
|
1716
|
+
defaultTTL: number;
|
|
1717
|
+
enabled: boolean;
|
|
1718
|
+
}, {
|
|
1719
|
+
defaultTTL?: number | undefined;
|
|
1720
|
+
enabled?: boolean | undefined;
|
|
1721
|
+
}>>;
|
|
1722
|
+
}, "strip", z.ZodTypeAny, {
|
|
1723
|
+
enabled: boolean;
|
|
1724
|
+
cache: {
|
|
1725
|
+
defaultTTL: number;
|
|
1726
|
+
enabled: boolean;
|
|
1727
|
+
};
|
|
1728
|
+
logging: boolean;
|
|
1729
|
+
metrics: boolean;
|
|
1730
|
+
slowQuery: {
|
|
1731
|
+
enabled: boolean;
|
|
1732
|
+
thresholdMs: number;
|
|
1733
|
+
};
|
|
1734
|
+
}, {
|
|
1735
|
+
enabled?: boolean | undefined;
|
|
1736
|
+
cache?: {
|
|
1737
|
+
defaultTTL?: number | undefined;
|
|
1738
|
+
enabled?: boolean | undefined;
|
|
1739
|
+
} | undefined;
|
|
1740
|
+
logging?: boolean | undefined;
|
|
1741
|
+
metrics?: boolean | undefined;
|
|
1742
|
+
slowQuery?: {
|
|
1743
|
+
enabled?: boolean | undefined;
|
|
1744
|
+
thresholdMs?: number | undefined;
|
|
1745
|
+
} | undefined;
|
|
1746
|
+
}>;
|
|
1747
|
+
declare const PlatformConfigSchema: z.ZodObject<{
|
|
1748
|
+
database: z.ZodDefault<z.ZodEffects<z.ZodObject<{
|
|
1749
|
+
provider: z.ZodDefault<z.ZodEnum<["memory", "postgres", "supabase"]>>;
|
|
1750
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1751
|
+
connectionString: z.ZodOptional<z.ZodString>;
|
|
1752
|
+
supabaseUrl: z.ZodOptional<z.ZodString>;
|
|
1753
|
+
supabaseAnonKey: z.ZodOptional<z.ZodString>;
|
|
1754
|
+
supabaseServiceRoleKey: z.ZodOptional<z.ZodString>;
|
|
1755
|
+
poolSize: z.ZodDefault<z.ZodNumber>;
|
|
1756
|
+
connectionTimeout: z.ZodDefault<z.ZodNumber>;
|
|
1757
|
+
ssl: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodObject<{
|
|
1758
|
+
rejectUnauthorized: z.ZodOptional<z.ZodBoolean>;
|
|
1759
|
+
}, "strip", z.ZodTypeAny, {
|
|
1760
|
+
rejectUnauthorized?: boolean | undefined;
|
|
1761
|
+
}, {
|
|
1762
|
+
rejectUnauthorized?: boolean | undefined;
|
|
1763
|
+
}>]>>;
|
|
1764
|
+
}, "strip", z.ZodTypeAny, {
|
|
1765
|
+
provider: "memory" | "postgres" | "supabase";
|
|
1766
|
+
poolSize: number;
|
|
1767
|
+
connectionTimeout: number;
|
|
1768
|
+
url?: string | undefined;
|
|
1769
|
+
connectionString?: string | undefined;
|
|
1770
|
+
supabaseUrl?: string | undefined;
|
|
1771
|
+
supabaseAnonKey?: string | undefined;
|
|
1772
|
+
supabaseServiceRoleKey?: string | undefined;
|
|
1773
|
+
ssl?: boolean | {
|
|
1774
|
+
rejectUnauthorized?: boolean | undefined;
|
|
1775
|
+
} | undefined;
|
|
1776
|
+
}, {
|
|
1777
|
+
provider?: "memory" | "postgres" | "supabase" | undefined;
|
|
1778
|
+
url?: string | undefined;
|
|
1779
|
+
connectionString?: string | undefined;
|
|
1780
|
+
supabaseUrl?: string | undefined;
|
|
1781
|
+
supabaseAnonKey?: string | undefined;
|
|
1782
|
+
supabaseServiceRoleKey?: string | undefined;
|
|
1783
|
+
poolSize?: number | undefined;
|
|
1784
|
+
connectionTimeout?: number | undefined;
|
|
1785
|
+
ssl?: boolean | {
|
|
1786
|
+
rejectUnauthorized?: boolean | undefined;
|
|
1787
|
+
} | undefined;
|
|
1788
|
+
}>, {
|
|
1789
|
+
provider: "memory" | "postgres" | "supabase";
|
|
1790
|
+
poolSize: number;
|
|
1791
|
+
connectionTimeout: number;
|
|
1792
|
+
url?: string | undefined;
|
|
1793
|
+
connectionString?: string | undefined;
|
|
1794
|
+
supabaseUrl?: string | undefined;
|
|
1795
|
+
supabaseAnonKey?: string | undefined;
|
|
1796
|
+
supabaseServiceRoleKey?: string | undefined;
|
|
1797
|
+
ssl?: boolean | {
|
|
1798
|
+
rejectUnauthorized?: boolean | undefined;
|
|
1799
|
+
} | undefined;
|
|
1800
|
+
}, {
|
|
1801
|
+
provider?: "memory" | "postgres" | "supabase" | undefined;
|
|
1802
|
+
url?: string | undefined;
|
|
1803
|
+
connectionString?: string | undefined;
|
|
1804
|
+
supabaseUrl?: string | undefined;
|
|
1805
|
+
supabaseAnonKey?: string | undefined;
|
|
1806
|
+
supabaseServiceRoleKey?: string | undefined;
|
|
1807
|
+
poolSize?: number | undefined;
|
|
1808
|
+
connectionTimeout?: number | undefined;
|
|
1809
|
+
ssl?: boolean | {
|
|
1810
|
+
rejectUnauthorized?: boolean | undefined;
|
|
1811
|
+
} | undefined;
|
|
1812
|
+
}>>;
|
|
1813
|
+
cache: z.ZodDefault<z.ZodEffects<z.ZodObject<{
|
|
1814
|
+
provider: z.ZodDefault<z.ZodEnum<["memory", "redis", "upstash"]>>;
|
|
1815
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1816
|
+
upstashUrl: z.ZodOptional<z.ZodString>;
|
|
1817
|
+
upstashToken: z.ZodOptional<z.ZodString>;
|
|
1818
|
+
defaultTTL: z.ZodDefault<z.ZodNumber>;
|
|
1819
|
+
keyPrefix: z.ZodDefault<z.ZodString>;
|
|
1820
|
+
maxRetries: z.ZodDefault<z.ZodNumber>;
|
|
1821
|
+
}, "strip", z.ZodTypeAny, {
|
|
1822
|
+
provider: "memory" | "redis" | "upstash";
|
|
1823
|
+
defaultTTL: number;
|
|
1824
|
+
keyPrefix: string;
|
|
1825
|
+
maxRetries: number;
|
|
1826
|
+
url?: string | undefined;
|
|
1827
|
+
upstashUrl?: string | undefined;
|
|
1828
|
+
upstashToken?: string | undefined;
|
|
1829
|
+
}, {
|
|
1830
|
+
provider?: "memory" | "redis" | "upstash" | undefined;
|
|
1831
|
+
url?: string | undefined;
|
|
1832
|
+
upstashUrl?: string | undefined;
|
|
1833
|
+
upstashToken?: string | undefined;
|
|
1834
|
+
defaultTTL?: number | undefined;
|
|
1835
|
+
keyPrefix?: string | undefined;
|
|
1836
|
+
maxRetries?: number | undefined;
|
|
1837
|
+
}>, {
|
|
1838
|
+
provider: "memory" | "redis" | "upstash";
|
|
1839
|
+
defaultTTL: number;
|
|
1840
|
+
keyPrefix: string;
|
|
1841
|
+
maxRetries: number;
|
|
1842
|
+
url?: string | undefined;
|
|
1843
|
+
upstashUrl?: string | undefined;
|
|
1844
|
+
upstashToken?: string | undefined;
|
|
1845
|
+
}, {
|
|
1846
|
+
provider?: "memory" | "redis" | "upstash" | undefined;
|
|
1847
|
+
url?: string | undefined;
|
|
1848
|
+
upstashUrl?: string | undefined;
|
|
1849
|
+
upstashToken?: string | undefined;
|
|
1850
|
+
defaultTTL?: number | undefined;
|
|
1851
|
+
keyPrefix?: string | undefined;
|
|
1852
|
+
maxRetries?: number | undefined;
|
|
1853
|
+
}>>;
|
|
1854
|
+
storage: z.ZodDefault<z.ZodEffects<z.ZodObject<{
|
|
1855
|
+
provider: z.ZodDefault<z.ZodEnum<["memory", "s3", "minio", "r2", "supabase"]>>;
|
|
1856
|
+
endpoint: z.ZodOptional<z.ZodString>;
|
|
1857
|
+
region: z.ZodDefault<z.ZodString>;
|
|
1858
|
+
accessKey: z.ZodOptional<z.ZodString>;
|
|
1859
|
+
secretKey: z.ZodOptional<z.ZodString>;
|
|
1860
|
+
bucket: z.ZodOptional<z.ZodString>;
|
|
1861
|
+
publicUrl: z.ZodOptional<z.ZodString>;
|
|
1862
|
+
forcePathStyle: z.ZodDefault<z.ZodBoolean>;
|
|
1863
|
+
signedUrlExpiry: z.ZodDefault<z.ZodNumber>;
|
|
1864
|
+
}, "strip", z.ZodTypeAny, {
|
|
1865
|
+
provider: "memory" | "supabase" | "s3" | "minio" | "r2";
|
|
1866
|
+
region: string;
|
|
1867
|
+
forcePathStyle: boolean;
|
|
1868
|
+
signedUrlExpiry: number;
|
|
1869
|
+
endpoint?: string | undefined;
|
|
1870
|
+
accessKey?: string | undefined;
|
|
1871
|
+
secretKey?: string | undefined;
|
|
1872
|
+
bucket?: string | undefined;
|
|
1873
|
+
publicUrl?: string | undefined;
|
|
1874
|
+
}, {
|
|
1875
|
+
provider?: "memory" | "supabase" | "s3" | "minio" | "r2" | undefined;
|
|
1876
|
+
endpoint?: string | undefined;
|
|
1877
|
+
region?: string | undefined;
|
|
1878
|
+
accessKey?: string | undefined;
|
|
1879
|
+
secretKey?: string | undefined;
|
|
1880
|
+
bucket?: string | undefined;
|
|
1881
|
+
publicUrl?: string | undefined;
|
|
1882
|
+
forcePathStyle?: boolean | undefined;
|
|
1883
|
+
signedUrlExpiry?: number | undefined;
|
|
1884
|
+
}>, {
|
|
1885
|
+
provider: "memory" | "supabase" | "s3" | "minio" | "r2";
|
|
1886
|
+
region: string;
|
|
1887
|
+
forcePathStyle: boolean;
|
|
1888
|
+
signedUrlExpiry: number;
|
|
1889
|
+
endpoint?: string | undefined;
|
|
1890
|
+
accessKey?: string | undefined;
|
|
1891
|
+
secretKey?: string | undefined;
|
|
1892
|
+
bucket?: string | undefined;
|
|
1893
|
+
publicUrl?: string | undefined;
|
|
1894
|
+
}, {
|
|
1895
|
+
provider?: "memory" | "supabase" | "s3" | "minio" | "r2" | undefined;
|
|
1896
|
+
endpoint?: string | undefined;
|
|
1897
|
+
region?: string | undefined;
|
|
1898
|
+
accessKey?: string | undefined;
|
|
1899
|
+
secretKey?: string | undefined;
|
|
1900
|
+
bucket?: string | undefined;
|
|
1901
|
+
publicUrl?: string | undefined;
|
|
1902
|
+
forcePathStyle?: boolean | undefined;
|
|
1903
|
+
signedUrlExpiry?: number | undefined;
|
|
1904
|
+
}>>;
|
|
1905
|
+
email: z.ZodDefault<z.ZodEffects<z.ZodObject<{
|
|
1906
|
+
provider: z.ZodDefault<z.ZodEnum<["memory", "console", "smtp", "resend"]>>;
|
|
1907
|
+
host: z.ZodOptional<z.ZodString>;
|
|
1908
|
+
port: z.ZodOptional<z.ZodNumber>;
|
|
1909
|
+
secure: z.ZodDefault<z.ZodBoolean>;
|
|
1910
|
+
username: z.ZodOptional<z.ZodString>;
|
|
1911
|
+
password: z.ZodOptional<z.ZodString>;
|
|
1912
|
+
apiKey: z.ZodOptional<z.ZodString>;
|
|
1913
|
+
from: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodString]>>;
|
|
1914
|
+
replyTo: z.ZodOptional<z.ZodString>;
|
|
1915
|
+
rateLimitPerSecond: z.ZodDefault<z.ZodNumber>;
|
|
1916
|
+
}, "strip", z.ZodTypeAny, {
|
|
1917
|
+
provider: "console" | "memory" | "smtp" | "resend";
|
|
1918
|
+
secure: boolean;
|
|
1919
|
+
rateLimitPerSecond: number;
|
|
1920
|
+
host?: string | undefined;
|
|
1921
|
+
port?: number | undefined;
|
|
1922
|
+
username?: string | undefined;
|
|
1923
|
+
password?: string | undefined;
|
|
1924
|
+
apiKey?: string | undefined;
|
|
1925
|
+
from?: string | undefined;
|
|
1926
|
+
replyTo?: string | undefined;
|
|
1927
|
+
}, {
|
|
1928
|
+
provider?: "console" | "memory" | "smtp" | "resend" | undefined;
|
|
1929
|
+
host?: string | undefined;
|
|
1930
|
+
port?: number | undefined;
|
|
1931
|
+
secure?: boolean | undefined;
|
|
1932
|
+
username?: string | undefined;
|
|
1933
|
+
password?: string | undefined;
|
|
1934
|
+
apiKey?: string | undefined;
|
|
1935
|
+
from?: string | undefined;
|
|
1936
|
+
replyTo?: string | undefined;
|
|
1937
|
+
rateLimitPerSecond?: number | undefined;
|
|
1938
|
+
}>, {
|
|
1939
|
+
provider: "console" | "memory" | "smtp" | "resend";
|
|
1940
|
+
secure: boolean;
|
|
1941
|
+
rateLimitPerSecond: number;
|
|
1942
|
+
host?: string | undefined;
|
|
1943
|
+
port?: number | undefined;
|
|
1944
|
+
username?: string | undefined;
|
|
1945
|
+
password?: string | undefined;
|
|
1946
|
+
apiKey?: string | undefined;
|
|
1947
|
+
from?: string | undefined;
|
|
1948
|
+
replyTo?: string | undefined;
|
|
1949
|
+
}, {
|
|
1950
|
+
provider?: "console" | "memory" | "smtp" | "resend" | undefined;
|
|
1951
|
+
host?: string | undefined;
|
|
1952
|
+
port?: number | undefined;
|
|
1953
|
+
secure?: boolean | undefined;
|
|
1954
|
+
username?: string | undefined;
|
|
1955
|
+
password?: string | undefined;
|
|
1956
|
+
apiKey?: string | undefined;
|
|
1957
|
+
from?: string | undefined;
|
|
1958
|
+
replyTo?: string | undefined;
|
|
1959
|
+
rateLimitPerSecond?: number | undefined;
|
|
1960
|
+
}>>;
|
|
1961
|
+
queue: z.ZodDefault<z.ZodEffects<z.ZodObject<{
|
|
1962
|
+
provider: z.ZodDefault<z.ZodEnum<["memory", "bullmq"]>>;
|
|
1963
|
+
redisUrl: z.ZodOptional<z.ZodString>;
|
|
1964
|
+
queueName: z.ZodDefault<z.ZodString>;
|
|
1965
|
+
concurrency: z.ZodDefault<z.ZodNumber>;
|
|
1966
|
+
maxRetries: z.ZodDefault<z.ZodNumber>;
|
|
1967
|
+
retryDelay: z.ZodDefault<z.ZodNumber>;
|
|
1968
|
+
removeOnComplete: z.ZodDefault<z.ZodBoolean>;
|
|
1969
|
+
removeOnFail: z.ZodDefault<z.ZodBoolean>;
|
|
1970
|
+
}, "strip", z.ZodTypeAny, {
|
|
1971
|
+
provider: "memory" | "bullmq";
|
|
1972
|
+
maxRetries: number;
|
|
1973
|
+
queueName: string;
|
|
1974
|
+
concurrency: number;
|
|
1975
|
+
retryDelay: number;
|
|
1976
|
+
removeOnComplete: boolean;
|
|
1977
|
+
removeOnFail: boolean;
|
|
1978
|
+
redisUrl?: string | undefined;
|
|
1979
|
+
}, {
|
|
1980
|
+
provider?: "memory" | "bullmq" | undefined;
|
|
1981
|
+
maxRetries?: number | undefined;
|
|
1982
|
+
redisUrl?: string | undefined;
|
|
1983
|
+
queueName?: string | undefined;
|
|
1984
|
+
concurrency?: number | undefined;
|
|
1985
|
+
retryDelay?: number | undefined;
|
|
1986
|
+
removeOnComplete?: boolean | undefined;
|
|
1987
|
+
removeOnFail?: boolean | undefined;
|
|
1988
|
+
}>, {
|
|
1989
|
+
provider: "memory" | "bullmq";
|
|
1990
|
+
maxRetries: number;
|
|
1991
|
+
queueName: string;
|
|
1992
|
+
concurrency: number;
|
|
1993
|
+
retryDelay: number;
|
|
1994
|
+
removeOnComplete: boolean;
|
|
1995
|
+
removeOnFail: boolean;
|
|
1996
|
+
redisUrl?: string | undefined;
|
|
1997
|
+
}, {
|
|
1998
|
+
provider?: "memory" | "bullmq" | undefined;
|
|
1999
|
+
maxRetries?: number | undefined;
|
|
2000
|
+
redisUrl?: string | undefined;
|
|
2001
|
+
queueName?: string | undefined;
|
|
2002
|
+
concurrency?: number | undefined;
|
|
2003
|
+
retryDelay?: number | undefined;
|
|
2004
|
+
removeOnComplete?: boolean | undefined;
|
|
2005
|
+
removeOnFail?: boolean | undefined;
|
|
2006
|
+
}>>;
|
|
2007
|
+
resilience: z.ZodDefault<z.ZodObject<{
|
|
2008
|
+
retry: z.ZodDefault<z.ZodObject<{
|
|
2009
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
2010
|
+
maxAttempts: z.ZodDefault<z.ZodNumber>;
|
|
2011
|
+
baseDelay: z.ZodDefault<z.ZodNumber>;
|
|
2012
|
+
maxDelay: z.ZodDefault<z.ZodNumber>;
|
|
2013
|
+
backoffMultiplier: z.ZodDefault<z.ZodNumber>;
|
|
2014
|
+
jitter: z.ZodDefault<z.ZodBoolean>;
|
|
2015
|
+
}, "strip", z.ZodTypeAny, {
|
|
2016
|
+
enabled: boolean;
|
|
2017
|
+
maxAttempts: number;
|
|
2018
|
+
baseDelay: number;
|
|
2019
|
+
maxDelay: number;
|
|
2020
|
+
backoffMultiplier: number;
|
|
2021
|
+
jitter: boolean;
|
|
2022
|
+
}, {
|
|
2023
|
+
enabled?: boolean | undefined;
|
|
2024
|
+
maxAttempts?: number | undefined;
|
|
2025
|
+
baseDelay?: number | undefined;
|
|
2026
|
+
maxDelay?: number | undefined;
|
|
2027
|
+
backoffMultiplier?: number | undefined;
|
|
2028
|
+
jitter?: boolean | undefined;
|
|
2029
|
+
}>>;
|
|
2030
|
+
circuitBreaker: z.ZodDefault<z.ZodObject<{
|
|
2031
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
2032
|
+
failureThreshold: z.ZodDefault<z.ZodNumber>;
|
|
2033
|
+
resetTimeout: z.ZodDefault<z.ZodNumber>;
|
|
2034
|
+
halfOpenRequests: z.ZodDefault<z.ZodNumber>;
|
|
2035
|
+
monitorInterval: z.ZodDefault<z.ZodNumber>;
|
|
2036
|
+
}, "strip", z.ZodTypeAny, {
|
|
2037
|
+
enabled: boolean;
|
|
2038
|
+
failureThreshold: number;
|
|
2039
|
+
resetTimeout: number;
|
|
2040
|
+
halfOpenRequests: number;
|
|
2041
|
+
monitorInterval: number;
|
|
2042
|
+
}, {
|
|
2043
|
+
enabled?: boolean | undefined;
|
|
2044
|
+
failureThreshold?: number | undefined;
|
|
2045
|
+
resetTimeout?: number | undefined;
|
|
2046
|
+
halfOpenRequests?: number | undefined;
|
|
2047
|
+
monitorInterval?: number | undefined;
|
|
2048
|
+
}>>;
|
|
2049
|
+
timeout: z.ZodDefault<z.ZodObject<{
|
|
2050
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
2051
|
+
default: z.ZodDefault<z.ZodNumber>;
|
|
2052
|
+
database: z.ZodDefault<z.ZodNumber>;
|
|
2053
|
+
cache: z.ZodDefault<z.ZodNumber>;
|
|
2054
|
+
storage: z.ZodDefault<z.ZodNumber>;
|
|
2055
|
+
email: z.ZodDefault<z.ZodNumber>;
|
|
2056
|
+
queue: z.ZodDefault<z.ZodNumber>;
|
|
2057
|
+
}, "strip", z.ZodTypeAny, {
|
|
2058
|
+
enabled: boolean;
|
|
2059
|
+
default: number;
|
|
2060
|
+
database: number;
|
|
2061
|
+
cache: number;
|
|
2062
|
+
storage: number;
|
|
2063
|
+
email: number;
|
|
2064
|
+
queue: number;
|
|
2065
|
+
}, {
|
|
2066
|
+
enabled?: boolean | undefined;
|
|
2067
|
+
default?: number | undefined;
|
|
2068
|
+
database?: number | undefined;
|
|
2069
|
+
cache?: number | undefined;
|
|
2070
|
+
storage?: number | undefined;
|
|
2071
|
+
email?: number | undefined;
|
|
2072
|
+
queue?: number | undefined;
|
|
2073
|
+
}>>;
|
|
2074
|
+
bulkhead: z.ZodDefault<z.ZodObject<{
|
|
2075
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
2076
|
+
maxConcurrent: z.ZodDefault<z.ZodNumber>;
|
|
2077
|
+
maxQueued: z.ZodDefault<z.ZodNumber>;
|
|
2078
|
+
timeout: z.ZodDefault<z.ZodNumber>;
|
|
2079
|
+
}, "strip", z.ZodTypeAny, {
|
|
2080
|
+
enabled: boolean;
|
|
2081
|
+
maxConcurrent: number;
|
|
2082
|
+
maxQueued: number;
|
|
2083
|
+
timeout: number;
|
|
2084
|
+
}, {
|
|
2085
|
+
enabled?: boolean | undefined;
|
|
2086
|
+
maxConcurrent?: number | undefined;
|
|
2087
|
+
maxQueued?: number | undefined;
|
|
2088
|
+
timeout?: number | undefined;
|
|
2089
|
+
}>>;
|
|
2090
|
+
}, "strip", z.ZodTypeAny, {
|
|
2091
|
+
timeout: {
|
|
2092
|
+
enabled: boolean;
|
|
2093
|
+
default: number;
|
|
2094
|
+
database: number;
|
|
2095
|
+
cache: number;
|
|
2096
|
+
storage: number;
|
|
2097
|
+
email: number;
|
|
2098
|
+
queue: number;
|
|
2099
|
+
};
|
|
2100
|
+
retry: {
|
|
2101
|
+
enabled: boolean;
|
|
2102
|
+
maxAttempts: number;
|
|
2103
|
+
baseDelay: number;
|
|
2104
|
+
maxDelay: number;
|
|
2105
|
+
backoffMultiplier: number;
|
|
2106
|
+
jitter: boolean;
|
|
2107
|
+
};
|
|
2108
|
+
circuitBreaker: {
|
|
2109
|
+
enabled: boolean;
|
|
2110
|
+
failureThreshold: number;
|
|
2111
|
+
resetTimeout: number;
|
|
2112
|
+
halfOpenRequests: number;
|
|
2113
|
+
monitorInterval: number;
|
|
2114
|
+
};
|
|
2115
|
+
bulkhead: {
|
|
2116
|
+
enabled: boolean;
|
|
2117
|
+
maxConcurrent: number;
|
|
2118
|
+
maxQueued: number;
|
|
2119
|
+
timeout: number;
|
|
2120
|
+
};
|
|
2121
|
+
}, {
|
|
2122
|
+
timeout?: {
|
|
2123
|
+
enabled?: boolean | undefined;
|
|
2124
|
+
default?: number | undefined;
|
|
2125
|
+
database?: number | undefined;
|
|
2126
|
+
cache?: number | undefined;
|
|
2127
|
+
storage?: number | undefined;
|
|
2128
|
+
email?: number | undefined;
|
|
2129
|
+
queue?: number | undefined;
|
|
2130
|
+
} | undefined;
|
|
2131
|
+
retry?: {
|
|
2132
|
+
enabled?: boolean | undefined;
|
|
2133
|
+
maxAttempts?: number | undefined;
|
|
2134
|
+
baseDelay?: number | undefined;
|
|
2135
|
+
maxDelay?: number | undefined;
|
|
2136
|
+
backoffMultiplier?: number | undefined;
|
|
2137
|
+
jitter?: boolean | undefined;
|
|
2138
|
+
} | undefined;
|
|
2139
|
+
circuitBreaker?: {
|
|
2140
|
+
enabled?: boolean | undefined;
|
|
2141
|
+
failureThreshold?: number | undefined;
|
|
2142
|
+
resetTimeout?: number | undefined;
|
|
2143
|
+
halfOpenRequests?: number | undefined;
|
|
2144
|
+
monitorInterval?: number | undefined;
|
|
2145
|
+
} | undefined;
|
|
2146
|
+
bulkhead?: {
|
|
2147
|
+
enabled?: boolean | undefined;
|
|
2148
|
+
maxConcurrent?: number | undefined;
|
|
2149
|
+
maxQueued?: number | undefined;
|
|
2150
|
+
timeout?: number | undefined;
|
|
2151
|
+
} | undefined;
|
|
2152
|
+
}>>;
|
|
2153
|
+
observability: z.ZodDefault<z.ZodObject<{
|
|
2154
|
+
logging: z.ZodDefault<z.ZodObject<{
|
|
2155
|
+
level: z.ZodDefault<z.ZodEnum<["debug", "info", "warn", "error"]>>;
|
|
2156
|
+
format: z.ZodDefault<z.ZodEnum<["json", "pretty"]>>;
|
|
2157
|
+
includeTimestamp: z.ZodDefault<z.ZodBoolean>;
|
|
2158
|
+
includeCorrelationId: z.ZodDefault<z.ZodBoolean>;
|
|
2159
|
+
redactKeys: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
2160
|
+
}, "strip", z.ZodTypeAny, {
|
|
2161
|
+
level: "debug" | "info" | "warn" | "error";
|
|
2162
|
+
format: "json" | "pretty";
|
|
2163
|
+
includeTimestamp: boolean;
|
|
2164
|
+
includeCorrelationId: boolean;
|
|
2165
|
+
redactKeys: string[];
|
|
2166
|
+
}, {
|
|
2167
|
+
level?: "debug" | "info" | "warn" | "error" | undefined;
|
|
2168
|
+
format?: "json" | "pretty" | undefined;
|
|
2169
|
+
includeTimestamp?: boolean | undefined;
|
|
2170
|
+
includeCorrelationId?: boolean | undefined;
|
|
2171
|
+
redactKeys?: string[] | undefined;
|
|
2172
|
+
}>>;
|
|
2173
|
+
metrics: z.ZodDefault<z.ZodObject<{
|
|
2174
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
2175
|
+
prefix: z.ZodDefault<z.ZodString>;
|
|
2176
|
+
defaultTags: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
2177
|
+
flushInterval: z.ZodDefault<z.ZodNumber>;
|
|
2178
|
+
histogramBuckets: z.ZodDefault<z.ZodArray<z.ZodNumber, "many">>;
|
|
2179
|
+
}, "strip", z.ZodTypeAny, {
|
|
2180
|
+
enabled: boolean;
|
|
2181
|
+
prefix: string;
|
|
2182
|
+
defaultTags: Record<string, string>;
|
|
2183
|
+
flushInterval: number;
|
|
2184
|
+
histogramBuckets: number[];
|
|
2185
|
+
}, {
|
|
2186
|
+
enabled?: boolean | undefined;
|
|
2187
|
+
prefix?: string | undefined;
|
|
2188
|
+
defaultTags?: Record<string, string> | undefined;
|
|
2189
|
+
flushInterval?: number | undefined;
|
|
2190
|
+
histogramBuckets?: number[] | undefined;
|
|
2191
|
+
}>>;
|
|
2192
|
+
tracing: z.ZodDefault<z.ZodObject<{
|
|
2193
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
2194
|
+
provider: z.ZodDefault<z.ZodEnum<["noop", "memory", "otlp"]>>;
|
|
2195
|
+
serviceName: z.ZodOptional<z.ZodString>;
|
|
2196
|
+
serviceVersion: z.ZodOptional<z.ZodString>;
|
|
2197
|
+
environment: z.ZodOptional<z.ZodString>;
|
|
2198
|
+
sampleRate: z.ZodDefault<z.ZodNumber>;
|
|
2199
|
+
propagateContext: z.ZodDefault<z.ZodBoolean>;
|
|
2200
|
+
endpoint: z.ZodOptional<z.ZodString>;
|
|
2201
|
+
exporterType: z.ZodDefault<z.ZodEnum<["otlp-http", "otlp-grpc", "console"]>>;
|
|
2202
|
+
}, "strip", z.ZodTypeAny, {
|
|
2203
|
+
provider: "otlp" | "memory" | "noop";
|
|
2204
|
+
enabled: boolean;
|
|
2205
|
+
sampleRate: number;
|
|
2206
|
+
propagateContext: boolean;
|
|
2207
|
+
exporterType: "console" | "otlp-http" | "otlp-grpc";
|
|
2208
|
+
environment?: string | undefined;
|
|
2209
|
+
endpoint?: string | undefined;
|
|
2210
|
+
serviceName?: string | undefined;
|
|
2211
|
+
serviceVersion?: string | undefined;
|
|
2212
|
+
}, {
|
|
2213
|
+
environment?: string | undefined;
|
|
2214
|
+
provider?: "otlp" | "memory" | "noop" | undefined;
|
|
2215
|
+
endpoint?: string | undefined;
|
|
2216
|
+
enabled?: boolean | undefined;
|
|
2217
|
+
serviceName?: string | undefined;
|
|
2218
|
+
serviceVersion?: string | undefined;
|
|
2219
|
+
sampleRate?: number | undefined;
|
|
2220
|
+
propagateContext?: boolean | undefined;
|
|
2221
|
+
exporterType?: "console" | "otlp-http" | "otlp-grpc" | undefined;
|
|
2222
|
+
}>>;
|
|
2223
|
+
}, "strip", z.ZodTypeAny, {
|
|
2224
|
+
logging: {
|
|
2225
|
+
level: "debug" | "info" | "warn" | "error";
|
|
2226
|
+
format: "json" | "pretty";
|
|
2227
|
+
includeTimestamp: boolean;
|
|
2228
|
+
includeCorrelationId: boolean;
|
|
2229
|
+
redactKeys: string[];
|
|
2230
|
+
};
|
|
2231
|
+
metrics: {
|
|
2232
|
+
enabled: boolean;
|
|
2233
|
+
prefix: string;
|
|
2234
|
+
defaultTags: Record<string, string>;
|
|
2235
|
+
flushInterval: number;
|
|
2236
|
+
histogramBuckets: number[];
|
|
2237
|
+
};
|
|
2238
|
+
tracing: {
|
|
2239
|
+
provider: "otlp" | "memory" | "noop";
|
|
2240
|
+
enabled: boolean;
|
|
2241
|
+
sampleRate: number;
|
|
2242
|
+
propagateContext: boolean;
|
|
2243
|
+
exporterType: "console" | "otlp-http" | "otlp-grpc";
|
|
2244
|
+
environment?: string | undefined;
|
|
2245
|
+
endpoint?: string | undefined;
|
|
2246
|
+
serviceName?: string | undefined;
|
|
2247
|
+
serviceVersion?: string | undefined;
|
|
2248
|
+
};
|
|
2249
|
+
}, {
|
|
2250
|
+
logging?: {
|
|
2251
|
+
level?: "debug" | "info" | "warn" | "error" | undefined;
|
|
2252
|
+
format?: "json" | "pretty" | undefined;
|
|
2253
|
+
includeTimestamp?: boolean | undefined;
|
|
2254
|
+
includeCorrelationId?: boolean | undefined;
|
|
2255
|
+
redactKeys?: string[] | undefined;
|
|
2256
|
+
} | undefined;
|
|
2257
|
+
metrics?: {
|
|
2258
|
+
enabled?: boolean | undefined;
|
|
2259
|
+
prefix?: string | undefined;
|
|
2260
|
+
defaultTags?: Record<string, string> | undefined;
|
|
2261
|
+
flushInterval?: number | undefined;
|
|
2262
|
+
histogramBuckets?: number[] | undefined;
|
|
2263
|
+
} | undefined;
|
|
2264
|
+
tracing?: {
|
|
2265
|
+
environment?: string | undefined;
|
|
2266
|
+
provider?: "otlp" | "memory" | "noop" | undefined;
|
|
2267
|
+
endpoint?: string | undefined;
|
|
2268
|
+
enabled?: boolean | undefined;
|
|
2269
|
+
serviceName?: string | undefined;
|
|
2270
|
+
serviceVersion?: string | undefined;
|
|
2271
|
+
sampleRate?: number | undefined;
|
|
2272
|
+
propagateContext?: boolean | undefined;
|
|
2273
|
+
exporterType?: "console" | "otlp-http" | "otlp-grpc" | undefined;
|
|
2274
|
+
} | undefined;
|
|
2275
|
+
}>>;
|
|
2276
|
+
middleware: z.ZodDefault<z.ZodObject<{
|
|
2277
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
2278
|
+
logging: z.ZodDefault<z.ZodBoolean>;
|
|
2279
|
+
metrics: z.ZodDefault<z.ZodBoolean>;
|
|
2280
|
+
slowQuery: z.ZodDefault<z.ZodObject<{
|
|
2281
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
2282
|
+
thresholdMs: z.ZodDefault<z.ZodNumber>;
|
|
2283
|
+
}, "strip", z.ZodTypeAny, {
|
|
2284
|
+
enabled: boolean;
|
|
2285
|
+
thresholdMs: number;
|
|
2286
|
+
}, {
|
|
2287
|
+
enabled?: boolean | undefined;
|
|
2288
|
+
thresholdMs?: number | undefined;
|
|
2289
|
+
}>>;
|
|
2290
|
+
cache: z.ZodDefault<z.ZodObject<{
|
|
2291
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
2292
|
+
defaultTTL: z.ZodDefault<z.ZodNumber>;
|
|
2293
|
+
}, "strip", z.ZodTypeAny, {
|
|
2294
|
+
defaultTTL: number;
|
|
2295
|
+
enabled: boolean;
|
|
2296
|
+
}, {
|
|
2297
|
+
defaultTTL?: number | undefined;
|
|
2298
|
+
enabled?: boolean | undefined;
|
|
2299
|
+
}>>;
|
|
2300
|
+
}, "strip", z.ZodTypeAny, {
|
|
2301
|
+
enabled: boolean;
|
|
2302
|
+
cache: {
|
|
2303
|
+
defaultTTL: number;
|
|
2304
|
+
enabled: boolean;
|
|
2305
|
+
};
|
|
2306
|
+
logging: boolean;
|
|
2307
|
+
metrics: boolean;
|
|
2308
|
+
slowQuery: {
|
|
2309
|
+
enabled: boolean;
|
|
2310
|
+
thresholdMs: number;
|
|
2311
|
+
};
|
|
2312
|
+
}, {
|
|
2313
|
+
enabled?: boolean | undefined;
|
|
2314
|
+
cache?: {
|
|
2315
|
+
defaultTTL?: number | undefined;
|
|
2316
|
+
enabled?: boolean | undefined;
|
|
2317
|
+
} | undefined;
|
|
2318
|
+
logging?: boolean | undefined;
|
|
2319
|
+
metrics?: boolean | undefined;
|
|
2320
|
+
slowQuery?: {
|
|
2321
|
+
enabled?: boolean | undefined;
|
|
2322
|
+
thresholdMs?: number | undefined;
|
|
2323
|
+
} | undefined;
|
|
2324
|
+
}>>;
|
|
2325
|
+
}, "strip", z.ZodTypeAny, {
|
|
2326
|
+
database: {
|
|
2327
|
+
provider: "memory" | "postgres" | "supabase";
|
|
2328
|
+
poolSize: number;
|
|
2329
|
+
connectionTimeout: number;
|
|
2330
|
+
url?: string | undefined;
|
|
2331
|
+
connectionString?: string | undefined;
|
|
2332
|
+
supabaseUrl?: string | undefined;
|
|
2333
|
+
supabaseAnonKey?: string | undefined;
|
|
2334
|
+
supabaseServiceRoleKey?: string | undefined;
|
|
2335
|
+
ssl?: boolean | {
|
|
2336
|
+
rejectUnauthorized?: boolean | undefined;
|
|
2337
|
+
} | undefined;
|
|
2338
|
+
};
|
|
2339
|
+
cache: {
|
|
2340
|
+
provider: "memory" | "redis" | "upstash";
|
|
2341
|
+
defaultTTL: number;
|
|
2342
|
+
keyPrefix: string;
|
|
2343
|
+
maxRetries: number;
|
|
2344
|
+
url?: string | undefined;
|
|
2345
|
+
upstashUrl?: string | undefined;
|
|
2346
|
+
upstashToken?: string | undefined;
|
|
2347
|
+
};
|
|
2348
|
+
storage: {
|
|
2349
|
+
provider: "memory" | "supabase" | "s3" | "minio" | "r2";
|
|
2350
|
+
region: string;
|
|
2351
|
+
forcePathStyle: boolean;
|
|
2352
|
+
signedUrlExpiry: number;
|
|
2353
|
+
endpoint?: string | undefined;
|
|
2354
|
+
accessKey?: string | undefined;
|
|
2355
|
+
secretKey?: string | undefined;
|
|
2356
|
+
bucket?: string | undefined;
|
|
2357
|
+
publicUrl?: string | undefined;
|
|
2358
|
+
};
|
|
2359
|
+
email: {
|
|
2360
|
+
provider: "console" | "memory" | "smtp" | "resend";
|
|
2361
|
+
secure: boolean;
|
|
2362
|
+
rateLimitPerSecond: number;
|
|
2363
|
+
host?: string | undefined;
|
|
2364
|
+
port?: number | undefined;
|
|
2365
|
+
username?: string | undefined;
|
|
2366
|
+
password?: string | undefined;
|
|
2367
|
+
apiKey?: string | undefined;
|
|
2368
|
+
from?: string | undefined;
|
|
2369
|
+
replyTo?: string | undefined;
|
|
2370
|
+
};
|
|
2371
|
+
queue: {
|
|
2372
|
+
provider: "memory" | "bullmq";
|
|
2373
|
+
maxRetries: number;
|
|
2374
|
+
queueName: string;
|
|
2375
|
+
concurrency: number;
|
|
2376
|
+
retryDelay: number;
|
|
2377
|
+
removeOnComplete: boolean;
|
|
2378
|
+
removeOnFail: boolean;
|
|
2379
|
+
redisUrl?: string | undefined;
|
|
2380
|
+
};
|
|
2381
|
+
resilience: {
|
|
2382
|
+
timeout: {
|
|
2383
|
+
enabled: boolean;
|
|
2384
|
+
default: number;
|
|
2385
|
+
database: number;
|
|
2386
|
+
cache: number;
|
|
2387
|
+
storage: number;
|
|
2388
|
+
email: number;
|
|
2389
|
+
queue: number;
|
|
2390
|
+
};
|
|
2391
|
+
retry: {
|
|
2392
|
+
enabled: boolean;
|
|
2393
|
+
maxAttempts: number;
|
|
2394
|
+
baseDelay: number;
|
|
2395
|
+
maxDelay: number;
|
|
2396
|
+
backoffMultiplier: number;
|
|
2397
|
+
jitter: boolean;
|
|
2398
|
+
};
|
|
2399
|
+
circuitBreaker: {
|
|
2400
|
+
enabled: boolean;
|
|
2401
|
+
failureThreshold: number;
|
|
2402
|
+
resetTimeout: number;
|
|
2403
|
+
halfOpenRequests: number;
|
|
2404
|
+
monitorInterval: number;
|
|
2405
|
+
};
|
|
2406
|
+
bulkhead: {
|
|
2407
|
+
enabled: boolean;
|
|
2408
|
+
maxConcurrent: number;
|
|
2409
|
+
maxQueued: number;
|
|
2410
|
+
timeout: number;
|
|
2411
|
+
};
|
|
2412
|
+
};
|
|
2413
|
+
observability: {
|
|
2414
|
+
logging: {
|
|
2415
|
+
level: "debug" | "info" | "warn" | "error";
|
|
2416
|
+
format: "json" | "pretty";
|
|
2417
|
+
includeTimestamp: boolean;
|
|
2418
|
+
includeCorrelationId: boolean;
|
|
2419
|
+
redactKeys: string[];
|
|
2420
|
+
};
|
|
2421
|
+
metrics: {
|
|
2422
|
+
enabled: boolean;
|
|
2423
|
+
prefix: string;
|
|
2424
|
+
defaultTags: Record<string, string>;
|
|
2425
|
+
flushInterval: number;
|
|
2426
|
+
histogramBuckets: number[];
|
|
2427
|
+
};
|
|
2428
|
+
tracing: {
|
|
2429
|
+
provider: "otlp" | "memory" | "noop";
|
|
2430
|
+
enabled: boolean;
|
|
2431
|
+
sampleRate: number;
|
|
2432
|
+
propagateContext: boolean;
|
|
2433
|
+
exporterType: "console" | "otlp-http" | "otlp-grpc";
|
|
2434
|
+
environment?: string | undefined;
|
|
2435
|
+
endpoint?: string | undefined;
|
|
2436
|
+
serviceName?: string | undefined;
|
|
2437
|
+
serviceVersion?: string | undefined;
|
|
2438
|
+
};
|
|
2439
|
+
};
|
|
2440
|
+
middleware: {
|
|
2441
|
+
enabled: boolean;
|
|
2442
|
+
cache: {
|
|
2443
|
+
defaultTTL: number;
|
|
2444
|
+
enabled: boolean;
|
|
2445
|
+
};
|
|
2446
|
+
logging: boolean;
|
|
2447
|
+
metrics: boolean;
|
|
2448
|
+
slowQuery: {
|
|
2449
|
+
enabled: boolean;
|
|
2450
|
+
thresholdMs: number;
|
|
2451
|
+
};
|
|
2452
|
+
};
|
|
2453
|
+
}, {
|
|
2454
|
+
database?: {
|
|
2455
|
+
provider?: "memory" | "postgres" | "supabase" | undefined;
|
|
2456
|
+
url?: string | undefined;
|
|
2457
|
+
connectionString?: string | undefined;
|
|
2458
|
+
supabaseUrl?: string | undefined;
|
|
2459
|
+
supabaseAnonKey?: string | undefined;
|
|
2460
|
+
supabaseServiceRoleKey?: string | undefined;
|
|
2461
|
+
poolSize?: number | undefined;
|
|
2462
|
+
connectionTimeout?: number | undefined;
|
|
2463
|
+
ssl?: boolean | {
|
|
2464
|
+
rejectUnauthorized?: boolean | undefined;
|
|
2465
|
+
} | undefined;
|
|
2466
|
+
} | undefined;
|
|
2467
|
+
cache?: {
|
|
2468
|
+
provider?: "memory" | "redis" | "upstash" | undefined;
|
|
2469
|
+
url?: string | undefined;
|
|
2470
|
+
upstashUrl?: string | undefined;
|
|
2471
|
+
upstashToken?: string | undefined;
|
|
2472
|
+
defaultTTL?: number | undefined;
|
|
2473
|
+
keyPrefix?: string | undefined;
|
|
2474
|
+
maxRetries?: number | undefined;
|
|
2475
|
+
} | undefined;
|
|
2476
|
+
storage?: {
|
|
2477
|
+
provider?: "memory" | "supabase" | "s3" | "minio" | "r2" | undefined;
|
|
2478
|
+
endpoint?: string | undefined;
|
|
2479
|
+
region?: string | undefined;
|
|
2480
|
+
accessKey?: string | undefined;
|
|
2481
|
+
secretKey?: string | undefined;
|
|
2482
|
+
bucket?: string | undefined;
|
|
2483
|
+
publicUrl?: string | undefined;
|
|
2484
|
+
forcePathStyle?: boolean | undefined;
|
|
2485
|
+
signedUrlExpiry?: number | undefined;
|
|
2486
|
+
} | undefined;
|
|
2487
|
+
email?: {
|
|
2488
|
+
provider?: "console" | "memory" | "smtp" | "resend" | undefined;
|
|
2489
|
+
host?: string | undefined;
|
|
2490
|
+
port?: number | undefined;
|
|
2491
|
+
secure?: boolean | undefined;
|
|
2492
|
+
username?: string | undefined;
|
|
2493
|
+
password?: string | undefined;
|
|
2494
|
+
apiKey?: string | undefined;
|
|
2495
|
+
from?: string | undefined;
|
|
2496
|
+
replyTo?: string | undefined;
|
|
2497
|
+
rateLimitPerSecond?: number | undefined;
|
|
2498
|
+
} | undefined;
|
|
2499
|
+
queue?: {
|
|
2500
|
+
provider?: "memory" | "bullmq" | undefined;
|
|
2501
|
+
maxRetries?: number | undefined;
|
|
2502
|
+
redisUrl?: string | undefined;
|
|
2503
|
+
queueName?: string | undefined;
|
|
2504
|
+
concurrency?: number | undefined;
|
|
2505
|
+
retryDelay?: number | undefined;
|
|
2506
|
+
removeOnComplete?: boolean | undefined;
|
|
2507
|
+
removeOnFail?: boolean | undefined;
|
|
2508
|
+
} | undefined;
|
|
2509
|
+
resilience?: {
|
|
2510
|
+
timeout?: {
|
|
2511
|
+
enabled?: boolean | undefined;
|
|
2512
|
+
default?: number | undefined;
|
|
2513
|
+
database?: number | undefined;
|
|
2514
|
+
cache?: number | undefined;
|
|
2515
|
+
storage?: number | undefined;
|
|
2516
|
+
email?: number | undefined;
|
|
2517
|
+
queue?: number | undefined;
|
|
2518
|
+
} | undefined;
|
|
2519
|
+
retry?: {
|
|
2520
|
+
enabled?: boolean | undefined;
|
|
2521
|
+
maxAttempts?: number | undefined;
|
|
2522
|
+
baseDelay?: number | undefined;
|
|
2523
|
+
maxDelay?: number | undefined;
|
|
2524
|
+
backoffMultiplier?: number | undefined;
|
|
2525
|
+
jitter?: boolean | undefined;
|
|
2526
|
+
} | undefined;
|
|
2527
|
+
circuitBreaker?: {
|
|
2528
|
+
enabled?: boolean | undefined;
|
|
2529
|
+
failureThreshold?: number | undefined;
|
|
2530
|
+
resetTimeout?: number | undefined;
|
|
2531
|
+
halfOpenRequests?: number | undefined;
|
|
2532
|
+
monitorInterval?: number | undefined;
|
|
2533
|
+
} | undefined;
|
|
2534
|
+
bulkhead?: {
|
|
2535
|
+
enabled?: boolean | undefined;
|
|
2536
|
+
maxConcurrent?: number | undefined;
|
|
2537
|
+
maxQueued?: number | undefined;
|
|
2538
|
+
timeout?: number | undefined;
|
|
2539
|
+
} | undefined;
|
|
2540
|
+
} | undefined;
|
|
2541
|
+
observability?: {
|
|
2542
|
+
logging?: {
|
|
2543
|
+
level?: "debug" | "info" | "warn" | "error" | undefined;
|
|
2544
|
+
format?: "json" | "pretty" | undefined;
|
|
2545
|
+
includeTimestamp?: boolean | undefined;
|
|
2546
|
+
includeCorrelationId?: boolean | undefined;
|
|
2547
|
+
redactKeys?: string[] | undefined;
|
|
2548
|
+
} | undefined;
|
|
2549
|
+
metrics?: {
|
|
2550
|
+
enabled?: boolean | undefined;
|
|
2551
|
+
prefix?: string | undefined;
|
|
2552
|
+
defaultTags?: Record<string, string> | undefined;
|
|
2553
|
+
flushInterval?: number | undefined;
|
|
2554
|
+
histogramBuckets?: number[] | undefined;
|
|
2555
|
+
} | undefined;
|
|
2556
|
+
tracing?: {
|
|
2557
|
+
environment?: string | undefined;
|
|
2558
|
+
provider?: "otlp" | "memory" | "noop" | undefined;
|
|
2559
|
+
endpoint?: string | undefined;
|
|
2560
|
+
enabled?: boolean | undefined;
|
|
2561
|
+
serviceName?: string | undefined;
|
|
2562
|
+
serviceVersion?: string | undefined;
|
|
2563
|
+
sampleRate?: number | undefined;
|
|
2564
|
+
propagateContext?: boolean | undefined;
|
|
2565
|
+
exporterType?: "console" | "otlp-http" | "otlp-grpc" | undefined;
|
|
2566
|
+
} | undefined;
|
|
2567
|
+
} | undefined;
|
|
2568
|
+
middleware?: {
|
|
2569
|
+
enabled?: boolean | undefined;
|
|
2570
|
+
cache?: {
|
|
2571
|
+
defaultTTL?: number | undefined;
|
|
2572
|
+
enabled?: boolean | undefined;
|
|
2573
|
+
} | undefined;
|
|
2574
|
+
logging?: boolean | undefined;
|
|
2575
|
+
metrics?: boolean | undefined;
|
|
2576
|
+
slowQuery?: {
|
|
2577
|
+
enabled?: boolean | undefined;
|
|
2578
|
+
thresholdMs?: number | undefined;
|
|
2579
|
+
} | undefined;
|
|
2580
|
+
} | undefined;
|
|
2581
|
+
}>;
|
|
2582
|
+
type PlatformConfig = z.infer<typeof PlatformConfigSchema>;
|
|
2583
|
+
type DatabaseConfig = z.infer<typeof DatabaseConfigSchema>;
|
|
2584
|
+
type CacheConfig = z.infer<typeof CacheConfigSchema>;
|
|
2585
|
+
type StorageConfig = z.infer<typeof StorageConfigSchema>;
|
|
2586
|
+
type EmailConfig = z.infer<typeof EmailConfigSchema>;
|
|
2587
|
+
type QueueConfig = z.infer<typeof QueueConfigSchema>;
|
|
2588
|
+
type ResilienceConfig = z.infer<typeof ResilienceConfigSchema>;
|
|
2589
|
+
type ObservabilityConfig = z.infer<typeof ObservabilityConfigSchema>;
|
|
2590
|
+
type MiddlewareConfig = z.infer<typeof MiddlewareConfigSchema>;
|
|
2591
|
+
/**
|
|
2592
|
+
* Load configuration from environment variables
|
|
2593
|
+
*/
|
|
2594
|
+
declare function loadConfig(): PlatformConfig;
|
|
2595
|
+
/**
|
|
2596
|
+
* Validate configuration object
|
|
2597
|
+
* @throws ZodError if validation fails
|
|
2598
|
+
*/
|
|
2599
|
+
declare function validateConfig(config: unknown): PlatformConfig;
|
|
2600
|
+
/**
|
|
2601
|
+
* Safely validate configuration, returning errors instead of throwing
|
|
2602
|
+
*/
|
|
2603
|
+
declare function safeValidateConfig(config: unknown): {
|
|
2604
|
+
success: boolean;
|
|
2605
|
+
data?: PlatformConfig;
|
|
2606
|
+
errors?: z.ZodError;
|
|
2607
|
+
};
|
|
2608
|
+
/**
|
|
2609
|
+
* Get configuration with defaults applied
|
|
2610
|
+
*/
|
|
2611
|
+
declare function getDefaultConfig(): PlatformConfig;
|
|
2612
|
+
|
|
2613
|
+
/**
|
|
2614
|
+
* Platform Factory
|
|
2615
|
+
* Create a platform instance with configured adapters
|
|
2616
|
+
*/
|
|
2617
|
+
|
|
2618
|
+
/**
|
|
2619
|
+
* Create a platform instance (async version)
|
|
2620
|
+
*/
|
|
2621
|
+
declare function createPlatformAsync(config?: Partial<PlatformConfig>): Promise<IPlatform>;
|
|
2622
|
+
/**
|
|
2623
|
+
* Create a platform instance (sync version - uses memory adapters only)
|
|
2624
|
+
* For production adapters, use createPlatformAsync
|
|
2625
|
+
*/
|
|
2626
|
+
declare function createPlatform(config?: Partial<PlatformConfig>): IPlatform;
|
|
2627
|
+
|
|
2628
|
+
/**
|
|
2629
|
+
* Memory Database Adapter
|
|
2630
|
+
* In-memory implementation for testing
|
|
2631
|
+
*/
|
|
2632
|
+
|
|
2633
|
+
declare class MemoryDatabase implements IDatabase {
|
|
2634
|
+
private tables;
|
|
2635
|
+
from<T = unknown>(table: string): IQueryBuilder<T>;
|
|
2636
|
+
raw<T = unknown>(sql: string, params?: unknown[]): Promise<QueryResult<T>>;
|
|
2637
|
+
transaction<T>(fn: (tx: IDatabase) => Promise<T>): Promise<T>;
|
|
2638
|
+
healthCheck(): Promise<boolean>;
|
|
2639
|
+
close(): Promise<void>;
|
|
2640
|
+
/**
|
|
2641
|
+
* Clear all data (for testing)
|
|
2642
|
+
*/
|
|
2643
|
+
clear(): void;
|
|
2644
|
+
/**
|
|
2645
|
+
* Get table data (for testing)
|
|
2646
|
+
*/
|
|
2647
|
+
getTable<T = unknown>(tableName: string): T[];
|
|
2648
|
+
}
|
|
2649
|
+
|
|
2650
|
+
/**
|
|
2651
|
+
* Memory Cache Adapter
|
|
2652
|
+
* In-memory implementation for testing
|
|
2653
|
+
*/
|
|
2654
|
+
|
|
2655
|
+
declare class MemoryCache implements ICache {
|
|
2656
|
+
private store;
|
|
2657
|
+
private subscriptions;
|
|
2658
|
+
get<T = unknown>(key: string): Promise<T | null>;
|
|
2659
|
+
set<T = unknown>(key: string, value: T, ttl?: number): Promise<void>;
|
|
2660
|
+
delete(key: string): Promise<void>;
|
|
2661
|
+
exists(key: string): Promise<boolean>;
|
|
2662
|
+
deletePattern(pattern: string): Promise<number>;
|
|
2663
|
+
mget<T = unknown>(keys: string[]): Promise<(T | null)[]>;
|
|
2664
|
+
mset<T = unknown>(entries: Array<{
|
|
2665
|
+
key: string;
|
|
2666
|
+
value: T;
|
|
2667
|
+
ttl?: number;
|
|
2668
|
+
}>): Promise<void>;
|
|
2669
|
+
incr(key: string, by?: number): Promise<number>;
|
|
2670
|
+
publish(channel: string, message: string): Promise<void>;
|
|
2671
|
+
subscribe(channel: string, callback: (message: string) => void): Promise<() => void>;
|
|
2672
|
+
healthCheck(): Promise<boolean>;
|
|
2673
|
+
close(): Promise<void>;
|
|
2674
|
+
/**
|
|
2675
|
+
* Clear all cached data (for testing)
|
|
2676
|
+
*/
|
|
2677
|
+
clear(): void;
|
|
2678
|
+
/**
|
|
2679
|
+
* Get number of cached items (for testing)
|
|
2680
|
+
*/
|
|
2681
|
+
get size(): number;
|
|
2682
|
+
}
|
|
2683
|
+
|
|
2684
|
+
declare class MemoryStorage implements IStorage {
|
|
2685
|
+
private files;
|
|
2686
|
+
upload(key: string, data: Buffer | Blob | ReadableStream, options?: UploadOptions): Promise<{
|
|
2687
|
+
url: string;
|
|
2688
|
+
}>;
|
|
2689
|
+
download(key: string): Promise<Buffer<ArrayBufferLike>>;
|
|
2690
|
+
getSignedUrl(key: string): Promise<string>;
|
|
2691
|
+
delete(key: string): Promise<void>;
|
|
2692
|
+
deleteMany(keys: string[]): Promise<void>;
|
|
2693
|
+
list(prefix?: string): Promise<StorageFile[]>;
|
|
2694
|
+
exists(key: string): Promise<boolean>;
|
|
2695
|
+
getMetadata(key: string): Promise<null>;
|
|
2696
|
+
healthCheck(): Promise<boolean>;
|
|
2697
|
+
/**
|
|
2698
|
+
* Clear all files (for testing)
|
|
2699
|
+
*/
|
|
2700
|
+
clear(): void;
|
|
2701
|
+
/**
|
|
2702
|
+
* Get number of stored files (for testing)
|
|
2703
|
+
*/
|
|
2704
|
+
get size(): number;
|
|
2705
|
+
}
|
|
2706
|
+
|
|
2707
|
+
declare class MemoryEmail implements IEmail {
|
|
2708
|
+
private sentEmails;
|
|
2709
|
+
send(message: EmailMessage): Promise<EmailResult>;
|
|
2710
|
+
sendBatch(messages: EmailMessage[]): Promise<EmailResult[]>;
|
|
2711
|
+
healthCheck(): Promise<boolean>;
|
|
2712
|
+
getSentEmails(): EmailMessage[];
|
|
2713
|
+
/**
|
|
2714
|
+
* Clear sent emails (for testing)
|
|
2715
|
+
*/
|
|
2716
|
+
clear(): void;
|
|
2717
|
+
/**
|
|
2718
|
+
* Get number of sent emails (for testing)
|
|
2719
|
+
*/
|
|
2720
|
+
get size(): number;
|
|
2721
|
+
}
|
|
2722
|
+
|
|
2723
|
+
declare class MemoryQueue<T = unknown> implements IQueue<T> {
|
|
2724
|
+
private jobs;
|
|
2725
|
+
private handlers;
|
|
2726
|
+
add(name: string, data: T, options?: JobOptions): Promise<Job<T>>;
|
|
2727
|
+
addBulk(jobs: Array<{
|
|
2728
|
+
name: string;
|
|
2729
|
+
data: T;
|
|
2730
|
+
options?: JobOptions;
|
|
2731
|
+
}>): Promise<Job<T>[]>;
|
|
2732
|
+
process(handler: (job: Job<T>) => Promise<unknown>): void;
|
|
2733
|
+
getJob(id: string): Promise<Job<T> | null>;
|
|
2734
|
+
removeJob(id: string): Promise<void>;
|
|
2735
|
+
pause(): Promise<void>;
|
|
2736
|
+
resume(): Promise<void>;
|
|
2737
|
+
getStats(): Promise<{
|
|
2738
|
+
waiting: number;
|
|
2739
|
+
active: number;
|
|
2740
|
+
completed: number;
|
|
2741
|
+
failed: number;
|
|
2742
|
+
delayed: number;
|
|
2743
|
+
}>;
|
|
2744
|
+
healthCheck(): Promise<boolean>;
|
|
2745
|
+
close(): Promise<void>;
|
|
2746
|
+
/**
|
|
2747
|
+
* Clear all jobs (for testing)
|
|
2748
|
+
*/
|
|
2749
|
+
clear(): void;
|
|
2750
|
+
/**
|
|
2751
|
+
* Get all jobs (for testing)
|
|
2752
|
+
*/
|
|
2753
|
+
getJobs(): Job<T>[];
|
|
2754
|
+
/**
|
|
2755
|
+
* Get pending jobs (for testing)
|
|
2756
|
+
*/
|
|
2757
|
+
getPendingJobs(): Job<T>[];
|
|
2758
|
+
/**
|
|
2759
|
+
* Get number of jobs (for testing)
|
|
2760
|
+
*/
|
|
2761
|
+
get size(): number;
|
|
2762
|
+
}
|
|
2763
|
+
|
|
2764
|
+
/**
|
|
2765
|
+
* Console Email Adapter
|
|
2766
|
+
* Development implementation that logs emails to console instead of sending
|
|
2767
|
+
*/
|
|
2768
|
+
|
|
2769
|
+
declare class ConsoleEmail implements IEmail {
|
|
2770
|
+
private sentEmails;
|
|
2771
|
+
send(message: EmailMessage): Promise<EmailResult>;
|
|
2772
|
+
sendBatch(messages: EmailMessage[]): Promise<EmailResult[]>;
|
|
2773
|
+
healthCheck(): Promise<boolean>;
|
|
2774
|
+
/**
|
|
2775
|
+
* Get all sent emails (for testing)
|
|
2776
|
+
*/
|
|
2777
|
+
getSentEmails(): EmailMessage[];
|
|
2778
|
+
/**
|
|
2779
|
+
* Clear sent emails (for testing)
|
|
2780
|
+
*/
|
|
2781
|
+
clearSentEmails(): void;
|
|
2782
|
+
private formatAddress;
|
|
2783
|
+
private formatAddresses;
|
|
2784
|
+
}
|
|
2785
|
+
|
|
2786
|
+
export { type SpanContext as $, type LoggerConfig as A, type MetricTags as B, ConsoleEmail as C, type Secret as D, EnvSecrets as E, type SecretMetadata as F, type GetSecretOptions as G, type HistogramStats as H, type IPlatform as I, type Job as J, type SetSecretOptions as K, type LogLevel as L, MemoryDatabase as M, NoopLogger as N, type RotationResult as O, type PlatformHealthStatus as P, type QueryResult as Q, type RotateSecretOptions as R, type StorageFile as S, type TimingStats as T, type UploadOptions as U, createPlatformAsync as V, createScopedMetrics as W, MemoryTracing as X, NoopTracing as Y, type ITracing as Z, type ISpan as _, MemoryCache as a, type SpanOptions as a0, type SpanStatus as a1, type SpanKind as a2, type TracingConfig as a3, type EmailAddress as a4, type EmailAttachment as a5, type SpanStatusCode as a6, type SpanEvent as a7, DatabaseProviderSchema as a8, CacheProviderSchema as a9, type QueueConfig as aA, type ResilienceConfig as aB, type ObservabilityConfig as aC, type MiddlewareConfig as aD, loadConfig as aE, validateConfig as aF, safeValidateConfig as aG, getDefaultConfig as aH, StorageProviderSchema as aa, EmailProviderSchema as ab, QueueProviderSchema as ac, TracingProviderSchema as ad, LogLevelSchema as ae, DatabaseConfigSchema as af, CacheConfigSchema as ag, StorageConfigSchema as ah, EmailConfigSchema as ai, QueueConfigSchema as aj, RetryConfigSchema as ak, CircuitBreakerConfigSchema as al, TimeoutConfigSchema as am, BulkheadConfigSchema as an, ResilienceConfigSchema as ao, LoggingConfigSchema as ap, MetricsConfigSchema as aq, TracingConfigSchema as ar, ObservabilityConfigSchema as as, MiddlewareConfigSchema as at, PlatformConfigSchema as au, type PlatformConfig as av, type DatabaseConfig as aw, type CacheConfig as ax, type StorageConfig as ay, type EmailConfig as az, MemoryStorage as b, MemoryEmail as c, MemoryQueue as d, type IDatabase as e, MemorySecrets as f, createPlatform as g, ConsoleLogger as h, MemoryMetrics as i, NoopMetrics as j, type IQueryBuilder as k, type ICache as l, type IStorage as m, type IEmail as n, type IQueue as o, type ILogger as p, type IMetrics as q, type ISecrets as r, type JobOptions as s, type EmailMessage as t, type MetricsSummary as u, type EmailResult as v, type ICacheOptions as w, type JobResult as x, type LogMeta as y, type LogEntry as z };
|