@holo-js/config 0.1.2 → 0.1.4

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/dist/index.d.ts CHANGED
@@ -1,6 +1,3 @@
1
- import { NormalizedHoloQueueConfig, HoloQueueConfig } from '@holo-js/queue';
2
- export { HoloQueueConfig, NormalizedHoloQueueConfig } from '@holo-js/queue';
3
-
4
1
  interface HoloProjectPaths {
5
2
  models: string;
6
3
  migrations: string;
@@ -10,6 +7,8 @@ interface HoloProjectPaths {
10
7
  factories: string;
11
8
  commands: string;
12
9
  jobs: string;
10
+ authorizationPolicies: string;
11
+ authorizationAbilities: string;
13
12
  }
14
13
  interface HoloProjectConnectionConfig {
15
14
  driver?: SupportedDatabaseDriver;
@@ -46,6 +45,47 @@ interface HoloAppConfig extends HoloProjectConfig {
46
45
  }
47
46
  type HoloDatabaseConnectionConfig = HoloProjectConnectionConfig;
48
47
  type HoloDatabaseConfig = HoloProjectDatabaseConfig;
48
+ interface HoloRedisConnectionConfig {
49
+ readonly url?: string;
50
+ readonly clusters?: readonly HoloRedisClusterNodeConfig[];
51
+ readonly socketPath?: string;
52
+ readonly host?: string;
53
+ readonly port?: number | string;
54
+ readonly username?: string;
55
+ readonly password?: string;
56
+ readonly db?: number | string;
57
+ }
58
+ interface HoloRedisClusterNodeConfig {
59
+ readonly url?: string;
60
+ readonly socketPath?: string;
61
+ readonly host?: string;
62
+ readonly port?: number | string;
63
+ }
64
+ interface HoloRedisConfig {
65
+ readonly default?: string;
66
+ readonly connections?: Readonly<Record<string, HoloRedisConnectionConfig>>;
67
+ }
68
+ interface NormalizedHoloRedisConnectionConfig {
69
+ readonly name: string;
70
+ readonly url?: string;
71
+ readonly clusters?: readonly NormalizedHoloRedisClusterNodeConfig[];
72
+ readonly socketPath?: string;
73
+ readonly host: string;
74
+ readonly port: number;
75
+ readonly username?: string;
76
+ readonly password?: string;
77
+ readonly db: number;
78
+ }
79
+ interface NormalizedHoloRedisClusterNodeConfig {
80
+ readonly url?: string;
81
+ readonly socketPath?: string;
82
+ readonly host: string;
83
+ readonly port: number;
84
+ }
85
+ interface NormalizedHoloRedisConfig {
86
+ readonly default: string;
87
+ readonly connections: Readonly<Record<string, NormalizedHoloRedisConnectionConfig>>;
88
+ }
49
89
  type StorageDriver = 'local' | 'public' | 's3';
50
90
  type StorageVisibility = 'private' | 'public';
51
91
  interface BaseDiskConfig {
@@ -77,7 +117,550 @@ interface HoloStorageConfig {
77
117
  interface HoloMediaConfig {
78
118
  [key: string]: unknown;
79
119
  }
80
-
120
+ type BroadcastConnectionDriver = 'holo' | 'pusher' | 'log' | 'null';
121
+ type BroadcastConnectionScheme = 'http' | 'https';
122
+ interface BroadcastConnectionOptionsConfig {
123
+ readonly host?: string;
124
+ readonly port?: number | string;
125
+ readonly scheme?: BroadcastConnectionScheme;
126
+ readonly useTLS?: boolean;
127
+ readonly cluster?: string;
128
+ }
129
+ interface BroadcastWorkerScalingConfig {
130
+ readonly driver: 'redis';
131
+ readonly connection?: string;
132
+ }
133
+ interface BroadcastWorkerConfig {
134
+ readonly host?: string;
135
+ readonly port?: number | string;
136
+ readonly path?: string;
137
+ readonly publicHost?: string;
138
+ readonly publicPort?: number | string;
139
+ readonly publicScheme?: BroadcastConnectionScheme;
140
+ readonly healthPath?: string;
141
+ readonly statsPath?: string;
142
+ readonly scaling?: false | BroadcastWorkerScalingConfig;
143
+ }
144
+ type BroadcastConnectionConfigValue = string | number | boolean | object | undefined;
145
+ interface BaseBroadcastConnectionConfig {
146
+ readonly driver: BroadcastConnectionDriver | (string & {});
147
+ readonly options?: BroadcastConnectionOptionsConfig;
148
+ readonly clientOptions?: Readonly<Record<string, unknown>>;
149
+ readonly [key: string]: BroadcastConnectionConfigValue;
150
+ }
151
+ interface HoloBroadcastConnectionConfig extends BaseBroadcastConnectionConfig {
152
+ readonly driver: 'holo';
153
+ readonly key?: string;
154
+ readonly secret?: string;
155
+ readonly appId?: string | number;
156
+ }
157
+ interface PusherBroadcastConnectionConfig extends BaseBroadcastConnectionConfig {
158
+ readonly driver: 'pusher';
159
+ readonly key?: string;
160
+ readonly secret?: string;
161
+ readonly appId?: string | number;
162
+ }
163
+ interface LogBroadcastConnectionConfig extends BaseBroadcastConnectionConfig {
164
+ readonly driver: 'log';
165
+ }
166
+ interface NullBroadcastConnectionConfig extends BaseBroadcastConnectionConfig {
167
+ readonly driver: 'null';
168
+ }
169
+ type HoloBroadcastConnection = HoloBroadcastConnectionConfig | PusherBroadcastConnectionConfig | LogBroadcastConnectionConfig | NullBroadcastConnectionConfig | BaseBroadcastConnectionConfig;
170
+ interface HoloBroadcastConfig {
171
+ readonly default?: string;
172
+ readonly connections?: Readonly<Record<string, HoloBroadcastConnection>>;
173
+ readonly worker?: BroadcastWorkerConfig;
174
+ }
175
+ interface NormalizedBroadcastConnectionOptionsConfig {
176
+ readonly host: string;
177
+ readonly port: number;
178
+ readonly scheme: BroadcastConnectionScheme;
179
+ readonly useTLS: boolean;
180
+ readonly cluster?: string;
181
+ }
182
+ interface NormalizedBroadcastWorkerScalingConfig {
183
+ readonly driver: 'redis';
184
+ readonly connection: string;
185
+ }
186
+ interface NormalizedBroadcastWorkerConfig {
187
+ readonly host: string;
188
+ readonly port: number;
189
+ readonly path: string;
190
+ readonly publicHost?: string;
191
+ readonly publicPort?: number;
192
+ readonly publicScheme: BroadcastConnectionScheme;
193
+ readonly healthPath: string;
194
+ readonly statsPath: string;
195
+ readonly scaling: false | NormalizedBroadcastWorkerScalingConfig;
196
+ }
197
+ interface NormalizedBaseBroadcastConnectionConfig {
198
+ readonly name: string;
199
+ readonly driver: string;
200
+ readonly clientOptions: Readonly<Record<string, unknown>>;
201
+ }
202
+ interface NormalizedHoloBroadcastConnectionConfig extends NormalizedBaseBroadcastConnectionConfig {
203
+ readonly driver: 'holo';
204
+ readonly key: string;
205
+ readonly secret: string;
206
+ readonly appId: string;
207
+ readonly options: NormalizedBroadcastConnectionOptionsConfig;
208
+ }
209
+ interface NormalizedPusherBroadcastConnectionConfig extends NormalizedBaseBroadcastConnectionConfig {
210
+ readonly driver: 'pusher';
211
+ readonly key: string;
212
+ readonly secret: string;
213
+ readonly appId: string;
214
+ readonly options: NormalizedBroadcastConnectionOptionsConfig;
215
+ }
216
+ interface NormalizedLogBroadcastConnectionConfig extends NormalizedBaseBroadcastConnectionConfig {
217
+ readonly driver: 'log';
218
+ }
219
+ interface NormalizedNullBroadcastConnectionConfig extends NormalizedBaseBroadcastConnectionConfig {
220
+ readonly driver: 'null';
221
+ }
222
+ type NormalizedHoloBroadcastConnection = NormalizedHoloBroadcastConnectionConfig | NormalizedPusherBroadcastConnectionConfig | NormalizedLogBroadcastConnectionConfig | NormalizedNullBroadcastConnectionConfig | NormalizedBaseBroadcastConnectionConfig;
223
+ interface NormalizedHoloBroadcastConfig {
224
+ readonly default: string;
225
+ readonly connections: Readonly<Record<string, NormalizedHoloBroadcastConnection>>;
226
+ readonly worker: NormalizedBroadcastWorkerConfig;
227
+ }
228
+ type CacheDriver = 'memory' | 'file' | 'redis' | 'database';
229
+ interface CacheMemoryDriverConfig {
230
+ readonly driver: 'memory';
231
+ readonly maxEntries?: number | string;
232
+ readonly prefix?: string;
233
+ }
234
+ interface CacheFileDriverConfig {
235
+ readonly driver: 'file';
236
+ readonly path?: string;
237
+ readonly prefix?: string;
238
+ }
239
+ interface CacheRedisDriverConfig {
240
+ readonly driver: 'redis';
241
+ readonly connection?: string;
242
+ readonly prefix?: string;
243
+ }
244
+ interface CacheDatabaseDriverConfig {
245
+ readonly driver: 'database';
246
+ readonly connection?: string;
247
+ readonly table?: string;
248
+ readonly lockTable?: string;
249
+ readonly prefix?: string;
250
+ }
251
+ type CacheDriverConfig = CacheMemoryDriverConfig | CacheFileDriverConfig | CacheRedisDriverConfig | CacheDatabaseDriverConfig;
252
+ interface HoloCacheConfig {
253
+ readonly default?: string;
254
+ readonly prefix?: string;
255
+ readonly drivers?: Readonly<Record<string, CacheDriverConfig>>;
256
+ }
257
+ interface NormalizedCacheMemoryDriverConfig {
258
+ readonly name: string;
259
+ readonly driver: 'memory';
260
+ readonly prefix: string;
261
+ readonly maxEntries?: number;
262
+ }
263
+ interface NormalizedCacheFileDriverConfig {
264
+ readonly name: string;
265
+ readonly driver: 'file';
266
+ readonly path: string;
267
+ readonly prefix: string;
268
+ }
269
+ interface NormalizedCacheRedisDriverConfig {
270
+ readonly name: string;
271
+ readonly driver: 'redis';
272
+ readonly connection: string;
273
+ readonly prefix: string;
274
+ }
275
+ interface NormalizedCacheDatabaseDriverConfig {
276
+ readonly name: string;
277
+ readonly driver: 'database';
278
+ readonly connection: string;
279
+ readonly table: string;
280
+ readonly lockTable: string;
281
+ readonly prefix: string;
282
+ }
283
+ type NormalizedCacheDriverConfig = NormalizedCacheMemoryDriverConfig | NormalizedCacheFileDriverConfig | NormalizedCacheRedisDriverConfig | NormalizedCacheDatabaseDriverConfig;
284
+ interface NormalizedHoloCacheConfig {
285
+ readonly default: string;
286
+ readonly prefix: string;
287
+ readonly drivers: Readonly<Record<string, NormalizedCacheDriverConfig>>;
288
+ }
289
+ type SessionCookieSameSite = 'lax' | 'strict' | 'none';
290
+ interface HoloSessionCookieConfig {
291
+ readonly name?: string;
292
+ readonly path?: string;
293
+ readonly domain?: string;
294
+ readonly secure?: boolean;
295
+ readonly httpOnly?: boolean;
296
+ readonly sameSite?: SessionCookieSameSite;
297
+ readonly partitioned?: boolean;
298
+ readonly maxAge?: number | string;
299
+ }
300
+ interface SessionFileStoreConfig {
301
+ readonly driver: 'file';
302
+ readonly path?: string;
303
+ }
304
+ interface SessionDatabaseStoreConfig {
305
+ readonly driver: 'database';
306
+ readonly connection?: string;
307
+ readonly table?: string;
308
+ }
309
+ interface SessionRedisStoreConfig {
310
+ readonly driver: 'redis';
311
+ readonly connection?: string;
312
+ readonly prefix?: string;
313
+ }
314
+ type SessionStoreConfig = SessionFileStoreConfig | SessionDatabaseStoreConfig | SessionRedisStoreConfig;
315
+ interface HoloSessionConfig {
316
+ readonly driver?: string;
317
+ readonly stores?: Readonly<Record<string, SessionStoreConfig>>;
318
+ readonly cookie?: HoloSessionCookieConfig;
319
+ readonly idleTimeout?: number | string;
320
+ readonly absoluteLifetime?: number | string;
321
+ readonly rememberMeLifetime?: number | string;
322
+ }
323
+ interface NormalizedHoloSessionCookieConfig {
324
+ readonly name: string;
325
+ readonly path: string;
326
+ readonly domain?: string;
327
+ readonly secure: boolean;
328
+ readonly httpOnly: boolean;
329
+ readonly sameSite: SessionCookieSameSite;
330
+ readonly partitioned: boolean;
331
+ readonly maxAge: number;
332
+ }
333
+ interface NormalizedSessionFileStoreConfig {
334
+ readonly name: string;
335
+ readonly driver: 'file';
336
+ readonly path: string;
337
+ }
338
+ interface NormalizedSessionDatabaseStoreConfig {
339
+ readonly name: string;
340
+ readonly driver: 'database';
341
+ readonly connection: string;
342
+ readonly table: string;
343
+ }
344
+ interface NormalizedSessionRedisStoreConfig {
345
+ readonly name: string;
346
+ readonly driver: 'redis';
347
+ readonly connection: string;
348
+ readonly url?: string;
349
+ readonly clusters?: readonly NormalizedHoloRedisClusterNodeConfig[];
350
+ readonly host: string;
351
+ readonly port: number;
352
+ readonly username?: string;
353
+ readonly password?: string;
354
+ readonly db: number;
355
+ readonly prefix: string;
356
+ }
357
+ type NormalizedSessionStoreConfig = NormalizedSessionFileStoreConfig | NormalizedSessionDatabaseStoreConfig | NormalizedSessionRedisStoreConfig;
358
+ interface NormalizedHoloSessionConfig {
359
+ readonly driver: string;
360
+ readonly stores: Readonly<Record<string, NormalizedSessionStoreConfig>>;
361
+ readonly cookie: NormalizedHoloSessionCookieConfig;
362
+ readonly idleTimeout: number;
363
+ readonly absoluteLifetime: number;
364
+ readonly rememberMeLifetime: number;
365
+ }
366
+ type SecurityRateLimitDriver = 'memory' | 'file' | 'redis';
367
+ interface HoloSecurityCsrfConfig {
368
+ readonly enabled?: boolean;
369
+ readonly field?: string;
370
+ readonly header?: string;
371
+ readonly cookie?: string;
372
+ readonly except?: readonly string[];
373
+ }
374
+ interface NormalizedHoloSecurityCsrfConfig {
375
+ readonly enabled: boolean;
376
+ readonly field: string;
377
+ readonly header: string;
378
+ readonly cookie: string;
379
+ readonly except: readonly string[];
380
+ }
381
+ interface SecurityRateLimitContext<TValues extends Readonly<Record<string, unknown>> | undefined = Readonly<Record<string, unknown>> | undefined> {
382
+ readonly request: Request;
383
+ readonly values?: TValues;
384
+ }
385
+ interface SecurityRateLimitKeyResolver<TValues extends Readonly<Record<string, unknown>> | undefined = Readonly<Record<string, unknown>> | undefined> {
386
+ (context: SecurityRateLimitContext<TValues>): string | Promise<string>;
387
+ }
388
+ interface SecurityLimiterConfig<TValues extends Readonly<Record<string, unknown>> | undefined = Readonly<Record<string, unknown>> | undefined> {
389
+ readonly maxAttempts: number | string;
390
+ readonly decaySeconds: number | string;
391
+ readonly key?: SecurityRateLimitKeyResolver<TValues>;
392
+ }
393
+ interface NormalizedSecurityLimiterConfig<TValues extends Readonly<Record<string, unknown>> | undefined = Readonly<Record<string, unknown>> | undefined> {
394
+ readonly name: string;
395
+ readonly maxAttempts: number;
396
+ readonly decaySeconds: number;
397
+ readonly key?: SecurityRateLimitKeyResolver<TValues>;
398
+ }
399
+ interface SecurityRateLimitMemoryConfig {
400
+ readonly driver?: 'memory';
401
+ }
402
+ interface SecurityRateLimitFileConfig {
403
+ readonly path?: string;
404
+ }
405
+ interface SecurityRateLimitRedisConnectionConfig {
406
+ readonly url?: string;
407
+ readonly clusters?: readonly HoloRedisClusterNodeConfig[];
408
+ readonly host?: string;
409
+ readonly port?: number | string;
410
+ readonly password?: string;
411
+ readonly username?: string;
412
+ readonly db?: number | string;
413
+ }
414
+ interface SecurityRateLimitRedisConfig {
415
+ readonly connection?: string;
416
+ readonly prefix?: string;
417
+ }
418
+ interface HoloSecurityRateLimitConfig {
419
+ readonly driver?: SecurityRateLimitDriver;
420
+ readonly memory?: SecurityRateLimitMemoryConfig;
421
+ readonly file?: SecurityRateLimitFileConfig;
422
+ readonly redis?: SecurityRateLimitRedisConfig;
423
+ readonly limiters?: Readonly<Record<string, SecurityLimiterConfig>>;
424
+ }
425
+ interface NormalizedSecurityRateLimitMemoryConfig {
426
+ readonly driver: 'memory';
427
+ }
428
+ interface NormalizedSecurityRateLimitFileConfig {
429
+ readonly path: string;
430
+ }
431
+ interface NormalizedSecurityRateLimitRedisConfig {
432
+ readonly url?: string;
433
+ readonly clusters?: readonly NormalizedHoloRedisClusterNodeConfig[];
434
+ readonly host: string;
435
+ readonly port: number;
436
+ readonly password?: string;
437
+ readonly username?: string;
438
+ readonly db: number;
439
+ readonly connection: string;
440
+ readonly prefix: string;
441
+ }
442
+ interface NormalizedHoloSecurityRateLimitConfig {
443
+ readonly driver: SecurityRateLimitDriver;
444
+ readonly memory: NormalizedSecurityRateLimitMemoryConfig;
445
+ readonly file: NormalizedSecurityRateLimitFileConfig;
446
+ readonly redis: NormalizedSecurityRateLimitRedisConfig;
447
+ readonly limiters: Readonly<Record<string, NormalizedSecurityLimiterConfig>>;
448
+ }
449
+ interface HoloSecurityConfig {
450
+ readonly csrf?: boolean | HoloSecurityCsrfConfig;
451
+ readonly rateLimit?: HoloSecurityRateLimitConfig;
452
+ }
453
+ interface NormalizedHoloSecurityConfig {
454
+ readonly csrf: NormalizedHoloSecurityCsrfConfig;
455
+ readonly rateLimit: NormalizedHoloSecurityRateLimitConfig;
456
+ }
457
+ type AuthGuardDriver = 'session' | 'token';
458
+ interface AuthGuardConfig {
459
+ readonly driver: AuthGuardDriver;
460
+ readonly provider?: string;
461
+ }
462
+ interface AuthProviderConfig {
463
+ readonly model: string;
464
+ readonly identifiers?: readonly string[];
465
+ }
466
+ interface AuthPasswordBrokerConfig {
467
+ readonly provider?: string;
468
+ readonly table?: string;
469
+ readonly expire?: number | string;
470
+ readonly throttle?: number | string;
471
+ }
472
+ interface AuthEmailVerificationConfig {
473
+ readonly required?: boolean;
474
+ }
475
+ interface AuthPersonalAccessTokenConfig {
476
+ readonly defaultAbilities?: readonly string[];
477
+ }
478
+ interface AuthSocialProviderConfig {
479
+ readonly runtime?: string;
480
+ readonly clientId?: string;
481
+ readonly clientSecret?: string;
482
+ readonly redirectUri?: string;
483
+ readonly scopes?: readonly string[];
484
+ readonly guard?: string;
485
+ readonly mapToProvider?: string;
486
+ readonly encryptTokens?: boolean;
487
+ }
488
+ interface AuthWorkosProviderConfig {
489
+ readonly clientId?: string;
490
+ readonly apiKey?: string;
491
+ readonly cookiePassword?: string;
492
+ readonly redirectUri?: string;
493
+ readonly sessionCookie?: string;
494
+ readonly guard?: string;
495
+ readonly mapToProvider?: string;
496
+ }
497
+ interface AuthClerkProviderConfig {
498
+ readonly publishableKey?: string;
499
+ readonly secretKey?: string;
500
+ readonly jwtKey?: string;
501
+ readonly apiUrl?: string;
502
+ readonly frontendApi?: string;
503
+ readonly sessionCookie?: string;
504
+ readonly authorizedParties?: readonly string[];
505
+ readonly guard?: string;
506
+ readonly mapToProvider?: string;
507
+ }
508
+ interface HoloAuthConfig {
509
+ readonly defaults?: {
510
+ readonly guard?: string;
511
+ readonly passwords?: string;
512
+ };
513
+ readonly guards?: Readonly<Record<string, AuthGuardConfig>>;
514
+ readonly providers?: Readonly<Record<string, AuthProviderConfig>>;
515
+ readonly passwords?: Readonly<Record<string, AuthPasswordBrokerConfig>>;
516
+ readonly emailVerification?: boolean | AuthEmailVerificationConfig;
517
+ readonly personalAccessTokens?: AuthPersonalAccessTokenConfig;
518
+ readonly socialEncryptionKey?: string;
519
+ readonly social?: Readonly<Record<string, AuthSocialProviderConfig>>;
520
+ readonly workos?: Readonly<Record<string, AuthWorkosProviderConfig>>;
521
+ readonly clerk?: Readonly<Record<string, AuthClerkProviderConfig>>;
522
+ }
523
+ interface NormalizedAuthGuardConfig {
524
+ readonly name: string;
525
+ readonly driver: AuthGuardDriver;
526
+ readonly provider: string;
527
+ }
528
+ interface NormalizedAuthProviderConfig {
529
+ readonly name: string;
530
+ readonly model: string;
531
+ readonly identifiers: readonly string[];
532
+ }
533
+ interface NormalizedAuthPasswordBrokerConfig {
534
+ readonly name: string;
535
+ readonly provider: string;
536
+ readonly table: string;
537
+ readonly expire: number;
538
+ readonly throttle: number;
539
+ }
540
+ interface NormalizedAuthSocialProviderConfig {
541
+ readonly name: string;
542
+ readonly runtime?: string;
543
+ readonly clientId?: string;
544
+ readonly clientSecret?: string;
545
+ readonly redirectUri?: string;
546
+ readonly scopes: readonly string[];
547
+ readonly guard?: string;
548
+ readonly mapToProvider?: string;
549
+ readonly encryptTokens: boolean;
550
+ }
551
+ interface NormalizedAuthWorkosProviderConfig {
552
+ readonly name: string;
553
+ readonly clientId?: string;
554
+ readonly apiKey?: string;
555
+ readonly cookiePassword?: string;
556
+ readonly redirectUri?: string;
557
+ readonly sessionCookie: string;
558
+ readonly guard?: string;
559
+ readonly mapToProvider?: string;
560
+ }
561
+ interface NormalizedAuthClerkProviderConfig {
562
+ readonly name: string;
563
+ readonly publishableKey?: string;
564
+ readonly secretKey?: string;
565
+ readonly jwtKey?: string;
566
+ readonly apiUrl?: string;
567
+ readonly frontendApi?: string;
568
+ readonly sessionCookie: string;
569
+ readonly authorizedParties: readonly string[];
570
+ readonly guard?: string;
571
+ readonly mapToProvider?: string;
572
+ }
573
+ interface NormalizedHoloAuthConfig {
574
+ readonly defaults: {
575
+ readonly guard: string;
576
+ readonly passwords: string;
577
+ };
578
+ readonly guards: Readonly<Record<string, NormalizedAuthGuardConfig>>;
579
+ readonly providers: Readonly<Record<string, NormalizedAuthProviderConfig>>;
580
+ readonly passwords: Readonly<Record<string, NormalizedAuthPasswordBrokerConfig>>;
581
+ readonly emailVerification: {
582
+ readonly required: boolean;
583
+ };
584
+ readonly personalAccessTokens: {
585
+ readonly defaultAbilities: readonly string[];
586
+ };
587
+ readonly socialEncryptionKey?: string;
588
+ readonly social: Readonly<Record<string, NormalizedAuthSocialProviderConfig>>;
589
+ readonly workos: Readonly<Record<string, NormalizedAuthWorkosProviderConfig>>;
590
+ readonly clerk: Readonly<Record<string, NormalizedAuthClerkProviderConfig>>;
591
+ }
592
+ interface QueueRedisConnectionConfig {
593
+ readonly driver: 'redis';
594
+ readonly connection?: string;
595
+ readonly queue?: string;
596
+ readonly retryAfter?: number | string;
597
+ readonly blockFor?: number | string;
598
+ }
599
+ interface QueueDatabaseConnectionConfig {
600
+ readonly driver: 'database';
601
+ readonly queue?: string;
602
+ readonly retryAfter?: number | string;
603
+ readonly sleep?: number | string;
604
+ readonly connection?: string;
605
+ readonly table?: string;
606
+ }
607
+ interface QueueFailedStoreConfig {
608
+ readonly driver?: 'database';
609
+ readonly connection?: string;
610
+ readonly table?: string;
611
+ }
612
+ interface QueueSyncConnectionConfig {
613
+ readonly driver: 'sync';
614
+ readonly queue?: string;
615
+ }
616
+ type QueueConnectionConfig = QueueSyncConnectionConfig | QueueRedisConnectionConfig | QueueDatabaseConnectionConfig;
617
+ interface HoloQueueConfig {
618
+ readonly default?: string;
619
+ readonly failed?: false | QueueFailedStoreConfig;
620
+ readonly connections?: Readonly<Record<string, QueueConnectionConfig>>;
621
+ }
622
+ interface NormalizedQueueFailedStoreConfig {
623
+ readonly driver: 'database';
624
+ readonly connection: string;
625
+ readonly table: string;
626
+ }
627
+ interface NormalizedQueueSyncConnectionConfig {
628
+ readonly name: string;
629
+ readonly driver: 'sync';
630
+ readonly queue: string;
631
+ }
632
+ interface NormalizedQueueRedisConnectionConfig {
633
+ readonly name: string;
634
+ readonly driver: 'redis';
635
+ readonly connection: string;
636
+ readonly queue: string;
637
+ readonly retryAfter: number;
638
+ readonly blockFor: number;
639
+ readonly redis: {
640
+ readonly url?: string;
641
+ readonly clusters?: readonly NormalizedHoloRedisClusterNodeConfig[];
642
+ readonly host: string;
643
+ readonly port: number;
644
+ readonly password?: string;
645
+ readonly username?: string;
646
+ readonly db: number;
647
+ };
648
+ }
649
+ interface NormalizedQueueDatabaseConnectionConfig {
650
+ readonly name: string;
651
+ readonly driver: 'database';
652
+ readonly queue: string;
653
+ readonly retryAfter: number;
654
+ readonly sleep: number;
655
+ readonly connection: string;
656
+ readonly table: string;
657
+ }
658
+ type NormalizedQueueConnectionConfig = NormalizedQueueSyncConnectionConfig | NormalizedQueueRedisConnectionConfig | NormalizedQueueDatabaseConnectionConfig;
659
+ interface NormalizedHoloQueueConfig {
660
+ readonly default: string;
661
+ readonly failed: false | NormalizedQueueFailedStoreConfig;
662
+ readonly connections: Readonly<Record<string, NormalizedQueueConnectionConfig>>;
663
+ }
81
664
  interface NormalizedHoloAppConfig {
82
665
  readonly name: string;
83
666
  readonly key: string;
@@ -98,12 +681,139 @@ interface NormalizedHoloStorageConfig {
98
681
  readonly routePrefix: string;
99
682
  readonly disks: Readonly<Record<string, DiskConfig>>;
100
683
  }
684
+ interface HoloNotificationsConfig {
685
+ readonly table?: string;
686
+ readonly queue?: {
687
+ readonly connection?: string;
688
+ readonly queue?: string;
689
+ readonly afterCommit?: boolean;
690
+ };
691
+ }
692
+ interface NormalizedHoloNotificationsConfig {
693
+ readonly table: string;
694
+ readonly queue: {
695
+ readonly connection?: string;
696
+ readonly queue?: string;
697
+ readonly afterCommit: boolean;
698
+ };
699
+ }
700
+ interface HoloMailAddressConfig {
701
+ readonly email: string;
702
+ readonly name?: string;
703
+ }
704
+ interface HoloMailQueueConfig {
705
+ readonly queued?: boolean;
706
+ readonly connection?: string;
707
+ readonly queue?: string;
708
+ readonly afterCommit?: boolean;
709
+ }
710
+ interface HoloMailPreviewConfig {
711
+ readonly allowedEnvironments?: readonly HoloAppEnv[];
712
+ }
713
+ interface HoloMailMarkdownConfig {
714
+ readonly wrapper?: string;
715
+ }
716
+ interface BaseMailDriverConfig {
717
+ readonly driver: string;
718
+ readonly from?: HoloMailAddressConfig;
719
+ readonly replyTo?: HoloMailAddressConfig;
720
+ readonly queue?: HoloMailQueueConfig;
721
+ }
722
+ interface PreviewMailDriverConfig extends BaseMailDriverConfig {
723
+ readonly driver: 'preview';
724
+ readonly path?: string;
725
+ }
726
+ interface LogMailDriverConfig extends BaseMailDriverConfig {
727
+ readonly driver: 'log';
728
+ readonly logBodies?: boolean;
729
+ }
730
+ interface FakeMailDriverConfig extends BaseMailDriverConfig {
731
+ readonly driver: 'fake';
732
+ }
733
+ interface SmtpMailDriverConfig extends BaseMailDriverConfig {
734
+ readonly driver: 'smtp';
735
+ readonly host?: string;
736
+ readonly port?: number | string;
737
+ readonly secure?: boolean;
738
+ readonly user?: string;
739
+ readonly password?: string;
740
+ }
741
+ type HoloMailMailerConfig = PreviewMailDriverConfig | LogMailDriverConfig | FakeMailDriverConfig | SmtpMailDriverConfig | (BaseMailDriverConfig & Record<string, unknown>);
742
+ interface HoloMailConfig {
743
+ readonly default?: string;
744
+ readonly from?: HoloMailAddressConfig;
745
+ readonly replyTo?: HoloMailAddressConfig;
746
+ readonly queue?: HoloMailQueueConfig;
747
+ readonly preview?: HoloMailPreviewConfig;
748
+ readonly markdown?: HoloMailMarkdownConfig;
749
+ readonly mailers?: Readonly<Record<string, HoloMailMailerConfig>>;
750
+ }
751
+ interface NormalizedHoloMailAddressConfig {
752
+ readonly email: string;
753
+ readonly name?: string;
754
+ }
755
+ interface NormalizedHoloMailQueueConfig {
756
+ readonly queued: boolean;
757
+ readonly connection?: string;
758
+ readonly queue?: string;
759
+ readonly afterCommit: boolean;
760
+ }
761
+ interface NormalizedHoloMailPreviewConfig {
762
+ readonly allowedEnvironments: readonly HoloAppEnv[];
763
+ }
764
+ interface NormalizedHoloMailMarkdownConfig {
765
+ readonly wrapper?: string;
766
+ }
767
+ interface NormalizedBaseMailDriverConfig {
768
+ readonly name: string;
769
+ readonly driver: string;
770
+ readonly from?: NormalizedHoloMailAddressConfig;
771
+ readonly replyTo?: NormalizedHoloMailAddressConfig;
772
+ readonly queue: NormalizedHoloMailQueueConfig;
773
+ }
774
+ interface NormalizedPreviewMailDriverConfig extends NormalizedBaseMailDriverConfig {
775
+ readonly driver: 'preview';
776
+ readonly path: string;
777
+ }
778
+ interface NormalizedLogMailDriverConfig extends NormalizedBaseMailDriverConfig {
779
+ readonly driver: 'log';
780
+ readonly logBodies: boolean;
781
+ }
782
+ interface NormalizedFakeMailDriverConfig extends NormalizedBaseMailDriverConfig {
783
+ readonly driver: 'fake';
784
+ }
785
+ interface NormalizedSmtpMailDriverConfig extends NormalizedBaseMailDriverConfig {
786
+ readonly driver: 'smtp';
787
+ readonly host: string;
788
+ readonly port: number;
789
+ readonly secure: boolean;
790
+ readonly user?: string;
791
+ readonly password?: string;
792
+ }
793
+ type NormalizedHoloMailMailerConfig = NormalizedPreviewMailDriverConfig | NormalizedLogMailDriverConfig | NormalizedFakeMailDriverConfig | NormalizedSmtpMailDriverConfig | NormalizedBaseMailDriverConfig;
794
+ interface NormalizedHoloMailConfig {
795
+ readonly default: string;
796
+ readonly from?: NormalizedHoloMailAddressConfig;
797
+ readonly replyTo?: NormalizedHoloMailAddressConfig;
798
+ readonly queue: NormalizedHoloMailQueueConfig;
799
+ readonly preview: NormalizedHoloMailPreviewConfig;
800
+ readonly markdown: NormalizedHoloMailMarkdownConfig;
801
+ readonly mailers: Readonly<Record<string, NormalizedHoloMailMailerConfig>>;
802
+ }
101
803
  interface HoloConfigRegistry {
102
804
  app: NormalizedHoloAppConfig;
103
805
  database: NormalizedHoloDatabaseConfig;
806
+ redis: NormalizedHoloRedisConfig;
807
+ cache: NormalizedHoloCacheConfig;
104
808
  storage: NormalizedHoloStorageConfig;
105
809
  queue: NormalizedHoloQueueConfig;
810
+ broadcast: NormalizedHoloBroadcastConfig;
811
+ mail: NormalizedHoloMailConfig;
812
+ notifications: NormalizedHoloNotificationsConfig;
106
813
  media: HoloMediaConfig;
814
+ session: NormalizedHoloSessionConfig;
815
+ security: NormalizedHoloSecurityConfig;
816
+ auth: NormalizedHoloAuthConfig;
107
817
  }
108
818
  type HoloConfigMap = object;
109
819
  interface LoadedEnvironment {
@@ -115,9 +825,17 @@ interface LoadedEnvironment {
115
825
  interface LoadedHoloConfig<TCustom extends HoloConfigMap = HoloConfigMap> {
116
826
  readonly app: NormalizedHoloAppConfig;
117
827
  readonly database: NormalizedHoloDatabaseConfig;
828
+ readonly redis: NormalizedHoloRedisConfig;
829
+ readonly cache: NormalizedHoloCacheConfig;
118
830
  readonly storage: NormalizedHoloStorageConfig;
119
831
  readonly queue: NormalizedHoloQueueConfig;
832
+ readonly broadcast: NormalizedHoloBroadcastConfig;
833
+ readonly mail: NormalizedHoloMailConfig;
834
+ readonly notifications: NormalizedHoloNotificationsConfig;
120
835
  readonly media: HoloMediaConfig;
836
+ readonly session: NormalizedHoloSessionConfig;
837
+ readonly security: NormalizedHoloSecurityConfig;
838
+ readonly auth: NormalizedHoloAuthConfig;
121
839
  readonly custom: Readonly<TCustom>;
122
840
  readonly all: Readonly<HoloConfigRegistry & TCustom>;
123
841
  readonly environment: LoadedEnvironment;
@@ -139,13 +857,33 @@ type DefineConfigValue<TConfig extends object> = Readonly<TConfig>;
139
857
  declare const DEFAULT_APP_NAME = "Holo";
140
858
  declare const holoAppDefaults: Readonly<NormalizedHoloAppConfig>;
141
859
  declare const holoDatabaseDefaults: Readonly<NormalizedHoloDatabaseConfig>;
860
+ declare const holoRedisDefaults: Readonly<NormalizedHoloRedisConfig>;
142
861
  declare const holoStorageDefaults: Readonly<NormalizedHoloStorageConfig>;
862
+ declare const holoNotificationsDefaults: Readonly<NormalizedHoloNotificationsConfig>;
863
+ declare const holoBroadcastDefaults: Readonly<NormalizedHoloBroadcastConfig>;
864
+ declare const holoCacheDefaults: Readonly<NormalizedHoloCacheConfig>;
865
+ type CacheNormalizationOptions = {
866
+ readonly database?: NormalizedHoloDatabaseConfig;
867
+ readonly redis?: NormalizedHoloRedisConfig;
868
+ };
869
+ declare const holoMailDefaults: Readonly<NormalizedHoloMailConfig>;
870
+ declare const holoSessionDefaults: Readonly<NormalizedHoloSessionConfig>;
871
+ declare const holoSecurityDefaults: Readonly<NormalizedHoloSecurityConfig>;
872
+ declare const holoAuthDefaults: Readonly<NormalizedHoloAuthConfig>;
873
+ declare function normalizeCacheConfig(config?: HoloCacheConfig, options?: CacheNormalizationOptions): NormalizedHoloCacheConfig;
143
874
  declare const holoQueueDefaultsNormalized: Readonly<NormalizedHoloQueueConfig>;
144
875
  declare function normalizeAppEnv(value: string | undefined, fallback?: HoloAppEnv): HoloAppEnv;
145
876
  declare function normalizeAppConfig(config?: HoloAppConfig): NormalizedHoloAppConfig;
877
+ declare function normalizeSessionConfig(config?: HoloSessionConfig, redisConfig?: NormalizedHoloRedisConfig): NormalizedHoloSessionConfig;
878
+ declare function normalizeSecurityConfig(config?: HoloSecurityConfig, redisConfig?: NormalizedHoloRedisConfig): NormalizedHoloSecurityConfig;
879
+ declare function normalizeAuthConfig(config?: HoloAuthConfig): NormalizedHoloAuthConfig;
146
880
  declare function normalizeDatabaseConfig(config?: HoloDatabaseConfig): NormalizedHoloDatabaseConfig;
147
881
  declare function normalizeStorageConfig(config?: HoloStorageConfig): NormalizedHoloStorageConfig;
148
- declare function normalizeQueueConfigForHolo(config?: HoloQueueConfig): NormalizedHoloQueueConfig;
882
+ declare function normalizeBroadcastConfig(config?: HoloBroadcastConfig): NormalizedHoloBroadcastConfig;
883
+ declare function normalizeMailConfig(config?: HoloMailConfig): NormalizedHoloMailConfig;
884
+ declare function normalizeNotificationsConfig(config?: HoloNotificationsConfig): NormalizedHoloNotificationsConfig;
885
+ declare function normalizeRedisConfig(config?: HoloRedisConfig): NormalizedHoloRedisConfig;
886
+ declare function normalizeQueueConfigForHolo(config?: HoloQueueConfig, redisConfig?: NormalizedHoloRedisConfig): NormalizedHoloQueueConfig;
149
887
 
150
888
  type RuntimeConfigMap = HoloConfigRegistry & HoloConfigMap;
151
889
  type UseConfigAccessor<TConfig extends RuntimeConfigMap> = {
@@ -192,8 +930,25 @@ declare function env<TValue extends EnvScalar>(key: string, fallback: TValue): T
192
930
  declare function isEnvPlaceholder(value: unknown): value is EnvPlaceholder;
193
931
  declare function resolveEnvPlaceholders<TValue>(value: TValue, envValues: Readonly<Record<string, string>>): TValue;
194
932
 
933
+ type RawConfigMap = Record<string, unknown>;
934
+ type ConfigCachePayload = {
935
+ readonly version: number;
936
+ readonly environment: {
937
+ readonly name: string;
938
+ readonly loadedFiles: readonly string[];
939
+ readonly warnings: readonly string[];
940
+ };
941
+ readonly configFiles: readonly string[];
942
+ readonly config: RawConfigMap;
943
+ readonly deferredConfigNames: readonly ConfigFileName[];
944
+ };
195
945
  declare function resolveConfigExport<TConfig extends object>(moduleValue: unknown): TConfig;
196
946
  declare function getConfigExtensionPriority(fileName: string): number;
947
+ declare function splitCacheableConfig(rawConfig: RawConfigMap): {
948
+ readonly cacheableConfig: RawConfigMap;
949
+ readonly deferredConfigNames: readonly ConfigFileName[];
950
+ };
951
+ declare function getDeferredConfigNames(payload: ConfigCachePayload): readonly ConfigFileName[];
197
952
  declare function resolveConfigCachePath(projectRoot: string): string;
198
953
  declare function writeConfigCache(projectRoot: string, options?: {
199
954
  envName?: string;
@@ -208,12 +963,22 @@ declare function loadConfigDirectory<TCustom extends HoloConfigMap = HoloConfigM
208
963
  declare function defineConfig<TConfig extends object>(config: TConfig): DefineConfigValue<TConfig>;
209
964
  declare function defineAppConfig<TConfig extends HoloAppConfig>(config: TConfig): DefineConfigValue<TConfig>;
210
965
  declare function defineDatabaseConfig<TConfig extends HoloDatabaseConfig>(config: TConfig): DefineConfigValue<TConfig>;
966
+ declare function defineRedisConfig<TConfig extends HoloRedisConfig>(config: TConfig): DefineConfigValue<TConfig>;
967
+ declare function defineCacheConfig<TConfig extends HoloCacheConfig>(config: TConfig): DefineConfigValue<TConfig>;
211
968
  declare function defineStorageConfig<TConfig extends HoloStorageConfig>(config: TConfig): DefineConfigValue<TConfig>;
212
969
  declare function defineQueueConfig<TConfig extends HoloQueueConfig>(config: TConfig): DefineConfigValue<TConfig>;
970
+ declare function defineBroadcastConfig<TConfig extends HoloBroadcastConfig>(config: TConfig): DefineConfigValue<TConfig>;
971
+ declare function defineMailConfig<TConfig extends HoloMailConfig>(config: TConfig): DefineConfigValue<TConfig>;
972
+ declare function defineNotificationsConfig<const TConfig extends HoloNotificationsConfig>(config: TConfig): DefineConfigValue<TConfig>;
213
973
  declare function defineMediaConfig<TConfig extends HoloMediaConfig>(config: TConfig): DefineConfigValue<TConfig>;
974
+ declare function defineSessionConfig<TConfig extends HoloSessionConfig>(config: TConfig): DefineConfigValue<TConfig>;
975
+ declare function defineSecurityConfig<TConfig extends HoloSecurityConfig>(config: TConfig): DefineConfigValue<TConfig>;
976
+ declare function defineAuthConfig<TConfig extends HoloAuthConfig>(config: TConfig): DefineConfigValue<TConfig>;
214
977
  declare const loaderInternals: {
978
+ getDeferredConfigNames: typeof getDeferredConfigNames;
215
979
  getConfigExtensionPriority: typeof getConfigExtensionPriority;
216
980
  resolveConfigExport: typeof resolveConfigExport;
981
+ splitCacheableConfig: typeof splitCacheableConfig;
217
982
  };
218
983
 
219
- export { type ConfigFileName, DEFAULT_APP_NAME, type DefineConfigValue, type DiskConfig, type DotPath, type HoloAppConfig, type HoloAppEnv, type HoloConfigMap, type HoloConfigRegistry, type HoloDatabaseConfig, type HoloDatabaseConnectionConfig, type HoloMediaConfig, type HoloStorageConfig, type LoadedEnvironment, type LoadedHoloConfig, type NormalizedHoloAppConfig, type NormalizedHoloDatabaseConfig, type NormalizedHoloStorageConfig, type SupportedDatabaseDriver, type ValueAtPath, clearConfigCache, config, configureConfigRuntime, configureEnvRuntime, createConfigAccessors, defineAppConfig, defineConfig, defineDatabaseConfig, defineMediaConfig, defineQueueConfig, defineStorageConfig, env, holoAppDefaults, holoDatabaseDefaults, holoQueueDefaultsNormalized, holoStorageDefaults, isEnvPlaceholder, loadConfigDirectory, loadEnvironment, loaderInternals, normalizeAppConfig, normalizeAppEnv, normalizeDatabaseConfig, normalizeQueueConfigForHolo, normalizeStorageConfig, resetConfigRuntime, resolveAppEnvironment, resolveConfigCachePath, resolveEnvPlaceholders, resolveEnvironmentFileOrder, useConfig, writeConfigCache };
984
+ export { type AuthClerkProviderConfig, type AuthEmailVerificationConfig, type AuthGuardConfig, type AuthPasswordBrokerConfig, type AuthPersonalAccessTokenConfig, type AuthProviderConfig, type AuthSocialProviderConfig, type AuthWorkosProviderConfig, type BroadcastConnectionDriver, type BroadcastConnectionOptionsConfig, type BroadcastConnectionScheme, type BroadcastWorkerConfig, type BroadcastWorkerScalingConfig, type CacheDatabaseDriverConfig, type CacheDriver, type CacheDriverConfig, type CacheFileDriverConfig, type CacheMemoryDriverConfig, type CacheRedisDriverConfig, type ConfigFileName, DEFAULT_APP_NAME, type DefineConfigValue, type DiskConfig, type DotPath, type HoloAppConfig, type HoloAppEnv, type HoloAuthConfig, type HoloBroadcastConfig, type HoloBroadcastConnection, type HoloBroadcastConnectionConfig, type HoloCacheConfig, type HoloConfigMap, type HoloConfigRegistry, type HoloDatabaseConfig, type HoloDatabaseConnectionConfig, type HoloMailAddressConfig, type HoloMailConfig, type HoloMailMailerConfig, type HoloMailPreviewConfig, type HoloMailQueueConfig, type HoloMediaConfig, type HoloNotificationsConfig, type HoloQueueConfig, type HoloRedisClusterNodeConfig, type HoloRedisConfig, type HoloRedisConnectionConfig, type HoloSecurityConfig, type HoloSecurityCsrfConfig, type HoloSecurityRateLimitConfig, type HoloSessionConfig, type HoloSessionCookieConfig, type HoloStorageConfig, type LoadedEnvironment, type LoadedHoloConfig, type NormalizedAuthClerkProviderConfig, type NormalizedAuthGuardConfig, type NormalizedAuthPasswordBrokerConfig, type NormalizedAuthProviderConfig, type NormalizedAuthSocialProviderConfig, type NormalizedAuthWorkosProviderConfig, type NormalizedBroadcastConnectionOptionsConfig, type NormalizedBroadcastWorkerConfig, type NormalizedCacheDatabaseDriverConfig, type NormalizedCacheDriverConfig, type NormalizedCacheFileDriverConfig, type NormalizedCacheMemoryDriverConfig, type NormalizedCacheRedisDriverConfig, type NormalizedHoloAppConfig, type NormalizedHoloAuthConfig, type NormalizedHoloBroadcastConfig, type NormalizedHoloBroadcastConnection, type NormalizedHoloCacheConfig, type NormalizedHoloDatabaseConfig, type NormalizedHoloMailAddressConfig, type NormalizedHoloMailConfig, type NormalizedHoloMailMailerConfig, type NormalizedHoloMailPreviewConfig, type NormalizedHoloMailQueueConfig, type NormalizedHoloNotificationsConfig, type NormalizedHoloQueueConfig, type NormalizedHoloRedisClusterNodeConfig, type NormalizedHoloRedisConfig, type NormalizedHoloRedisConnectionConfig, type NormalizedHoloSecurityConfig, type NormalizedHoloSecurityCsrfConfig, type NormalizedHoloSecurityRateLimitConfig, type NormalizedHoloSessionConfig, type NormalizedHoloSessionCookieConfig, type NormalizedHoloStorageConfig, type NormalizedSecurityLimiterConfig, type NormalizedSecurityRateLimitRedisConfig, type NormalizedSessionDatabaseStoreConfig, type NormalizedSessionFileStoreConfig, type NormalizedSessionRedisStoreConfig, type NormalizedSessionStoreConfig, type SecurityLimiterConfig, type SecurityRateLimitContext, type SecurityRateLimitDriver, type SecurityRateLimitFileConfig, type SecurityRateLimitKeyResolver, type SecurityRateLimitMemoryConfig, type SecurityRateLimitRedisConfig, type SecurityRateLimitRedisConnectionConfig, type SessionCookieSameSite, type SessionDatabaseStoreConfig, type SessionFileStoreConfig, type SessionRedisStoreConfig, type SessionStoreConfig, type SupportedDatabaseDriver, type ValueAtPath, clearConfigCache, config, configureConfigRuntime, configureEnvRuntime, createConfigAccessors, defineAppConfig, defineAuthConfig, defineBroadcastConfig, defineCacheConfig, defineConfig, defineDatabaseConfig, defineMailConfig, defineMediaConfig, defineNotificationsConfig, defineQueueConfig, defineRedisConfig, defineSecurityConfig, defineSessionConfig, defineStorageConfig, env, holoAppDefaults, holoAuthDefaults, holoBroadcastDefaults, holoCacheDefaults, holoDatabaseDefaults, holoMailDefaults, holoNotificationsDefaults, holoQueueDefaultsNormalized, holoRedisDefaults, holoSecurityDefaults, holoSessionDefaults, holoStorageDefaults, isEnvPlaceholder, loadConfigDirectory, loadEnvironment, loaderInternals, normalizeAppConfig, normalizeAppEnv, normalizeAuthConfig, normalizeBroadcastConfig, normalizeCacheConfig, normalizeDatabaseConfig, normalizeMailConfig, normalizeNotificationsConfig, normalizeQueueConfigForHolo, normalizeRedisConfig, normalizeSecurityConfig, normalizeSessionConfig, normalizeStorageConfig, resetConfigRuntime, resolveAppEnvironment, resolveConfigCachePath, resolveEnvPlaceholders, resolveEnvironmentFileOrder, useConfig, writeConfigCache };