@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.
Files changed (259) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +430 -0
  3. package/dist/chunk-3SU3SMKN.mjs +73 -0
  4. package/dist/chunk-3SU3SMKN.mjs.map +1 -0
  5. package/dist/chunk-CASNDTCH.mjs +12 -0
  6. package/dist/chunk-CASNDTCH.mjs.map +1 -0
  7. package/dist/chunk-GLLYQ6FK.mjs +173 -0
  8. package/dist/chunk-GLLYQ6FK.mjs.map +1 -0
  9. package/dist/chunk-HPSOF46N.mjs +71 -0
  10. package/dist/chunk-HPSOF46N.mjs.map +1 -0
  11. package/dist/chunk-HPXCKD6M.mjs +118 -0
  12. package/dist/chunk-HPXCKD6M.mjs.map +1 -0
  13. package/dist/chunk-J5LGTIGS.mjs +10 -0
  14. package/dist/chunk-J5LGTIGS.mjs.map +1 -0
  15. package/dist/chunk-LKV73SD2.mjs +25 -0
  16. package/dist/chunk-LKV73SD2.mjs.map +1 -0
  17. package/dist/chunk-MJ52ZIWV.mjs +98 -0
  18. package/dist/chunk-MJ52ZIWV.mjs.map +1 -0
  19. package/dist/chunk-O7BSFCCY.mjs +89 -0
  20. package/dist/chunk-O7BSFCCY.mjs.map +1 -0
  21. package/dist/chunk-QBM74JB5.mjs +47 -0
  22. package/dist/chunk-QBM74JB5.mjs.map +1 -0
  23. package/dist/chunk-QGMLTMB5.mjs +37 -0
  24. package/dist/chunk-QGMLTMB5.mjs.map +1 -0
  25. package/dist/chunk-SKX7CPGS.mjs +73 -0
  26. package/dist/chunk-SKX7CPGS.mjs.map +1 -0
  27. package/dist/chunk-VPKO6D4W.mjs +33 -0
  28. package/dist/chunk-VPKO6D4W.mjs.map +1 -0
  29. package/dist/chunk-YQWYYS7P.mjs +12194 -0
  30. package/dist/chunk-YQWYYS7P.mjs.map +1 -0
  31. package/dist/chunk-Z3CZGNU5.mjs +99 -0
  32. package/dist/chunk-Z3CZGNU5.mjs.map +1 -0
  33. package/dist/chunk-ZOKHXR5I.mjs +33 -0
  34. package/dist/chunk-ZOKHXR5I.mjs.map +1 -0
  35. package/dist/cli.mjs +1562 -0
  36. package/dist/cli.mjs.map +1 -0
  37. package/dist/config/FeatureFlagKey.d.mts +24 -0
  38. package/dist/config/FeatureFlagKey.d.ts +24 -0
  39. package/dist/config/FeatureFlagKey.js +31 -0
  40. package/dist/config/FeatureFlagKey.js.map +1 -0
  41. package/dist/config/FeatureFlagKey.mjs +8 -0
  42. package/dist/config/FeatureFlagKey.mjs.map +1 -0
  43. package/dist/config/PublicConfigKey.d.mts +22 -0
  44. package/dist/config/PublicConfigKey.d.ts +22 -0
  45. package/dist/config/PublicConfigKey.js +36 -0
  46. package/dist/config/PublicConfigKey.js.map +1 -0
  47. package/dist/config/PublicConfigKey.mjs +8 -0
  48. package/dist/config/PublicConfigKey.mjs.map +1 -0
  49. package/dist/config/SecretConfigKey.d.mts +22 -0
  50. package/dist/config/SecretConfigKey.d.ts +22 -0
  51. package/dist/config/SecretConfigKey.js +31 -0
  52. package/dist/config/SecretConfigKey.js.map +1 -0
  53. package/dist/config/SecretConfigKey.mjs +8 -0
  54. package/dist/config/SecretConfigKey.mjs.map +1 -0
  55. package/dist/config/config.d.mts +178 -0
  56. package/dist/config/config.d.ts +178 -0
  57. package/dist/config/config.js +12364 -0
  58. package/dist/config/config.js.map +1 -0
  59. package/dist/config/config.mjs +23 -0
  60. package/dist/config/config.mjs.map +1 -0
  61. package/dist/config/findAndProcessEnvConfig.d.mts +17 -0
  62. package/dist/config/findAndProcessEnvConfig.d.ts +17 -0
  63. package/dist/config/findAndProcessEnvConfig.js +12290 -0
  64. package/dist/config/findAndProcessEnvConfig.js.map +1 -0
  65. package/dist/config/findAndProcessEnvConfig.mjs +14 -0
  66. package/dist/config/findAndProcessEnvConfig.mjs.map +1 -0
  67. package/dist/config/findAndProcessFileConfig.d.mts +38 -0
  68. package/dist/config/findAndProcessFileConfig.d.ts +38 -0
  69. package/dist/config/findAndProcessFileConfig.js +12431 -0
  70. package/dist/config/findAndProcessFileConfig.js.map +1 -0
  71. package/dist/config/findAndProcessFileConfig.mjs +18 -0
  72. package/dist/config/findAndProcessFileConfig.mjs.map +1 -0
  73. package/dist/config/getCloudRegion.d.mts +8 -0
  74. package/dist/config/getCloudRegion.d.ts +8 -0
  75. package/dist/config/getCloudRegion.js +92 -0
  76. package/dist/config/getCloudRegion.js.map +1 -0
  77. package/dist/config/getCloudRegion.mjs +9 -0
  78. package/dist/config/getCloudRegion.mjs.map +1 -0
  79. package/dist/config/index.d.mts +5 -0
  80. package/dist/config/index.d.ts +5 -0
  81. package/dist/config/index.js +12638 -0
  82. package/dist/config/index.js.map +1 -0
  83. package/dist/config/index.mjs +33 -0
  84. package/dist/config/index.mjs.map +1 -0
  85. package/dist/config/parseConfigSchema.d.mts +13 -0
  86. package/dist/config/parseConfigSchema.d.ts +13 -0
  87. package/dist/config/parseConfigSchema.js +12177 -0
  88. package/dist/config/parseConfigSchema.js.map +1 -0
  89. package/dist/config/parseConfigSchema.mjs +16 -0
  90. package/dist/config/parseConfigSchema.mjs.map +1 -0
  91. package/dist/config/standardSchemaToJson.d.mts +6 -0
  92. package/dist/config/standardSchemaToJson.d.ts +6 -0
  93. package/dist/config/standardSchemaToJson.js +138 -0
  94. package/dist/config/standardSchemaToJson.js.map +1 -0
  95. package/dist/config/standardSchemaToJson.mjs +9 -0
  96. package/dist/config/standardSchemaToJson.mjs.map +1 -0
  97. package/dist/index.d.mts +2 -0
  98. package/dist/index.d.ts +2 -0
  99. package/dist/index.js +19 -0
  100. package/dist/index.js.map +1 -0
  101. package/dist/index.mjs +1 -0
  102. package/dist/index.mjs.map +1 -0
  103. package/dist/integration-tests/1/smooai-config/config.d.mts +4108 -0
  104. package/dist/integration-tests/1/smooai-config/config.d.ts +4108 -0
  105. package/dist/integration-tests/1/smooai-config/config.js +12353 -0
  106. package/dist/integration-tests/1/smooai-config/config.js.map +1 -0
  107. package/dist/integration-tests/1/smooai-config/config.mjs +12 -0
  108. package/dist/integration-tests/1/smooai-config/config.mjs.map +1 -0
  109. package/dist/integration-tests/1/smooai-config/default.d.mts +55 -0
  110. package/dist/integration-tests/1/smooai-config/default.d.ts +55 -0
  111. package/dist/integration-tests/1/smooai-config/default.js +12419 -0
  112. package/dist/integration-tests/1/smooai-config/default.js.map +1 -0
  113. package/dist/integration-tests/1/smooai-config/default.mjs +78 -0
  114. package/dist/integration-tests/1/smooai-config/default.mjs.map +1 -0
  115. package/dist/integration-tests/1/smooai-config/development.d.mts +41 -0
  116. package/dist/integration-tests/1/smooai-config/development.d.ts +41 -0
  117. package/dist/integration-tests/1/smooai-config/development.js +12403 -0
  118. package/dist/integration-tests/1/smooai-config/development.js.map +1 -0
  119. package/dist/integration-tests/1/smooai-config/development.mjs +62 -0
  120. package/dist/integration-tests/1/smooai-config/development.mjs.map +1 -0
  121. package/dist/integration-tests/1/smooai-config/production.aws.d.mts +128 -0
  122. package/dist/integration-tests/1/smooai-config/production.aws.d.ts +128 -0
  123. package/dist/integration-tests/1/smooai-config/production.aws.js +12371 -0
  124. package/dist/integration-tests/1/smooai-config/production.aws.js.map +1 -0
  125. package/dist/integration-tests/1/smooai-config/production.aws.mjs +30 -0
  126. package/dist/integration-tests/1/smooai-config/production.aws.mjs.map +1 -0
  127. package/dist/integration-tests/1/smooai-config/production.aws.us-east-1.d.mts +64 -0
  128. package/dist/integration-tests/1/smooai-config/production.aws.us-east-1.d.ts +64 -0
  129. package/dist/integration-tests/1/smooai-config/production.aws.us-east-1.js +12364 -0
  130. package/dist/integration-tests/1/smooai-config/production.aws.us-east-1.js.map +1 -0
  131. package/dist/integration-tests/1/smooai-config/production.aws.us-east-1.mjs +23 -0
  132. package/dist/integration-tests/1/smooai-config/production.aws.us-east-1.mjs.map +1 -0
  133. package/dist/integration-tests/1/smooai-config/production.aws.us-east-2.d.mts +64 -0
  134. package/dist/integration-tests/1/smooai-config/production.aws.us-east-2.d.ts +64 -0
  135. package/dist/integration-tests/1/smooai-config/production.aws.us-east-2.js +12364 -0
  136. package/dist/integration-tests/1/smooai-config/production.aws.us-east-2.js.map +1 -0
  137. package/dist/integration-tests/1/smooai-config/production.aws.us-east-2.mjs +23 -0
  138. package/dist/integration-tests/1/smooai-config/production.aws.us-east-2.mjs.map +1 -0
  139. package/dist/integration-tests/1/smooai-config/production.d.mts +42 -0
  140. package/dist/integration-tests/1/smooai-config/production.d.ts +42 -0
  141. package/dist/integration-tests/1/smooai-config/production.js +12399 -0
  142. package/dist/integration-tests/1/smooai-config/production.js.map +1 -0
  143. package/dist/integration-tests/1/smooai-config/production.mjs +58 -0
  144. package/dist/integration-tests/1/smooai-config/production.mjs.map +1 -0
  145. package/dist/integration-tests/1/smooai-config/staging.d.mts +129 -0
  146. package/dist/integration-tests/1/smooai-config/staging.d.ts +129 -0
  147. package/dist/integration-tests/1/smooai-config/staging.js +12377 -0
  148. package/dist/integration-tests/1/smooai-config/staging.js.map +1 -0
  149. package/dist/integration-tests/1/smooai-config/staging.mjs +36 -0
  150. package/dist/integration-tests/1/smooai-config/staging.mjs.map +1 -0
  151. package/dist/integration-tests/2/smooai-config/config.d.mts +1262 -0
  152. package/dist/integration-tests/2/smooai-config/config.d.ts +1262 -0
  153. package/dist/integration-tests/2/smooai-config/config.js +12301 -0
  154. package/dist/integration-tests/2/smooai-config/config.js.map +1 -0
  155. package/dist/integration-tests/2/smooai-config/config.mjs +12 -0
  156. package/dist/integration-tests/2/smooai-config/config.mjs.map +1 -0
  157. package/dist/integration-tests/2/smooai-config/default.d.mts +19 -0
  158. package/dist/integration-tests/2/smooai-config/default.d.ts +19 -0
  159. package/dist/integration-tests/2/smooai-config/default.js +12321 -0
  160. package/dist/integration-tests/2/smooai-config/default.js.map +1 -0
  161. package/dist/integration-tests/2/smooai-config/default.mjs +32 -0
  162. package/dist/integration-tests/2/smooai-config/default.mjs.map +1 -0
  163. package/dist/integration-tests/2/smooai-config/development.d.mts +9 -0
  164. package/dist/integration-tests/2/smooai-config/development.d.ts +9 -0
  165. package/dist/integration-tests/2/smooai-config/development.js +12311 -0
  166. package/dist/integration-tests/2/smooai-config/development.js.map +1 -0
  167. package/dist/integration-tests/2/smooai-config/development.mjs +22 -0
  168. package/dist/integration-tests/2/smooai-config/development.mjs.map +1 -0
  169. package/dist/integration-tests/2/smooai-config/production.aws.d.mts +26 -0
  170. package/dist/integration-tests/2/smooai-config/production.aws.d.ts +26 -0
  171. package/dist/integration-tests/2/smooai-config/production.aws.js +12311 -0
  172. package/dist/integration-tests/2/smooai-config/production.aws.js.map +1 -0
  173. package/dist/integration-tests/2/smooai-config/production.aws.mjs +22 -0
  174. package/dist/integration-tests/2/smooai-config/production.aws.mjs.map +1 -0
  175. package/dist/integration-tests/2/smooai-config/production.aws.us-east-1.d.mts +25 -0
  176. package/dist/integration-tests/2/smooai-config/production.aws.us-east-1.d.ts +25 -0
  177. package/dist/integration-tests/2/smooai-config/production.aws.us-east-1.js +12310 -0
  178. package/dist/integration-tests/2/smooai-config/production.aws.us-east-1.js.map +1 -0
  179. package/dist/integration-tests/2/smooai-config/production.aws.us-east-1.mjs +21 -0
  180. package/dist/integration-tests/2/smooai-config/production.aws.us-east-1.mjs.map +1 -0
  181. package/dist/integration-tests/2/smooai-config/production.d.mts +19 -0
  182. package/dist/integration-tests/2/smooai-config/production.d.ts +19 -0
  183. package/dist/integration-tests/2/smooai-config/production.js +12321 -0
  184. package/dist/integration-tests/2/smooai-config/production.js.map +1 -0
  185. package/dist/integration-tests/2/smooai-config/production.mjs +32 -0
  186. package/dist/integration-tests/2/smooai-config/production.mjs.map +1 -0
  187. package/dist/platform/client.d.mts +49 -0
  188. package/dist/platform/client.d.ts +49 -0
  189. package/dist/platform/client.js +123 -0
  190. package/dist/platform/client.js.map +1 -0
  191. package/dist/platform/client.mjs +8 -0
  192. package/dist/platform/client.mjs.map +1 -0
  193. package/dist/platform/server/server.async.d.mts +12 -0
  194. package/dist/platform/server/server.async.d.ts +12 -0
  195. package/dist/platform/server/server.async.js +12586 -0
  196. package/dist/platform/server/server.async.js.map +1 -0
  197. package/dist/platform/server/server.async.mjs +18 -0
  198. package/dist/platform/server/server.async.mjs.map +1 -0
  199. package/dist/platform/server/server.featureFlag.sync.d.mts +2 -0
  200. package/dist/platform/server/server.featureFlag.sync.d.ts +2 -0
  201. package/dist/platform/server/server.featureFlag.sync.js +12589 -0
  202. package/dist/platform/server/server.featureFlag.sync.js.map +1 -0
  203. package/dist/platform/server/server.featureFlag.sync.mjs +24 -0
  204. package/dist/platform/server/server.featureFlag.sync.mjs.map +1 -0
  205. package/dist/platform/server/server.publicConfig.sync.d.mts +2 -0
  206. package/dist/platform/server/server.publicConfig.sync.d.ts +2 -0
  207. package/dist/platform/server/server.publicConfig.sync.js +12589 -0
  208. package/dist/platform/server/server.publicConfig.sync.js.map +1 -0
  209. package/dist/platform/server/server.publicConfig.sync.mjs +24 -0
  210. package/dist/platform/server/server.publicConfig.sync.mjs.map +1 -0
  211. package/dist/platform/server/server.secretConfig.sync.d.mts +2 -0
  212. package/dist/platform/server/server.secretConfig.sync.d.ts +2 -0
  213. package/dist/platform/server/server.secretConfig.sync.js +12589 -0
  214. package/dist/platform/server/server.secretConfig.sync.js.map +1 -0
  215. package/dist/platform/server/server.secretConfig.sync.mjs +24 -0
  216. package/dist/platform/server/server.secretConfig.sync.mjs.map +1 -0
  217. package/dist/platform/server.d.mts +21 -0
  218. package/dist/platform/server.d.ts +21 -0
  219. package/dist/platform/server.js +12626 -0
  220. package/dist/platform/server.js.map +1 -0
  221. package/dist/platform/server.mjs +58 -0
  222. package/dist/platform/server.mjs.map +1 -0
  223. package/dist/react/hooks.d.mts +36 -0
  224. package/dist/react/hooks.d.ts +36 -0
  225. package/dist/react/hooks.js +90 -0
  226. package/dist/react/hooks.js.map +1 -0
  227. package/dist/react/hooks.mjs +14 -0
  228. package/dist/react/hooks.mjs.map +1 -0
  229. package/dist/react/index.d.mts +28 -0
  230. package/dist/react/index.d.ts +28 -0
  231. package/dist/react/index.js +194 -0
  232. package/dist/react/index.js.map +1 -0
  233. package/dist/react/index.mjs +17 -0
  234. package/dist/react/index.mjs.map +1 -0
  235. package/dist/schema-spec/smooai-config-schema-spec.d.mts +25 -0
  236. package/dist/schema-spec/smooai-config-schema-spec.d.ts +25 -0
  237. package/dist/schema-spec/smooai-config-schema-spec.js +177 -0
  238. package/dist/schema-spec/smooai-config-schema-spec.js.map +1 -0
  239. package/dist/schema-spec/smooai-config-schema-spec.mjs +154 -0
  240. package/dist/schema-spec/smooai-config-schema-spec.mjs.map +1 -0
  241. package/dist/utils/fs.d.mts +10 -0
  242. package/dist/utils/fs.d.ts +10 -0
  243. package/dist/utils/fs.js +74 -0
  244. package/dist/utils/fs.js.map +1 -0
  245. package/dist/utils/fs.mjs +11 -0
  246. package/dist/utils/fs.mjs.map +1 -0
  247. package/dist/utils/index.d.mts +29 -0
  248. package/dist/utils/index.d.ts +29 -0
  249. package/dist/utils/index.js +113 -0
  250. package/dist/utils/index.js.map +1 -0
  251. package/dist/utils/index.mjs +18 -0
  252. package/dist/utils/index.mjs.map +1 -0
  253. package/dist/utils/mergeReplaceArrays.d.mts +9 -0
  254. package/dist/utils/mergeReplaceArrays.d.ts +9 -0
  255. package/dist/utils/mergeReplaceArrays.js +63 -0
  256. package/dist/utils/mergeReplaceArrays.js.map +1 -0
  257. package/dist/utils/mergeReplaceArrays.mjs +9 -0
  258. package/dist/utils/mergeReplaceArrays.mjs.map +1 -0
  259. 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 };