@planecloud/config 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.
@@ -0,0 +1,808 @@
1
+ import { z } from "zod";
2
+ export declare const SecurityConfigSchema: z.ZodObject<{
3
+ jwt: z.ZodOptional<z.ZodObject<{
4
+ secret: z.ZodString;
5
+ expiresIn: z.ZodDefault<z.ZodOptional<z.ZodString>>;
6
+ refreshExpiresIn: z.ZodDefault<z.ZodOptional<z.ZodString>>;
7
+ issuer: z.ZodDefault<z.ZodOptional<z.ZodString>>;
8
+ audience: z.ZodDefault<z.ZodOptional<z.ZodString>>;
9
+ algorithm: z.ZodDefault<z.ZodOptional<z.ZodEnum<["HS256", "HS384", "HS512", "RS256", "RS384", "RS512", "ES256", "ES384", "ES512"]>>>;
10
+ publicKey: z.ZodOptional<z.ZodString>;
11
+ privateKey: z.ZodOptional<z.ZodString>;
12
+ passphrase: z.ZodOptional<z.ZodString>;
13
+ }, "strip", z.ZodTypeAny, {
14
+ secret: string;
15
+ expiresIn: string;
16
+ refreshExpiresIn: string;
17
+ issuer: string;
18
+ audience: string;
19
+ algorithm: "HS256" | "HS384" | "HS512" | "RS256" | "RS384" | "RS512" | "ES256" | "ES384" | "ES512";
20
+ passphrase?: string | undefined;
21
+ publicKey?: string | undefined;
22
+ privateKey?: string | undefined;
23
+ }, {
24
+ secret: string;
25
+ passphrase?: string | undefined;
26
+ expiresIn?: string | undefined;
27
+ refreshExpiresIn?: string | undefined;
28
+ issuer?: string | undefined;
29
+ audience?: string | undefined;
30
+ algorithm?: "HS256" | "HS384" | "HS512" | "RS256" | "RS384" | "RS512" | "ES256" | "ES384" | "ES512" | undefined;
31
+ publicKey?: string | undefined;
32
+ privateKey?: string | undefined;
33
+ }>>;
34
+ password: z.ZodOptional<z.ZodObject<{
35
+ minLength: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
36
+ maxLength: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
37
+ requireUppercase: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
38
+ requireLowercase: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
39
+ requireNumbers: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
40
+ requireSpecialChars: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
41
+ saltRounds: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
42
+ pepper: z.ZodOptional<z.ZodString>;
43
+ }, "strip", z.ZodTypeAny, {
44
+ minLength: number;
45
+ maxLength: number;
46
+ requireUppercase: boolean;
47
+ requireLowercase: boolean;
48
+ requireNumbers: boolean;
49
+ requireSpecialChars: boolean;
50
+ saltRounds: number;
51
+ pepper?: string | undefined;
52
+ }, {
53
+ minLength?: number | undefined;
54
+ maxLength?: number | undefined;
55
+ requireUppercase?: boolean | undefined;
56
+ requireLowercase?: boolean | undefined;
57
+ requireNumbers?: boolean | undefined;
58
+ requireSpecialChars?: boolean | undefined;
59
+ saltRounds?: number | undefined;
60
+ pepper?: string | undefined;
61
+ }>>;
62
+ session: z.ZodOptional<z.ZodObject<{
63
+ secret: z.ZodString;
64
+ resave: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
65
+ saveUninitialized: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
66
+ rolling: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
67
+ name: z.ZodDefault<z.ZodOptional<z.ZodString>>;
68
+ cookie: z.ZodOptional<z.ZodObject<{
69
+ secure: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
70
+ httpOnly: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
71
+ maxAge: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
72
+ sameSite: z.ZodDefault<z.ZodOptional<z.ZodEnum<["lax", "strict", "none"]>>>;
73
+ domain: z.ZodOptional<z.ZodString>;
74
+ path: z.ZodDefault<z.ZodOptional<z.ZodString>>;
75
+ }, "strip", z.ZodTypeAny, {
76
+ path: string;
77
+ maxAge: number;
78
+ secure: boolean;
79
+ httpOnly: boolean;
80
+ sameSite: "strict" | "lax" | "none";
81
+ domain?: string | undefined;
82
+ }, {
83
+ path?: string | undefined;
84
+ maxAge?: number | undefined;
85
+ secure?: boolean | undefined;
86
+ httpOnly?: boolean | undefined;
87
+ sameSite?: "strict" | "lax" | "none" | undefined;
88
+ domain?: string | undefined;
89
+ }>>;
90
+ store: z.ZodDefault<z.ZodOptional<z.ZodEnum<["memory", "redis", "database"]>>>;
91
+ redis: z.ZodOptional<z.ZodObject<{
92
+ host: z.ZodString;
93
+ port: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
94
+ password: z.ZodOptional<z.ZodString>;
95
+ db: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
96
+ prefix: z.ZodDefault<z.ZodOptional<z.ZodString>>;
97
+ ttl: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
98
+ }, "strip", z.ZodTypeAny, {
99
+ host: string;
100
+ port: number;
101
+ db: number;
102
+ prefix: string;
103
+ ttl: number;
104
+ password?: string | undefined;
105
+ }, {
106
+ host: string;
107
+ port?: number | undefined;
108
+ password?: string | undefined;
109
+ db?: number | undefined;
110
+ prefix?: string | undefined;
111
+ ttl?: number | undefined;
112
+ }>>;
113
+ }, "strip", z.ZodTypeAny, {
114
+ name: string;
115
+ secret: string;
116
+ resave: boolean;
117
+ saveUninitialized: boolean;
118
+ rolling: boolean;
119
+ store: "database" | "redis" | "memory";
120
+ redis?: {
121
+ host: string;
122
+ port: number;
123
+ db: number;
124
+ prefix: string;
125
+ ttl: number;
126
+ password?: string | undefined;
127
+ } | undefined;
128
+ cookie?: {
129
+ path: string;
130
+ maxAge: number;
131
+ secure: boolean;
132
+ httpOnly: boolean;
133
+ sameSite: "strict" | "lax" | "none";
134
+ domain?: string | undefined;
135
+ } | undefined;
136
+ }, {
137
+ secret: string;
138
+ name?: string | undefined;
139
+ redis?: {
140
+ host: string;
141
+ port?: number | undefined;
142
+ password?: string | undefined;
143
+ db?: number | undefined;
144
+ prefix?: string | undefined;
145
+ ttl?: number | undefined;
146
+ } | undefined;
147
+ resave?: boolean | undefined;
148
+ saveUninitialized?: boolean | undefined;
149
+ rolling?: boolean | undefined;
150
+ cookie?: {
151
+ path?: string | undefined;
152
+ maxAge?: number | undefined;
153
+ secure?: boolean | undefined;
154
+ httpOnly?: boolean | undefined;
155
+ sameSite?: "strict" | "lax" | "none" | undefined;
156
+ domain?: string | undefined;
157
+ } | undefined;
158
+ store?: "database" | "redis" | "memory" | undefined;
159
+ }>>;
160
+ encryption: z.ZodOptional<z.ZodObject<{
161
+ algorithm: z.ZodDefault<z.ZodOptional<z.ZodEnum<["aes-256-gcm", "aes-256-cbc", "aes-192-gcm", "aes-192-cbc"]>>>;
162
+ key: z.ZodString;
163
+ ivLength: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
164
+ tagLength: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
165
+ }, "strip", z.ZodTypeAny, {
166
+ key: string;
167
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "aes-192-gcm" | "aes-192-cbc";
168
+ ivLength: number;
169
+ tagLength: number;
170
+ }, {
171
+ key: string;
172
+ algorithm?: "aes-256-gcm" | "aes-256-cbc" | "aes-192-gcm" | "aes-192-cbc" | undefined;
173
+ ivLength?: number | undefined;
174
+ tagLength?: number | undefined;
175
+ }>>;
176
+ apiKeys: z.ZodOptional<z.ZodObject<{
177
+ headerName: z.ZodDefault<z.ZodOptional<z.ZodString>>;
178
+ queryParam: z.ZodDefault<z.ZodOptional<z.ZodString>>;
179
+ length: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
180
+ prefix: z.ZodDefault<z.ZodOptional<z.ZodString>>;
181
+ hashing: z.ZodDefault<z.ZodOptional<z.ZodEnum<["sha256", "sha512"]>>>;
182
+ }, "strip", z.ZodTypeAny, {
183
+ length: number;
184
+ prefix: string;
185
+ headerName: string;
186
+ queryParam: string;
187
+ hashing: "sha256" | "sha512";
188
+ }, {
189
+ length?: number | undefined;
190
+ prefix?: string | undefined;
191
+ headerName?: string | undefined;
192
+ queryParam?: string | undefined;
193
+ hashing?: "sha256" | "sha512" | undefined;
194
+ }>>;
195
+ rateLimit: z.ZodOptional<z.ZodObject<{
196
+ windowMs: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
197
+ max: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
198
+ message: z.ZodDefault<z.ZodOptional<z.ZodString>>;
199
+ standardHeaders: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
200
+ legacyHeaders: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
201
+ skipSuccessfulRequests: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
202
+ skipFailedRequests: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
203
+ keyGenerator: z.ZodOptional<z.ZodString>;
204
+ skip: z.ZodOptional<z.ZodString>;
205
+ onLimitReached: z.ZodOptional<z.ZodString>;
206
+ }, "strip", z.ZodTypeAny, {
207
+ message: string;
208
+ max: number;
209
+ windowMs: number;
210
+ standardHeaders: boolean;
211
+ legacyHeaders: boolean;
212
+ skipSuccessfulRequests: boolean;
213
+ skipFailedRequests: boolean;
214
+ keyGenerator?: string | undefined;
215
+ skip?: string | undefined;
216
+ onLimitReached?: string | undefined;
217
+ }, {
218
+ message?: string | undefined;
219
+ max?: number | undefined;
220
+ windowMs?: number | undefined;
221
+ standardHeaders?: boolean | undefined;
222
+ legacyHeaders?: boolean | undefined;
223
+ skipSuccessfulRequests?: boolean | undefined;
224
+ skipFailedRequests?: boolean | undefined;
225
+ keyGenerator?: string | undefined;
226
+ skip?: string | undefined;
227
+ onLimitReached?: string | undefined;
228
+ }>>;
229
+ cors: z.ZodOptional<z.ZodObject<{
230
+ origin: z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">, z.ZodBoolean]>>>;
231
+ credentials: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
232
+ methods: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
233
+ allowedHeaders: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
234
+ exposedHeaders: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
235
+ maxAge: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
236
+ preflightContinue: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
237
+ optionsSuccessStatus: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
238
+ }, "strip", z.ZodTypeAny, {
239
+ origin: string | boolean | string[];
240
+ credentials: boolean;
241
+ methods: string[];
242
+ allowedHeaders: string[];
243
+ maxAge: number;
244
+ preflightContinue: boolean;
245
+ optionsSuccessStatus: number;
246
+ exposedHeaders?: string[] | undefined;
247
+ }, {
248
+ origin?: string | boolean | string[] | undefined;
249
+ credentials?: boolean | undefined;
250
+ methods?: string[] | undefined;
251
+ allowedHeaders?: string[] | undefined;
252
+ exposedHeaders?: string[] | undefined;
253
+ maxAge?: number | undefined;
254
+ preflightContinue?: boolean | undefined;
255
+ optionsSuccessStatus?: number | undefined;
256
+ }>>;
257
+ helmet: z.ZodOptional<z.ZodObject<{
258
+ contentSecurityPolicy: z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodObject<{
259
+ directives: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>>;
260
+ reportOnly: z.ZodOptional<z.ZodBoolean>;
261
+ }, "strip", z.ZodTypeAny, {
262
+ directives?: Record<string, string | string[]> | undefined;
263
+ reportOnly?: boolean | undefined;
264
+ }, {
265
+ directives?: Record<string, string | string[]> | undefined;
266
+ reportOnly?: boolean | undefined;
267
+ }>]>>>;
268
+ crossOriginEmbedderPolicy: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
269
+ crossOriginOpenerPolicy: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
270
+ crossOriginResourcePolicy: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
271
+ dnsPrefetchControl: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
272
+ frameguard: z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodObject<{
273
+ action: z.ZodEnum<["deny", "sameorigin", "allow-from"]>;
274
+ domain: z.ZodOptional<z.ZodString>;
275
+ }, "strip", z.ZodTypeAny, {
276
+ action: "deny" | "sameorigin" | "allow-from";
277
+ domain?: string | undefined;
278
+ }, {
279
+ action: "deny" | "sameorigin" | "allow-from";
280
+ domain?: string | undefined;
281
+ }>]>>>;
282
+ hidePoweredBy: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
283
+ hsts: z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodObject<{
284
+ maxAge: z.ZodOptional<z.ZodNumber>;
285
+ includeSubDomains: z.ZodOptional<z.ZodBoolean>;
286
+ preload: z.ZodOptional<z.ZodBoolean>;
287
+ }, "strip", z.ZodTypeAny, {
288
+ maxAge?: number | undefined;
289
+ includeSubDomains?: boolean | undefined;
290
+ preload?: boolean | undefined;
291
+ }, {
292
+ maxAge?: number | undefined;
293
+ includeSubDomains?: boolean | undefined;
294
+ preload?: boolean | undefined;
295
+ }>]>>>;
296
+ ieNoOpen: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
297
+ noSniff: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
298
+ originAgentCluster: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
299
+ permittedCrossDomainPolicies: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
300
+ referrerPolicy: z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodObject<{
301
+ policy: z.ZodOptional<z.ZodEnum<["no-referrer", "no-referrer-when-downgrade", "origin", "origin-when-cross-origin", "same-origin", "strict-origin", "strict-origin-when-cross-origin", "unsafe-url"]>>;
302
+ }, "strip", z.ZodTypeAny, {
303
+ policy?: "origin" | "no-referrer" | "no-referrer-when-downgrade" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url" | undefined;
304
+ }, {
305
+ policy?: "origin" | "no-referrer" | "no-referrer-when-downgrade" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url" | undefined;
306
+ }>]>>>;
307
+ xssFilter: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
308
+ }, "strip", z.ZodTypeAny, {
309
+ contentSecurityPolicy: boolean | {
310
+ directives?: Record<string, string | string[]> | undefined;
311
+ reportOnly?: boolean | undefined;
312
+ };
313
+ crossOriginEmbedderPolicy: boolean;
314
+ crossOriginOpenerPolicy: boolean;
315
+ crossOriginResourcePolicy: boolean;
316
+ dnsPrefetchControl: boolean;
317
+ frameguard: boolean | {
318
+ action: "deny" | "sameorigin" | "allow-from";
319
+ domain?: string | undefined;
320
+ };
321
+ hidePoweredBy: boolean;
322
+ hsts: boolean | {
323
+ maxAge?: number | undefined;
324
+ includeSubDomains?: boolean | undefined;
325
+ preload?: boolean | undefined;
326
+ };
327
+ ieNoOpen: boolean;
328
+ noSniff: boolean;
329
+ originAgentCluster: boolean;
330
+ permittedCrossDomainPolicies: boolean;
331
+ referrerPolicy: boolean | {
332
+ policy?: "origin" | "no-referrer" | "no-referrer-when-downgrade" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url" | undefined;
333
+ };
334
+ xssFilter: boolean;
335
+ }, {
336
+ contentSecurityPolicy?: boolean | {
337
+ directives?: Record<string, string | string[]> | undefined;
338
+ reportOnly?: boolean | undefined;
339
+ } | undefined;
340
+ crossOriginEmbedderPolicy?: boolean | undefined;
341
+ crossOriginOpenerPolicy?: boolean | undefined;
342
+ crossOriginResourcePolicy?: boolean | undefined;
343
+ dnsPrefetchControl?: boolean | undefined;
344
+ frameguard?: boolean | {
345
+ action: "deny" | "sameorigin" | "allow-from";
346
+ domain?: string | undefined;
347
+ } | undefined;
348
+ hidePoweredBy?: boolean | undefined;
349
+ hsts?: boolean | {
350
+ maxAge?: number | undefined;
351
+ includeSubDomains?: boolean | undefined;
352
+ preload?: boolean | undefined;
353
+ } | undefined;
354
+ ieNoOpen?: boolean | undefined;
355
+ noSniff?: boolean | undefined;
356
+ originAgentCluster?: boolean | undefined;
357
+ permittedCrossDomainPolicies?: boolean | undefined;
358
+ referrerPolicy?: boolean | {
359
+ policy?: "origin" | "no-referrer" | "no-referrer-when-downgrade" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url" | undefined;
360
+ } | undefined;
361
+ xssFilter?: boolean | undefined;
362
+ }>>;
363
+ audit: z.ZodOptional<z.ZodObject<{
364
+ enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
365
+ logLevel: z.ZodDefault<z.ZodOptional<z.ZodEnum<["info", "warn", "error"]>>>;
366
+ events: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodEnum<["login", "logout", "password_change", "profile_update", "api_access", "admin_action", "security_violation", "data_access", "permission_change"]>, "many">>>;
367
+ storage: z.ZodDefault<z.ZodOptional<z.ZodEnum<["file", "database", "elasticsearch"]>>>;
368
+ file: z.ZodOptional<z.ZodObject<{
369
+ path: z.ZodString;
370
+ rotation: z.ZodDefault<z.ZodOptional<z.ZodEnum<["daily", "weekly", "monthly"]>>>;
371
+ maxFiles: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
372
+ maxSize: z.ZodDefault<z.ZodOptional<z.ZodString>>;
373
+ }, "strip", z.ZodTypeAny, {
374
+ path: string;
375
+ rotation: "daily" | "weekly" | "monthly";
376
+ maxFiles: number;
377
+ maxSize: string;
378
+ }, {
379
+ path: string;
380
+ rotation?: "daily" | "weekly" | "monthly" | undefined;
381
+ maxFiles?: number | undefined;
382
+ maxSize?: string | undefined;
383
+ }>>;
384
+ retention: z.ZodOptional<z.ZodObject<{
385
+ days: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
386
+ maxSize: z.ZodDefault<z.ZodOptional<z.ZodString>>;
387
+ }, "strip", z.ZodTypeAny, {
388
+ maxSize: string;
389
+ days: number;
390
+ }, {
391
+ maxSize?: string | undefined;
392
+ days?: number | undefined;
393
+ }>>;
394
+ }, "strip", z.ZodTypeAny, {
395
+ enabled: boolean;
396
+ logLevel: "error" | "warn" | "info";
397
+ events: ("login" | "logout" | "password_change" | "profile_update" | "api_access" | "admin_action" | "security_violation" | "data_access" | "permission_change")[];
398
+ storage: "database" | "file" | "elasticsearch";
399
+ file?: {
400
+ path: string;
401
+ rotation: "daily" | "weekly" | "monthly";
402
+ maxFiles: number;
403
+ maxSize: string;
404
+ } | undefined;
405
+ retention?: {
406
+ maxSize: string;
407
+ days: number;
408
+ } | undefined;
409
+ }, {
410
+ enabled?: boolean | undefined;
411
+ logLevel?: "error" | "warn" | "info" | undefined;
412
+ events?: ("login" | "logout" | "password_change" | "profile_update" | "api_access" | "admin_action" | "security_violation" | "data_access" | "permission_change")[] | undefined;
413
+ file?: {
414
+ path: string;
415
+ rotation?: "daily" | "weekly" | "monthly" | undefined;
416
+ maxFiles?: number | undefined;
417
+ maxSize?: string | undefined;
418
+ } | undefined;
419
+ storage?: "database" | "file" | "elasticsearch" | undefined;
420
+ retention?: {
421
+ maxSize?: string | undefined;
422
+ days?: number | undefined;
423
+ } | undefined;
424
+ }>>;
425
+ authentication: z.ZodOptional<z.ZodObject<{
426
+ providers: z.ZodOptional<z.ZodArray<z.ZodObject<{
427
+ name: z.ZodString;
428
+ type: z.ZodEnum<["local", "oauth2", "saml", "ldap"]>;
429
+ enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
430
+ config: z.ZodRecord<z.ZodString, z.ZodAny>;
431
+ }, "strip", z.ZodTypeAny, {
432
+ type: "local" | "oauth2" | "saml" | "ldap";
433
+ name: string;
434
+ enabled: boolean;
435
+ config: Record<string, any>;
436
+ }, {
437
+ type: "local" | "oauth2" | "saml" | "ldap";
438
+ name: string;
439
+ config: Record<string, any>;
440
+ enabled?: boolean | undefined;
441
+ }>, "many">>;
442
+ twoFactor: z.ZodOptional<z.ZodObject<{
443
+ enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
444
+ issuer: z.ZodDefault<z.ZodOptional<z.ZodString>>;
445
+ window: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
446
+ providers: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodEnum<["totp", "sms", "email"]>, "many">>>;
447
+ backupCodes: z.ZodOptional<z.ZodObject<{
448
+ enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
449
+ count: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
450
+ length: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
451
+ }, "strip", z.ZodTypeAny, {
452
+ length: number;
453
+ enabled: boolean;
454
+ count: number;
455
+ }, {
456
+ length?: number | undefined;
457
+ enabled?: boolean | undefined;
458
+ count?: number | undefined;
459
+ }>>;
460
+ }, "strip", z.ZodTypeAny, {
461
+ enabled: boolean;
462
+ issuer: string;
463
+ providers: ("totp" | "sms" | "email")[];
464
+ window: number;
465
+ backupCodes?: {
466
+ length: number;
467
+ enabled: boolean;
468
+ count: number;
469
+ } | undefined;
470
+ }, {
471
+ enabled?: boolean | undefined;
472
+ issuer?: string | undefined;
473
+ providers?: ("totp" | "sms" | "email")[] | undefined;
474
+ window?: number | undefined;
475
+ backupCodes?: {
476
+ length?: number | undefined;
477
+ enabled?: boolean | undefined;
478
+ count?: number | undefined;
479
+ } | undefined;
480
+ }>>;
481
+ }, "strip", z.ZodTypeAny, {
482
+ providers?: {
483
+ type: "local" | "oauth2" | "saml" | "ldap";
484
+ name: string;
485
+ enabled: boolean;
486
+ config: Record<string, any>;
487
+ }[] | undefined;
488
+ twoFactor?: {
489
+ enabled: boolean;
490
+ issuer: string;
491
+ providers: ("totp" | "sms" | "email")[];
492
+ window: number;
493
+ backupCodes?: {
494
+ length: number;
495
+ enabled: boolean;
496
+ count: number;
497
+ } | undefined;
498
+ } | undefined;
499
+ }, {
500
+ providers?: {
501
+ type: "local" | "oauth2" | "saml" | "ldap";
502
+ name: string;
503
+ config: Record<string, any>;
504
+ enabled?: boolean | undefined;
505
+ }[] | undefined;
506
+ twoFactor?: {
507
+ enabled?: boolean | undefined;
508
+ issuer?: string | undefined;
509
+ providers?: ("totp" | "sms" | "email")[] | undefined;
510
+ window?: number | undefined;
511
+ backupCodes?: {
512
+ length?: number | undefined;
513
+ enabled?: boolean | undefined;
514
+ count?: number | undefined;
515
+ } | undefined;
516
+ } | undefined;
517
+ }>>;
518
+ }, "strip", z.ZodTypeAny, {
519
+ password?: {
520
+ minLength: number;
521
+ maxLength: number;
522
+ requireUppercase: boolean;
523
+ requireLowercase: boolean;
524
+ requireNumbers: boolean;
525
+ requireSpecialChars: boolean;
526
+ saltRounds: number;
527
+ pepper?: string | undefined;
528
+ } | undefined;
529
+ cors?: {
530
+ origin: string | boolean | string[];
531
+ credentials: boolean;
532
+ methods: string[];
533
+ allowedHeaders: string[];
534
+ maxAge: number;
535
+ preflightContinue: boolean;
536
+ optionsSuccessStatus: number;
537
+ exposedHeaders?: string[] | undefined;
538
+ } | undefined;
539
+ rateLimit?: {
540
+ message: string;
541
+ max: number;
542
+ windowMs: number;
543
+ standardHeaders: boolean;
544
+ legacyHeaders: boolean;
545
+ skipSuccessfulRequests: boolean;
546
+ skipFailedRequests: boolean;
547
+ keyGenerator?: string | undefined;
548
+ skip?: string | undefined;
549
+ onLimitReached?: string | undefined;
550
+ } | undefined;
551
+ helmet?: {
552
+ contentSecurityPolicy: boolean | {
553
+ directives?: Record<string, string | string[]> | undefined;
554
+ reportOnly?: boolean | undefined;
555
+ };
556
+ crossOriginEmbedderPolicy: boolean;
557
+ crossOriginOpenerPolicy: boolean;
558
+ crossOriginResourcePolicy: boolean;
559
+ dnsPrefetchControl: boolean;
560
+ frameguard: boolean | {
561
+ action: "deny" | "sameorigin" | "allow-from";
562
+ domain?: string | undefined;
563
+ };
564
+ hidePoweredBy: boolean;
565
+ hsts: boolean | {
566
+ maxAge?: number | undefined;
567
+ includeSubDomains?: boolean | undefined;
568
+ preload?: boolean | undefined;
569
+ };
570
+ ieNoOpen: boolean;
571
+ noSniff: boolean;
572
+ originAgentCluster: boolean;
573
+ permittedCrossDomainPolicies: boolean;
574
+ referrerPolicy: boolean | {
575
+ policy?: "origin" | "no-referrer" | "no-referrer-when-downgrade" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url" | undefined;
576
+ };
577
+ xssFilter: boolean;
578
+ } | undefined;
579
+ jwt?: {
580
+ secret: string;
581
+ expiresIn: string;
582
+ refreshExpiresIn: string;
583
+ issuer: string;
584
+ audience: string;
585
+ algorithm: "HS256" | "HS384" | "HS512" | "RS256" | "RS384" | "RS512" | "ES256" | "ES384" | "ES512";
586
+ passphrase?: string | undefined;
587
+ publicKey?: string | undefined;
588
+ privateKey?: string | undefined;
589
+ } | undefined;
590
+ session?: {
591
+ name: string;
592
+ secret: string;
593
+ resave: boolean;
594
+ saveUninitialized: boolean;
595
+ rolling: boolean;
596
+ store: "database" | "redis" | "memory";
597
+ redis?: {
598
+ host: string;
599
+ port: number;
600
+ db: number;
601
+ prefix: string;
602
+ ttl: number;
603
+ password?: string | undefined;
604
+ } | undefined;
605
+ cookie?: {
606
+ path: string;
607
+ maxAge: number;
608
+ secure: boolean;
609
+ httpOnly: boolean;
610
+ sameSite: "strict" | "lax" | "none";
611
+ domain?: string | undefined;
612
+ } | undefined;
613
+ } | undefined;
614
+ encryption?: {
615
+ key: string;
616
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "aes-192-gcm" | "aes-192-cbc";
617
+ ivLength: number;
618
+ tagLength: number;
619
+ } | undefined;
620
+ apiKeys?: {
621
+ length: number;
622
+ prefix: string;
623
+ headerName: string;
624
+ queryParam: string;
625
+ hashing: "sha256" | "sha512";
626
+ } | undefined;
627
+ audit?: {
628
+ enabled: boolean;
629
+ logLevel: "error" | "warn" | "info";
630
+ events: ("login" | "logout" | "password_change" | "profile_update" | "api_access" | "admin_action" | "security_violation" | "data_access" | "permission_change")[];
631
+ storage: "database" | "file" | "elasticsearch";
632
+ file?: {
633
+ path: string;
634
+ rotation: "daily" | "weekly" | "monthly";
635
+ maxFiles: number;
636
+ maxSize: string;
637
+ } | undefined;
638
+ retention?: {
639
+ maxSize: string;
640
+ days: number;
641
+ } | undefined;
642
+ } | undefined;
643
+ authentication?: {
644
+ providers?: {
645
+ type: "local" | "oauth2" | "saml" | "ldap";
646
+ name: string;
647
+ enabled: boolean;
648
+ config: Record<string, any>;
649
+ }[] | undefined;
650
+ twoFactor?: {
651
+ enabled: boolean;
652
+ issuer: string;
653
+ providers: ("totp" | "sms" | "email")[];
654
+ window: number;
655
+ backupCodes?: {
656
+ length: number;
657
+ enabled: boolean;
658
+ count: number;
659
+ } | undefined;
660
+ } | undefined;
661
+ } | undefined;
662
+ }, {
663
+ password?: {
664
+ minLength?: number | undefined;
665
+ maxLength?: number | undefined;
666
+ requireUppercase?: boolean | undefined;
667
+ requireLowercase?: boolean | undefined;
668
+ requireNumbers?: boolean | undefined;
669
+ requireSpecialChars?: boolean | undefined;
670
+ saltRounds?: number | undefined;
671
+ pepper?: string | undefined;
672
+ } | undefined;
673
+ cors?: {
674
+ origin?: string | boolean | string[] | undefined;
675
+ credentials?: boolean | undefined;
676
+ methods?: string[] | undefined;
677
+ allowedHeaders?: string[] | undefined;
678
+ exposedHeaders?: string[] | undefined;
679
+ maxAge?: number | undefined;
680
+ preflightContinue?: boolean | undefined;
681
+ optionsSuccessStatus?: number | undefined;
682
+ } | undefined;
683
+ rateLimit?: {
684
+ message?: string | undefined;
685
+ max?: number | undefined;
686
+ windowMs?: number | undefined;
687
+ standardHeaders?: boolean | undefined;
688
+ legacyHeaders?: boolean | undefined;
689
+ skipSuccessfulRequests?: boolean | undefined;
690
+ skipFailedRequests?: boolean | undefined;
691
+ keyGenerator?: string | undefined;
692
+ skip?: string | undefined;
693
+ onLimitReached?: string | undefined;
694
+ } | undefined;
695
+ helmet?: {
696
+ contentSecurityPolicy?: boolean | {
697
+ directives?: Record<string, string | string[]> | undefined;
698
+ reportOnly?: boolean | undefined;
699
+ } | undefined;
700
+ crossOriginEmbedderPolicy?: boolean | undefined;
701
+ crossOriginOpenerPolicy?: boolean | undefined;
702
+ crossOriginResourcePolicy?: boolean | undefined;
703
+ dnsPrefetchControl?: boolean | undefined;
704
+ frameguard?: boolean | {
705
+ action: "deny" | "sameorigin" | "allow-from";
706
+ domain?: string | undefined;
707
+ } | undefined;
708
+ hidePoweredBy?: boolean | undefined;
709
+ hsts?: boolean | {
710
+ maxAge?: number | undefined;
711
+ includeSubDomains?: boolean | undefined;
712
+ preload?: boolean | undefined;
713
+ } | undefined;
714
+ ieNoOpen?: boolean | undefined;
715
+ noSniff?: boolean | undefined;
716
+ originAgentCluster?: boolean | undefined;
717
+ permittedCrossDomainPolicies?: boolean | undefined;
718
+ referrerPolicy?: boolean | {
719
+ policy?: "origin" | "no-referrer" | "no-referrer-when-downgrade" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url" | undefined;
720
+ } | undefined;
721
+ xssFilter?: boolean | undefined;
722
+ } | undefined;
723
+ jwt?: {
724
+ secret: string;
725
+ passphrase?: string | undefined;
726
+ expiresIn?: string | undefined;
727
+ refreshExpiresIn?: string | undefined;
728
+ issuer?: string | undefined;
729
+ audience?: string | undefined;
730
+ algorithm?: "HS256" | "HS384" | "HS512" | "RS256" | "RS384" | "RS512" | "ES256" | "ES384" | "ES512" | undefined;
731
+ publicKey?: string | undefined;
732
+ privateKey?: string | undefined;
733
+ } | undefined;
734
+ session?: {
735
+ secret: string;
736
+ name?: string | undefined;
737
+ redis?: {
738
+ host: string;
739
+ port?: number | undefined;
740
+ password?: string | undefined;
741
+ db?: number | undefined;
742
+ prefix?: string | undefined;
743
+ ttl?: number | undefined;
744
+ } | undefined;
745
+ resave?: boolean | undefined;
746
+ saveUninitialized?: boolean | undefined;
747
+ rolling?: boolean | undefined;
748
+ cookie?: {
749
+ path?: string | undefined;
750
+ maxAge?: number | undefined;
751
+ secure?: boolean | undefined;
752
+ httpOnly?: boolean | undefined;
753
+ sameSite?: "strict" | "lax" | "none" | undefined;
754
+ domain?: string | undefined;
755
+ } | undefined;
756
+ store?: "database" | "redis" | "memory" | undefined;
757
+ } | undefined;
758
+ encryption?: {
759
+ key: string;
760
+ algorithm?: "aes-256-gcm" | "aes-256-cbc" | "aes-192-gcm" | "aes-192-cbc" | undefined;
761
+ ivLength?: number | undefined;
762
+ tagLength?: number | undefined;
763
+ } | undefined;
764
+ apiKeys?: {
765
+ length?: number | undefined;
766
+ prefix?: string | undefined;
767
+ headerName?: string | undefined;
768
+ queryParam?: string | undefined;
769
+ hashing?: "sha256" | "sha512" | undefined;
770
+ } | undefined;
771
+ audit?: {
772
+ enabled?: boolean | undefined;
773
+ logLevel?: "error" | "warn" | "info" | undefined;
774
+ events?: ("login" | "logout" | "password_change" | "profile_update" | "api_access" | "admin_action" | "security_violation" | "data_access" | "permission_change")[] | undefined;
775
+ file?: {
776
+ path: string;
777
+ rotation?: "daily" | "weekly" | "monthly" | undefined;
778
+ maxFiles?: number | undefined;
779
+ maxSize?: string | undefined;
780
+ } | undefined;
781
+ storage?: "database" | "file" | "elasticsearch" | undefined;
782
+ retention?: {
783
+ maxSize?: string | undefined;
784
+ days?: number | undefined;
785
+ } | undefined;
786
+ } | undefined;
787
+ authentication?: {
788
+ providers?: {
789
+ type: "local" | "oauth2" | "saml" | "ldap";
790
+ name: string;
791
+ config: Record<string, any>;
792
+ enabled?: boolean | undefined;
793
+ }[] | undefined;
794
+ twoFactor?: {
795
+ enabled?: boolean | undefined;
796
+ issuer?: string | undefined;
797
+ providers?: ("totp" | "sms" | "email")[] | undefined;
798
+ window?: number | undefined;
799
+ backupCodes?: {
800
+ length?: number | undefined;
801
+ enabled?: boolean | undefined;
802
+ count?: number | undefined;
803
+ } | undefined;
804
+ } | undefined;
805
+ } | undefined;
806
+ }>;
807
+ export type SecurityConfig = z.infer<typeof SecurityConfigSchema>;
808
+ //# sourceMappingURL=index.d.ts.map