@smooai/config 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +430 -0
- package/dist/chunk-3SU3SMKN.mjs +73 -0
- package/dist/chunk-3SU3SMKN.mjs.map +1 -0
- package/dist/chunk-CASNDTCH.mjs +12 -0
- package/dist/chunk-CASNDTCH.mjs.map +1 -0
- package/dist/chunk-GLLYQ6FK.mjs +173 -0
- package/dist/chunk-GLLYQ6FK.mjs.map +1 -0
- package/dist/chunk-HPSOF46N.mjs +71 -0
- package/dist/chunk-HPSOF46N.mjs.map +1 -0
- package/dist/chunk-HPXCKD6M.mjs +118 -0
- package/dist/chunk-HPXCKD6M.mjs.map +1 -0
- package/dist/chunk-J5LGTIGS.mjs +10 -0
- package/dist/chunk-J5LGTIGS.mjs.map +1 -0
- package/dist/chunk-LKV73SD2.mjs +25 -0
- package/dist/chunk-LKV73SD2.mjs.map +1 -0
- package/dist/chunk-MJ52ZIWV.mjs +98 -0
- package/dist/chunk-MJ52ZIWV.mjs.map +1 -0
- package/dist/chunk-O7BSFCCY.mjs +89 -0
- package/dist/chunk-O7BSFCCY.mjs.map +1 -0
- package/dist/chunk-QBM74JB5.mjs +47 -0
- package/dist/chunk-QBM74JB5.mjs.map +1 -0
- package/dist/chunk-QGMLTMB5.mjs +37 -0
- package/dist/chunk-QGMLTMB5.mjs.map +1 -0
- package/dist/chunk-SKX7CPGS.mjs +73 -0
- package/dist/chunk-SKX7CPGS.mjs.map +1 -0
- package/dist/chunk-VPKO6D4W.mjs +33 -0
- package/dist/chunk-VPKO6D4W.mjs.map +1 -0
- package/dist/chunk-YQWYYS7P.mjs +12194 -0
- package/dist/chunk-YQWYYS7P.mjs.map +1 -0
- package/dist/chunk-Z3CZGNU5.mjs +99 -0
- package/dist/chunk-Z3CZGNU5.mjs.map +1 -0
- package/dist/chunk-ZOKHXR5I.mjs +33 -0
- package/dist/chunk-ZOKHXR5I.mjs.map +1 -0
- package/dist/cli.mjs +1562 -0
- package/dist/cli.mjs.map +1 -0
- package/dist/config/FeatureFlagKey.d.mts +24 -0
- package/dist/config/FeatureFlagKey.d.ts +24 -0
- package/dist/config/FeatureFlagKey.js +31 -0
- package/dist/config/FeatureFlagKey.js.map +1 -0
- package/dist/config/FeatureFlagKey.mjs +8 -0
- package/dist/config/FeatureFlagKey.mjs.map +1 -0
- package/dist/config/PublicConfigKey.d.mts +22 -0
- package/dist/config/PublicConfigKey.d.ts +22 -0
- package/dist/config/PublicConfigKey.js +36 -0
- package/dist/config/PublicConfigKey.js.map +1 -0
- package/dist/config/PublicConfigKey.mjs +8 -0
- package/dist/config/PublicConfigKey.mjs.map +1 -0
- package/dist/config/SecretConfigKey.d.mts +22 -0
- package/dist/config/SecretConfigKey.d.ts +22 -0
- package/dist/config/SecretConfigKey.js +31 -0
- package/dist/config/SecretConfigKey.js.map +1 -0
- package/dist/config/SecretConfigKey.mjs +8 -0
- package/dist/config/SecretConfigKey.mjs.map +1 -0
- package/dist/config/config.d.mts +178 -0
- package/dist/config/config.d.ts +178 -0
- package/dist/config/config.js +12364 -0
- package/dist/config/config.js.map +1 -0
- package/dist/config/config.mjs +23 -0
- package/dist/config/config.mjs.map +1 -0
- package/dist/config/findAndProcessEnvConfig.d.mts +17 -0
- package/dist/config/findAndProcessEnvConfig.d.ts +17 -0
- package/dist/config/findAndProcessEnvConfig.js +12290 -0
- package/dist/config/findAndProcessEnvConfig.js.map +1 -0
- package/dist/config/findAndProcessEnvConfig.mjs +14 -0
- package/dist/config/findAndProcessEnvConfig.mjs.map +1 -0
- package/dist/config/findAndProcessFileConfig.d.mts +38 -0
- package/dist/config/findAndProcessFileConfig.d.ts +38 -0
- package/dist/config/findAndProcessFileConfig.js +12431 -0
- package/dist/config/findAndProcessFileConfig.js.map +1 -0
- package/dist/config/findAndProcessFileConfig.mjs +18 -0
- package/dist/config/findAndProcessFileConfig.mjs.map +1 -0
- package/dist/config/getCloudRegion.d.mts +8 -0
- package/dist/config/getCloudRegion.d.ts +8 -0
- package/dist/config/getCloudRegion.js +92 -0
- package/dist/config/getCloudRegion.js.map +1 -0
- package/dist/config/getCloudRegion.mjs +9 -0
- package/dist/config/getCloudRegion.mjs.map +1 -0
- package/dist/config/index.d.mts +5 -0
- package/dist/config/index.d.ts +5 -0
- package/dist/config/index.js +12638 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/index.mjs +33 -0
- package/dist/config/index.mjs.map +1 -0
- package/dist/config/parseConfigSchema.d.mts +13 -0
- package/dist/config/parseConfigSchema.d.ts +13 -0
- package/dist/config/parseConfigSchema.js +12177 -0
- package/dist/config/parseConfigSchema.js.map +1 -0
- package/dist/config/parseConfigSchema.mjs +16 -0
- package/dist/config/parseConfigSchema.mjs.map +1 -0
- package/dist/config/standardSchemaToJson.d.mts +6 -0
- package/dist/config/standardSchemaToJson.d.ts +6 -0
- package/dist/config/standardSchemaToJson.js +138 -0
- package/dist/config/standardSchemaToJson.js.map +1 -0
- package/dist/config/standardSchemaToJson.mjs +9 -0
- package/dist/config/standardSchemaToJson.mjs.map +1 -0
- package/dist/index.d.mts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1 -0
- package/dist/index.mjs.map +1 -0
- package/dist/integration-tests/1/smooai-config/config.d.mts +4108 -0
- package/dist/integration-tests/1/smooai-config/config.d.ts +4108 -0
- package/dist/integration-tests/1/smooai-config/config.js +12353 -0
- package/dist/integration-tests/1/smooai-config/config.js.map +1 -0
- package/dist/integration-tests/1/smooai-config/config.mjs +12 -0
- package/dist/integration-tests/1/smooai-config/config.mjs.map +1 -0
- package/dist/integration-tests/1/smooai-config/default.d.mts +55 -0
- package/dist/integration-tests/1/smooai-config/default.d.ts +55 -0
- package/dist/integration-tests/1/smooai-config/default.js +12419 -0
- package/dist/integration-tests/1/smooai-config/default.js.map +1 -0
- package/dist/integration-tests/1/smooai-config/default.mjs +78 -0
- package/dist/integration-tests/1/smooai-config/default.mjs.map +1 -0
- package/dist/integration-tests/1/smooai-config/development.d.mts +41 -0
- package/dist/integration-tests/1/smooai-config/development.d.ts +41 -0
- package/dist/integration-tests/1/smooai-config/development.js +12403 -0
- package/dist/integration-tests/1/smooai-config/development.js.map +1 -0
- package/dist/integration-tests/1/smooai-config/development.mjs +62 -0
- package/dist/integration-tests/1/smooai-config/development.mjs.map +1 -0
- package/dist/integration-tests/1/smooai-config/production.aws.d.mts +128 -0
- package/dist/integration-tests/1/smooai-config/production.aws.d.ts +128 -0
- package/dist/integration-tests/1/smooai-config/production.aws.js +12371 -0
- package/dist/integration-tests/1/smooai-config/production.aws.js.map +1 -0
- package/dist/integration-tests/1/smooai-config/production.aws.mjs +30 -0
- package/dist/integration-tests/1/smooai-config/production.aws.mjs.map +1 -0
- package/dist/integration-tests/1/smooai-config/production.aws.us-east-1.d.mts +64 -0
- package/dist/integration-tests/1/smooai-config/production.aws.us-east-1.d.ts +64 -0
- package/dist/integration-tests/1/smooai-config/production.aws.us-east-1.js +12364 -0
- package/dist/integration-tests/1/smooai-config/production.aws.us-east-1.js.map +1 -0
- package/dist/integration-tests/1/smooai-config/production.aws.us-east-1.mjs +23 -0
- package/dist/integration-tests/1/smooai-config/production.aws.us-east-1.mjs.map +1 -0
- package/dist/integration-tests/1/smooai-config/production.aws.us-east-2.d.mts +64 -0
- package/dist/integration-tests/1/smooai-config/production.aws.us-east-2.d.ts +64 -0
- package/dist/integration-tests/1/smooai-config/production.aws.us-east-2.js +12364 -0
- package/dist/integration-tests/1/smooai-config/production.aws.us-east-2.js.map +1 -0
- package/dist/integration-tests/1/smooai-config/production.aws.us-east-2.mjs +23 -0
- package/dist/integration-tests/1/smooai-config/production.aws.us-east-2.mjs.map +1 -0
- package/dist/integration-tests/1/smooai-config/production.d.mts +42 -0
- package/dist/integration-tests/1/smooai-config/production.d.ts +42 -0
- package/dist/integration-tests/1/smooai-config/production.js +12399 -0
- package/dist/integration-tests/1/smooai-config/production.js.map +1 -0
- package/dist/integration-tests/1/smooai-config/production.mjs +58 -0
- package/dist/integration-tests/1/smooai-config/production.mjs.map +1 -0
- package/dist/integration-tests/1/smooai-config/staging.d.mts +129 -0
- package/dist/integration-tests/1/smooai-config/staging.d.ts +129 -0
- package/dist/integration-tests/1/smooai-config/staging.js +12377 -0
- package/dist/integration-tests/1/smooai-config/staging.js.map +1 -0
- package/dist/integration-tests/1/smooai-config/staging.mjs +36 -0
- package/dist/integration-tests/1/smooai-config/staging.mjs.map +1 -0
- package/dist/integration-tests/2/smooai-config/config.d.mts +1262 -0
- package/dist/integration-tests/2/smooai-config/config.d.ts +1262 -0
- package/dist/integration-tests/2/smooai-config/config.js +12301 -0
- package/dist/integration-tests/2/smooai-config/config.js.map +1 -0
- package/dist/integration-tests/2/smooai-config/config.mjs +12 -0
- package/dist/integration-tests/2/smooai-config/config.mjs.map +1 -0
- package/dist/integration-tests/2/smooai-config/default.d.mts +19 -0
- package/dist/integration-tests/2/smooai-config/default.d.ts +19 -0
- package/dist/integration-tests/2/smooai-config/default.js +12321 -0
- package/dist/integration-tests/2/smooai-config/default.js.map +1 -0
- package/dist/integration-tests/2/smooai-config/default.mjs +32 -0
- package/dist/integration-tests/2/smooai-config/default.mjs.map +1 -0
- package/dist/integration-tests/2/smooai-config/development.d.mts +9 -0
- package/dist/integration-tests/2/smooai-config/development.d.ts +9 -0
- package/dist/integration-tests/2/smooai-config/development.js +12311 -0
- package/dist/integration-tests/2/smooai-config/development.js.map +1 -0
- package/dist/integration-tests/2/smooai-config/development.mjs +22 -0
- package/dist/integration-tests/2/smooai-config/development.mjs.map +1 -0
- package/dist/integration-tests/2/smooai-config/production.aws.d.mts +26 -0
- package/dist/integration-tests/2/smooai-config/production.aws.d.ts +26 -0
- package/dist/integration-tests/2/smooai-config/production.aws.js +12311 -0
- package/dist/integration-tests/2/smooai-config/production.aws.js.map +1 -0
- package/dist/integration-tests/2/smooai-config/production.aws.mjs +22 -0
- package/dist/integration-tests/2/smooai-config/production.aws.mjs.map +1 -0
- package/dist/integration-tests/2/smooai-config/production.aws.us-east-1.d.mts +25 -0
- package/dist/integration-tests/2/smooai-config/production.aws.us-east-1.d.ts +25 -0
- package/dist/integration-tests/2/smooai-config/production.aws.us-east-1.js +12310 -0
- package/dist/integration-tests/2/smooai-config/production.aws.us-east-1.js.map +1 -0
- package/dist/integration-tests/2/smooai-config/production.aws.us-east-1.mjs +21 -0
- package/dist/integration-tests/2/smooai-config/production.aws.us-east-1.mjs.map +1 -0
- package/dist/integration-tests/2/smooai-config/production.d.mts +19 -0
- package/dist/integration-tests/2/smooai-config/production.d.ts +19 -0
- package/dist/integration-tests/2/smooai-config/production.js +12321 -0
- package/dist/integration-tests/2/smooai-config/production.js.map +1 -0
- package/dist/integration-tests/2/smooai-config/production.mjs +32 -0
- package/dist/integration-tests/2/smooai-config/production.mjs.map +1 -0
- package/dist/platform/client.d.mts +49 -0
- package/dist/platform/client.d.ts +49 -0
- package/dist/platform/client.js +123 -0
- package/dist/platform/client.js.map +1 -0
- package/dist/platform/client.mjs +8 -0
- package/dist/platform/client.mjs.map +1 -0
- package/dist/platform/server/server.async.d.mts +12 -0
- package/dist/platform/server/server.async.d.ts +12 -0
- package/dist/platform/server/server.async.js +12586 -0
- package/dist/platform/server/server.async.js.map +1 -0
- package/dist/platform/server/server.async.mjs +18 -0
- package/dist/platform/server/server.async.mjs.map +1 -0
- package/dist/platform/server/server.featureFlag.sync.d.mts +2 -0
- package/dist/platform/server/server.featureFlag.sync.d.ts +2 -0
- package/dist/platform/server/server.featureFlag.sync.js +12589 -0
- package/dist/platform/server/server.featureFlag.sync.js.map +1 -0
- package/dist/platform/server/server.featureFlag.sync.mjs +24 -0
- package/dist/platform/server/server.featureFlag.sync.mjs.map +1 -0
- package/dist/platform/server/server.publicConfig.sync.d.mts +2 -0
- package/dist/platform/server/server.publicConfig.sync.d.ts +2 -0
- package/dist/platform/server/server.publicConfig.sync.js +12589 -0
- package/dist/platform/server/server.publicConfig.sync.js.map +1 -0
- package/dist/platform/server/server.publicConfig.sync.mjs +24 -0
- package/dist/platform/server/server.publicConfig.sync.mjs.map +1 -0
- package/dist/platform/server/server.secretConfig.sync.d.mts +2 -0
- package/dist/platform/server/server.secretConfig.sync.d.ts +2 -0
- package/dist/platform/server/server.secretConfig.sync.js +12589 -0
- package/dist/platform/server/server.secretConfig.sync.js.map +1 -0
- package/dist/platform/server/server.secretConfig.sync.mjs +24 -0
- package/dist/platform/server/server.secretConfig.sync.mjs.map +1 -0
- package/dist/platform/server.d.mts +21 -0
- package/dist/platform/server.d.ts +21 -0
- package/dist/platform/server.js +12626 -0
- package/dist/platform/server.js.map +1 -0
- package/dist/platform/server.mjs +58 -0
- package/dist/platform/server.mjs.map +1 -0
- package/dist/react/hooks.d.mts +36 -0
- package/dist/react/hooks.d.ts +36 -0
- package/dist/react/hooks.js +90 -0
- package/dist/react/hooks.js.map +1 -0
- package/dist/react/hooks.mjs +14 -0
- package/dist/react/hooks.mjs.map +1 -0
- package/dist/react/index.d.mts +28 -0
- package/dist/react/index.d.ts +28 -0
- package/dist/react/index.js +194 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/index.mjs +17 -0
- package/dist/react/index.mjs.map +1 -0
- package/dist/schema-spec/smooai-config-schema-spec.d.mts +25 -0
- package/dist/schema-spec/smooai-config-schema-spec.d.ts +25 -0
- package/dist/schema-spec/smooai-config-schema-spec.js +177 -0
- package/dist/schema-spec/smooai-config-schema-spec.js.map +1 -0
- package/dist/schema-spec/smooai-config-schema-spec.mjs +154 -0
- package/dist/schema-spec/smooai-config-schema-spec.mjs.map +1 -0
- package/dist/utils/fs.d.mts +10 -0
- package/dist/utils/fs.d.ts +10 -0
- package/dist/utils/fs.js +74 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/fs.mjs +11 -0
- package/dist/utils/fs.mjs.map +1 -0
- package/dist/utils/index.d.mts +29 -0
- package/dist/utils/index.d.ts +29 -0
- package/dist/utils/index.js +113 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/index.mjs +18 -0
- package/dist/utils/index.mjs.map +1 -0
- package/dist/utils/mergeReplaceArrays.d.mts +9 -0
- package/dist/utils/mergeReplaceArrays.d.ts +9 -0
- package/dist/utils/mergeReplaceArrays.js +63 -0
- package/dist/utils/mergeReplaceArrays.js.map +1 -0
- package/dist/utils/mergeReplaceArrays.mjs +9 -0
- package/dist/utils/mergeReplaceArrays.mjs.map +1 -0
- package/package.json +133 -0
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { UnionToUpperSnake } from '../utils/index.mjs';
|
|
2
|
+
import { StandardSchemaV1 } from '@standard-schema/spec';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
|
|
5
|
+
type DeepPartial<T> = T extends object ? {
|
|
6
|
+
[P in keyof T]?: DeepPartial<T[P]>;
|
|
7
|
+
} : T;
|
|
8
|
+
/**
|
|
9
|
+
* Symbol used to indicate a string schema type in the configuration.
|
|
10
|
+
* This is used to distinguish between string configurations and structured configurations.
|
|
11
|
+
*/
|
|
12
|
+
declare const StringSchema: unique symbol;
|
|
13
|
+
type StringSchema = typeof StringSchema;
|
|
14
|
+
declare const BooleanSchema: unique symbol;
|
|
15
|
+
type BooleanSchema = typeof BooleanSchema;
|
|
16
|
+
declare const NumberSchema: unique symbol;
|
|
17
|
+
type NumberSchema = typeof NumberSchema;
|
|
18
|
+
type ConfigSchema<K extends string | number | symbol = string> = Record<K, StringSchema | BooleanSchema | NumberSchema | StandardSchemaV1>;
|
|
19
|
+
type OutputType<E> = E extends StringSchema ? string : E extends BooleanSchema ? boolean : E extends NumberSchema ? number : E extends StandardSchemaV1 ? StandardSchemaV1.InferOutput<E> : never;
|
|
20
|
+
type InputType<E> = E extends StringSchema ? string : E extends BooleanSchema ? boolean : E extends NumberSchema ? number : E extends StandardSchemaV1 ? StandardSchemaV1.InferInput<E> : never;
|
|
21
|
+
type OuputTypeWithDeferFunctions<S extends ConfigSchema, E> = E extends StringSchema ? string | ((config: SchemaOutput<S>) => string) : E extends BooleanSchema ? boolean | ((config: SchemaOutput<S>) => boolean) : E extends NumberSchema ? number | ((config: SchemaOutput<S>) => number) : E extends StandardSchemaV1 ? StandardSchemaV1.InferInput<E> | ((config: SchemaOutput<S>) => DeepPartial<StandardSchemaV1.InferInput<E>>) : never;
|
|
22
|
+
type InputTypeWithDeferFunctions<S extends ConfigSchema, E> = E extends StringSchema ? string | ((config: SchemaInput<S>) => string) : E extends BooleanSchema ? boolean | ((config: SchemaInput<S>) => boolean) : E extends NumberSchema ? number | ((config: SchemaInput<S>) => number) : E extends StandardSchemaV1 ? StandardSchemaV1.InferInput<E> | ((config: SchemaInput<S>) => DeepPartial<StandardSchemaV1.InferInput<E>>) : never;
|
|
23
|
+
type SchemaOutput<T extends ConfigSchema> = {
|
|
24
|
+
[K in keyof T]?: OutputType<T[K]>;
|
|
25
|
+
};
|
|
26
|
+
type SchemaInput<T extends ConfigSchema> = {
|
|
27
|
+
[K in keyof T]?: InputType<T[K]>;
|
|
28
|
+
};
|
|
29
|
+
type SchemaOutputWithDeferFunctions<T extends ConfigSchema> = {
|
|
30
|
+
[K in keyof T]?: OuputTypeWithDeferFunctions<T, T[K]>;
|
|
31
|
+
};
|
|
32
|
+
type SchemaInputWithDeferFunctions<T extends ConfigSchema> = {
|
|
33
|
+
[K in keyof T]?: InputTypeWithDeferFunctions<T, T[K]>;
|
|
34
|
+
};
|
|
35
|
+
type ZodOutputTypeRecord<T extends ConfigSchema> = {
|
|
36
|
+
[K in keyof T]: z.ZodType<OutputType<T[K]>>;
|
|
37
|
+
};
|
|
38
|
+
type ZodOutputType<T extends ConfigSchema> = z.ZodObject<ZodOutputTypeRecord<T>>;
|
|
39
|
+
type ZodOutputTypeWithDeferFunctionsRecord<T extends ConfigSchema> = {
|
|
40
|
+
[K in keyof T]: z.ZodType<OuputTypeWithDeferFunctions<T, T[K]>>;
|
|
41
|
+
};
|
|
42
|
+
type ZodOutputTypeWithDeferFunctions<T extends ConfigSchema> = z.ZodObject<ZodOutputTypeWithDeferFunctionsRecord<T>>;
|
|
43
|
+
type SeralizedConfigSchema<K extends string | number | symbol = string> = Record<K, 'stringSchema' | 'booleanSchema' | 'numberSchema' | any>;
|
|
44
|
+
declare function serializeConfigSchema<T extends ConfigSchema>(configSchema: T): ZodOutputType<T>;
|
|
45
|
+
declare function deserializeConfigSchema<T extends SeralizedConfigSchema>(configSchema: T): ConfigSchema<string>;
|
|
46
|
+
declare function generateConfigSchema<T extends ConfigSchema>(configSchema: T): {
|
|
47
|
+
object: z.ZodObject<{ -readonly [P in keyof ZodOutputTypeRecord<T>]: ZodOutputTypeRecord<T>[P]; }, z.core.$strip>;
|
|
48
|
+
objectWithDeferFunctions: z.ZodObject<{ -readonly [P_1 in keyof ZodOutputTypeWithDeferFunctionsRecord<T>]: ZodOutputTypeWithDeferFunctionsRecord<T>[P_1]; }, z.core.$strip>;
|
|
49
|
+
};
|
|
50
|
+
type ParsedConfigGeneric = Record<string, string | ((config: Record<string, any>) => string) | boolean | ((config: Record<string, any>) => boolean) | number | ((config: Record<string, any>) => number) | StandardSchemaV1.InferOutput<StandardSchemaV1> | ((config: Record<string, any>) => StandardSchemaV1.InferOutput<StandardSchemaV1>)>;
|
|
51
|
+
declare function defineConfig<Pub extends ConfigSchema, Sec extends ConfigSchema, FF extends ConfigSchema>({ publicConfigSchema, secretConfigSchema, featureFlagSchema, }: {
|
|
52
|
+
publicConfigSchema?: Pub | undefined;
|
|
53
|
+
secretConfigSchema?: Sec | undefined;
|
|
54
|
+
featureFlagSchema?: FF | undefined;
|
|
55
|
+
}): {
|
|
56
|
+
AllConfigKeys: ConfigSchema<"ENV" | "IS_LOCAL" | "REGION" | "CLOUD_PROVIDER" | keyof Pub> & Sec & FF extends infer T extends Record<string, any> ? { [K in keyof T as UnionToUpperSnake<K & string>]: K & string; } : never;
|
|
57
|
+
PublicConfigKeys: ConfigSchema<"ENV" | "IS_LOCAL" | "REGION" | "CLOUD_PROVIDER" | keyof Pub> extends infer T_1 extends Record<string, any> ? { [K_1 in keyof T_1 as UnionToUpperSnake<K_1 & string>]: K_1 & string; } : never;
|
|
58
|
+
SecretConfigKeys: { [K_2 in keyof Sec as UnionToUpperSnake<K_2 & string>]: K_2 & string; };
|
|
59
|
+
FeatureFlagKeys: { [K_3 in keyof FF as UnionToUpperSnake<K_3 & string>]: K_3 & string; };
|
|
60
|
+
serializedAllConfigSchema: ZodOutputType<ConfigSchema<"ENV" | "IS_LOCAL" | "REGION" | "CLOUD_PROVIDER" | keyof Pub | keyof Sec | keyof FF>>;
|
|
61
|
+
_configTypeInput: SchemaInputWithDeferFunctions<Pub & Sec & FF>;
|
|
62
|
+
_configTypeOutput: SchemaOutputWithDeferFunctions<{
|
|
63
|
+
ENV: StringSchema;
|
|
64
|
+
CLOUD_PROVIDER: StringSchema;
|
|
65
|
+
REGION: StringSchema;
|
|
66
|
+
IS_LOCAL: BooleanSchema;
|
|
67
|
+
} & Pub & Sec & FF>;
|
|
68
|
+
_configType: SchemaOutput<{
|
|
69
|
+
ENV: StringSchema;
|
|
70
|
+
CLOUD_PROVIDER: StringSchema;
|
|
71
|
+
REGION: StringSchema;
|
|
72
|
+
IS_LOCAL: BooleanSchema;
|
|
73
|
+
} & Pub & Sec & FF>;
|
|
74
|
+
_zodOutputType: ZodOutputType<{
|
|
75
|
+
ENV: StringSchema;
|
|
76
|
+
CLOUD_PROVIDER: StringSchema;
|
|
77
|
+
REGION: StringSchema;
|
|
78
|
+
IS_LOCAL: BooleanSchema;
|
|
79
|
+
} & Pub & Sec & FF>;
|
|
80
|
+
_zodOutputTypeWithDeferFunctions: ZodOutputTypeWithDeferFunctions<{
|
|
81
|
+
ENV: StringSchema;
|
|
82
|
+
CLOUD_PROVIDER: StringSchema;
|
|
83
|
+
REGION: StringSchema;
|
|
84
|
+
IS_LOCAL: BooleanSchema;
|
|
85
|
+
} & Pub & Sec & FF>;
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Infers the TypeScript types from a configuration definition.
|
|
89
|
+
* This utility type extracts the configuration keys and type helpers from a configuration definition created by defineConfig.
|
|
90
|
+
*
|
|
91
|
+
* @returns An object containing:
|
|
92
|
+
* - AllConfigKeys: Type of all configuration keys
|
|
93
|
+
* - PublicConfigKeys: Type of public configuration keys
|
|
94
|
+
* - SecretConfigKeys: Type of secret configuration keys
|
|
95
|
+
* - FeatureFlagKeys: Type of feature flag keys
|
|
96
|
+
* - ConfigTypeInput: Type helper for input configuration
|
|
97
|
+
* - ConfigTypeOutput: Type helper for output configuration
|
|
98
|
+
* - ConfigType: Type helper for configuration
|
|
99
|
+
* - ZodOutputType: Type helper for Zod output
|
|
100
|
+
* - ZodOutputTypeWithDeferFunctions: Type helper for Zod output with defer functions
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* // Define a configuration
|
|
104
|
+
* const config = defineConfig({
|
|
105
|
+
* publicConfigSchema: {
|
|
106
|
+
* apiUrl: StringSchema,
|
|
107
|
+
* debugMode: BooleanSchema
|
|
108
|
+
* },
|
|
109
|
+
* secretConfigSchema: {
|
|
110
|
+
* apiKey: StringSchema
|
|
111
|
+
* },
|
|
112
|
+
* featureFlagSchema: {
|
|
113
|
+
* enableNewUI: BooleanSchema
|
|
114
|
+
* }
|
|
115
|
+
* });
|
|
116
|
+
*
|
|
117
|
+
* // Infer types from the configuration
|
|
118
|
+
* type ConfigTypes = InferConfigTypes<typeof config>;
|
|
119
|
+
*
|
|
120
|
+
* // Now you can use the inferred types:
|
|
121
|
+
* type AllKeys = ConfigTypes['AllConfigKeys']; // { API_URL: 'apiUrl', DEBUG_MODE: 'debugMode', API_KEY: 'apiKey', ENABLE_NEW_UI: 'enableNewUI' }
|
|
122
|
+
* type PublicKeys = ConfigTypes['PublicConfigKeys']; // { API_URL: 'apiUrl', DEBUG_MODE: 'debugMode' }
|
|
123
|
+
* type SecretKeys = ConfigTypes['SecretConfigKeys']; // { API_KEY: 'apiKey' }
|
|
124
|
+
* type FeatureFlags = ConfigTypes['FeatureFlagKeys']; // { ENABLE_NEW_UI: 'enableNewUI' }
|
|
125
|
+
*
|
|
126
|
+
* // Type helpers for configuration
|
|
127
|
+
* type InputConfig = ConfigTypes['ConfigTypeInput'];
|
|
128
|
+
* type OutputConfig = ConfigTypes['ConfigTypeOutput'];
|
|
129
|
+
* type ConfigType = ConfigTypes['ConfigType'];
|
|
130
|
+
* type ZodOutput = ConfigTypes['ZodOutputType'];
|
|
131
|
+
* type ZodOutputWithDefer = ConfigTypes['ZodOutputTypeWithDeferFunctions'];
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* // Using with structured configuration
|
|
135
|
+
* const config = defineConfig({
|
|
136
|
+
* publicConfigSchema: {
|
|
137
|
+
* database: {
|
|
138
|
+
* '~standard': z.object({
|
|
139
|
+
* host: z.string(),
|
|
140
|
+
* port: z.number()
|
|
141
|
+
* })
|
|
142
|
+
* }
|
|
143
|
+
* }
|
|
144
|
+
* });
|
|
145
|
+
*
|
|
146
|
+
* type ConfigTypes = InferConfigTypes<typeof config>;
|
|
147
|
+
*
|
|
148
|
+
* // Type helpers for structured configuration
|
|
149
|
+
* type InputConfig = ConfigTypes['ConfigTypeInput'];
|
|
150
|
+
* type OutputConfig = ConfigTypes['ConfigTypeOutput'];
|
|
151
|
+
* type ConfigType = ConfigTypes['ConfigType'];
|
|
152
|
+
* type ZodOutput = ConfigTypes['ZodOutputType'];
|
|
153
|
+
* type ZodOutputWithDefer = ConfigTypes['ZodOutputTypeWithDeferFunctions'];
|
|
154
|
+
*/
|
|
155
|
+
type InferConfigTypes<T> = T extends {
|
|
156
|
+
AllConfigKeys: infer AK;
|
|
157
|
+
PublicConfigKeys: infer PK;
|
|
158
|
+
SecretConfigKeys: infer SK;
|
|
159
|
+
FeatureFlagKeys: infer FK;
|
|
160
|
+
serializedAllConfigSchema: infer _SACS;
|
|
161
|
+
_configType: infer CT;
|
|
162
|
+
_configTypeInput: infer CIT;
|
|
163
|
+
_configTypeOutput: infer COT;
|
|
164
|
+
_zodOutputType: infer ZOT;
|
|
165
|
+
_zodOutputTypeWithDeferFunctions: infer ZOTDF;
|
|
166
|
+
} ? {
|
|
167
|
+
AllConfigKeys: AK;
|
|
168
|
+
PublicConfigKeys: PK;
|
|
169
|
+
SecretConfigKeys: SK;
|
|
170
|
+
FeatureFlagKeys: FK;
|
|
171
|
+
ConfigTypeInput: CIT;
|
|
172
|
+
ConfigTypeOutput: COT;
|
|
173
|
+
ConfigType: CT;
|
|
174
|
+
ZodOutputType: ZOT;
|
|
175
|
+
ZodOutputTypeWithDeferFunctions: ZOTDF;
|
|
176
|
+
} : never;
|
|
177
|
+
|
|
178
|
+
export { BooleanSchema, type InferConfigTypes, NumberSchema, type ParsedConfigGeneric, StringSchema, defineConfig, deserializeConfigSchema, generateConfigSchema, serializeConfigSchema };
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { UnionToUpperSnake } from '../utils/index.js';
|
|
2
|
+
import { StandardSchemaV1 } from '@standard-schema/spec';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
|
|
5
|
+
type DeepPartial<T> = T extends object ? {
|
|
6
|
+
[P in keyof T]?: DeepPartial<T[P]>;
|
|
7
|
+
} : T;
|
|
8
|
+
/**
|
|
9
|
+
* Symbol used to indicate a string schema type in the configuration.
|
|
10
|
+
* This is used to distinguish between string configurations and structured configurations.
|
|
11
|
+
*/
|
|
12
|
+
declare const StringSchema: unique symbol;
|
|
13
|
+
type StringSchema = typeof StringSchema;
|
|
14
|
+
declare const BooleanSchema: unique symbol;
|
|
15
|
+
type BooleanSchema = typeof BooleanSchema;
|
|
16
|
+
declare const NumberSchema: unique symbol;
|
|
17
|
+
type NumberSchema = typeof NumberSchema;
|
|
18
|
+
type ConfigSchema<K extends string | number | symbol = string> = Record<K, StringSchema | BooleanSchema | NumberSchema | StandardSchemaV1>;
|
|
19
|
+
type OutputType<E> = E extends StringSchema ? string : E extends BooleanSchema ? boolean : E extends NumberSchema ? number : E extends StandardSchemaV1 ? StandardSchemaV1.InferOutput<E> : never;
|
|
20
|
+
type InputType<E> = E extends StringSchema ? string : E extends BooleanSchema ? boolean : E extends NumberSchema ? number : E extends StandardSchemaV1 ? StandardSchemaV1.InferInput<E> : never;
|
|
21
|
+
type OuputTypeWithDeferFunctions<S extends ConfigSchema, E> = E extends StringSchema ? string | ((config: SchemaOutput<S>) => string) : E extends BooleanSchema ? boolean | ((config: SchemaOutput<S>) => boolean) : E extends NumberSchema ? number | ((config: SchemaOutput<S>) => number) : E extends StandardSchemaV1 ? StandardSchemaV1.InferInput<E> | ((config: SchemaOutput<S>) => DeepPartial<StandardSchemaV1.InferInput<E>>) : never;
|
|
22
|
+
type InputTypeWithDeferFunctions<S extends ConfigSchema, E> = E extends StringSchema ? string | ((config: SchemaInput<S>) => string) : E extends BooleanSchema ? boolean | ((config: SchemaInput<S>) => boolean) : E extends NumberSchema ? number | ((config: SchemaInput<S>) => number) : E extends StandardSchemaV1 ? StandardSchemaV1.InferInput<E> | ((config: SchemaInput<S>) => DeepPartial<StandardSchemaV1.InferInput<E>>) : never;
|
|
23
|
+
type SchemaOutput<T extends ConfigSchema> = {
|
|
24
|
+
[K in keyof T]?: OutputType<T[K]>;
|
|
25
|
+
};
|
|
26
|
+
type SchemaInput<T extends ConfigSchema> = {
|
|
27
|
+
[K in keyof T]?: InputType<T[K]>;
|
|
28
|
+
};
|
|
29
|
+
type SchemaOutputWithDeferFunctions<T extends ConfigSchema> = {
|
|
30
|
+
[K in keyof T]?: OuputTypeWithDeferFunctions<T, T[K]>;
|
|
31
|
+
};
|
|
32
|
+
type SchemaInputWithDeferFunctions<T extends ConfigSchema> = {
|
|
33
|
+
[K in keyof T]?: InputTypeWithDeferFunctions<T, T[K]>;
|
|
34
|
+
};
|
|
35
|
+
type ZodOutputTypeRecord<T extends ConfigSchema> = {
|
|
36
|
+
[K in keyof T]: z.ZodType<OutputType<T[K]>>;
|
|
37
|
+
};
|
|
38
|
+
type ZodOutputType<T extends ConfigSchema> = z.ZodObject<ZodOutputTypeRecord<T>>;
|
|
39
|
+
type ZodOutputTypeWithDeferFunctionsRecord<T extends ConfigSchema> = {
|
|
40
|
+
[K in keyof T]: z.ZodType<OuputTypeWithDeferFunctions<T, T[K]>>;
|
|
41
|
+
};
|
|
42
|
+
type ZodOutputTypeWithDeferFunctions<T extends ConfigSchema> = z.ZodObject<ZodOutputTypeWithDeferFunctionsRecord<T>>;
|
|
43
|
+
type SeralizedConfigSchema<K extends string | number | symbol = string> = Record<K, 'stringSchema' | 'booleanSchema' | 'numberSchema' | any>;
|
|
44
|
+
declare function serializeConfigSchema<T extends ConfigSchema>(configSchema: T): ZodOutputType<T>;
|
|
45
|
+
declare function deserializeConfigSchema<T extends SeralizedConfigSchema>(configSchema: T): ConfigSchema<string>;
|
|
46
|
+
declare function generateConfigSchema<T extends ConfigSchema>(configSchema: T): {
|
|
47
|
+
object: z.ZodObject<{ -readonly [P in keyof ZodOutputTypeRecord<T>]: ZodOutputTypeRecord<T>[P]; }, z.core.$strip>;
|
|
48
|
+
objectWithDeferFunctions: z.ZodObject<{ -readonly [P_1 in keyof ZodOutputTypeWithDeferFunctionsRecord<T>]: ZodOutputTypeWithDeferFunctionsRecord<T>[P_1]; }, z.core.$strip>;
|
|
49
|
+
};
|
|
50
|
+
type ParsedConfigGeneric = Record<string, string | ((config: Record<string, any>) => string) | boolean | ((config: Record<string, any>) => boolean) | number | ((config: Record<string, any>) => number) | StandardSchemaV1.InferOutput<StandardSchemaV1> | ((config: Record<string, any>) => StandardSchemaV1.InferOutput<StandardSchemaV1>)>;
|
|
51
|
+
declare function defineConfig<Pub extends ConfigSchema, Sec extends ConfigSchema, FF extends ConfigSchema>({ publicConfigSchema, secretConfigSchema, featureFlagSchema, }: {
|
|
52
|
+
publicConfigSchema?: Pub | undefined;
|
|
53
|
+
secretConfigSchema?: Sec | undefined;
|
|
54
|
+
featureFlagSchema?: FF | undefined;
|
|
55
|
+
}): {
|
|
56
|
+
AllConfigKeys: ConfigSchema<"ENV" | "IS_LOCAL" | "REGION" | "CLOUD_PROVIDER" | keyof Pub> & Sec & FF extends infer T extends Record<string, any> ? { [K in keyof T as UnionToUpperSnake<K & string>]: K & string; } : never;
|
|
57
|
+
PublicConfigKeys: ConfigSchema<"ENV" | "IS_LOCAL" | "REGION" | "CLOUD_PROVIDER" | keyof Pub> extends infer T_1 extends Record<string, any> ? { [K_1 in keyof T_1 as UnionToUpperSnake<K_1 & string>]: K_1 & string; } : never;
|
|
58
|
+
SecretConfigKeys: { [K_2 in keyof Sec as UnionToUpperSnake<K_2 & string>]: K_2 & string; };
|
|
59
|
+
FeatureFlagKeys: { [K_3 in keyof FF as UnionToUpperSnake<K_3 & string>]: K_3 & string; };
|
|
60
|
+
serializedAllConfigSchema: ZodOutputType<ConfigSchema<"ENV" | "IS_LOCAL" | "REGION" | "CLOUD_PROVIDER" | keyof Pub | keyof Sec | keyof FF>>;
|
|
61
|
+
_configTypeInput: SchemaInputWithDeferFunctions<Pub & Sec & FF>;
|
|
62
|
+
_configTypeOutput: SchemaOutputWithDeferFunctions<{
|
|
63
|
+
ENV: StringSchema;
|
|
64
|
+
CLOUD_PROVIDER: StringSchema;
|
|
65
|
+
REGION: StringSchema;
|
|
66
|
+
IS_LOCAL: BooleanSchema;
|
|
67
|
+
} & Pub & Sec & FF>;
|
|
68
|
+
_configType: SchemaOutput<{
|
|
69
|
+
ENV: StringSchema;
|
|
70
|
+
CLOUD_PROVIDER: StringSchema;
|
|
71
|
+
REGION: StringSchema;
|
|
72
|
+
IS_LOCAL: BooleanSchema;
|
|
73
|
+
} & Pub & Sec & FF>;
|
|
74
|
+
_zodOutputType: ZodOutputType<{
|
|
75
|
+
ENV: StringSchema;
|
|
76
|
+
CLOUD_PROVIDER: StringSchema;
|
|
77
|
+
REGION: StringSchema;
|
|
78
|
+
IS_LOCAL: BooleanSchema;
|
|
79
|
+
} & Pub & Sec & FF>;
|
|
80
|
+
_zodOutputTypeWithDeferFunctions: ZodOutputTypeWithDeferFunctions<{
|
|
81
|
+
ENV: StringSchema;
|
|
82
|
+
CLOUD_PROVIDER: StringSchema;
|
|
83
|
+
REGION: StringSchema;
|
|
84
|
+
IS_LOCAL: BooleanSchema;
|
|
85
|
+
} & Pub & Sec & FF>;
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Infers the TypeScript types from a configuration definition.
|
|
89
|
+
* This utility type extracts the configuration keys and type helpers from a configuration definition created by defineConfig.
|
|
90
|
+
*
|
|
91
|
+
* @returns An object containing:
|
|
92
|
+
* - AllConfigKeys: Type of all configuration keys
|
|
93
|
+
* - PublicConfigKeys: Type of public configuration keys
|
|
94
|
+
* - SecretConfigKeys: Type of secret configuration keys
|
|
95
|
+
* - FeatureFlagKeys: Type of feature flag keys
|
|
96
|
+
* - ConfigTypeInput: Type helper for input configuration
|
|
97
|
+
* - ConfigTypeOutput: Type helper for output configuration
|
|
98
|
+
* - ConfigType: Type helper for configuration
|
|
99
|
+
* - ZodOutputType: Type helper for Zod output
|
|
100
|
+
* - ZodOutputTypeWithDeferFunctions: Type helper for Zod output with defer functions
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* // Define a configuration
|
|
104
|
+
* const config = defineConfig({
|
|
105
|
+
* publicConfigSchema: {
|
|
106
|
+
* apiUrl: StringSchema,
|
|
107
|
+
* debugMode: BooleanSchema
|
|
108
|
+
* },
|
|
109
|
+
* secretConfigSchema: {
|
|
110
|
+
* apiKey: StringSchema
|
|
111
|
+
* },
|
|
112
|
+
* featureFlagSchema: {
|
|
113
|
+
* enableNewUI: BooleanSchema
|
|
114
|
+
* }
|
|
115
|
+
* });
|
|
116
|
+
*
|
|
117
|
+
* // Infer types from the configuration
|
|
118
|
+
* type ConfigTypes = InferConfigTypes<typeof config>;
|
|
119
|
+
*
|
|
120
|
+
* // Now you can use the inferred types:
|
|
121
|
+
* type AllKeys = ConfigTypes['AllConfigKeys']; // { API_URL: 'apiUrl', DEBUG_MODE: 'debugMode', API_KEY: 'apiKey', ENABLE_NEW_UI: 'enableNewUI' }
|
|
122
|
+
* type PublicKeys = ConfigTypes['PublicConfigKeys']; // { API_URL: 'apiUrl', DEBUG_MODE: 'debugMode' }
|
|
123
|
+
* type SecretKeys = ConfigTypes['SecretConfigKeys']; // { API_KEY: 'apiKey' }
|
|
124
|
+
* type FeatureFlags = ConfigTypes['FeatureFlagKeys']; // { ENABLE_NEW_UI: 'enableNewUI' }
|
|
125
|
+
*
|
|
126
|
+
* // Type helpers for configuration
|
|
127
|
+
* type InputConfig = ConfigTypes['ConfigTypeInput'];
|
|
128
|
+
* type OutputConfig = ConfigTypes['ConfigTypeOutput'];
|
|
129
|
+
* type ConfigType = ConfigTypes['ConfigType'];
|
|
130
|
+
* type ZodOutput = ConfigTypes['ZodOutputType'];
|
|
131
|
+
* type ZodOutputWithDefer = ConfigTypes['ZodOutputTypeWithDeferFunctions'];
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* // Using with structured configuration
|
|
135
|
+
* const config = defineConfig({
|
|
136
|
+
* publicConfigSchema: {
|
|
137
|
+
* database: {
|
|
138
|
+
* '~standard': z.object({
|
|
139
|
+
* host: z.string(),
|
|
140
|
+
* port: z.number()
|
|
141
|
+
* })
|
|
142
|
+
* }
|
|
143
|
+
* }
|
|
144
|
+
* });
|
|
145
|
+
*
|
|
146
|
+
* type ConfigTypes = InferConfigTypes<typeof config>;
|
|
147
|
+
*
|
|
148
|
+
* // Type helpers for structured configuration
|
|
149
|
+
* type InputConfig = ConfigTypes['ConfigTypeInput'];
|
|
150
|
+
* type OutputConfig = ConfigTypes['ConfigTypeOutput'];
|
|
151
|
+
* type ConfigType = ConfigTypes['ConfigType'];
|
|
152
|
+
* type ZodOutput = ConfigTypes['ZodOutputType'];
|
|
153
|
+
* type ZodOutputWithDefer = ConfigTypes['ZodOutputTypeWithDeferFunctions'];
|
|
154
|
+
*/
|
|
155
|
+
type InferConfigTypes<T> = T extends {
|
|
156
|
+
AllConfigKeys: infer AK;
|
|
157
|
+
PublicConfigKeys: infer PK;
|
|
158
|
+
SecretConfigKeys: infer SK;
|
|
159
|
+
FeatureFlagKeys: infer FK;
|
|
160
|
+
serializedAllConfigSchema: infer _SACS;
|
|
161
|
+
_configType: infer CT;
|
|
162
|
+
_configTypeInput: infer CIT;
|
|
163
|
+
_configTypeOutput: infer COT;
|
|
164
|
+
_zodOutputType: infer ZOT;
|
|
165
|
+
_zodOutputTypeWithDeferFunctions: infer ZOTDF;
|
|
166
|
+
} ? {
|
|
167
|
+
AllConfigKeys: AK;
|
|
168
|
+
PublicConfigKeys: PK;
|
|
169
|
+
SecretConfigKeys: SK;
|
|
170
|
+
FeatureFlagKeys: FK;
|
|
171
|
+
ConfigTypeInput: CIT;
|
|
172
|
+
ConfigTypeOutput: COT;
|
|
173
|
+
ConfigType: CT;
|
|
174
|
+
ZodOutputType: ZOT;
|
|
175
|
+
ZodOutputTypeWithDeferFunctions: ZOTDF;
|
|
176
|
+
} : never;
|
|
177
|
+
|
|
178
|
+
export { BooleanSchema, type InferConfigTypes, NumberSchema, type ParsedConfigGeneric, StringSchema, defineConfig, deserializeConfigSchema, generateConfigSchema, serializeConfigSchema };
|