@spfn/core 0.2.0-beta.4 → 0.2.0-beta.40
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 +260 -1175
- package/dist/{boss-BO8ty33K.d.ts → boss-DI1r4kTS.d.ts} +24 -7
- package/dist/cache/index.js +32 -29
- package/dist/cache/index.js.map +1 -1
- package/dist/codegen/index.d.ts +55 -8
- package/dist/codegen/index.js +179 -5
- package/dist/codegen/index.js.map +1 -1
- package/dist/config/index.d.ts +168 -6
- package/dist/config/index.js +29 -5
- package/dist/config/index.js.map +1 -1
- package/dist/db/index.d.ts +128 -4
- package/dist/db/index.js +177 -50
- package/dist/db/index.js.map +1 -1
- package/dist/env/index.d.ts +55 -1
- package/dist/env/index.js +71 -3
- package/dist/env/index.js.map +1 -1
- package/dist/env/loader.d.ts +27 -19
- package/dist/env/loader.js +33 -25
- package/dist/env/loader.js.map +1 -1
- package/dist/event/index.d.ts +27 -1
- package/dist/event/index.js +6 -1
- package/dist/event/index.js.map +1 -1
- package/dist/event/sse/client.d.ts +77 -2
- package/dist/event/sse/client.js +87 -24
- package/dist/event/sse/client.js.map +1 -1
- package/dist/event/sse/index.d.ts +10 -4
- package/dist/event/sse/index.js +158 -12
- package/dist/event/sse/index.js.map +1 -1
- package/dist/job/index.d.ts +23 -8
- package/dist/job/index.js +96 -20
- package/dist/job/index.js.map +1 -1
- package/dist/logger/index.d.ts +5 -0
- package/dist/logger/index.js +14 -0
- package/dist/logger/index.js.map +1 -1
- package/dist/middleware/index.d.ts +23 -1
- package/dist/middleware/index.js +58 -5
- package/dist/middleware/index.js.map +1 -1
- package/dist/nextjs/index.d.ts +2 -2
- package/dist/nextjs/index.js +77 -31
- package/dist/nextjs/index.js.map +1 -1
- package/dist/nextjs/server.d.ts +44 -23
- package/dist/nextjs/server.js +83 -65
- package/dist/nextjs/server.js.map +1 -1
- package/dist/route/index.d.ts +158 -4
- package/dist/route/index.js +251 -12
- package/dist/route/index.js.map +1 -1
- package/dist/server/index.d.ts +251 -16
- package/dist/server/index.js +774 -228
- package/dist/server/index.js.map +1 -1
- package/dist/{types-D_N_U-Py.d.ts → types-7Mhoxnnt.d.ts} +21 -1
- package/dist/types-DKQ90YL7.d.ts +372 -0
- package/docs/cache.md +133 -0
- package/docs/codegen.md +74 -0
- package/docs/database.md +370 -0
- package/docs/entity.md +539 -0
- package/docs/env.md +499 -0
- package/docs/errors.md +319 -0
- package/docs/event.md +443 -0
- package/docs/file-upload.md +717 -0
- package/docs/job.md +131 -0
- package/docs/logger.md +108 -0
- package/docs/middleware.md +337 -0
- package/docs/nextjs.md +247 -0
- package/docs/repository.md +496 -0
- package/docs/route.md +497 -0
- package/docs/server.md +429 -0
- package/package.json +2 -1
- package/dist/types-B-e_f2dQ.d.ts +0 -121
package/dist/config/index.d.ts
CHANGED
|
@@ -20,9 +20,9 @@ import { parsePostgresUrl, parseRedisUrl } from '@spfn/core/env';
|
|
|
20
20
|
* ```
|
|
21
21
|
*/
|
|
22
22
|
declare const coreEnvSchema: {
|
|
23
|
-
NODE_ENV: Omit<_spfn_core_env.EnvVarSchema<"production" | "local" | "development" | "test">, "key" | "type" | "validator"> & {
|
|
23
|
+
NODE_ENV: Omit<_spfn_core_env.EnvVarSchema<"production" | "local" | "development" | "staging" | "test">, "key" | "type" | "validator"> & {
|
|
24
24
|
type: "enum";
|
|
25
|
-
validator: (val: string) => "production" | "local" | "development" | "test";
|
|
25
|
+
validator: (val: string) => "production" | "local" | "development" | "staging" | "test";
|
|
26
26
|
} & {
|
|
27
27
|
key: "NODE_ENV";
|
|
28
28
|
};
|
|
@@ -34,6 +34,7 @@ declare const coreEnvSchema: {
|
|
|
34
34
|
examples: string[];
|
|
35
35
|
} & {
|
|
36
36
|
type: "string";
|
|
37
|
+
validator: (value: string) => string;
|
|
37
38
|
} & {
|
|
38
39
|
key: "DATABASE_URL";
|
|
39
40
|
};
|
|
@@ -45,6 +46,7 @@ declare const coreEnvSchema: {
|
|
|
45
46
|
examples: string[];
|
|
46
47
|
} & {
|
|
47
48
|
type: "string";
|
|
49
|
+
validator: (value: string) => string;
|
|
48
50
|
} & {
|
|
49
51
|
key: "DATABASE_WRITE_URL";
|
|
50
52
|
};
|
|
@@ -56,6 +58,7 @@ declare const coreEnvSchema: {
|
|
|
56
58
|
examples: string[];
|
|
57
59
|
} & {
|
|
58
60
|
type: "string";
|
|
61
|
+
validator: (value: string) => string;
|
|
59
62
|
} & {
|
|
60
63
|
key: "DATABASE_READ_URL";
|
|
61
64
|
};
|
|
@@ -226,6 +229,7 @@ declare const coreEnvSchema: {
|
|
|
226
229
|
examples: string[];
|
|
227
230
|
} & {
|
|
228
231
|
type: "string";
|
|
232
|
+
validator: (value: string) => string;
|
|
229
233
|
} & {
|
|
230
234
|
key: "DRIZZLE_SCHEMA_PATH";
|
|
231
235
|
};
|
|
@@ -236,6 +240,7 @@ declare const coreEnvSchema: {
|
|
|
236
240
|
examples: string[];
|
|
237
241
|
} & {
|
|
238
242
|
type: "string";
|
|
243
|
+
validator: (value: string) => string;
|
|
239
244
|
} & {
|
|
240
245
|
key: "DRIZZLE_OUT_DIR";
|
|
241
246
|
};
|
|
@@ -253,6 +258,7 @@ declare const coreEnvSchema: {
|
|
|
253
258
|
examples: string[];
|
|
254
259
|
} & {
|
|
255
260
|
type: "string";
|
|
261
|
+
validator: (value: string) => string;
|
|
256
262
|
} & {
|
|
257
263
|
key: "CACHE_URL";
|
|
258
264
|
};
|
|
@@ -264,6 +270,7 @@ declare const coreEnvSchema: {
|
|
|
264
270
|
examples: string[];
|
|
265
271
|
} & {
|
|
266
272
|
type: "string";
|
|
273
|
+
validator: (value: string) => string;
|
|
267
274
|
} & {
|
|
268
275
|
key: "CACHE_WRITE_URL";
|
|
269
276
|
};
|
|
@@ -275,6 +282,7 @@ declare const coreEnvSchema: {
|
|
|
275
282
|
examples: string[];
|
|
276
283
|
} & {
|
|
277
284
|
type: "string";
|
|
285
|
+
validator: (value: string) => string;
|
|
278
286
|
} & {
|
|
279
287
|
key: "CACHE_READ_URL";
|
|
280
288
|
};
|
|
@@ -284,6 +292,7 @@ declare const coreEnvSchema: {
|
|
|
284
292
|
examples: string[];
|
|
285
293
|
} & {
|
|
286
294
|
type: "string";
|
|
295
|
+
validator: (value: string) => string;
|
|
287
296
|
} & {
|
|
288
297
|
key: "CACHE_SENTINEL_HOSTS";
|
|
289
298
|
};
|
|
@@ -293,6 +302,7 @@ declare const coreEnvSchema: {
|
|
|
293
302
|
examples: string[];
|
|
294
303
|
} & {
|
|
295
304
|
type: "string";
|
|
305
|
+
validator: (value: string) => string;
|
|
296
306
|
} & {
|
|
297
307
|
key: "CACHE_CLUSTER_NODES";
|
|
298
308
|
};
|
|
@@ -302,6 +312,7 @@ declare const coreEnvSchema: {
|
|
|
302
312
|
examples: string[];
|
|
303
313
|
} & {
|
|
304
314
|
type: "string";
|
|
315
|
+
validator: (value: string) => string;
|
|
305
316
|
} & {
|
|
306
317
|
key: "CACHE_MASTER_NAME";
|
|
307
318
|
};
|
|
@@ -312,6 +323,7 @@ declare const coreEnvSchema: {
|
|
|
312
323
|
examples: string[];
|
|
313
324
|
} & {
|
|
314
325
|
type: "string";
|
|
326
|
+
validator: (value: string) => string;
|
|
315
327
|
} & {
|
|
316
328
|
key: "CACHE_PASSWORD";
|
|
317
329
|
};
|
|
@@ -342,6 +354,7 @@ declare const coreEnvSchema: {
|
|
|
342
354
|
examples: string[];
|
|
343
355
|
} & {
|
|
344
356
|
type: "string";
|
|
357
|
+
validator: (value: string) => string;
|
|
345
358
|
} & {
|
|
346
359
|
key: "HOST";
|
|
347
360
|
};
|
|
@@ -385,6 +398,36 @@ declare const coreEnvSchema: {
|
|
|
385
398
|
} & {
|
|
386
399
|
key: "SHUTDOWN_TIMEOUT";
|
|
387
400
|
};
|
|
401
|
+
FETCH_CONNECT_TIMEOUT: {
|
|
402
|
+
description: string;
|
|
403
|
+
default: number;
|
|
404
|
+
examples: number[];
|
|
405
|
+
} & {
|
|
406
|
+
type: "number";
|
|
407
|
+
validator: (value: string) => number;
|
|
408
|
+
} & {
|
|
409
|
+
key: "FETCH_CONNECT_TIMEOUT";
|
|
410
|
+
};
|
|
411
|
+
FETCH_HEADERS_TIMEOUT: {
|
|
412
|
+
description: string;
|
|
413
|
+
default: number;
|
|
414
|
+
examples: number[];
|
|
415
|
+
} & {
|
|
416
|
+
type: "number";
|
|
417
|
+
validator: (value: string) => number;
|
|
418
|
+
} & {
|
|
419
|
+
key: "FETCH_HEADERS_TIMEOUT";
|
|
420
|
+
};
|
|
421
|
+
FETCH_BODY_TIMEOUT: {
|
|
422
|
+
description: string;
|
|
423
|
+
default: number;
|
|
424
|
+
examples: number[];
|
|
425
|
+
} & {
|
|
426
|
+
type: "number";
|
|
427
|
+
validator: (value: string) => number;
|
|
428
|
+
} & {
|
|
429
|
+
key: "FETCH_BODY_TIMEOUT";
|
|
430
|
+
};
|
|
388
431
|
SPFN_API_URL: {
|
|
389
432
|
description: string;
|
|
390
433
|
required: boolean;
|
|
@@ -415,6 +458,17 @@ declare const coreEnvSchema: {
|
|
|
415
458
|
} & {
|
|
416
459
|
key: "SPFN_APP_URL";
|
|
417
460
|
};
|
|
461
|
+
RPC_PROXY_TIMEOUT: {
|
|
462
|
+
description: string;
|
|
463
|
+
default: number;
|
|
464
|
+
nextjs: boolean;
|
|
465
|
+
examples: number[];
|
|
466
|
+
} & {
|
|
467
|
+
type: "number";
|
|
468
|
+
validator: (value: string) => number;
|
|
469
|
+
} & {
|
|
470
|
+
key: "RPC_PROXY_TIMEOUT";
|
|
471
|
+
};
|
|
418
472
|
};
|
|
419
473
|
|
|
420
474
|
/**
|
|
@@ -427,9 +481,9 @@ declare const coreEnvSchema: {
|
|
|
427
481
|
* ```
|
|
428
482
|
*/
|
|
429
483
|
declare const registry: _spfn_core_env.EnvRegistry<{
|
|
430
|
-
NODE_ENV: Omit<_spfn_core_env.EnvVarSchema<"production" | "local" | "development" | "test">, "key" | "type" | "validator"> & {
|
|
484
|
+
NODE_ENV: Omit<_spfn_core_env.EnvVarSchema<"production" | "local" | "development" | "staging" | "test">, "key" | "type" | "validator"> & {
|
|
431
485
|
type: "enum";
|
|
432
|
-
validator: (val: string) => "production" | "local" | "development" | "test";
|
|
486
|
+
validator: (val: string) => "production" | "local" | "development" | "staging" | "test";
|
|
433
487
|
} & {
|
|
434
488
|
key: "NODE_ENV";
|
|
435
489
|
};
|
|
@@ -441,6 +495,7 @@ declare const registry: _spfn_core_env.EnvRegistry<{
|
|
|
441
495
|
examples: string[];
|
|
442
496
|
} & {
|
|
443
497
|
type: "string";
|
|
498
|
+
validator: (value: string) => string;
|
|
444
499
|
} & {
|
|
445
500
|
key: "DATABASE_URL";
|
|
446
501
|
};
|
|
@@ -452,6 +507,7 @@ declare const registry: _spfn_core_env.EnvRegistry<{
|
|
|
452
507
|
examples: string[];
|
|
453
508
|
} & {
|
|
454
509
|
type: "string";
|
|
510
|
+
validator: (value: string) => string;
|
|
455
511
|
} & {
|
|
456
512
|
key: "DATABASE_WRITE_URL";
|
|
457
513
|
};
|
|
@@ -463,6 +519,7 @@ declare const registry: _spfn_core_env.EnvRegistry<{
|
|
|
463
519
|
examples: string[];
|
|
464
520
|
} & {
|
|
465
521
|
type: "string";
|
|
522
|
+
validator: (value: string) => string;
|
|
466
523
|
} & {
|
|
467
524
|
key: "DATABASE_READ_URL";
|
|
468
525
|
};
|
|
@@ -633,6 +690,7 @@ declare const registry: _spfn_core_env.EnvRegistry<{
|
|
|
633
690
|
examples: string[];
|
|
634
691
|
} & {
|
|
635
692
|
type: "string";
|
|
693
|
+
validator: (value: string) => string;
|
|
636
694
|
} & {
|
|
637
695
|
key: "DRIZZLE_SCHEMA_PATH";
|
|
638
696
|
};
|
|
@@ -643,6 +701,7 @@ declare const registry: _spfn_core_env.EnvRegistry<{
|
|
|
643
701
|
examples: string[];
|
|
644
702
|
} & {
|
|
645
703
|
type: "string";
|
|
704
|
+
validator: (value: string) => string;
|
|
646
705
|
} & {
|
|
647
706
|
key: "DRIZZLE_OUT_DIR";
|
|
648
707
|
};
|
|
@@ -660,6 +719,7 @@ declare const registry: _spfn_core_env.EnvRegistry<{
|
|
|
660
719
|
examples: string[];
|
|
661
720
|
} & {
|
|
662
721
|
type: "string";
|
|
722
|
+
validator: (value: string) => string;
|
|
663
723
|
} & {
|
|
664
724
|
key: "CACHE_URL";
|
|
665
725
|
};
|
|
@@ -671,6 +731,7 @@ declare const registry: _spfn_core_env.EnvRegistry<{
|
|
|
671
731
|
examples: string[];
|
|
672
732
|
} & {
|
|
673
733
|
type: "string";
|
|
734
|
+
validator: (value: string) => string;
|
|
674
735
|
} & {
|
|
675
736
|
key: "CACHE_WRITE_URL";
|
|
676
737
|
};
|
|
@@ -682,6 +743,7 @@ declare const registry: _spfn_core_env.EnvRegistry<{
|
|
|
682
743
|
examples: string[];
|
|
683
744
|
} & {
|
|
684
745
|
type: "string";
|
|
746
|
+
validator: (value: string) => string;
|
|
685
747
|
} & {
|
|
686
748
|
key: "CACHE_READ_URL";
|
|
687
749
|
};
|
|
@@ -691,6 +753,7 @@ declare const registry: _spfn_core_env.EnvRegistry<{
|
|
|
691
753
|
examples: string[];
|
|
692
754
|
} & {
|
|
693
755
|
type: "string";
|
|
756
|
+
validator: (value: string) => string;
|
|
694
757
|
} & {
|
|
695
758
|
key: "CACHE_SENTINEL_HOSTS";
|
|
696
759
|
};
|
|
@@ -700,6 +763,7 @@ declare const registry: _spfn_core_env.EnvRegistry<{
|
|
|
700
763
|
examples: string[];
|
|
701
764
|
} & {
|
|
702
765
|
type: "string";
|
|
766
|
+
validator: (value: string) => string;
|
|
703
767
|
} & {
|
|
704
768
|
key: "CACHE_CLUSTER_NODES";
|
|
705
769
|
};
|
|
@@ -709,6 +773,7 @@ declare const registry: _spfn_core_env.EnvRegistry<{
|
|
|
709
773
|
examples: string[];
|
|
710
774
|
} & {
|
|
711
775
|
type: "string";
|
|
776
|
+
validator: (value: string) => string;
|
|
712
777
|
} & {
|
|
713
778
|
key: "CACHE_MASTER_NAME";
|
|
714
779
|
};
|
|
@@ -719,6 +784,7 @@ declare const registry: _spfn_core_env.EnvRegistry<{
|
|
|
719
784
|
examples: string[];
|
|
720
785
|
} & {
|
|
721
786
|
type: "string";
|
|
787
|
+
validator: (value: string) => string;
|
|
722
788
|
} & {
|
|
723
789
|
key: "CACHE_PASSWORD";
|
|
724
790
|
};
|
|
@@ -749,6 +815,7 @@ declare const registry: _spfn_core_env.EnvRegistry<{
|
|
|
749
815
|
examples: string[];
|
|
750
816
|
} & {
|
|
751
817
|
type: "string";
|
|
818
|
+
validator: (value: string) => string;
|
|
752
819
|
} & {
|
|
753
820
|
key: "HOST";
|
|
754
821
|
};
|
|
@@ -792,6 +859,36 @@ declare const registry: _spfn_core_env.EnvRegistry<{
|
|
|
792
859
|
} & {
|
|
793
860
|
key: "SHUTDOWN_TIMEOUT";
|
|
794
861
|
};
|
|
862
|
+
FETCH_CONNECT_TIMEOUT: {
|
|
863
|
+
description: string;
|
|
864
|
+
default: number;
|
|
865
|
+
examples: number[];
|
|
866
|
+
} & {
|
|
867
|
+
type: "number";
|
|
868
|
+
validator: (value: string) => number;
|
|
869
|
+
} & {
|
|
870
|
+
key: "FETCH_CONNECT_TIMEOUT";
|
|
871
|
+
};
|
|
872
|
+
FETCH_HEADERS_TIMEOUT: {
|
|
873
|
+
description: string;
|
|
874
|
+
default: number;
|
|
875
|
+
examples: number[];
|
|
876
|
+
} & {
|
|
877
|
+
type: "number";
|
|
878
|
+
validator: (value: string) => number;
|
|
879
|
+
} & {
|
|
880
|
+
key: "FETCH_HEADERS_TIMEOUT";
|
|
881
|
+
};
|
|
882
|
+
FETCH_BODY_TIMEOUT: {
|
|
883
|
+
description: string;
|
|
884
|
+
default: number;
|
|
885
|
+
examples: number[];
|
|
886
|
+
} & {
|
|
887
|
+
type: "number";
|
|
888
|
+
validator: (value: string) => number;
|
|
889
|
+
} & {
|
|
890
|
+
key: "FETCH_BODY_TIMEOUT";
|
|
891
|
+
};
|
|
795
892
|
SPFN_API_URL: {
|
|
796
893
|
description: string;
|
|
797
894
|
required: boolean;
|
|
@@ -822,14 +919,25 @@ declare const registry: _spfn_core_env.EnvRegistry<{
|
|
|
822
919
|
} & {
|
|
823
920
|
key: "SPFN_APP_URL";
|
|
824
921
|
};
|
|
922
|
+
RPC_PROXY_TIMEOUT: {
|
|
923
|
+
description: string;
|
|
924
|
+
default: number;
|
|
925
|
+
nextjs: boolean;
|
|
926
|
+
examples: number[];
|
|
927
|
+
} & {
|
|
928
|
+
type: "number";
|
|
929
|
+
validator: (value: string) => number;
|
|
930
|
+
} & {
|
|
931
|
+
key: "RPC_PROXY_TIMEOUT";
|
|
932
|
+
};
|
|
825
933
|
}>;
|
|
826
934
|
/**
|
|
827
935
|
* Validated environment configuration
|
|
828
936
|
*/
|
|
829
937
|
declare const env: _spfn_core_env.InferEnvType<{
|
|
830
|
-
NODE_ENV: Omit<_spfn_core_env.EnvVarSchema<"production" | "local" | "development" | "test">, "key" | "type" | "validator"> & {
|
|
938
|
+
NODE_ENV: Omit<_spfn_core_env.EnvVarSchema<"production" | "local" | "development" | "staging" | "test">, "key" | "type" | "validator"> & {
|
|
831
939
|
type: "enum";
|
|
832
|
-
validator: (val: string) => "production" | "local" | "development" | "test";
|
|
940
|
+
validator: (val: string) => "production" | "local" | "development" | "staging" | "test";
|
|
833
941
|
} & {
|
|
834
942
|
key: "NODE_ENV";
|
|
835
943
|
};
|
|
@@ -841,6 +949,7 @@ declare const env: _spfn_core_env.InferEnvType<{
|
|
|
841
949
|
examples: string[];
|
|
842
950
|
} & {
|
|
843
951
|
type: "string";
|
|
952
|
+
validator: (value: string) => string;
|
|
844
953
|
} & {
|
|
845
954
|
key: "DATABASE_URL";
|
|
846
955
|
};
|
|
@@ -852,6 +961,7 @@ declare const env: _spfn_core_env.InferEnvType<{
|
|
|
852
961
|
examples: string[];
|
|
853
962
|
} & {
|
|
854
963
|
type: "string";
|
|
964
|
+
validator: (value: string) => string;
|
|
855
965
|
} & {
|
|
856
966
|
key: "DATABASE_WRITE_URL";
|
|
857
967
|
};
|
|
@@ -863,6 +973,7 @@ declare const env: _spfn_core_env.InferEnvType<{
|
|
|
863
973
|
examples: string[];
|
|
864
974
|
} & {
|
|
865
975
|
type: "string";
|
|
976
|
+
validator: (value: string) => string;
|
|
866
977
|
} & {
|
|
867
978
|
key: "DATABASE_READ_URL";
|
|
868
979
|
};
|
|
@@ -1033,6 +1144,7 @@ declare const env: _spfn_core_env.InferEnvType<{
|
|
|
1033
1144
|
examples: string[];
|
|
1034
1145
|
} & {
|
|
1035
1146
|
type: "string";
|
|
1147
|
+
validator: (value: string) => string;
|
|
1036
1148
|
} & {
|
|
1037
1149
|
key: "DRIZZLE_SCHEMA_PATH";
|
|
1038
1150
|
};
|
|
@@ -1043,6 +1155,7 @@ declare const env: _spfn_core_env.InferEnvType<{
|
|
|
1043
1155
|
examples: string[];
|
|
1044
1156
|
} & {
|
|
1045
1157
|
type: "string";
|
|
1158
|
+
validator: (value: string) => string;
|
|
1046
1159
|
} & {
|
|
1047
1160
|
key: "DRIZZLE_OUT_DIR";
|
|
1048
1161
|
};
|
|
@@ -1060,6 +1173,7 @@ declare const env: _spfn_core_env.InferEnvType<{
|
|
|
1060
1173
|
examples: string[];
|
|
1061
1174
|
} & {
|
|
1062
1175
|
type: "string";
|
|
1176
|
+
validator: (value: string) => string;
|
|
1063
1177
|
} & {
|
|
1064
1178
|
key: "CACHE_URL";
|
|
1065
1179
|
};
|
|
@@ -1071,6 +1185,7 @@ declare const env: _spfn_core_env.InferEnvType<{
|
|
|
1071
1185
|
examples: string[];
|
|
1072
1186
|
} & {
|
|
1073
1187
|
type: "string";
|
|
1188
|
+
validator: (value: string) => string;
|
|
1074
1189
|
} & {
|
|
1075
1190
|
key: "CACHE_WRITE_URL";
|
|
1076
1191
|
};
|
|
@@ -1082,6 +1197,7 @@ declare const env: _spfn_core_env.InferEnvType<{
|
|
|
1082
1197
|
examples: string[];
|
|
1083
1198
|
} & {
|
|
1084
1199
|
type: "string";
|
|
1200
|
+
validator: (value: string) => string;
|
|
1085
1201
|
} & {
|
|
1086
1202
|
key: "CACHE_READ_URL";
|
|
1087
1203
|
};
|
|
@@ -1091,6 +1207,7 @@ declare const env: _spfn_core_env.InferEnvType<{
|
|
|
1091
1207
|
examples: string[];
|
|
1092
1208
|
} & {
|
|
1093
1209
|
type: "string";
|
|
1210
|
+
validator: (value: string) => string;
|
|
1094
1211
|
} & {
|
|
1095
1212
|
key: "CACHE_SENTINEL_HOSTS";
|
|
1096
1213
|
};
|
|
@@ -1100,6 +1217,7 @@ declare const env: _spfn_core_env.InferEnvType<{
|
|
|
1100
1217
|
examples: string[];
|
|
1101
1218
|
} & {
|
|
1102
1219
|
type: "string";
|
|
1220
|
+
validator: (value: string) => string;
|
|
1103
1221
|
} & {
|
|
1104
1222
|
key: "CACHE_CLUSTER_NODES";
|
|
1105
1223
|
};
|
|
@@ -1109,6 +1227,7 @@ declare const env: _spfn_core_env.InferEnvType<{
|
|
|
1109
1227
|
examples: string[];
|
|
1110
1228
|
} & {
|
|
1111
1229
|
type: "string";
|
|
1230
|
+
validator: (value: string) => string;
|
|
1112
1231
|
} & {
|
|
1113
1232
|
key: "CACHE_MASTER_NAME";
|
|
1114
1233
|
};
|
|
@@ -1119,6 +1238,7 @@ declare const env: _spfn_core_env.InferEnvType<{
|
|
|
1119
1238
|
examples: string[];
|
|
1120
1239
|
} & {
|
|
1121
1240
|
type: "string";
|
|
1241
|
+
validator: (value: string) => string;
|
|
1122
1242
|
} & {
|
|
1123
1243
|
key: "CACHE_PASSWORD";
|
|
1124
1244
|
};
|
|
@@ -1149,6 +1269,7 @@ declare const env: _spfn_core_env.InferEnvType<{
|
|
|
1149
1269
|
examples: string[];
|
|
1150
1270
|
} & {
|
|
1151
1271
|
type: "string";
|
|
1272
|
+
validator: (value: string) => string;
|
|
1152
1273
|
} & {
|
|
1153
1274
|
key: "HOST";
|
|
1154
1275
|
};
|
|
@@ -1192,6 +1313,36 @@ declare const env: _spfn_core_env.InferEnvType<{
|
|
|
1192
1313
|
} & {
|
|
1193
1314
|
key: "SHUTDOWN_TIMEOUT";
|
|
1194
1315
|
};
|
|
1316
|
+
FETCH_CONNECT_TIMEOUT: {
|
|
1317
|
+
description: string;
|
|
1318
|
+
default: number;
|
|
1319
|
+
examples: number[];
|
|
1320
|
+
} & {
|
|
1321
|
+
type: "number";
|
|
1322
|
+
validator: (value: string) => number;
|
|
1323
|
+
} & {
|
|
1324
|
+
key: "FETCH_CONNECT_TIMEOUT";
|
|
1325
|
+
};
|
|
1326
|
+
FETCH_HEADERS_TIMEOUT: {
|
|
1327
|
+
description: string;
|
|
1328
|
+
default: number;
|
|
1329
|
+
examples: number[];
|
|
1330
|
+
} & {
|
|
1331
|
+
type: "number";
|
|
1332
|
+
validator: (value: string) => number;
|
|
1333
|
+
} & {
|
|
1334
|
+
key: "FETCH_HEADERS_TIMEOUT";
|
|
1335
|
+
};
|
|
1336
|
+
FETCH_BODY_TIMEOUT: {
|
|
1337
|
+
description: string;
|
|
1338
|
+
default: number;
|
|
1339
|
+
examples: number[];
|
|
1340
|
+
} & {
|
|
1341
|
+
type: "number";
|
|
1342
|
+
validator: (value: string) => number;
|
|
1343
|
+
} & {
|
|
1344
|
+
key: "FETCH_BODY_TIMEOUT";
|
|
1345
|
+
};
|
|
1195
1346
|
SPFN_API_URL: {
|
|
1196
1347
|
description: string;
|
|
1197
1348
|
required: boolean;
|
|
@@ -1222,6 +1373,17 @@ declare const env: _spfn_core_env.InferEnvType<{
|
|
|
1222
1373
|
} & {
|
|
1223
1374
|
key: "SPFN_APP_URL";
|
|
1224
1375
|
};
|
|
1376
|
+
RPC_PROXY_TIMEOUT: {
|
|
1377
|
+
description: string;
|
|
1378
|
+
default: number;
|
|
1379
|
+
nextjs: boolean;
|
|
1380
|
+
examples: number[];
|
|
1381
|
+
} & {
|
|
1382
|
+
type: "number";
|
|
1383
|
+
validator: (value: string) => number;
|
|
1384
|
+
} & {
|
|
1385
|
+
key: "RPC_PROXY_TIMEOUT";
|
|
1386
|
+
};
|
|
1225
1387
|
}>;
|
|
1226
1388
|
|
|
1227
1389
|
export { env, coreEnvSchema as envSchema, registry };
|
package/dist/config/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { defineEnvSchema,
|
|
1
|
+
import { defineEnvSchema, envNumber, envUrl, envString, envBoolean, envEnum, parseRedisUrl, parsePostgresUrl, createEnvRegistry } from '@spfn/core/env';
|
|
2
2
|
|
|
3
3
|
// src/config/index.ts
|
|
4
4
|
var coreEnvSchema = defineEnvSchema({
|
|
5
5
|
// ========================================================================
|
|
6
6
|
// Core Environment
|
|
7
7
|
// ========================================================================
|
|
8
|
-
NODE_ENV: envEnum(["local", "development", "production", "test"], {
|
|
8
|
+
NODE_ENV: envEnum(["local", "development", "staging", "production", "test"], {
|
|
9
9
|
description: "Node.js runtime environment",
|
|
10
10
|
default: "local",
|
|
11
11
|
nextjs: true
|
|
@@ -237,9 +237,27 @@ var coreEnvSchema = defineEnvSchema({
|
|
|
237
237
|
examples: [3e4, 6e4, 12e4]
|
|
238
238
|
}),
|
|
239
239
|
SHUTDOWN_TIMEOUT: envNumber({
|
|
240
|
-
description: "Graceful shutdown timeout in milliseconds",
|
|
241
|
-
default:
|
|
242
|
-
examples: [
|
|
240
|
+
description: "Graceful shutdown timeout in milliseconds (must be less than k8s terminationGracePeriodSeconds minus preStop sleep, with safety margin)",
|
|
241
|
+
default: 28e4,
|
|
242
|
+
examples: [3e4, 12e4, 28e4]
|
|
243
|
+
}),
|
|
244
|
+
// ========================================================================
|
|
245
|
+
// Fetch (Node.js undici) - outbound HTTP request timeout
|
|
246
|
+
// ========================================================================
|
|
247
|
+
FETCH_CONNECT_TIMEOUT: envNumber({
|
|
248
|
+
description: "Fetch TCP connection timeout in milliseconds (time to establish socket connection to upstream server)",
|
|
249
|
+
default: 1e4,
|
|
250
|
+
examples: [5e3, 1e4, 3e4]
|
|
251
|
+
}),
|
|
252
|
+
FETCH_HEADERS_TIMEOUT: envNumber({
|
|
253
|
+
description: "Fetch headers timeout in milliseconds (time to receive response headers after request sent)",
|
|
254
|
+
default: 3e5,
|
|
255
|
+
examples: [12e4, 3e5, 6e5]
|
|
256
|
+
}),
|
|
257
|
+
FETCH_BODY_TIMEOUT: envNumber({
|
|
258
|
+
description: "Fetch body timeout in milliseconds (time between body data chunks from upstream server)",
|
|
259
|
+
default: 3e5,
|
|
260
|
+
examples: [12e4, 3e5, 6e5]
|
|
243
261
|
}),
|
|
244
262
|
// ========================================================================
|
|
245
263
|
// Next.js Integration
|
|
@@ -261,6 +279,12 @@ var coreEnvSchema = defineEnvSchema({
|
|
|
261
279
|
required: false,
|
|
262
280
|
nextjs: true,
|
|
263
281
|
examples: ["http://localhost:3790", "https://your-app.com"]
|
|
282
|
+
}),
|
|
283
|
+
RPC_PROXY_TIMEOUT: envNumber({
|
|
284
|
+
description: "RPC proxy request timeout in milliseconds (AbortController timeout for proxied requests to backend, should be shorter than FETCH_HEADERS_TIMEOUT)",
|
|
285
|
+
default: 12e4,
|
|
286
|
+
nextjs: true,
|
|
287
|
+
examples: [6e4, 12e4, 28e4]
|
|
264
288
|
})
|
|
265
289
|
});
|
|
266
290
|
|
package/dist/config/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/config/schema.ts","../../src/config/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Core Package Environment Variable Schema\n *\n * Centralized schema definition for all environment variables used in @spfn/core.\n * This provides type safety, validation, and documentation for environment configuration.\n *\n * @module config/schema\n */\n\nimport {\n defineEnvSchema,\n envEnum,\n envNumber,\n envBoolean,\n envUrl,\n envString,\n parsePostgresUrl,\n parseRedisUrl,\n} from '@spfn/core/env';\n\n/**\n * Core package environment variable schema\n *\n * Defines all environment variables with:\n * - Type information\n * - Default values\n * - Validation rules\n * - Documentation\n *\n * @example\n * ```typescript\n * import { coreEnvSchema } from '@spfn/core/config';\n *\n * // Access schema information\n * console.log(coreEnvSchema.DB_POOL_MAX.description);\n * console.log(coreEnvSchema.DB_POOL_MAX.default);\n * ```\n */\nexport const coreEnvSchema = defineEnvSchema({\n // ========================================================================\n // Core Environment\n // ========================================================================\n\n NODE_ENV: envEnum(['local', 'development', 'production', 'test'] as const, {\n description: 'Node.js runtime environment',\n default: 'local',\n nextjs: true,\n }),\n\n // ========================================================================\n // Database - Connection\n // ========================================================================\n\n DATABASE_URL: envString({\n description: 'Primary database connection URL',\n required: false,\n sensitive: true,\n validator: parsePostgresUrl,\n examples: ['postgresql://user:password@localhost:5432/dbname'],\n }),\n\n DATABASE_WRITE_URL: envString({\n description: 'Write database URL (master-replica pattern)',\n required: false,\n sensitive: true,\n validator: parsePostgresUrl,\n examples: ['postgresql://user:password@master:5432/dbname'],\n }),\n\n DATABASE_READ_URL: envString({\n description: 'Read database URL (master-replica pattern)',\n required: false,\n sensitive: true,\n validator: parsePostgresUrl,\n examples: ['postgresql://user:password@replica:5432/dbname'],\n }),\n\n\n // ========================================================================\n // Database - Connection Pool\n // ========================================================================\n\n DB_POOL_MAX: envNumber({\n description: 'Maximum number of database connections in pool',\n default: 10,\n examples: [10, 20, 50],\n }),\n\n DB_POOL_IDLE_TIMEOUT: envNumber({\n description: 'Database connection idle timeout in seconds',\n default: 30,\n examples: [20, 30, 60],\n }),\n\n // ========================================================================\n // Database - Retry Configuration\n // ========================================================================\n\n DB_RETRY_MAX: envNumber({\n description: 'Maximum number of database connection retry attempts',\n default: 3,\n examples: [3, 5, 10],\n }),\n\n DB_RETRY_INITIAL_DELAY: envNumber({\n description: 'Initial delay between database retry attempts (milliseconds)',\n default: 100,\n examples: [50, 100, 200],\n }),\n\n DB_RETRY_MAX_DELAY: envNumber({\n description: 'Maximum delay cap for database retry attempts (milliseconds)',\n default: 10000,\n examples: [5000, 10000, 30000],\n }),\n\n DB_RETRY_FACTOR: envNumber({\n description: 'Exponential backoff factor for database retry delays',\n default: 2,\n examples: [2, 1.5, 3],\n }),\n\n // ========================================================================\n // Database - Health Check\n // ========================================================================\n\n DB_HEALTH_CHECK_ENABLED: envBoolean({\n description: 'Enable periodic database health checks',\n default: true,\n examples: [true, false],\n }),\n\n DB_HEALTH_CHECK_INTERVAL: envNumber({\n description: 'Database health check interval (milliseconds)',\n default: 60000,\n examples: [30000, 60000, 120000],\n }),\n\n DB_HEALTH_CHECK_RECONNECT: envBoolean({\n description: 'Reconnect to database on health check failure',\n default: true,\n examples: [true, false],\n }),\n\n DB_HEALTH_CHECK_MAX_RETRIES: envNumber({\n description: 'Maximum health check retry attempts before marking as failed',\n default: 3,\n examples: [3, 5, 10],\n }),\n\n DB_HEALTH_CHECK_RETRY_INTERVAL: envNumber({\n description: 'Interval between health check retry attempts (milliseconds)',\n default: 5000,\n examples: [5000, 10000, 15000],\n }),\n\n // ========================================================================\n // Database - Monitoring\n // ========================================================================\n\n DB_MONITORING_ENABLED: envBoolean({\n description: 'Enable database query performance monitoring',\n default: false,\n examples: [true, false],\n }),\n\n DB_MONITORING_SLOW_THRESHOLD: envNumber({\n description: 'Slow query threshold for monitoring (milliseconds)',\n default: 1000,\n examples: [500, 1000, 2000],\n }),\n\n DB_MONITORING_LOG_QUERIES: envBoolean({\n description: 'Log all database queries (not just slow queries)',\n default: false,\n examples: [true, false],\n }),\n\n // ========================================================================\n // Database - Transaction\n // ========================================================================\n\n TRANSACTION_TIMEOUT: envNumber({\n description: 'Transaction timeout in milliseconds',\n default: 30000,\n examples: [10000, 30000, 60000],\n }),\n\n // ========================================================================\n // Database - Development\n // ========================================================================\n\n DB_DEBUG_TRACE: envBoolean({\n description: 'Enable detailed debug tracing for database operations',\n default: false,\n examples: [true, false],\n }),\n\n // ========================================================================\n // Drizzle ORM\n // ========================================================================\n\n DRIZZLE_SCHEMA_PATH: envString({\n description: 'Path to Drizzle schema configuration',\n required: false,\n default: './src/server/entities/config.ts',\n examples: ['./src/db/schema.ts', './src/server/entities/config.ts'],\n }),\n\n DRIZZLE_OUT_DIR: envString({\n description: 'Output directory for Drizzle migrations',\n required: false,\n default: './drizzle',\n examples: ['./drizzle', './migrations'],\n }),\n\n // ========================================================================\n // Logger - Core\n // ========================================================================\n\n SPFN_LOG_LEVEL: envEnum(['debug', 'info', 'warn', 'error', 'fatal'] as const, {\n description: 'Minimum log level to output',\n default: 'info'\n }),\n\n // ========================================================================\n // Cache (Redis/Valkey)\n // ========================================================================\n\n CACHE_URL: envString({\n description: 'Single Redis/Valkey instance URL',\n required: false,\n sensitive: true,\n validator: parseRedisUrl,\n examples: ['redis://localhost:6379', 'rediss://secure.cache.com:6380'],\n }),\n\n CACHE_WRITE_URL: envString({\n description: 'Master Redis/Valkey URL for writes (master-replica pattern)',\n required: false,\n sensitive: true,\n validator: parseRedisUrl,\n examples: ['redis://master:6379'],\n }),\n\n CACHE_READ_URL: envString({\n description: 'Replica Redis/Valkey URL for reads (master-replica pattern)',\n required: false,\n sensitive: true,\n validator: parseRedisUrl,\n examples: ['redis://replica:6379'],\n }),\n\n CACHE_SENTINEL_HOSTS: envString({\n description: 'Comma-separated Redis Sentinel hosts',\n required: false,\n examples: ['sentinel1:26379,sentinel2:26379'],\n }),\n\n CACHE_CLUSTER_NODES: envString({\n description: 'Comma-separated Redis Cluster nodes',\n required: false,\n examples: ['node1:6379,node2:6379,node3:6379'],\n }),\n\n CACHE_MASTER_NAME: envString({\n description: 'Redis Sentinel master name',\n required: false,\n examples: ['mymaster'],\n }),\n\n CACHE_PASSWORD: envString({\n description: 'Redis/Valkey authentication password',\n required: false,\n sensitive: true,\n examples: ['your-redis-password'],\n }),\n\n CACHE_TLS_REJECT_UNAUTHORIZED: envBoolean({\n description: 'Verify TLS certificates for secure Redis connections',\n default: true,\n examples: [true, false],\n }),\n\n // ========================================================================\n // Server - Core\n // ========================================================================\n\n PORT: envNumber({\n description: 'Server port number',\n default: 4000,\n examples: [3000, 4000, 8080],\n }),\n\n HOST: envString({\n description: 'Server hostname',\n default: 'localhost',\n required: false,\n examples: ['localhost', '0.0.0.0', '127.0.0.1'],\n }),\n\n // ========================================================================\n // Server - Timeout\n // ========================================================================\n\n SERVER_TIMEOUT: envNumber({\n description: 'Request timeout in milliseconds',\n default: 120000,\n examples: [60000, 120000, 300000],\n }),\n\n SERVER_KEEPALIVE_TIMEOUT: envNumber({\n description: 'Keep-alive timeout in milliseconds',\n default: 65000,\n examples: [30000, 65000, 120000],\n }),\n\n SERVER_HEADERS_TIMEOUT: envNumber({\n description: 'Headers timeout in milliseconds',\n default: 60000,\n examples: [30000, 60000, 120000],\n }),\n\n SHUTDOWN_TIMEOUT: envNumber({\n description: 'Graceful shutdown timeout in milliseconds',\n default: 30000,\n examples: [10000, 30000, 60000],\n }),\n\n // ========================================================================\n // Next.js Integration\n // ========================================================================\n\n SPFN_API_URL: envUrl({\n description: 'SPFN API URL (used by Next.js to call backend)',\n required: true,\n nextjs: true,\n examples: ['http://localhost:8790', 'https://api.your-app.com'],\n }),\n\n NEXT_PUBLIC_SPFN_API_URL: envUrl({\n description: 'SPFN API URL (used by Next.js to call backend)',\n required: true,\n nextjs: true,\n examples: ['http://localhost:8790', 'https://api.your-app.com'],\n }),\n\n SPFN_APP_URL: envUrl({\n description: 'Next.js application URL (used by SPFN server)',\n required: false,\n nextjs: true,\n examples: ['http://localhost:3790', 'https://your-app.com'],\n }),\n});","/**\n * Core Package Configuration\n *\n * @example\n * ```typescript\n * import { registry } from '@spfn/core/config';\n *\n * const env = registry.validate();\n * console.log(env.DB_POOL_MAX);\n * ```\n *\n * @module config\n */\n\nimport { createEnvRegistry } from '@spfn/core/env';\nimport { coreEnvSchema } from './schema';\n\n/**\n * Core environment schema\n */\nexport { coreEnvSchema as envSchema } from './schema';\n\n/**\n * Environment registry\n *\n * @example\n * ```typescript\n * // Reset for testing\n * registry.reset();\n * ```\n */\nexport const registry = createEnvRegistry(coreEnvSchema);\n\n/**\n * Validated environment configuration\n */\nexport const env = registry.validate();"]}
|
|
1
|
+
{"version":3,"sources":["../../src/config/schema.ts","../../src/config/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Core Package Environment Variable Schema\n *\n * Centralized schema definition for all environment variables used in @spfn/core.\n * This provides type safety, validation, and documentation for environment configuration.\n *\n * @module config/schema\n */\n\nimport {\n defineEnvSchema,\n envEnum,\n envNumber,\n envBoolean,\n envUrl,\n envString,\n parsePostgresUrl,\n parseRedisUrl,\n} from '@spfn/core/env';\n\n/**\n * Core package environment variable schema\n *\n * Defines all environment variables with:\n * - Type information\n * - Default values\n * - Validation rules\n * - Documentation\n *\n * @example\n * ```typescript\n * import { coreEnvSchema } from '@spfn/core/config';\n *\n * // Access schema information\n * console.log(coreEnvSchema.DB_POOL_MAX.description);\n * console.log(coreEnvSchema.DB_POOL_MAX.default);\n * ```\n */\nexport const coreEnvSchema = defineEnvSchema({\n // ========================================================================\n // Core Environment\n // ========================================================================\n\n NODE_ENV: envEnum(['local', 'development', 'staging', 'production', 'test'] as const, {\n description: 'Node.js runtime environment',\n default: 'local',\n nextjs: true,\n }),\n\n // ========================================================================\n // Database - Connection\n // ========================================================================\n\n DATABASE_URL: envString({\n description: 'Primary database connection URL',\n required: false,\n sensitive: true,\n validator: parsePostgresUrl,\n examples: ['postgresql://user:password@localhost:5432/dbname'],\n }),\n\n DATABASE_WRITE_URL: envString({\n description: 'Write database URL (master-replica pattern)',\n required: false,\n sensitive: true,\n validator: parsePostgresUrl,\n examples: ['postgresql://user:password@master:5432/dbname'],\n }),\n\n DATABASE_READ_URL: envString({\n description: 'Read database URL (master-replica pattern)',\n required: false,\n sensitive: true,\n validator: parsePostgresUrl,\n examples: ['postgresql://user:password@replica:5432/dbname'],\n }),\n\n\n // ========================================================================\n // Database - Connection Pool\n // ========================================================================\n\n DB_POOL_MAX: envNumber({\n description: 'Maximum number of database connections in pool',\n default: 10,\n examples: [10, 20, 50],\n }),\n\n DB_POOL_IDLE_TIMEOUT: envNumber({\n description: 'Database connection idle timeout in seconds',\n default: 30,\n examples: [20, 30, 60],\n }),\n\n // ========================================================================\n // Database - Retry Configuration\n // ========================================================================\n\n DB_RETRY_MAX: envNumber({\n description: 'Maximum number of database connection retry attempts',\n default: 3,\n examples: [3, 5, 10],\n }),\n\n DB_RETRY_INITIAL_DELAY: envNumber({\n description: 'Initial delay between database retry attempts (milliseconds)',\n default: 100,\n examples: [50, 100, 200],\n }),\n\n DB_RETRY_MAX_DELAY: envNumber({\n description: 'Maximum delay cap for database retry attempts (milliseconds)',\n default: 10000,\n examples: [5000, 10000, 30000],\n }),\n\n DB_RETRY_FACTOR: envNumber({\n description: 'Exponential backoff factor for database retry delays',\n default: 2,\n examples: [2, 1.5, 3],\n }),\n\n // ========================================================================\n // Database - Health Check\n // ========================================================================\n\n DB_HEALTH_CHECK_ENABLED: envBoolean({\n description: 'Enable periodic database health checks',\n default: true,\n examples: [true, false],\n }),\n\n DB_HEALTH_CHECK_INTERVAL: envNumber({\n description: 'Database health check interval (milliseconds)',\n default: 60000,\n examples: [30000, 60000, 120000],\n }),\n\n DB_HEALTH_CHECK_RECONNECT: envBoolean({\n description: 'Reconnect to database on health check failure',\n default: true,\n examples: [true, false],\n }),\n\n DB_HEALTH_CHECK_MAX_RETRIES: envNumber({\n description: 'Maximum health check retry attempts before marking as failed',\n default: 3,\n examples: [3, 5, 10],\n }),\n\n DB_HEALTH_CHECK_RETRY_INTERVAL: envNumber({\n description: 'Interval between health check retry attempts (milliseconds)',\n default: 5000,\n examples: [5000, 10000, 15000],\n }),\n\n // ========================================================================\n // Database - Monitoring\n // ========================================================================\n\n DB_MONITORING_ENABLED: envBoolean({\n description: 'Enable database query performance monitoring',\n default: false,\n examples: [true, false],\n }),\n\n DB_MONITORING_SLOW_THRESHOLD: envNumber({\n description: 'Slow query threshold for monitoring (milliseconds)',\n default: 1000,\n examples: [500, 1000, 2000],\n }),\n\n DB_MONITORING_LOG_QUERIES: envBoolean({\n description: 'Log all database queries (not just slow queries)',\n default: false,\n examples: [true, false],\n }),\n\n // ========================================================================\n // Database - Transaction\n // ========================================================================\n\n TRANSACTION_TIMEOUT: envNumber({\n description: 'Transaction timeout in milliseconds',\n default: 30000,\n examples: [10000, 30000, 60000],\n }),\n\n // ========================================================================\n // Database - Development\n // ========================================================================\n\n DB_DEBUG_TRACE: envBoolean({\n description: 'Enable detailed debug tracing for database operations',\n default: false,\n examples: [true, false],\n }),\n\n // ========================================================================\n // Drizzle ORM\n // ========================================================================\n\n DRIZZLE_SCHEMA_PATH: envString({\n description: 'Path to Drizzle schema configuration',\n required: false,\n default: './src/server/entities/config.ts',\n examples: ['./src/db/schema.ts', './src/server/entities/config.ts'],\n }),\n\n DRIZZLE_OUT_DIR: envString({\n description: 'Output directory for Drizzle migrations',\n required: false,\n default: './drizzle',\n examples: ['./drizzle', './migrations'],\n }),\n\n // ========================================================================\n // Logger - Core\n // ========================================================================\n\n SPFN_LOG_LEVEL: envEnum(['debug', 'info', 'warn', 'error', 'fatal'] as const, {\n description: 'Minimum log level to output',\n default: 'info'\n }),\n\n // ========================================================================\n // Cache (Redis/Valkey)\n // ========================================================================\n\n CACHE_URL: envString({\n description: 'Single Redis/Valkey instance URL',\n required: false,\n sensitive: true,\n validator: parseRedisUrl,\n examples: ['redis://localhost:6379', 'rediss://secure.cache.com:6380'],\n }),\n\n CACHE_WRITE_URL: envString({\n description: 'Master Redis/Valkey URL for writes (master-replica pattern)',\n required: false,\n sensitive: true,\n validator: parseRedisUrl,\n examples: ['redis://master:6379'],\n }),\n\n CACHE_READ_URL: envString({\n description: 'Replica Redis/Valkey URL for reads (master-replica pattern)',\n required: false,\n sensitive: true,\n validator: parseRedisUrl,\n examples: ['redis://replica:6379'],\n }),\n\n CACHE_SENTINEL_HOSTS: envString({\n description: 'Comma-separated Redis Sentinel hosts',\n required: false,\n examples: ['sentinel1:26379,sentinel2:26379'],\n }),\n\n CACHE_CLUSTER_NODES: envString({\n description: 'Comma-separated Redis Cluster nodes',\n required: false,\n examples: ['node1:6379,node2:6379,node3:6379'],\n }),\n\n CACHE_MASTER_NAME: envString({\n description: 'Redis Sentinel master name',\n required: false,\n examples: ['mymaster'],\n }),\n\n CACHE_PASSWORD: envString({\n description: 'Redis/Valkey authentication password',\n required: false,\n sensitive: true,\n examples: ['your-redis-password'],\n }),\n\n CACHE_TLS_REJECT_UNAUTHORIZED: envBoolean({\n description: 'Verify TLS certificates for secure Redis connections',\n default: true,\n examples: [true, false],\n }),\n\n // ========================================================================\n // Server - Core\n // ========================================================================\n\n PORT: envNumber({\n description: 'Server port number',\n default: 4000,\n examples: [3000, 4000, 8080],\n }),\n\n HOST: envString({\n description: 'Server hostname',\n default: 'localhost',\n required: false,\n examples: ['localhost', '0.0.0.0', '127.0.0.1'],\n }),\n\n // ========================================================================\n // Server - Timeout\n // ========================================================================\n\n SERVER_TIMEOUT: envNumber({\n description: 'Request timeout in milliseconds',\n default: 120000,\n examples: [60000, 120000, 300000],\n }),\n\n SERVER_KEEPALIVE_TIMEOUT: envNumber({\n description: 'Keep-alive timeout in milliseconds',\n default: 65000,\n examples: [30000, 65000, 120000],\n }),\n\n SERVER_HEADERS_TIMEOUT: envNumber({\n description: 'Headers timeout in milliseconds',\n default: 60000,\n examples: [30000, 60000, 120000],\n }),\n\n SHUTDOWN_TIMEOUT: envNumber({\n description: 'Graceful shutdown timeout in milliseconds (must be less than k8s terminationGracePeriodSeconds minus preStop sleep, with safety margin)',\n default: 280000,\n examples: [30000, 120000, 280000],\n }),\n\n // ========================================================================\n // Fetch (Node.js undici) - outbound HTTP request timeout\n // ========================================================================\n\n FETCH_CONNECT_TIMEOUT: envNumber({\n description: 'Fetch TCP connection timeout in milliseconds (time to establish socket connection to upstream server)',\n default: 10000,\n examples: [5000, 10000, 30000],\n }),\n\n FETCH_HEADERS_TIMEOUT: envNumber({\n description: 'Fetch headers timeout in milliseconds (time to receive response headers after request sent)',\n default: 300000,\n examples: [120000, 300000, 600000],\n }),\n\n FETCH_BODY_TIMEOUT: envNumber({\n description: 'Fetch body timeout in milliseconds (time between body data chunks from upstream server)',\n default: 300000,\n examples: [120000, 300000, 600000],\n }),\n\n // ========================================================================\n // Next.js Integration\n // ========================================================================\n\n SPFN_API_URL: envUrl({\n description: 'SPFN API URL (used by Next.js to call backend)',\n required: true,\n nextjs: true,\n examples: ['http://localhost:8790', 'https://api.your-app.com'],\n }),\n\n NEXT_PUBLIC_SPFN_API_URL: envUrl({\n description: 'SPFN API URL (used by Next.js to call backend)',\n required: true,\n nextjs: true,\n examples: ['http://localhost:8790', 'https://api.your-app.com'],\n }),\n\n SPFN_APP_URL: envUrl({\n description: 'Next.js application URL (used by SPFN server)',\n required: false,\n nextjs: true,\n examples: ['http://localhost:3790', 'https://your-app.com'],\n }),\n\n RPC_PROXY_TIMEOUT: envNumber({\n description: 'RPC proxy request timeout in milliseconds (AbortController timeout for proxied requests to backend, should be shorter than FETCH_HEADERS_TIMEOUT)',\n default: 120000,\n nextjs: true,\n examples: [60000, 120000, 280000],\n }),\n});","/**\n * Core Package Configuration\n *\n * @example\n * ```typescript\n * import { registry } from '@spfn/core/config';\n *\n * const env = registry.validate();\n * console.log(env.DB_POOL_MAX);\n * ```\n *\n * @module config\n */\n\nimport { createEnvRegistry } from '@spfn/core/env';\nimport { coreEnvSchema } from './schema';\n\n/**\n * Core environment schema\n */\nexport { coreEnvSchema as envSchema } from './schema';\n\n/**\n * Environment registry\n *\n * @example\n * ```typescript\n * // Reset for testing\n * registry.reset();\n * ```\n */\nexport const registry = createEnvRegistry(coreEnvSchema);\n\n/**\n * Validated environment configuration\n */\nexport const env = registry.validate();"]}
|